libpappsomspp-0.9.20/CMakeStuff/000755 001750 001750 00000000000 14533473271 017702 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/CMakeStuff/modules/000755 001750 001750 00000000000 14533473271 021352 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/CMakeStuff/modules/FindAlglib.cmake000644 001750 001750 00000001627 14346367014 024354 0ustar00rusconirusconi000000 000000 find_path(Alglib_INCLUDE_DIR alglibinternal.h PATHS /usr/local/include/libalglib /usr/include/libalglib) find_library(Alglib_LIBRARY NAMES alglib HINTS /usr/lib /usr/local/lib) if(Alglib_INCLUDE_DIR AND Alglib_LIBRARY) mark_as_advanced(Alglib_INCLUDE_DIR) mark_as_advanced(Alglib_LIBRARY) set(Alglib_FOUND TRUE) endif() if(Alglib_FOUND) if(NOT Alglib_FIND_QUIETLY) message(STATUS "Found Alglib_LIBRARY: ${Alglib_LIBRARY}") endif() if(NOT TARGET Alglib::Alglib) add_library(Alglib::Alglib UNKNOWN IMPORTED) set_target_properties(Alglib::Alglib PROPERTIES IMPORTED_LOCATION "${Alglib_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Alglib_INCLUDE_DIR}") endif() else() if(Alglib_FIND_REQUIRED) message(FATAL_ERROR "Could not find libalglib. Please do specify the Alglib_INCLUDE_DIR and Alglib_LIBRARY variables using cmake!") endif() endif() libpappsomspp-0.9.20/CMakeStuff/modules/FindPappsoMSpp.cmake000644 001750 001750 00000003501 14346367014 025215 0ustar00rusconirusconi000000 000000 # Copyright : Olivier Langella (CNRS) # License : GPL-3.0+ # Authors : Olivier Langella, Filippo Rusconi find_path(PappsoMSpp_INCLUDE_DIRS pappsomspp/types.h PATHS /usr/local/include /usr/include PATH_SUFFIXES pappsomspp libpappsomspp ENV PATH) find_library(PappsoMSpp_LIBRARY NAMES pappsomspp) if(PappsoMSpp_INCLUDE_DIRS AND PappsoMSpp_LIBRARY) mark_as_advanced(PappsoMSpp_INCLUDE_DIRS) mark_as_advanced(PappsoMSpp_LIBRARY) message(STATUS "~~~~~~~~~~~~~ ${PappsoMSpp_LIBRARY} ~~~~~~~~~~~~~~~") set(PappsoMSpp_FOUND TRUE) endif() if(PappsoMSpp_FOUND) if(NOT PappsoMSpp_FIND_QUIETLY) message(STATUS "Found PappsoMSpp_LIBRARY: ${PappsoMSpp_LIBRARY}") endif() if(NOT TARGET PappsoMSpp::Core) add_library(PappsoMSpp::Core UNKNOWN IMPORTED) set_target_properties(PappsoMSpp::Core PROPERTIES IMPORTED_LOCATION "${PappsoMSpp_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${PappsoMSpp_INCLUDE_DIRS}") endif() find_library(PappsoMSppWidget_LIBRARY NAMES pappsomspp-widget) if(PappsoMSpp_INCLUDE_DIRS AND PappsoMSppWidget_LIBRARY) mark_as_advanced(PappsoMSppWidget_LIBRARY) message(STATUS "~~~~~~~~~~~~~ ${PappsoMSppWidget_LIBRARY} ~~~~~~~~~~~~~~~") set(PappsoMSppWidget_FOUND TRUE) if(NOT TARGET PappsoMSpp::Widget) add_library(PappsoMSpp::Widget UNKNOWN IMPORTED) set_target_properties(PappsoMSpp::Widget PROPERTIES IMPORTED_LOCATION "${PappsoMSppWidget_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${PappsoMSpp_INCLUDE_DIRS}") endif() endif() if(NOT PappsoMSpp_FIND_QUIETLY) message(STATUS "Found PappsoMSppWidget_LIBRARY: ${PappsoMSppWidget_LIBRARY}") endif() else() if(PappsoMSpp_FIND_REQUIRED) message(FATAL_ERROR "Could not find libpappsomspp. Please do specify the PappsoMSpp_INCLUDE_DIRS and PappsoMSpp_LIBRARY variables using cmake!") endif() endif() libpappsomspp-0.9.20/CMakeStuff/modules/FindQuaZip.cmake000644 001750 001750 00000003735 14346367014 024375 0ustar00rusconirusconi000000 000000 # QUAZIP_FOUND - QuaZip library was found # QUAZIP_INCLUDE_DIR - Path to QuaZip include dir # QUAZIP_INCLUDE_DIRS - Path to QuaZip and zlib include dir (combined from QUAZIP_INCLUDE_DIR + ZLIB_INCLUDE_DIR) # QUAZIP_LIBRARIES - List of QuaZip libraries # QUAZIP_ZLIB_INCLUDE_DIR - The include dir of zlib headers IF (QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES) # in cache already SET(QUAZIP_FOUND TRUE) ELSE (QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES) IF (WIN32) FIND_PATH(QUAZIP_LIBRARY_DIR WIN32_DEBUG_POSTFIX d NAMES libquazip.dll HINTS "C:/Programme/" "C:/Program Files" PATH_SUFFIXES QuaZip/lib ) FIND_LIBRARY(QUAZIP_QT4_LIBRARIES NAMES libquazip.dll HINTS ${QUAZIP_LIBRARY_DIR}) FIND_PATH(QUAZIP_INCLUDE_DIR NAMES quazip.h HINTS ${QUAZIP_LIBRARY_DIR}/../ PATH_SUFFIXES quazip) FIND_PATH(QUAZIP_ZLIB_INCLUDE_DIR NAMES zlib.h) ELSE(WIN32) #FIND_PACKAGE(PkgConfig) # pkg_check_modules(PC_QCA2 QUIET qca2) #pkg_check_modules(PC_QUAZIP quazip) FIND_LIBRARY(QUAZIP_QT5_LIBRARIES WIN32_DEBUG_POSTFIX d NAMES quazip-qt5 quazip5 HINTS /usr/lib /usr/local/lib ) SET(QUAZIP_LIBRARIES ${QUAZIP_QT5_LIBRARIES}) FIND_PATH(QUAZIP_INCLUDE_DIR quazip.h HINTS /usr/include /usr/local/include PATH_SUFFIXES quazip quazip5 ) FIND_PATH(QUAZIP_ZLIB_INCLUDE_DIR zlib.h HINTS /usr/include /usr/local/include) ENDIF (WIN32) INCLUDE(FindPackageHandleStandardArgs) SET(QUAZIP_INCLUDE_DIRS ${QUAZIP_INCLUDE_DIR} ${QUAZIP_ZLIB_INCLUDE_DIR}) find_package_handle_standard_args(QUAZIP DEFAULT_MSG QUAZIP_LIBRARIES QUAZIP_INCLUDE_DIR QUAZIP_ZLIB_INCLUDE_DIR QUAZIP_INCLUDE_DIRS) ENDIF (QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES) # Added by FRusconi to maintain code more easily. if(NOT TARGET QuaZip::QuaZip) add_library(QuaZip::QuaZip UNKNOWN IMPORTED) set_target_properties(QuaZip::QuaZip PROPERTIES IMPORTED_LOCATION ${QUAZIP_LIBRARIES} INTERFACE_INCLUDE_DIRECTORIES ${QUAZIP_INCLUDE_DIR}) endif() libpappsomspp-0.9.20/CMakeStuff/modules/FindRocksDB.cmake000644 001750 001750 00000002162 14346367014 024444 0ustar00rusconirusconi000000 000000 # Try to find RocksDB headers and library. # # Usage of this module as follows: # # find_package(RocksDB) # # Variables used by this module, they can change the default behaviour and need # to be set before calling find_package: # # ROCKSDB_ROOT_DIR Set this variable to the root installation of # RocksDB if the module has problems finding the # proper installation path. # # Variables defined by this module: # # ROCKSDB_FOUND System has RocksDB library/headers. # ROCKSDB_LIBRARIES The RocksDB library. # ROCKSDB_INCLUDE_DIRS The location of RocksDB headers. find_path(ROCKSDB_ROOT_DIR NAMES include/rocksdb/db.h ) find_library(ROCKSDB_LIBRARIES NAMES rocksdb HINTS ${ROCKSDB_ROOT_DIR}/lib ) find_path(ROCKSDB_INCLUDE_DIRS NAMES rocksdb/db.h HINTS ${ROCKSDB_ROOT_DIR}/include ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(RocksDB DEFAULT_MSG ROCKSDB_LIBRARIES ROCKSDB_INCLUDE_DIRS ) mark_as_advanced( ROCKSDB_ROOT_DIR ROCKSDB_LIBRARIES ROCKSDB_INCLUDE_DIRS ) libpappsomspp-0.9.20/CMakeStuff/modules/FindSQLite3.cmake000644 001750 001750 00000001621 14346367014 024400 0ustar00rusconirusconi000000 000000 find_path(SQLite3_INCLUDE_DIR sqlite3.h PATHS /usr/local/include /usr/include) find_library(SQLite3_LIBRARY NAMES sqlite3 HINTS /usr/lib /usr/local/lib) if(SQLite3_INCLUDE_DIR AND SQLite3_LIBRARY) mark_as_advanced(SQLite3_INCLUDE_DIR) mark_as_advanced(SQLite3_LIBRARY) set(SQLite3_FOUND TRUE) endif() if(SQLite3_FOUND) if(NOT SQLite3_FIND_QUIETLY) message(STATUS "Found SQLite3_LIBRARY: ${SQLite3_LIBRARY}") endif() if(NOT TARGET SQLite::SQLite3) add_library(SQLite::SQLite3 UNKNOWN IMPORTED) set_target_properties(SQLite::SQLite3 PROPERTIES IMPORTED_LOCATION "${SQLite3_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIR}") endif() else() if(SQLite3_FIND_REQUIRED) message(FATAL_ERROR "Could not find libsqlite3. Please do specify the SQLite3_INCLUDE_DIR and SQLite3_LIBRARY variables using cmake!") endif() endif() libpappsomspp-0.9.20/CMakeStuff/modules/FindZstd.cmake000644 001750 001750 00000001516 14346367014 024103 0ustar00rusconirusconi000000 000000 find_path(Zstd_INCLUDE_DIRS zstd.h PATHS /usr/local/include /usr/include) find_library(Zstd_LIBRARY NAMES zstd HINTS /usr/lib /usr/local/lib) if(Zstd_INCLUDE_DIRS AND Zstd_LIBRARY) mark_as_advanced(Zstd_INCLUDE_DIRS) mark_as_advanced(Zstd_LIBRARY) set(Zstd_FOUND TRUE) endif() if(Zstd_FOUND) if(NOT Zstd_FIND_QUIETLY) message(STATUS "Found Zstd_LIBRARY: ${Zstd_LIBRARY}") endif() if(NOT TARGET Zstd::Zstd) add_library(Zstd::Zstd UNKNOWN IMPORTED) set_target_properties(Zstd::Zstd PROPERTIES IMPORTED_LOCATION "${Zstd_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIRS}") endif() else() if(Zstd_FIND_REQUIRED) message(FATAL_ERROR "Could not find libzstd. Please do specify the Zstd_INCLUDE_DIRS and Zstd_LIBRARY variables using cmake!") endif() endif() libpappsomspp-0.9.20/CMakeStuff/modules/PappsoMSppConfig.cmake.in000644 001750 001750 00000002432 14346367014 026151 0ustar00rusconirusconi000000 000000 # Copyright : Olivier Langella, 2020 Filippo Rusconi (both CNRS) # License : GPL-3.0+ # Authors : Olivier Langella, Filippo Rusconi set(PappsoMSpp_INCLUDE_DIRS ${CMAKE_INSTALL_FULL_INCLUDEDIR}/pappsomspp) mark_as_advanced(PappsoMSpp_INCLUDE_DIRS) set(PappsoMSpp_LIBRARIES ${CMAKE_INSTALL_FULL_LIBDIR}/libpappsomspp.so.${PAPPSOMSPP_VERSION}) mark_as_advanced(PappsoMSpp_LIBRARIES) if(NOT TARGET PappsoMSpp::Core) add_library(PappsoMSpp::Core UNKNOWN IMPORTED) set_target_properties(PappsoMSpp::Core PROPERTIES IMPORTED_LOCATION "${CMAKE_INSTALL_FULL_LIBDIR}/libpappsomspp.so.${PAPPSOMSPP_VERSION}" INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_INSTALL_FULL_INCLUDEDIR}/pappsomspp") endif() # Once there we can say we found it ! set(PappsoMSpp_FOUND 1) set(PappsoMSppWidget_LIBRARIES ${CMAKE_INSTALL_FULL_LIBDIR}/libpappsomspp-widget.so.${PAPPSOMSPP_VERSION}) mark_as_advanced(PappsoMSppWidget_LIBRARIES) if(NOT TARGET PappsoMSpp::Widget) add_library(PappsoMSpp::Widget UNKNOWN IMPORTED) set_target_properties(PappsoMSpp::Widget PROPERTIES IMPORTED_LOCATION "${CMAKE_INSTALL_FULL_LIBDIR}/libpappsomspp-widget.so.${PAPPSOMSPP_VERSION}" INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_INSTALL_FULL_INCLUDEDIR}/pappsomspp") endif() # Once there we can say we found it ! set(PappsoMSppWidget_FOUND 1) libpappsomspp-0.9.20/CMakeStuff/toolchains/000755 001750 001750 00000000000 14533473271 022045 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/CMakeStuff/toolchains/apple-macport-toolchain.cmake000644 001750 001750 00000004535 14346367014 027577 0ustar00rusconirusconi000000 000000 message("APPLE macport environment") message("Please run the configuration like this:") message("cmake -DCMAKE_BUILD_TYPE=Debug ../development") set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/opt/local/include") set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/opt/local/lib") set(HOME_DEVEL_DIR "/Users/rusconi/devel") set(LINKER_FLAGS "${LINKER_FLAGS} -Wc++17-compat") set(CMAKE_MACOSX_RPATH 0) set(Alglib_FOUND 1) set(Alglib_INCLUDE_DIRS "${HOME_DEVEL_DIR}/alglib/development/src") set(Alglib_LIBRARIES "${HOME_DEVEL_DIR}/alglib/build-area/mac/libalglib.dylib") if(NOT TARGET Alglib::Alglib) add_library(Alglib::Alglib UNKNOWN IMPORTED) set_target_properties(Alglib::Alglib PROPERTIES IMPORTED_LOCATION "${Alglib_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${Alglib_INCLUDE_DIRS}" ) endif() set(PwizLite_FOUND 1) set(PwizLite_INCLUDE_DIRS "${HOME_DEVEL_DIR}/pwizlite/development/src") set(PwizLite_LIBRARIES "${HOME_DEVEL_DIR}/pwizlite/build-area/mac/src/libpwizlite.dylib") if(NOT TARGET PwizLite::PwizLite) add_library(PwizLite::PwizLite UNKNOWN IMPORTED) set_target_properties(PwizLite::PwizLite PROPERTIES IMPORTED_LOCATION "${PwizLite_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${PwizLite_INCLUDE_DIRS}" ) endif() find_package(ZLIB REQUIRED) set(QCustomPlot_FOUND 1) set(QCustomPlot_INCLUDE_DIRS "${HOME_DEVEL_DIR}/qcustomplot/development") set(QCustomPlot_LIBRARIES "${HOME_DEVEL_DIR}/qcustomplot/build-area/mac/libqcustomplot.dylib") # Per instructions of the lib author: # https://www.qcustomplot.com/index.php/tutorials/settingup message(STATUS "Setting definition -DQCUSTOMPLOT_USE_LIBRARY.") if(NOT TARGET QCustomPlot::QCustomPlot) add_library(QCustomPlot::QCustomPlot UNKNOWN IMPORTED) set_target_properties(QCustomPlot::QCustomPlot PROPERTIES IMPORTED_LOCATION "${QCustomPlot_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${QCustomPlot_INCLUDE_DIRS}" INTERFACE_COMPILE_DEFINITIONS QCUSTOMPLOT_USE_LIBRARY ) endif() set(Zstd_FOUND 1) set(Zstd_INCLUDE_DIRS "/opt/local/include") set(Zstd_LIBRARIES "/opt/local/lib/libzstd.dylib") if(NOT TARGET Zstd::Zstd) add_library(Zstd::Zstd UNKNOWN IMPORTED) set_target_properties(Zstd::Zstd PROPERTIES IMPORTED_LOCATION "${Zstd_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIRS}" ) endif() add_definitions(-fPIC) libpappsomspp-0.9.20/CMakeStuff/toolchains/mxe-toolchain-olivier.cmake000644 001750 001750 00000011421 14444327362 027264 0ustar00rusconirusconi000000 000000 # File:///home/langella/developpement/git/pappsomspp/CMakeStuff/toolchains/mxe-toolchain.cmake# # This file should be included if the command line reads like this: # x86_64-w64-mingw32.shared-cmake -DCMAKE_BUILD_TYPE=Release -DMXE=1 -DHOME_DEVEL_DIR=/ .. # export PATH=/backup2/mxeqt6/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/langella/.dotnet/tools # /backup2/mxeqt6/usr/bin/x86_64-w64-mingw32.shared-cmake -DCMAKE_BUILD_TYPE=Release -DMXE=1 .. message("MXE (M cross environment) https://mxe.cc/") message("Please run the configuration like this:") message("x86_64-w64-mingw32.shared-cmake -DMXE= 1 -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release ../../development") set(HOME_DEVEL_DIR /win64) set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES /backup2/mxeqt6/usr/x86_64-w64-mingw32.shared/include) set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES /backup2/mxeqt6/usr/x86_64-w64-mingw32.shared/include) if(WIN32 OR _WIN32) message(STATUS "Building with WIN32 defined.") endif() message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}") add_definitions(-DPMSPP_LIBRARY) find_package(Qt6 COMPONENTS Widgets Core Gui PrintSupport Svg Xml Sql Concurrent Core5Compat REQUIRED) find_package(ZLIB REQUIRED) find_package(SQLite3 REQUIRED) #install MXE qtsvg package #langella@piccolo:/media/langella/pappso/mxe$ make qtsvg set(QCustomPlotQt6_FOUND 1) set(QCustomPlotQt6_INCLUDE_DIR "/home/langella/developpement/git/qcustomplot-qt6") set(QCustomPlotQt6_LIBRARIES "/win64/mxeqt6_dll/libQCustomPlotQt6.dll") if(NOT TARGET QCustomPlotQt6::QCustomPlotQt6) add_library(QCustomPlotQt6::QCustomPlotQt6 UNKNOWN IMPORTED) set_target_properties(QCustomPlotQt6::QCustomPlotQt6 PROPERTIES IMPORTED_LOCATION "${QCustomPlotQt6_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${QCustomPlotQt6_INCLUDE_DIR}" INTERFACE_COMPILE_DEFINITIONS QCUSTOMPLOT_USE_LIBRARY) endif() if(MAKE_TEST) set(Quazip_FOUND 1) set(QUAZIP_INCLUDE_DIR "/backup2/win64qt6/libquazip1-qt6-1.4/quazip") set(QUAZIP_LIBRARIES "/backup2/win64qt6/libquazip1-qt6-1.4/build/quazip/libquazip1-qt6.dll") if(NOT TARGET Quazip::Quazip) add_library(Quazip::Quazip UNKNOWN IMPORTED) set_target_properties(Quazip::Quazip PROPERTIES IMPORTED_LOCATION "${QUAZIP_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${QUAZIP_INCLUDE_DIR}") endif() endif() set(OdsStream_FOUND 1) set(OdsStream_INCLUDE_DIRS "/home/langella/developpement/git/libodsstream-qt6/src") set(OdsStream_LIBRARY "/home/langella/developpement/git/libodsstream-qt6/wbuild/src/libodsstream.dll") if(NOT TARGET OdsStream::Core) add_library(OdsStream::Core UNKNOWN IMPORTED) set_target_properties(OdsStream::Core PROPERTIES IMPORTED_LOCATION "${OdsStream_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${OdsStream_INCLUDE_DIRS}" ) endif() # All this belly dance does not seem necessary. Just perform like for the other # libraries... # Look for the necessary header set(Zstd_INCLUDE_DIR /backup2/mxeqt6/usr/x86_64-w64-mingw32.shared/include) mark_as_advanced(Zstd_INCLUDE_DIR) set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR}) # Look for the necessary library set(Zstd_LIBRARY /backup2/mxeqt6/usr/x86_64-w64-mingw32.shared/bin/libzstd.dll) mark_as_advanced(Zstd_LIBRARY) # Mark the lib as found set(Zstd_FOUND 1) set(Zstd_LIBRARIES ${Zstd_LIBRARY}) if(NOT TARGET Zstd::Zstd) add_library(Zstd::Zstd UNKNOWN IMPORTED) set_target_properties(Zstd::Zstd PROPERTIES IMPORTED_LOCATION "${Zstd_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIR}") endif() set(PwizLite_FOUND 1) set(PwizLite_INCLUDE_DIRS "/home/langella/developpement/git/libpwizlite/src") set(PwizLite_LIBRARIES "/home/langella/developpement/git/libpwizlite/wbuild/src/libpwizlite.dll") if(NOT TARGET PwizLite::PwizLite) add_library(PwizLite::PwizLite UNKNOWN IMPORTED) set_target_properties(PwizLite::PwizLite PROPERTIES IMPORTED_LOCATION "${PwizLite_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${PwizLite_INCLUDE_DIRS}" ) endif() # langella@themis:/win64/liblzf-3.6$ x86_64-w64-mingw32.shared-gcc -c lzf_c.c lzfP.h # langella@themis:/win64/liblzf-3.6$ x86_64-w64-mingw32.shared-gcc -c lzf_d.c lzfP.h # langella@themis:/win64/liblzf-3.6$ x86_64-w64-mingw32.shared-gcc -shared -o liblzf.dll lzf_c.o lzf_d.o set(liblzf_FOUND 1) set(liblzf_INCLUDE_DIR "/backup2/win64qt6/liblzf-3.6") set(liblzf_INCLUDE_DIRS "/backup2/win64qt6/liblzf-3.6/") set(liblzf_LIBRARIES "/backup2/win64qt6/liblzf-3.6/liblzf.dll") if(NOT TARGET liblzf::liblzf) add_library(liblzf::liblzf UNKNOWN IMPORTED) set_target_properties(liblzf::liblzf PROPERTIES IMPORTED_LOCATION "${liblzf_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${liblzf_INCLUDE_DIRS}" INTERFACE_COMPILE_DEFINITIONS LIBLZF_USE_LIBRARY) endif() libpappsomspp-0.9.20/CMakeStuff/toolchains/mxe-toolchain.cmake000644 001750 001750 00000010234 14346367014 025615 0ustar00rusconirusconi000000 000000 message("MXE (M cross environment) https://mxe.cc/") message("Please run the configuration like this:") message("x86_64-w64-mingw32.shared-cmake -DMXE=1 -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release ../../development") set(HOME_DEVEL_DIR "/home/rusconi/devel") set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/include) set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/include) if(WIN32 OR _WIN32) message(STATUS "Building with WIN32 defined.") endif() message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}") add_definitions(-DPMSPP_LIBRARY) find_package(ZLIB REQUIRED) find_package(SQLite3 REQUIRED) set(QCustomPlot_FOUND 1) set(QCustomPlot_INCLUDE_DIR "${HOME_DEVEL_DIR}/qcustomplot/development") set(QCustomPlot_LIBRARIES "${HOME_DEVEL_DIR}/qcustomplot/build-area/mxe/libqcustomplot.dll") if(NOT TARGET QCustomPlot::QCustomPlot) add_library(QCustomPlot::QCustomPlot UNKNOWN IMPORTED) set_target_properties(QCustomPlot::QCustomPlot PROPERTIES IMPORTED_LOCATION "${QCustomPlot_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${QCustomPlot_INCLUDE_DIR}" INTERFACE_COMPILE_DEFINITIONS QCUSTOMPLOT_USE_LIBRARY) endif() if(MAKE_TEST) set(Quazip5_FOUND 1) set(Quazip5_INCLUDE_DIRS "${HOME_DEVEL_DIR}/quazip5/development") set(Quazip5_LIBRARY "${HOME_DEVEL_DIR}/quazip5/build-area/mxe/libquazip5.dll") if(NOT TARGET Quazip5::Quazip5) add_library(Quazip5::Quazip5 UNKNOWN IMPORTED) set_target_properties(Quazip5::Quazip5 PROPERTIES IMPORTED_LOCATION "${Quazip5_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Quazip5_INCLUDE_DIRS}") endif() endif() set(OdsStream_QT5_FOUND 1) set(OdsStream_INCLUDE_DIR "${HOME_DEVEL_DIR}/odsstream/src") set(OdsStream_QT5_LIBRARY "${HOME_DEVEL_DIR}/odsstream/build-area/mxe/src/libodsstream-qt5.dll") if(NOT TARGET OdsStream::Core) add_library(OdsStream::Core UNKNOWN IMPORTED) set_target_properties(OdsStream::Core PROPERTIES IMPORTED_LOCATION "${OdsStream_QT5_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${OdsStream_INCLUDE_DIR}" ) endif() set(Alglib_FOUND 1) set(Alglib_INCLUDE_DIR "${HOME_DEVEL_DIR}/alglib/development/src") set(Alglib_LIBRARY "${HOME_DEVEL_DIR}/alglib/build-area/mxe/libalglib.dll") if(NOT TARGET Alglib::Alglib) add_library(Alglib::Alglib UNKNOWN IMPORTED) set_target_properties(Alglib::Alglib PROPERTIES IMPORTED_LOCATION "${Alglib_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Alglib_INCLUDE_DIR}") endif() # All this belly dance does not seem necessary. Just perform like for the other # libraries... # Look for the necessary header set(Zstd_INCLUDE_DIR ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/include) mark_as_advanced(Zstd_INCLUDE_DIR) set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR}) # Look for the necessary library set(Zstd_LIBRARY ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/bin/libzstd.dll) mark_as_advanced(Zstd_LIBRARY) # Mark the lib as found set(Zstd_FOUND 1) set(Zstd_LIBRARIES ${Zstd_LIBRARY}) if(NOT TARGET Zstd::Zstd) add_library(Zstd::Zstd UNKNOWN IMPORTED) set_target_properties(Zstd::Zstd PROPERTIES IMPORTED_LOCATION "${Zstd_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIR}") endif() set(PwizLite_FOUND 1) set(PwizLite_INCLUDE_DIRS "${HOME_DEVEL_DIR}/pwizlite/development/src") set(PwizLite_LIBRARIES "${HOME_DEVEL_DIR}/pwizlite/build-area/mxe/src/libpwizlite.dll") if(NOT TARGET PwizLite::PwizLite) add_library(PwizLite::PwizLite UNKNOWN IMPORTED) set_target_properties(PwizLite::PwizLite PROPERTIES IMPORTED_LOCATION "${PwizLite_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${PwizLite_INCLUDE_DIRS}" ) endif() set(liblzf_FOUND 1) set(liblzf_INCLUDE_DIRS "${HOME_DEVEL_DIR}/lzf/development") set(liblzf_LIBRARIES "${HOME_DEVEL_DIR}/lzf/build-area/mxe/liblzf.dll") if(NOT TARGET liblzf::liblzf) add_library(liblzf::liblzf UNKNOWN IMPORTED) set_target_properties(liblzf::liblzf PROPERTIES IMPORTED_LOCATION "${liblzf_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${liblzf_INCLUDE_DIRS}" INTERFACE_COMPILE_DEFINITIONS LIBLZF_USE_LIBRARY) endif() libpappsomspp-0.9.20/CMakeStuff/toolchains/win10-mingw64-toolchain.cmake000644 001750 001750 00000006007 14513560157 027255 0ustar00rusconirusconi000000 000000 message("\n${BoldRed}WIN10-MINGW64 environment${ColourReset}\n") message("Please run the configuration like this:") message("cmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release ../development") set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "c:/msys64/mingw64/include") set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "c:/msys64/mingw64/bin") set(HOME_DEVEL_DIR "$ENV{HOME}/devel") # We do not build the tests under Win10. set (MAKE_TEST 0) if(WIN32 OR _WIN32) message(STATUS "Building with WIN32 defined.") endif() # see https://cmake.org/pipermail/cmake/2015-December/062166.html set(CMAKE_NO_SYSTEM_FROM_IMPORTED 1) set(LINKER_FLAGS "${LINKER_FLAGS} -Wl,--no-as-needed") find_package(Qt6 COMPONENTS Widgets Core Gui PrintSupport Svg Xml Sql Concurrent Core5Compat REQUIRED) find_package(ZLIB REQUIRED) set(liblzf_FOUND 1) set(liblzf_INCLUDE_DIRS "${HOME_DEVEL_DIR}/lzf/development") set(liblzf_LIBRARIES "${HOME_DEVEL_DIR}/lzf/build-area/mingw64/liblzf.dll") if(NOT TARGET liblzf::liblzf) add_library(liblzf::liblzf UNKNOWN IMPORTED) set_target_properties(liblzf::liblzf PROPERTIES IMPORTED_LOCATION "${liblzf_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${liblzf_INCLUDE_DIRS}" ) endif() set(PwizLite_FOUND 1) set(PwizLite_INCLUDE_DIRS "${HOME_DEVEL_DIR}/pwizlite/development/src") set(PwizLite_LIBRARIES "${HOME_DEVEL_DIR}/pwizlite/build-area/mingw64/src/libpwizlite.dll") if(NOT TARGET PwizLite::PwizLite) add_library(PwizLite::PwizLite UNKNOWN IMPORTED) set_target_properties(PwizLite::PwizLite PROPERTIES IMPORTED_LOCATION "${PwizLite_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${PwizLite_INCLUDE_DIRS}" ) endif() set(QCustomPlotQt6_FOUND 1) set(QCustomPlotQt6_INCLUDE_DIRS "${HOME_DEVEL_DIR}/qcustomplot/development") # Note the QCustomPlotQt6_LIBRARIES (plural) because on Debian, the # QCustomPlotQt6Config.cmake file has this variable name (see the unix-specific # toolchain file. set(QCustomPlotQt6_LIBRARIES "${HOME_DEVEL_DIR}/qcustomplot/build-area/mingw64/libQCustomPlotQt6.dll") # Per instructions of the lib author: # https://www.qcustomplot.com/index.php/tutorials/settingup message(STATUS "Setting definition -DQCUSTOMPLOT_USE_LIBRARY.") if(NOT TARGET QCustomPlotQt6::QCustomPlotQt6) add_library(QCustomPlotQt6::QCustomPlotQt6 UNKNOWN IMPORTED) set_target_properties(QCustomPlotQt6::QCustomPlotQt6 PROPERTIES IMPORTED_LOCATION "${QCustomPlotQt6_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${QCustomPlotQt6_INCLUDE_DIRS}" INTERFACE_COMPILE_DEFINITIONS QCUSTOMPLOT_USE_LIBRARY ) endif() find_package(Boost COMPONENTS iostreams thread filesystem chrono REQUIRED ) set(Zstd_FOUND 1) set(Zstd_INCLUDE_DIRS "c:/msys64/mingw64/include") set(Zstd_LIBRARY "c:/msys64/mingw64/bin/libzstd.dll") if(NOT TARGET Zstd::Zstd) add_library(Zstd::Zstd UNKNOWN IMPORTED) set_target_properties(Zstd::Zstd PROPERTIES IMPORTED_LOCATION "${Zstd_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIRS}") endif() # On Win10 all the code is relocatable. remove_definitions(-fPIC) libpappsomspp-0.9.20/CMakeStuff/toolchains/unix-toolchain.cmake000644 001750 001750 00000003217 14531114113 025774 0ustar00rusconirusconi000000 000000 message("UNIX non APPLE environment") message("Please run the configuration like this:") message("cmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Debug ../development") set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES /usr/include) set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES /usr/include) set(LINKER_FLAGS "-Wl,--no-as-needed") # debian package : libboost-container-dev find_package(Boost COMPONENTS chrono container filesystem iostreams thread REQUIRED) find_package(PwizLite REQUIRED) find_package(ZLIB REQUIRED) find_package(Zstd REQUIRED) find_package(liblzf REQUIRED) find_package(Qt6 COMPONENTS Widgets Core Gui PrintSupport Svg Xml Sql Concurrent Core5Compat REQUIRED) find_package(QuaZip-Qt6 REQUIRED) find_package(QCustomPlotQt6 REQUIRED) # Per instructions of the lib author: # https://www.qcustomplot.com/index.php/tutorials/settingup message(STATUS "Setting definition -DQCUSTOMPLOT_USE_LIBRARY.") find_package(Catch2) message("Catch2 major version found: " ${Catch2_VERSION_MAJOR}) add_compile_definitions(CATCH2_MAJOR_VERSION_${Catch2_VERSION_MAJOR}) add_definitions(-fPIC) message("unix-toolchain.cmake - LOCAL_CMAKE_MODULE_PATH: ${LOCAL_CMAKE_MODULE_PATH}") # Install the cmake module message("LOCAL_CMAKE_MODULE_PATH: ${LOCAL_CMAKE_MODULE_PATH}") install(FILES ${LOCAL_CMAKE_MODULE_PATH}/FindPappsoMSpp.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pappsomspp) # Configure the cmake config configure_file (${LOCAL_CMAKE_MODULE_PATH}/PappsoMSppConfig.cmake.in ${CMAKE_BINARY_DIR}/PappsoMSppConfig.cmake) # Install the cmake config install(FILES ${CMAKE_BINARY_DIR}/PappsoMSppConfig.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pappsomspp) libpappsomspp-0.9.20/CMakeStuff/outputColors.cmake000644 001750 001750 00000001065 14346367014 023427 0ustar00rusconirusconi000000 000000 # We want to use some colors for the message output. string(ASCII 27 Esc) set(ColourReset "${Esc}[m") set(ColourBold "${Esc}[1m") set(Red "${Esc}[31m") set(Green "${Esc}[32m") set(Yellow "${Esc}[33m") set(Blue "${Esc}[34m") set(Magenta "${Esc}[35m") set(Cyan "${Esc}[36m") set(White "${Esc}[37m") set(BoldRed "${Esc}[1;31m") set(BoldGreen "${Esc}[1;32m") set(BoldYellow "${Esc}[1;33m") set(BoldBlue "${Esc}[1;34m") set(BoldMagenta "${Esc}[1;35m") set(BoldCyan "${Esc}[1;36m") set(BoldWhite "${Esc}[1;37m") libpappsomspp-0.9.20/CMakeStuff/systemUname.cmake000644 001750 001750 00000000775 14346367014 023226 0ustar00rusconirusconi000000 000000 # Ask that uname -s be performed and store the value in SYSTEM_UNAME_S for # later reference. macro(get_uname_string) execute_process(COMMAND uname -s OUTPUT_VARIABLE SYSTEM_UNAME_S) if(${SYSTEM_UNAME_S} MATCHES "MINGW64_NT-10.*") message(STATUS "System detected as Windows10 with MINGW64, setting WIN32 AND WIN10MINGW64") # Note that WIN32 is set even on 64 bits systems. set(WIN32 1) set(WIN10MINGW64 1) #else() #message(STATUS "System is not Windows.") endif() endmacro() get_uname_string() libpappsomspp-0.9.20/debian/000755 001750 001750 00000000000 14533473271 017134 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/debian/source/000755 001750 001750 00000000000 14533473271 020434 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/debian/source/format000644 001750 001750 00000000015 14372504676 021650 0ustar00rusconirusconi000000 000000 3.0 (quilt) libpappsomspp-0.9.20/debian/copyright000644 001750 001750 00000001042 14372504676 021071 0ustar00rusconirusconi000000 000000 Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: libpappsomspp Source: https://salsa.debian.org/debichem-team/libpappsomspp Files: * Copyright: 2015-2020 Olivier Langella 2017, 2018, 2019, 2020 Filippo Rusconi 2019, 2020 Thomas Renne License: GPL-3+ License: GPL-3+ On Debian systems you can read the full text of the GNU GENERAL PUBLIC LICENSE at /usr/share/common-licenses/GPL-3. libpappsomspp-0.9.20/debian/libpappsomspp-dev.install000644 001750 001750 00000001247 14372504676 024202 0ustar00rusconirusconi000000 000000 usr/include/pappsomspp/*.h usr/include/pappsomspp/amino_acid/* usr/include/pappsomspp/exception/* usr/include/pappsomspp/fasta/* usr/include/pappsomspp/grouping/* usr/include/pappsomspp/massspectrum/* usr/include/pappsomspp/msfile/* usr/include/pappsomspp/msrun/* usr/include/pappsomspp/obo/* usr/include/pappsomspp/peptide/* usr/include/pappsomspp/processing/* usr/include/pappsomspp/protein/* usr/include/pappsomspp/psm/* usr/include/pappsomspp/trace/* usr/include/pappsomspp/vendors/* usr/include/pappsomspp/xic/* usr/include/pappsomspp/xicextractor/* usr/lib/*/libpappsomspp.a usr/lib/*/cmake/pappsomspp/FindPappsoMSpp.cmake usr/lib/*/cmake/pappsomspp/PappsoMSppConfig.cmake libpappsomspp-0.9.20/debian/libpappsomspp-dev.links000755 001750 001750 00000000501 14372504676 023647 0ustar00rusconirusconi000000 000000 #! /usr/bin/dh-exec # Filippo Rusconi 20200605 - This is the cleanest solution: # https://wiki.debian.org/Multiarch/Implementation#Dynamic_debian.2F.2A_files # Make sure this file is executable !!! usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp.so.${LIBPAPPSOMSPP_VERSION} usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp.so libpappsomspp-0.9.20/debian/libpappsomspp-doc.doc-base000644 001750 001750 00000000616 14372504676 024177 0ustar00rusconirusconi000000 000000 Document: libpappsomspp-doc Title: libpappsomspp API documentation Author: Olivier Langella, Filippo Rusconi Abstract: doxygen documentation for libpappsomspp it describes how the library works to handle proteomics data (peptides, spectrum, xic, amino acids...) Section: Programming/C++ Format: HTML Index: /usr/share/doc/libpappsomspp/html/index.html Files: /usr/share/doc/libpappsomspp/html/* libpappsomspp-0.9.20/debian/libpappsomspp-doc.install000644 001750 001750 00000000035 14372504676 024163 0ustar00rusconirusconi000000 000000 usr/share/doc/libpappsomspp/*libpappsomspp-0.9.20/debian/libpappsomspp-widget-dev.install000644 001750 001750 00000000101 14372504676 025447 0ustar00rusconirusconi000000 000000 usr/include/pappsomspp/widget/* usr/lib/*/libpappsomspp-widget.a libpappsomspp-0.9.20/debian/libpappsomspp-widget-dev.links000755 001750 001750 00000000517 14372504676 025137 0ustar00rusconirusconi000000 000000 #! /usr/bin/dh-exec # Filippo Rusconi 20200605 - This is the cleanest solution: # https://wiki.debian.org/Multiarch/Implementation#Dynamic_debian.2F.2A_files # Make sure this file is executable !!! usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp-widget.so.${LIBPAPPSOMSPP_VERSION} usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp-widget.so libpappsomspp-0.9.20/debian/libpappsomspp-widget0.install000644 001750 001750 00000000044 14372707145 024755 0ustar00rusconirusconi000000 000000 usr/lib/*/libpappsomspp-widget.so.* libpappsomspp-0.9.20/debian/libpappsomspp-widget0.links000755 001750 001750 00000000552 14372707145 024436 0ustar00rusconirusconi000000 000000 #! /usr/bin/dh-exec # Filippo Rusconi 20200605 - This is the cleanest solution: # https://wiki.debian.org/Multiarch/Implementation#Dynamic_debian.2F.2A_files # Make sure this file is executable !!! usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp-widget.so.${LIBPAPPSOMSPP_VERSION} usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp-widget.so.${LIBPAPPSOMSPP_SOVERSION} libpappsomspp-0.9.20/debian/libpappsomspp-widget0.shlibs000644 001750 001750 00000000055 14372707145 024575 0ustar00rusconirusconi000000 000000 libpappsomspp-widget 0 libpappsomspp-widget0 libpappsomspp-0.9.20/debian/libpappsomspp.manpages000644 001750 001750 00000000030 14372504676 023540 0ustar00rusconirusconi000000 000000 debian/libodsstream0.1 libpappsomspp-0.9.20/debian/libpappsomspp0.install000644 001750 001750 00000000035 14372707145 023474 0ustar00rusconirusconi000000 000000 usr/lib/*/libpappsomspp.so.* libpappsomspp-0.9.20/debian/libpappsomspp0.links000755 001750 001750 00000000534 14372707145 023155 0ustar00rusconirusconi000000 000000 #! /usr/bin/dh-exec # Filippo Rusconi 20200605 - This is the cleanest solution: # https://wiki.debian.org/Multiarch/Implementation#Dynamic_debian.2F.2A_files # Make sure this file is executable !!! usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp.so.${LIBPAPPSOMSPP_VERSION} usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp.so.${LIBPAPPSOMSPP_SOVERSION} libpappsomspp-0.9.20/debian/libpappsomspp0.shlibs000644 001750 001750 00000000037 14372707145 023314 0ustar00rusconirusconi000000 000000 libpappsomspp 0 libpappsomspp0 libpappsomspp-0.9.20/debian/not-installed000755 001750 001750 00000000704 14372504676 021645 0ustar00rusconirusconi000000 000000 #! /usr/bin/dh-exec # Filippo Rusconi 20200611 - This is the cleanest solution: # https://wiki.debian.org/Multiarch/Implementation#Dynamic_debian.2F.2A_files # Make sure this file is executable !!! debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp.so debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp.so.0 debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp-widget.so debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libpappsomspp-widget.so.0 libpappsomspp-0.9.20/debian/watch000644 001750 001750 00000000617 14372504676 020176 0ustar00rusconirusconi000000 000000 version=4 # The following page lists the releases # https://forgemia.inra.fr/pappso/pappsomspp/-/tags # And the actual href in the page is # href="/pappso/pappsomspp/-/archive/0.8.38/pappsomspp-0.8.38.tar.gz" #https://forgemia.inra.fr/pappso/pappsomspp/-/tags \ #.*/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@ https://forgemia.inra.fr/pappso/pappsomspp/-/tags \ .*/pappsomspp-(\d\S+)@ARCHIVE_EXT@ libpappsomspp-0.9.20/debian/control000644 001750 001750 00000011023 14533442055 020530 0ustar00rusconirusconi000000 000000 Source: libpappsomspp Maintainer: The Debichem Group Uploaders: Filippo Rusconi Section: libs Priority: optional Build-Depends: debhelper-compat (= 12), dh-exec, cmake, d-shlibs, libxkbfile-dev, qt6-base-dev, libqt6core5compat6-dev, libqt6svg6-dev, qt6-documentation-tools, libpwizlite-dev (>= 3.0.5), libqcustomplot-dev (>= 2.1.0), libodsstream-dev (>= 0.9.6), libsqlite3-dev, libzstd-dev, liblzf-dev, zlib1g-dev, libquazip1-qt6-dev, libboost-dev, libboost-iostreams-dev, libboost-thread-dev, libboost-system-dev, libboost-filesystem-dev, libboost-chrono-dev, libboost-container-dev, doxygen, catch2 Standards-Version: 4.6.2 Vcs-Browser: https://salsa.debian.org/debichem-team/libpappsomspp Vcs-Git: https://salsa.debian.org/debichem-team/libpappsomspp.git Homepage: http://pappso.inrae.fr/bioinfo Package: libpappsomspp0 Architecture: any Multi-Arch: same Conflicts: libpappsomspp0-qt6 Replaces: libpappsomspp0-qt6 Breaks: libpappsomspp0-qt6 Depends: libqt6sql6-sqlite, ${shlibs:Depends}, ${misc:Depends} Description: C++ library to handle mass spectrometry data (non-GUI runtime) libpappsomspp provides a simple API to perform a variety of tasks related to mass spectrometry. Although the library is proteomics oriented, it also features interesting functions to perform mass spectral data integrations. The main features are: . - abstractions for peptides, ions, amino acid modifications... - integrations to mass spectra, drift spectra, XIC chromatograms... . This package ships the non-GUI library. Package: libpappsomspp-dev Section: libdevel Architecture: any Multi-Arch: same Replaces: libpappsomspp-dev (<< ${binary:Version}) Depends: libpappsomspp0 (= ${binary:Version}), ${misc:Depends} Recommends: libpappsomspp-doc Description: C++ library to handle mass spectrometry data (development files) libpappsomspp provides a simple API to perform a variety of tasks related to mass spectrometry. Although the library is proteomics oriented, it also features interesting functions to perform mass spectral data integrations. The main features are: . - abstractions for peptides, ions, amino acid modifications... - integrations to mass spectra, drift spectra, XIC chromatograms... . This package ships the development files for the non-GUI library. Package: libpappsomspp-widget0 Architecture: any Multi-Arch: same Conflicts: libpappsomspp-widget0-qt6 Breaks: libpappsomspp-widget0-qt6 Replaces: libpappsomspp-widget0-qt6, libpappsomspp-widget0 (<< ${binary:Version}) Depends: libpappsomspp0 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Description: C++ library to handle mass spectrometry data (GUI runtime) libpappsomspp provides a simple API to perform a variety of tasks related to mass spectrometry. Although the library is proteomics oriented, it also features interesting functions to perform mass spectral data integrations. The main features are: . - abstractions for peptides, ions, amino acid modifications... - integrations to mass spectra, drift spectra, XIC chromatograms... . This package ships the GUI library. Package: libpappsomspp-widget-dev Section: libdevel Architecture: any Multi-Arch: same Replaces: libpappsomspp-widget-dev (<< ${binary:Version}) Depends: libpappsomspp-widget0 (= ${binary:Version}), libpappsomspp-dev, ${misc:Depends} Recommends: libpappsomspp-doc Description: C++ library to handle mass spectrometry data (GUI development files) libpappsomspp provides a simple API to perform a variety of tasks related to mass spectrometry. Although the library is proteomics oriented, it also features interesting functions to perform mass spectral data integrations. The main features are: . - abstractions for peptides, ions, amino acid modifications... - integrations to mass spectra, drift spectra, XIC chromatograms... . This package ships the development files for the GUI library. Package: libpappsomspp-doc Section: doc Architecture: all Depends: ${misc:Depends} Description: C++ library to handle mass spectrometry data (developer documentation) libpappsomspp provides a simple API to perform a variety of tasks related to mass spectrometry. Although the library is proteomics oriented, it also features interesting functions to perform mass spectral data integrations. The main features are: . - abstractions for peptides, ions, amino acid modifications... - integrations to mass spectra, drift spectra, XIC chromatograms... . This package contains the developer documentation. libpappsomspp-0.9.20/debian/changelog000644 001750 001750 00000136111 14533442061 021002 0ustar00rusconirusconi000000 000000 libpappsomspp (0.9.20-1) unstable; urgency=low * New upstream version. See git log. * Update libodsstream-dev (>= 0.9.6). * Standards-Version: 4.6.2. -- Filippo Rusconi Mon, 04 Dec 2023 22:25:25 +0100 libpappsomspp (0.9.19-1~bookworm+1) bookworm; urgency=medium [ Olivier Langella ] * Update dependency to new version of odsstream. * SpecGlobX algorithm added in processing/specglob/* * all tests are now under a single catch2. or catch3.x binary * HUPO-SI ProForma peptide notation support added [ Filippo Rusconi ] * fix Bruker data read process regarding mz range definition -- Olivier Langella Mon, 04 Dec 2023 09:23:08 +0100 libpappsomspp (0.9.18-1) unstable; urgency=low * New upstream version. * Update dependency to new version of odsstream. * Fixes to the test files that use Catch2 (header inclusion changed between version 2.x and 3.x.). * Note that this version does compile with the experimental/libboost1.83.0 libs, and tests run flawlessly, which means we can safely (Closes: #1056098). -- Filippo Rusconi Sat, 18 Nov 2023 22:44:09 +0100 libpappsomspp (0.9.17-1) unstable; urgency=low * Fixes (hopefully) to tests that failed under some platforms. This entailed using some tolerance in the way double values are compared. -- Filippo Rusconi Tue, 29 Aug 2023 12:42:55 +0200 libpappsomspp (0.9.16-1) unstable; urgency=low * New upstream version trying to explore the test run failures observed on other platforms than amd64. Namely, the fact that Catch2-based tests are run using dh_test as a single test with no meaningful output to check why it fails. -- Filippo Rusconi Mon, 28 Aug 2023 10:15:05 +0200 libpappsomspp (0.9.15-1) unstable; urgency=low * Force new upstream to upload tar.gz. -- Filippo Rusconi Fri, 25 Aug 2023 12:29:38 +0200 libpappsomspp (0.9.14-1) unstable; urgency=low * WIP: allow the possibility to configure the loading process for Bruker timsTOF data files. * Packaging for Debian unstable. * Make tests build and run fine in d/rules. Required working on tests/CMakeLists.txt to change LD_LIBRARY_PATH to the catch2 based test binary. -- Filippo Rusconi Thu, 24 Aug 2023 14:27:24 +0200 libpappsomspp (0.9.14-1~bookworm+1) bookworm; urgency=medium * bug fix on new Peptide::addAaModificationOnAllAminoAcid function used for C13N15 labeling -- Olivier Langella Thu, 24 Aug 2023 13:08:56 +0200 libpappsomspp (0.9.13-1) unstable; urgency=low * Fix missing cstdint include. -- Filippo Rusconi Mon, 21 Aug 2023 19:36:58 +0200 libpappsomspp (0.9.13-1~bookworm+1) bookworm; urgency=medium [ Olivier Langella ] * tests for C13N15 methods * implementation of distance between traces based on the similarity cosine method [ Filippo Rusconi ] * implementation of C13N15 internal controled vocabulary * WIP: redesigning API for much flexible msrun reader -- Olivier Langella Wed, 19 Jul 2023 15:03:01 +0200 libpappsomspp (0.9.12-1) unstable; urgency=low * Nothing new, just keeping up with version numbering... See version 0.9.10-1 for details. -- Filippo Rusconi Tue, 20 Jun 2023 15:55:08 +0200 libpappsomspp (0.9.11-1~bookworm+1) bookworm; urgency=medium * new bookworm package -- Olivier Langella Fri, 16 Jun 2023 17:48:45 +0200 libpappsomspp (0.9.10-1~bullseye+1) bullseye; urgency=medium * work on PSM features -- Olivier Langella Thu, 04 May 2023 15:33:21 +0200 libpappsomspp (0.9.10-1) unstable; urgency=low * New upstream version fixing odd bug with fabs() required when a double value is negative (determination of the decimals required to display values in the traces upon measurement of inter-peak distances). * Indirectly fix the #include that was missing in libpwizlite and that made build failures with new g++-13 (Closes: #1037734). * libpwizlite-dev (>= 3.0.5) version dependency update. -- Filippo Rusconi Thu, 27 Apr 2023 17:13:46 +0200 libpappsomspp (0.9.9-1) unstable; urgency=medium * minX and maxX on trace -- Olivier Langella Fri, 17 Mar 2023 16:25:31 +0100 libpappsomspp (0.9.7-1) bullseye; urgency=medium * Full Qt6 switch -- Olivier Langella Fri, 17 Mar 2023 13:14:07 +0100 libpappsomspp (0.9.6-1) unstable; urgency=low * New upstream. Last chance to upload before the freeze. -- Filippo Rusconi Mon, 13 Feb 2023 13:30:40 +0100 libpappsomspp (0.9.5-1~bullseye+1) bullseye; urgency=medium * new IonMobilityGrid object to align mobility between runs -- Olivier Langella Wed, 01 Feb 2023 10:44:41 +0100 libpappsomspp (0.9.4-1~bullseye+1) bullseye; urgency=medium * merge qt6 branch developments. * replace libalglib polynome solver with a Cardano's implementation, to improve CPU performances. Thanks to "Sergey Bochkanov" for the advice. -- Olivier Langella Thu, 05 Jan 2023 11:43:45 +0100 libpappsomspp (0.9.3-1) unstable; urgency=low * New upstream version with code cleanup; * Remove version constraints on the build-deps packages (thanks Janitor). * Made BasePlotContext a true base class for MassSpecTraceplotContext. * Hopefully fix bug (Closes: #1027554). Thanks to Lucas Nussbaum () for reporting it. Note that the software builds fine uncorrected in a chroot sid environment. -- Filippo Rusconi Sun, 01 Jan 2023 16:24:07 +0100 libpappsomspp (0.9.2-1) unstable; urgency=low * New upstream fixing small glitches and setting bumped-up version for libodsstream-dev as a build-dep package. -- Filippo Rusconi Wed, 14 Dec 2022 13:42:23 +0100 libpappsomspp (0.9.1-2) unstable; urgency=low * Started implementing a MS run reader that combines all the mobility scans into a single mass spectrum. This way, mineXpert2 can load Bruker timsTOF data in a pretty reasonable time. * Other improvements and fixes to the Qt6 port. -- Filippo Rusconi Tue, 13 Dec 2022 17:57:07 +0100 libpappsomspp (0.9.0-1) unstable; urgency=low * Comment for FTPMasters: this source package is only different than the previous one by the name of the binary packages that it creates. * New version that builds against Qt6. * Other improvements and fixes in the CMake-based build system. * Standards-Version: 4.6.0 (routine update). -- Filippo Rusconi Thu, 24 Nov 2022 23:23:37 +0100 libpappsomspp (0.8.61-1~bullseye+1) bullseye; urgency=medium * cmake rework * merging qt6 branch * use qcustomplot 2.1 library -- Olivier Langella Wed, 30 Nov 2022 11:11:58 +0100 libpappsomspp (0.8.60-1~bullseye+1) bullseye; urgency=medium * bullseye backport -- Olivier Langella Mon, 31 Oct 2022 09:06:33 +0100 libpappsomspp (0.8.60-1) unstable; urgency=low * Fix the distribution... was working too late at night... -- Filippo Rusconi Fri, 28 Oct 2022 10:20:12 +0200 libpappsomspp (0.8.59-1) bullseye; urgency=low * New upstream version. * Incidentally, previous version was to fix a bug that was published in betwwen the previous version and this one: (Closes: #1022934). -- Filippo Rusconi Fri, 28 Oct 2022 03:30:29 +0200 libpappsomspp (0.8.58-1) bullseye; urgency=low * New upstream version (see 0.8.57-1~bullseye+1). * Standards-Version: 4.6.1. * d/rules: Fix by Adrian Bunk to work around the excess precision of the x87 FPU that causes https://buildd.debian.org/status/logs.php?pkg=libpappsomspp&arch=i386. -- Filippo Rusconi Thu, 27 Oct 2022 10:38:00 +0200 libpappsomspp (0.8.57-1~bullseye+1) bullseye; urgency=medium [ Olivier Langella ] * avoid nullptr calls in custom plot widgets * new tims frame widget color map * better tdf handler * new tests for protein , enzyme, psm, psmfeaures * new psm feature API [ Filippo Rusconi ] * refactoring work to compile using Qt6 -- Olivier Langella Tue, 04 Oct 2022 17:02:43 +0200 libpappsomspp (0.8.56-1) unstable; urgency=low * New version that implements features in the dt|rt,m/z color map realms. -- Filippo Rusconi Tue, 30 Aug 2022 14:54:53 +0200 libpappsomspp (0.8.55-1) unstable; urgency=low * New version to fix the destination distribution. -- Filippo Rusconi Mon, 11 Jul 2022 13:06:19 +0200 libpappsomspp (0.8.54-1) bullseye; urgency=low * New upstream release fixing bug in color map plot panning when any axis is locked (Filippo Rusconi). * d/control: bump-up dependency for odsstream to 0.8.1. -- Filippo Rusconi Fri, 08 Jul 2022 15:52:47 +0200 libpappsomspp (0.8.53-1~bullseye+1) bullseye; urgency=medium * fix for issue #17 in MassChroQ -- Olivier Langella Thu, 30 Jun 2022 13:40:16 +0200 libpappsomspp (0.8.52-1) unstable; urgency=low * New upstream version fixing one critical bug in the calculation of the decimals in a value (infinite loop). -- Filippo Rusconi Wed, 29 Jun 2022 20:12:33 +0200 libpappsomspp (0.8.51-1~bullseye+2) bullseye; urgency=medium * fix for issue #11 -- Olivier Langella Thu, 23 Jun 2022 13:19:23 +0200 libpappsomspp (0.8.51-1~bullseye+1) bullseye; urgency=medium * tdf reader enhancements -- Olivier Langella Wed, 22 Jun 2022 09:42:32 +0200 libpappsomspp (0.8.50-1) unstable; urgency=low * New upstream version. -- Filippo Rusconi Fri, 17 Jun 2022 10:23:51 +0200 libpappsomspp (0.8.49-1) unstable; urgency=medium * New upstream release. -- Filippo Rusconi Tue, 15 Mar 2022 16:42:27 +0100 libpappsomspp (0.8.49-1~bullseye+1) bullseye; urgency=medium * mzdata conversion time displayed in tandemwrapper * new package using libpwizlite 3.0.4 -- Olivier Langella Sun, 13 Mar 2022 17:52:32 +0100 libpappsomspp (0.8.48-1) unstable; urgency=low * New upstream version with new features from Olivier Langella (see stanzas below) and Filippo Rusconi (mainly a new low intensity threshold removal filter). -- Filippo Rusconi Mon, 31 Jan 2022 16:00:07 +0100 libpappsomspp (0.8.47-1~bullseye+1) bullseye; urgency=medium * new msrun alignment API -- Olivier Langella Wed, 26 Jan 2022 09:20:02 +0100 libpappsomspp (0.8.46-1~bullseye+1) bullseye; urgency=medium * XML stream reader also reads from a QString -- Olivier Langella Mon, 24 Jan 2022 14:47:52 +0100 libpappsomspp (0.8.45-1~bullseye+1) bullseye; urgency=medium * fix xml stream reader emty string problem * fix tdf filename and sample name * better filter suite string and iterators * more efficient multithreaded xic extraction * mzformat is written into tandem result file -- Olivier Langella Sun, 02 Jan 2022 17:10:58 +0100 libpappsomspp (0.8.44-1~bullseye+1) bullseye; urgency=medium * fix quantile on trace size equal 0 -- Olivier Langella Tue, 21 Dec 2021 13:03:26 +0100 libpappsomspp (0.8.43-1~bullseye+1) bullseye; urgency=medium * fix fragment ion name API design * new filter to remove intensity using a quantile function : implementation and tests -- Olivier Langella Tue, 21 Dec 2021 08:44:14 +0100 libpappsomspp (0.8.42-1~bullseye+1) bullseye; urgency=medium * better peptide fragment ion names for phopho acid loss * rework of alignment API -- Olivier Langella Thu, 16 Dec 2021 12:05:31 +0100 libpappsomspp (0.8.41-1~bullseye+1) bullseye; urgency=medium [ Olivier Langella ] * remove pseudo centroid filter and remaining pwiz files * fix C12 abundance * parallelized xic extractor * better XML error handler * better ion names in mass spectrum widget * fix tandem wrapper and new tests [ Filippo Rusconi ] * improvements to the documentation and comments * convenient function to insert/update datapoints in traces * new tests (xic chromatogram and xic extractor to mass spectrum) -- Olivier Langella Sat, 11 Dec 2021 11:13:39 +0100 libpappsomspp (0.8.40-1~bullseye+1) bullseye; urgency=medium * new bullseye package -- Olivier Langella Tue, 23 Nov 2021 08:52:11 +0100 libpappsomspp (0.8.39-1~bullseye+2) bullseye; urgency=medium * new bullseye package -- Olivier Langella Mon, 22 Nov 2021 14:56:09 +0100 libpappsomspp (0.8.39-1) unstable; urgency=low * New upstream version (see below). * Fixes to the build by adding #include where required (build with g++ v 11.2.0). Many thanks to Adrian Bunk for the patch (although not applied as-is). Closes: #984199. * Bump-up Standards to 4.6.0 * Add watch file that points to the forgemia GitLab repos instance. -- Filippo Rusconi Wed, 10 Nov 2021 16:32:10 +0100 libpappsomspp (0.8.38-1~buster+1) buster; urgency=medium * essential function to allow compression type 1 XIC extraction -- Olivier Langella Sun, 07 Nov 2021 09:01:21 +0100 libpappsomspp (0.8.37-1~buster+1) buster; urgency=medium [ Olivier Langella ] * more exceptions concerning timsTOF data reader for better reliability * support for the timsTOF compression type 1 (legacy data files) and tests * better tandemrunwrapper [ Filippo Rusconi ] * improvements to the filters * better mz integration tests -- Olivier Langella Fri, 05 Nov 2021 16:11:09 +0100 libpappsomspp (0.8.36-1~buster+1) buster; urgency=medium * fix a new peak detection crash on small XICs, tests added -- Olivier Langella Thu, 30 Sep 2021 09:14:00 +0200 libpappsomspp (0.8.35-1~buster+1) buster; urgency=medium [ Olivier Langella ] * fix peak detection crash on small XICs, tests added [ Filippo Rusconi ] * better plot widget color map * new function in filter name interface to get the name of the filter -- Olivier Langella Tue, 28 Sep 2021 09:27:45 +0200 libpappsomspp (0.8.34-1~buster+1) buster; urgency=medium * new text user interface monitor to display progress using percent * new function to add filters from QStrings in a filter suite -- Olivier Langella Mon, 27 Sep 2021 09:29:36 +0200 libpappsomspp (0.8.33-1~buster+1) buster; urgency=medium * fix out of range possible access when extracting XIC on tims data * new trace peak vector and convenient API to choose matched peaks -- Olivier Langella Mon, 20 Sep 2021 15:40:38 +0200 libpappsomspp (0.8.32-1~buster+1) buster; urgency=medium * msrun reader collection handler refactoring * better reader performance on timstof data * special API for MassChroQ -- Olivier Langella Wed, 15 Sep 2021 11:30:24 +0200 libpappsomspp (0.8.31-1~buster+1) buster; urgency=medium * new widget to handle a switch button, Thomas Renne -- Olivier Langella Tue, 24 Aug 2021 15:59:55 +0200 libpappsomspp (0.8.30-1~buster+1) buster; urgency=medium * fix QProcess mecanism to execute tandem -- Olivier Langella Wed, 23 Jun 2021 10:35:48 +0200 libpappsomspp (0.8.29-1~buster+1) buster; urgency=medium * issue #9 fixed : conversion problem between uint and ulong * better memory management in TIMS frame decoder -- Olivier Langella Thu, 03 Jun 2021 07:54:59 +0200 libpappsomspp (0.8.28-1~buster+1) buster; urgency=medium * new TandemRunWrapper, runs on any mz data file * generic UiMonitorInterface to manage long process * X!Tandem error management -- Olivier Langella Thu, 20 May 2021 10:14:29 +0200 libpappsomspp (0.8.27-1~buster+1) buster; urgency=medium * binary package for PAPPSO repository -- Olivier Langella Wed, 12 May 2021 18:14:27 +0200 libpappsomspp (0.8.26-2) buster; urgency=medium * new tandem run wrapper API -- Olivier Langella Wed, 12 May 2021 17:14:27 +0200 libpappsomspp (0.8.26-1) buster; urgency=medium * new XIC extraction API, enabling ion mobility -- Olivier Langella Thu, 06 May 2021 14:34:14 +0200 libpappsomspp (0.8.25-2) unstable; urgency=low * New upload with orig.tar.gz. The buster version by Olivier made dpkg think this was not a version needing orig.tar.gz. -- Filippo Rusconi Wed, 21 Apr 2021 22:21:44 +0200 libpappsomspp (0.8.25-1) unstable; urgency=low * New upstream version with new noise reduction features for the color maps. -- Filippo Rusconi Wed, 21 Apr 2021 15:59:49 +0200 libpappsomsp (0.8.25-1~buster+1) buster; urgency=medium * widgets to handle OBO terms -- Olivier Langella Wed, 21 Apr 2021 14:40:23 +0200 libpappsomspp (0.8.24-1) unstable; urgency=low * New upstream version. -- Filippo Rusconi Thu, 08 Apr 2021 09:54:26 +0200 libpappsomspp (0.8.23-1~buster+1) buster; urgency=medium * mass spectrum widget API modified to highlight precursor -- Olivier Langella Thu, 01 Apr 2021 14:24:04 +0200 libpappsomspp (0.8.23-1) unstable; urgency=low * The tests that failed in i386 could not be fixed for some reason. However, the software is working fine as tested in a VirtualBox environment of i386. The failing tests are conditionally dropped for i386. -- Filippo Rusconi Wed, 31 Mar 2021 14:28:43 +0200 libpappsomspp (0.8.22-1) unstable; urgency=low * Rewrite the Trace::containsX() function so that it passes the i386-based tests. All tests pass on an i386 VirtualBox-based testing Debian box. -- Filippo Rusconi Tue, 30 Mar 2021 10:18:36 +0200 libpappsomspp (0.8.21-1) unstable; urgency=low * Try to fix the build failures on i386 platforms due to double precision varying on 32 bits vs 64 bits platforms. -- Filippo Rusconi Mon, 29 Mar 2021 14:14:24 +0200 libpappsomspp (0.8.20-1) unstable; urgency=low * New upstream version with all the integration region selection reworked to cope with the specific case of integration skewed selection rectangle. * Add d/not-installed to list uninstalled files (those that are shipped as symbolic links). * Build-Depends: debhelper-compat (= 13). -- Filippo Rusconi Tue, 23 Mar 2021 17:01:09 +0100 libpappsomspp (0.8.19-1~buster+1) buster; urgency=medium * new test to control memory usage * no cache in mzcalibration timstof model * XIC shared pointer initialization in timstof reader -- Olivier Langella Wed, 03 Mar 2021 16:30:53 +0100 libpappsomspp (0.8.18-1) unstable; urgency=low * New upstream version (see below). * Fixed a bunch of QT DEPRECATED warnings. * Standards-Version: 4.5.1 (no changes needed). -- Filippo Rusconi Thu, 25 Feb 2021 06:21:37 +0100 libpappsomspp (0.8.17-1~buster+1) buster; urgency=medium * tandemrunwrapper memory leak problem fixed * first working version of a TimsTofPRO XIC extractor * new test for tandemrunwrapper, TimsTofPROT xic extraction -- Olivier Langella Tue, 23 Feb 2021 09:26:43 +0100 libpappsomspp (0.8.16-1~buster+2) buster; urgency=medium * TimsData reader performance enhancements * changing isotope natural abundance to use the massXpert definitions * DeepProt enumerations for controlled vocabulary across PAPPSO software * enabling test execution in debian package process -- Olivier Langella Thu, 28 Jan 2021 11:46:15 +0100 libpappsomspp (0.8.16-1~buster+1) buster; urgency=medium * development package -- Olivier Langella Fri, 22 Jan 2021 13:22:56 +0100 libpappsomspp (0.8.15-1) unstable; urgency=low * New upstream version depending on libodsstream 0.7.11. * Disable make test for the moment. -- Filippo Rusconi Mon, 21 Dec 2020 18:05:07 +0100 libpappsomspp (0.8.14-1~buster+1) buster; urgency=medium * catch2 test suite is working * fix for standard exception compatibility -- Olivier Langella Wed, 16 Dec 2020 14:00:13 +0100 libpappsomspp (0.8.13-1~buster+1) buster; urgency=medium * buster package -- Olivier Langella Wed, 09 Dec 2020 15:36:32 +0100 libpappsomspp (0.8.13-1) unstable; urgency=low * New upstream with improvement in the XIC widgets. -- Filippo Rusconi Tue, 08 Dec 2020 16:29:03 +0100 libpappsomspp (0.8.12-1) UNRELEASED; urgency=low * New upstream version with new tests imported from mineXpert2 (Catch2-based). * See below for changes between 0.8.8 and now. -- Filippo Rusconi Wed, 02 Dec 2020 14:28:10 +0100 libpappsomspp (0.8.11-1~buster+1) buster; urgency=medium * test added * bug fix in chargeDeconvolution filter * including catch2 framework -- Olivier Langella Tue, 24 Nov 2020 10:08:59 +0100 libpappsomspp (0.8.10-1~buster+1) buster; urgency=medium * better tandemrun wrapper * better FilterSuiteString -- Olivier Langella Wed, 18 Nov 2020 10:13:20 +0100 libpappsomspp (0.8.9-1~buster+1) buster; urgency=medium * rewritten TimsTOF mz calibration API * new FilterNameInterface to build Filter with strings * Thomas Renne added in the copyright debian notice -- Olivier Langella Tue, 17 Nov 2020 13:31:57 +0100 libpappsomspp (0.8.8-1~buster+1) buster; urgency=medium * autoremove directory created for tandem run wrapper -- Olivier Langella Mon, 02 Nov 2020 10:50:32 +0100 libpappsomspp (0.8.8-1) unstable; urgency=low * Add the possibility to recalculate the x,y,z axis scale to log10 or linear. -- Filippo Rusconi Wed, 21 Oct 2020 14:29:32 +0200 libpappsomspp (0.8.7-1~buster+1) buster; urgency=medium * make new builtin centroid interface available throught TimsMsRunReader * access to the underlying timdata pointer from TimsMsRunReader -- Olivier Langella Thu, 15 Oct 2020 09:14:24 +0200 libpappsomspp (0.8.6-1~buster+1) buster; urgency=medium * builtin centroid for timsdata -- Olivier Langella Wed, 14 Oct 2020 10:22:37 +0200 libpappsomspp (0.8.5-1~buster+1) buster; urgency=medium * more checks on file permissions for tandem run wrapper * charge deconvolution documented -- Olivier Langella Fri, 09 Oct 2020 15:37:09 +0200 libpappsomspp (0.8.4-1~buster+1) buster; urgency=medium * new charge deconvolution filter -- Olivier Langella Thu, 08 Oct 2020 10:52:40 +0200 libpappsomspp (0.8.3-1~buster+1) buster; urgency=medium * better msrunreader error messages * regorganised xic extractor to ensure that device is released -- Olivier Langella Mon, 05 Oct 2020 10:19:53 +0200 libpappsomspp (0.8.2-1) buster; urgency=low [ Filippo Rusconi ] * Fixes in the minus combiners. -- Filippo Rusconi Wed, 23 Sep 2020 15:22:50 +0200 libpappsomspp (0.8.2-1~buster+1) buster; urgency=medium * msrunreader new api to release/acquire file pointers -- Olivier Langella Fri, 25 Sep 2020 15:07:16 +0200 libpappsomspp (0.8.1-1) unstable; urgency=low * Fix bug due to not testing pointer against nullptr. -- Filippo Rusconi Mon, 21 Sep 2020 17:20:31 +0200 libpappsomspp (0.8.0-1) UNRELEASED; urgency=low * Add MSn support. -- Filippo Rusconi Mon, 21 Sep 2020 15:53:13 +0200 libpappsomspp (0.7.15-1) unstable; urgency=low * Attempt at fixing the test/test_massrange.cpp failure in i386 platforms. -- Filippo Rusconi Thu, 10 Sep 2020 18:07:48 +0200 libpappsomspp (0.7.14-1) unstable; urgency=low * Bug fix in DataPoint initialization using initialize(). -- Filippo Rusconi Wed, 02 Sep 2020 10:23:48 +0200 libpappsomspp (0.7.14-1~buster+1) buster; urgency=medium * new filters : FilterComplementIonEnhancer, FilterGreatestYperWindow, FilterRemoveC13 -- Olivier Langella Thu, 27 Aug 2020 10:36:53 +0200 libpappsomspp (0.7.13-1) unstable; urgency=low * Another set of fixes for the faulty hard-coded path to the arch-specific system library directory. -- Filippo Rusconi Tue, 25 Aug 2020 13:13:48 +0200 libpappsomspp (0.7.12-1) unstable; urgency=low * Add new filter. -- Filippo Rusconi Mon, 24 Aug 2020 19:42:19 +0200 libpappsomspp (0.7.11-1) unstable; urgency=low * Fix problem with the shipped CMake-based config module file that was replaced with a find module file that has no path hard-coded in it. This should fix the failed builds on all the non x86_64 platforms. -- Filippo Rusconi Mon, 24 Aug 2020 15:45:21 +0200 libpappsomspp (0.7.11-1~buster+1) buster; urgency=medium * fix MassSpectrumWidget issue #3 -- Olivier Langella Mon, 17 Aug 2020 15:52:06 +0200 libpappsomspp (0.7.10-1~buster+1) buster; urgency=medium * buster package -- Olivier Langella Wed, 22 Jul 2020 11:04:12 +0200 libpappsomspp (0.7.10-1) unstable; urgency=low * New upstream version. Added new widget class to represent mass data to a TIC|XIC chromatogram / drift spectrum color map as requested by a user. * Updates to the packaging. -- Filippo Rusconi Thu, 09 Jul 2020 09:26:14 +0200 libpappsomspp (0.7.9-1~buster+1) buster; urgency=medium * new version for debian buster pappsodev -- Olivier Langella Wed, 01 Jul 2020 18:49:18 +0200 libpappsomspp (0.7.8-1~buster+1) buster; urgency=medium * Debian buster backport -- Olivier Langella Wed, 10 Jun 2020 17:04:05 +0200 libpappsomspp (0.7.8-1) unstable; urgency=low * New upstream that has the src/custompwiz source directory removed. This lib now build-depends on another package: libpwizlite-dev. * d/copyright was updated to reflect the removal of the pwiz code subset. Note that 3 files were kept, modified and relocated to the pappsomspp source tree. These were documented in d/copyright. -- Filippo Rusconi Thu, 04 Jun 2020 18:21:53 +0200 libpappsomspp (0.7.7-2) buster; urgency=medium * packaging problem fixed -- Olivier Langella Tue, 19 May 2020 15:47:42 +0200 libpappsomspp (0.7.7-1) buster; urgency=medium * a lot of warnings fixed, better virtual destructors -- Olivier Langella Mon, 18 May 2020 10:31:35 +0200 libpappsomspp (0.7.6-1) UNRELEASED; urgency=low * Fixes for the CMake build system. -- Filippo Rusconi Tue, 28 Apr 2020 18:03:15 +0200 libpappsomspp (0.7.5-1) unstable; urgency=low * New upstream version with fixex for Qt5 suffix remnants within CMake stuff. Also, use better name for the libs in the CMake dialect (PAPPSOMSPP becomes PappsoMSpp). -- Filippo Rusconi Tue, 28 Apr 2020 16:35:52 +0200 libpappsomspp (0.7.4-1) unstable; urgency=low * New upstream version with MultiArch support. * General review of the packaging for Debian official repos upload. * Full copyright holders info in d/copyright. -- Filippo Rusconi Wed, 22 Apr 2020 10:14:26 +0200 libpappsomspp (0.7.3-2) buster; urgency=medium * no more global include directories in cmake to fix compilation problems -- Olivier Langella Mon, 20 Apr 2020 09:08:55 +0200 libpappsomspp (0.7.3-1) buster; urgency=medium * new system to export symbols for Windows system * filter pseudo centroid -- Olivier Langella Wed, 15 Apr 2020 08:02:58 +0200 libpappsomspp (0.7.2-3) buster; urgency=medium * important fix in timsframe polynomial resolution -- Olivier Langella Sun, 12 Apr 2020 16:57:34 +0200 libpappsomspp (0.7.2-2) buster; urgency=medium * fix pappsomsconfig generation and install -- Olivier Langella Fri, 10 Apr 2020 19:36:54 +0200 libpappsomspp (0.7.2-1) buster; urgency=medium * reworked cmake stuff -- Olivier Langella Fri, 10 Apr 2020 10:26:45 +0200 libpappsomspp (0.7.1-1) buster; urgency=medium * brand new library, including libpwiz to avoid compilation problems -- Olivier Langella Wed, 08 Apr 2020 18:26:53 +0200 libpappsomspp (0.7.0-1) unstable; urgency=low * New packaging for testing Debian sid package creation. -- Filippo Rusconi Sat, 18 Jan 2020 21:05:02 +0100 libpappsomspp (0.6.5-1ubuntu1) bionic; urgency=medium * ubuntu 18.04 package -- Olivier Langella Fri, 10 Jan 2020 21:59:22 +0000 libpappsomspp (0.6.5-1) buster; urgency=medium * catch pwiz runtime error * set scans number for mzXML files -- Olivier Langella Wed, 08 Jan 2020 20:50:05 +0100 libpappsomspp (0.6.4-1) buster; urgency=medium * a lot of development from Filippo Rusconi and Olivier Langella -- Olivier Langella Thu, 19 Dec 2019 21:55:55 +0100 libpappsomspp (0.6.3-2) buster; urgency=medium * buster package -- Olivier Langella Thu, 12 Sep 2019 15:23:58 +0200 libpappsomspp (0.6.3-1) stretch; urgency=medium * better BaseTracePlotWidget * new callback function to cancel msrunreader operation * new set of objects to handle Bruker's Tims TOF raw data natively * new MsRunReaders for Bruker's Tims TOF raw data (incomplete) -- Olivier Langella Wed, 11 Sep 2019 09:57:57 +0200 libpappsomspp (0.6.2-1) buster; urgency=medium * first buster package * new BaseTracePlotWidget designed by Filippo Rusconi * FastaFileIndexer object * new function hasScanNumbers to know if an MSrun file can be accessed using scan numbers (true with Thermo, false with others) * peptide palindrome test * new code to compute natural isotope average * new constructor Trace(const MapTrace &map_trace) to build directly a Trace from MapTrace -- Olivier Langella Tue, 16 Jul 2019 14:23:52 +0200 libpappsomspp (0.6.1-1) stretch; urgency=medium * huge refactoring with Filippo Rusconi * work in progress to define a tree structure and browse MS runs * new object and API to align MS runs using the MS2 method -- Olivier Langella Sat, 08 Jun 2019 19:29:09 +0200 libpappsomspp (0.6.0-1) stretch; urgency=medium * huge refactoring with Filippo Rusconi * all filters now available on a Trace object with a simple interface * peak detection as a new simple interface that can be used on any Trace * new feature to combine several traces or mass spectrum * mass spectrum scan numbers are deprecated in favor of a simple index of the scan * a new msfile accessor is available to handle multiple ms runs into a single file -- Olivier Langella Thu, 23 May 2019 11:00:11 +0200 libpappsomspp (0.5.1-1) stretch; urgency=medium * better packaging * mutation support -- Olivier Langella Sat, 23 Mar 2019 07:27:31 +0100 libpappsomspp (0.5.0-1) stretch; urgency=medium * library entirely refactored with Filippo Rusconi * better documentation * coding standards available -- Olivier Langella Wed, 06 Feb 2019 10:27:13 +0100 libpappsomspp (0.4.5-1) stretch; urgency=medium * new package with graphical bug fix -- Olivier Langella Tue, 08 Jan 2019 15:49:32 +0100 libpappsomspp (0.4.4-5) stretch; urgency=medium * new pwiz library -- Olivier Langella Wed, 02 Jan 2019 21:24:24 +0100 libpappsomspp (0.4.4-3) stretch; urgency=medium * new qcustomplot library 2.0.1 -- Olivier Langella Tue, 11 Dec 2018 19:07:06 +0100 libpappsomspp (0.4.4-1) unstable; urgency=low * Packaging for first upload to the NEW queue. -- Filippo Rusconi Tue, 11 Dec 2018 11:06:34 +0100 libpappsomspp (0.4.3-2) stretch; urgency=medium * fix MGF precursor scan num empty -- Olivier Langella Fri, 02 Nov 2018 13:44:50 +0100 libpappsomspp (0.4.3-1) stretch; urgency=medium * new buffered XIC reader based on pwiz library -- Olivier Langella Tue, 14 Aug 2018 14:27:31 +0200 libpappsomspp (0.4.2-1) stretch; urgency=medium * new API to read MSrun data -- Olivier Langella Sat, 02 Jun 2018 07:12:31 +0200 libpappsomspp (0.4.1-1) stretch; urgency=medium * new xic extractor based on slices and having a read buffer -- Olivier Langella Thu, 24 May 2018 19:24:13 +0200 libpappsomspp (0.4.0-2) stretch; urgency=medium * fix out of range problem -- Olivier Langella Thu, 17 May 2018 22:01:40 +0200 libpappsomspp (0.4.0-1) stretch; urgency=medium * new XIC extractor API and new dependency to proteowizard library -- Olivier Langella Wed, 16 May 2018 09:34:30 +0200 libpappsomspp (0.3.4-1) stretch; urgency=medium * API to draw peak borders -- Olivier Langella Sat, 14 Apr 2018 17:29:13 +0200 libpappsomspp (0.3.3-3) stretch; urgency=medium * fix cmake config module -- Olivier Langella Mon, 12 Feb 2018 09:13:16 +0100 libpappsomspp (0.3.3-2) stretch; urgency=medium * using new libodsstream package -- Olivier Langella Sun, 11 Feb 2018 16:54:30 +0100 libpappsomspp (0.3.3-1) stretch; urgency=medium * better widgets -- Olivier Langella Fri, 09 Feb 2018 15:57:58 +0100 libpappsomspp (0.3.2-1) stretch; urgency=medium * new XIC widget -- Olivier Langella Thu, 18 Jan 2018 15:54:09 +0100 libpappsomspp (0.3.1-1) stretch; urgency=medium * new precision widget, better spectrum widget -- Olivier Langella Wed, 10 Jan 2018 14:06:33 +0100 libpappsomspp (0.3.0-3) stretch; urgency=medium * avoid unneeded computations -- Olivier Langella Wed, 03 Jan 2018 09:10:46 +0100 libpappsomspp (0.3.0-2) stretch; urgency=medium * isotope number instead of level -- Olivier Langella Tue, 02 Jan 2018 17:00:11 +0100 libpappsomspp (0.3.0-1) stretch; urgency=medium * new PAPPSO widget package -- Olivier Langella Tue, 02 Jan 2018 10:48:10 +0100 libpappsomspp (0.2.40-1) stretch; urgency=medium * faster grouping algorithm, refactoring -- Olivier Langella Sun, 17 Dec 2017 14:05:18 +0100 libpappsomspp (0.2.39-1) stretch; urgency=medium * better perf in grouping algorithm -- Olivier Langella Fri, 15 Dec 2017 10:06:14 +0100 libpappsomspp (0.2.38-1) stretch; urgency=medium * centos7 compilation * fixed spectrum unique * better grouping performance -- Olivier Langella Sat, 21 Oct 2017 10:44:30 +0200 libpappsomspp (0.2.37-1) stretch; urgency=medium * new API for amino acid widlcards, new spectrum functions -- Olivier Langella Mon, 18 Sep 2017 10:29:48 +0200 libpappsomspp (0.2.36-1) stretch; urgency=medium * new peptide functions -- Olivier Langella Tue, 20 Jun 2017 21:53:35 +0200 libpappsomspp (0.2.35-1~stretch) stretch; urgency=medium * stretch pakage -- Olivier Langella Thu, 11 May 2017 15:02:25 +0200 libpappsomspp (0.2.35-1) jessie; urgency=medium * new grouping API -- Olivier Langella Wed, 26 Apr 2017 21:17:09 +0200 libpappsomspp (0.2.34-1) jessie; urgency=medium * new peptides API to handle modification removal -- Olivier Langella Mon, 24 Apr 2017 09:03:01 +0200 libpappsomspp (0.2.33-1~stretch) stretch; urgency=medium * stretch package -- Olivier Langella Tue, 18 Apr 2017 19:13:29 +0200 libpappsomspp (0.2.33-1) jessie; urgency=medium * better grouping, contaminant handler modified -- Olivier Langella Tue, 18 Apr 2017 11:17:20 +0200 libpappsomspp (0.2.32-3~stretch) stretch; urgency=medium * stretch package -- Olivier Langella Sat, 18 Mar 2017 13:50:48 +0100 libpappsomspp (0.2.32-3) jessie; urgency=medium * better intensity ratio isotope determination -- Olivier Langella Sat, 21 Jan 2017 12:13:24 +0100 libpappsomspp (0.2.32-2) stretch; urgency=medium * stretch package -- Olivier Langella Wed, 21 Dec 2016 21:43:27 +0100 libpappsomspp (0.2.32-1) jessie; urgency=medium * better spectrum API -- Olivier Langella Tue, 20 Dec 2016 17:01:04 +0100 libpappsomspp (0.2.31-2) stretch; urgency=medium * stretch package -- Olivier Langella Mon, 19 Dec 2016 18:45:14 +0100 libpappsomspp (0.2.31-1) jessie; urgency=medium * new modification replacer in digestion API -- Olivier Langella Wed, 07 Dec 2016 13:43:48 +0100 libpappsomspp (0.2.30-2) jessie; urgency=medium * digestion bug fixed -- Olivier Langella Mon, 14 Nov 2016 21:52:40 +0100 libpappsomspp (0.2.30-1) jessie; urgency=medium * new digestion API -- Olivier Langella Wed, 19 Oct 2016 21:50:47 +0200 libpappsomspp (0.2.29-1) jessie; urgency=medium * new peptide digestion pipeline -- Olivier Langella Tue, 13 Sep 2016 13:55:11 +0200 libpappsomspp (0.2.28-1) jessie; urgency=medium * don't handle xic sink pointer lifetime -- Olivier Langella Tue, 30 Aug 2016 17:12:30 +0200 libpappsomspp (0.2.27-1) jessie; urgency=medium * new ion types -- Olivier Langella Thu, 25 Aug 2016 07:48:16 +0200 libpappsomspp (0.2.26-1) jessie; urgency=medium * new features in xtandem hyperscore computations -- Olivier Langella Tue, 23 Aug 2016 10:06:12 +0200 libpappsomspp (0.2.25-1) jessie; urgency=medium * improving spectrum process for tandem hyperscore computation -- Olivier Langella Fri, 19 Aug 2016 10:54:19 +0200 libpappsomspp (0.2.24-1) jessie; urgency=medium * new API to digest protein, new documentation -- Olivier Langella Fri, 15 Jul 2016 16:01:40 +0200 libpappsomspp (0.2.23-1) jessie; urgency=medium * formula one -- Olivier Langella Sun, 03 Jul 2016 23:20:42 +0200 libpappsomspp (0.2.22-1) jessie; urgency=medium * XML id added in msrun -- Olivier Langella Sat, 25 Jun 2016 17:34:19 +0200 libpappsomspp (0.2.21-1) jessie; urgency=medium * computing PSI OBO modification masses using the diff formula -- Olivier Langella Fri, 24 Jun 2016 21:53:34 +0200 libpappsomspp (0.2.20-1) jessie; urgency=medium * compute amino acid mass using the chemical formula -- Olivier Langella Wed, 22 Jun 2016 21:47:53 +0200 libpappsomspp (0.2.19-1) jessie; urgency=medium * proton vs protium bug fixed -- Olivier Langella Wed, 22 Jun 2016 16:25:05 +0200 libpappsomspp (0.2.18-1) jessie; urgency=medium * disctinction between proton and protium mass -- Olivier Langella Wed, 22 Jun 2016 15:34:14 +0200 libpappsomspp (0.2.17-1) jessie; urgency=medium * amino acid precision goes now to 4 digits instead of previous 3 digits -- Olivier Langella Wed, 22 Jun 2016 13:48:34 +0200 libpappsomspp (0.2.16-1) jessie; urgency=medium * new syntax to limit modifications per site -- Olivier Langella Sun, 12 Jun 2016 08:12:44 +0200 libpappsomspp (0.2.15-1) jessie; urgency=medium * new API to build peptide modification pipeline from strings -- Olivier Langella Sat, 11 Jun 2016 22:15:09 +0200 libpappsomspp (0.2.14-1) jessie; urgency=medium * final fix into massrange -- Olivier Langella Fri, 20 May 2016 22:31:50 +0200 libpappsomspp (0.2.13-1) jessie; urgency=medium * bug fix on PAPPSO mass range build with upper and lower precision -- Olivier Langella Wed, 18 May 2016 15:25:20 +0200 libpappsomspp (0.2.12-1) jessie; urgency=medium * construct MassRange with upper and lower precisions -- Olivier Langella Mon, 02 May 2016 16:40:31 +0200 libpappsomspp (0.2.11-1) jessie; urgency=medium * get highest and lowest mass of MassRange -- Olivier Langella Thu, 28 Apr 2016 15:14:20 +0200 libpappsomspp (0.2.10-1) jessie; urgency=medium * peptide modification API modified, new Xic MS point distance function added -- Olivier Langella Sat, 09 Apr 2016 22:52:33 +0200 libpappsomspp (0.2.9-1) jessie; urgency=medium * copy constructor bug fixed in Xic isotope -- Olivier Langella Thu, 17 Mar 2016 08:46:10 +0100 libpappsomspp (0.2.8-2) jessie; urgency=medium * copy constructor added -- Olivier Langella Mon, 14 Mar 2016 21:18:37 +0100 libpappsomspp (0.2.8-1) jessie; urgency=medium * Precision pointers, xic detection methods -- Olivier Langella Thu, 10 Mar 2016 12:13:15 +0100 libpappsomspp (0.2.7-1) jessie; urgency=medium * combinations cached * parsing PSI MOD istope labels * semi tryptic digestion -- Olivier Langella Mon, 08 Feb 2016 09:06:57 +0100 libpappsomspp (0.2.6-2) jessie; urgency=medium * unneeded move constructor removed -- Olivier Langella Mon, 14 Dec 2015 22:26:54 +0100 libpappsomspp (0.2.6-1) jessie; urgency=medium * get ion list -- Olivier Langella Sat, 28 Nov 2015 23:05:36 +0100 libpappsomspp (0.2.5-2) jessie; urgency=medium * make shared pointer on ion fragment list -- Olivier Langella Sat, 28 Nov 2015 08:41:47 +0100 libpappsomspp (0.2.5-1) jessie; urgency=medium * new peptide functions -- Olivier Langella Sat, 21 Nov 2015 15:08:43 +0100 libpappsomspp (0.2.4-2) jessie; urgency=medium * symbols update -- Olivier Langella Sat, 07 Nov 2015 21:15:46 +0100 libpappsomspp (0.2.4-1) jessie; urgency=medium * better protein API -- Olivier Langella Sat, 07 Nov 2015 15:29:19 +0100 libpappsomspp (0.2.3-1) jessie; urgency=medium * avoid resource name conflicts -- Olivier Langella Fri, 23 Oct 2015 15:37:53 +0200 libpappsomspp (0.2.2-2) jessie; urgency=medium * U amino acid taken into account -- Olivier Langella Fri, 23 Oct 2015 13:08:17 +0200 libpappsomspp (0.2.2-1) jessie; urgency=medium * XIC detection API -- Olivier Langella Fri, 16 Oct 2015 14:12:09 +0200 libpappsomspp (0.2.0-2) jessie; urgency=medium * new peptide and spectrum API -- Olivier Langella Sat, 03 Oct 2015 23:17:10 +0200 libpappsomspp (0.2.0-1) jessie; urgency=medium * new API to digest and modify peptides -- Olivier Langella Wed, 30 Sep 2015 10:03:45 +0200 libpappsomspp (0.1.0-2) jessie; urgency=medium * better API to handle phospho loss -- Olivier Langella Mon, 14 Sep 2015 19:34:50 +0200 libpappsomspp (0.1.0-1) jessie; urgency=medium * better MS fragment ion support -- Olivier Langella Thu, 10 Sep 2015 22:32:02 +0200 libpappsomspp (0.0.4-3) jessie; urgency=medium * get PSI MOD name -- Olivier Langella Fri, 04 Sep 2015 17:09:35 +0200 libpappsomspp (0.0.4-2) jessie; urgency=medium * new getter to access obo term list -- Olivier Langella Fri, 04 Sep 2015 16:26:52 +0200 libpappsomspp (0.0.4-1) jessie; urgency=medium * new peptide parser using aa modifications -- Olivier Langella Thu, 03 Sep 2015 14:29:53 +0200 libpappsomspp (0.0.3-3) jessie; urgency=medium * library informations added in debian package (symbols, shlibs) -- Olivier Langella Wed, 19 Aug 2015 22:56:54 +0200 libpappsomspp (0.0.3-2) jessie; urgency=medium * little fix -- Olivier Langella Wed, 19 Aug 2015 16:38:26 +0200 libpappsomspp (0.0.3-1) jessie; urgency=medium * grouping functions OK -- Olivier Langella Tue, 18 Aug 2015 10:53:35 +0200 libpappsomspp (0.0.2-1) jessie; urgency=medium * first good package... I hope -- Olivier Langella Fri, 12 Jun 2015 08:58:19 +0200 libpappsomspp (0.0.1-5) jessie; urgency=medium * fix package concurency problem -- Olivier Langella Thu, 11 Jun 2015 15:26:37 +0200 libpappsomspp (0.0.1-4) jessie; urgency=medium * double Debian package for Qt4 and Qt5 -- Olivier Langella Thu, 11 Jun 2015 15:18:33 +0200 libpappsomspp (0.0.1-3) jessie; urgency=medium * cmake module added to dev package -- Olivier Langella Fri, 29 May 2015 16:08:52 +0200 libpappsomspp (0.0.1-2) jessie; urgency=medium * first Debian Jessie package -- Olivier Langella Fri, 29 May 2015 15:09:46 +0200 libpappsomspp (0.0.1-1) wheezy; urgency=low * first debian package -- Olivier Langella Mon, 16 Mar 2015 14:06:18 +0100 libpappsomspp-0.9.20/debian/rules000755 001750 001750 00000002444 14533472427 020222 0ustar00rusconirusconi000000 000000 #!/usr/bin/make -f # -*- makefile -*- include /usr/share/dpkg/pkg-info.mk # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) export DEB_BUILD_MAINT_OPTIONS = hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk ifneq (,$(filter $(DEB_HOST_ARCH_CPU), i386)) export DEB_CXXFLAGS_MAINT_APPEND += -ffloat-store endif %: dh $@ --buildsystem=cmake --builddirectory=build-dir-for-deb # For automating the d/*.links stuff. export LIBPAPPSOMSPP_VERSION=$(DEB_VERSION_UPSTREAM) export LIBPAPPSOMSPP_SOVERSION=0 # Remove -DMAKE_TESTS=1 \ for the moment # See comment below. override_dh_auto_configure: dh_auto_configure -- \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_SKIP_RPATH=0 \ -DUSEPAPPSOTREE=0 override_dh_auto_build: dh_auto_build dh_auto_build -- doc # With the monstrous mess of Catch2 # in version 3.x having totally changed # the header files structure with respect # to version 2.x, it is not humanely possible # to deal with the tests in stable and unstable. # # Make Catch2-based tests separately # so that their output is conserved. # See tests/CMakeLists.txt for details. # cd build-dir-for-deb && make catch2-tests # dh_auto_test libpappsomspp-0.9.20/doc/000755 001750 001750 00000000000 14533473271 016457 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/doc/bruker/000755 001750 001750 00000000000 14533473271 017751 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/doc/bruker/tims_calibration.py000644 001750 001750 00000007525 14346367014 023656 0ustar00rusconirusconi000000 000000 """ Calibration constants and model type can be found in the table TimsCalibration For very old timsTOF data you might find ModelType 1, for quite some time we just use ModelType 2 c0 = ndelay c1 = ncycles c2 = dv_start c3 = dv_end c4 = ttrans = transit time in cycles c5 = polynomgrad (im moment immer 1) c6 = C0 c7 = C1 c8 = vmin c9 = vmax given a scan number scan_num voltage V = dv_start + m * (scan_num - ttrans - ndelay) where m = (dv_end - dv_start) / ncycles you should check that the voltage is in the range [vmin, vmax]. If not the calibration is not valid Using the voltage you get the inverse mobility 1/K0 = 1 / (C0 + C1 / V) = 1 / (c6 + c7/V) """ from bdal.io.timsdata import TimsData import os, sys import numpy as np if len(sys.argv) < 2: raise RuntimeError("need arguments: tdf_directory") analysis_dir = sys.argv[1] tims_file = TimsData(analysis_dir) frameId=4 # just some frame number c = tims_file.conn num_scans = c.execute("select distinct(NumScans) from Frames").fetchone()[0] scan_numbers = np.arange(0, num_scans) # temperature compensation def get_voltage(conn, frame_id): tims_calib_id = c.execute("select TimsCalibration from Frames where Id={}".format(frame_id)).fetchone()[0] ndelay = c.execute("select C0 from TimsCalibration where Id={}".format(tims_calib_id)).fetchone()[0] ncycles = c.execute("select C1 from TimsCalibration where Id={}".format(tims_calib_id)).fetchone()[0] dv_start = c.execute("select C2 from TimsCalibration where Id={}".format(tims_calib_id)).fetchone()[0] dv_end = c.execute("select C3 from TimsCalibration where Id={}".format(tims_calib_id)).fetchone()[0] # transit time in cycles ttrans = c.execute("select C4 from TimsCalibration where Id={}".format(tims_calib_id)).fetchone()[0] # bounds for voltage vmin = c.execute("select C8 from TimsCalibration where Id={}".format(tims_calib_id)).fetchone()[0] vmax = c.execute("select C9 from TimsCalibration where Id={}".format(tims_calib_id)).fetchone()[0] slope = (dv_end - dv_start) / ncycles def scan_num_voltage_transformation(scan_num): v = dv_start + slope*(scan_num - ttrans - ndelay) vmin_indices = np.where(v < vmin) vmax_indices = np.where(v > vmax) if (vmax_indices[0].size != 0 or vmax_indices[0] != 0): raise RuntimeError("invalid tims calibration") return v return scan_num_voltage_transformation def get_oneoverK0_transformation(conn, frame_id): # type one calibration, values taken from tdf-sdk example data mz_calib_id = c.execute("select TimsCalibration from Frames where Id={}".format(frame_id)).fetchone()[0] c6 = c.execute("select C6 from TimsCalibration where Id={}".format(mz_calib_id)).fetchone()[0] c7 = c.execute("select C7 from TimsCalibration where Id={}".format(mz_calib_id)).fetchone()[0] def oneoverK0_transformation(scan_num): voltage = get_voltage(conn, frame_id) return 1 / (c6 + c7 / voltage(scan_num)) return oneoverK0_transformation voltage = get_voltage(c, frameId) v_sdk1 = tims_file.scanNumToVoltage(frameId, scan_numbers) # pick one voltage example to check print ("voltage for {}: {}".format(scan_numbers[3], voltage(scan_numbers[3]))) print ("voltage for from sdk {}: {}".format(scan_numbers[3], v_sdk1[3])) oneoverK0 = get_oneoverK0_transformation(c, frameId) mob_sdk1 = tims_file.scanNumToOneOverK0(frameId, scan_numbers) # pick an example for 1/K0 check print ("1/K0 for {}: {}".format(scan_numbers[14], oneoverK0(scan_numbers[14]))) print ("1/K0 from sdk for {}: {}".format(scan_numbers[14], mob_sdk1[14])) # check differences of 1/K0 mob1 = oneoverK0(scan_numbers) diff_mob = np.abs(mob1 - mob_sdk1); # get max value of diffs print ("max difference between mobility values: {}".format(diff_mob.max())) libpappsomspp-0.9.20/doc/bruker/tof_calibration.py000644 001750 001750 00000010573 14346367014 023467 0ustar00rusconirusconi000000 000000 """ except for HPC calibration which uses a polynome to improve accuracy in the low m/z region we use the following transformation formula: time = C0 + sqrt(1.0e12/C1)*sqrt(m+dm) + c2*(m+dm) + c3*(m+dm)^1.5 In addition we use temperature correction for coefficients C1 and C2. Reference temperatures and correction factors are store in the table MzCalibration: T1_ref, T2_ref, dC1, dC2 Actual temperature values are read from the frames table for each frame, columns T1 and T1 The correction formula is alpha = dC1*(T1_ref - T1) + dC2*(T2_ref - T2) beta = 1 + alpha/1.0e6 C1_corrected = C1*beta C2_corrected = C2/beta """ from bdal.io.timsdata import TimsData import os, sys, math import scipy.optimize as sci if len(sys.argv) < 2: raise RuntimeError("need arguments: tdf_directory") analysis_dir = sys.argv[1] tims_file = TimsData(analysis_dir) frameId=1 mz1 = 599.31 t2_index = 131941; c = tims_file.conn # temperature compensation def get_temperature_correction(conn, frame_id): mz_calib_id = c.execute("select MzCalibration from Frames where Id={}".format(frame_id)).fetchone()[0] T1_ref = c.execute("select T1 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] T2_ref = c.execute("select T2 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] factor1 = c.execute("select dC1 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] factor2 = c.execute("select dC2 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] T1_frame = c.execute("select T1 from Frames where Id={}".format(frame_id)).fetchone()[0] T2_frame = c.execute("select T2 from Frames where Id={}".format(frame_id)).fetchone()[0] alpha = factor1*(T1_ref-T1_frame) + factor2*(T2_ref-T2_frame) return 1 + alpha/1.0e6 def get_tof_transformation(conn, temp_corr, frame_id): # type one calibration, values taken from tdf-sdk example data mz_calib_id = c.execute("select MzCalibration from Frames where Id={}".format(frame_id)).fetchone()[0] c0 = c.execute("select C0 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] c1 = c.execute("select C1 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] c2 = c.execute("select C2 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] c3 = c.execute("select C3 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] c4 = c.execute("select C4 from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] digitizer_base = c.execute("select DigitizerTimebase from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] digitizer_delay = c.execute("select DigitizerDelay from MzCalibration where Id={}".format(mz_calib_id)).fetchone()[0] # temperature compensation c1 = c1*temp_corr c2 = c2/temp_corr def tof_index_transformation(mz): mz_corr = mz + c4 # transformation formula mz => tof tof = c0 + math.sqrt(1.0e12/c1 * mz_corr) + c2*mz_corr + c3*math.pow(mz_corr, 1.5) # simple linear transformation tof => tof_index: tof_time = digitizer_base*index + digitizer_delay return (tof - digitizer_delay) / digitizer_base return tof_index_transformation temp_corr = get_temperature_correction(c, frameId) print ("temperature correction factor is {}".format(temp_corr)) tof_index_trafo = get_tof_transformation(c, temp_corr, frameId) t1_index = tof_index_trafo(mz1) print ("time of flight index for {} is {}".format(mz1, t1_index)) # now calculate mz for that index using the sdk function mz11 = tims_file.indexToMz(frameId, [t1_index]) print ("mz value with sdk calculated is {}".format(mz11[0])) # in order to have a transformation function tof-index => mz we use Newton's method def mz_transformation(index, frame_id): tof_index_trafo = get_tof_transformation(c, temp_corr, frameId) def tof_index_polynome(mz): return tof_index_trafo(mz) - index return sci.newton(tof_index_polynome, 1, tol=1.0e-2) # now we have a transformation function tof_index => m/z for a specific frame mz2 = mz_transformation(t2_index, frameId) print ("newton method: mz for index={}: {}".format(t2_index, mz2)) # now again calculate mz for that index using the sdk function mz3 = tims_file.indexToMz(frameId, [t2_index]) print ("mz value with sdk calculated is {}".format(mz3[0])) libpappsomspp-0.9.20/doc/CMakeLists.txt000644 001750 001750 00000001035 14346367014 021215 0ustar00rusconirusconi000000 000000 find_package(Doxygen) if(DOXYGEN_FOUND) set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) configure_file(${doxyfile_in} ${doxyfile} @ONLY) add_custom_target(doc COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src COMMENT "Generating API documentation with Doxygen" VERBATIM) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/libpappsomspp OPTIONAL ) endif(DOXYGEN_FOUND) libpappsomspp-0.9.20/doc/Doxyfile.in000644 001750 001750 00000225313 14346367014 020577 0ustar00rusconirusconi000000 000000 # Doxyfile 1.8.1.2 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or sequence of words) that should # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. PROJECT_NAME = "@PROJECT_NAME@" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = "@PAPPSOMSTOOLS_VERSION@" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = "Library for mass spectrometry" # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = "@CMAKE_CURRENT_BINARY_DIR@" # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = YES # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding # "class=itcl::class" will allow you to use the command class in the # itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given extension. # Doxygen has a built-in mapping, but you can override or extend it using this # tag. The format is ext=language, where ext is a file extension, and language # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all # comments according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you # can mix doxygen, HTML, and XML commands with Markdown formatting. # Disable only in case of backward compatibilities issues. MARKDOWN_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) # will make doxygen replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and # unions are shown inside the group in which they are included (e.g. using # @ingroup) instead of on a separate page (for HTML and Man pages) or # section (for LaTeX and RTF). INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and # unions with only public data fields will be shown inline in the documentation # of the scope in which they are defined (i.e. file, namespace, or group # documentation), provided this scope is documented. If set to NO (the default), # structs, classes, and unions are shown on a separate page (for HTML and Man # pages) or section (for LaTeX and RTF). INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. SYMBOL_CACHE_SIZE = 0 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given # their name and scope. Since this can be an expensive process and often the # same symbol appear multiple times in the code, doxygen keeps a cache of # pre-resolved symbols. If the cache is too small doxygen will become slower. # If the cache is too large, memory is wasted. The cache size is given by this # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = YES # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to # do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even # if there is only one candidate or it is obvious which candidate to choose # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The # .bib extension is automatically appended if omitted. Using this command # requires the bibtex tool to be installed. See also # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this # feature you need bibtex and perl available in the search path. CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../src/pappsomspp # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty or if # non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext= (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = YES # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C, C++ and Fortran comments will always remain visible. STRIP_CODE_COMMENTS = NO # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. Note that when using a custom header you are responsible # for the proper inclusion of any scripts and style sheets that doxygen # needs, which is dependent on the configuration options used. # It is advised to generate a default header using "doxygen -w html # header.html footer.html stylesheet.css YourConfigFile" and then modify # that header. Note that the header is subject to change so you typically # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # style sheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that # the files will be copied as-is; there are no commands or markers available. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the style sheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of # entries shown in the various tree structured indices initially; the user # can expand and collapse entries dynamically later on. Doxygen will expand # the tree to such a level that at most the specified number of entries are # visible (unless a fully collapsed tree already exceeds this amount). # So setting the number of entries 1 will produce a full collapsed tree by # default. 0 is a special value representing an infinite number of entries # and will result in a full expanded tree by default. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = YES # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = pappsomscpp.qch # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = /usr/bin/qhelpgenerator # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) # at top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. Since the tabs have the same information as the # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to YES, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = YES # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML # documentation. Note that a value of 0 will completely suppress the enum # values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you may also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to # the MathJax Content Delivery Network so you can quickly see the result without # installing MathJax. # However, it is strongly recommended to install a local # copy of MathJax from http://www.mathjax.org before deployment. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension # names that should be enabled during MathJax rendering. MATHJAX_EXTENSIONS = # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a PHP enabled web server instead of at the web client # using Javascript. Doxygen will generate the search PHP script and index # file to put on the web server. The advantage of the server # based approach is that it scales better to large projects and allows # full text search. The disadvantages are that it is more difficult to setup # and does not have live searching capabilities. SERVER_BASED_SEARCH = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for # the generated latex document. The footer should contain everything after # the last chapter. If it is left blank doxygen will generate a # standard footer. Notice: only use this tag if you know what you are doing! LATEX_FOOTER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See # http://en.wikipedia.org/wiki/BibTeX for more info. LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition that # overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. For each # tag file the location of the external documentation should be added. The # format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths # or URLs. Note that each tag file must have a unique name (where the name does # NOT include the path). If a tag file is not located in the directory in which # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will use the Helvetica font for all dot files that # doxygen generates. When you want a differently looking font you can specify # the font name using DOT_FONTNAME. You need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by setting # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the # directory containing the font. DOT_FONTNAME = FreeSans # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the Helvetica font. # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to # set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If the UML_LOOK tag is enabled, the fields and methods are shown inside # the class node. If there are many fields or methods and many nodes the # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS # threshold limits the number of items for each type to make the size more # managable. Set this to 0 for no limit. Note that the threshold may be # exceeded by 50% before the limit is enforced. UML_LIMIT_NUM_FIELDS = 10 # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = YES # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are svg, png, jpg, or gif. # If left blank png will be used. If you choose svg you need to set # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. # Note that this requires a modern browser other than Internet Explorer. # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible. Older versions of IE do not have SVG support. INTERACTIVE_SVG = YES # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = /usr/bin/dot # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = YES # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES libpappsomspp-0.9.20/doc/aa.txt000644 001750 001750 00000007041 14346367014 017602 0ustar00rusconirusconi000000 000000 Column Headings: 1) One-letter code 2) Three-letter code 3) Name 4) Chou-Fasman code for helix propensity 5) Chou-Fasman code for sheet propensity 6) Chou-Fasman helix propensity values 7) Chou-Fasman sheet propensity values 8) Amino acid molecular weight 9) pKa value for free amino acid carboxylate 10) pKa value for free amino acid amine 11) pKa value for amino acid side chain 12) Number of carbon atoms in amino acid 13) Number of hydrogen atoms in amino acid zwitterion 14) Number of nitrogen atoms in amino acid 15) Number of oxygen atoms in amino acid 16) Number of sulfur atoms in amino acid 17) Area in the standard state (standard state accessibility is defined as the average surface area that residue has in a ensemble of Gly-X-Gly tripeptides) 18) Average accessible area in proteins 19) Average are buried upon transfer from the standard state to the folded protein. 20) Mean fractional area loss, equal to the average area buried normalized by the standard state area 21) Residue mass 22) Monoisotopic Mass A, ALA , Alanine , H, I ,1.45 ,0.97 ,89.09 ,2.3 ,9.9 , ,3 ,7 ,1,2, ,118.1,31.5 ,86.6 ,.74,71.08 ,71.03711 C, CYS , Cysteine , i, h ,0.77 ,1.30 ,121.16 ,1.8 ,10.8 ,8.65,3 ,7 ,1,2,1,146.1,13.9 ,132.3,.91,103.14,103.00919 D, ASP , Aspartic Acid , i, i ,0.98 ,0.80 ,133.10 ,2.0 ,10.0 ,4.04,4 ,7 ,1,4, ,158.7,60.9 ,97.8 ,.62,115.09,115.02694 E, GLU , Glutamic Acid , H, B ,1.53 ,0.26 ,147.13 ,2.2 ,9.7 ,4.39,5 ,9 ,1,4, ,186.2,72.3 ,113.9,.62,129.12,129.04259 F, PHE , Phenylalanine , h, h ,1.12 ,1.28 ,165.19 ,1.8 ,9.1 , ,9 ,11,1,2, ,222.8,28.7 ,194.1,.88,147.18,147.06841 G, GLY , Glycine , B, i ,0.53 ,0.81 ,75.07 ,2.4 ,9.8 , ,2 ,5 ,1,2, ,88.1 ,25.2 ,62.9 ,.72,57.05 ,57.02146 H, HIS , Histidine , h, b ,1.24 ,0.71 ,155.16 ,1.8 ,9.2 ,6.75,6 ,9 ,3,2, ,202.5,46.7 ,155.8,.78,137.14,137.05891 I, ILE , Isoleucine , I, H ,1.00 ,1.60 ,131.17 ,2.4 ,9.7 , ,6 ,13,1,2, ,181 ,23 ,158 ,.88,113.16,113.08406 K, LYS , Lysine , I, b ,1.07 ,0.74 ,146.19 ,2.2 ,9.2 ,11.0,6 ,14,2,2, ,225.8,110.3,115.5,.52,128.17,128.09496 L, LEU , Leucine , H, h ,1.34 ,1.22 ,131.17 ,2.4 ,9.60 , ,6 ,13,1,2, ,193.1,29 ,164.1,.85,113.16,113.08406 M, MET , Methionine , h, H ,1.20 ,1.67 ,149.21 ,2.3 ,9.2 , ,5 ,11,1,2,1,203.4,30.5 ,172.9,.85,131.19,131.04049 N, ASN , Asparagine , b, b ,0.73 ,0.65 ,132.12 ,2.0 ,8.8 , ,4 ,8 ,2,3, ,165.5,62.2 ,103.3,.63,114.10,114.04293 P, PRO , Proline , B, b ,0.59 ,0.62 ,115.13 ,2.0 ,10.6 , ,5 ,9 ,1,2, ,146.8,53.7 ,92.9 ,.64,97.12 ,97.05276 Q, GLN , Glutamine , h, h ,1.17 ,1.23 ,146.15 ,2.2 ,9.1 , ,5 ,10,2,3, ,193.2,74 ,119.2,.62,128.13,128.05858 R, ARG , Arginine , i, i ,0.79 ,0.90 ,174.20 ,1.8 ,9.0 ,12.5,6 ,14,4,2, ,256 ,93.8 ,162.2,.64,156.19,156.10111 S, SER , Serine , i, b ,0.79 ,0.72 ,105.09 ,2.1 ,9.2 , ,3 ,7 ,1,3, ,129.8,44.2 ,85.6 ,.66,87.08 ,87.03203 T, THR , Threonine , i, h ,0.82 ,1.20 ,119.12 ,2.6 ,10.4 , ,4 ,9 ,1,3, ,152.5,46 ,106.5,.70,101.11,101.04768 V, VAL , Valine , h, H ,1.14 ,1.65 ,117.15 ,2.3 ,9.6 , ,5 ,11,1,2, ,164.5,23.5 ,141 ,.86,99.13 ,99.06841 W, TRP , Tryptophan , h, h ,1.14 ,1.19 ,204.22 ,2.4 ,9.4 , ,11,12,2,2, ,266.3,41.7 ,224.6,.85,186.21,186.07931 Y, TYR , Tyrosine , b, h ,0.61 ,1.29 ,181.19 ,2.20,9.1 ,9.75,9 ,11,1,3, ,236.8,59.1 ,177.7,.76,163.18,163.06333 libpappsomspp-0.9.20/doc/aamod_notation.txt000644 001750 001750 00000005122 14346367014 022213 0ustar00rusconirusconi000000 000000 A(Label:15N(1)) C(ADP-Ribosyl) C(APTA) C(Carbamidomethyl) C(Carboxymethyl) C(Cyano) C(Cys->Ala) C(Cys->Dha) C(Dabcylmaleimide) C(Dehydro) C(Delta:H(4)C(3)O(1)) C(Didehydro) C(Dioxidation) C(DTT_C) C(DTT_C:2H(6)) C(Ethanolamine) C(Ethanolyl) C(Glutathione) C(GlyGly) C(Hydroxymethyl) C(ICAT-C) C(ICAT-C:13C(9)) C(ICAT-D) C(ICAT-D:2H(8)) C(IDEnT) C(Label:15N(1)) C(Label:15N(1)+Carbamidomethyl) C(Methylthio) C(Methylthiol) C(Nethylmaleimide) C(Nethylmaleimide+water) C(NIPCAM) C(Nitrosyl) C(PEO-Iodoacetyl-LC-Biotin) C(Propionamide) C(Propionamide:13C(3)) C(Pyridylethyl) C(Sulfide) C(Trioxidation) D(Acetohydrazide) D(Cation:Na) D(Dehydrated) D(Ethanolamine) D(Label:15N(1)) D(Methyl) D(Methyl:13C(1)2H(3)) E(Acetohydrazide) E(ADP-Ribosyl) E(Carboxy) E(Cation:Na) E(Ethanolamine) E(Label:15N(1)) E(Methyl) E(Methyl:13C(1)2H(3)) F(Label:15N(1)) G(Label:15N(1)) H(Delta:H(4)C(3)O(1)) H(Hydroxymethyl) H(Label:15N(3)) H(Methyl) I(Label:15N(1)) K(Acetyl) K(Acetyl:2H(3)) K(Acetyl:2H(3)+Methyl) K(ADP-Ribosyl) K(Ammonia-loss) K(Butyryl) K(Carbamyl) K(Crotonyl) K(Delta:2H(6)C(3)) K(Delta:H(2)C(3)) K(Delta:H(4)C(3)O(1)) K(Delta:H(4)C(6)) K(Delta:H(6)C(3)) K(Delta:H(6)C(6)O(1)) K(Delta:H(8)C(6)O(2)) K(Dimethyl) K(Dimethyl:13C(2)2H(4)) K(Dimethyl:2H4) K(Formyl) K(Guanidinyl) K(Hydroxymethyl) K(iTRAQ4plex) K(iTRAQ8plex) K(Label:13C(6)) K(Label:13C(6)15N(2)) K(Label:13C(6)15N(2)+Carbamyl) K(Label:15N(2)) K(Label:2H(4)) K(Methyl) K(Oxidation) K(Piperidine) K(Propionyl) K(Thioacyl) K(TMT) K(TMT10plex) K(TMT2plex) K(TMT6plex) L(Label:13C(6)) L(Label:13C(6)15N(1)) L(Label:15N(1)) L(Label:2H(3)) M(Dethiomethyl) M(Dioxidation) M(Label:15N(1)) M(Label:15N(1)+Oxidation) M(Oxidation) N(ADP-Ribosyl) N(AMTzGalNAcGlcNAc) N(Asn->Succinimide) N(Deamidated) N(GirardT) N(Hydroxymethyl) N(Label:15N(1)+Deamidated) N(Label:15N(2)) P(Label:15N(1)) P(Oxidation) Q(Deamidated) Q(Hydroxymethyl) Q(Label:15N(2)) R(Acetyl) R(ADP-Ribosyl) R(Ammonia-loss) R(HPG) R(Hydroxymethyl) R(Hydroxyphenylglyoxal) R(Label:13C(6)) R(Label:13C(6)15N(4)) R(Label:15N(4)) R(Methyl) S(Acetyl) S(ADP-Ribosyl) S(AMTzGalNAcGlcNAc) S(Dehydrated) S(DTT_ST) S(DTT_ST:2H(6)) S(Formyl) S(Label:15N(1)) S(Methyl) S(Phospho) S(Thiophospho) T(Acetyl) T(AMTzGalNAcGlcNAc) T(Dehydrated) T(DTT_ST) T(DTT_ST:2H(6)) T(Formyl) T(Label:15N(1)) T(Methyl) T(Phospho) T(Thiophospho) V(Label:15N(1)) W(Carboxy) W(Dioxidation) W(Hydroxymethyl) W(Label:15N(2)) W(Oxidation) W(Quinone) W(Trp->Hydroxykynurenin) W(Trp->Kynurenin) W(Trp->Oxolactone) Y(Amino) Y(Hydroxymethyl) Y(iTRAQ4plex) Y(iTRAQ8plex) Y(Label:15N(1)) Y(Nitro) Y(Oxidation) Y(Phospho) Y(Sulfo) Y(TMT) Y(TMT10plex) Y(TMT2plex) Y(TMT6plex) libpappsomspp-0.9.20/doc/abundance.txt000644 001750 001750 00000000314 14346367014 021135 0ustar00rusconirusconi000000 000000 https://proteabio.com/resources/tools/Isotopic+Masses+and+Natural+Abundances http://www.sisweb.com/referenc/source/exactmaa.htm http://education.expasy.org/student_projects/isotopident/htdocs/motza.htmllibpappsomspp-0.9.20/doc/brainstorming.txt000644 001750 001750 00000000057 14346367014 022077 0ustar00rusconirusconi000000 000000 PeptideStartStopProt => (PeptideSp + PsmSp) libpappsomspp-0.9.20/maintainer-scripts/000755 001750 001750 00000000000 14533473271 021526 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/maintainer-scripts/clang-format.sh000755 001750 001750 00000000177 14346367014 024443 0ustar00rusconirusconi000000 000000 #!/bin/sh for file in $(find . -name '*' | egrep ".*\.(h|cpp)$") do echo "Formatting ${file}" clang-format -i ${file} done libpappsomspp-0.9.20/maintainer-scripts/makeGitArchive.sh000755 001750 001750 00000000162 14346367014 024746 0ustar00rusconirusconi000000 000000 #!/bin/sh git archive --format=tar.gz --prefix=libodsstream-0.7.5/ -o ../tarballs/libodsstream-0.7.5.tar.gz HEAD libpappsomspp-0.9.20/maintainer-scripts/makeOrigTarball.py000755 001750 001750 00000013244 14346367014 025146 0ustar00rusconirusconi000000 000000 #!/usr/bin/env python3 import os import sys import argparse import re import shutil import subprocess import shlex import copy import makeOrigTarballFunctions as motf # First of all check that we are in the development main source directory, that # is, that the current directory contains the "debian" directory. if not os.path.exists("debian"): print('''No debian directory found. Please change directory to the top source directory''') exit(1); # The main directory will be the directory that is upstream of "development". mainDir = os.path.normpath(os.getcwd() + "/.."); # print("mainDir:" + mainDir + "\n"); tarballDir = mainDir + "/tarballs"; buildDir = mainDir + "/build-area"; devDir = mainDir + "/development"; debianDir = devDir + "/debian"; parser = argparse.ArgumentParser() parser.add_argument("-p", "--project", nargs=1, required = True, help='''Project name, like cb2bib or minexpert'''); parser.add_argument("-d", "--withDebianDir", action='store_true', help='''Make sure the debian directory is exported along with the source tarball stuff.'''); parser.add_argument("-y", "--assumeYes", action='store_true', help='''Assume Yes is answered.'''); args = parser.parse_args() # project is gotten as a string list, even if it contains a single item. projectName = args.project[0]; withDebianDir = args.withDebianDir; # print(withDebianDir); assumeYes = args.assumeYes; os.chdir(devDir); # Check that we are in the master branch or alert the user. completedProcess = subprocess.run(["git", "status"], stdout=subprocess.PIPE) completedProcess.check_returncode(); output = completedProcess.stdout.decode("utf-8"); print("status:" + output); # From the output, only get the name of the branch: onBranchLines = re.findall("^On branch.*$", output, re.MULTILINE) onBranchLine = onBranchLines[0]; # print(onBranchLine); # Now get the branch name. gitBranch = re.compile("^On branch ").sub('', onBranchLine) # print(gitBranch); # We must be on master: if gitBranch != "master": print("Error: current branch is not \"master\". Please check it out first.\n"); exit(1); # Now check that we have a clean status: linePattern = "nothing to commit, working tree clean"; # print(linePattern); treeCleanLines = re.findall(linePattern, output, re.MULTILINE); if len(treeCleanLines) == 0: print("Error: current branch is not clean. Please, commit first.\n"); exit(1); treeCleanLine = treeCleanLines[0]; # print(treeCleanLine); if treeCleanLine != linePattern: print("Error: current branch is not clean. Please, commit first.\n"); exit(1); # Now get the VERSION of the project from the main CMakeLists.txt file. But not # all projects do have that file. So be careful. cmakeFilePath = devDir + "/CMakeLists.txt"; cmakeVersionNumber = ""; if os.path.exists(cmakeFilePath): cmakeVersionNumber = motf.versionFromCMakeLists(cmakeFilePath); print("Version number from CMakeLists.txt: " + cmakeVersionNumber); # Now get the VERSION from the debian/changelog: (UPVER, DEBVER) = motf.upstreamVersionFromDebianChangelog(projectName, debianDir + "/changelog"); # print(UPVER,DEBVER); message = "Making .tar.gz for (UPVER = {UPVER}) and (DEBVER = {DEBVER}). Is this correct ?".format(UPVER = UPVER, DEBVER = DEBVER); answer = input(message + " (RETURN | Ctrl-C)"); if cmakeVersionNumber is not None: if cmakeVersionNumber != UPVER: answer = input('''The CMakeLists.txt-based VERSION and the debian/changelog-based upstream version do not match. Continue nonetheless? (continue | Ctrl-C):'''); if answer != "continue": print("Program aborted by user\n"); exit(1); # We have now all the version numbers required to craft the orig tarball # filename: srcTarball = "{projectName}-{UPVER}.tar".format(projectName = projectName, UPVER = UPVER); origTarball = "{projectName}_{UPVER}.orig.tar".format(projectName = projectName, UPVER = UPVER); print("Making {tarballDir}/{srcTarball} ...\n".format(tarballDir = tarballDir, srcTarball = srcTarball)); prefix = "{projectName}-{UPVER}".format(projectName = projectName, UPVER = UPVER); commandLine = '''git archive --format=tar --verbose --prefix={prefix}/ {gitBranch}'''.format(projectName = projectName, UPVER = UPVER, gitBranch = gitBranch, prefix = prefix); print("commandLine: " + commandLine); args = shlex.split(commandLine); # Redirection of the git archive command to the outputFile: outputFile = open(tarballDir + "/" + srcTarball, 'w'); completedProcess = subprocess.run(args, stdout=outputFile); outputFile.close(); completedProcess.check_returncode(); # At this point we have the proper source tarball. Check if we have to remove # the debian directory. if withDebianDir == False: commandLine = "tar vf " + tarballDir + "/" + srcTarball + " --delete " + prefix + "/debian"; args = shlex.split(commandLine); completedProcess = subprocess.run(args); completedProcess.check_returncode(); # Finally, compress the tar file. commandLine = '''gzip {0}/{1}'''.format(tarballDir, srcTarball); args = shlex.split(commandLine); completedProcess = subprocess.run(args); completedProcess.check_returncode(); print("\nCreated {0}/{1}.gz\n".format(tarballDir, srcTarball)); # Now create two symbolic links: src = "{0}/{1}.gz".format(tarballDir, srcTarball); dest = "{0}/{1}.gz".format(tarballDir, origTarball); if os.path.exists(dest): os.remove(dest); print("Creating symbolic link: " + src + " --> " + dest + "\n"); os.symlink(src, dest); src = "{0}/{1}.gz".format(tarballDir, srcTarball); dest = "{0}/{1}.gz".format(mainDir, origTarball); if os.path.exists(dest): os.remove(dest); print("Creating symbolic link: " + src + " --> " + dest + "\n"); os.symlink(src, dest); libpappsomspp-0.9.20/maintainer-scripts/makeOrigTarballFunctions.py000644 001750 001750 00000005262 14346367014 027035 0ustar00rusconirusconi000000 000000 #!/usr/bin/env python3 import os import argparse import re import shutil import subprocess import copy def versionFromCMakeLists(filePath): if not os.path.exists(filePath): raise NameError('File path not found'); textFile = open(filePath, 'rt'); contents = textFile.read(2000); textFile.close(); versionLines = re.findall('set\s*\(VERSION.*\)', contents, re.MULTILINE); # print(versionLines); if not len(versionLines): raise NameError('Failed to find VERSION statement'); versionLine = versionLines[0]; pattern = re.compile('set\(VERSION\s*([0-9.]+)\).*$'); cmakeVersionNumber = ""; match = pattern.match(versionLine); if match is not None: cmakeVersionNumber = match[1]; else: raise NameError('Failed to extract VERSION number'); # print("Version number from CMakeLists.txt: " + cmakeVersionNumber); return(cmakeVersionNumber); def upstreamVersionFromDebianChangelog(projectName, filePath): if not os.path.exists(filePath): raise NameError('File path not found'); textFile = open(filePath, 'rt'); contents = textFile.read(100); textFile.close(); patternString = "^\s*" + projectName + "\s*\(.*$"; # print("patternString: " + patternString); versionLines = re.findall(patternString, contents, re.MULTILINE); # print(versionLines); if not len(versionLines): raise NameError('Failed to find source package version statement'); # Only the first occurrence is the latest. versionLine = versionLines[0]; # print("Version line: " + versionLine); pattern = re.compile("^\s*" + projectName + "\s*\((.+)\).*$"); upstreamDebianVersionNumber = ""; match = pattern.match(versionLine); if match is not None: upstreamDebianVersionNumber = match[1]; else: raise NameError('Failed to extract upstream-debian package version'); # print("Upstream-debian Version number from debian/changelog: " + upstreamDebianVersionNumber); # The string is like 4.1.0-1, but we want to separate the -1 and thus get # the upstream version number and the debian package version number an # return them into a tuple. pattern = re.compile("(^.*)-([0-9]{1,2})$"); match = pattern.match(upstreamDebianVersionNumber); if match is not None: # print(match[0]); upstreamVersionNumber = match[1]; # print("upstreamVersionNumber: " + upstreamVersionNumber); debianVersionNumber = match[2]; # print("debianVersionNumber: " + debianVersionNumber); return (upstreamVersionNumber, debianVersionNumber); else: raise NameError('Failed to extract the debian package version number'); libpappsomspp-0.9.20/maintainer-scripts/sync-header-files-to-system.sh000755 001750 001750 00000000615 14346367014 027332 0ustar00rusconirusconi000000 000000 #!/bin/sh if [ ! -d "pappsomspp" ] then echo "Please, this works only if you are located in the src directory that" echo "should contain the pappsomspp directory" exit 1 fi for file in $(find -name "*.h") do if [ ! -d /usr/include/$(dirname ${file}) ] then mkdir -p /usr/include/$(dirname ${file}) fi cp -v ${file} /usr/include/$(dirname ${file})/$(basename ${file}) done libpappsomspp-0.9.20/src/000755 001750 001750 00000000000 14533473271 016501 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/000755 001750 001750 00000000000 14533473271 020703 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/amino_acid/000755 001750 001750 00000000000 14533473271 022766 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aacode.cpp000644 001750 001750 00000010773 14526455546 024725 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aacode.cpp * \date 03/05/2023 * \author Olivier Langella * \brief give an integer code to each amino acid */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "aacode.h" #include "../exception/exceptionnotfound.h" #include "../exception/exceptionoutofrange.h" using namespace pappso; AaCode::AaCode() { m_asciiTable.resize(90, 0); m_aaCollection.push_back(Aa('A')); m_aaCollection.push_back(Aa('C')); m_aaCollection.push_back(Aa('D')); m_aaCollection.push_back(Aa('E')); m_aaCollection.push_back(Aa('F')); m_aaCollection.push_back(Aa('G')); m_aaCollection.push_back(Aa('H')); m_aaCollection.push_back(Aa('I')); m_aaCollection.push_back(Aa('K')); m_aaCollection.push_back(Aa('M')); m_aaCollection.push_back(Aa('N')); m_aaCollection.push_back(Aa('P')); m_aaCollection.push_back(Aa('Q')); m_aaCollection.push_back(Aa('R')); m_aaCollection.push_back(Aa('S')); m_aaCollection.push_back(Aa('T')); m_aaCollection.push_back(Aa('V')); m_aaCollection.push_back(Aa('W')); m_aaCollection.push_back(Aa('Y')); updateNumbers(); } pappso::AaCode::AaCode(const pappso::AaCode &other) { m_asciiTable = other.m_asciiTable; m_aaCollection = other.m_aaCollection; } AaCode::~AaCode() { } std::size_t pappso::AaCode::getSize() const { return 19; } uint8_t pappso::AaCode::getAaCode(char aa_letter) const { // qDebug() << aa_letter << " " << (uint8_t)aa_letter; // qDebug() << m_asciiTable[77]; return m_asciiTable[aa_letter]; } const pappso::Aa & pappso::AaCode::getAa(char aa_letter) const { auto it = std::find_if( m_aaCollection.begin(), m_aaCollection.end(), [aa_letter](const Aa &aa) { if(aa.getLetter() == aa_letter) return true; return false; }); if(it != m_aaCollection.end()) { return *it; } throw pappso::ExceptionNotFound( QObject::tr("error, %1 amino acid not found in m_aaCollection") .arg(aa_letter)); } const pappso::Aa & pappso::AaCode::getAa(uint8_t aa_code) const { if(aa_code == 0) { throw pappso::ExceptionOutOfRange( QObject::tr("error, 0 is null : no amino acid").arg(aa_code)); } else if(aa_code > 19) { throw pappso::ExceptionOutOfRange( QObject::tr("error, %1 amino acid code not found in m_aaCollection") .arg(aa_code)); } return m_aaCollection[aa_code - 1]; } void pappso::AaCode::addAaModification(char aa_letter, pappso::AaModificationP aaModification) { auto it = std::find_if( m_aaCollection.begin(), m_aaCollection.end(), [aa_letter](const Aa &aa) { if(aa.getLetter() == aa_letter) return true; return false; }); if(it != m_aaCollection.end()) { it->addAaModification(aaModification); } else { throw pappso::ExceptionNotFound( QObject::tr("error, %1 amino acid not found in m_aaCollection") .arg(aa_letter)); } updateNumbers(); } void pappso::AaCode::updateNumbers() { std::sort( m_aaCollection.begin(), m_aaCollection.end(), [](const Aa &aa1, const Aa &aa2) { return aa1.getMass() < aa2.getMass(); }); std::size_t n = 1; for(const Aa &aa : m_aaCollection) { // qDebug() << aa.getLetter() << " " << n; m_asciiTable[aa.getLetter()] = n; n++; } m_asciiTable['L'] = m_asciiTable['I']; updateMass(); } void pappso::AaCode::updateMass() { m_massCollection.resize(1); for(const Aa &aa : m_aaCollection) { m_massCollection.push_back(aa.getMass()); } } double pappso::AaCode::getMass(uint8_t aa_code) const { return m_massCollection[aa_code]; } libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aacode.h000644 001750 001750 00000004240 14444327362 024353 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aacode.h * \date 03/05/2023 * \author Olivier Langella * \brief give an integer code to each amino acid */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include "../exportinmportconfig.h" #include #include "aa.h" namespace pappso { /** * @brief collection of integer code for each amino acid * 0 => null * 1 to 20 => amino acid sorted by there mass (lower to higher). Leucine is * replaced by Isoleucine */ class PMSPP_LIB_DECL AaCode { public: /** * Default constructor */ AaCode(); /** * Default copy constructor */ AaCode(const AaCode &other); /** * Destructor */ ~AaCode(); uint8_t getAaCode(char aa_letter) const; const Aa &getAa(char aa_letter) const; const Aa &getAa(uint8_t aa_code) const; double getMass(uint8_t aa_code) const; void addAaModification(char aa_letter, AaModificationP aaModification); std::size_t getSize() const; private: /** @brief give a number (the code) to each amino acid sorted by mass */ void updateNumbers(); /** @brief update mass cache */ void updateMass(); private: std::vector m_asciiTable; std::vector m_aaCollection; std::vector m_massCollection; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aastringcodec.cpp000644 001750 001750 00000013740 14526455546 026314 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aastringcodec.cpp * \date 09/05/2023 * \author Olivier Langella * \brief code and decodefrom amino acid string to integer */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "aastringcodec.h" #include using namespace pappso; AaStringCodec::AaStringCodec(const AaCode &aaCode) : m_aaCode(aaCode) { m_base = m_aaCode.getSize() + 1; m_units.resize(10); uint32_t unit = 1; for(auto &this_unit : m_units) { this_unit = unit; unit *= m_base; } } AaStringCodec::AaStringCodec(const AaStringCodec &other) : m_aaCode(other.m_aaCode) { m_base = other.m_base; m_units = other.m_units; } AaStringCodec::~AaStringCodec() { } uint32_t pappso::AaStringCodec::code(const QString &aa_str) const { std::size_t pos = 0; uint32_t code = 0; for(auto &aa_char : aa_str) { code += m_aaCode.getAaCode(aa_char.toLatin1()) * m_units[pos]; pos++; } return code; } uint32_t pappso::AaStringCodec::codeLlc(const QString &aa_str) const { std::vector llc_vec; for(auto &aa_char : aa_str) { llc_vec.push_back(m_aaCode.getAaCode(aa_char.toLatin1())); } std::sort(llc_vec.begin(), llc_vec.end(), std::greater()); std::size_t pos = 0; uint32_t code = 0; for(auto &aa_code : llc_vec) { code += (uint32_t)aa_code * m_units[pos]; pos++; } return code; } uint32_t pappso::AaStringCodec::codeLlc(std::vector::const_iterator it_begin, std::size_t size) const { std::vector llc_vec; for(std::size_t i = 0; i < size; i++) { llc_vec.push_back(*it_begin); it_begin++; } std::sort(llc_vec.begin(), llc_vec.end(), std::greater()); std::size_t pos = 0; uint32_t code = 0; for(auto &aa_code : llc_vec) { code += (uint32_t)aa_code * m_units[pos]; pos++; } return code; } QString pappso::AaStringCodec::decode(uint32_t code) const { QString aa_suite; while(code > 0) { aa_suite.append(m_aaCode.getAa((uint8_t)(code % m_base)).getLetter()); code /= m_base; } // qDebug() << aa_suite; return aa_suite; } double pappso::AaStringCodec::getMass(uint32_t code) const { double mass = 0; while(code > 0) { mass += m_aaCode.getMass((uint8_t)(code % m_base)); code /= m_base; } return mass; } std::vector pappso::AaStringCodec::generateLlcCodeListUpToMaxPeptideSize( std::size_t size) const { std::vector llc_list; if(size == 0) return llc_list; std::vector model; for(uint8_t p = 1; p <= size; p++) { model.resize(p, 0); for(uint8_t i = 1; i < m_base; i++) { model[0] = i; if(p == 1) { llc_list.push_back(generateCodeMassFromModel(model)); } else { recGenerateModel(llc_list, model, 1); } } } return llc_list; } std::vector pappso::AaStringCodec::generateLlcCodeListByMaxPeptideSize( std::size_t size) const { std::vector llc_list; if(size == 0) return llc_list; std::vector model; model.resize(size, 0); for(uint8_t i = 1; i < m_base; i++) { model[0] = i; recGenerateModel(llc_list, model, 1); } return llc_list; } void pappso::AaStringCodec::recGenerateModel(std::vector &glist, std::vector &model, std::size_t position) const { if(position == model.size()) return; if(position == model.size() - 1) { uint8_t max = model[position - 1]; for(uint8_t i = 1; i <= max; i++) { model[position] = i; glist.push_back(generateCodeMassFromModel(model)); } } else { uint8_t max = model[position - 1]; for(uint8_t i = 1; i <= max; i++) { model[position] = i; recGenerateModel(glist, model, position + 1); } } } pappso::CodeToMass pappso::AaStringCodec::generateCodeMassFromModel( const std::vector &model) const { CodeToMass code_mass; std::size_t pos = 0; for(auto aacode : model) { code_mass.mass += m_aaCode.getMass(aacode); code_mass.code += (uint32_t)aacode * m_units[pos]; pos++; } // qDebug() << code_mass.code << " " << code_mass.mass; return code_mass; } std::size_t pappso::AaStringCodec::getLimitMax(std::size_t size) const { std::size_t code = 0; for(std::size_t pos = 0; pos < size; pos++) { code += (std::size_t)(m_base - 1) * (std::size_t)m_units[pos]; } return code; } bool pappso::AaStringCodec::codeOnlyContains(uint32_t code, const std::vector &aa_ok) const { while(code > 0) { if(std::find(aa_ok.begin(), aa_ok.end(), (uint8_t)(code % m_base)) == aa_ok.end()) return false; code /= m_base; } return true; } const pappso::AaCode & pappso::AaStringCodec::getAaCode() const { return m_aaCode; } libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aastringcodec.h000644 001750 001750 00000006664 14444327362 025761 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aastringcodec.h * \date 09/05/2023 * \author Olivier Langella * \brief code and decodefrom amino acid string to integer */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include "../exportinmportconfig.h" #include "aacode.h" namespace pappso { class AaStringCodec; /** \brief shared pointer on a Protein object */ typedef std::shared_ptr AaStringCodecSp; struct CodeToMass { uint32_t code = 0; double mass = 0; }; /** * @brief */ class PMSPP_LIB_DECL AaStringCodec { public: /** * Default constructor */ AaStringCodec(const AaCode &aaCode); /** * Copy constructor * * @param other TODO */ AaStringCodec(const AaStringCodec &other); /** * Destructor */ ~AaStringCodec(); /** @brief get the maximum code number for a given peptide size */ std::size_t getLimitMax(std::size_t size) const; /** @brief get integer from amino acide suite string */ uint32_t code(const QString &aa_str) const; /** @brief get the lowest common denominator integer from amino acide suite * string */ uint32_t codeLlc(const QString &aa_str) const; /** @brief get the lowest common denominator integer from amino acide code * vector */ uint32_t codeLlc(std::vector::const_iterator it_begin, std::size_t size) const; QString decode(uint32_t code) const; double getMass(uint32_t code) const; /** @brief generates all possible combination of llc code mass * llc : the lowest common code denominator for a given aa formula * * generate from peptide size =1 to peptide size */ std::vector generateLlcCodeListUpToMaxPeptideSize(std::size_t size) const; /** @brief generates all possible combination of llc code mass * llc : the lowest common code denominator for a given aa formula * * generate only for this peptide size */ std::vector generateLlcCodeListByMaxPeptideSize(std::size_t size) const; bool codeOnlyContains(uint32_t code, const std::vector &aa_ok) const; const AaCode &getAaCode() const; private: /** @brief recursive method to generate models */ void recGenerateModel(std::vector &glist, std::vector &model, std::size_t position) const; CodeToMass generateCodeMassFromModel(const std::vector &model) const; private: uint32_t m_base = 0; const AaCode &m_aaCode; std::vector m_units; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aastringcodemassmatching.cpp000644 001750 001750 00000010010 14526455546 030533 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aastringcodemassmatching.cpp * \date 10/05/2023 * \author Olivier Langella * \brief convert mass list to amino acid string code list */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "aastringcodemassmatching.h" #include "aastringcodec.h" #include using namespace pappso; AaStringCodeMassMatching::AaStringCodeMassMatching(const AaCode &aa_code, std::size_t model_max_size, PrecisionPtr precision) : m_aaCode(aa_code), m_aaCodec(aa_code) { m_base = m_aaCode.getSize() + 1; std::vector code_to_mass = m_aaCodec.generateLlcCodeListUpToMaxPeptideSize(model_max_size); for(auto &code_mass : code_to_mass) { aaCodeAndMassRange aaCodeMassRange; aaCodeMassRange.code = code_mass.code; double delta = precision->delta(code_mass.mass); aaCodeMassRange.mz_range_low = code_mass.mass - delta; aaCodeMassRange.mz = code_mass.mass; aaCodeMassRange.mz_range_up = code_mass.mass + delta; m_codeMassList.push_back(aaCodeMassRange); } std::sort(m_codeMassList.begin(), m_codeMassList.end(), [](const aaCodeAndMassRange &a, const aaCodeAndMassRange &b) { return a.mz_range_low < b.mz_range_low; }); } AaStringCodeMassMatching::AaStringCodeMassMatching( const AaStringCodeMassMatching &other) : m_aaCode(other.m_aaCode), m_aaCodec(other.m_aaCode) { m_base = m_aaCode.getSize() + 1; } AaStringCodeMassMatching::~AaStringCodeMassMatching() { } std::vector pappso::AaStringCodeMassMatching::getAaCodeFromMassList( std::vector &mass_list) const { std::sort(mass_list.begin(), mass_list.end(), [](double a, double b) { return a < b; }); std::vector aa_code_list; auto it_aacode = m_codeMassList.begin(); auto it_mass = mass_list.begin(); while((it_aacode != m_codeMassList.end()) && (it_mass != mass_list.end())) { if(*it_mass < it_aacode->mz_range_low) { it_mass++; } else { if(*it_mass <= it_aacode->mz_range_up) { aa_code_list.push_back(it_aacode->code); it_aacode++; } else { it_aacode++; } } } return aa_code_list; } std::vector pappso::AaStringCodeMassMatching::filterCodeList( std::vector &code_list) const { std::sort(code_list.begin(), code_list.end(), [](uint32_t a, uint32_t b) { return a < b; }); std::vector filtered_aa_code_list; std::vector aa_ok; auto it = code_list.begin(); while(*it < m_base) { aa_ok.push_back((uint8_t)*it); // qDebug() << (uint8_t)*it << " " // << m_aaCode.getAa((uint8_t)*it).getLetter(); it++; } for(uint32_t code : code_list) { if(m_aaCodec.codeOnlyContains(code, aa_ok)) { filtered_aa_code_list.push_back(code); } } return filtered_aa_code_list; } libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aastringcodemassmatching.h000644 001750 001750 00000005076 14513233232 030176 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aastringcodemassmatching.h * \date 10/05/2023 * \author Olivier Langella * \brief convert mass list to amino acid string code list */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include "../exportinmportconfig.h" #include "aastringcodec.h" #include "../mzrange.h" namespace pappso { /** * @brief */ class PMSPP_LIB_DECL AaStringCodeMassMatching { public: /** * Default constructor */ AaStringCodeMassMatching(const AaCode &aa_code, std::size_t model_max_size, PrecisionPtr precision); /** * Copy constructor * * @param other TODO */ AaStringCodeMassMatching(const AaStringCodeMassMatching &other); /** * Destructor */ ~AaStringCodeMassMatching(); /** @brief get amino acid string code from mass delta list * mass delta is a list of masses differences found in a spectrum * see @file /pappsomspp/filers/filtepeakdelta.h functions */ std::vector getAaCodeFromMassList(std::vector &mass_list) const; /** @brief filter a list of amino acid string code * find elementary amino acids (one base only) in the list and retrieve 2 or * more amino acid string containing only basic aminio acid found */ std::vector filterCodeList(std::vector &code_list) const; private: const AaCode &m_aaCode; AaStringCodec m_aaCodec; uint32_t m_base = 0; struct aaCodeAndMassRange { std::uint32_t code = 0; double mz_range_low = 0; double mz = 0; double mz_range_up = 0; }; std::vector m_codeMassList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/amino_acid/atomnumberinterface.h000644 001750 001750 00000002741 14346367014 027174 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../types.h" namespace pappso { class AtomNumberInterface { public: /** \brief get the number of atom C, O, N, H in the molecule */ virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const = 0; /** \brief get the number of isotopes C13, H2, O17, O18, N15, S33, S34, S36 in * the molecule */ virtual int getNumberOfIsotope(Isotope isotope) const = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aabase.cpp000644 001750 001750 00000035724 14531114113 024702 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aaBase.cpp * \date 7/3/2015 * \author Olivier Langella * \brief private amino acid model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include "aabase.h" #include "../exception/exceptionnotfound.h" using namespace std; namespace pappso { AaBase::AaBase(char aa_letter) : m_aaLetter(aa_letter) { /* if (AaBase::_aa_mass_map.empty()) { AaBase::static_builder(); } */ if(m_aaMassMap.find(aa_letter) == m_aaMassMap.end()) { throw ExceptionNotFound( QObject::tr("amino acid %1 not found").arg(aa_letter)); } } AaBase::AaBase(AminoAcidChar aa_char) : m_aaLetter((char)aa_char) { } AaBase::AaBase(const AaBase &aa) : m_aaLetter(aa.m_aaLetter) { } AaBase::~AaBase() { // TODO Auto-generated destructor stub } AaBase::AminoAcidCharList AaBase::m_aminoAcidCharList = [] { AminoAcidCharList ret = { AminoAcidChar::alanine, AminoAcidChar::arginine, AminoAcidChar::cysteine, AminoAcidChar::aspartic_acid, AminoAcidChar::glutamic_acid, AminoAcidChar::phenylalanine, AminoAcidChar::glycine, AminoAcidChar::histidine, AminoAcidChar::isoleucine, AminoAcidChar::lysine, AminoAcidChar::leucine, AminoAcidChar::methionine, AminoAcidChar::asparagine, AminoAcidChar::proline, AminoAcidChar::glutamine, AminoAcidChar::serine, AminoAcidChar::threonine, AminoAcidChar::valine, AminoAcidChar::tryptophan, AminoAcidChar::tyrosine, AminoAcidChar::selenocysteine, AminoAcidChar::pyrrolysine, }; return ret; }(); AaBase::AaMassMap AaBase::m_aaMassMap = [] { AaMassMap ret; // populate ret // http://education.expasy.org/student_projects/isotopident/htdocs/aa-list.html // C11H12N2O2 ret.insert(std::pair( 'W', pappso_double(MASSCARBON * 11 + MPROTIUM * 10 + MASSNITROGEN * 2 + MASSOXYGEN * 1))); // C2H5NO2 ret.insert(std::pair( 'G', pappso_double(MASSCARBON * 2 + MPROTIUM * 3 + MASSNITROGEN * 1 + MASSOXYGEN * 1))); // C3H7NO2 ret.insert(std::pair( 'A', pappso_double(MASSCARBON * 3 + MPROTIUM * 5 + MASSNITROGEN * 1 + MASSOXYGEN * 1))); // C3H7NO3 ret.insert(std::pair( 'S', pappso_double(MASSCARBON * 3 + MPROTIUM * 5 + MASSNITROGEN * 1 + MASSOXYGEN * 2))); // C5H9NO2 ret.insert(std::pair( 'P', pappso_double(MASSCARBON * 5 + MPROTIUM * 7 + MASSNITROGEN * 1 + MASSOXYGEN * 1))); // C5H11NO2 ret.insert(std::pair( 'V', pappso_double(MASSCARBON * 5 + MPROTIUM * 9 + MASSNITROGEN * 1 + MASSOXYGEN * 1))); // C4H9NO3 ret.insert(std::pair( 'T', pappso_double(MASSCARBON * 4 + MPROTIUM * 7 + MASSNITROGEN * 1 + MASSOXYGEN * 2))); // C6H13NO2 ret.insert(std::pair( 'L', pappso_double(MASSCARBON * 6 + MPROTIUM * 11 + MASSNITROGEN * 1 + MASSOXYGEN * 1))); // C6H13NO2 ret.insert(std::pair( 'I', pappso_double(MASSCARBON * 6 + MPROTIUM * 11 + MASSNITROGEN * 1 + MASSOXYGEN * 1))); // C4H8N2O3 ret.insert(std::pair( 'N', pappso_double(MASSCARBON * 4 + MPROTIUM * 6 + MASSNITROGEN * 2 + MASSOXYGEN * 2))); // C4H7NO4 ret.insert(std::pair( 'D', pappso_double(MASSCARBON * 4 + MPROTIUM * 5 + MASSNITROGEN * 1 + MASSOXYGEN * 3))); // C6H14N2O2 ret.insert(std::pair( 'K', pappso_double(MASSCARBON * 6 + MPROTIUM * 12 + MASSNITROGEN * 2 + MASSOXYGEN * 1))); // C5H10N2O3 ret.insert(std::pair( 'Q', pappso_double(MASSCARBON * 5 + MPROTIUM * 8 + MASSNITROGEN * 2 + MASSOXYGEN * 2))); // C5H9NO4 ret.insert(std::pair( 'E', pappso_double(MASSCARBON * 5 + MPROTIUM * 7 + MASSNITROGEN * 1 + MASSOXYGEN * 3))); // C5H11NO2S ret.insert(std::pair( 'M', pappso_double(MASSCARBON * 5 + MPROTIUM * 9 + MASSNITROGEN * 1 + MASSOXYGEN * 1 + MASSSULFUR))); // $arrret['m'] = 147.04; #METHIONINE OXIDEE (+16) // case 'm': // mass = (float) 131.0404; // addModification((float) 15.994915); // C6H9N3O2 ret.insert(std::pair( 'H', pappso_double(MASSCARBON * 6 + MPROTIUM * 7 + MASSNITROGEN * 3 + MASSOXYGEN * 1))); // C9H11NO2 ret.insert(std::pair( 'F', pappso_double(MASSCARBON * 9 + MPROTIUM * 9 + MASSNITROGEN * 1 + MASSOXYGEN * 1))); // C6H14N4O2 ret.insert(std::pair( 'R', pappso_double(MASSCARBON * 6 + MPROTIUM * 12 + MASSNITROGEN * 4 + MASSOXYGEN * 1))); // C3H7NO2S ret.insert(std::pair( 'C', pappso_double(MASSCARBON * 3 + MPROTIUM * 5 + MASSNITROGEN * 1 + MASSOXYGEN * 1 + MASSSULFUR))); // mass = (float) 161.01; // CYSTEINE CARBAMIDOMETHYLE // addModification((float) 57.021464); // C9H11NO3 ret.insert(std::pair( 'Y', pappso_double(MASSCARBON * 9 + MPROTIUM * 9 + MASSNITROGEN * 1 + MASSOXYGEN * 2))); // Pyrrolysine C12H21N3O3 ret.insert(std::pair( 'O', pappso_double(MASSCARBON * 12 + MPROTIUM * 21 + MASSNITROGEN * 3 + MASSOXYGEN * 3))); // Selenocysteine C3H7NO2Se ret.insert(std::pair( 'U', pappso_double(MASSCARBON * 3 + MPROTIUM * 7 + MASSNITROGEN * 1 + MASSOXYGEN * 2 + MASSSELENIUM))); // 168.018678469607 // ret.insert(std::pair('U', pappso_double(168.964203))); //_aa_mass_map.insert( // std::pair('X', pappso_double(103.00919))); return ret; }(); AaBase::AaIntMap AaBase::m_aaNumberOfCarbonMap = [] { AaIntMap ret; // populate ret ret.insert(std::pair('W', 11)); ret.insert(std::pair('G', 2)); ret.insert(std::pair('A', 3)); ret.insert(std::pair('S', 3)); ret.insert(std::pair('P', 5)); ret.insert(std::pair('V', 5)); ret.insert(std::pair('T', 4)); ret.insert(std::pair('L', 6)); ret.insert(std::pair('I', 6)); ret.insert(std::pair('N', 4)); ret.insert(std::pair('D', 4)); ret.insert(std::pair('K', 6)); ret.insert(std::pair('Q', 5)); ret.insert(std::pair('E', 5)); ret.insert(std::pair('M', 5)); ret.insert(std::pair('H', 6)); ret.insert(std::pair('F', 9)); ret.insert(std::pair('R', 6)); ret.insert(std::pair('C', 3)); ret.insert(std::pair('Y', 9)); // Selenocysteine C3H7NO2Se ret.insert(std::pair('U', 3)); // Pyrrolysine C12H21N3O3 ret.insert(std::pair('O', 12)); return ret; }(); AaBase::AaIntMap AaBase::m_aaNumberOfHydrogenMap = [] { AaIntMap ret; // populate ret ret.insert(std::pair('A', 5)); ret.insert(std::pair('C', 5)); ret.insert(std::pair('D', 5)); ret.insert(std::pair('E', 7)); ret.insert(std::pair('F', 9)); ret.insert(std::pair('G', 3)); ret.insert(std::pair('H', 7)); ret.insert(std::pair('I', 11)); ret.insert(std::pair('K', 12)); ret.insert(std::pair('L', 11)); ret.insert(std::pair('M', 9)); ret.insert(std::pair('N', 6)); ret.insert(std::pair('P', 7)); ret.insert(std::pair('Q', 8)); ret.insert(std::pair('R', 12)); ret.insert(std::pair('S', 5)); ret.insert(std::pair('T', 7)); ret.insert(std::pair('V', 9)); ret.insert(std::pair('W', 10)); ret.insert(std::pair('Y', 9)); // Selenocysteine C3H7NO2Se ret.insert(std::pair('U', 7)); // Pyrrolysine C12H21N3O3 ret.insert(std::pair('O', 21)); return ret; }(); AaBase::AaIntMap AaBase::m_aaNumberOfNitrogenMap = [] { AaIntMap ret; // populate ret ret.insert(std::pair('A', 1)); ret.insert(std::pair('C', 1)); ret.insert(std::pair('D', 1)); ret.insert(std::pair('E', 1)); ret.insert(std::pair('F', 1)); ret.insert(std::pair('G', 1)); ret.insert(std::pair('H', 3)); ret.insert(std::pair('I', 1)); ret.insert(std::pair('K', 2)); ret.insert(std::pair('L', 1)); ret.insert(std::pair('M', 1)); ret.insert(std::pair('N', 2)); ret.insert(std::pair('P', 1)); ret.insert(std::pair('Q', 2)); ret.insert(std::pair('R', 4)); ret.insert(std::pair('S', 1)); ret.insert(std::pair('T', 1)); ret.insert(std::pair('V', 1)); ret.insert(std::pair('W', 2)); ret.insert(std::pair('Y', 1)); // Selenocysteine C3H7NO2Se ret.insert(std::pair('U', 1)); // Pyrrolysine C12H21N3O3 ret.insert(std::pair('O', 3)); return ret; }(); AaBase::AaIntMap AaBase::m_aaNumberOfOxygenMap = [] { AaIntMap ret; // populate ret ret.insert(std::pair('A', 1)); ret.insert(std::pair('C', 1)); ret.insert(std::pair('D', 3)); ret.insert(std::pair('E', 3)); ret.insert(std::pair('F', 1)); ret.insert(std::pair('G', 1)); ret.insert(std::pair('H', 1)); ret.insert(std::pair('I', 1)); ret.insert(std::pair('K', 1)); ret.insert(std::pair('L', 1)); ret.insert(std::pair('M', 1)); ret.insert(std::pair('N', 2)); ret.insert(std::pair('P', 1)); ret.insert(std::pair('Q', 2)); ret.insert(std::pair('R', 1)); ret.insert(std::pair('S', 2)); ret.insert(std::pair('T', 2)); ret.insert(std::pair('V', 1)); ret.insert(std::pair('W', 1)); ret.insert(std::pair('Y', 2)); // Selenocysteine C3H7NO2Se ret.insert(std::pair('U', 2)); // Pyrrolysine C12H21N3O3 ret.insert(std::pair('O', 3)); return ret; }(); AaBase::AaIntMap AaBase::m_aaNumberOfSulfurMap = [] { AaIntMap ret; // populate ret ret.insert(std::pair('A', 0)); ret.insert(std::pair('C', 1)); ret.insert(std::pair('D', 0)); ret.insert(std::pair('E', 0)); ret.insert(std::pair('F', 0)); ret.insert(std::pair('G', 0)); ret.insert(std::pair('H', 0)); ret.insert(std::pair('I', 0)); ret.insert(std::pair('K', 0)); ret.insert(std::pair('L', 0)); ret.insert(std::pair('M', 1)); ret.insert(std::pair('N', 0)); ret.insert(std::pair('P', 0)); ret.insert(std::pair('Q', 0)); ret.insert(std::pair('R', 0)); ret.insert(std::pair('S', 0)); ret.insert(std::pair('T', 0)); ret.insert(std::pair('V', 0)); ret.insert(std::pair('W', 0)); ret.insert(std::pair('Y', 0)); // Selenocysteine C3H7NO2Se ret.insert(std::pair('U', 0)); // Pyrrolysine C12H21N3O3 ret.insert(std::pair('O', 0)); return ret; }(); pappso_double AaBase::getAaMass(char aa_letter) { return m_aaMassMap.at(aa_letter); } pappso_double AaBase::getMass() const { return m_aaMassMap.at(m_aaLetter); } int AaBase::getNumberOfAtom(AtomIsotopeSurvey atom) const { switch(atom) { case AtomIsotopeSurvey::C: return this->m_aaNumberOfCarbonMap.at(m_aaLetter); case AtomIsotopeSurvey::H: return this->m_aaNumberOfHydrogenMap.at(m_aaLetter); case AtomIsotopeSurvey::N: return this->m_aaNumberOfNitrogenMap.at(m_aaLetter); case AtomIsotopeSurvey::O: return this->m_aaNumberOfOxygenMap.at(m_aaLetter); case AtomIsotopeSurvey::S: return this->m_aaNumberOfSulfurMap.at(m_aaLetter); default: return 0; } // selenium (U) is not taken into account to compute isotopes // it has 5 stable isotopes and the most abundant is 80Se (49,61%) qDebug() << "AaBase::getNumberOfAtom(AtomIsotopeSurvey atom) NOT IMPLEMENTED"; return 0; } void AaBase::replaceLeucineIsoleucine() { if(m_aaLetter == 'L') m_aaLetter = 'I'; } int AaBase::getNumberOfIsotope(Isotope isotope [[maybe_unused]]) const { return 0; } const char & AaBase::getLetter() const { return m_aaLetter; } const AminoAcidChar & AaBase::getAminoAcidChar() const { return (AminoAcidChar &)m_aaLetter; } const std::vector & AaBase::getAminoAcidCharList() { return m_aminoAcidCharList; } } /* namespace pappso */ libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aabase.h000644 001750 001750 00000004760 14531114113 024343 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aabase.h * \date 7/3/2015 * \author Olivier Langella * \brief private amino acid model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../types.h" #include "atomnumberinterface.h" #include "../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL AaBase : public AtomNumberInterface { friend class AaModification; public: virtual pappso_double getMass() const; virtual const char &getLetter() const; const AminoAcidChar &getAminoAcidChar() const; virtual void replaceLeucineIsoleucine(); static const std::vector &getAminoAcidCharList(); protected: AaBase(char aa_letter); AaBase(AminoAcidChar aa_char); AaBase(const AaBase &aabase); virtual ~AaBase(); virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override; int getNumberOfIsotope(Isotope isotope) const override; static pappso_double getAaMass(char aa_letter); protected: char m_aaLetter; private: using AaMassMap = std::map; using AaIntMap = std::map; using AminoAcidCharList = std::vector; static AaMassMap m_aaMassMap; static AaIntMap m_aaNumberOfCarbonMap; static AaIntMap m_aaNumberOfSulfurMap; static AaIntMap m_aaNumberOfHydrogenMap; static AaIntMap m_aaNumberOfNitrogenMap; static AaIntMap m_aaNumberOfOxygenMap; static AminoAcidCharList m_aminoAcidCharList; }; } /* namespace pappso */ libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aamodification.cpp000644 001750 001750 00000071647 14531114113 026441 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aamodification.h * \date 7/3/2015 * \author Olivier Langella * \brief amino acid modification model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include #include "aamodification.h" #include "aa.h" #include "../pappsoexception.h" #include "../mzrange.h" #include "../peptide/peptide.h" #include "../obo/filterobopsimodsink.h" #include "../obo/filterobopsimodtermaccession.h" #include "../exception/exceptionnotfound.h" /* inline void initMyResource() { Q_INIT_RESOURCE(resources); } */ namespace pappso { QMutex AaModification::m_mutex; AaModification::AaModification(const QString &accession, pappso_double mass) : m_accession(accession), m_mass(mass) { m_atomCount = {{AtomIsotopeSurvey::C, 0}, {AtomIsotopeSurvey::H, 0}, {AtomIsotopeSurvey::N, 0}, {AtomIsotopeSurvey::O, 0}, {AtomIsotopeSurvey::S, 0}}; m_mapIsotope = {{Isotope::C13, 0}, {Isotope::H2, 0}, {Isotope::N15, 0}, {Isotope::O17, 0}, {Isotope::O18, 0}, {Isotope::S33, 0}, {Isotope::S34, 0}, {Isotope::S36, 0}}; } AaModification::AaModification(AaModification &&toCopy) // move constructor : m_accession(toCopy.m_accession), m_name(toCopy.m_name), m_mass(toCopy.m_mass), m_atomCount(std::move(toCopy.m_atomCount)), m_mapIsotope(toCopy.m_mapIsotope) { m_origin = toCopy.m_origin; } AaModification::~AaModification() { } const QString & AaModification::getAccession() const { // qDebug(); return m_accession; } const QString AaModification::toProForma() const { QString str_return; // qDebug(); if(m_accession.startsWith("MOD:")) return m_accession; if(m_accession.startsWith("internal:")) return str_return; if(m_accession.startsWith("MUTATION:")) { // MUTATION:%1=>%2 QStringList aa_list = m_accession.mid(9).split("=>"); // first, find removal accession return QString("%1][%2") .arg(getInstanceRemovalAccessionByAaLetter(aa_list[0].at(0)) ->getAccession()) .arg(getInstanceInsertionAccessionByAaLetter(aa_list[1].at(0)) ->getAccession()); } if(m_mass > 0) { return QString("+%1").arg(QString::number(m_mass, 'f', 4)); } else { return QString("%1").arg(QString::number(m_mass, 'f', 4)); } return str_return; } const QString & AaModification::getName() const { return m_name; } const QString & AaModification::getXrefOrigin() const { return m_origin; } AaModification::MapAccessionModifications AaModification::m_mapAccessionModifications = [] { MapAccessionModifications ret; return ret; }(); AaModificationP AaModification::createInstance(const OboPsiModTerm &term) { AaModification *new_mod; // qDebug() << " AaModification::createInstance begin"; new_mod = new AaModification(term.m_accession, term.m_diffMono); // xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0" new_mod->setDiffFormula(term.m_diffFormula); new_mod->setXrefOrigin(term.m_origin); new_mod->m_name = term.m_name; qDebug() << "is_a " << term.m_isA.join(" "); if(term.isA("MOD:01441")) { qDebug() << "term.isA(MOD:01441)"; if(term.m_origin.isEmpty()) { throw ExceptionNotFound( QObject::tr("origin not found for term : [%1]") .arg(term.m_accession)); } new_mod->setDiffFormula(term.m_formula); // new_mod->m_mass = AaBase::getAaMass(term.m_origin[0].toLatin1()); } qDebug() << new_mod->m_mass; return new_mod; } AaModificationP AaModification::createInstance(const QString &accession) { if(accession == "internal:Nter_hydrolytic_cleavage_H") { OboPsiModTerm term; term.m_accession = accession; term.m_diffFormula = "H 1"; term.m_diffMono = MPROTIUM; term.m_name = "Nter hydrolytic cleavage H+"; return (AaModification::createInstance(term)); } if(accession == "internal:Cter_hydrolytic_cleavage_HO") { OboPsiModTerm term; term.m_accession = accession; term.m_diffFormula = "H 1 O 1"; term.m_diffMono = MPROTIUM + MASSOXYGEN; term.m_name = "Cter hydrolytic cleavage HO"; return (AaModification::createInstance(term)); } if(accession.startsWith("MUTATION:")) { QRegularExpression regexp_mutation("^MUTATION:([A-Z])=>([A-Z])$"); QRegularExpressionMatch match = regexp_mutation.match(accession); if(match.hasMatch()) { qDebug() << match.capturedTexts()[1].at(0) << " " << match.capturedTexts()[2].at(0); Aa aa_from(match.capturedTexts()[1].toStdString().c_str()[0]); Aa aa_to(match.capturedTexts()[2].toStdString().c_str()[0]); AaModificationP instance_mutation = createInstanceMutation(aa_from, aa_to); return instance_mutation; // m_psiModLabel<<"|"; } } if(accession.startsWith("C13N15:")) { QRegularExpression regexp_label("^C13N15:([A-Z])$"); QRegularExpressionMatch match = regexp_label.match(accession); if(match.hasMatch()) { char labelled_aa(match.capturedTexts()[1].toStdString().c_str()[0]); AaModificationP instance_labelled_aa_p = createInstanceC13N15LabelledAminoAcid(QChar(labelled_aa)); return instance_labelled_aa_p; // m_psiModLabel<<"|"; } } // initMyResource(); FilterOboPsiModSink term_list; FilterOboPsiModTermAccession filterm_accession(term_list, accession); OboPsiMod psimod(filterm_accession); try { return (AaModification::createInstance(term_list.getOne())); } catch(ExceptionNotFound &e) { throw ExceptionNotFound(QObject::tr("modification not found : [%1]\n%2") .arg(accession) .arg(e.qwhat())); } } void AaModification::setXrefOrigin(const QString &origin) { // xref: Origin: "N" // xref: Origin: "X" m_origin = origin; } void AaModification::setDiffFormula(const QString &diff_formula) { QRegularExpression rx("(^|\\s)([C,H,O,N,H,S])\\s([-]{0,1}\\d+)"); QRegularExpressionMatchIterator i = rx.globalMatch(diff_formula); while(i.hasNext()) { QRegularExpressionMatch match = i.next(); qDebug() << match.captured(2) << " " << match.captured(2) << " " << match.captured(3); if(match.captured(2) == "C") { m_atomCount[AtomIsotopeSurvey::C] = match.captured(3).toInt(); } else if(match.captured(2) == "H") { m_atomCount[AtomIsotopeSurvey::H] = match.captured(3).toInt(); } else if(match.captured(2) == "N") { m_atomCount[AtomIsotopeSurvey::N] = match.captured(3).toInt(); } else if(match.captured(2) == "O") { m_atomCount[AtomIsotopeSurvey::O] = match.captured(3).toInt(); } else if(match.captured(2) == "S") { m_atomCount[AtomIsotopeSurvey::S] = match.captured(3).toInt(); } } // look for isotopes : rx.setPattern("\\(([-]{0,1}\\d+)\\)([C,H,O,N,H,S])\\s([-]{0,1}\\d+)"); i = rx.globalMatch(diff_formula); while(i.hasNext()) { QRegularExpressionMatch match = i.next(); qDebug() << match.captured(1) << " " << match.captured(2) << " " << match.captured(3); int number_of_isotopes = match.captured(3).toInt(); if(match.captured(2) == "C") { if(match.captured(1) == "13") { m_mapIsotope.at(Isotope::C13) = number_of_isotopes; } m_atomCount[AtomIsotopeSurvey::C] += number_of_isotopes; } else if(match.captured(2) == "H") { if(match.captured(1) == "2") { m_mapIsotope.at(Isotope::H2) = number_of_isotopes; } m_atomCount[AtomIsotopeSurvey::H] += number_of_isotopes; } else if(match.captured(2) == "N") { if(match.captured(1) == "15") { m_mapIsotope.at(Isotope::N15) = number_of_isotopes; } m_atomCount[AtomIsotopeSurvey::N] += number_of_isotopes; } else if(match.captured(2) == "O") { if(match.captured(1) == "17") { m_mapIsotope.at(Isotope::O17) = number_of_isotopes; } else if(match.captured(1) == "18") { m_mapIsotope.at(Isotope::O18) = number_of_isotopes; } m_atomCount[AtomIsotopeSurvey::O] += number_of_isotopes; } else if(match.captured(2) == "S") { if(match.captured(1) == "33") { m_mapIsotope.at(Isotope::S33) = number_of_isotopes; } else if(match.captured(1) == "34") { m_mapIsotope.at(Isotope::S34) = number_of_isotopes; } else if(match.captured(1) == "36") { m_mapIsotope.at(Isotope::S36) = number_of_isotopes; } m_atomCount[AtomIsotopeSurvey::S] += number_of_isotopes; } } calculateMassFromChemicalComponents(); } void AaModification::calculateMassFromChemicalComponents() { pappso_double theoreticalm_mass = 0; std::map::const_iterator it_atom = m_atomCount.find(AtomIsotopeSurvey::C); if(it_atom != m_atomCount.end()) { theoreticalm_mass += MASSCARBON * (it_atom->second); } it_atom = m_atomCount.find(AtomIsotopeSurvey::H); if(it_atom != m_atomCount.end()) { theoreticalm_mass += MPROTIUM * (it_atom->second); } it_atom = m_atomCount.find(AtomIsotopeSurvey::O); if(it_atom != m_atomCount.end()) { theoreticalm_mass += MASSOXYGEN * (it_atom->second); } it_atom = m_atomCount.find(AtomIsotopeSurvey::N); if(it_atom != m_atomCount.end()) { theoreticalm_mass += MASSNITROGEN * (it_atom->second); } it_atom = m_atomCount.find(AtomIsotopeSurvey::S); if(it_atom != m_atomCount.end()) { theoreticalm_mass += MASSSULFUR * (it_atom->second); } qDebug() << theoreticalm_mass; theoreticalm_mass += DIFFC12C13 * m_mapIsotope.at(Isotope::C13); theoreticalm_mass += DIFFH1H2 * m_mapIsotope.at(Isotope::H2); theoreticalm_mass += DIFFN14N15 * m_mapIsotope.at(Isotope::N15); theoreticalm_mass += DIFFO16O17 * m_mapIsotope.at(Isotope::O17); theoreticalm_mass += DIFFO16O18 * m_mapIsotope.at(Isotope::O18); theoreticalm_mass += DIFFS32S33 * m_mapIsotope.at(Isotope::S33); theoreticalm_mass += DIFFS32S34 * m_mapIsotope.at(Isotope::S34); theoreticalm_mass += DIFFS32S36 * m_mapIsotope.at(Isotope::S36); if(m_mass == 0.0) { m_mass = theoreticalm_mass; } else { pappso_double diff = std::fabs((pappso_double)m_mass - theoreticalm_mass); if(diff < 0.001) { m_mass = theoreticalm_mass; qDebug() << diff; } else { qDebug() << "ERROR in AaModification::calculateMassFromChemicalComponents " "theo=" << theoreticalm_mass << " m=" << m_mass << " diff=" << diff << " accession=" << m_accession; } } } AaModificationP AaModification::getInstanceCustomizedMod(pappso_double modificationMass) { QString accession = QString("%1").arg(modificationMass); qDebug() << accession; QMutexLocker locker(&m_mutex); if(m_mapAccessionModifications.find(accession) == m_mapAccessionModifications.end()) { // not found m_mapAccessionModifications.insert(std::pair( accession, new AaModification(accession, modificationMass))); } else { // found } return m_mapAccessionModifications.at(accession); } AaModificationP AaModification::getInstance(const QString &accession) { try { QMutexLocker locker(&m_mutex); MapAccessionModifications::iterator it = m_mapAccessionModifications.find(accession); if(it == m_mapAccessionModifications.end()) { // not found std::pair insert_res = m_mapAccessionModifications.insert( std::pair( accession, AaModification::createInstance(accession))); it = insert_res.first; } else { // found } return it->second; } catch(ExceptionNotFound &e) { throw ExceptionNotFound( QObject::tr("ERROR getting instance of : %1 NOT FOUND\n%2") .arg(accession) .arg(e.qwhat())); } catch(PappsoException &e) { throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2") .arg(accession) .arg(e.qwhat())); } catch(std::exception &e) { throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2") .arg(accession) .arg(e.what())); } } AaModificationP AaModification::getInstanceRemovalAccessionByAaLetter(const QChar &amino_acid) { switch(amino_acid.toLatin1()) { // AminoAcidChar::alanine case 'A': return getInstance("MOD:01631"); break; // AminoAcidChar::arginine, case 'R': return getInstance("MOD:01632"); break; // AminoAcidChar::cysteine, case 'C': return getInstance("MOD:01635"); break; // AminoAcidChar::aspartic_acid, case 'D': return getInstance("MOD:01634"); break; // AminoAcidChar::glutamic_acid, case 'E': return getInstance("MOD:01636"); break; // AminoAcidChar::phenylalanine, case 'F': return getInstance("MOD:01644"); break; // AminoAcidChar::glycine, case 'G': return getInstance("MOD:01638"); break; // AminoAcidChar::histidine, case 'H': return getInstance("MOD:01639"); break; // AminoAcidChar::isoleucine, case 'I': return getInstance("MOD:01640"); break; // AminoAcidChar::lysine, case 'K': return getInstance("MOD:01642"); break; // AminoAcidChar::leucine, case 'L': return getInstance("MOD:01641"); break; // AminoAcidChar::methionine, case 'M': return getInstance("MOD:01643"); break; // AminoAcidChar::asparagine, case 'N': return getInstance("MOD:01633"); break; // AminoAcidChar::proline, case 'P': return getInstance("MOD:01645"); break; // AminoAcidChar::glutamine, case 'Q': return getInstance("MOD:01637"); break; // AminoAcidChar::serine, case 'S': return getInstance("MOD:01646"); break; // AminoAcidChar::threonine, case 'T': return getInstance("MOD:01647"); break; // AminoAcidChar::valine, case 'V': return getInstance("MOD:01650"); break; // AminoAcidChar::tryptophan, case 'W': return getInstance("MOD:01648"); break; // AminoAcidChar::tyrosine, case 'Y': return getInstance("MOD:01649"); break; default: throw ExceptionNotFound( QObject::tr("ERROR getting removal accession instance of amino acid: " "%1 NOT FOUND") .arg(amino_acid)); } } AaModificationP AaModification::getInstanceInsertionAccessionByAaLetter(const QChar &amino_acid) { pappso::AaModificationP aa_insert = nullptr; switch(amino_acid.toLatin1()) { // AminoAcidChar::alanine case 'A': aa_insert = getInstance("MOD:00010"); break; // AminoAcidChar::arginine, case 'R': aa_insert = getInstance("MOD:00011"); break; // AminoAcidChar::cysteine, case 'C': aa_insert = getInstance("MOD:00014"); break; // AminoAcidChar::aspartic_acid, case 'D': aa_insert = getInstance("MOD:00013"); break; // AminoAcidChar::glutamic_acid, case 'E': aa_insert = getInstance("MOD:00015"); break; // AminoAcidChar::phenylalanine, case 'F': aa_insert = getInstance("MOD:00023"); break; // AminoAcidChar::glycine, case 'G': aa_insert = getInstance("MOD:00017"); break; // AminoAcidChar::histidine, case 'H': aa_insert = getInstance("MOD:00018"); break; // AminoAcidChar::isoleucine, case 'I': aa_insert = getInstance("MOD:00019"); break; // AminoAcidChar::lysine, case 'K': aa_insert = getInstance("MOD:00021"); break; // AminoAcidChar::leucine, case 'L': aa_insert = getInstance("MOD:00020"); break; // AminoAcidChar::methionine, case 'M': aa_insert = getInstance("MOD:00022"); break; // AminoAcidChar::asparagine, case 'N': aa_insert = getInstance("MOD:00012"); break; // AminoAcidChar::proline, case 'P': aa_insert = getInstance("MOD:00024"); break; // AminoAcidChar::glutamine, case 'Q': aa_insert = getInstance("MOD:00016"); break; // AminoAcidChar::serine, case 'S': aa_insert = getInstance("MOD:00025"); break; // AminoAcidChar::threonine, case 'T': aa_insert = getInstance("MOD:00026"); break; // AminoAcidChar::valine, case 'V': aa_insert = getInstance("MOD:00029"); break; // AminoAcidChar::tryptophan, case 'W': aa_insert = getInstance("MOD:00027"); break; // AminoAcidChar::tyrosine, case 'Y': aa_insert = getInstance("MOD:00028"); break; // AminoAcidChar::selenocysteine, case 'U': aa_insert = getInstance("MOD:00031"); break; default: throw ExceptionNotFound( QObject::tr("ERROR getting removal accession instance of amino acid: " "%1 NOT FOUND") .arg(amino_acid)); } return aa_insert; } AaModificationP AaModification::getInstance(const OboPsiModTerm &oboterm) { QMutexLocker locker(&m_mutex); std::pair insert_res = m_mapAccessionModifications.insert( std::pair(oboterm.m_accession, nullptr)); if(!insert_res.second) { // Failed to insert, was there already by same key. } else { // Could insert (albeit with nullptr), was not there already by same key. // Just assign to the *correct* pair member the pointer to an // extemporaneously allocated AaModification. insert_res.first->second = AaModification::createInstance(oboterm); } return insert_res.first->second; } AaModificationP AaModification::getInstanceXtandemMod(const QString &type, pappso_double mass, const PeptideSp &peptide_sp, unsigned int position) { PrecisionPtr precision = PrecisionFactory::getDaltonInstance(0.001); if(MzRange(mass, precision).contains(getInstance("MOD:00719")->getMass())) { if(type == "M") { return getInstance("MOD:00719"); } if(type == "K") { return getInstance("MOD:01047"); } } // accession== "MOD:00057" if(MzRange(mass, precision).contains(getInstance("MOD:00408")->getMass())) { // id: MOD:00394 // name: acetylated residue // potential N-terminus modifications if(position == 0) { return getInstance("MOD:00408"); } } if(MzRange(mass, precision).contains(getInstance("MOD:01160")->getMass())) { //-17.02655 // loss of ammonia [MOD:01160] -17.026549 return getInstance("MOD:01160"); } if(MzRange(mass, precision).contains(getInstance("MOD:01060")->getMass())) { //// iodoacetamide [MOD:00397] 57.021464 if(type == "C") { return getInstance("MOD:01060"); } else { return getInstance("MOD:00397"); } } if(MzRange(mass, precision).contains(getInstance("MOD:00704")->getMass())) { // loss of water /* if (position == 0) { if (peptide_sp.get()->getSequence().startsWith("EG")) { return getInstance("MOD:00365"); } if (peptide_sp.get()->getSequence().startsWith("ES")) { return getInstance("MOD:00953"); } if (type == "E") { return getInstance("MOD:00420"); } } */ // dehydrated residue [MOD:00704] -18.010565 return getInstance("MOD:00704"); } if(MzRange(mass, precision).contains(getInstance("MOD:00696")->getMass())) { // phosphorylated residue [MOD:00696] 79.966330 return getInstance("MOD:00696"); } bool isCter = false; if(peptide_sp.get()->size() == (position + 1)) { isCter = true; } if((position == 0) || isCter) { if(MzRange(mass, precision).contains(getInstance("MOD:00429")->getMass())) { // dimethyl return getInstance("MOD:00429"); } if(MzRange(mass, precision).contains(getInstance("MOD:00552")->getMass())) { // 4x(2)H labeled dimethyl residue return getInstance("MOD:00552"); } if(MzRange(mass, precision).contains(getInstance("MOD:00638")->getMass())) { // 2x(13)C,6x(2)H-dimethylated arginine return getInstance("MOD:00638"); } } throw PappsoException( QObject::tr("tandem modification not found : %1 %2 %3 %4") .arg(type) .arg(mass) .arg(peptide_sp.get()->getSequence()) .arg(position)); } pappso_double AaModification::getMass() const { return m_mass; } int AaModification::getNumberOfAtom(AtomIsotopeSurvey atom) const { // qDebug() << "AaModification::getNumberOfAtom(AtomIsotopeSurvey atom) NOT // IMPLEMENTED"; return m_atomCount.at(atom); } int AaModification::getNumberOfIsotope(Isotope isotope) const { try { return m_mapIsotope.at(isotope); } catch(std::exception &e) { throw PappsoException( QObject::tr("ERROR in AaModification::getNumberOfIsotope %2") .arg(e.what())); } } bool AaModification::isInternal() const { if(m_accession.startsWith("internal:")) { return true; } return false; } AaModificationP AaModification::createInstanceMutation(const Aa &aa_from, const Aa &aa_to) { QString accession( QString("MUTATION:%1=>%2").arg(aa_from.getLetter()).arg(aa_to.getLetter())); double diffMono = aa_to.getMass() - aa_from.getMass(); // not found AaModification *instance_mutation; // qDebug() << " AaModification::createInstance begin"; instance_mutation = new AaModification(accession, diffMono); // xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0" for(std::int8_t atomInt = (std::int8_t)AtomIsotopeSurvey::C; atomInt != (std::int8_t)AtomIsotopeSurvey::last; atomInt++) { AtomIsotopeSurvey atom = static_cast(atomInt); instance_mutation->m_atomCount[atom] = aa_to.getNumberOfAtom(atom) - aa_from.getNumberOfAtom(atom); } instance_mutation->m_name = QString("mutation from %1 to %2") .arg(aa_from.getLetter()) .arg(aa_to.getLetter()); return instance_mutation; } AaModificationP AaModification::getInstanceMutation(const QChar &mut_from, const QChar &mut_to) { QString accession(QString("MUTATION:%1=>%2").arg(mut_from).arg(mut_to)); try { QMutexLocker locker(&m_mutex); MapAccessionModifications::iterator it = m_mapAccessionModifications.find(accession); if(it == m_mapAccessionModifications.end()) { Aa aa_from(mut_from.toLatin1()); Aa aa_to(mut_to.toLatin1()); AaModificationP instance_mutation = createInstanceMutation(aa_from, aa_to); std::pair insert_res = m_mapAccessionModifications.insert( std::pair(accession, instance_mutation)); it = insert_res.first; } else { // found } return it->second; } catch(ExceptionNotFound &e) { throw ExceptionNotFound( QObject::tr("ERROR getting instance of : %1 NOT FOUND\n%2") .arg(accession) .arg(e.qwhat())); } catch(PappsoException &e) { throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2") .arg(accession) .arg(e.qwhat())); } catch(std::exception &e) { throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2") .arg(accession) .arg(e.what())); } } AaModificationP AaModification::createInstanceC13N15LabelledAminoAcid(const QChar &from_aa) { switch(from_aa.toLatin1()) { case 'R': return createInstance("MOD:00587"); break; case 'K': return createInstance("MOD:00582"); break; case 'F': return createInstance("MOD:00589"); break; } // At this point we have no MOD ontology term for all the other amino-acid // residue, we need to craft the stuff ourselves. QString accession(QString("C13N15:%1").arg(from_aa)); // Define the diff formula for each amino acid code not handled above. QString diff_formula; switch(from_aa.toLatin1()) { case 'G': diff_formula = "(12)C -2 (13)C 2 (14)N -1 (15)N 1"; break; case 'A': diff_formula = "(12)C -3 (13)C 3 (14)N -1 (15)N 1"; break; case 'V': diff_formula = "(12)C -5 (13)C 5 (14)N -1 (15)N 1"; break; case 'I': diff_formula = "(12)C -6 (13)C 6 (14)N -1 (15)N 1"; break; case 'L': diff_formula = "(12)C -6 (13)C 6 (14)N -1 (15)N 1"; break; case 'S': diff_formula = "(12)C -3 (13)C 3 (14)N -1 (15)N 1"; break; case 'T': diff_formula = "(12)C -4 (13)C 4 (14)N -1 (15)N 1"; break; case 'C': diff_formula = "(12)C -3 (13)C 3 (14)N -1 (15)N 1"; break; case 'M': diff_formula = "(12)C -5 (13)C 5 (14)N -1 (15)N 1"; break; case 'D': diff_formula = "(12)C -4 (13)C 4 (14)N -1 (15)N 1"; break; case 'E': diff_formula = "(12)C -5 (13)C 5 (14)N -1 (15)N 1"; break; case 'N': diff_formula = "(12)C -4 (13)C 4 (14)N -2 (15)N 2"; break; case 'Q': diff_formula = "(12)C -5 (13)C 5 (14)N -2 (15)N 2"; break; case 'W': diff_formula = "(12)C -11 (13)C 11 (14)N -2 (15)N 2"; break; case 'Y': diff_formula = "(12)C -9 (13)C 9 (14)N -1 (15)N 1"; break; case 'H': diff_formula = "(12)C -6 (13)C 6 (14)N -3 (15)N 3"; break; case 'P': diff_formula = "(12)C -5 (13)C 5 (14)N -1 (15)N 1"; break; default: throw PappsoException( QObject::tr("ERROR creating C13N15-labelled amino acid residue %1\n") .arg(from_aa)); } OboPsiModTerm obo_psi_term; obo_psi_term.m_accession = accession; obo_psi_term.m_diffFormula = diff_formula; obo_psi_term.m_name = QString("Fully C13N15-labelled %1").arg(from_aa); obo_psi_term.m_diffMono = 0; qDebug() << "obo_psi_term.m_diffFormula: " << obo_psi_term.m_diffFormula; return AaModification::createInstance(obo_psi_term); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aamodification.h000644 001750 001750 00000012466 14531114113 026100 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aamodification.h * \date 7/3/2015 * \author Olivier Langella * \brief amino acid modification model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include #include #include #include "../types.h" #include "atomnumberinterface.h" #include "../obo/obopsimod.h" namespace pappso { class Peptide; typedef std::shared_ptr PeptideSp; class AaModification; typedef std::unique_ptr AaModificationUp; typedef const AaModification *AaModificationP; class Aa; class PMSPP_LIB_DECL AaModification : public AtomNumberInterface { public: AaModification(AaModification &&toCopy); // move constructor static AaModificationP getInstance(const QString &accession); static AaModificationP getInstance(const OboPsiModTerm &oboterm); /** @brief get a fake modification coding a mutation from an amino acid to an * other * @param mut_from orginal amino acid * @param mut_to targeted amino acid */ static AaModificationP getInstanceMutation(const QChar &mut_from, const QChar &mut_to); /** @brief get a PSI MOD instance corresponding to the removal of the given * amino acid find the modifications that corresponds to the removal of a * residue id: MOD:01651 name: natural, standard, encoded residue removal * @param amino_acid orginal amino acid letter * @return AaModificationP */ static AaModificationP getInstanceRemovalAccessionByAaLetter(const QChar &amino_acid); /** @brief get a PSI MOD instance corresponding to the insertion of the given * amino acid find the modifications. * * insertion of residue id: MOD:01441 name: natural, standard, encoded residue * @param amino_acid orginal amino acid letter * @return AaModificationP */ static AaModificationP getInstanceInsertionAccessionByAaLetter(const QChar &amino_acid); static AaModificationP getInstanceXtandemMod(const QString &type, pappso_double mass, const PeptideSp &peptide_sp, unsigned int position); static AaModificationP getInstanceCustomizedMod(pappso_double modificationMass); const QString &getAccession() const; const QString &getName() const; /** @brief get the amino acid in ProForma notation * https://github.com/HUPO-PSI/ProForma/blob/master/README.md * @return QString as described in ProForma */ const QString toProForma() const; ~AaModification(); pappso_double getMass() const; int getNumberOfAtom(AtomIsotopeSurvey atom) const override final; int getNumberOfIsotope(Isotope isotope) const override final; bool isInternal() const; /** @brief get list of amino acid on which this modification takes place * * @return origin string of the form "S T" for Serine or Threonine, "X" for * any amino acid (see OBO PSI format) * */ const QString &getXrefOrigin() const; protected: const QString m_accession; QString m_name; protected: void setDiffFormula(const QString &diff_formula); /** @brief set list of amino acid on which this modification takes place * * @arg origin string of the form "S T" for Serine or Threonine, "X" for any * amino acid (see OBO PSI format) * */ void setXrefOrigin(const QString &origin); private: AaModification(const QString &accession, pappso_double mass); static AaModificationP createInstance(const QString &saccession); static AaModificationP createInstance(const OboPsiModTerm &term); static AaModificationP createInstanceMutation(const Aa &aa_from, const Aa &aa_to); /** @brief get heavy amino acid modification C13 N15 * @param aa_from orginal amino acid */ static AaModificationP createInstanceC13N15LabelledAminoAcid(const QChar &aa_from); void calculateMassFromChemicalComponents(); using MapAccessionModifications = std::map; private: pappso_double m_mass; QString m_origin; std::map m_atomCount; std::map m_mapIsotope; static MapAccessionModifications m_mapAccessionModifications; static QMutex m_mutex; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aa.h000644 001750 001750 00000006303 14531706321 023513 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aaBase.h * \date 7/3/2015 * \author Olivier Langella * \brief amino acid model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../types.h" #include "aabase.h" #include "aamodification.h" namespace pappso { class PMSPP_LIB_DECL Aa : public AaBase { public: Aa(char aa_letter); Aa(AminoAcidChar aa_char); Aa(const Aa &aa); Aa(Aa &&toCopy); // move constructor Aa &operator=(const Aa &toCopy); virtual ~Aa(); pappso_double getMass() const override; int getNumberOfAtom(AtomIsotopeSurvey atom) const override final; int getNumberOfIsotope(Isotope isotope) const override final; unsigned int getNumberOfModification(AaModificationP mod) const; /* \brief print modification except internal modifications */ const QString toString() const; /* \brief print all modifications */ const QString toAbsoluteString() const; /** @brief get the amino acid in ProForma notation * https://github.com/HUPO-PSI/ProForma/blob/master/README.md * @return QString as described in ProForma */ const QString toProForma() const; void addAaModification(AaModificationP aaModification); void removeAaModification(AaModificationP aaModification); /** @brief replaces all occurences of a modification by a new one * @param oldmod modification to change * @param newmod new modification */ void replaceAaModification(AaModificationP oldmod, AaModificationP newmod); AaModificationP getInternalNterModification() const; AaModificationP getInternalCterModification() const; void removeInternalNterModification(); void removeInternalCterModification(); /** @brief remove all non internat modifications */ void removeAllButInternalModification(); const std::vector &getModificationList() const; /** @brief get the sum of mass modifications */ double getTotalModificationMass() const; bool isLesser(Aa const &r) const; bool isAaEqual(Aa const &r) const; private: // const pappso_double _aa_mass; std::vector m_listMod; }; bool operator<(const Aa &l, const Aa &r); bool operator==(const Aa &l, const Aa &r); } /* namespace pappso */ libpappsomspp-0.9.20/src/pappsomspp/amino_acid/aa.cpp000644 001750 001750 00000017561 14533323122 024052 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/amino_acid/aaBase.cpp * \date 7/3/2015 * \author Olivier Langella * \brief amino acid model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "aa.h" #include #include #include #include namespace pappso { Aa::Aa(char aa_letter) : AaBase(aa_letter) { } Aa::Aa(AminoAcidChar aa_char) : AaBase(aa_char) { } Aa::Aa(const Aa &other) : AaBase(other), m_listMod(other.m_listMod) { } Aa::Aa(Aa &&toCopy) // move constructor : AaBase(toCopy), m_listMod(std::move(toCopy.m_listMod)) { } Aa::~Aa() { } Aa & Aa::operator=(const Aa &toCopy) { m_aaLetter = toCopy.m_aaLetter; m_listMod = toCopy.m_listMod; return *this; } const std::vector & Aa::getModificationList() const { return m_listMod; } double Aa::getTotalModificationMass() const { double mass = 0; for(auto &&mod : m_listMod) { mass += mod->getMass(); } return mass; } pappso_double Aa::getMass() const { // qDebug() << "Aa::getMass() begin"; pappso_double mass = AaBase::getMass(); for(auto &&mod : m_listMod) { mass += mod->getMass(); } // qDebug() << "Aa::getMass() end " << mass; return mass; } const QString Aa::toAbsoluteString() const { QString seq = ""; seq += this->getLetter(); auto it(m_listMod.begin()); if(it != m_listMod.end()) { QStringList modification_str_list; while(it != m_listMod.end()) { modification_str_list << (*it)->getAccession(); it++; } if(modification_str_list.size() > 0) seq += QString("(%1)").arg(modification_str_list.join(",")); } return seq; } const QString Aa::toString() const { QString seq = ""; seq += this->getLetter(); auto it(m_listMod.begin()); if(it != m_listMod.end()) { QStringList modification_str_list; while(it != m_listMod.end()) { if(!(*it)->isInternal()) { modification_str_list << (*it)->getAccession(); } it++; } if(modification_str_list.size() > 0) seq += QString("(%1)").arg(modification_str_list.join(",")); } return seq; } const QString Aa::toProForma() const { QString seq = ""; seq += this->getLetter(); std::vector copy_mod_list = m_listMod; std::sort(copy_mod_list.begin(), copy_mod_list.end(), [](const AaModificationP &a, const AaModificationP &b) { return a->getAccession() < b->getAccession(); }); auto it(copy_mod_list.begin()); if(it != copy_mod_list.end()) { QStringList modification_str_list; while(it != copy_mod_list.end()) { if(!(*it)->isInternal()) { modification_str_list << (*it)->toProForma(); } it++; } if(modification_str_list.size() > 0) seq += QString("[%1]").arg(modification_str_list.join("][")); } return seq; } void Aa::removeAaModification(AaModificationP mod) { std::vector::iterator it = std::find(m_listMod.begin(), m_listMod.end(), mod); if(it != m_listMod.end()) { m_listMod.erase(it); } qDebug() << m_listMod << Qt::endl; } void Aa::addAaModification(AaModificationP aaModification) { qDebug() << "Aa::addAaModification begin"; qDebug() << aaModification->getAccession(); m_listMod.push_back(aaModification); sort(m_listMod.begin(), m_listMod.end()); } void Aa::replaceAaModification(AaModificationP oldmod, AaModificationP newmod) { std::replace(m_listMod.begin(), m_listMod.end(), oldmod, newmod); sort(m_listMod.begin(), m_listMod.end()); } int Aa::getNumberOfAtom(AtomIsotopeSurvey atom) const { int number_of_carbon = AaBase::getNumberOfAtom(atom); for(auto &&mod : m_listMod) { number_of_carbon += mod->getNumberOfAtom(atom); } // qDebug() << "Aa::getMass() end " << mass; return number_of_carbon; } int Aa::getNumberOfIsotope(Isotope isotope) const { int number = 0; for(auto &&mod : m_listMod) { number += mod->getNumberOfIsotope(isotope); } // qDebug() << "Aa::getMass() end " << mass; return number; } unsigned int Aa::getNumberOfModification(AaModificationP mod) const { unsigned int number_of_mod = 0; for(auto &&modb : m_listMod) { if(modb == mod) number_of_mod += 1; } // qDebug() << "Aa::getMass() end " << mass; return number_of_mod; } AaModificationP Aa::getInternalNterModification() const { for(auto &&modb : m_listMod) { if(modb->getAccession().startsWith("internal:Nter_")) return modb; } return nullptr; } AaModificationP Aa::getInternalCterModification() const { for(auto &&modb : m_listMod) { if(modb->getAccession().startsWith("internal:Cter_")) return modb; } return nullptr; } void Aa::removeInternalNterModification() { m_listMod.erase(std::remove_if(m_listMod.begin(), m_listMod.end(), [](AaModificationP const &mod) { return mod->getAccession().startsWith( "internal:Nter_"); }), m_listMod.end()); sort(m_listMod.begin(), m_listMod.end()); } void Aa::removeInternalCterModification() { m_listMod.erase(std::remove_if(m_listMod.begin(), m_listMod.end(), [](AaModificationP const &mod) { return mod->getAccession().startsWith( "internal:Cter_"); }), m_listMod.end()); sort(m_listMod.begin(), m_listMod.end()); } void Aa::removeAllButInternalModification() { m_listMod.erase(std::remove_if(m_listMod.begin(), m_listMod.end(), [](AaModificationP const &mod) { return !mod->getAccession().startsWith( "internal:"); }), m_listMod.end()); } bool Aa::isLesser(Aa const &r) const { qDebug() << m_listMod << "//" << r.m_listMod; // qDebug() << "operator<(const Aa& l, const Aa& r)"; if(m_aaLetter == r.m_aaLetter) { std::size_t a = m_listMod.size(); std::size_t b = r.m_listMod.size(); if(a == b) { return (m_listMod < r.m_listMod); } else { return (a < b); } } else { return (m_aaLetter < r.m_aaLetter); } } bool Aa::isAaEqual(Aa const &r) const { return (std::tie(m_aaLetter, m_listMod) == std::tie(r.m_aaLetter, r.m_listMod)); } bool operator==(Aa const &l, Aa const &r) { return l.isAaEqual(r); } bool operator<(Aa const &l, Aa const &r) { return l.isLesser(r); } } /* namespace pappso */ libpappsomspp-0.9.20/src/pappsomspp/exception/000755 001750 001750 00000000000 14533473271 022701 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/exception/exceptioninterrupted.h000644 001750 001750 00000002720 14346367014 027336 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/exception/exceptioninterrupted.h * \date 14/5/2021 * \author Olivier Langella * \brief process interrupted exception **/ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../pappsoexception.h" namespace pappso { class ExceptionInterrupted : public PappsoException { public: ExceptionInterrupted(const QString &message) throw() : PappsoException(message) { } virtual QException * clone() const override { return new ExceptionInterrupted(*this); } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/exception/exceptionnotfound.h000644 001750 001750 00000002616 14346367014 026631 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../pappsoexception.h" namespace pappso { class ExceptionNotFound : public PappsoException { public: ExceptionNotFound(const QString &message) throw() : PappsoException(message) { } virtual QException * clone() const override { return new ExceptionNotFound(*this); } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/exception/exceptionnotimplemented.h000644 001750 001750 00000002645 14346367014 030023 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../pappsoexception.h" namespace pappso { class ExceptionNotImplemented : public PappsoException { public: ExceptionNotImplemented(const QString &message) throw() : PappsoException(message) { } virtual QException * clone() const override { return new ExceptionNotImplemented(*this); } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/exception/exceptionnotpossible.h000644 001750 001750 00000002472 14346367014 027336 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella * * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../pappsoexception.h" namespace pappso { class ExceptionNotPossible : public PappsoException { public: ExceptionNotPossible(const QString &message) throw() : PappsoException(message) { } virtual QException * clone() const override { return new ExceptionNotPossible(*this); } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/exception/exceptionnotrecognized.h000644 001750 001750 00000003175 14346367014 027650 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/exception/exceptionnotrecognized.h * \date 17/11/2020 * \author Olivier Langella * \brief excetion to use when an item type is not recognized (file format, * object type...) */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella * * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../pappsoexception.h" namespace pappso { /** @brief excetion to use when an item type is not recognized * * item types can be files, objects... */ class ExceptionNotRecognized : public PappsoException { public: ExceptionNotRecognized(const QString &message) throw() : PappsoException(message) { } virtual QException * clone() const override { return new ExceptionNotRecognized(*this); } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/exception/exceptionoutofrange.h000644 001750 001750 00000002625 14346367014 027146 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../pappsoexception.h" namespace pappso { class ExceptionOutOfRange : public PappsoException { public: ExceptionOutOfRange(const QString &message) throw() : PappsoException(message) { } virtual QException * clone() const override { return new ExceptionOutOfRange(*this); } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/000755 001750 001750 00000000000 14533473271 022001 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/fasta/fastafileindexer.cpp000644 001750 001750 00000011654 14526455546 026040 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/fasta/fastafileindexer.cpp * \date 22/06/2109 * \author Olivier Langella * \brief Quick random access to sequences in a fasta file using an index */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "fastafileindexer.h" #include #include #include #include #include "../exception/exceptionoutofrange.h" #include "fastareader.h" namespace pappso { FastaFileIndexer::FastaFileIndexer(const QFileInfo &fastaFile) : m_fasta_file(fastaFile.absoluteFilePath()) { if(m_fasta_file.fileName().isEmpty()) { throw PappsoException(QObject::tr("No FASTA file name specified")); } if(m_fasta_file.open(QIODevice::ReadOnly)) { parseFastaFile(); m_fasta_file.close(); } else { throw PappsoException(QObject::tr("ERROR opening FASTA file %1 for read") .arg(fastaFile.fileName())); } } FastaFileIndexer::FastaFileIndexer(const FastaFileIndexer &other) : m_fasta_file(other.m_fasta_file.fileName()) { m_indexArray = other.m_indexArray; mpa_sequenceTxtIn = nullptr; } FastaFileIndexer::~FastaFileIndexer() { close(); } void FastaFileIndexer::parseFastaFile() { qDebug(); QDataStream bin_in(&m_fasta_file); qint64 position = 0; // QChar first_char; // txt_in >> first_char; qint8 char_in; bin_in >> char_in; while(!bin_in.atEnd() && (char_in < (qint8)21)) { // eat Windows \r\n position++; bin_in >> char_in; } while(!bin_in.atEnd()) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " first_char=" << first_char; if(char_in == (qint8)'>') { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " index=" << m_indexArray.size() // << " position=" << position; m_indexArray.push_back(position); } // eat line position++; bin_in >> char_in; while(!bin_in.atEnd() && (char_in > (qint8)20)) { position++; bin_in >> char_in; } position++; bin_in >> char_in; if(!bin_in.atEnd() && (char_in < (qint8)21)) { // eat Windows \r\n position++; bin_in >> char_in; } } qDebug(); } void FastaFileIndexer::open() { if(mpa_sequenceTxtIn != nullptr) return; if(m_fasta_file.open(QIODevice::ReadOnly)) { mpa_sequenceTxtIn = new QTextStream(&m_fasta_file); } else { throw PappsoException(QObject::tr("ERROR opening FASTA file %1 for read") .arg(m_fasta_file.fileName())); } } void FastaFileIndexer::close() { if(mpa_sequenceTxtIn != nullptr) { delete mpa_sequenceTxtIn; mpa_sequenceTxtIn = nullptr; m_fasta_file.close(); } } void FastaFileIndexer::getSequenceByIndex(FastaHandlerInterface &fasta_handler, std::size_t index) { open(); qDebug() << " goto=" << index << " pos=" << m_indexArray[index]; bool seek_ok; if((index < m_indexArray.size()) && (seek_ok = mpa_sequenceTxtIn->seek(m_indexArray[index]))) { qDebug() << " realpos=" << mpa_sequenceTxtIn->pos(); ; if(!seek_ok) { throw PappsoException(QObject::tr("ERROR FastaFileIndexer : seek to " "sequence %1, position %2 failed") .arg(index) .arg(m_indexArray[index])); } FastaReader reader(fasta_handler); reader.parseOnlyOne(*mpa_sequenceTxtIn); } else { throw ExceptionOutOfRange( QObject::tr("ERROR reading FASTA file %1 : sequence index %2 " "unreachable, array size=%3") .arg(m_fasta_file.fileName()) .arg(index) .arg(m_indexArray.size())); } } FastaFileIndexerSPtr FastaFileIndexer::makeFastaFileIndexerSPtr() const { return std::make_shared(*this); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/fastafileindexer.h000644 001750 001750 00000004332 14346367014 025470 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/fasta/fastafileindexer.h * \date 22/06/2109 * \author Olivier Langella * \brief Quick random access to sequences in a fasta file using an index */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include #include "fastahandlerinterface.h" namespace pappso { class PMSPP_LIB_DECL FastaFileIndexerInterface { public: virtual void open() = 0; virtual void getSequenceByIndex(FastaHandlerInterface &fasta_handler, std::size_t index) = 0; virtual void close() = 0; }; class FastaFileIndexer; typedef std::shared_ptr FastaFileIndexerSPtr; class PMSPP_LIB_DECL FastaFileIndexer : public FastaFileIndexerInterface { public: FastaFileIndexer(const QFileInfo &fastaFile); FastaFileIndexer(const FastaFileIndexer &other); virtual ~FastaFileIndexer(); void getSequenceByIndex(FastaHandlerInterface &fasta_handler, std::size_t index) override; void open() override; void close() override; FastaFileIndexerSPtr makeFastaFileIndexerSPtr() const; private: void parseFastaFile(); private: QFile m_fasta_file; std::vector m_indexArray; QTextStream *mpa_sequenceTxtIn = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/fastahandlerinterface.h000644 001750 001750 00000002506 14346367014 026471 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../exportinmportconfig.h" namespace pappso { class FastaHandlerInterface { public: virtual void setSequence(const QString &description, const QString &sequence) = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/fastaoutputstream.cpp000644 001750 001750 00000003001 14526455546 026301 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "fastaoutputstream.h" namespace pappso { FastaOutputStream::FastaOutputStream(QTextStream &otxtstream) : m_ofastastream(otxtstream) { } FastaOutputStream::~FastaOutputStream() { } void FastaOutputStream::writeProtein(const Protein &protein) { m_ofastastream << ">" << protein.getAccession() << " " << protein.getDescription() << Qt::endl; m_ofastastream << protein.getSequence() << Qt::endl; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/fastaoutputstream.h000644 001750 001750 00000002473 14346367014 025752 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "fastawriterinterface.h" namespace pappso { class PMSPP_LIB_DECL FastaOutputStream : public FastaWriterInterface { public: FastaOutputStream(QTextStream &otxtstream); ~FastaOutputStream(); void writeProtein(const Protein &protein) override; private: QTextStream &m_ofastastream; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/fastareader.cpp000644 001750 001750 00000006600 14526455546 024777 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include #include #include "fastareader.h" #include "../pappsoexception.h" namespace pappso { FastaReader::FastaReader(FastaHandlerInterface &handler) : m_handler(handler) { } FastaReader::~FastaReader() { } void FastaReader::parse(QFile &fastaFile) { if(fastaFile.fileName().isEmpty()) { throw PappsoException(QObject::tr("No FASTA file name specified")); } if(fastaFile.open(QIODevice::ReadOnly)) { parse(&fastaFile); fastaFile.close(); } else { throw PappsoException(QObject::tr("ERROR opening FASTA file %1 for read") .arg(fastaFile.fileName())); } } void FastaReader::parse(QIODevice *p_inputstream) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; QTextStream p_in(p_inputstream); QString accession = ""; QString sequence = ""; // Search accession conta // QTextStream in(p_in); QString line = p_in.readLine(); while(!p_in.atEnd()) { if(line.startsWith(">")) { if(!accession.isEmpty()) { m_handler.setSequence(accession, sequence); } sequence = ""; accession = line.remove(0, 1); } else { sequence.append(line); // m_handler.setSequence(line); } line = p_in.readLine(); } if(!accession.isEmpty()) { sequence.append(line); m_handler.setSequence(accession, sequence); } // p_in->close(); qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } void FastaReader::parseOnlyOne(QTextStream &p_in) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; QString accession = ""; QString sequence = ""; // Search accession conta // QTextStream in(p_in); QString line = p_in.readLine(); while(!p_in.atEnd()) { if(line.startsWith(">")) { if(!accession.isEmpty()) { m_handler.setSequence(accession, sequence); return; } sequence = ""; accession = line.remove(0, 1); } else { sequence.append(line); // m_handler.setSequence(line); } line = p_in.readLine(); } if(!accession.isEmpty()) { sequence.append(line); m_handler.setSequence(accession, sequence); } qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/fastareader.h000644 001750 001750 00000002674 14346367014 024443 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include #include "fastahandlerinterface.h" namespace pappso { class FastaFileIndexer; class PMSPP_LIB_DECL FastaReader { friend FastaFileIndexer; public: FastaReader(FastaHandlerInterface &handler); ~FastaReader(); void parse(QFile &fastaFile); void parse(QIODevice *p_inputstream); protected: void parseOnlyOne(QTextStream &p_in); private: FastaHandlerInterface &m_handler; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/fasta/fastawriterinterface.h000644 001750 001750 00000002212 14346367014 026362 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../protein/protein.h" namespace pappso { class FastaWriterInterface { public: virtual void writeProtein(const Protein &protein) = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/000755 001750 001750 00000000000 14533473271 022535 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/grouping/grpexperiment.cpp000644 001750 001750 00000024404 14526455546 026145 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "grpexperiment.h" #include "grpprotein.h" #include "grppeptide.h" #include "grpgroup.h" #include "grpsubgroup.h" #include "../pappsoexception.h" #include using namespace pappso; GrpExperiment::GrpExperiment(GrpGroupingMonitorInterface *p_monitor) { mp_monitor = p_monitor; } GrpExperiment::~GrpExperiment() { } void GrpExperiment::setRemoveNonInformativeSubgroups(bool ok) { m_isRemoveNonInformativeSubgroups = ok; } void GrpExperiment::addPostGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein) { GrpPeptideSet peptide_set(sp_protein.get()); m_grpPostGroupingProteinListRemoval.addAll(peptide_set); } void GrpExperiment::addPreGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein) { GrpPeptideSet peptide_set(sp_protein.get()); m_grpPreGroupingProteinListRemoval.addAll(peptide_set); } std::vector GrpExperiment::getGrpGroupSpList() const { std::vector grp_list; for(GrpGroupSp group : m_grpGroupSpList) { grp_list.push_back(group); } return grp_list; } GrpProteinSp & GrpExperiment::getGrpProteinSp(const QString &accession, const QString &description) { GrpProtein grpProtein(accession, description); auto insertedPair = m_mapProteins.insert(std::pair( accession, std::make_shared(grpProtein))); if(insertedPair.second) { m_grpProteinList.push_back(insertedPair.first->second); m_remainingGrpProteinList.push_back(insertedPair.first->second.get()); } return (insertedPair.first->second); } GrpPeptideSp & GrpExperiment::setGrpPeptide(const GrpProteinSp &proteinSp, const QString &sequence, pappso_double mass) { proteinSp.get()->countPlus(); GrpPeptideSp sp_grppeptide = std::make_shared(GrpPeptide(sequence, mass)); auto insertedPair = m_mapPeptides.insert( std::pair>( sp_grppeptide.get()->m_sequence, std::map())); auto secondInsertedPair = insertedPair.first->second.insert(std::pair( (unsigned long)(mass * 100), sp_grppeptide)); if(secondInsertedPair.second) { m_grpPeptideList.push_back(secondInsertedPair.first->second); } proteinSp.get()->push_back(secondInsertedPair.first->second.get()); return (secondInsertedPair.first->second); } void GrpExperiment::startGrouping() { qDebug() << "GrpExperiment::startGrouping begin"; if(mp_monitor != nullptr) mp_monitor->startGrouping(m_remainingGrpProteinList.size(), m_grpPeptideList.size()); m_isGroupingStarted = true; m_mapPeptides.clear(); m_mapProteins.clear(); qDebug() << "GrpExperiment::startGrouping sort protein list " "m_remainingGrpProteinList.size() " << m_remainingGrpProteinList.size(); // m_remainingGrpProteinList.sort(); // m_remainingGrpProteinList.unique(); if(m_grpPreGroupingProteinListRemoval.size() > 0) { // TODO clean protein list to remove contaminant peptides before grouping } GrpMapPeptideToGroup grp_map_peptide_to_group; qDebug() << "GrpExperiment::startGrouping grouping begin"; for(auto p_grpProtein : m_remainingGrpProteinList) { p_grpProtein->strip(); if(p_grpProtein->m_count == 0) { // no peptides : do not group this protein } else { GrpSubGroupSp grpSubGroupSp = GrpSubGroup(p_grpProtein).makeGrpSubGroupSp(); if(mp_monitor != nullptr) mp_monitor->groupingProtein(); this->addSubGroupSp(grp_map_peptide_to_group, grpSubGroupSp); } } grp_map_peptide_to_group.clear(m_grpGroupSpList); qDebug() << "GrpExperiment::startGrouping grouping end"; qDebug() << "GrpExperiment::startGrouping grouping m_grpGroupSpList.size() " << m_grpGroupSpList.size(); if(m_isRemoveNonInformativeSubgroups) { this->removeNonInformativeSubGroups(); } // post grouping protein group removal // remove any group containing contaminants m_grpGroupSpList.remove_if([this](GrpGroupSp &groupSp) { return ( groupSp.get()->containsAny(this->m_grpPostGroupingProteinListRemoval)); }); numbering(); if(mp_monitor != nullptr) mp_monitor->stopGrouping(); // GrpGroup(this, *m_remainingGrpProteinList.begin()); qDebug() << "GrpExperiment::startGrouping end"; } struct ContainsAny { ContainsAny(const GrpPeptideSet &peptide_set) : _peptide_set(peptide_set) { } typedef bool result_type; bool operator()(const GrpGroupSp &testGroupSp) { return testGroupSp.get()->containsAny(_peptide_set); } GrpPeptideSet _peptide_set; }; void GrpExperiment::addSubGroupSp(GrpMapPeptideToGroup &grp_map_peptide_to_group, GrpSubGroupSp &grpSubGroupSp) const { qDebug() << "GrpExperiment::addSubGroupSp begin " << grpSubGroupSp.get()->getFirstAccession(); std::list new_group_list; grp_map_peptide_to_group.getGroupList(grpSubGroupSp.get()->getPeptideSet(), new_group_list); if(new_group_list.size() == 0) { qDebug() << "GrpExperiment::addSubGroupSp create a new group"; // create a new group GrpGroupSp sp_group = GrpGroup(grpSubGroupSp).makeGrpGroupSp(); // m_grpGroupSpList.push_back(sp_group); grp_map_peptide_to_group.set(grpSubGroupSp.get()->getPeptideSet(), sp_group); } else { qDebug() << "GrpExperiment::addSubGroupSp fusion groupList.size() " << new_group_list.size(); // fusion group and add the subgroup auto itGroup = new_group_list.begin(); GrpGroupSp p_keepGroup = *itGroup; qDebug() << "GrpExperiment::addSubGroupSp " "p_keepGroup->addSubGroupSp(grpSubGroupSp) " << p_keepGroup.get(); p_keepGroup->addSubGroupSp(grpSubGroupSp); grp_map_peptide_to_group.set(grpSubGroupSp.get()->getPeptideSet(), p_keepGroup); itGroup++; while(itGroup != new_group_list.end()) { qDebug() << "GrpExperiment::addSubGroupSp p_keepGroup->addGroup(*itGroup) " << itGroup->get(); p_keepGroup->addGroup(itGroup->get()); grp_map_peptide_to_group.set((*itGroup)->getGrpPeptideSet(), p_keepGroup); // m_grpGroupSpList.remove_if([itGroup](GrpGroupSp & groupSp) { // return (itGroup->get() == groupSp.get()) ; //}); itGroup++; } } qDebug() << "GrpExperiment::addSubGroupSp end"; } void GrpExperiment::numbering() { qDebug() << "GrpExperiment::numbering begin"; if(mp_monitor != nullptr) mp_monitor->startNumberingAllGroups(m_grpGroupSpList.size()); for(auto &&group_sp : m_grpGroupSpList) { group_sp.get()->numbering(); } m_grpGroupSpList.sort([](GrpGroupSp &first, GrpGroupSp &second) { return ((*first.get()) < (*second.get())); }); unsigned int i = 1; for(auto &&group_sp : m_grpGroupSpList) { group_sp.get()->setGroupNumber(i); i++; } qDebug() << "GrpExperiment::numbering end"; } std::vector GrpExperiment::getGrpProteinSpList() const { std::vector grouped_protein_list; if(!m_isGroupingStarted) { throw PappsoException( QObject::tr("unable to get grouped protein list before grouping")); } for(auto &&protein_sp : m_grpProteinList) { if(protein_sp.get()->getGroupNumber() > 0) { grouped_protein_list.push_back(protein_sp); } } return grouped_protein_list; } void GrpExperiment::removeNonInformativeSubGroups() { qDebug() << "GrpExperiment::removeNonInformativeSubGroups begin"; if(mp_monitor != nullptr) mp_monitor->startRemovingNonInformativeSubGroupsInAllGroups( m_grpGroupSpList.size()); std::list old_grp_group_sp_list(m_grpGroupSpList); m_grpGroupSpList.clear(); auto it_group = old_grp_group_sp_list.begin(); while(it_group != old_grp_group_sp_list.end()) { if(mp_monitor != nullptr) mp_monitor->removingNonInformativeSubGroupsInGroup(); if(it_group->get()->removeNonInformativeSubGroups()) { // need to regroup it GrpGroupSp old_group_sp = *it_group; GrpMapPeptideToGroup grp_map_peptide_to_group; std::list dispatch_sub_group_set = old_group_sp.get()->getSubGroupSpList(); for(GrpSubGroupSp &grp_subgroup : dispatch_sub_group_set) { addSubGroupSp(grp_map_peptide_to_group, grp_subgroup); } grp_map_peptide_to_group.clear(m_grpGroupSpList); } else { qDebug() << "GrpExperiment::removeNonInformativeSubGroups no " "removeNonInformativeSubGroups"; m_grpGroupSpList.push_back(*it_group); } it_group++; } if(mp_monitor != nullptr) mp_monitor->stopRemovingNonInformativeSubGroupsInAllGroups( m_grpGroupSpList.size()); qDebug() << "GrpExperiment::removeNonInformativeSubGroups end"; } libpappsomspp-0.9.20/src/pappsomspp/grouping/grpexperiment.h000644 001750 001750 00000006154 14346367014 025604 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include #include "../types.h" #include "grpgroupingmonitor.h" #include "grppeptideset.h" #include "grpmappeptidetogroup.h" #include "grpgroup.h" #include "grpsubgroup.h" namespace pappso { class PMSPP_LIB_DECL GrpExperiment { private: GrpGroupingMonitorInterface *mp_monitor = nullptr; bool m_isRemoveNonInformativeSubgroups = true; std::map m_mapProteins; std::map> m_mapPeptides; std::list m_grpPeptideList; std::list m_grpProteinList; bool m_isGroupingStarted = false; std::list m_remainingGrpProteinList; GrpPeptideSet m_grpPostGroupingProteinListRemoval; GrpPeptideSet m_grpPreGroupingProteinListRemoval; std::list m_grpGroupSpList; void addSubGroupSp(GrpMapPeptideToGroup &grp_map_peptide_to_group, GrpSubGroupSp &grpSubGroupSp) const; void numbering(); void removeNonInformativeSubGroups(); public: GrpProteinSp &getGrpProteinSp(const QString &acc, const QString &description); GrpPeptideSp &setGrpPeptide(const GrpProteinSp &proteinSp, const QString &sequence, pappso_double mass); GrpExperiment(GrpGroupingMonitorInterface *p_monitor); virtual ~GrpExperiment(); void startGrouping(); std::vector getGrpProteinSpList() const; void setRemoveNonInformativeSubgroups(bool ok); /** @brief protein to remove with its entire group after grouping is completed * typically : to use with protein contaminants if you want to ignore any * group containing one contaminant protein */ void addPostGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein); /** @brief protein peptides to remove before grouping * typically : remove protein contaminants in special metaproteomics cases */ void addPreGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein); std::vector getGrpGroupSpList() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpgroup.cpp000644 001750 001750 00000023533 14526455546 025123 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "grppeptideset.h" #include "grpsubgroup.h" #include "grppeptide.h" #include "grpsubgroupset.h" #include "grpgroup.h" #include "grpexperiment.h" #include "../pappsoexception.h" #include "../utils.h" using namespace pappso; GrpGroup::GrpGroup(GrpSubGroupSp &grpSubGroupSp) { m_peptideSet.addAll(grpSubGroupSp.get()->getPeptideSet()); m_subGroupList.push_back(grpSubGroupSp); m_mapPeptideToSubGroupSet.add(grpSubGroupSp.get()); } GrpGroup::GrpGroup(const GrpGroup &other) : m_subGroupList(other.m_subGroupList), m_peptideSet(other.m_peptideSet), m_mapPeptideToSubGroupSet(other.m_mapPeptideToSubGroupSet) { } GrpGroup::~GrpGroup() { } std::vector GrpGroup::getGrpSubGroupSpList() const { std::vector subgroup_list; for(GrpSubGroupSp subgroup : m_subGroupList) { subgroup_list.push_back(subgroup); } return subgroup_list; }; const std::list & GrpGroup::getSubGroupSpList() const { return m_subGroupList; } const GrpPeptideSet & GrpGroup::getGrpPeptideSet() const { return m_peptideSet; } unsigned int GrpGroup::getGroupNumber() const { return m_groupNumber; } const QString GrpGroup::getGroupingId() const { if(m_groupNumber == 0) { return ""; } return QString("%1").arg(Utils::getLexicalOrderedString(m_groupNumber)); } bool GrpGroup::operator<(const GrpGroup &other) const { return ((*(m_subGroupList.begin()->get())) < (*(other.m_subGroupList.begin()->get()))); } GrpGroupSp GrpGroup::makeGrpGroupSp() { return std::make_shared(*this); } bool GrpGroup::containsAny(const GrpPeptideSet &peptideSet) const { return m_peptideSet.containsAny(peptideSet); } void GrpGroup::addGroup(GrpGroup *p_group_to_add) { if(this == p_group_to_add) { throw PappsoException( QObject::tr("addGroup ERROR, this == p_group_to_add")); } for(GrpSubGroupSp &sgToAdd : p_group_to_add->m_subGroupList) { addSubGroupSp(sgToAdd); } } void GrpGroup::check() const { qDebug() << "GrpGroup::check begin "; GrpSubGroupSet impacted_subgroup_list; m_mapPeptideToSubGroupSet.getSubGroupSet(this->m_peptideSet, impacted_subgroup_list); // if (impacted_subgroup_list.size() != this->m_subGroupList.size()) { qDebug() << "GrpGroup::check impacted_subgroup_list.size() != " "this->m_subGroupList.size()"; qDebug() << impacted_subgroup_list.printInfos(); for(auto sg : m_subGroupList) { qDebug() << sg->getFirstAccession() << " " << sg.get(); } //} qDebug() << m_mapPeptideToSubGroupSet.printInfos(); qDebug() << m_peptideSet.printInfos(); qDebug() << "GrpGroup::check end "; } void GrpGroup::addSubGroupSp(const GrpSubGroupSp &grpSubGroupSp) { qDebug() << "GrpGroup::addSubGroupSp begin " << grpSubGroupSp.get()->getFirstAccession(); // look for impacted subgroups (containing peptides alsoe present in incoming // subgroup GrpSubGroupSet impacted_subgroup_list; m_mapPeptideToSubGroupSet.getSubGroupSet(grpSubGroupSp.get()->getPeptideSet(), impacted_subgroup_list); if(impacted_subgroup_list.contains(grpSubGroupSp.get())) { throw PappsoException( QObject::tr("addSubGroupSp ERROR, subgroup %1 is already in group") .arg(grpSubGroupSp.get()->getFirstAccession())); } // look for impacted subgroup equal to incoming subgroup and merge it and exit qDebug() << "GrpGroup::addSubGroupSp look for impacted subgroup equal to " "incoming subgroup and merge it and exit"; auto it_impacted_sg = impacted_subgroup_list.m_grpSubGroupPtrList.begin(); auto it_impacted_sg_end = impacted_subgroup_list.m_grpSubGroupPtrList.end(); while(it_impacted_sg != it_impacted_sg_end) { if((*it_impacted_sg)->merge(grpSubGroupSp.get())) { qDebug() << "GrpGroup::addSubGroupSp merge"; return; } it_impacted_sg++; } // look for impacted subgroup including totally the incoming subgroup and exit qDebug() << "GrpGroup::addSubGroupSp look for impacted subgroup including " "totally the incoming subgroup and exit"; it_impacted_sg = impacted_subgroup_list.m_grpSubGroupPtrList.begin(); while(it_impacted_sg != it_impacted_sg_end) { if((*it_impacted_sg)->includes(grpSubGroupSp.get())) { qDebug() << "GrpGroup::addSubGroupSp includes"; return; } it_impacted_sg++; } // look for impacted subgroup totally included in incoming subgroup and remove // it qDebug() << "GrpGroup::addSubGroupSp look for impacted subgroup totally " "included in incoming subgroup and remove it"; it_impacted_sg = impacted_subgroup_list.m_grpSubGroupPtrList.begin(); while(it_impacted_sg != it_impacted_sg_end) { if(grpSubGroupSp.get()->includes((*it_impacted_sg))) { // this->removeSubGroup(*it_impacted_sg); // it_impacted_sg = impacted_subgroup_list.erase(it_impacted_sg); GrpSubGroup *sg_to_remove = *it_impacted_sg; it_impacted_sg = impacted_subgroup_list.erase(it_impacted_sg); m_mapPeptideToSubGroupSet.remove(sg_to_remove); m_subGroupList.remove_if([sg_to_remove](GrpSubGroupSp &sub_groupSp) { return (sg_to_remove == sub_groupSp.get()); }); // m_mapPeptideToSubGroupSet.check(m_subGroupList); } else { it_impacted_sg++; } } qDebug() << "GrpGroup::addSubGroupSp finally add the new subgroup to current group"; // finally add the new subgroup to current group m_subGroupList.push_back(grpSubGroupSp); m_mapPeptideToSubGroupSet.add(grpSubGroupSp.get()); m_peptideSet.addAll(grpSubGroupSp.get()->getPeptideSet()); // check(); // m_mapPeptideToSubGroupSet.check(m_subGroupList); qDebug() << "GrpGroup::addSubGroupSp end"; } void GrpGroup::setGroupNumber(unsigned int i) { qDebug() << "GrpGroup::setGroupNumber begin"; m_groupNumber = i; for(auto &&sub_group_sp : m_subGroupList) { sub_group_sp->setGroupNumber(i); } m_peptideSet.setGroupNumber(i); qDebug() << "GrpGroup::setGroupNumber end"; } void GrpGroup::numbering() { qDebug() << "GrpGroup::numbering begin"; for(auto &&sub_group_sp : m_subGroupList) { sub_group_sp.get()->numbering(); } m_subGroupList.sort([](GrpSubGroupSp &first, GrpSubGroupSp &second) { return ((*first.get()) < (*second.get())); }); unsigned int i = 1; for(auto &&sub_group_sp : m_subGroupList) { sub_group_sp.get()->setSubGroupNumber(i); i++; } m_peptideSet.numbering(); qDebug() << "GrpGroup::numbering end"; } bool GrpGroup::removeFirstNonInformativeSubGroup() { qDebug() << "GrpGroup::removeFirstNonInformativeSubGroup begin"; std::list subgroup_list_to_remove; for(auto &&sub_group_sp : m_subGroupList) { if(m_mapPeptideToSubGroupSet.hasSpecificPeptide(sub_group_sp.get())) { } else { subgroup_list_to_remove.push_back(sub_group_sp.get()); } } if(subgroup_list_to_remove.size() == 0) { qDebug() << "GrpGroup::removeFirstNonInformativeSubGroup end false"; return false; } // sort subgroup to remove subgroup_list_to_remove.sort([](GrpSubGroup *first, GrpSubGroup *second) { return ((*first) < (*second)); }); // remove the last one qDebug() << "GrpGroup::removeFirstNonInformativeSubGroup " "subgroup_list_to_remove.front()->peptideListSize() " << subgroup_list_to_remove.front()->peptideListSize(); qDebug() << "GrpGroup::removeFirstNonInformativeSubGroup " "subgroup_list_to_remove.back()->peptideListSize() " << subgroup_list_to_remove.back()->peptideListSize(); // the first subgroup is weaker (less peptides or less protein than others) GrpSubGroup *sg_to_remove = subgroup_list_to_remove.front(); m_mapPeptideToSubGroupSet.remove(sg_to_remove); qDebug() << "GrpGroup::removeFirstNonInformativeSubGroup m_subGroupList.size() " << m_subGroupList.size(); m_subGroupList.remove_if([sg_to_remove](GrpSubGroupSp &sub_groupSp) { return (sg_to_remove == sub_groupSp.get()); }); qDebug() << "GrpGroup::removeFirstNonInformativeSubGroup after remove if " "m_subGroupList.size() " << m_subGroupList.size(); qDebug() << "GrpGroup::removeFirstNonInformativeSubGroup end true"; return true; } bool GrpGroup::removeNonInformativeSubGroups() { qDebug() << "GrpGroup::removeNonInformativeSubGroups begin"; if(removeFirstNonInformativeSubGroup()) { while(removeFirstNonInformativeSubGroup()) { qDebug() << "GrpGroup::removeNonInformativeSubGroups while"; } } else { return false; } return true; } libpappsomspp-0.9.20/src/pappsomspp/grouping/grpgroup.h000644 001750 001750 00000004525 14346367014 024560 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "grpsubgroup.h" #include "grpmappeptidetosubgroupset.h" namespace pappso { class GrpExperiment; class GrpGroup; typedef std::shared_ptr GrpGroupSp; typedef std::shared_ptr GrpGroupSpConst; class PMSPP_LIB_DECL GrpGroup { friend class GrpExperiment; private: std::list m_subGroupList; unsigned int m_groupNumber = 0; GrpPeptideSet m_peptideSet; GrpMapPeptideToSubGroupSet m_mapPeptideToSubGroupSet; protected: const std::list &getSubGroupSpList() const; GrpGroup(GrpSubGroupSp &grpSubGroupSp); GrpGroupSp makeGrpGroupSp(); bool removeFirstNonInformativeSubGroup(); void check() const; public: GrpGroup(const GrpGroup &grpGroupSp); ~GrpGroup(); bool operator<(const GrpGroup &other) const; bool containsAny(const GrpPeptideSet &peptideSet) const; void addSubGroupSp(const GrpSubGroupSp &grpSubGroupSp); void addGroup(GrpGroup *p_group_to_add); void numbering(); void setGroupNumber(unsigned int i); bool removeNonInformativeSubGroups(); const QString getGroupingId() const; unsigned int getGroupNumber() const; const GrpPeptideSet &getGrpPeptideSet() const; std::vector getGrpSubGroupSpList() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpgroupingmonitor.cpp000644 001750 001750 00000006077 14526455546 027235 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include #include "grpgroupingmonitor.h" namespace pappso { GrpGroupingMonitorInterface::~GrpGroupingMonitorInterface() { } GrpGroupingMonitor::GrpGroupingMonitor() { mp_outStream = new QTextStream(stderr, QIODevice::WriteOnly); } GrpGroupingMonitor::~GrpGroupingMonitor() { mp_outStream->flush(); delete mp_outStream; } void GrpGroupingMonitor::startGrouping(std::size_t total_number_protein, std::size_t total_number_peptide) { m_totalNumberProtein = total_number_protein; m_totalNumberPeptide = total_number_peptide; m_currentProtein = 0; (*mp_outStream) << "start grouping " << m_totalNumberProtein << " proteins " << total_number_peptide << " peptides\n"; mp_outStream->flush(); } void GrpGroupingMonitor::groupingProtein() { m_currentProtein++; (*mp_outStream) << "grouping protein " << m_currentProtein << " on " << m_totalNumberProtein << "\n"; mp_outStream->flush(); } void GrpGroupingMonitor::startRemovingNonInformativeSubGroupsInAllGroups( std::size_t total_number_group) { (*mp_outStream) << "removing non informative subgroups in all groups (" << total_number_group << ")\n"; mp_outStream->flush(); } void GrpGroupingMonitor::stopRemovingNonInformativeSubGroupsInAllGroups( std::size_t total_number_group) { (*mp_outStream) << "removing non informative subgroups finished, remaining " << total_number_group << " groups\n"; mp_outStream->flush(); } void GrpGroupingMonitor::removingNonInformativeSubGroupsInGroup() { (*mp_outStream) << "removing non informative on a single group\n"; mp_outStream->flush(); } void GrpGroupingMonitor::startNumberingAllGroups(std::size_t total_number_group) { (*mp_outStream) << "numbering " << total_number_group << " groups\n"; mp_outStream->flush(); } void GrpGroupingMonitor::stopGrouping() { (*mp_outStream) << "grouping finished\n"; mp_outStream->flush(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpgroupingmonitor.h000644 001750 001750 00000005353 14346367014 026666 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL GrpGroupingMonitorInterface { public: virtual ~GrpGroupingMonitorInterface(); virtual void startGrouping(std::size_t total_number_protein, std::size_t total_number_peptide) = 0; virtual void groupingProtein() = 0; virtual void startRemovingNonInformativeSubGroupsInAllGroups( std::size_t total_number_group) = 0; virtual void stopRemovingNonInformativeSubGroupsInAllGroups( std::size_t total_number_group) = 0; virtual void removingNonInformativeSubGroupsInGroup() = 0; virtual void startNumberingAllGroups(std::size_t total_number_group) = 0; virtual void stopGrouping() = 0; }; class PMSPP_LIB_DECL GrpGroupingMonitor : public GrpGroupingMonitorInterface { private: QTextStream *mp_outStream; std::size_t m_totalNumberProtein; std::size_t m_totalNumberPeptide; std::size_t m_currentProtein; public: GrpGroupingMonitor(); virtual ~GrpGroupingMonitor(); virtual void startGrouping(std::size_t total_number_protein, std::size_t total_number_peptide); virtual void groupingProtein(); virtual void startRemovingNonInformativeSubGroupsInAllGroups( std::size_t total_number_group); virtual void stopRemovingNonInformativeSubGroupsInAllGroups( std::size_t total_number_group); virtual void removingNonInformativeSubGroupsInGroup(); virtual void startNumberingAllGroups(std::size_t total_number_group); virtual void stopGrouping(); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpmappeptidetogroup.cpp000644 001750 001750 00000006246 14526455546 027541 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/grouping/grpmappeptidegroup.cpp * \date 15/12/2017 * \author Olivier Langella * \brief keep trace of peptide to group assignment */ /******************************************************************************* * Copyright (c) 2017 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "grpmappeptidetogroup.h" namespace pappso { GrpMapPeptideToGroup::GrpMapPeptideToGroup() { } GrpMapPeptideToGroup::GrpMapPeptideToGroup(const GrpMapPeptideToGroup &other) : m_mapPeptideToGroup(other.m_mapPeptideToGroup) { } GrpMapPeptideToGroup::~GrpMapPeptideToGroup() { } void GrpMapPeptideToGroup::getGroupList( const GrpPeptideSet &peptide_set_in, std::list &impacted_group_list) const { auto it_peptide_end = peptide_set_in.m_peptidePtrList.end(); std::map::const_iterator it_map_end = m_mapPeptideToGroup.end(); for(auto it_peptide = peptide_set_in.m_peptidePtrList.begin(); it_peptide != it_peptide_end; it_peptide++) { std::map::const_iterator it_map = m_mapPeptideToGroup.find(*it_peptide); if(it_map != it_map_end) { impacted_group_list.push_back(it_map->second); } } impacted_group_list.sort(); impacted_group_list.unique(); } void GrpMapPeptideToGroup::set(const GrpPeptideSet &peptide_set_in, GrpGroupSp grp_group) { auto it_peptide_end = peptide_set_in.m_peptidePtrList.end(); for(auto it_peptide = peptide_set_in.m_peptidePtrList.begin(); it_peptide != it_peptide_end; it_peptide++) { std::pair::iterator, bool> ret = m_mapPeptideToGroup.insert( std::pair(*it_peptide, grp_group)); if(ret.second == false) { //=> key already exists : replace by grp_group ret.first->second = grp_group; } } } void GrpMapPeptideToGroup::clear(std::list &grp_group_list) { std::list new_list; for(auto &pair_map : m_mapPeptideToGroup) { new_list.push_back(pair_map.second); } new_list.sort(); new_list.unique(); grp_group_list.splice(grp_group_list.end(), new_list); m_mapPeptideToGroup.clear(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpmappeptidetogroup.h000644 001750 001750 00000003770 14346367014 027175 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/grouping/grpmappeptidegroup.h * \date 15/12/2017 * \author Olivier Langella * \brief keep trace of peptide to group assignment */ /******************************************************************************* * Copyright (c) 2017 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #ifndef GRPMAPPEPTIDETOGROUP_H #define GRPMAPPEPTIDETOGROUP_H #include #include "grppeptideset.h" #include "grpgroup.h" namespace pappso { class GrpMapPeptideToGroup { private: std::map m_mapPeptideToGroup; public: GrpMapPeptideToGroup(); GrpMapPeptideToGroup(const GrpMapPeptideToGroup &other); ~GrpMapPeptideToGroup(); /** @brief get all groups concerned by a list of peptides */ void getGroupList(const GrpPeptideSet &peptide_set_in, std::list &impacted_group_list) const; /** @brief set peptide keys pointing on the group */ void set(const GrpPeptideSet &peptide_set_in, GrpGroupSp grp_group); void clear(std::list &grp_group_list); }; } // namespace pappso #endif // GRPMAPPEPTIDETOGROUP_H libpappsomspp-0.9.20/src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp000644 001750 001750 00000016061 14526455546 030763 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include "grpmappeptidetosubgroupset.h" #include "grppeptideset.h" #include "../pappsoexception.h" namespace pappso { GrpMapPeptideToSubGroupSet::GrpMapPeptideToSubGroupSet() { } GrpMapPeptideToSubGroupSet::~GrpMapPeptideToSubGroupSet() { } GrpMapPeptideToSubGroupSet::GrpMapPeptideToSubGroupSet( const GrpMapPeptideToSubGroupSet &other) : m_mapPeptideToSubGroupSet(other.m_mapPeptideToSubGroupSet) { } unsigned int GrpMapPeptideToSubGroupSet::GrpMapPeptideToSubGroupSet::size() const { return m_mapPeptideToSubGroupSet.size(); } void GrpMapPeptideToSubGroupSet::getSubGroupSet( const GrpPeptideSet &peptide_set_in, GrpSubGroupSet &impacted_subgroup_set) const { qDebug() << "GrpMapPeptideToSubGroupSet::getSubGroupSet begin "; auto it_peptide_end = peptide_set_in.m_peptidePtrList.end(); std::map::const_iterator it_map_end = m_mapPeptideToSubGroupSet.end(); for(auto it_peptide = peptide_set_in.m_peptidePtrList.begin(); it_peptide != it_peptide_end; it_peptide++) { std::map::const_iterator it_map = m_mapPeptideToSubGroupSet.find(*it_peptide); if(it_map != it_map_end) { impacted_subgroup_set.addAll(it_map->second); } } qDebug() << "GrpMapPeptideToSubGroupSet::getSubGroupSet end "; } void GrpMapPeptideToSubGroupSet::check( std::list &m_grpSubGroupSpList) const { qDebug() << "GrpMapPeptideToSubGroupSet::std begin "; GrpMapPeptideToSubGroupSet test(*this); qDebug() << "GrpMapPeptideToSubGroupSet::std before test.size() " << test.size(); for(auto pair : m_mapPeptideToSubGroupSet) { qDebug() << "GrpMapPeptideToSubGroupSet::std before peptide " << pair.first->getSequence() << " " << pair.first; } for(GrpSubGroupSp &sub_group_sp : m_grpSubGroupSpList) { test.remove(sub_group_sp.get()); } qDebug() << "GrpMapPeptideToSubGroupSet::std after test.size() " << test.size(); qDebug() << "GrpMapPeptideToSubGroupSet::std begin "; } void GrpMapPeptideToSubGroupSet::remove(GrpSubGroup *p_remove_sub_group) { qDebug() << "GrpMapPeptideToSubGroupSet::remove begin " << p_remove_sub_group->getFirstAccession(); // std::list> // m_mapPeptideToSubGroupSet; const GrpPeptideSet &peptide_set_in = p_remove_sub_group->getPeptideSet(); auto it_peptide_end = peptide_set_in.m_peptidePtrList.end(); std::map::const_iterator it_map_end = m_mapPeptideToSubGroupSet.end(); for(auto it_peptide = peptide_set_in.m_peptidePtrList.begin(); it_peptide != it_peptide_end; it_peptide++) { std::map::iterator it_map = m_mapPeptideToSubGroupSet.find(*it_peptide); if(it_map != it_map_end) { it_map->second.remove(p_remove_sub_group); if(it_map->second.size() == 0) { m_mapPeptideToSubGroupSet.erase(it_map); } } else { throw PappsoException( QObject::tr("remove ERROR, peptide %1 from subgroup %2 not " "referenced in GrpMapPeptideToSubGroupSet") .arg((*it_peptide)->getSequence()) .arg(p_remove_sub_group->getFirstAccession())); } } qDebug() << "GrpMapPeptideToSubGroupSet::remove end " << p_remove_sub_group->getFirstAccession(); } void GrpMapPeptideToSubGroupSet::add(GrpSubGroup *p_add_sub_group) { qDebug() << "GrpMapPeptideToSubGroupSet::add begin m_mapPeptideToSubGroupSet.size()" << m_mapPeptideToSubGroupSet.size(); const GrpPeptideSet &peptide_set_in = p_add_sub_group->getPeptideSet(); auto it_peptide_end = peptide_set_in.m_peptidePtrList.end(); for(auto it_peptide = peptide_set_in.m_peptidePtrList.begin(); it_peptide != it_peptide_end; it_peptide++) { std::pair::iterator, bool> ret = m_mapPeptideToSubGroupSet.insert( std::pair(*it_peptide, GrpSubGroupSet())); // if (ret.second==false) { => key already exists ret.first->second.add(p_add_sub_group); } qDebug() << "GrpMapPeptideToSubGroupSet::add end"; } bool GrpMapPeptideToSubGroupSet::hasSpecificPeptide( const GrpSubGroup *p_sub_group) const { qDebug() << "GrpMapPeptideToSubGroupSet::hasSpecificPeptide begin"; const GrpPeptideSet &peptide_set_in = p_sub_group->getPeptideSet(); auto it_peptide_end = peptide_set_in.m_peptidePtrList.end(); std::map::const_iterator it_map_end = m_mapPeptideToSubGroupSet.end(); for(auto it_peptide = peptide_set_in.m_peptidePtrList.begin(); it_peptide != it_peptide_end; it_peptide++) { std::map::const_iterator it_map = m_mapPeptideToSubGroupSet.find(*it_peptide); if(it_map != it_map_end) { if(it_map->second.size() == 1) { return true; } } else { throw PappsoException( QObject::tr("hasSpecificPeptide ERROR, peptide %1 from subgroup %2 " "not referenced in GrpMapPeptideToSubGroupSet") .arg((*it_peptide)->getSequence()) .arg(p_sub_group->getFirstAccession())); } } qDebug() << "GrpMapPeptideToSubGroupSet::hasSpecificPeptide end"; return false; } const QString GrpMapPeptideToSubGroupSet::printInfos() const { QString infos; auto itMap = m_mapPeptideToSubGroupSet.begin(); auto itMapEnd = m_mapPeptideToSubGroupSet.end(); while(itMap != itMapEnd) { infos.append( itMap->first->getSequence() + " " + QString("0x%1").arg( (quintptr)itMap->first, QT_POINTER_SIZE * 2, 16, QChar('0')) + "\n"); itMap++; } return infos; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpmappeptidetosubgroupset.h000644 001750 001750 00000004364 14346367014 030423 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "grppeptide.h" #include "grpsubgroupset.h" #include "grppeptideset.h" namespace pappso { class GrpMapPeptideToSubGroupSet { private: std::map m_mapPeptideToSubGroupSet; public: GrpMapPeptideToSubGroupSet(); GrpMapPeptideToSubGroupSet(const GrpMapPeptideToSubGroupSet &other); ~GrpMapPeptideToSubGroupSet(); /** @brief get all subgroups concerned by a list of peptides */ void getSubGroupSet(const GrpPeptideSet &peptide_set_in, GrpSubGroupSet &impacted_subgroup_set) const; /** @brief removes in the map all references of the group to remove * (p_remove_sub_group) */ void remove(GrpSubGroup *p_remove_sub_group); /** @brief add in the map all peptides of the subgroup to add */ void add(GrpSubGroup *p_add_sub_group); /** @brief tells if this subgroup contains a specific peptide */ bool hasSpecificPeptide(const GrpSubGroup *get) const; /** @brief check function only usefull for testing purpose */ void check(std::list &m_grpSubGroupSpList) const; unsigned int size() const; const QString printInfos() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grppeptide.cpp000644 001750 001750 00000004010 14526455546 025406 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "grppeptide.h" #include "../utils.h" using namespace pappso; GrpPeptide::GrpPeptide(QString sequence, pappso_double mass) : m_sequence(sequence.replace("L", "I")), m_mass(mass) { } GrpPeptide::~GrpPeptide() { } bool GrpPeptide::operator<(const GrpPeptide &other) const { if(m_sequence == other.m_sequence) { return (m_mass < other.m_mass); } else { return (m_sequence < other.m_sequence); } } void GrpPeptide::setRank(unsigned int i) { m_rank = i; } void GrpPeptide::setGroupNumber(unsigned int i) { m_groupNumber = i; } unsigned int GrpPeptide::getGroupNumber() const { return m_groupNumber; } unsigned int GrpPeptide::getRank() const { return m_rank; } const QString & GrpPeptide::getSequence() const { return m_sequence; } const QString GrpPeptide::getGroupingId() const { return QString("pep%1%2") .arg(Utils::getLexicalOrderedString(m_groupNumber)) .arg(Utils::getLexicalOrderedString(m_rank)); } libpappsomspp-0.9.20/src/pappsomspp/grouping/grppeptide.h000644 001750 001750 00000003772 14346367014 025061 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include "../types.h" #include "../exportinmportconfig.h" namespace pappso { class GrpPeptide; typedef std::shared_ptr GrpPeptideSpConst; typedef std::shared_ptr GrpPeptideSp; class PMSPP_LIB_DECL GrpPeptide { friend class GrpExperiment; private: unsigned int m_groupNumber = 0; unsigned int m_rank = 0; const QString m_sequence; const pappso_double m_mass; protected: GrpPeptide(QString sequence, pappso_double mass); public: ~GrpPeptide(); const QString &getSequence() const; /** \brief sort grp peptides between each other * sorts by peptide LI sequence and mass */ bool operator<(const GrpPeptide &other) const; void setRank(unsigned int i); void setGroupNumber(unsigned int i); const QString getGroupingId() const; unsigned int getGroupNumber() const; unsigned int getRank() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grppeptideset.cpp000644 001750 001750 00000014101 14526455546 026124 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "grppeptideset.h" using namespace pappso; GrpPeptideSet::GrpPeptideSet() { } GrpPeptideSet::GrpPeptideSet(const GrpProtein *p_protein) { auto it = p_protein->begin(); while(it != p_protein->end()) { m_peptidePtrList.push_back(*it); it++; } } GrpPeptideSet::GrpPeptideSet(const GrpPeptideSet &other) : m_peptidePtrList(other.m_peptidePtrList) { } GrpPeptideSet::~GrpPeptideSet() { } GrpPeptideSet & GrpPeptideSet::operator=(const GrpPeptideSet &other) { m_peptidePtrList = other.m_peptidePtrList; return *this; } bool GrpPeptideSet::operator==(const GrpPeptideSet &other) const { if(m_peptidePtrList.size() != other.m_peptidePtrList.size()) { return false; } return privContainsAll(other); } bool GrpPeptideSet::contains(const GrpPeptide *p_grp_peptide) const { if(std::find(m_peptidePtrList.begin(), m_peptidePtrList.end(), p_grp_peptide) == m_peptidePtrList.end()) { return false; } return true; } bool GrpPeptideSet::containsAll(const GrpPeptideSet &peptideSetIn) const { if(m_peptidePtrList.size() < peptideSetIn.m_peptidePtrList.size()) { return false; } return privContainsAll(peptideSetIn); } bool GrpPeptideSet::biggerAndContainsAll(const GrpPeptideSet &peptideSetIn) const { if(m_peptidePtrList.size() > peptideSetIn.m_peptidePtrList.size()) { return privContainsAll(peptideSetIn); } return false; } bool GrpPeptideSet::privContainsAll(const GrpPeptideSet &peptideSetIn) const { std::list::const_iterator innerIt, outerIt, innerEnd, outerEnd; innerIt = peptideSetIn.m_peptidePtrList.begin(); innerEnd = peptideSetIn.m_peptidePtrList.end(); outerIt = m_peptidePtrList.begin(); outerEnd = m_peptidePtrList.end(); while((innerIt != innerEnd) && (outerIt != outerEnd)) { if(*innerIt > *outerIt) { outerIt++; continue; } if(*innerIt < *outerIt) { return false; } if(*innerIt == *outerIt) { innerIt++; outerIt++; } } if(innerIt == innerEnd) { return true; } return false; } bool GrpPeptideSet::containsAny(const GrpPeptideSet &peptideSetIn) const { std::list::const_iterator innerIt, outerIt, innerEnd, outerEnd; innerIt = peptideSetIn.m_peptidePtrList.begin(); innerEnd = peptideSetIn.m_peptidePtrList.end(); outerIt = m_peptidePtrList.begin(); outerEnd = m_peptidePtrList.end(); while((innerIt != innerEnd) && (outerIt != outerEnd)) { if(*innerIt > *outerIt) { outerIt++; continue; } if(*innerIt < *outerIt) { innerIt++; continue; } if(*innerIt == *outerIt) { return true; } } return false; } void GrpPeptideSet::addAll(const GrpPeptideSet &peptideSetIn) { qDebug() << "GrpPeptideSet::addAll begin"; std::list::iterator it(m_peptidePtrList.begin()); std::list::iterator itEnd(m_peptidePtrList.end()); std::list::const_iterator itIn( peptideSetIn.m_peptidePtrList.begin()); std::list::const_iterator itInEnd( peptideSetIn.m_peptidePtrList.end()); while((itIn != itInEnd) && (it != itEnd)) { if(*itIn > *it) { it++; continue; } if(*itIn < *it) { it = m_peptidePtrList.insert(it, *itIn); it++; itIn++; continue; } if(*itIn == *it) { itIn++; it++; } } while(itIn != itInEnd) { m_peptidePtrList.push_back(*itIn); itIn++; } qDebug() << "GrpPeptideSet::addAll end"; } void GrpPeptideSet::numbering() { qDebug() << "GrpPeptideSet::numbering begin"; m_peptidePtrList.sort([](GrpPeptide *first, GrpPeptide *second) { return ((*first) < (*second)); }); unsigned int i = 1; for(auto &&p_grp_peptide : m_peptidePtrList) { p_grp_peptide->setRank(i); i++; } qDebug() << "GrpPeptideSet::numbering end"; } void GrpPeptideSet::setGroupNumber(unsigned int i) { qDebug() << "GrpPeptideSet::setGroupNumber begin"; for(auto &&p_grp_peptide : m_peptidePtrList) { p_grp_peptide->setGroupNumber(i); } qDebug() << "GrpPeptideSet::setGroupNumber end"; } std::vector GrpPeptideSet::getGrpPeptideList() const { std::vector peptide_list; for(GrpPeptide *peptide : m_peptidePtrList) { peptide_list.push_back(peptide); } return peptide_list; } const QString GrpPeptideSet::printInfos() const { QString infos; std::list::const_iterator it(m_peptidePtrList.begin()), itEnd(m_peptidePtrList.end()); while(it != itEnd) { infos.append((*it)->getSequence() + " " + QString("0x%1").arg( (quintptr)*it, QT_POINTER_SIZE * 2, 16, QChar('0')) + "\n"); it++; } return infos; } libpappsomspp-0.9.20/src/pappsomspp/grouping/grppeptideset.h000644 001750 001750 00000004245 14346367014 025571 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "grpprotein.h" namespace pappso { class GrpMapPeptideToSubGroupSet; class GrpPeptideSet { friend class GrpMapPeptideToSubGroupSet; friend class GrpMapPeptideToGroup; private: std::list m_peptidePtrList; bool privContainsAll(const GrpPeptideSet &peptideSetIn) const; public: GrpPeptideSet(); GrpPeptideSet(const GrpPeptideSet &other); GrpPeptideSet(const GrpProtein *p_protein); ~GrpPeptideSet(); GrpPeptideSet &operator=(const GrpPeptideSet &other); bool operator==(const GrpPeptideSet &other) const; unsigned int size() const { return m_peptidePtrList.size(); }; bool biggerAndContainsAll(const GrpPeptideSet &peptideSet) const; bool contains(const GrpPeptide *p_grp_peptide) const; bool containsAll(const GrpPeptideSet &peptideSet) const; bool containsAny(const GrpPeptideSet &peptideSet) const; void addAll(const GrpPeptideSet &peptideSet); const QString printInfos() const; void numbering(); void setGroupNumber(unsigned int i); std::vector getGrpPeptideList() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpprotein.cpp000644 001750 001750 00000006776 14526455546 025461 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "grpprotein.h" #include "grpexperiment.h" #include "grppeptide.h" #include "../utils.h" using namespace pappso; GrpProtein::GrpProtein(const QString &accession, const QString &description) : m_accession(accession.simplified()), m_description(description.simplified()) { } GrpProtein::GrpProtein(const GrpProtein &other) : m_grpPeptidePtrList(other.m_grpPeptidePtrList), m_accession(other.m_accession), m_description(other.m_description) { m_groupNumber = other.m_groupNumber; m_subGroupNumber = other.m_subGroupNumber; m_rank = other.m_rank; m_count = other.m_count; } GrpProtein::~GrpProtein() { } GrpProtein::const_iterator GrpProtein::begin() const { return m_grpPeptidePtrList.begin(); } GrpProtein::const_iterator GrpProtein::end() const { return m_grpPeptidePtrList.end(); } unsigned int GrpProtein::getCount() const { return m_count; } void GrpProtein::countPlus() { m_count++; } void GrpProtein::setSubGroupNumber(unsigned int i) { m_subGroupNumber = i; } unsigned int GrpProtein::getGroupNumber() const { return m_groupNumber; } unsigned int GrpProtein::getSubGroupNumber() const { return m_subGroupNumber; } unsigned int GrpProtein::getRank() const { return m_rank; } const QString GrpProtein::getGroupingId() const { if(m_groupNumber == 0) { return ""; } return QString("%1.%2.%3") .arg(Utils::getLexicalOrderedString(m_groupNumber)) .arg(Utils::getLexicalOrderedString(m_subGroupNumber)) .arg(Utils::getLexicalOrderedString(m_rank)); } bool GrpProtein::operator==(const GrpProtein &other) const { return (m_accession == other.m_accession); } const QString & GrpProtein::getAccession() const { return m_accession; } const QString & GrpProtein::getDescription() const { return m_description; } void GrpProtein::push_back(GrpPeptide *p_grpPeptide) { // p_grpPeptide->push_back(this); m_grpPeptidePtrList.push_back(p_grpPeptide); } void GrpProtein::strip() { qDebug() << "GrpProtein::strip begin " << this->m_accession; // m_grpPeptidePtrList.sort(); std::sort(m_grpPeptidePtrList.begin(), m_grpPeptidePtrList.end()); // m_grpPeptidePtrList.unique(); m_grpPeptidePtrList.erase( std::unique(m_grpPeptidePtrList.begin(), m_grpPeptidePtrList.end()), m_grpPeptidePtrList.end()); qDebug() << "GrpProtein::strip end"; } void GrpProtein::setRank(unsigned int i) { m_rank = i; } void GrpProtein::setGroupNumber(unsigned int i) { m_groupNumber = i; } libpappsomspp-0.9.20/src/pappsomspp/grouping/grpprotein.h000644 001750 001750 00000005032 14346367014 025076 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include #include "grppeptide.h" namespace pappso { class GrpProtein; typedef std::shared_ptr GrpProteinSpConst; typedef std::shared_ptr GrpProteinSp; class PMSPP_LIB_DECL GrpProtein { friend class GrpExperiment; public: GrpProtein(const GrpProtein &other); ~GrpProtein(); void push_back(GrpPeptide *p_grpPeptide); bool operator==(const GrpProtein &other) const; const QString &getAccession() const; const QString &getDescription() const; const QString getGroupingId() const; typedef std::vector::const_iterator const_iterator; const_iterator begin() const; const_iterator end() const; void setRank(unsigned int i); void setGroupNumber(unsigned int i); void setSubGroupNumber(unsigned int i); unsigned int getGroupNumber() const; unsigned int getSubGroupNumber() const; unsigned int getRank() const; unsigned int getCount() const; protected: GrpProtein(const QString &accession, const QString &description); void countPlus(); /** @brief ensure that each peptide in peptide list is unique and sorted by * pointer adress */ void strip(); std::vector m_grpPeptidePtrList; private: const QString m_accession; const QString m_description; unsigned int m_groupNumber = 0; unsigned int m_subGroupNumber = 0; unsigned int m_rank = 0; unsigned int m_count = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpsubgroup.cpp000644 001750 001750 00000014477 14526455546 025644 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "grpsubgroup.h" #include "grppeptideset.h" #include "../pappsoexception.h" #include "../utils.h" namespace pappso { GrpSubGroup::GrpSubGroup(GrpProtein *p_protein) : m_peptidePtrList(p_protein) { m_grpProteinPtrList.push_back(p_protein); } GrpSubGroup::GrpSubGroup(const GrpSubGroup &other) : m_grpProteinPtrList(other.m_grpProteinPtrList), m_peptidePtrList(other.m_peptidePtrList) { } unsigned int GrpSubGroup::getGroupNumber() const { return m_groupNumber; } unsigned int GrpSubGroup::getSubGroupNumber() const { return m_subGroupNumber; } const std::vector & GrpSubGroup::getGrpProteinList() const { return m_grpProteinPtrList; } const QString GrpSubGroup::getGroupingId() const { if(m_groupNumber == 0) { return ""; } return QString("%1.%2") .arg(Utils::getLexicalOrderedString(m_groupNumber)) .arg(Utils::getLexicalOrderedString(m_subGroupNumber)); } unsigned int GrpSubGroup::maxCount() const { unsigned int max = 0; for(GrpProtein *p_protein : m_grpProteinPtrList) { if(max < p_protein->getCount()) { max = p_protein->getCount(); } } return max; } bool GrpSubGroup::operator<(const GrpSubGroup &other) const { if(m_peptidePtrList.size() == other.m_peptidePtrList.size()) { if(maxCount() == other.maxCount()) { if(m_grpProteinPtrList.size() == other.m_grpProteinPtrList.size()) { // compare peptide set surface ? // alphabetic order taken into account return ((*(m_grpProteinPtrList.begin()))->getAccession() < (*(other.m_grpProteinPtrList.begin()))->getAccession()); } else { // if there is same peptide size evidence, then perhaps it's // better to consider that // the best group is the one that include more proteins return (m_grpProteinPtrList.size() > other.m_grpProteinPtrList.size()); } } else { // counts are evidences of the presence of a subgroup // the fewer is the count, the weaker is the subgroup return (maxCount() > other.maxCount()); } } else { // peptides are evidences of the presence of a subgroup // the fewer is the peptide list, the weaker is the subgroup return (m_peptidePtrList.size() > other.m_peptidePtrList.size()); } } GrpSubGroup::~GrpSubGroup() { } GrpSubGroupSp GrpSubGroup::makeGrpSubGroupSp() { return std::make_shared(*this); } const GrpPeptideSet & GrpSubGroup::getPeptideSet() const { return m_peptidePtrList; } bool GrpSubGroup::merge(GrpSubGroup *p_subgroup) { qDebug() << "GrpSubGroup::merge begin " << m_grpProteinPtrList.size() << " " << this->getFirstAccession() << " " << p_subgroup->getFirstAccession(); // if (this == p_subgroup) { // return true; //} if(p_subgroup->m_peptidePtrList == m_peptidePtrList) { // m_grpProteinPtrList.splice (m_grpProteinPtrList.end(), // p_subgroup->m_grpProteinPtrList); m_grpProteinPtrList.insert(m_grpProteinPtrList.end(), p_subgroup->m_grpProteinPtrList.begin(), p_subgroup->m_grpProteinPtrList.end()); // m_grpProteinPtrList.insert (m_grpProteinPtrList.end(), // p_subgroup->m_grpProteinPtrList.begin(),p_subgroup->m_grpProteinPtrList.end()); return true; } else { return false; } } bool GrpSubGroup::includes(const GrpSubGroup *p_subgroup) const { if(m_peptidePtrList.biggerAndContainsAll(p_subgroup->getPeptideSet())) { return true; } else { return false; } } void GrpSubGroup::setGroupNumber(unsigned int i) { m_groupNumber = i; for(auto &&p_protein : m_grpProteinPtrList) { p_protein->setGroupNumber(i); } } void GrpSubGroup::setSubGroupNumber(unsigned int i) { m_subGroupNumber = i; for(auto &&p_protein : m_grpProteinPtrList) { p_protein->setSubGroupNumber(i); } } void GrpSubGroup::numbering() { qDebug() << "GrpSubGroup::numbering begin"; // sort proteins by accession numbers : // m_grpProteinPtrList.sort([](GrpProtein * first, GrpProtein * second) { // return (first->getAccession() < second->getAccession()) ; //}); std::sort(m_grpProteinPtrList.begin(), m_grpProteinPtrList.end(), [](GrpProtein *first, GrpProtein *second) { return (first->getAccession() < second->getAccession()); }); // list unique removes all but the first element from every consecutive group // of equal elements in the container // m_grpProteinPtrList.unique(); unsigned int i = 1; for(auto &&p_protein : m_grpProteinPtrList) { p_protein->setRank(i); i++; } qDebug() << "GrpSubGroup::numbering end"; } const QString & GrpSubGroup::getFirstAccession() const { auto it = m_grpProteinPtrList.begin(); if(it == m_grpProteinPtrList.end()) { throw PappsoException(QObject::tr("m_grpProteinPtrList is empty")); } else { return (*it)->getAccession(); } } std::size_t GrpSubGroup::peptideListSize() const { return m_peptidePtrList.size(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpsubgroup.h000644 001750 001750 00000004571 14346367014 025273 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include "grpprotein.h" #include "grppeptideset.h" namespace pappso { class GrpSubGroup; typedef std::shared_ptr GrpSubGroupSpConst; typedef std::shared_ptr GrpSubGroupSp; class GrpSubGroup { private: std::vector m_grpProteinPtrList; GrpPeptideSet m_peptidePtrList; unsigned int m_subGroupNumber = 0; unsigned int m_groupNumber = 0; public: GrpSubGroup(GrpProtein *p_protein); GrpSubGroup(const GrpSubGroup &other); /** \brief sort subgroups between each other * a subgroup containing less peptides is weaker (less) than the other */ bool operator<(const GrpSubGroup &other) const; ~GrpSubGroup(); GrpSubGroupSp makeGrpSubGroupSp(); const GrpPeptideSet &getPeptideSet() const; bool merge(GrpSubGroup *p_subgroup); bool includes(const GrpSubGroup *p_subgroup) const; void numbering(); void setSubGroupNumber(unsigned int i); void setGroupNumber(unsigned int i); const QString &getFirstAccession() const; std::size_t peptideListSize() const; unsigned int maxCount() const; const QString getGroupingId() const; unsigned int getGroupNumber() const; unsigned int getSubGroupNumber() const; const std::vector &getGrpProteinList() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpsubgroupset.cpp000644 001750 001750 00000007207 14526455546 026351 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "grpsubgroupset.h" namespace pappso { GrpSubGroupSet::GrpSubGroupSet() { } GrpSubGroupSet::GrpSubGroupSet(const GrpSubGroupSet &other) : m_grpSubGroupPtrList(other.m_grpSubGroupPtrList) { } GrpSubGroupSet::~GrpSubGroupSet() { } void GrpSubGroupSet::addAll(const GrpSubGroupSet &other) { std::list::iterator it(m_grpSubGroupPtrList.begin()); std::list::iterator itEnd(m_grpSubGroupPtrList.end()); std::list::const_iterator itIn( other.m_grpSubGroupPtrList.begin()); std::list::const_iterator itInEnd( other.m_grpSubGroupPtrList.end()); while((itIn != itInEnd) && (it != itEnd)) { if(*itIn < *it) { it++; continue; } if(*itIn > *it) { it = m_grpSubGroupPtrList.insert(it, *itIn); it++; itIn++; continue; } if(*itIn == *it) { itIn++; it++; } } while(itIn != itInEnd) { m_grpSubGroupPtrList.push_back(*itIn); itIn++; } } void GrpSubGroupSet::remove(GrpSubGroup *p_remove_sub_group) { m_grpSubGroupPtrList.remove(p_remove_sub_group); } bool GrpSubGroupSet::contains(GrpSubGroup *p_sub_group) const { std::list::const_iterator it(m_grpSubGroupPtrList.begin()), itEnd(m_grpSubGroupPtrList.end()); while(it != itEnd) { if(p_sub_group == *it) { // this subgroup is already in list return true; } if(p_sub_group > *it) { return false; } it++; } return false; } void GrpSubGroupSet::add(GrpSubGroup *p_add_sub_group) { std::list::iterator it(m_grpSubGroupPtrList.begin()), itEnd(m_grpSubGroupPtrList.end()); while(it != itEnd) { if(p_add_sub_group == *it) { // this subgroup is already in list return; } if(p_add_sub_group > *it) { it = m_grpSubGroupPtrList.insert(it, p_add_sub_group); return; } it++; } m_grpSubGroupPtrList.push_back(p_add_sub_group); } const QString GrpSubGroupSet::printInfos() const { QString infos; std::list::const_iterator it(m_grpSubGroupPtrList.begin()), itEnd(m_grpSubGroupPtrList.end()); while(it != itEnd) { infos.append((*it)->getFirstAccession() + " " + QString("0x%1").arg( (quintptr)*it, QT_POINTER_SIZE * 2, 16, QChar('0')) + "\n"); it++; } return infos; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/grouping/grpsubgroupset.h000644 001750 001750 00000003757 14346367014 026014 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "grpsubgroup.h" namespace pappso { class GrpGroup; class GrpSubGroupSet { friend GrpGroup; private: std::list m_grpSubGroupPtrList; public: GrpSubGroupSet(); GrpSubGroupSet(const GrpSubGroupSet &other); ~GrpSubGroupSet(); unsigned int size() const { return m_grpSubGroupPtrList.size(); }; void addAll(const GrpSubGroupSet &other); void remove(GrpSubGroup *p_remove_sub_group); void add(GrpSubGroup *p_add_sub_group); std::list::iterator erase(std::list::iterator it) { return m_grpSubGroupPtrList.erase(it); }; std::list::const_iterator begin() const { return m_grpSubGroupPtrList.begin(); }; std::list::const_iterator end() const { return m_grpSubGroupPtrList.end(); }; bool contains(GrpSubGroup *get) const; const QString printInfos() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/massspectrum/000755 001750 001750 00000000000 14533473271 023431 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/massspectrum/massspectrum.cpp000644 001750 001750 00000024172 14526455546 026700 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/massspectrum/massspectrum.cpp * \date 15/3/2015 * \author Olivier Langella * \brief basic mass spectrum */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include #include #include #include #include "../trace/datapoint.h" #include "../trace/trace.h" #include "massspectrum.h" #include "../processing/combiners/massspectrumcombiner.h" #include "../mzrange.h" #include "../pappsoexception.h" #include "../peptide/peptidefragmentionlistbase.h" #include "../exception/exceptionoutofrange.h" #include "../processing/filters/filterresample.h" int massSpectrumMetaTypeId = qRegisterMetaType("pappso::MassSpectrum"); int massSpectrumPtrMetaTypeId = qRegisterMetaType("pappso::MassSpectrum *"); namespace pappso { MassSpectrum::MassSpectrum() { } MassSpectrum::MassSpectrum( std::vector> &data_point_vector) : Trace::Trace(data_point_vector) { } MassSpectrum::MassSpectrum(std::vector &data_point_vector) : Trace::Trace(data_point_vector) { } MassSpectrum::MassSpectrum(const Trace &other) : Trace(other) { } MassSpectrum::MassSpectrum(const MapTrace &other) : Trace(other) { } MassSpectrum::MassSpectrum(Trace &&other) : Trace(std::move(other)) { } MassSpectrum::MassSpectrum(const MassSpectrum &other) : Trace(other) { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; } MassSpectrum::MassSpectrum(MassSpectrum &&other) : Trace(std::move(other)) { // Specify std::move so that && reference is passed to the Trace constructor // that takes std::vector && as rvalue reference. // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "Moving MassSpectrum::MassSpectrum(MassSpectrum &&)"; } MassSpectrum::~MassSpectrum() { } MassSpectrum & MassSpectrum::operator=(const MassSpectrum &other) { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"; assign(other.begin(), other.end()); return *this; } MassSpectrum & MassSpectrum::operator=(MassSpectrum &&other) { vector::operator=(std::move(other)); return *this; } MassSpectrumSPtr MassSpectrum::makeMassSpectrumSPtr() const { return std::make_shared(*this); } MassSpectrumCstSPtr MassSpectrum::makeMassSpectrumCstSPtr() const { return std::make_shared(*this); } //! Compute the total ion current of this mass spectrum /*! * The sum of all the separate ion currents carried by the ions of different * m/z contributing to a complete mass massSpectrum or in a specified m/z * range of a mass massSpectrum. MS:1000285 * * \return The total ion current. */ pappso_double MassSpectrum::totalIonCurrent() const { return Trace::sumY(); } //! Compute the total ion current of this mass spectrum /*! * Convenience function that returns totalIonCurrent(); */ pappso_double MassSpectrum::tic() const { return totalIonCurrent(); } pappso_double MassSpectrum::tic(double mzStart, double mzEnd) { return Trace::sumY(mzStart, mzEnd); } //! Find the DataPoint instance having the greatest intensity (y) value. /*! * \return The data point having the maximum intensity (y) * value of the whole mass spectrum. */ const DataPoint & MassSpectrum::maxIntensityDataPoint() const { return Trace::maxYDataPoint(); } //! Find the DataPoint instance having the smallest intensity (y) value. /*! * \return The data point having the minimum intensity (y) * value of the whole mass spectrum. */ const DataPoint & MassSpectrum::minIntensityDataPoint() const { return Trace::minYDataPoint(); } //! Sort the DataPoint instances of this spectrum. /*! * The DataPoint instances are sorted according to the x value (the m/z * value) and in increasing order. */ void MassSpectrum::sortMz() { Trace::sortX(); } //! Tells if \c this MassSpectrum is equal to \p massSpectrum. /*! * To compare \c this to \p massSpectrum, a tolerance is applied to both the x * and y values, that is defined using \p precision. * * \param massSpectrum Mass spectrum to compare to \c this. * * \param precision Precision to be used to perform the comparison of the x * and y values of the data points in \c this and \massSpectrum mass spectra. */ bool MassSpectrum::equals(const MassSpectrum &other, PrecisionPtr precision) const { if(size() != other.size()) { qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" << "The other mass spectrum size is not equal to *this size" << "*this size:" << size() << "trace size:" << other.size(); return false; } PrecisionPtr precint = PrecisionFactory::getPpmInstance(10); auto trace_it = other.begin(); for(auto &&data_point : *this) { qDebug() << "first:" << data_point.x << "," << data_point.y << " second:" << trace_it->x << "," << trace_it->y; if(!MzRange(data_point.x, precision).contains(trace_it->x)) { qDebug() << "x:" << data_point.x << " != " << trace_it->x; return false; } if(!MzRange(data_point.y, precint).contains(trace_it->y)) { qDebug() << "y:" << data_point.y << " != " << trace_it->y; return false; } trace_it++; } return true; } MassSpectrum MassSpectrum::filterSum(const MzRange &range) const { MassSpectrum massSpectrum; std::vector::const_iterator it = begin(); std::vector::const_iterator itEnd = end(); std::vector::const_reverse_iterator itRev = rbegin(); std::vector::const_reverse_iterator itRevEnd = rend(); pappso_double lower = range.lower(); pappso_double upper = range.upper(); while((it != itEnd) && (it->x <= itRev->x) && (itRev != itRevEnd)) { pappso_double sumX = it->x + itRev->x; if(sumX < lower) { it++; } else if(sumX > upper) { itRev++; } else { massSpectrum.push_back(*it); massSpectrum.push_back(*itRev); std::vector::const_reverse_iterator itRevIn = itRev; itRevIn++; // FIXME Attention buggy code FR 20180626. sumX = it->x + itRevIn->x; while((sumX > lower) && (it->x <= itRevIn->x) && (itRevIn != itRevEnd)) { sumX = it->x + itRevIn->x; // trace.push_back(*it); massSpectrum.push_back(*itRevIn); itRevIn++; } it++; } } // Sort all the data points in increasing order by x std::sort(massSpectrum.begin(), massSpectrum.end(), [](const DataPoint &a, const DataPoint &b) { return (a.x < b.x); }); // Remove all the but the first element of a series of elements that are // considered equal. Sort of deduplication. std::vector::iterator itEndFix = std::unique(massSpectrum.begin(), massSpectrum.end(), [](const DataPoint &a, const DataPoint &b) { // Return true if both elements should be considered equal. return (a.x == b.x) && (a.y == b.y); }); massSpectrum.resize(std::distance(massSpectrum.begin(), itEndFix)); return massSpectrum; } void MassSpectrum::debugPrintValues() const { qDebug() << size(); for(std::size_t i = 0; i < size(); i++) { qDebug() << "(" << this->operator[](i).x << "," << this->operator[](i).y << ")"; } } QDataStream & operator<<(QDataStream &outstream, const MassSpectrum &massSpectrum) { quint32 vector_size = massSpectrum.size(); outstream << vector_size; for(auto &&peak : massSpectrum) { outstream << peak; } return outstream; } QDataStream & operator>>(QDataStream &instream, MassSpectrum &massSpectrum) { quint32 vector_size; DataPoint peak; if(!instream.atEnd()) { instream >> vector_size; qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " vector_size=" << vector_size; for(quint32 i = 0; i < vector_size; i++) { if(instream.status() != QDataStream::Ok) { throw PappsoException( QString("error in QDataStream unserialize operator>> of " "massSpectrum :\nread datastream failed status=%1 " "massSpectrum " "i=%2 on size=%3") .arg(instream.status()) .arg(i) .arg(vector_size)); } instream >> peak; massSpectrum.push_back(peak); } if(instream.status() != QDataStream::Ok) { throw PappsoException( QString( "error in QDataStream unserialize operator>> of massSpectrum " ":\nread datastream failed status=%1") .arg(instream.status())); } } return instream; } MassSpectrum & MassSpectrum::massSpectrumFilter(const MassSpectrumFilterInterface &filter) { return filter.filter(*this); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/massspectrum/massspectrum.h000644 001750 001750 00000007777 14514537335 026353 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/massspectrum/massspectrum.h * \date 15/3/2015 * \author Olivier Langella * \brief basic mass spectrum */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include #include #include "../exportinmportconfig.h" #include "../mzrange.h" #include "../trace/trace.h" namespace pappso { // Forward declaration. class MassSpectrum; PMSPP_LIB_DECL QDataStream &operator<<(QDataStream &out, const MassSpectrum &spectrum); PMSPP_LIB_DECL QDataStream &operator>>(QDataStream &out, MassSpectrum &spectrum); typedef std::shared_ptr MassSpectrumSPtr; typedef std::shared_ptr MassSpectrumCstSPtr; class MassSpectrumCombinerInterface; //! Class to represent a mass spectrum. /*! * A mass spectrum is a collection of DataPoint instances. Moreover, it has * internal data that represent the context of the acquisition of the data: * retention time and drift time (if the experiment was an ion mobility mass * spectrometry experiment). * * A MassSpectrum cannot perform combinations. For combination of mass * spectra, the class to use is MassSpectrumCombinator. */ class PMSPP_LIB_DECL MassSpectrum : public Trace { public: MassSpectrum(); MassSpectrum( std::vector> &data_point_vector); MassSpectrum(std::vector &data_point_vector); MassSpectrum(const MapTrace &other); MassSpectrum(const Trace &other); MassSpectrum(Trace &&other); // move constructor MassSpectrum(const MassSpectrum &other); MassSpectrum(MassSpectrum &&other); // move constructor virtual ~MassSpectrum(); virtual MassSpectrum &operator=(const MassSpectrum &other); virtual MassSpectrum &operator=(MassSpectrum &&other); MassSpectrumSPtr makeMassSpectrumSPtr() const; MassSpectrumCstSPtr makeMassSpectrumCstSPtr() const; /** @brief apply a filter on this MassSpectrum * @param filter to process the MassSpectrum * @return reference on the modified MassSpectrum */ virtual MassSpectrum & massSpectrumFilter(const MassSpectrumFilterInterface &filter) final; pappso_double totalIonCurrent() const; // Alias for totalIonCurrent(). pappso_double tic() const; pappso_double tic(double mzStart, double mzEnd); const DataPoint &maxIntensityDataPoint() const; const DataPoint &minIntensityDataPoint() const; void sortMz(); bool equals(const MassSpectrum &other, PrecisionPtr precision) const; MassSpectrum filterSum(const MzRange &mass_range) const; // friend QDataStream& operator<<(QDataStream& out, const MassSpectrum& // massSpectrum); // friend QDataStream& operator>>(QDataStream& out, MassSpectrum& // massSpectrum); void debugPrintValues() const; }; } // namespace pappso Q_DECLARE_METATYPE(pappso::MassSpectrum); Q_DECLARE_METATYPE(pappso::MassSpectrum *); extern int massSpectrumMetaTypeId; extern int massSpectrumPtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/massspectrum/massspectrumid.cpp000644 001750 001750 00000006005 14526455546 027210 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "massspectrumid.h" namespace pappso { MassSpectrumId::MassSpectrumId() { } MassSpectrumId::MassSpectrumId(const MsRunIdCstSPtr &msRunId) : mcsp_msRunId(msRunId) { } MassSpectrumId::MassSpectrumId(const MsRunIdCstSPtr &msRunId, std::size_t spectrum_index) : mcsp_msRunId(msRunId), m_nativeId(""), m_spectrumIndex(spectrum_index) { } MassSpectrumId::MassSpectrumId(const MassSpectrumId &other) : mcsp_msRunId(other.mcsp_msRunId), m_nativeId(other.m_nativeId), m_spectrumIndex(other.m_spectrumIndex) { } MassSpectrumId::~MassSpectrumId() { } MassSpectrumId & MassSpectrumId::operator=(const MassSpectrumId &other) { mcsp_msRunId = other.mcsp_msRunId; m_spectrumIndex = other.m_spectrumIndex; m_nativeId = other.m_nativeId; return *this; } void MassSpectrumId::setMsRunId(MsRunIdCstSPtr other) { mcsp_msRunId = other; }; const MsRunIdCstSPtr & MassSpectrumId::getMsRunIdCstSPtr() const { return mcsp_msRunId; }; void MassSpectrumId::setNativeId(const QString &native_id) { m_nativeId = native_id; } const QString & MassSpectrumId::getNativeId() const { return m_nativeId; } void MassSpectrumId::setSpectrumIndex(std::size_t index) { m_spectrumIndex = index; } std::size_t MassSpectrumId::getSpectrumIndex() const { return m_spectrumIndex; } bool MassSpectrumId::operator==(const MassSpectrumId &other) const { return (mcsp_msRunId == other.mcsp_msRunId && m_spectrumIndex == other.m_spectrumIndex); } bool MassSpectrumId::isValid() const { return mcsp_msRunId->isValid() && m_spectrumIndex != std::numeric_limits::max(); } QString MassSpectrumId::toString() const { return QString( "ms run id: %1 \n" "native id: %2 \n" "m_spectrumIndex: %3\n") .arg(mcsp_msRunId != nullptr ? mcsp_msRunId->toString() : "nullptr") .arg(m_nativeId) .arg(m_spectrumIndex); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/massspectrum/massspectrumid.h000644 001750 001750 00000005366 14346367014 026656 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include "../exportinmportconfig.h" #include "../msrun/msrunid.h" namespace pappso { class PMSPP_LIB_DECL MassSpectrumId { private: MsRunIdCstSPtr mcsp_msRunId = nullptr; // This is the native id string that is stored in the mzML file. Its structure // is dependent on the vendor/format of the original data. In some cases, it // is possible to ask libpwiz to extract from it the scan number of the // spectrum. For water/mdsciex files, this is not possible. We thus need to // rely on the index of the spectrum in the spectrum list for the ms run of // interest. By combining the run id and the spectrum index, it is possible to // unambiguously identify a mass spectrum from a given file. QString m_nativeId; // The index of the mass spectrum in the spectrum list of a given ms run is // used when the scan number is not easily usable (see the native id comment // above). std::size_t m_spectrumIndex = std::numeric_limits::max(); public: MassSpectrumId(); MassSpectrumId(const MsRunIdCstSPtr &msrun_id); MassSpectrumId(const MsRunIdCstSPtr &msrun_id, std::size_t spectrum_index); MassSpectrumId(const MassSpectrumId &other); ~MassSpectrumId(); MassSpectrumId &operator=(const MassSpectrumId &other); void setMsRunId(MsRunIdCstSPtr other); const MsRunIdCstSPtr &getMsRunIdCstSPtr() const; void setNativeId(const QString &native_id); const QString &getNativeId() const; void setSpectrumIndex(std::size_t index); std::size_t getSpectrumIndex() const; bool operator==(const MassSpectrumId &other) const; bool isValid() const; QString toString() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp000644 001750 001750 00000032122 14526455546 030556 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "qualifiedmassspectrum.h" #include "../utils.h" #include "../pappsoexception.h" namespace pappso { //! Construct an uninitialized QualifiedMassSpectrum. QualifiedMassSpectrum::QualifiedMassSpectrum() { } //! Construct a QualifiedMassSpectrum using a MassSpectrumId; QualifiedMassSpectrum::QualifiedMassSpectrum(const MassSpectrumId &id) : m_massSpectrumId(id) { } QualifiedMassSpectrum::QualifiedMassSpectrum( MassSpectrumSPtr mass_spectrum_SPtr) : msp_massSpectrum{mass_spectrum_SPtr} { } //! Construct a QualifiedMassSpectrum as a copy of \p other. QualifiedMassSpectrum::QualifiedMassSpectrum(const QualifiedMassSpectrum &other) : msp_massSpectrum(other.msp_massSpectrum), m_massSpectrumId(other.m_massSpectrumId), m_isEmptyMassSpectrum(other.m_isEmptyMassSpectrum), m_msLevel(other.m_msLevel), m_rt(other.m_rt), m_dt(other.m_dt), m_precursorSpectrumIndex(other.m_precursorSpectrumIndex), m_precursorNativeId(other.m_precursorNativeId), m_precursorIonData(other.m_precursorIonData), m_paramsMap(other.m_paramsMap) { // qDebug(); } //! Destruct this QualifiedMassSpectrum. QualifiedMassSpectrum::~QualifiedMassSpectrum() { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"; } QualifiedMassSpectrum & QualifiedMassSpectrum::operator=(const QualifiedMassSpectrum &other) { msp_massSpectrum = other.msp_massSpectrum; m_massSpectrumId = other.m_massSpectrumId; m_isEmptyMassSpectrum = other.m_isEmptyMassSpectrum; m_msLevel = other.m_msLevel; m_rt = other.m_rt; m_dt = other.m_dt; m_precursorSpectrumIndex = other.m_precursorSpectrumIndex; m_precursorNativeId = other.m_precursorNativeId; m_precursorIonData = other.m_precursorIonData; m_paramsMap = other.m_paramsMap; return *this; } const QualifiedMassSpectrum & QualifiedMassSpectrum::cloneMassSpectrumSPtr() { this->msp_massSpectrum = std::make_shared(*this->msp_massSpectrum.get()); return *this; } QualifiedMassSpectrumSPtr QualifiedMassSpectrum::makeQualifiedMassSpectrumSPtr() const { return std::make_shared(*this); } QualifiedMassSpectrumCstSPtr QualifiedMassSpectrum::makeQualifiedMassSpectrumCstSPtr() const { return std::make_shared(*this); } //! Set the MassSpectrumSPtr. void QualifiedMassSpectrum::setMassSpectrumSPtr(MassSpectrumSPtr massSpectrum) { msp_massSpectrum = massSpectrum; } //! Get the MassSpectrumSPtr. MassSpectrumSPtr QualifiedMassSpectrum::getMassSpectrumSPtr() const { return msp_massSpectrum; } //! Get the MassSpectrumCstSPtr. MassSpectrumCstSPtr QualifiedMassSpectrum::getMassSpectrumCstSPtr() const { return msp_massSpectrum; } //! Set the MassSpectrumId. void QualifiedMassSpectrum::setMassSpectrumId(const MassSpectrumId &iD) { m_massSpectrumId = iD; } //! Get the MassSpectrumId. const MassSpectrumId & QualifiedMassSpectrum::getMassSpectrumId() const { return m_massSpectrumId; } void QualifiedMassSpectrum::setEmptyMassSpectrum(bool is_empty_mass_spectrum) { m_isEmptyMassSpectrum = is_empty_mass_spectrum; } bool QualifiedMassSpectrum::isEmptyMassSpectrum() const { return m_isEmptyMassSpectrum; } //! Set the mass spectrum level. void QualifiedMassSpectrum::setMsLevel(unsigned int level) { m_msLevel = level; } //! Get the mass spectrum level. unsigned int QualifiedMassSpectrum::getMsLevel() const { return m_msLevel; } //! Set the retention time in seconds. void QualifiedMassSpectrum::setRtInSeconds(pappso_double rt_in_seconds) { m_rt = rt_in_seconds; } //! Get the retention time in seconds. pappso_double QualifiedMassSpectrum::getRtInSeconds() const { return m_rt; } //! Get the retention time in minutes. pappso_double QualifiedMassSpectrum::getRtInMinutes() const { return m_rt / 60; } //! Set the drift time in milliseconds. void QualifiedMassSpectrum::setDtInMilliSeconds(pappso_double dt_in_milli_seconds) { if(std::isinf(dt_in_milli_seconds)) m_dt = -1; else m_dt = dt_in_milli_seconds; } //! Get the drift time in milliseconds. pappso_double QualifiedMassSpectrum::getDtInMilliSeconds() const { return m_dt; } //! Get the precursor m/z ratio. pappso_double QualifiedMassSpectrum::getPrecursorMz(bool *ok_p) const { if(!m_precursorIonData.size()) { if(ok_p != nullptr) *ok_p = false; return std::numeric_limits::max(); } if(ok_p != nullptr) *ok_p = true; // qDebug() << "Returning precursor mz value: " << // m_precursorIonData.front().mz; return m_precursorIonData.front().mz; } //! Get the precursor mass ratio. double QualifiedMassSpectrum::getPrecursorMass(bool *ok_p) const { if(ok_p != nullptr) *ok_p = false; bool ok_precmz = false; double mz_prec = getPrecursorMz(&ok_precmz); if(ok_precmz) { uint charge = getPrecursorCharge(&ok_precmz); if(ok_precmz) { // compute precursor mass given the charge state mz_prec = mz_prec * (double)charge; mz_prec -= MHPLUS * (double)charge; if(ok_p != nullptr) *ok_p = true; return mz_prec; } } return std::numeric_limits::max(); } QString QualifiedMassSpectrum::getPrecursorDataMzValuesAsString( const std::vector &precursor_ion_data_vector, const QString &separator) const { QString text; // We do not want to use the separator if there is only one precursor in the // vector. if(precursor_ion_data_vector.size() == 1) return QString("%1").arg(precursor_ion_data_vector.front().mz, 0, 'f', 6); // If there are more than one precursor, then we should list them joined with // the separator. using iterator = std::vector::const_iterator; iterator begin_iterator = precursor_ion_data_vector.begin(); iterator pre_end_iterator = std::prev(precursor_ion_data_vector.end()); for(; begin_iterator != precursor_ion_data_vector.end(); ++begin_iterator) { if(begin_iterator == pre_end_iterator) // No separator at the end of the string text += QString("%1").arg(begin_iterator->mz, 0, 'f', 6); else text += QString("%1%2").arg(begin_iterator->mz, 0, 'f', 6).arg(separator); } return text; } QString QualifiedMassSpectrum::getPrecursorDataMzValuesAsString( const QString &separator) const { return getPrecursorDataMzValuesAsString(m_precursorIonData, separator); } QString QualifiedMassSpectrum::getMzSortedPrecursorDataMzValuesAsString( const QString &separator) const { // Sort the PrecursorIonData instances by increasing mz values. // Then craft the string using the mz values. std::vector sorted_vector = getPrecursorIonDataSortedWithMz(); return getPrecursorDataMzValuesAsString(sorted_vector, separator); } //! Get the precursor charge. unsigned int QualifiedMassSpectrum::getPrecursorCharge(bool *ok_p) const { if(!m_precursorIonData.size()) { if(ok_p != nullptr) *ok_p = false; return std::numeric_limits::max(); } if(ok_p != nullptr) *ok_p = true; return m_precursorIonData.front().charge; } QString QualifiedMassSpectrum::getPrecursorDataChargeValuesAsString( const std::vector &precursor_ion_data_vector, const QString &separator) const { QString text; // We do not want to use the separator if there is only one precursor in the // vector. if(precursor_ion_data_vector.size() == 1) return QString("%1").arg(precursor_ion_data_vector.front().charge); // If there are more than one precursor, then we should list them joined with // the separator. for(auto item : precursor_ion_data_vector) { text += QString("%1%2").arg(item.charge).arg(separator); } return text; } QString QualifiedMassSpectrum::getPrecursorDataChargeValuesAsString( const QString &separator) const { return getPrecursorDataChargeValuesAsString(m_precursorIonData, separator); } QString QualifiedMassSpectrum::getMzSortedPrecursorDataChargeValuesAsString( const QString &separator) const { // Sort the PrecursorIonData instances by increasing mz values. // Then craft the string using the mz values. std::vector sorted_vector = getPrecursorIonDataSortedWithMz(); return getPrecursorDataChargeValuesAsString(sorted_vector, separator); } //! Get the intensity of the precursor ion. pappso_double QualifiedMassSpectrum::getPrecursorIntensity(bool *ok_p) const { if(!m_precursorIonData.size()) { if(ok_p != nullptr) *ok_p = false; return std::numeric_limits::max(); } if(ok_p != nullptr) *ok_p = true; return m_precursorIonData.front().intensity; } //! Set the scan number of the precursor ion. void QualifiedMassSpectrum::setPrecursorSpectrumIndex( std::size_t precursor_spectrum_index) { m_precursorSpectrumIndex = precursor_spectrum_index; } //! Get the scan number of the precursor ion. std::size_t QualifiedMassSpectrum::getPrecursorSpectrumIndex() const { return m_precursorSpectrumIndex; } //! Set the scan native id of the precursor ion. void QualifiedMassSpectrum::setPrecursorNativeId(const QString &native_id) { m_precursorNativeId = native_id; } const QString & QualifiedMassSpectrum::getPrecursorNativeId() const { return m_precursorNativeId; } void QualifiedMassSpectrum::appendPrecursorIonData( const PrecursorIonData &precursor_ion_data) { m_precursorIonData.push_back(precursor_ion_data); } const std::vector & QualifiedMassSpectrum::getPrecursorIonData() const { return m_precursorIonData; } std::vector QualifiedMassSpectrum::getPrecursorIonDataSortedWithMz() const { std::vector new_vector; new_vector.assign(m_precursorIonData.begin(), m_precursorIonData.end()); std::sort(new_vector.begin(), new_vector.end(), [](const PrecursorIonData &a, const PrecursorIonData &b) -> bool { return a.mz < b.mz; }); return new_vector; } void QualifiedMassSpectrum::setParameterValue( QualifiedMassSpectrumParameter parameter, const QVariant &value) { auto ret = m_paramsMap.insert( std::pair(parameter, value)); if(ret.second == false) { ret.first->second = value; } } const QVariant QualifiedMassSpectrum::getParameterValue( QualifiedMassSpectrumParameter parameter) const { auto it = m_paramsMap.find(parameter); if(it == m_paramsMap.end()) { return QVariant(); } else { return it->second; } } std::size_t QualifiedMassSpectrum::size() const { if(msp_massSpectrum == nullptr) { throw pappso::PappsoException(QObject::tr("msp_massSpectrum == nullptr")); } return msp_massSpectrum.get()->size(); } QString QualifiedMassSpectrum::toString(bool with_data) const { QString text; if(msp_massSpectrum != nullptr && msp_massSpectrum.get() != nullptr) { QString pointer_string = QString("msp_massSpectrum.get(): %1 ") .arg(Utils::pointerToString((void *)msp_massSpectrum.get())); text += pointer_string; } else text += QString("msp_massSpectrum is nullptr "); // qDebug() << text; QString precursor_mz_values_string; if(m_precursorIonData.size()) precursor_mz_values_string += "Precursor mz values: "; precursor_mz_values_string += getMzSortedPrecursorDataMzValuesAsString(); precursor_mz_values_string += "\n"; text += QString( "; m_massSpectrumId : %1 \n" "m_msLevel: %2 ; m_rt (min): %3 ; m_dt (ms): %4 ; prec. spec. " "index: %5 ; %6") .arg(m_massSpectrumId.toString()) .arg(m_msLevel) .arg(getRtInMinutes(), 0, 'f', 2) .arg(m_dt, 0, 'f', 5) .arg(m_precursorSpectrumIndex != std::numeric_limits::max() ? m_precursorSpectrumIndex : -1) .arg(precursor_mz_values_string); if(with_data) { text += msp_massSpectrum->toString(); } return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/massspectrum/qualifiedmassspectrum.h000644 001750 001750 00000017154 14526227527 030227 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once /////////////////////// StdLib includes #include /////////////////////// Qt includes /////////////////////// Local includes #include "../exportinmportconfig.h" #include "../types.h" #include "massspectrum.h" #include "massspectrumid.h" namespace pappso { // Forward declaration. class QualifiedMassSpectrum; typedef std::shared_ptr QualifiedMassSpectrumSPtr; typedef std::shared_ptr QualifiedMassSpectrumCstSPtr; enum class QualifiedMassSpectrumParameter { OneOverK0, ///< 1/kO of a simple scan OneOverK0begin, ///< 1/kO of first acquisition for composite pasef MS/MS ///< spectrum OneOverK0end, ///< 1/k0 of last acquisition for composite pasef MS/MS spectrum IsolationMz, ///< isolation window IsolationWidth, ///< isolation window width CollisionEnergy, ///< Bruker's Tims tof collision energy BrukerPrecursorIndex, ///< Bruker's Tims tof precursor index TimsFrameScansCount, ///< Bruker's Tims tof total ion mobility slots in a ///< frame TimsFrameInvKoBegin, ///< Bruker's Tims tof 1/K0 frame start range TimsFrameInvKoEnd, ///< Bruker's Tims tof 1/K0 frame end range TimsFrameMzIndexBegin, ///< Bruker's Tims tof mz index frame start range TimsFrameMzIndexEnd, ///< Bruker's Tims tof mz index frame end range ScanNumber, ///< scan number: Ordinal number of the scan indicating its order of acquisition within a mass spectrometry acquisition run. MS_scan_number = 1003057, last }; struct PrecursorIonData { double mz = 0; int charge = 0; double intensity = 0; // Constructor PrecursorIonData(double mz_value = 0, int charge_value = 0, double intensity_value = 0) { mz = mz_value; charge = charge_value; intensity = intensity_value; }; }; //! Class representing a fully specified mass spectrum. /*! * The member data that qualify the MassSpectrum \c msp_massSpectrum member * allow to unambiguously characterize the mass spectrum. * \sa MassSpectrum */ class PMSPP_LIB_DECL QualifiedMassSpectrum { public: QualifiedMassSpectrum(); QualifiedMassSpectrum(const MassSpectrumId &id); QualifiedMassSpectrum(MassSpectrumSPtr mass_spectrum_SPtr); QualifiedMassSpectrum(const QualifiedMassSpectrum &other); ~QualifiedMassSpectrum(); QualifiedMassSpectrum &operator=(const QualifiedMassSpectrum &other); /** @brief clone the mass spectrum contained in Qualified Mass Spectrum */ const QualifiedMassSpectrum &cloneMassSpectrumSPtr(); QualifiedMassSpectrumSPtr makeQualifiedMassSpectrumSPtr() const; QualifiedMassSpectrumCstSPtr makeQualifiedMassSpectrumCstSPtr() const; void setMassSpectrumSPtr(MassSpectrumSPtr massSpectrum); MassSpectrumSPtr getMassSpectrumSPtr() const; MassSpectrumCstSPtr getMassSpectrumCstSPtr() const; void setMassSpectrumId(const MassSpectrumId &iD); const MassSpectrumId &getMassSpectrumId() const; void setEmptyMassSpectrum(bool is_empty_mass_spectrum); bool isEmptyMassSpectrum() const; void setMsLevel(uint ms_level); uint getMsLevel() const; void setRtInSeconds(pappso_double rt); pappso_double getRtInSeconds() const; pappso_double getRtInMinutes() const; void setDtInMilliSeconds(pappso_double rt); pappso_double getDtInMilliSeconds() const; /** @brief get precursor mz * @param ok pointer on boolean, false if precursor mz is not defined * @return precursor mz */ pappso_double getPrecursorMz(bool *ok = nullptr) const; /** @brief get precursor mass given the charge stats and precursor mz * @param ok pointer on boolean, false if precursor mz is not defined * @return precursor mass (neutral mass without H+) */ double getPrecursorMass(bool *ok_p= nullptr) const; QString getPrecursorDataMzValuesAsString( const std::vector &precursor_ion_data_vector, const QString &separator = "\n") const; QString getPrecursorDataMzValuesAsString(const QString &separator = "\n") const; QString getMzSortedPrecursorDataMzValuesAsString( const QString &separator = "\n") const; /** @brief get precursor charge * @param ok pointer on boolean, false if precursor charge is not defined * @return precursor charge */ uint getPrecursorCharge(bool *ok = nullptr) const; QString getPrecursorDataChargeValuesAsString( const std::vector &precursor_ion_data_vector, const QString &separator = "\n") const; QString getPrecursorDataChargeValuesAsString(const QString &separator = "\n") const; QString getMzSortedPrecursorDataChargeValuesAsString( const QString &separator = "\n") const; /** @brief get precursor intensity * @param ok pointer on boolean, false if precursor intensity is not defined * @return precursor intensity */ pappso_double getPrecursorIntensity(bool *ok = nullptr) const; void setPrecursorSpectrumIndex(std::size_t precursor_scan_num); std::size_t getPrecursorSpectrumIndex() const; void setPrecursorNativeId(const QString &native_id); const QString &getPrecursorNativeId() const; void appendPrecursorIonData(const PrecursorIonData &precursor_ion_data); const std::vector &getPrecursorIonData() const; std::vector getPrecursorIonDataSortedWithMz() const; void setParameterValue(QualifiedMassSpectrumParameter parameter, const QVariant &value); const QVariant getParameterValue(QualifiedMassSpectrumParameter parameter) const; std::size_t size() const; QString toString(bool with_data = false) const; protected: //! Shared pointer to the mass spectrum. MassSpectrumSPtr msp_massSpectrum = nullptr; //! Id of the mass spectrum. MassSpectrumId m_massSpectrumId; bool m_isEmptyMassSpectrum = false; //! Mass spectrometry level of this mass spectrum. unsigned int m_msLevel = 0; //! Retention time (in seconds) at which this mass spectrum was acquired. pappso_double m_rt = -1; //! Drift time (in milliseconds) at which this mass spectrum was acquired. pappso_double m_dt = -1; //! Index of the spectrum of the precusor ion that was fragmented to yield // this mass spectrum. std::size_t m_precursorSpectrumIndex = std::numeric_limits::max(); //! Native XML id of the spectrum relative to the mz data native file QString m_precursorNativeId; //! vector of precursor ion data of the precursors that were fragmented to //! yield this mass spectrum. std::vector m_precursorIonData; //! map containing any parameter value for this spectrum std::map m_paramsMap; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/000755 001750 001750 00000000000 14533473271 022162 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/msfile/msfileaccessor.cpp000644 001750 001750 00000024774 14533341332 025676 0ustar00rusconirusconi000000 000000 // #include #include #include #include #include "msfileaccessor.h" #include "pwizmsfilereader.h" #include "timsmsfilereader.h" #include "xymsfilereader.h" #include "../exception/exceptionnotfound.h" #include "../exception/exceptionnotpossible.h" #include "../msrun/msrunid.h" #include "../msrun/private/timsframesmsrunreader.h" #include "../msrun/private/pwizmsrunreader.h" #include "../msrun/private/timsmsrunreader.h" #include "../msrun/private/timsmsrunreaderms2.h" #include "../msrun/xymsrunreader.h" #include "../utils.h" namespace pappso { MsFileAccessor::MsFileAccessor(const QString &file_name, const QString &xml_prefix) : m_fileName(file_name), m_xmlPrefix(xml_prefix) { QFile file(file_name); if(!file.exists()) throw(ExceptionNotFound(QObject::tr("File %1 not found.") .arg(QFileInfo(file_name).absoluteFilePath()))); } MsFileAccessor::MsFileAccessor(const MsFileAccessor &other) : m_fileName(other.m_fileName), m_xmlPrefix(other.m_xmlPrefix), m_fileFormat(other.m_fileFormat), m_fileReaderType(other.m_fileReaderType) { } MsFileAccessor::~MsFileAccessor() { } const QString & MsFileAccessor::getFileName() const { return m_fileName; } MzFormat MsFileAccessor::getFileFormat() const { return m_fileFormat; } std::vector MsFileAccessor::getMsRunIds() { // qDebug(); // Try the PwizMsFileReader PwizMsFileReader pwiz_ms_file_reader(m_fileName); std::vector ms_run_ids = pwiz_ms_file_reader.getMsRunIds(m_xmlPrefix); if(ms_run_ids.size()) { // qDebug() << "Might well be handled using the Pwiz code."; m_fileFormat = pwiz_ms_file_reader.getFileFormat(); m_fileReaderType = FileReaderType::pwiz; // But the user might have configured one preferred reader type. auto pref = m_preferredFileReaderTypeMap.find(m_fileFormat); if(pref != m_preferredFileReaderTypeMap.end()) { m_fileReaderType = pref->second; } return ms_run_ids; } // qDebug() << "The Pwiz reader did not work."; // Try the TimsData reader QString tims_dir = m_fileName; if(!QFileInfo(tims_dir).isDir()) { tims_dir = QFileInfo(m_fileName).absolutePath(); } TimsMsFileReader tims_file_reader(tims_dir); ms_run_ids = tims_file_reader.getMsRunIds(m_xmlPrefix); if(ms_run_ids.size()) { // qDebug() << "Might well be handled using the Bruker code"; m_fileName = tims_dir; m_fileFormat = tims_file_reader.getFileFormat(); m_fileReaderType = FileReaderType::tims; auto pref = m_preferredFileReaderTypeMap.find(m_fileFormat); if(pref != m_preferredFileReaderTypeMap.end()) { m_fileReaderType = pref->second; } // qDebug() << "Returning Bruker::tims ms run(s)." // << "with preferred reader type:" // << Utils::fileReaderTypeAsString(m_fileReaderType); return ms_run_ids; } // qDebug() << "The Tims reader did not work."; // At this point try the XyMsFileReader XyMsFileReader xy_ms_file_reader(m_fileName); ms_run_ids = xy_ms_file_reader.getMsRunIds(m_xmlPrefix); if(ms_run_ids.size()) { // qDebug() << "Might well be handled using the XY code"; m_fileReaderType = FileReaderType::xy; m_fileFormat = xy_ms_file_reader.getFileFormat(); return ms_run_ids; } // qDebug() << "The XY reader did not work."; return ms_run_ids; } void MsFileAccessor::setPreferredFileReaderType(MzFormat format, FileReaderType reader_type) { auto ret = m_preferredFileReaderTypeMap.insert( std::pair(format, reader_type)); if(!ret.second) { // replace ret.first->second = reader_type; } } FileReaderType MsFileAccessor::getpreferredFileReaderType(MzFormat format) { auto ret = m_preferredFileReaderTypeMap.find(format); if(ret != m_preferredFileReaderTypeMap.end()) { return ret->second; } return m_fileReaderType; } FileReaderType MsFileAccessor::getFileReaderType() const { return m_fileReaderType; } void MsFileAccessor::setSelectedMsRunIdIndex(std::size_t index) { m_selectedMsRunIdIndex = index; } std::size_t MsFileAccessor::getSelectedMsRunIdIndex() const { return m_selectedMsRunIdIndex; } MsRunIdCstSPtr MsFileAccessor::getSelectedMsRunId() { if(m_selectedMsRunIdIndex >= getMsRunIds().size()) throw PappsoException(QObject::tr("MsRunId request out-of-bound error.")); return getMsRunIds().at(m_selectedMsRunIdIndex); } TimsMsRunReaderMs2SPtr MsFileAccessor::buildTimsMsRunReaderMs2SPtr() { // try TimsData reader QString tims_dir = m_fileName; if(!QFileInfo(tims_dir).isDir()) { tims_dir = QFileInfo(m_fileName).absolutePath(); } TimsMsFileReader tims_file_reader(tims_dir); std::vector ms_run_ids = tims_file_reader.getMsRunIds(m_xmlPrefix); if(ms_run_ids.size()) { // qDebug() << "Might well be handled using the Bruker code"; m_fileReaderType = FileReaderType::tims_ms2; m_fileFormat = tims_file_reader.getFileFormat(); m_fileName = tims_dir; return std::make_shared(ms_run_ids.front()); } else { throw(ExceptionNotPossible( QObject::tr("Unable to read mz data directory %1 with TimsTOF reader.") .arg(tims_dir))); } } MsRunReaderSPtr MsFileAccessor::msRunReaderSPtr(MsRunIdCstSPtr ms_run_id) { // We want to return a MsRunReader that accounts for the configuration that // the user might have set. if(m_fileName != ms_run_id->getFileName()) throw(ExceptionNotPossible( QObject::tr("The MsRunId instance must have the name file name as the " "MsFileAccessor."))); if(getpreferredFileReaderType(m_fileFormat) == FileReaderType::pwiz) { // qDebug() << "Returning a PwizMsRunReader."; return std::make_shared(ms_run_id); } else if(getpreferredFileReaderType(m_fileFormat) == FileReaderType::xy) { // qDebug() << "Returning a XyMsRunReader."; return std::make_shared(ms_run_id); } else if(getpreferredFileReaderType(m_fileFormat) == FileReaderType::tims) { // qDebug() << "Returning a TimsMsRunReader."; return std::make_shared(ms_run_id); } else if(getpreferredFileReaderType(m_fileFormat) == FileReaderType::tims_frames) { // qDebug() << "Returning a TimsFramesMsRunReader."; return std::make_shared(ms_run_id); } else if(getpreferredFileReaderType(m_fileFormat) == FileReaderType::tims_ms2) { // qDebug() << "Returning a TimsMsRunReaderMs2."; return std::make_shared(ms_run_id); } if(m_fileFormat == MzFormat::unknown) { if(ms_run_id.get()->getMzFormat() == MzFormat::xy) { return std::make_shared(ms_run_id); } else { return std::make_shared(ms_run_id); } } else { throw PappsoException(QObject::tr("No file format was found.")); } return nullptr; } MsRunReaderSPtr MsFileAccessor::msRunReaderSPtr(std::size_t ms_run_id_index) { std::vector ms_run_ids = getMsRunIds(); if(ms_run_id_index >= ms_run_ids.size()) throw PappsoException(QObject::tr("MsRunId request out-of-bound error.")); return msRunReaderSPtr(ms_run_ids.at(ms_run_id_index)); } MsRunReaderSPtr MsFileAccessor::msRunReaderSPtrForSelectedMsRunIdIndex() { std::vector ms_run_ids = getMsRunIds(); if(m_selectedMsRunIdIndex >= ms_run_ids.size()) throw PappsoException(QObject::tr("MsRunId request out-of-bound error.")); return msRunReaderSPtr(ms_run_ids.at(m_selectedMsRunIdIndex)); } MsRunReaderSPtr MsFileAccessor::buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id) { return buildMsRunReaderSPtr(ms_run_id, pappso::FileReaderType::tims); } MsRunReaderSPtr MsFileAccessor::buildMsRunReaderSPtr( MsRunIdCstSPtr ms_run_id, pappso::FileReaderType preferred_file_reader_type) { QFile file(ms_run_id.get()->getFileName()); if(!file.exists()) throw(ExceptionNotFound( QObject::tr("unable to build a reader : file %1 not found.") .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath()))); MzFormat file_format = ms_run_id.get()->getMzFormat(); if(file_format == MzFormat::xy) { // qDebug() << "Returning a XyMsRunReader."; return std::make_shared(ms_run_id); } else if(file_format == MzFormat::unknown) { throw(PappsoException( QObject::tr("unable to build a reader for %1 : unknown file format") .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath()))); } else if(file_format == MzFormat::brukerTims) { if(preferred_file_reader_type == pappso::FileReaderType::tims) { return std::make_shared(ms_run_id); } else if(preferred_file_reader_type == pappso::FileReaderType::tims_ms2) { return std::make_shared(ms_run_id); } // qDebug() << "by default, build a TimsMsRunReader."; return std::make_shared(ms_run_id); } else { // qDebug() << "Returning a PwizMsRunReader ."; return std::make_shared(ms_run_id); } } MsRunReaderSPtr MsFileAccessor::getMsRunReaderSPtrByRunId(const QString &run_id, const QString &xml_id) { std::vector run_list = getMsRunIds(); MsRunReaderSPtr reader_sp; for(MsRunIdCstSPtr &original_run_id : run_list) { if(original_run_id.get()->getRunId() == run_id) { MsRunId new_run_id(*original_run_id.get()); new_run_id.setXmlId(xml_id); return msRunReaderSPtr(std::make_shared(new_run_id)); } } if((run_id.isEmpty()) && (run_list.size() == 1)) { MsRunId new_run_id(*run_list[0].get()); new_run_id.setXmlId(xml_id); return msRunReaderSPtr(std::make_shared(new_run_id)); } if(reader_sp == nullptr) { throw( ExceptionNotFound(QObject::tr("run id %1 not found in file %2") .arg(run_id) .arg(QFileInfo(m_fileName).absoluteFilePath()))); } return reader_sp; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/msfileaccessor.h000644 001750 001750 00000007121 14533341332 025326 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include "../types.h" #include "../msrun/msrunreader.h" #include "../msrun/msrunid.h" #include "../exportinmportconfig.h" namespace pappso { class TimsMsRunReaderMs2; typedef std::shared_ptr TimsMsRunReaderMs2SPtr; // This class is used to access mass spectrometry data files. The file being // opened and read might contain more than one MS run. The user of this class // might request a vector of all these MS runs (in the form of a vector of // MsRunIdCstSPtr. Once the MsRunIdCstSPtr of interest has been located by the // caller, the caller might then request the MsRunReaderSPtr to use to read that // MS run's data. class PMSPP_LIB_DECL MsFileAccessor { public: MsFileAccessor(const QString &file_name, const QString &xml_prefix); MsFileAccessor(const MsFileAccessor &other); virtual ~MsFileAccessor(); const QString &getFileName() const; /** @brief get the raw format of mz data */ MzFormat getFileFormat() const; /** @brief get the file reader type */ FileReaderType getFileReaderType() const; /** @brief given an mz format, explicitly set the preferred reader */ void setPreferredFileReaderType(MzFormat format, FileReaderType reader_type); FileReaderType getpreferredFileReaderType(MzFormat format); std::vector getMsRunIds(); void setSelectedMsRunIdIndex(std::size_t index); std::size_t getSelectedMsRunIdIndex() const; MsRunIdCstSPtr getSelectedMsRunId(); MsRunReaderSPtr msRunReaderSPtr(MsRunIdCstSPtr ms_run_id); MsRunReaderSPtr msRunReaderSPtr(std::size_t ms_run_id_index); MsRunReaderSPtr msRunReaderSPtrForSelectedMsRunIdIndex(); /** @brief get an msrun reader by finding the run_id in file * * @param run_id identifier within file of the MSrun * @param xml_id XML identifier given by the user to identify this MSrun in * our experiment (not in the file) */ MsRunReaderSPtr getMsRunReaderSPtrByRunId(const QString &run_id, const QString &xml_id); /** @brief get an MsRunReader directly from a valid MsRun ID * * no need to check the file format or filename : all is already part of the * msrunid * * @param ms_run_id msrun identifier * @return msrun reader shared pointer */ static MsRunReaderSPtr buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id); /** @brief get an MsRunReader directly from a valid MsRun ID * * no need to check the file format or filename : all is already part of the * msrunid * * @param ms_run_id msrun identifier * @param preferred_file_reader_type the preferred file reader type to use * (depending on the mz format) * @return msrun reader shared pointer */ static MsRunReaderSPtr buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id, pappso::FileReaderType preferred_file_reader_type); /** @brief if possible, builds directly a dedicated Tims TOF tdf file reader */ TimsMsRunReaderMs2SPtr buildTimsMsRunReaderMs2SPtr(); private: QString m_fileName; // When opening more than one file concurrently in a determinate session, we // need this prefix to craft unabiguous ms run ids. const QString m_xmlPrefix; MzFormat m_fileFormat = MzFormat::unknown; // Type of the file reader that could load the file. FileReaderType m_fileReaderType; std::map m_preferredFileReaderTypeMap; std::size_t m_selectedMsRunIdIndex; }; typedef std::shared_ptr MsFileAccessorSPtr; typedef std::shared_ptr MsFileAccessorCstSPtr; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/msfilereader.cpp000644 001750 001750 00000001107 14526455546 025336 0ustar00rusconirusconi000000 000000 #include #include #include #include #include "msfilereader.h" #include "../exception/exceptionnotfound.h" #include "../utils.h" #include "../msrun/msrunid.h" namespace pappso { MsFileReader::MsFileReader(const QString &file_name) : m_fileName{file_name} { QFile file(file_name); if(!file.exists()) throw(ExceptionNotFound(QObject::tr("File %1 not found.") .arg(QFileInfo(file_name).absoluteFilePath()))); } MsFileReader::~MsFileReader() { } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/msfilereader.h000644 001750 001750 00000000645 14346367014 025001 0ustar00rusconirusconi000000 000000 #pragma once #include #include "../msrun/msrunid.h" namespace pappso { class MsFileReader { protected: QString m_fileName; MzFormat m_fileFormat = MzFormat::unknown; public: MsFileReader(const QString &file_name); virtual ~MsFileReader(); virtual MzFormat getFileFormat() = 0; virtual std::vector getMsRunIds(const QString &run_prefix) = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/mzformatenumstr.cpp000644 001750 001750 00000005565 14526455546 026165 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msfile/mzformatenumstr.cpp * \date 12/2/2021 * \author Olivier Langella * \brief convert mzformat enumerations to strings * */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "mzformatenumstr.h" #include "../pappsoexception.h" #include using namespace pappso; const QString pappso::MzFormatEnumStr::toString(pappso::MzFormat mz_format_enum) { QString mz_format_str; switch(mz_format_enum) { case MzFormat::abSciexT2D: mz_format_str = "abSciexT2D"; break; case MzFormat::abSciexWiff: mz_format_str = "abSciexWiff"; break; case MzFormat::agilentMassHunter: mz_format_str = "agilentMassHunter"; break; case MzFormat::brukerBaf: mz_format_str = "brukerBaf"; break; case MzFormat::brukerFid: mz_format_str = "brukerFid"; break; case MzFormat::brukerTims: mz_format_str = "brukerTims"; break; case MzFormat::brukerYep: mz_format_str = "brukerYep"; break; case MzFormat::MGF: mz_format_str = "MGF"; break; case MzFormat::msn: mz_format_str = "msn"; break; case MzFormat::mz5: mz_format_str = "mz5"; break; case MzFormat::mzML: mz_format_str = "mzML"; break; case MzFormat::mzXML: mz_format_str = "mzXML"; break; case MzFormat::SQLite3: mz_format_str = "SQLite3"; break; case MzFormat::thermoRaw: mz_format_str = "thermoRaw"; break; case MzFormat::watersRaw: mz_format_str = "watersRaw"; break; case MzFormat::xy: mz_format_str = "xy"; break; default: throw pappso::PappsoException(QObject::tr("MzFormat unknown :\n%1") .arg((std::uint8_t)mz_format_enum)); } return mz_format_str; } libpappsomspp-0.9.20/src/pappsomspp/msfile/mzformatenumstr.h000644 001750 001750 00000003036 14346367014 025611 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msfile/mzformatenumstr.h * \date 12/2/2021 * \author Olivier Langella * \brief convert mzformat enumerations to strings * */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../exportinmportconfig.h" #include #include "../types.h" namespace pappso { /** @brief static functions to convert mz file formats */ class PMSPP_LIB_DECL MzFormatEnumStr { public: /** @brief convert mz format enumeration to human readable string */ static const QString toString(MzFormat mz_format_enum); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/pwizmsfilereader.cpp000644 001750 001750 00000014162 14526455546 026255 0ustar00rusconirusconi000000 000000 /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include #include #include /////////////////////// libpwiz includes #include /////////////////////// Local includes #include "pwizmsfilereader.h" #include "../exception/exceptionnotfound.h" #include "../utils.h" #include "../types.h" #include "../msrun/msrunid.h" namespace pappso { PwizMsFileReader::PwizMsFileReader(const QString &file_name) : MsFileReader{file_name} { } PwizMsFileReader::~PwizMsFileReader() { } std::size_t PwizMsFileReader::initialize() { pwiz::msdata::DefaultReaderList defaultReaderList; std::string readerName; try { readerName = defaultReaderList.identify(m_fileName.toStdString()); } catch(std::runtime_error &error) { qDebug() << error.what() << " " << typeid(error).name(); throw PappsoException( QObject::tr( "libpwiz ERROR reading MS data file %1 " "(std::runtime_error):\n%2\nsource file:%3 - source line:%4") .arg(m_fileName) .arg(error.what()) .arg(__FILE__) .arg(__LINE__)); } catch(std::exception &error) { qDebug() << error.what() << " " << typeid(error).name(); throw PappsoException( QObject::tr( "libpwiz ERROR reading MS data file %1 " "(std::runtime_error):\n%2\nsource file:%3 - source line:%4") .arg(m_fileName) .arg(error.what()) .arg(__FILE__) .arg(__LINE__)); } if(readerName.empty()) { qDebug() << "Failed to identify the file."; return 0; } // Now convert the string to MzFormat. if(readerName == "mzML") m_fileFormat = MzFormat::mzML; else if(readerName == "mzXML") m_fileFormat = MzFormat::mzXML; else if(readerName == "Mascot Generic") m_fileFormat = MzFormat::MGF; else if(readerName == "MZ5") m_fileFormat = MzFormat::mz5; else if(readerName == "MSn") m_fileFormat = MzFormat::msn; else if(readerName == "ABSciex WIFF") m_fileFormat = MzFormat::abSciexWiff; else if(readerName == "ABSciex T2D") m_fileFormat = MzFormat::abSciexT2D; else if(readerName == "Agilent MassHunter") m_fileFormat = MzFormat::agilentMassHunter; else if(readerName == "Thermo RAW") m_fileFormat = MzFormat::thermoRaw; else if(readerName == "Water RAW") m_fileFormat = MzFormat::watersRaw; else if(readerName == "Bruker FID") m_fileFormat = MzFormat::brukerFid; else if(readerName == "Bruker YEP") m_fileFormat = MzFormat::brukerYep; else if(readerName == "Bruker BAF") m_fileFormat = MzFormat::brukerBaf; else { m_fileFormat = MzFormat::unknown; return 0; } // std::cout << __FILE__ << " @ " << __LINE__ << " " << __FUNCTION__ << " () " // << std::setprecision(15) << "m_fileFormat: " << (int)m_fileFormat // << std::endl; // At this point we know pwiz could be able to read the file. Actually fill-in // the MSDataPtr vector! try { defaultReaderList.read(Utils::toUtf8StandardString(m_fileName), m_msDataPtrVector); } catch(std::runtime_error &error) { qDebug() << error.what() << " " << typeid(error).name(); throw PappsoException( QObject::tr( "libpwiz ERROR reading MS data file %1 " "(std::runtime_error):\n%2\nsource file:%3 - source line:%4") .arg(m_fileName) .arg(error.what()) .arg(__FILE__) .arg(__LINE__)); } catch(std::exception &error) { qDebug() << error.what() << " " << typeid(error).name(); throw PappsoException( QObject::tr( "libpwiz ERROR reading MS data file %1 " "(std::runtime_error):\n%2\nsource file:%3 - source line:%4") .arg(m_fileName) .arg(error.what()) .arg(__FILE__) .arg(__LINE__)); } // qDebug() << "The number of runs is:" << m_msDataPtrVector.size() //<< "The reader type is:" << QString::fromStdString(readerName) //<< "The number of spectra in first run is:" //<< m_msDataPtrVector.at(0)->run.spectrumListPtr->size(); return m_msDataPtrVector.size(); } MzFormat PwizMsFileReader::getFileFormat() { // std::cout << __FILE__ << " @ " << __LINE__ << " " << __FUNCTION__ << " () " // << std::setprecision(15) << "m_fileFormat: " << (int)m_fileFormat // << std::endl; return m_fileFormat; } std::vector PwizMsFileReader::getMsRunIds(const QString &run_prefix) { std::vector ms_run_ids; if(!initialize()) return ms_run_ids; std::size_t iter = 0; // If the initialization failed, then there is not a single MSDataPtr in the // vector, so the loop below is not gone through. for(pwiz::msdata::MSDataPtr ms_data_ptr : m_msDataPtrVector) { // For each ms run in the file, we will create a MsRunId instance that // will hold the file name of the data file // Finally create the MsRunId with the file name. MsRunId ms_run_id(m_fileName, QString::fromStdString(ms_data_ptr->id)); ms_run_id.setMzFormat(m_fileFormat); // We need to set the unambiguous xmlId string. ms_run_id.setXmlId(QString("%1%2") .arg(run_prefix) .arg(Utils::getLexicalOrderedString(iter))); // Now set the sample name to the run id : ms_run_id.setSampleName(QString::fromStdString(ms_data_ptr->run.id)); // and if it is possible, the real sample name because this one is for the // end user to recognize his sample: if(ms_data_ptr->run.samplePtr != nullptr) { ms_run_id.setSampleName( QString::fromStdString(ms_data_ptr->run.samplePtr->name)); } // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "Current ms_run_id:" << ms_run_id.toString(); // Finally make a shared pointer out of it and append it to the vector. ms_run_ids.push_back(std::make_shared(ms_run_id)); ++iter; } return ms_run_ids; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/pwizmsfilereader.h000644 001750 001750 00000001074 14346367014 025710 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include "../types.h" #include "msfilereader.h" #include "../msrun/msrunid.h" namespace pappso { class PwizMsFileReader : MsFileReader { private: std::vector m_msDataPtrVector; virtual std::size_t initialize(); public: PwizMsFileReader(const QString &file_name); virtual ~PwizMsFileReader(); virtual MzFormat getFileFormat() override; virtual std::vector getMsRunIds(const QString &run_prefix) override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/timsmsfilereader.cpp000644 001750 001750 00000005545 14526455546 026245 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msfile/timsmsfilereader.cpp * \date 06/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsmsfilereader.h" #include "../vendors/tims/timsdata.h" #include "../pappsoexception.h" #include "../exception/exceptionnotimplemented.h" #include #include namespace pappso { TimsMsFileReader::TimsMsFileReader(const QString &file_name) : MsFileReader(file_name) { qDebug() << " " << m_fileName; initialize(); } TimsMsFileReader::~TimsMsFileReader() { } std::size_t TimsMsFileReader::initialize() { m_fileFormat = MzFormat::unknown; try { TimsData tims_data(m_fileName); m_fileFormat = MzFormat::brukerTims; } catch(ExceptionNotImplemented &error) { m_fileFormat = MzFormat::brukerTims; throw pappso::ExceptionNotImplemented( QObject::tr("Error reading Bruker tims data in %1 :\n%2") .arg(m_fileName) .arg(error.qwhat())); } catch(PappsoException &error) { return 0; } return 1; } MzFormat TimsMsFileReader::getFileFormat() { return m_fileFormat; } std::vector TimsMsFileReader::getMsRunIds(const QString &run_prefix) { std::vector ms_run_ids; if(!initialize()) return ms_run_ids; // Finally create the MsRunId with the file name. MsRunId ms_run_id(m_fileName); ms_run_id.setMzFormat(m_fileFormat); // We need to set the unambiguous xmlId string. ms_run_id.setXmlId(QString("%1a1").arg(run_prefix)); ms_run_id.setRunId("a1"); // Now set the sample name to the run id: ms_run_id.setSampleName(QFileInfo(m_fileName).baseName()); qDebug() << "Current ms_run_id:" << ms_run_id.toString(); // Finally make a shared pointer out of it and append it to the vector. ms_run_ids.push_back(std::make_shared(ms_run_id)); return ms_run_ids; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/timsmsfilereader.h000644 001750 001750 00000003234 14346367014 025673 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msfile/timsmsfilereader.h * \date 06/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "msfilereader.h" #include "../msrun/msrunid.h" #include "../msrun/msrunreader.h" namespace pappso { /** * @todo write docs */ class TimsMsFileReader : MsFileReader { public: TimsMsFileReader(const QString &file_name); virtual ~TimsMsFileReader(); virtual MzFormat getFileFormat() override; virtual std::vector getMsRunIds(const QString &run_prefix) override; MsRunReader *selectMsRunReader(const QString &file_name) const; private: virtual std::size_t initialize(); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/xymsfilereader.cpp000644 001750 001750 00000006620 14526455546 025724 0ustar00rusconirusconi000000 000000 /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include #include #include /////////////////////// libpwiz includes #include /////////////////////// Local includes #include "xymsfilereader.h" #include "../exception/exceptionnotfound.h" #include "../utils.h" #include "../types.h" #include "../msrun/msrunid.h" namespace pappso { XyMsFileReader::XyMsFileReader(const QString &file_name) : MsFileReader{file_name} { initialize(); } XyMsFileReader::~XyMsFileReader() { } std::size_t XyMsFileReader::initialize() { // Here we just test all the lines of the file to check that they comply with // the xy format. std::size_t line_count = 0; QFile file(m_fileName); if(!file.open(QFile::ReadOnly | QFile::Text)) { qDebug() << "Failed to open file" << m_fileName; return 0; } QRegularExpressionMatch regExpMatch; QString line; bool file_reading_failed = false; while(!file.atEnd()) { line = file.readLine(); ++line_count; // We only read a given number of lines from the file, that would be // enough to check if that file has the right syntax or not. // if(linesRead >= 2000) // return true; if(line.startsWith('#') || line.isEmpty() || Utils::endOfLineRegExp.match(line).hasMatch()) continue; // qDebug() << __FILE__ << __LINE__ << "Current xy format line:" << line; if(Utils::xyMassDataFormatRegExp.match(line).hasMatch()) continue; else { file_reading_failed = true; break; } } if(!file_reading_failed && line_count >= 1) m_fileFormat = MzFormat::xy; else m_fileFormat = MzFormat::unknown; // qDebug() << "m_fileFormat: " << static_cast(m_fileFormat); return line_count; } MzFormat XyMsFileReader::getFileFormat() { return m_fileFormat; } std::vector XyMsFileReader::getMsRunIds(const QString &run_prefix) { std::vector ms_run_ids; if(!initialize()) return ms_run_ids; // Finally create the MsRunId with the file name. MsRunId ms_run_id(m_fileName); ms_run_id.setMzFormat(m_fileFormat); // We need to set the unambiguous xmlId string. ms_run_id.setXmlId( QString("%1%2").arg(run_prefix).arg(Utils::getLexicalOrderedString(0))); // Craft a meaningful sample name because otherwise all the files loaded from // text files will have the same sample name and it will be difficult to // differentiate them. // Orig version: // ms_run_id.setRunId("Single spectrum"); // Now the sample name is nothing but the file name without the path. QFileInfo file_info(m_fileName); // qDebug() << "file name:" << m_fileName; QString sample_name = file_info.fileName(); // qDebug() << "sample name:" << sample_name; ms_run_id.setRunId(sample_name); // Now set the sample name to the run id: ms_run_id.setSampleName(ms_run_id.getRunId()); // Now set the sample name to the run id: ms_run_id.setSampleName(ms_run_id.getRunId()); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "Current ms_run_id:" << ms_run_id.toString(); // Finally make a shared pointer out of it and append it to the vector. ms_run_ids.push_back(std::make_shared(ms_run_id)); return ms_run_ids; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msfile/xymsfilereader.h000644 001750 001750 00000001112 14346367014 025350 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include "msfilereader.h" #include "../msrun/msrunid.h" #include "../msrun/msrunreader.h" namespace pappso { class XyMsFileReader : MsFileReader { private: virtual std::size_t initialize(); public: XyMsFileReader(const QString &file_name); virtual ~XyMsFileReader(); virtual MzFormat getFileFormat() override; virtual std::vector getMsRunIds(const QString &run_prefix) override; MsRunReader *selectMsRunReader(const QString &file_name) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/000755 001750 001750 00000000000 14533473271 022047 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/msrun/alignment/000755 001750 001750 00000000000 14533473271 024025 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/msrun/alignment/msrunalignment.cpp000644 001750 001750 00000001746 14526455546 027613 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "msrunalignment.h" libpappsomspp-0.9.20/src/pappsomspp/msrun/alignment/msrunalignment.h000644 001750 001750 00000002034 14346367014 027237 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once namespace pappso { class MsRunAlignment { }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/alignment/msrunretentiontime.cpp000644 001750 001750 00000050655 14526455546 030526 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "msrunretentiontime.h" #include "../../exception/exceptionnotpossible.h" #include #include // #include // #include // #include using namespace pappso; template MsRunRetentionTime::MsRunRetentionTime(MsRunReaderSPtr msrun_reader_sp) : m_ms2MedianFilter(10), m_ms2MeanFilter(15), m_ms1MeanFilter(1) { msp_msrunReader = msrun_reader_sp; mcsp_msrunId = msp_msrunReader.get()->getMsRunId(); m_ms1RetentionTimeVector = msp_msrunReader.get()->getRetentionTimeLine(); std::sort(m_ms1RetentionTimeVector.begin(), m_ms1RetentionTimeVector.end(), [](const double &a, const double &b) { return (a < b); }); } template MsRunRetentionTime::MsRunRetentionTime(const MsRunRetentionTime &other) : m_ms2MedianFilter(other.m_ms2MedianFilter), m_ms2MeanFilter(other.m_ms2MeanFilter), m_ms1MeanFilter(other.m_ms1MeanFilter) { msp_msrunReader = other.msp_msrunReader; mcsp_msrunId = other.mcsp_msrunId; m_ms1RetentionTimeVector = other.m_ms1RetentionTimeVector; m_alignedRetentionTimeVector = other.m_alignedRetentionTimeVector; m_seamarks = other.m_seamarks; m_valuesCorrected = other.m_valuesCorrected; m_allMs2Points = other.m_allMs2Points; m_retentionTimeReferenceMethod = other.m_retentionTimeReferenceMethod; } template MsRunRetentionTime::~MsRunRetentionTime() { } template const MsRunId & MsRunRetentionTime::getMsRunId() const { return *(mcsp_msrunId.get()); } template const pappso::FilterMorphoMedian & pappso::MsRunRetentionTime::getMs2MedianFilter() const { return m_ms2MedianFilter; } template void MsRunRetentionTime::setMs2MedianFilter( const FilterMorphoMedian &ms2MedianFilter) { m_ms2MedianFilter = ms2MedianFilter; } template const pappso::FilterMorphoMean & pappso::MsRunRetentionTime::getMs2MeanFilter() const { return m_ms2MeanFilter; } template void MsRunRetentionTime::setMs2MeanFilter(const FilterMorphoMean &ms2MeanFilter) { m_ms2MeanFilter = ms2MeanFilter; } template const pappso::FilterMorphoMean & pappso::MsRunRetentionTime::getMs1MeanFilter() const { return m_ms1MeanFilter; } template void MsRunRetentionTime::setMs1MeanFilter(const FilterMorphoMean &ms1MeanFilter) { m_ms1MeanFilter = ms1MeanFilter; } template const std::vector> & MsRunRetentionTime::getSeamarks() const { qDebug(); return m_seamarks; } template const std::vector & MsRunRetentionTime::getAlignedRetentionTimeVector() const { return m_alignedRetentionTimeVector; } template std::size_t MsRunRetentionTime::getNumberOfCorrectedValues() const { return m_valuesCorrected; } template const std::vector & MsRunRetentionTime::getMs1RetentionTimeVector() const { return m_ms1RetentionTimeVector; } template Trace MsRunRetentionTime::getCommonDeltaRt( const std::vector> &other_seamarks) const { Trace common_points; getCommonDeltaRt(common_points, other_seamarks); return common_points; } template void MsRunRetentionTime::addPeptideAsSeamark(const T &peptide_id, std::size_t ms2_spectrum_index) { qDebug(); msp_msrunReader.get()->acquireDevice(); PeptideMs2Point ms2point; ms2point.entityHash = peptide_id; QualifiedMassSpectrum spectrum = msp_msrunReader.get()->qualifiedMassSpectrum(ms2_spectrum_index, false); ms2point.precursorIntensity = spectrum.getPrecursorIntensity(); ms2point.retentionTime = spectrum.getRtInSeconds(); // addSeamark(m_hash_fn(peptide_str.toStdString()), retentionTime); m_allMs2Points.push_back(ms2point); qDebug(); } template void MsRunRetentionTime::addPeptideAsSeamark(const T &peptide_id, double retentionTime, double precursorIntensity) { PeptideMs2Point ms2point; ms2point.entityHash = peptide_id; ms2point.precursorIntensity = precursorIntensity; ms2point.retentionTime = retentionTime; m_allMs2Points.push_back(ms2point); } template void MsRunRetentionTime::computeSeamarks() { qDebug(); if(m_allMs2Points.size() == 0) { // already computed return; } m_seamarks.clear(); if(m_retentionTimeReferenceMethod == ComputeRetentionTimeReference::maximum_intensity) { std::sort(m_allMs2Points.begin(), m_allMs2Points.end(), [](const PeptideMs2Point &a, const PeptideMs2Point &b) { if(a.entityHash == b.entityHash) { return (a.precursorIntensity > b.precursorIntensity); } return (a.entityHash < b.entityHash); }); auto itend = std::unique(m_allMs2Points.begin(), m_allMs2Points.end(), [](const PeptideMs2Point &a, const PeptideMs2Point &b) { return (a.entityHash == b.entityHash); }); auto it = m_allMs2Points.begin(); while(it != itend) { m_seamarks.push_back( {it->entityHash, it->retentionTime, it->precursorIntensity}); it++; } } m_allMs2Points.clear(); std::sort(m_seamarks.begin(), m_seamarks.end(), [](const MsRunRetentionTimeSeamarkPoint &a, const MsRunRetentionTimeSeamarkPoint &b) { return (a.entityHash < b.entityHash); }); qDebug(); } template void MsRunRetentionTime::getCommonDeltaRt( Trace &delta_rt, const std::vector> &other_seamarks) const { qDebug(); auto it = other_seamarks.begin(); for(const MsRunRetentionTimeSeamarkPoint &seamark : m_seamarks) { while((it != other_seamarks.end()) && (it->entityHash < seamark.entityHash)) { it++; } if(it == other_seamarks.end()) break; if(it->entityHash == seamark.entityHash) { delta_rt.push_back(DataPoint( seamark.retentionTime, seamark.retentionTime - it->retentionTime)); } } qDebug(); if((m_ms2MedianFilter.getHalfWindowSize() * 2 + 1) >= delta_rt.size()) { throw ExceptionNotPossible( QObject::tr("ERROR : MS2 alignment of MS run '%1' (%2)' not possible : " "\ntoo few MS2 points (%3) in common") .arg(msp_msrunReader.get()->getMsRunId().get()->getXmlId()) .arg(msp_msrunReader.get()->getMsRunId().get()->getFileName()) .arg(delta_rt.size())); } qDebug(); if((m_ms2MeanFilter.getHalfWindowSize() * 2 + 1) >= delta_rt.size()) { throw ExceptionNotPossible( QObject::tr("ERROR : MS2 alignment of MS run '%1' (%2)' not possible : " "\ntoo few MS2 points (%3) in common") .arg(msp_msrunReader.get()->getMsRunId().get()->getXmlId()) .arg(msp_msrunReader.get()->getMsRunId().get()->getFileName()) .arg(delta_rt.size())); } delta_rt.sortX(); // there can be multiple entities (peptides) at one retention time // in this case, avoid retention time redundancy by applying unique on trace : delta_rt.unique(); qDebug(); } template double MsRunRetentionTime::getFrontRetentionTimeReference() const { if(isAligned()) { return m_alignedRetentionTimeVector.front(); } return m_ms1RetentionTimeVector.front(); } template double MsRunRetentionTime::getBackRetentionTimeReference() const { if(isAligned()) { return m_alignedRetentionTimeVector.back(); } return m_ms1RetentionTimeVector.back(); } template double MsRunRetentionTime::translateOriginal2AlignedRetentionTime( double original_retention_time) const { if(m_alignedRetentionTimeVector.size() < 3) { throw ExceptionNotPossible( QObject::tr("ERROR : too few aligned points to compute aligned " "retention time (%1)") .arg(m_ms1RetentionTimeVector.size())); } if(m_alignedRetentionTimeVector.size() != m_ms1RetentionTimeVector.size()) { throw ExceptionNotPossible( QObject::tr("ERROR : m_alignedRetentionTimeVector.size() %1 != %2 " "m_ms1RetentionTimeVector.size()") .arg(m_alignedRetentionTimeVector.size()) .arg(m_ms1RetentionTimeVector.size())); } auto it_plus = std::find_if(m_ms1RetentionTimeVector.begin(), m_ms1RetentionTimeVector.end(), [original_retention_time](const double &rt_point) { return original_retention_time < rt_point; }); double rt1_a, rt2_a, rt1_b, rt2_b; if(it_plus == m_ms1RetentionTimeVector.end()) { it_plus--; } if(it_plus == m_ms1RetentionTimeVector.begin()) { it_plus++; } auto it_minus = it_plus - 1; rt1_a = *it_minus; rt2_a = *it_plus; double ratio = (original_retention_time - rt1_a) / (rt2_a - rt1_a); auto itref = m_alignedRetentionTimeVector.begin() + std::distance(m_ms1RetentionTimeVector.begin(), it_minus); rt1_b = *itref; itref++; rt2_b = *itref; return (((rt2_b - rt1_b) * ratio) + rt1_b); } template double MsRunRetentionTime::translateAligned2OriginalRetentionTime( double aligned_retention_time) const { if(m_alignedRetentionTimeVector.size() < 3) { throw ExceptionNotPossible( QObject::tr("ERROR : too few aligned points to compute aligned " "retention time (%1)") .arg(m_ms1RetentionTimeVector.size())); } if(m_alignedRetentionTimeVector.size() != m_ms1RetentionTimeVector.size()) { throw ExceptionNotPossible( QObject::tr("ERROR : m_alignedRetentionTimeVector.size() %1 != %2 " "m_ms1RetentionTimeVector.size()") .arg(m_alignedRetentionTimeVector.size()) .arg(m_ms1RetentionTimeVector.size())); } auto it_plus = std::find_if(m_alignedRetentionTimeVector.begin(), m_alignedRetentionTimeVector.end(), [aligned_retention_time](const double &rt_point) { return aligned_retention_time < rt_point; }); double rt1_a, rt2_a, rt1_b, rt2_b; if(it_plus == m_alignedRetentionTimeVector.end()) { it_plus--; } if(it_plus == m_alignedRetentionTimeVector.begin()) { it_plus++; } auto it_minus = it_plus - 1; rt1_a = *it_minus; rt2_a = *it_plus; double ratio = (aligned_retention_time - rt1_a) / (rt2_a - rt1_a); auto itref = m_ms1RetentionTimeVector.begin() + std::distance(m_alignedRetentionTimeVector.begin(), it_minus); rt1_b = *itref; itref++; rt2_b = *itref; return (((rt2_b - rt1_b) * ratio) + rt1_b); } template const std::vector> MsRunRetentionTime::getSeamarksReferences() const { std::vector> other_seamarks = m_seamarks; for(auto &seamark : other_seamarks) { seamark.retentionTime = translateOriginal2AlignedRetentionTime(seamark.retentionTime); } return other_seamarks; } template bool MsRunRetentionTime::isAligned() const { return (m_alignedRetentionTimeVector.size() > 0); } template Trace MsRunRetentionTime::align( const MsRunRetentionTime &msrun_retention_time_reference) { computeSeamarks(); std::vector> other_seamarks; if(msrun_retention_time_reference.isAligned()) { other_seamarks = msrun_retention_time_reference.getSeamarksReferences(); } else { other_seamarks = msrun_retention_time_reference.getSeamarks(); } qDebug(); if((m_ms1MeanFilter.getHalfWindowSize() * 2 + 1) >= m_ms1RetentionTimeVector.size()) { throw ExceptionNotPossible( QObject::tr("ERROR : MS1 alignment of MS run '%1' (%2)' not possible : " "\ntoo few MS1 points (%3)") .arg(msp_msrunReader.get()->getMsRunId().get()->getXmlId()) .arg(msp_msrunReader.get()->getMsRunId().get()->getFileName()) .arg(m_ms1RetentionTimeVector.size())); } qDebug() << m_seamarks[0].entityHash << " " << m_seamarks[0].retentionTime << " " << other_seamarks[0].entityHash << other_seamarks[0].retentionTime << " "; // both seamarks has to be ordered Trace common_points; getCommonDeltaRt(common_points, other_seamarks); // writeTrace("lib_ms2_delta_rt.ods", common_points); qDebug() << common_points.front().x << " " << common_points.front().y; m_ms2MedianFilter.filter(common_points); // writeTrace("lib_ms2_delta_rt_median.ods", common_points); m_ms2MeanFilter.filter(common_points); // writeTrace("lib_ms2_delta_rt_mean.ods", common_points); // convert common delta rt to real retention times (for convenience) qDebug() << common_points.front().x << " " << common_points.front().y; // add a first point to ensure coherence: DataPoint first_point; first_point.x = m_ms1RetentionTimeVector.front() - (double)1; if(first_point.x < 0) { first_point.x = 0; } first_point.y = m_ms1RetentionTimeVector.front() - msrun_retention_time_reference.getFrontRetentionTimeReference(); common_points.push_back(first_point); // add a last point to ensure coherence: DataPoint last_point; last_point.x = m_ms1RetentionTimeVector.back() + 1; last_point.y = m_ms1RetentionTimeVector.back() - msrun_retention_time_reference.getBackRetentionTimeReference(); common_points.push_back(last_point); common_points.sortX(); // now, it is possible for each time range to give a new MS1 time using a // linear regression on MS2 corrected times m_alignedRetentionTimeVector.clear(); qDebug() << common_points.front().x << " " << common_points.front().y; Trace ms1_aligned_points; linearRegressionMs2toMs1(ms1_aligned_points, common_points); // writeTrace("lib_ms1_map_rt.ods", ms1_aligned_points); qDebug(); // smoothing on MS1 points m_ms1MeanFilter.filter(ms1_aligned_points); // writeTrace("lib_ms1_map_rt_mean.ods", ms1_aligned_points); // final aligned retentionTime vector for(DataPoint &data_point : ms1_aligned_points) { data_point.y = (data_point.x - data_point.y); } qDebug(); // Here, the correction parameter is the slope of old rt points curve // (divided by 4 to get a finer correction). double correction_parameter = (m_ms1RetentionTimeVector.back() - m_ms1RetentionTimeVector.front()) / (ms1_aligned_points.size()); // set_correction_parameter(correction_parameter / 4); correction_parameter = correction_parameter / (double)4; correctNewTimeValues(ms1_aligned_points, correction_parameter); m_alignedRetentionTimeVector = ms1_aligned_points.yValues(); qDebug(); return ms1_aligned_points; } template void MsRunRetentionTime::linearRegressionMs2toMs1(Trace &ms1_aligned_points, const Trace &common_points) { // first slope : std::vector::const_iterator itms2 = common_points.begin(); std::vector::const_iterator itms2next = itms2 + 1; if(itms2next == common_points.end()) { // error throw ExceptionNotPossible( QObject::tr("ERROR : MS1 alignment of MS run '%1' (%2)' not possible : " "\ntoo few common points (%3)") .arg(msp_msrunReader.get()->getMsRunId().get()->getXmlId()) .arg(msp_msrunReader.get()->getMsRunId().get()->getFileName()) .arg(common_points.size())); } qDebug() << "() itms2->x=" << itms2->x << " itms2->y=" << itms2->y; for(double &original_rt_point : m_ms1RetentionTimeVector) { DataPoint ms1_point; ms1_point.x = original_rt_point; while(ms1_point.x > itms2next->x) { itms2++; itms2next++; } double ratio = (itms2next->x - itms2->x); if(ratio != 0) { ratio = (ms1_point.x - itms2->x) / ratio; } else { // avoid division by zero ratio = 1; } // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "() " << // ratio; ms1_point.y = itms2->y + ((itms2next->y - itms2->y) * ratio); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "() " // << ms1_point.y; ms1_aligned_points.push_back(ms1_point); } } template void MsRunRetentionTime::correctNewTimeValues(Trace &ms1_aligned_points, double correction_parameter) { m_valuesCorrected = 0; auto new_it(ms1_aligned_points.begin()); auto new_nextit(ms1_aligned_points.begin()); new_nextit++; for(; new_nextit != ms1_aligned_points.end(); ++new_nextit, ++new_it) { if(new_nextit->y < new_it->y) { ++m_valuesCorrected; new_nextit->y = new_it->y + correction_parameter; } } } template pappso::MsRunReaderSPtr pappso::MsRunRetentionTime::getMsRunReaderSPtr() const { return msp_msrunReader; } template void pappso::MsRunRetentionTime::setAlignedRetentionTimeVector( const std::vector &aligned_times) { if(aligned_times.size() == m_ms1RetentionTimeVector.size()) { m_alignedRetentionTimeVector = aligned_times; } else { if(aligned_times.size() == m_ms1RetentionTimeVector.size() * 2) { m_alignedRetentionTimeVector = m_ms1RetentionTimeVector; for(std::size_t i = 0; i < m_ms1RetentionTimeVector.size(); i++) { if(aligned_times[2 * i] != m_ms1RetentionTimeVector[i]) { throw pappso::PappsoException( QObject::tr( "ERROR : aligned_times (size=%1) vector does not have " "required size (size=%2)") .arg(aligned_times.size()) .arg(m_ms1RetentionTimeVector.size())); } m_alignedRetentionTimeVector[i] = aligned_times[(2 * i) + 1]; } } else { throw ExceptionNotPossible( QObject::tr("ERROR : aligned_times (size=%1) vector does not have " "required size (size=%2)") .arg(aligned_times.size()) .arg(m_ms1RetentionTimeVector.size())); } } } template Trace MsRunRetentionTime::getCommonSeamarksDeltaRt( const MsRunRetentionTime &msrun_retention_time_reference) const { // computeSeamarks(); std::vector> other_seamarks; if(msrun_retention_time_reference.isAligned()) { other_seamarks = msrun_retention_time_reference.getSeamarksReferences(); } else { other_seamarks = msrun_retention_time_reference.getSeamarks(); } qDebug(); qDebug() << m_seamarks[0].entityHash << " " << m_seamarks[0].retentionTime << " " << other_seamarks[0].entityHash << other_seamarks[0].retentionTime << " "; // both seamarks has to be ordered Trace common_points; getCommonDeltaRt(common_points, other_seamarks); return common_points; } libpappsomspp-0.9.20/src/pappsomspp/msrun/alignment/msrunretentiontime.h000644 001750 001750 00000013777 14346367014 030167 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../msrunid.h" #include "../msrunreader.h" #include #include "../../processing/filters/filtermorpho.h" namespace pappso { template struct MsRunRetentionTimeSeamarkPoint { T entityHash; double retentionTime; double intensity; }; template class PMSPP_LIB_DECL MsRunRetentionTime { private: struct PeptideMs2Point { double retentionTime; double precursorIntensity; T entityHash; }; enum class ComputeRetentionTimeReference { maximum_intensity, weighted_intensity, last }; public: MsRunRetentionTime(MsRunReaderSPtr msrun_reader_sp); MsRunRetentionTime(const MsRunRetentionTime &other); ~MsRunRetentionTime(); pappso::MsRunReaderSPtr getMsRunReaderSPtr() const; const MsRunId &getMsRunId() const; void setMs2MedianFilter(const FilterMorphoMedian &ms2MedianFilter); void setMs2MeanFilter(const FilterMorphoMean &ms2MeanFilter); void setMs1MeanFilter(const FilterMorphoMean &ms1MeanFilter); const FilterMorphoMedian &getMs2MedianFilter() const; const FilterMorphoMean &getMs2MeanFilter() const; const FilterMorphoMean &getMs1MeanFilter() const; Trace getCommonDeltaRt( const std::vector> &other_seamarks) const; /** @brief collects all peptide evidences of a given MSrun * seamarks has to be converted to peptide retention time using * computePeptideRetentionTimes * * @param peptide_id unique identifier (whichever type) of a peptide * @param ms2_spectrum_index associated MS2 spectrum index ot this peptide */ void addPeptideAsSeamark(const T &peptide_id, std::size_t ms2_spectrum_index); /** @brief collects all peptide evidences of a given MSrun * seamarks has to be converted to peptide retention time using * computePeptideRetentionTimes * * @param peptide_id unique identifier (whichever type) of a peptide * @param retentionTime retention time of this peptide observation * @param precursorIntensity MS2 precursorIntensity of this peptide */ void addPeptideAsSeamark(const T &peptide_id, double retentionTime, double precursorIntensity); std::size_t getNumberOfCorrectedValues() const; /** @brief align the current msrunretentiontime object using the given * reference * @param msrun_retention_time_reference the reference * @return a trace containing aligned MS1 retention times */ Trace align(const MsRunRetentionTime &msrun_retention_time_reference); /** @brief get common seamarks between msrunretentiontime objects and their * deltart * @param msrun_retention_time_reference the reference * @return a trace containing MS2 common points and their deltart */ Trace getCommonSeamarksDeltaRt( const MsRunRetentionTime &msrun_retention_time_reference) const; const std::vector> &getSeamarks() const; /** @brief get aligned retention time vector * @return vector of seconds (as double) */ const std::vector &getAlignedRetentionTimeVector() const; void setAlignedRetentionTimeVector(const std::vector &aligned_times); /** @brief get orginal retention time vector (not aligned) * @return vector of seconds (as double) */ const std::vector &getMs1RetentionTimeVector() const; bool isAligned() const; double translateOriginal2AlignedRetentionTime(double original_retention_time) const; double translateAligned2OriginalRetentionTime(double aligned_retention_time) const; /** @brief convert PeptideMs2Point into Peptide seamarks * this is required before computing alignment */ void computeSeamarks(); protected: double getFrontRetentionTimeReference() const; double getBackRetentionTimeReference() const; const std::vector> getSeamarksReferences() const; private: /** @brief get a trace of common MS2 retention times (x values) by their * deltart (y values) * @param delta_rt the trace result (common MS2 retention times vs counter * part deltart) * @param other_seamarks seamarks of the counter part (reference) */ void getCommonDeltaRt( Trace &delta_rt, const std::vector> &other_seamarks) const; void correctNewTimeValues(Trace &ms1_aligned_points, double correction_parameter); void linearRegressionMs2toMs1(Trace &ms1_aligned_points, const Trace &common_points); private: FilterMorphoMedian m_ms2MedianFilter; FilterMorphoMean m_ms2MeanFilter; FilterMorphoMean m_ms1MeanFilter; pappso::MsRunReaderSPtr msp_msrunReader; pappso::MsRunIdCstSPtr mcsp_msrunId; std::vector m_ms1RetentionTimeVector; std::vector m_alignedRetentionTimeVector; std::vector> m_seamarks; std::size_t m_valuesCorrected = 0; std::vector m_allMs2Points; ComputeRetentionTimeReference m_retentionTimeReferenceMethod = ComputeRetentionTimeReference::maximum_intensity; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/alignment/template.cpp000644 001750 001750 00000000336 14526455546 026355 0ustar00rusconirusconi000000 000000 #include "msrunretentiontime.h" #include "msrunretentiontime.cpp" #include "../../peptide/peptide.h" template class pappso::MsRunRetentionTime; template class pappso::MsRunRetentionTime; libpappsomspp-0.9.20/src/pappsomspp/msrun/output/000755 001750 001750 00000000000 14533473271 023407 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/msrun/output/mgfoutput.cpp000644 001750 001750 00000003467 14526455546 026166 0ustar00rusconirusconi000000 000000 #include "mgfoutput.h" using namespace pappso; MgfOutput::MgfOutput(QIODevice *p_output_device) { mpa_outputStream = new QTextStream(p_output_device); } MgfOutput::~MgfOutput() { } void MgfOutput::write(const QualifiedMassSpectrum &mass_spectrum) { /* * BEGIN IONS TITLE=20120906_balliau_extract_1_A01_urnb-1.15968.15968.2 RTINSECONDS=2843.58 PEPMASS=638.36934732588 270659.09375 CHARGE=2+ 89.01705933 1255.7088623047 89.06031799 258758.140625 90.06361389 12425.6162109375 */ *mpa_outputStream << "BEGIN IONS" << Qt::endl; *mpa_outputStream << "TITLE=" << mass_spectrum.getMassSpectrumId() .getMsRunIdCstSPtr() .get() ->getSampleName() << "." << mass_spectrum.getMassSpectrumId().getSpectrumIndex() << Qt::endl; *mpa_outputStream << "RTINSECONDS=" << QString::number(mass_spectrum.getRtInSeconds(), 'f', 2) << Qt::endl; *mpa_outputStream << "PEPMASS=" << QString::number(mass_spectrum.getPrecursorMz(), 'g', 15) << " " << QString::number( mass_spectrum.getPrecursorIntensity(), 'f', 5) << Qt::endl; *mpa_outputStream << "CHARGE=" << mass_spectrum.getPrecursorCharge() << "+" << Qt::endl; if(mass_spectrum.getMassSpectrumCstSPtr() != nullptr) { for(auto &&peak : *(mass_spectrum.getMassSpectrumCstSPtr().get())) { *mpa_outputStream << QString::number(peak.x, 'g', 15) << " " << QString::number(peak.y, 'g', 15) << Qt::endl; } } *mpa_outputStream << "END IONS" << Qt::endl; } void MgfOutput::close() { mpa_outputStream->flush(); } libpappsomspp-0.9.20/src/pappsomspp/msrun/output/mgfoutput.h000644 001750 001750 00000003076 14346367014 025617 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/output/mgfoutput.h * \date 6/5/2020 * \author Olivier Langella * \brief write msrun peaks into MGF output stream */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include "../../massspectrum/qualifiedmassspectrum.h" namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL MgfOutput { public: /** * Default constructor */ MgfOutput(QIODevice *p_output_device); void write(const QualifiedMassSpectrum &mass_spectrum); void close(); /** * Destructor */ virtual ~MgfOutput(); private: QTextStream *mpa_outputStream; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/output/mzxmloutput.cpp000644 001750 001750 00000033167 14526455546 026564 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/output/mzxmloutput.cpp * \date 23/11/2019 * \author Olivier Langella * \brief write msrun peaks into mzxml output stream */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "mzxmloutput.h" #include #include #include #include #include "../../config.h" using namespace pappso; template T change_endian(T in) { char *const p = reinterpret_cast(&in); for(size_t i = 0; i < sizeof(T) / 2; ++i) std::swap(p[i], p[sizeof(T) - i - 1]); return in; } MzxmlOutput::Translater::Translater(MzxmlOutput *p_mzxml_output) { mp_output = p_mzxml_output; } MzxmlOutput::Translater::~Translater() { } void MzxmlOutput::Translater::setQualifiedMassSpectrum( const QualifiedMassSpectrum &spectrum) { qDebug(); mp_output->m_monitor.count(); mp_output->writeQualifiedMassSpectrum(spectrum); qDebug(); } bool MzxmlOutput::Translater::needPeakList() const { return true; } MzxmlOutput::MzxmlOutput(UiMonitorInterface &monitor, QIODevice *p_output_device) : m_monitor(monitor) { mpa_outputStream = new QXmlStreamWriter(p_output_device); mpa_outputStream->setAutoFormatting(true); mpa_outputStream->writeStartDocument("1.0"); } MzxmlOutput::~MzxmlOutput() { close(); delete mpa_outputStream; } void MzxmlOutput::setReadAhead(bool isReadAhead) { m_isReadAhead = isReadAhead; } void MzxmlOutput::write(MsRunReader *p_msrunreader) { qDebug(); m_monitor.setTotalSteps(p_msrunreader->spectrumListSize()); writeHeader(p_msrunreader); Translater translater(this); translater.setReadAhead(m_isReadAhead); translater.setNeedMsLevelPeakList(1, !m_ms1IsMasked); // translater.setNeedMsLevelPeakList(1, false); // translater.setNeedMsLevelPeakList(2, false); p_msrunreader->readSpectrumCollection(translater); m_monitor.setTotalSteps(0); qDebug(); } void pappso::MzxmlOutput::write(const MsRunReadConfig &read_config, pappso::MsRunReader *p_msrunreader) { qDebug(); m_monitor.setTotalSteps(p_msrunreader->spectrumListSize()); writeHeader(p_msrunreader); Translater translater(this); translater.setReadAhead(m_isReadAhead); translater.setNeedMsLevelPeakList(1, !m_ms1IsMasked); // translater.setNeedMsLevelPeakList(1, false); // translater.setNeedMsLevelPeakList(2, false); p_msrunreader->readSpectrumCollection2(read_config, translater); m_monitor.setTotalSteps(0); } void MzxmlOutput::writeHeader(MsRunReader *p_msrunreader) { mpa_outputStream->writeNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi"); // xmlns="http://sashimi.sourceforge.net/schema_revision/mzXML_2.0" // xsi:schemaLocation="http://sashimi.sourceforge.net/schema_revision/mzXML_2.0 // http://sashimi.sourceforge.net/schema_revision/mzXML_2.0/mzXML_idx_2.0.xsd" /* 114 writer.setPrefix("xsi", xmlnsxsi); 115 writer.setDefaultNamespace(namespaceURI); mpa_outputStream->writeStartElement("mzXML"); 117 writer.writeNamespace("xsi", xmlnsxsi); 118 writer.writeDefaultNamespace(namespaceURI); 119 120 writer.writeAttribute(xmlnsxsi, "schemaLocation", xsischemaLocation); 121 */ mpa_outputStream->writeStartElement("mzXML"); mpa_outputStream->writeAttribute( "xmlns", "http://sashimi.sourceforge.net/schema_revision/mzXML_3.2"); mpa_outputStream->writeAttribute( "xsi:schemaLocation", "http://sashimi.sourceforge.net/schema_revision/mzXML_3.2 " "http://sashimi.sourceforge.net/schema_revision/mzXML_3.2/" "mzXML_idx_3.2.xsd"); mpa_outputStream->writeStartElement("msRun"); mpa_outputStream->writeAttribute( "scanCount", QString("%1").arg(p_msrunreader->spectrumListSize())); // // writer.writeAttribute("scanCount", // ms_run.getSpectrumCount(this.controller).toString()); /* * # < parentFile fileName = # * "file://SEQUEST1/raw/vidal/20060411_VIDAL_JEAN_1_PEPCR1_42140.RAW" # * fileType = "RAWData" fileSha1 = # * "23c1620d4ad3f4f0103b0141b7caec1e8b7eebf5" / > */ mpa_outputStream->writeStartElement("parentFile"); mpa_outputStream->writeAttribute("fileName", p_msrunreader->getMsRunId()->getFileName()); mpa_outputStream->writeAttribute("fileType", "RAWData"); mpa_outputStream->writeEndElement(); /* 144 145 MsInstrumentList instrument_list = ms_run.getMsInstruments(controller); 146 for (MsInstrument instrument : instrument_list) { 147 this.write(instrument); 148 } */ mpa_outputStream->writeStartElement("msInstrument"); mpa_outputStream->writeAttribute("msInstrumentID", "1"); // mpa_outputStream->writeStartElement("msManufacturer"); mpa_outputStream->writeAttribute("category", "msManufacturer"); mpa_outputStream->writeAttribute("value", "unknown"); mpa_outputStream->writeEndElement(); // // // // // mpa_outputStream->writeEndElement(); /* 149 150 // #< dataProcessing centroided ="1" > 151 // my $ref_data_processings = $ms_run_description->dataProcessing(); 152 MsDataProcessingList dataProcList = ms_run.getMsDataProcessings(controller); 153 for (MsDataProcessing msDataProc : dataProcList) { 154 this.write(msDataProc); 155 } */ mpa_outputStream->writeStartElement("dataProcessing"); // mpa_outputStream->writeAttribute("centroided", "1"); // mpa_outputStream->writeStartElement("software"); mpa_outputStream->writeAttribute("type", "conversion"); mpa_outputStream->writeAttribute("name", PAPPSOMSPP_NAME); mpa_outputStream->writeAttribute("version", PAPPSOMSPP_VERSION); mpa_outputStream->writeEndElement(); // mpa_outputStream->writeStartElement("processingOperation"); mpa_outputStream->writeAttribute("name", "Conversion to mzXML"); // mpa_outputStream->writeStartElement("software"); mpa_outputStream->writeAttribute("type", "processing"); mpa_outputStream->writeAttribute("name", PAPPSOMSPP_NAME); mpa_outputStream->writeAttribute("version", PAPPSOMSPP_VERSION); mpa_outputStream->writeEndElement(); //Thermo/Xcalibur peak picking mpa_outputStream->writeStartElement("comment"); mpa_outputStream->writeCharacters("pappso::MzxmlOutput"); mpa_outputStream->writeEndElement(); // mpa_outputStream->writeEndElement(); mpa_outputStream->writeEndElement(); // Peaks } void MzxmlOutput::close() { mpa_outputStream->writeEndDocument(); } std::size_t MzxmlOutput::getScanNumberFromNativeId(const QString &native_id) const { QStringList native_id_list = native_id.split("="); if(native_id_list.size() < 2) { } else { return native_id_list.back().toULong(); } return std::numeric_limits::max(); } std::size_t MzxmlOutput::getScanNumber(const QualifiedMassSpectrum &spectrum) const { std::size_t scan_number = getScanNumberFromNativeId(spectrum.getMassSpectrumId().getNativeId()); if(scan_number == std::numeric_limits::max()) { scan_number = spectrum.getMassSpectrumId().getSpectrumIndex() + 1; } return scan_number; } std::size_t MzxmlOutput::getPrecursorScanNumber(const QualifiedMassSpectrum &spectrum) const { std::size_t scan_number = getScanNumberFromNativeId(spectrum.getPrecursorNativeId()); if(scan_number == std::numeric_limits::max()) { scan_number = spectrum.getPrecursorSpectrumIndex() + 1; } return scan_number; } void MzxmlOutput::writeQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &spectrum) { qDebug(); mpa_outputStream->writeStartElement("scan"); /* */ mpa_outputStream->writeAttribute("num", QString("%1").arg(getScanNumber(spectrum))); mpa_outputStream->writeAttribute("centroided", QString("1")); mpa_outputStream->writeAttribute("msLevel", QString("%1").arg(spectrum.getMsLevel())); if(spectrum.getMassSpectrumCstSPtr().get() == nullptr) { mpa_outputStream->writeAttribute("peaksCount", "0"); } else { mpa_outputStream->writeAttribute("peaksCount", QString("%1").arg(spectrum.size())); if(spectrum.size() > 0) { mpa_outputStream->writeAttribute( "lowMz", QString::number( spectrum.getMassSpectrumCstSPtr().get()->front().x, 'f', 12)); mpa_outputStream->writeAttribute( "highMz", QString::number( spectrum.getMassSpectrumCstSPtr().get()->back().x, 'f', 12)); // mpa_outputStream->writeAttribute("highMz", // QString::number(spectrum.getMassSpectrumCstSPtr().get()->back().x, // 'f', 10)); basePeakMz="245.1271988" // basePeakIntensity="5810.7739" // totIonCurrent="57803.815999999999"> } } mpa_outputStream->writeAttribute("polarity", "+"); mpa_outputStream->writeAttribute( "retentionTime", QString("PT%1S").arg(QString::number(spectrum.getRtInSeconds(), 'f', 2))); if(spectrum.getMsLevel() > 1) { //994.690619901808 mpa_outputStream->writeStartElement("precursorMz"); mpa_outputStream->writeAttribute( "precursorScanNum", QString("%1").arg(getPrecursorScanNumber(spectrum))); bool ok; double precursor_intensity = spectrum.getPrecursorIntensity(&ok); if(ok) { mpa_outputStream->writeAttribute( "precursorIntensity", QString::number(precursor_intensity, 'f', 4)); } uint charge = spectrum.getPrecursorCharge(&ok); if(ok) { mpa_outputStream->writeAttribute("precursorCharge", QString("%1").arg(charge)); } double precursor_mz = spectrum.getPrecursorMz(&ok); if(ok) { mpa_outputStream->writeCharacters( QString::number(precursor_mz, 'f', 12)); } mpa_outputStream->writeEndElement(); } /**/ mpa_outputStream->writeStartElement("peaks"); mpa_outputStream->writeAttribute("compressionType", "none"); mpa_outputStream->writeAttribute("compressedLen", "0"); mpa_outputStream->writeAttribute("precision", "64"); mpa_outputStream->writeAttribute("byteOrder", "network"); mpa_outputStream->writeAttribute("contentType", "m/z-int"); if((spectrum.getMassSpectrumCstSPtr().get() != nullptr) && (!spectrum.isEmptyMassSpectrum())) { QByteArray byte_array; if(QSysInfo::ByteOrder == QSysInfo::LittleEndian) { for(const DataPoint &peak : *(spectrum.getMassSpectrumCstSPtr().get())) { double swap = change_endian(peak.x); byte_array.append((char *)&swap, 8); swap = change_endian(peak.y); byte_array.append((char *)&swap, 8); } } else { for(const DataPoint &peak : *(spectrum.getMassSpectrumCstSPtr().get())) { byte_array.append((char *)&peak.x, 8); byte_array.append((char *)&peak.y, 8); } } mpa_outputStream->writeCharacters(byte_array.toBase64()); } mpa_outputStream->writeEndElement(); // scan mpa_outputStream->writeEndElement(); qDebug(); } void MzxmlOutput::maskMs1(bool mask_ms1) { m_ms1IsMasked = mask_ms1; } libpappsomspp-0.9.20/src/pappsomspp/msrun/output/mzxmloutput.h000644 001750 001750 00000005314 14510011217 026172 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/output/mzxmloutput.h * \date 23/11/2019 * \author Olivier Langella * \brief write msrun peaks into mzxml output stream */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../msrunreader.h" #include #include "../../processing/uimonitor/uimonitorinterface.h" namespace pappso { /** * @todo use msrunreader as input and writes all peaks into an mzXML output * stream */ class PMSPP_LIB_DECL MzxmlOutput { public: /** * Default constructor */ MzxmlOutput(UiMonitorInterface &monitor, QIODevice *p_output_device); /** * Destructor */ ~MzxmlOutput(); void write(MsRunReader *p_msrunreader); void write(const MsRunReadConfig &read_config, MsRunReader *p_msrunreader); void close(); void maskMs1(bool mask_ms1); void setReadAhead(bool read_ahead); private: void writeHeader(MsRunReader *p_msrunreader); void writeQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum); std::size_t getScanNumber(const QualifiedMassSpectrum &spectrum) const; std::size_t getPrecursorScanNumber(const QualifiedMassSpectrum &spectrum) const; std::size_t getScanNumberFromNativeId(const QString &native_id) const; class Translater : public SpectrumCollectionHandlerInterface { public: Translater(MzxmlOutput *p_mzxml_output); virtual ~Translater(); virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override; virtual bool needPeakList() const override; private: MzxmlOutput *mp_output; }; private: UiMonitorInterface &m_monitor; QXmlStreamWriter *mpa_outputStream; bool m_isReadAhead = false; bool m_ms1IsMasked = false; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/private/000755 001750 001750 00000000000 14533473271 023521 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/msrun/private/pwizmsrunreader.cpp000644 001750 001750 00000106406 14526455546 027504 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/pwizmsrunreader.cpp * \date 29/05/2018 * \author Olivier Langella * \brief MSrun file reader base on proteowizard library */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "pwizmsrunreader.h" #include #include "../../utils.h" #include "../../pappsoexception.h" #include "../../exception/exceptionnotfound.h" #include "../../exception/exceptionnotpossible.h" // int pwizMsRunReaderMetaTypeId = // qRegisterMetaType("pappso::PwizMsRunReader"); namespace pappso { PwizMsRunReader::PwizMsRunReader(MsRunIdCstSPtr &msrun_id_csp) : MsRunReader(msrun_id_csp) { // The initialization needs to be done immediately so that we get the pwiz // MsDataPtr corresponding to the right ms_run_id in the parameter. That // pointer will be set to msp_msData. initialize(); } void PwizMsRunReader::initialize() { std::string file_name_std = Utils::toUtf8StandardString(mcsp_msRunId->getFileName()); // Make a backup of the current locale std::string env_backup = setlocale(LC_ALL, ""); // struct lconv *lc = localeconv(); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "env_backup=" << env_backup.c_str() << "lc->decimal_point" //<< lc->decimal_point; // Now actually search the useful MSDataPtr to the member variable. pwiz::msdata::DefaultReaderList defaultReaderList; std::vector msDataPtrVector; try { defaultReaderList.read(file_name_std, msDataPtrVector); } catch(std::exception &error) { qDebug() << QString("Failed to read the data from file %1") .arg(QString::fromStdString(file_name_std)); throw(PappsoException( QString("Error reading file %1 in PwizMsRunReader, for msrun %2:\n%3") .arg(mcsp_msRunId->getFileName()) .arg(mcsp_msRunId.get()->toString()) .arg(error.what()))); } // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "The number of runs is:" << msDataPtrVector.size() //<< "The number of spectra in first run is:" //<< msDataPtrVector.at(0)->run.spectrumListPtr->size(); // Single-run file handling here. // Specific case of the MGF data format: we do not have a run id for that kind // of data. In this case there must be a single run! if(mcsp_msRunId->getRunId().isEmpty()) { if(msDataPtrVector.size() != 1) throw( ExceptionNotPossible("For the kind of file at hand there can only be " "one run in the file.")); // At this point we know the single msDataPtr is the one we are looking // for. msp_msData = msDataPtrVector.front(); } else { // Multi-run file handling here. for(auto &msDataPtr : msDataPtrVector) { if(msDataPtr->run.id == mcsp_msRunId->getRunId().toStdString()) { msp_msData = msDataPtr; // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "Found the right MSDataPtr for run id."; break; } } } if(msp_msData == nullptr) { throw(ExceptionNotPossible( QString("Could not find a MSDataPtr matching the requested run id : %1") .arg(mcsp_msRunId.get()->toString()))); } // check if this MS run can be used with scan numbers // MS:1000490 Agilent instrument model pwiz::cv::CVID native_id_format = pwiz::msdata::id::getDefaultNativeIDFormat(*msp_msData.get()); // msp_msData.get()->getDefaultNativeIDFormat(); if(native_id_format == pwiz::cv::CVID::MS_Thermo_nativeID_format) { m_hasScanNumbers = true; } else { m_hasScanNumbers = false; } if(mcsp_msRunId.get()->getMzFormat() == MzFormat::mzXML) { m_hasScanNumbers = true; } } PwizMsRunReader::~PwizMsRunReader() { } pwiz::msdata::SpectrumPtr PwizMsRunReader::getPwizSpectrumPtr(pwiz::msdata::SpectrumList *p_spectrum_list, std::size_t spectrum_index, bool want_binary_data) const { pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp; try { native_pwiz_spectrum_sp = p_spectrum_list->spectrum(spectrum_index, want_binary_data); } catch(std::runtime_error &error) { qDebug() << "getPwizSpectrumPtr error " << error.what() << " " << typeid(error).name(); throw ExceptionNotFound(QObject::tr("Pwiz spectrum index %1 not found in " "MS file std::runtime_error :\n%2") .arg(spectrum_index) .arg(error.what())); } catch(std::exception &error) { qDebug() << "getPwizSpectrumPtr error " << error.what() << typeid(error).name(); throw ExceptionNotFound( QObject::tr("Pwiz spectrum index %1 not found in MS file :\n%2") .arg(spectrum_index) .arg(error.what())); } if(native_pwiz_spectrum_sp.get() == nullptr) { throw ExceptionNotFound( QObject::tr( "Pwiz spectrum index %1 not found in MS file : null pointer") .arg(spectrum_index)); } return native_pwiz_spectrum_sp; } bool PwizMsRunReader::processRetentionTime( pwiz::msdata::Spectrum *spectrum_p, QualifiedMassSpectrum &qualified_mass_spectrum) const { // We now have to set the retention time at which this mass spectrum // was acquired. This is the scan start time. if(!spectrum_p->scanList.scans[0].hasCVParam( pwiz::msdata::MS_scan_start_time)) { if(mcsp_msRunId.get()->getMzFormat() == MzFormat::MGF) { // MGF could not have scan start time qualified_mass_spectrum.setRtInSeconds(-1); } else { throw(ExceptionNotPossible( "The spectrum has no scan start time value set.")); } } else { pwiz::data::CVParam retention_time_cv_param = spectrum_p->scanList.scans[0].cvParam(pwiz::msdata::MS_scan_start_time); // Try to get the units of the retention time value. std::string unit_name = retention_time_cv_param.unitsName(); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "Unit name for the retention time:" //<< QString::fromStdString(unit_name); if(unit_name == "second") { qualified_mass_spectrum.setRtInSeconds( retention_time_cv_param.valueAs()); } else if(unit_name == "minute") { qualified_mass_spectrum.setRtInSeconds( retention_time_cv_param.valueAs() * 60); } else throw( ExceptionNotPossible("Could not determine the unit for the " "scan start time value.")); } // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "Retention time for spectrum is:" //<< qualified_mass_spectrum.getRtInSeconds(); // Old version not checking unit (by default unit is minutes for RT, // not seconds) // // pappso_double retentionTime = // QString(spectrum_p->scanList.scans[0] //.cvParam(pwiz::msdata::MS_scan_start_time) //.value.c_str()) //.toDouble(); // qualified_mass_spectrum.setRtInSeconds(retentionTime); return true; } bool PwizMsRunReader::processDriftTime( pwiz::msdata::Spectrum *spectrum_p, QualifiedMassSpectrum &qualified_mass_spectrum) const { // Not all the acquisitions have ion mobility data. We need to test // that: if(spectrum_p->scanList.scans[0].hasCVParam( pwiz::msdata::MS_ion_mobility_drift_time)) { // qDebug() << "as strings:" //<< QString::fromStdString( // spectrum_p->scanList.scans[0] //.cvParam(pwiz::msdata::MS_ion_mobility_drift_time) //.valueAs()); pappso_double driftTime = spectrum_p->scanList.scans[0] .cvParam(pwiz::msdata::MS_ion_mobility_drift_time) .valueAs(); // qDebug() << "driftTime:" << driftTime; // Old version requiring use of QString. // pappso_double driftTime = // QString(spectrum_p->scanList.scans[0] //.cvParam(pwiz::msdata::MS_ion_mobility_drift_time) //.value.c_str()) //.toDouble(); // Now make positively sure that the obtained value is correct. // Note that I suffered a lot with Waters Synapt data that // contained apparently correct drift time XML element that in // fact contained either NaN or inf. When such mass spectra were // encountered, the mz,i data were bogus and crashed the data // loading functions. We just want to skip this kind of bogus mass // spectrum by letting the caller know that the drift time was // bogus ("I" is Filippo Rusconi). if(std::isnan(driftTime) || std::isinf(driftTime)) { // qDebug() << "detected as nan or inf."; return false; } else { // The mzML standard stipulates that drift times are in // milliseconds. qualified_mass_spectrum.setDtInMilliSeconds(driftTime); } } // End of // if(spectrum_p->scanList.scans[0].hasCVParam( // pwiz::msdata::MS_ion_mobility_drift_time)) else { // Not a bogus mass spectrum but also not a drift spectrum, set -1 // as the drift time value. qualified_mass_spectrum.setDtInMilliSeconds(-1); } return true; } QualifiedMassSpectrum PwizMsRunReader::qualifiedMassSpectrumFromPwizSpectrumPtr( const MassSpectrumId &massSpectrumId, pwiz::msdata::Spectrum *spectrum_p, bool want_binary_data, bool &ok) const { // qDebug(); std::string env; env = setlocale(LC_ALL, ""); setlocale(LC_ALL, "C"); QualifiedMassSpectrum qualified_mass_spectrum(massSpectrumId); try { // We want to store the ms level for this spectrum int msLevel = (spectrum_p->cvParam(pwiz::msdata::MS_ms_level).valueAs()); qualified_mass_spectrum.setMsLevel(msLevel); if(!spectrum_p->scanList.scans[0].hasCVParam( pwiz::msdata::MS_peak_list_scans)) { qDebug() << spectrum_p->cvParam(pwiz::msdata::MS_peak_list_scans) .valueAs(); qualified_mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::ScanNumber, spectrum_p->cvParam(pwiz::msdata::MS_peak_list_scans) .valueAs()); } // We want to know if this spectrum is a fragmentation spectrum obtained // from a selected precursor ion. std::size_t precursor_list_size = spectrum_p->precursors.size(); // qDebug() << "For spectrum at index:" << // massSpectrumId.getSpectrumIndex() //<< "msLevel:" << msLevel //<< "with number of precursors:" << precursor_list_size; if(precursor_list_size > 0) { // Sanity check if(msLevel < 2) { qDebug() << "Going to throw: msLevel cannot be less than two for " "a spectrum that has items in its Precursor list."; throw(ExceptionNotPossible( "msLevel cannot be less than two for " "a spectrum that has items in its Precursor list.")); } // See what is the first precursor in the list. for(auto &precursor : spectrum_p->precursors) { // Set this variable ready as we need that default value in // certain circumstances. std::size_t precursor_spectrum_index = std::numeric_limits::max(); // The spectrum ID of the precursor might be empty. if(precursor.spectrumID.empty()) { // qDebug() << "The precursor's spectrum ID is empty."; if(mcsp_msRunId.get()->getMzFormat() == MzFormat::MGF) { // qDebug() //<< "Format is MGF, precursor's spectrum ID can be // empty."; } else { // When performing Lumos Fusion fragmentation experiments // in Tune mode and with recording, the first spectrum of // the list is a fragmentation spectrum (ms level 2) that // has no identity for the precursor spectrum because // there is no full scan accquisition. } } // End of // if(precursor.spectrumID.empty()) else { // We could get a native precursor spectrum id, so convert // that native id to a spectrum index. qualified_mass_spectrum.setPrecursorNativeId( QString::fromStdString(precursor.spectrumID)); if(qualified_mass_spectrum.getPrecursorNativeId().isEmpty()) { // qDebug() << "The native id of the precursor spectrum is // empty."; } // Get the spectrum index of the spectrum that contained the // precursor ion. precursor_spectrum_index = msp_msData->run.spectrumListPtr->find(precursor.spectrumID); // Note that the Mascot MGF format has a peculiar handling of // the precursor ion stuff so we cannot throw. if(precursor_spectrum_index == msp_msData->run.spectrumListPtr->size()) { if(mcsp_msRunId.get()->getMzFormat() != MzFormat::MGF) { throw(ExceptionNotPossible( "Failed to find the index of the " "precursor ion's spectrum.")); } } qualified_mass_spectrum.setPrecursorSpectrumIndex( precursor_spectrum_index); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << // "()" //<< "Set the precursor spectrum index to:" //<< qualified_mass_spectrum.getPrecursorSpectrumIndex() //<< "for qualified mass spectrum:" //<< &qualified_mass_spectrum; } if(!precursor.selectedIons.size()) { qDebug() << "Going to throw The spectrum has msLevel > 1 but the " "precursor ions's selected ions list is empty.."; throw( ExceptionNotPossible("The spectrum has msLevel > 1 but the " "precursor ions's selected ions " "list is empty.")); } pwiz::msdata::SelectedIon &ion = *(precursor.selectedIons.begin()); // selected ion m/z pappso_double selected_ion_mz = QString( ion.cvParam(pwiz::cv::MS_selected_ion_m_z).value.c_str()) .toDouble(); // selected ion peak intensity pappso_double selected_ion_peak_intensity = QString(ion.cvParam(pwiz::cv::MS_peak_intensity).value.c_str()) .toDouble(); // charge state unsigned int selected_ion_charge_state = QString(ion.cvParam(pwiz::cv::MS_charge_state).value.c_str()) .toUInt(); // At this point we can craft a new PrecursorIonData instance and // push it back to the vector. PrecursorIonData precursor_ion_data(selected_ion_mz, selected_ion_charge_state, selected_ion_peak_intensity); qualified_mass_spectrum.appendPrecursorIonData( precursor_ion_data); // General sum-up // qDebug() //<< "Appended new PrecursorIonData:" //<< "mz:" //<< qualified_mass_spectrum.getPrecursorIonData().back().mz //<< "charge:" //<< qualified_mass_spectrum.getPrecursorIonData().back().charge //<< "intensity:" //<< qualified_mass_spectrum.getPrecursorIonData() //.back() //.intensity; } // End of // for(auto &precursor : spectrum_p->precursors) } // End of // if(precursor_list_size > 0) else { // Sanity check // Unfortunately, logic here is defeated by some vendors that have // files with MS2 spectra without . Thus we have // spectrum_p->precursors.size() == 0 and msLevel > 1. // if(msLevel != 1) //{ // throw( // ExceptionNotPossible("msLevel cannot be different than 1 if " //"there is not a single precursor ion.")); //} } // Sanity check. if(precursor_list_size != qualified_mass_spectrum.getPrecursorIonData().size()) { qDebug() << "Going to throw The number of precursors in the file is " "different from the number of precursors in memory."; throw pappso::PappsoException( QObject::tr("The number of precursors in the file is different " "from the number of precursors in memory.")); } // if(precursor_list_size == 1) //{ // qDebug() << "Trying to get the mz value of the unique precursor ion:" //<< qualified_mass_spectrum.getPrecursorMz(); //} processRetentionTime(spectrum_p, qualified_mass_spectrum); processDriftTime(spectrum_p, qualified_mass_spectrum); // for(pwiz::data::CVParam cv_param : ion.cvParams) //{ // pwiz::msdata::CVID param_id = cv_param.cvid; // qDebug() << param_id; // qDebug() << cv_param.cvid.c_str(); // qDebug() << cv_param.name().c_str(); // qDebug() << cv_param.value.c_str(); //} if(want_binary_data) { // Fill-in MZIntensityPair vector for convenient access to binary // data std::vector pairs; spectrum_p->getMZIntensityPairs(pairs); MassSpectrum spectrum; double tic = 0; // std::size_t iterCount = 0; // Iterate through the m/z-intensity pairs for(std::vector::const_iterator it = pairs.begin(), end = pairs.end(); it != end; ++it) { //++iterCount; // qDebug() << "it->mz " << it->mz << " it->intensity" << // it->intensity; if(it->intensity) { spectrum.push_back(DataPoint(it->mz, it->intensity)); tic += it->intensity; } } if(mcsp_msRunId.get()->getMzFormat() == MzFormat::MGF) { // Sort peaks by mz spectrum.sortMz(); } // lc = localeconv (); // qDebug() << " env=" << localeconv () << " lc->decimal_point " // << lc->decimal_point; // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "() // "<< spectrum.size(); MassSpectrumSPtr spectrum_sp = spectrum.makeMassSpectrumSPtr(); qualified_mass_spectrum.setMassSpectrumSPtr(spectrum_sp); // double sumY = // qualified_mass_spectrum.getMassSpectrumSPtr()->sumY(); qDebug() // << // __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "iterCount:" << iterCount << "Spectrum size " //<< spectrum.size() << "with tic:" << tic //<< "and sumY:" << sumY; } else qualified_mass_spectrum.setMassSpectrumSPtr(nullptr); } catch(PappsoException &errorp) { qDebug() << "Going to throw"; throw pappso::PappsoException( QObject::tr("Error reading data using the proteowizard library: %1") .arg(errorp.qwhat())); } catch(std::exception &error) { qDebug() << "Going to throw"; throw pappso::PappsoException( QObject::tr("Error reading data using the proteowizard library: %1") .arg(error.what())); } // setlocale(LC_ALL, env.c_str()); ok = true; // qDebug() << "QualifiedMassSpectrum: " << // qualified_mass_spectrum.toString(); return qualified_mass_spectrum; } QualifiedMassSpectrum PwizMsRunReader::qualifiedMassSpectrumFromPwizMSData(std::size_t spectrum_index, bool want_binary_data, bool &ok) const { std::string env; env = setlocale(LC_ALL, ""); // struct lconv *lc = localeconv(); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ //<< "env=" << env.c_str() //<< "lc->decimal_point:" << lc->decimal_point; setlocale(LC_ALL, "C"); MassSpectrumId massSpectrumId(mcsp_msRunId); if(msp_msData == nullptr) { setlocale(LC_ALL, env.c_str()); return (QualifiedMassSpectrum(massSpectrumId)); } // const bool want_binary_data = true; pwiz::msdata::SpectrumListPtr spectrum_list_p = msp_msData->run.spectrumListPtr; if(spectrum_index == spectrum_list_p.get()->size()) { setlocale(LC_ALL, env.c_str()); throw ExceptionNotFound( QObject::tr("The spectrum index cannot be equal to the size of the " "spectrum list.")); } // At this point we know the spectrum index might be sane, so store it in // the mass spec id object. massSpectrumId.setSpectrumIndex(spectrum_index); pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp = getPwizSpectrumPtr(spectrum_list_p.get(), spectrum_index, want_binary_data); setlocale(LC_ALL, env.c_str()); massSpectrumId.setNativeId( QString::fromStdString(native_pwiz_spectrum_sp->id)); return qualifiedMassSpectrumFromPwizSpectrumPtr( massSpectrumId, native_pwiz_spectrum_sp.get(), want_binary_data, ok); } bool PwizMsRunReader::accept(const QString &file_name) const { // We want to know if we can handle the file_name. pwiz::msdata::ReaderList reader_list; std::string reader_type = reader_list.identify(file_name.toStdString()); if(!reader_type.empty()) return true; return false; } pappso::MassSpectrumSPtr PwizMsRunReader::massSpectrumSPtr(std::size_t spectrum_index) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; return qualifiedMassSpectrum(spectrum_index, true).getMassSpectrumSPtr(); } pappso::MassSpectrumCstSPtr PwizMsRunReader::massSpectrumCstSPtr(std::size_t spectrum_index) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; return qualifiedMassSpectrum(spectrum_index, true).getMassSpectrumCstSPtr(); } QualifiedMassSpectrum PwizMsRunReader::qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data) const { QualifiedMassSpectrum spectrum; bool ok = false; spectrum = qualifiedMassSpectrumFromPwizMSData(spectrum_index, want_binary_data, ok); if(mcsp_msRunId->getMzFormat() == pappso::MzFormat::MGF) { if(spectrum.getRtInSeconds() == 0) { // spectrum = qualifiedMassSpectrumFromPwizMSData(scan_num - 1); } } // if(!ok) // qDebug() << "Encountered a mass spectrum for which the status is bad."; return spectrum; } void PwizMsRunReader::readSpectrumCollection( SpectrumCollectionHandlerInterface &handler) { readSpectrumCollectionByMsLevel(handler, 0); } void PwizMsRunReader::readSpectrumCollection2( [[maybe_unused]] const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) { qDebug(); readSpectrumCollectionWithMsrunReadConfig(config, handler); } void PwizMsRunReader::readSpectrumCollectionByMsLevel( SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) { acquireDevice(); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; // We want to iterate in the pwiz-spectrum-list and for each pwiz-spectrum // create a pappso-spectrum (QualifiedMassSpectrum). Once the pappso mass // spectrum has been fully qualified (that is, the member data have been // set), it is transferred to the handler passed as parameter to this // function for the consumer to do what it wants with it. // Does the handler consuming the mass spectra read from file want these // mass spectra to hold the binary data arrays (mz/i vectors)? const bool want_binary_data = handler.needPeakList(); std::string env; env = setlocale(LC_ALL, ""); setlocale(LC_ALL, "C"); // We access the pwiz-mass-spectra via the spectrumListPtr that sits in the // run member of msp_msData. pwiz::msdata::SpectrumListPtr spectrum_list_p = msp_msData->run.spectrumListPtr; // We'll need it to perform the looping in the spectrum list. std::size_t spectrum_list_size = spectrum_list_p.get()->size(); // qDebug() << "The spectrum list has size:" << spectrum_list_size; // Inform the handler of the spectrum list so that it can handle feedback to // the user. handler.spectrumListHasSize(spectrum_list_size); // Iterate in the full list of spectra. for(std::size_t iter = 0; iter < spectrum_list_size; iter++) { // If the user of this reader instance wants to stop reading the // spectra, then break this loop. if(handler.shouldStop()) { qDebug() << "The operation was cancelled. Breaking the loop."; break; } // Get the native pwiz-spectrum from the spectrum list. // Note that this pointer is a shared pointer from pwiz. pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp = getPwizSpectrumPtr(spectrum_list_p.get(), iter, want_binary_data); /* * we want to load metadata of the spectrum even if it does not contain peaks * if(!native_pwiz_spectrum_sp->hasBinaryData()) { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "native pwiz spectrum is empty, continuing."; continue; } */ // Instantiate the mass spectrum id that will hold critical information // like the the native id string and the spectrum index. MassSpectrumId massSpectrumId(mcsp_msRunId, iter /* spectrum index*/); // Get the spectrum native id as a QString to store it in the mass // spectrum id class. This is will allow later to refer to the same // spectrum starting back from the file. QString native_id = QString::fromStdString(native_pwiz_spectrum_sp->id); massSpectrumId.setNativeId(native_id); // Finally, instantiate the qualified mass spectrum with its id. This // function will continue performing pappso-spectrum detailed // qualification. bool ok = false; QualifiedMassSpectrum qualified_mass_spectrum = qualifiedMassSpectrumFromPwizSpectrumPtr( massSpectrumId, native_pwiz_spectrum_sp.get(), want_binary_data, ok); if(!ok) { // qDebug() << "Encountered a mass spectrum for which the returned " //"status is bad."; continue; } // Before handing the mass spectrum out to the handler, see if the // native mass spectrum was empty or not. // if(!native_pwiz_spectrum_sp->defaultArrayLength) // qDebug() << "The mass spectrum has not defaultArrayLength"; qualified_mass_spectrum.setEmptyMassSpectrum( !native_pwiz_spectrum_sp->defaultArrayLength); // The handler will receive the index of the mass spectrum in the // current run via the mass spectrum id member datum. if(ms_level == 0) { handler.setQualifiedMassSpectrum(qualified_mass_spectrum); } else { if(qualified_mass_spectrum.getMsLevel() == ms_level) { handler.setQualifiedMassSpectrum(qualified_mass_spectrum); } } } setlocale(LC_ALL, env.c_str()); // End of // for(std::size_t iter = 0; iter < spectrum_list_size; iter++) // Now let the loading handler know that the loading of the data has ended. // The handler might need this "signal" to perform additional tasks or to // cleanup cruft. // qDebug() << "Loading ended"; handler.loadingEnded(); } void PwizMsRunReader::readSpectrumCollectionWithMsrunReadConfig( const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) { qDebug(); acquireDevice(); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; // We want to iterate in the pwiz-spectrum-list and for each pwiz-spectrum // create a pappso-spectrum (QualifiedMassSpectrum). Once the pappso mass // spectrum has been fully qualified (that is, the member data have been // set), it is transferred to the handler passed as parameter to this // function for the consumer to do what it wants with it. // Does the handler consuming the mass spectra read from file want these // mass spectra to hold the binary data arrays (mz/i vectors)? const bool want_binary_data = config.needPeakList(); std::string env; env = setlocale(LC_ALL, ""); setlocale(LC_ALL, "C"); // We access the pwiz-mass-spectra via the spectrumListPtr that sits in the // run member of msp_msData. pwiz::msdata::SpectrumListPtr spectrum_list_p = msp_msData->run.spectrumListPtr; // We'll need it to perform the looping in the spectrum list. std::size_t spectrum_list_size = spectrum_list_p.get()->size(); // qDebug() << "The spectrum list has size:" << spectrum_list_size; // Inform the handler of the spectrum list so that it can handle feedback to // the user. handler.spectrumListHasSize(spectrum_list_size); // Iterate in the full list of spectra. for(std::size_t iter = 0; iter < spectrum_list_size; iter++) { // If the user of this reader instance wants to stop reading the // spectra, then break this loop. if(handler.shouldStop()) { qDebug() << "The operation was cancelled. Breaking the loop."; break; } // Get the native pwiz-spectrum from the spectrum list. // Note that this pointer is a shared pointer from pwiz. pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp = getPwizSpectrumPtr(spectrum_list_p.get(), iter, want_binary_data); /* * we want to load metadata of the spectrum even if it does not contain peaks * if(!native_pwiz_spectrum_sp->hasBinaryData()) { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "native pwiz spectrum is empty, continuing."; continue; } */ // Instantiate the mass spectrum id that will hold critical information // like the the native id string and the spectrum index. MassSpectrumId massSpectrumId(mcsp_msRunId, iter /* spectrum index*/); // Get the spectrum native id as a QString to store it in the mass // spectrum id class. This is will allow later to refer to the same // spectrum starting back from the file. QString native_id = QString::fromStdString(native_pwiz_spectrum_sp->id); massSpectrumId.setNativeId(native_id); // Finally, instantiate the qualified mass spectrum with its id. This // function will continue performing pappso-spectrum detailed // qualification. bool ok = false; QualifiedMassSpectrum qualified_mass_spectrum = qualifiedMassSpectrumFromPwizSpectrumPtr( massSpectrumId, native_pwiz_spectrum_sp.get(), want_binary_data, ok); if(!ok) { // qDebug() << "Encountered a mass spectrum for which the returned " //"status is bad."; continue; } // Before handing the mass spectrum out to the handler, see if the // native mass spectrum was empty or not. // if(!native_pwiz_spectrum_sp->defaultArrayLength) // qDebug() << "The mass spectrum has not defaultArrayLength"; qualified_mass_spectrum.setEmptyMassSpectrum( !native_pwiz_spectrum_sp->defaultArrayLength); // The handler will receive the index of the mass spectrum in the // current run via the mass spectrum id member datum. qDebug(); if(config.acceptMsLevel(qualified_mass_spectrum.getMsLevel())) { if(config.acceptRetentionTimeInSeconds( qualified_mass_spectrum.getRtInSeconds())) { handler.setQualifiedMassSpectrum(qualified_mass_spectrum); } } } setlocale(LC_ALL, env.c_str()); // End of // for(std::size_t iter = 0; iter < spectrum_list_size; iter++) // Now let the loading handler know that the loading of the data has ended. // The handler might need this "signal" to perform additional tasks or to // cleanup cruft. // qDebug() << "Loading ended"; handler.loadingEnded(); } std::size_t PwizMsRunReader::spectrumListSize() const { return msp_msData->run.spectrumListPtr.get()->size(); } bool PwizMsRunReader::hasScanNumbers() const { return m_hasScanNumbers; } bool PwizMsRunReader::releaseDevice() { msp_msData = nullptr; return true; } bool PwizMsRunReader::acquireDevice() { if(msp_msData == nullptr) { initialize(); } return true; } XicCoordSPtr PwizMsRunReader::newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index, pappso::PrecisionPtr precision) const { QualifiedMassSpectrum mass_spectrum = qualifiedMassSpectrum(spectrum_index, false); return newXicCoordSPtrFromQualifiedMassSpectrum(mass_spectrum, precision); } XicCoordSPtr PwizMsRunReader::newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const { XicCoordSPtr xic_coord = std::make_shared(); xic_coord.get()->rtTarget = mass_spectrum.getRtInSeconds(); xic_coord.get()->mzRange = MzRange(mass_spectrum.getPrecursorMz(), precision); return xic_coord; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/private/pwizmsrunreader.h000644 001750 001750 00000010313 14510011217 027110 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/pwizmsrunreader.h * \date 29/05/2018 * \author Olivier Langella * \brief MSrun file reader base on proteowizard library */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include "../../types.h" #include "../../msfile/msfileaccessor.h" #include "../../msfile/msfilereader.h" namespace pappso { class PwizMsRunReader : public MsRunReader { friend class MsFileAccessor; public: PwizMsRunReader(MsRunIdCstSPtr &msrun_id_csp); virtual ~PwizMsRunReader(); virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override; virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override; virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data = true) const override; virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index, pappso::PrecisionPtr precision) const override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override; virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override; virtual std::size_t spectrumListSize() const override; virtual bool hasScanNumbers() const override; virtual bool releaseDevice() override; virtual bool acquireDevice() override; protected: virtual void readSpectrumCollectionWithMsrunReadConfig( const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler); virtual void initialize() override; virtual bool accept(const QString &file_name) const override; bool processRetentionTime(pwiz::msdata::Spectrum *spectrum_p, QualifiedMassSpectrum &qualified_mass_spectrum) const; bool processDriftTime(pwiz::msdata::Spectrum *spectrum_p, QualifiedMassSpectrum &qualified_mass_spectrum) const; QualifiedMassSpectrum qualifiedMassSpectrumFromPwizMSData( std::size_t spectrum_index, bool want_binary_data, bool &ok) const; QualifiedMassSpectrum qualifiedMassSpectrumFromPwizSpectrumPtr(const MassSpectrumId &massSpectrumId, pwiz::msdata::Spectrum *spectrum_p, bool want_binary_data, bool &ok) const; pwiz::msdata::SpectrumPtr getPwizSpectrumPtr(pwiz::msdata::SpectrumList *p_spectrum_list, std::size_t spectrum_index, bool want_binary_data) const; protected: pwiz::msdata::MSDataPtr msp_msData = nullptr; private: bool m_hasScanNumbers = false; }; } // namespace pappso // Q_DECLARE_METATYPE(pappso::PwizMsRunReader); // extern int pwizMsRunReaderMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsframesmsrunreader.h000644 001750 001750 00000006600 14514537336 030320 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreader.h * \date 05/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../msfile/msfileaccessor.h" #include "../../vendors/tims/timsdata.h" namespace pappso { // This class is aimed at processing the frames in a Bruker timsTOF data set. In // this processing of the data, we skip the ion mobility scans altogether. One // main aim of this processing is to compute the TIC chromatogram from the // binary data file and not using the TIC chromatogram that is stored in the DB // file. class TimsFramesMsRunReader : public MsRunReader { friend class MsFileAccessor; /** * @todo write docs */ public: TimsFramesMsRunReader(MsRunIdCstSPtr &msrun_id_csp); virtual ~TimsFramesMsRunReader(); virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override; virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override; virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data = true) const override; virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index, pappso::PrecisionPtr precision) const override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override; virtual std::size_t spectrumListSize() const override; virtual bool hasScanNumbers() const override; virtual bool releaseDevice() override; virtual bool acquireDevice() override; /** @brief give an access to the underlying raw data pointer */ virtual TimsDataSp getTimsDataSPtr(); virtual Trace getTicChromatogram() override; virtual Trace computeTicChromatogram(); protected: virtual void initialize() override; virtual bool accept(const QString &file_name) const override; private: TimsDataSp msp_timsData = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsmsrunreader.cpp000644 001750 001750 00000012477 14526455546 027473 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreader.h * \date 05/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsmsrunreader.h" #include "../../exception/exceptionnotimplemented.h" #include "../../exception/exceptioninterrupted.h" #include using namespace pappso; TimsMsRunReader::TimsMsRunReader(MsRunIdCstSPtr &msrun_id_csp) : MsRunReader(msrun_id_csp) { initialize(); } TimsMsRunReader::~TimsMsRunReader() { msp_timsData = nullptr; } void TimsMsRunReader::initialize() { msp_timsData = std::make_shared(mcsp_msRunId.get()->getFileName()); if(msp_timsData == nullptr) { throw PappsoException(QObject::tr("ERROR in TimsMsRunReader::initialize " "msp_timsData is null for MsRunId %1") .arg(mcsp_msRunId.get()->toString())); } } bool TimsMsRunReader::accept(const QString &file_name) const { qDebug() << file_name; return true; } pappso::MassSpectrumSPtr TimsMsRunReader::massSpectrumSPtr([[maybe_unused]] std::size_t spectrum_index) { throw ExceptionNotImplemented( QObject::tr("Not yet implemented in TimsMsRunReader %1.\n").arg(__LINE__)); return pappso::MassSpectrumSPtr(); } pappso::MassSpectrumCstSPtr TimsMsRunReader::massSpectrumCstSPtr(std::size_t spectrum_index) { return msp_timsData->getMassSpectrumCstSPtrByRawIndex(spectrum_index); } QualifiedMassSpectrum TimsMsRunReader::qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data) const { QualifiedMassSpectrum mass_spectrum; msp_timsData->getQualifiedMassSpectrumByRawIndex( getMsRunId(), mass_spectrum, spectrum_index, want_binary_data); return mass_spectrum; } void TimsMsRunReader::readSpectrumCollection( SpectrumCollectionHandlerInterface &handler) { readSpectrumCollectionByMsLevel(handler, 0); } void TimsMsRunReader::readSpectrumCollection2( [[maybe_unused]] const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) { return readSpectrumCollection(handler); } void TimsMsRunReader::readSpectrumCollectionByMsLevel( SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) { qDebug(); try { msp_timsData.get()->rawReaderSpectrumCollectionByMsLevel( getMsRunId(), handler, ms_level); } catch(ExceptionInterrupted &) { qDebug() << "Reading of MS data interrupted by the user."; } // Now let the loading handler know that the loading of the data has ended. // The handler might need this "signal" to perform additional tasks or to // cleanup cruft. // qDebug() << "Loading ended"; handler.loadingEnded(); } std::size_t TimsMsRunReader::spectrumListSize() const { return msp_timsData->getTotalNumberOfScans(); } bool TimsMsRunReader::hasScanNumbers() const { return false; } bool TimsMsRunReader::releaseDevice() { msp_timsData = nullptr; return true; } bool TimsMsRunReader::acquireDevice() { if(msp_timsData == nullptr) { initialize(); } return true; } XicCoordSPtr TimsMsRunReader::newXicCoordSPtrFromSpectrumIndex(std::size_t spectrum_index [[maybe_unused]], pappso::PrecisionPtr precision [[maybe_unused]]) const { throw ExceptionNotImplemented(QObject::tr("Not implemented %1 %2 %3") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } XicCoordSPtr TimsMsRunReader::newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum [[maybe_unused]], pappso::PrecisionPtr precision [[maybe_unused]]) const { throw ExceptionNotImplemented(QObject::tr("Not implemented %1 %2 %3") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } TimsDataSp TimsMsRunReader::getTimsDataSPtr() { acquireDevice(); return msp_timsData; } Trace TimsMsRunReader::getTicChromatogram() { // Use the Sqlite database to fetch the total ion current chromatogram (TIC // chromatogram). acquireDevice(); // The time unit here is seconds, not minutes!!! return msp_timsData->getTicChromatogram(); } libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsmsrunreader.h000644 001750 001750 00000005777 14514537336 027140 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreader.h * \date 05/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../msfile/msfileaccessor.h" #include "../../vendors/tims/timsdata.h" namespace pappso { class TimsMsRunReader : public MsRunReader { friend class MsFileAccessor; /** * @todo write docs */ public: TimsMsRunReader(MsRunIdCstSPtr &msrun_id_csp); virtual ~TimsMsRunReader(); virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override; virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override; virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data = true) const override; virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index, pappso::PrecisionPtr precision) const override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override; virtual std::size_t spectrumListSize() const override; virtual bool hasScanNumbers() const override; virtual bool releaseDevice() override; virtual bool acquireDevice() override; /** @brief give an access to the underlying raw data pointer */ virtual TimsDataSp getTimsDataSPtr(); virtual Trace getTicChromatogram() override; protected: virtual void initialize() override; virtual bool accept(const QString &file_name) const override; private: TimsDataSp msp_timsData = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp000644 001750 001750 00000022001 14526455546 030075 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreaderms2.cpp * \date 10/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF specialized for MS2 * purpose */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsmsrunreaderms2.h" #include "../../exception/exceptionnotfound.h" #include "../../msrun/xiccoord/xiccoordtims.h" #include using namespace pappso; TimsMsRunReaderMs2::TimsMsRunReaderMs2(MsRunIdCstSPtr &msrun_id_csp) : MsRunReader(msrun_id_csp) { initialize(); } TimsMsRunReaderMs2::~TimsMsRunReaderMs2() { if(msp_timsData != nullptr) { msp_timsData = nullptr; } } void pappso::TimsMsRunReaderMs2::initialize() { msp_timsData = std::make_shared(mcsp_msRunId.get()->getFileName()); if(msp_timsData == nullptr) { throw PappsoException( QObject::tr("ERROR in TimsMsRunReaderMs2::initialize " "msp_timsData is null for MsRunId %1") .arg(mcsp_msRunId.get()->toString())); } } void TimsMsRunReaderMs2::setMs2BuiltinCentroid(bool centroid) { m_builtinMs2Centroid = centroid; if(msp_timsData != nullptr) { msp_timsData->setMs2BuiltinCentroid(m_builtinMs2Centroid); } else { throw PappsoException( QObject::tr("ERROR in TimsMsRunReaderMs2::setMs2BuiltinCentroid " "msp_timsData is null")); } } void TimsMsRunReaderMs2::setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter) { msp_ms2Filter = filter; if(msp_timsData != nullptr) { msp_timsData->setMs2FilterCstSPtr(msp_ms2Filter); } else { throw PappsoException( QObject::tr("ERROR in TimsMsRunReaderMs2::setMs2FilterCstSPtr " "msp_timsData is null")); } } void TimsMsRunReaderMs2::setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter) { msp_ms1Filter = filter; if(msp_timsData != nullptr) { msp_timsData->setMs1FilterCstSPtr(filter); } else { throw PappsoException( QObject::tr("ERROR in TimsMsRunReaderMs2::setMs1FilterCstSPtr " "msp_timsData is null")); } } bool TimsMsRunReaderMs2::accept(const QString &file_name) const { qDebug() << file_name; return true; } pappso::MassSpectrumSPtr TimsMsRunReaderMs2::massSpectrumSPtr(std::size_t spectrum_index) { QualifiedMassSpectrum mass_spectrum = qualifiedMassSpectrum(spectrum_index, true); return mass_spectrum.getMassSpectrumSPtr(); } pappso::MassSpectrumCstSPtr TimsMsRunReaderMs2::massSpectrumCstSPtr(std::size_t spectrum_index) { QualifiedMassSpectrum mass_spectrum = qualifiedMassSpectrum(spectrum_index, true); return mass_spectrum.getMassSpectrumSPtr(); } QualifiedMassSpectrum TimsMsRunReaderMs2::qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data) const { std::size_t precursor_index = (spectrum_index / 2) + 1; TimsData::SpectrumDescr spectrum_descr; try { spectrum_descr = msp_timsData.get()->getSpectrumDescrWithPrecursorId(precursor_index); } catch(ExceptionNotFound &error) { throw ExceptionNotFound( QObject::tr("spectrum_index %1 NOT FOUND in file %2 : %3") .arg(spectrum_index) .arg(getMsRunId().get()->getFileName()) .arg(error.qwhat())); } if(spectrum_index % 2 == 0) { qDebug() << "MS1 spectrum precursor_index=" << precursor_index; // this is an MS1 spectrum QualifiedMassSpectrum mass_spectrum_ms1; msp_timsData->getQualifiedMs1MassSpectrumByPrecursorId( getMsRunId(), mass_spectrum_ms1, spectrum_descr, want_binary_data); qDebug(); // << mass_spectrum_ms1.toString(); // qDebug() << mass_spectrum_ms1.getMassSpectrumSPtr().get()->toString(); return mass_spectrum_ms1; } else { qDebug() << "MS2 spectrum precursor_index=" << precursor_index; QualifiedMassSpectrum mass_spectrum_ms2; if(spectrum_descr.ms2_index != spectrum_index) { qDebug(); throw PappsoException( QObject::tr("ERROR in %1 %2 %3 spectrum_descr.ms2_index(%4) != " "spectrum_index(%5)") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__) .arg(spectrum_descr.ms2_index) .arg(spectrum_index)); } msp_timsData->getQualifiedMs2MassSpectrumByPrecursorId( getMsRunId(), mass_spectrum_ms2, spectrum_descr, want_binary_data); qDebug(); // << mass_spectrum_ms2.toString(); // qDebug() << mass_spectrum_ms2.getMassSpectrumSPtr().get()->toString(); return mass_spectrum_ms2; } } void TimsMsRunReaderMs2::readSpectrumCollection( SpectrumCollectionHandlerInterface &handler) { readSpectrumCollectionByMsLevel(handler, 0); } void TimsMsRunReaderMs2::readSpectrumCollection2( [[maybe_unused]] const MsRunReadConfig &config, [[maybe_unused]] SpectrumCollectionHandlerInterface &handler) { readSpectrumCollectionByMsLevel(handler, 0); } void TimsMsRunReaderMs2::readSpectrumCollectionByMsLevel( SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) { qDebug() << " ms_level=" << ms_level; // We'll need it to perform the looping in the spectrum list. std::size_t spectrum_list_size = spectrumListSize(); // qDebug() << "The spectrum list has size:" << spectrum_list_size; // Inform the handler of the spectrum list so that it can handle feedback to // the user. handler.spectrumListHasSize(spectrum_list_size); msp_timsData.get()->setMonoThread(isMonoThread()); msp_timsData.get()->ms2ReaderSpectrumCollectionByMsLevel( getMsRunId(), handler, ms_level); // Now let the loading handler know that the loading of the data has ended. // The handler might need this "signal" to perform additional tasks or to // cleanup cruft. // qDebug() << "Loading ended"; handler.loadingEnded(); } std::size_t TimsMsRunReaderMs2::spectrumListSize() const { return (msp_timsData->getTotalNumberOfPrecursors() * 2); } bool TimsMsRunReaderMs2::hasScanNumbers() const { return false; } bool TimsMsRunReaderMs2::releaseDevice() { msp_timsData = nullptr; return true; } bool TimsMsRunReaderMs2::acquireDevice() { if(msp_timsData == nullptr) { initialize(); msp_timsData->setMs2BuiltinCentroid(m_builtinMs2Centroid); msp_timsData->setMs1FilterCstSPtr(msp_ms1Filter); msp_timsData->setMs2FilterCstSPtr(msp_ms2Filter); } return true; } std::vector pappso::TimsMsRunReaderMs2::getPrecursorsIDFromMzRt(int charge, double mz_val, double rt_sec, double k0) { return msp_timsData->getPrecursorsFromMzRtCharge(charge, mz_val, rt_sec, k0); } pappso::TimsDataSp pappso::TimsMsRunReaderMs2::getTimsDataSPtr() { acquireDevice(); return msp_timsData; } XicCoordSPtr TimsMsRunReaderMs2::newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index, pappso::PrecisionPtr precision) const { XicCoordTimsSPtr xic_coord = std::make_shared(); std::size_t precursor_index = (spectrum_index / 2) + 1; auto xic = this->msp_timsData.get()->getXicCoordTimsFromPrecursorId( precursor_index, precision); xic_coord.get()->mzRange = xic.mzRange; xic_coord.get()->rtTarget = xic.rtTarget; xic_coord.get()->scanNumBegin = xic.scanNumBegin; xic_coord.get()->scanNumEnd = xic.scanNumEnd; return xic_coord; } pappso::XicCoordSPtr TimsMsRunReaderMs2::newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const { return newXicCoordSPtrFromSpectrumIndex( mass_spectrum.getMassSpectrumId().getSpectrumIndex(), precision); } std::vector pappso::TimsMsRunReaderMs2::getRetentionTimeLine() { return msp_timsData.get()->getRetentionTimeLine(); } Trace TimsMsRunReaderMs2::getTicChromatogram() { // Use the Sqlite database to fetch the total ion current chromatogram (TIC // chromatogram). acquireDevice(); return msp_timsData->getTicChromatogram(); } libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsmsrunreaderms2.h000644 001750 001750 00000007763 14514537336 027557 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreaderms2.h * \date 10/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF specialized for MS2 * purpose */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../types.h" #include "../../msfile/msfileaccessor.h" #include "../../vendors/tims/timsdata.h" #include "../../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL TimsMsRunReaderMs2 : public MsRunReader { friend class MsFileAccessor; /** * @todo write docs */ public: TimsMsRunReaderMs2(MsRunIdCstSPtr &msrun_id_csp); virtual ~TimsMsRunReaderMs2(); virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override; virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override; virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data = true) const override; virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index, pappso::PrecisionPtr precision) const override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override; virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override; virtual std::size_t spectrumListSize() const override; virtual bool hasScanNumbers() const override; void setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter); void setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter); /** @brief enable or disable simple centroid filter on raw tims data for MS2 */ void setMs2BuiltinCentroid(bool centroid); /** @brief Get all the precursors id which match the values * @return list of precursors Ids */ virtual std::vector getPrecursorsIDFromMzRt(int charge, double mz_val, double rt_sec, double k0); virtual bool releaseDevice() override; virtual bool acquireDevice() override; /** @brief give an access to the underlying raw data pointer */ virtual TimsDataSp getTimsDataSPtr(); /** @brief retention timeline * get retention times along the MSrun in seconds * @return vector of retention times (seconds) */ virtual std::vector getRetentionTimeLine() override; virtual Trace getTicChromatogram() override; protected: virtual void initialize() override; virtual bool accept(const QString &file_name) const override; private: TimsDataSp msp_timsData = nullptr; pappso::FilterInterfaceCstSPtr msp_ms1Filter; pappso::FilterInterfaceCstSPtr msp_ms2Filter; /** @brief enable builtin centroid on raw tims integers by default */ bool m_builtinMs2Centroid = true; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp000644 001750 001750 00000023600 14526455546 031614 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreaderms2.cpp * \date 10/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF specialized for MS2 * purpose */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsmsrunreaderms2selected.h" #include "../../exception/exceptionnotimplemented.h" #include #include using namespace pappso; TimsMsRunReaderMs2Selected::TimsMsRunReaderMs2Selected( MsRunIdCstSPtr &msrun_id_csp) : TimsMsRunReaderMs2(msrun_id_csp) { initialize(); } TimsMsRunReaderMs2Selected::~TimsMsRunReaderMs2Selected() { if(mpa_timsData != nullptr) { delete mpa_timsData; } } void pappso::TimsMsRunReaderMs2Selected::initialize() { mpa_timsData = new TimsData(mcsp_msRunId.get()->getFileName()); } void TimsMsRunReaderMs2Selected::setMs2FilterCstSPtr( pappso::FilterInterfaceCstSPtr filter) { if(mpa_timsData != nullptr) { mpa_timsData->setMs2FilterCstSPtr(filter); } else { throw PappsoException( QObject::tr("ERROR in TimsMsRunReaderMs2Selected::setMs2FilterCstSPtr " "mpa_timsData is null")); } } void TimsMsRunReaderMs2Selected::setMs1FilterCstSPtr( pappso::FilterInterfaceCstSPtr filter) { if(mpa_timsData != nullptr) { mpa_timsData->setMs1FilterCstSPtr(filter); } else { throw PappsoException( QObject::tr("ERROR in TimsMsRunReaderMs2Selected::setMs1FilterCstSPtr " "mpa_timsData is null")); } } bool TimsMsRunReaderMs2Selected::accept(const QString &file_name) const { qDebug() << file_name; return true; } pappso::MassSpectrumSPtr TimsMsRunReaderMs2Selected::massSpectrumSPtr(std::size_t spectrum_index) { QualifiedMassSpectrum mass_spectrum = qualifiedMassSpectrum(spectrum_index, true); return mass_spectrum.getMassSpectrumSPtr(); } pappso::MassSpectrumCstSPtr TimsMsRunReaderMs2Selected::massSpectrumCstSPtr(std::size_t spectrum_index) { QualifiedMassSpectrum mass_spectrum = qualifiedMassSpectrum(spectrum_index, true); return mass_spectrum.getMassSpectrumSPtr(); } QualifiedMassSpectrum TimsMsRunReaderMs2Selected::qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data) const { std::size_t precursor_index = (spectrum_index / 2) + 1; TimsData::SpectrumDescr spectrum_descr = mpa_timsData->getSpectrumDescrWithPrecursorId(precursor_index); if(spectrum_index % 2 == 0) { qDebug(); // this is an MS1 spectrum QualifiedMassSpectrum mass_spectrum_ms1; mpa_timsData->getQualifiedMs1MassSpectrumByPrecursorId( getMsRunId(), mass_spectrum_ms1, spectrum_descr, want_binary_data); qDebug(); // << mass_spectrum_ms1.toString(); // qDebug() << mass_spectrum_ms1.getMassSpectrumSPtr().get()->toString(); return mass_spectrum_ms1; } else { qDebug(); QualifiedMassSpectrum mass_spectrum_ms2; if(spectrum_descr.ms2_index != spectrum_index) { qDebug(); throw PappsoException( QObject::tr( "ERROR in %1 %2 %3 spectrum_descr.ms2_index != spectrum_index") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } mpa_timsData->getQualifiedMs2MassSpectrumByPrecursorId( getMsRunId(), mass_spectrum_ms2, spectrum_descr, want_binary_data); qDebug(); // << mass_spectrum_ms2.toString(); // qDebug() << mass_spectrum_ms2.getMassSpectrumSPtr().get()->toString(); return mass_spectrum_ms2; } } void TimsMsRunReaderMs2Selected::readSpectrumCollection( SpectrumCollectionHandlerInterface &handler) { const bool want_binary_data = handler.needPeakList(); // const bool want_binary_data = false; // We'll need it to perform the looping in the spectrum list. std::size_t spectrum_list_size = spectrumListSize(); // qDebug() << "The spectrum list has size:" << spectrum_list_size; // Inform the handler of the spectrum list so that it can handle feedback to // the user. handler.spectrumListHasSize(spectrum_list_size); std::vector selected_precursor{63905, 73549, 105675, 130439, 177297, 177369, 177483, 190453, 196967, 246691, 271215, 289423, 310669}; // QFile temp_output("/data/temp.txt"); // temp_output.open(QIODevice::WriteOnly | QIODevice::Text); // QTextStream out(&temp_output); // Iterate in the full list of spectra. bool readAhead = handler.isReadAhead(); if(readAhead) { std::size_t process_list_size = 300; struct tmp_item { QualifiedMassSpectrum qualified_mass_spectrum; std::size_t iter; bool want_binary_data; }; for(std::size_t i = 0; i < spectrum_list_size; i += process_list_size) { // QTextStream out(&temp_output); qDebug(); // If the user of this reader instance wants to stop reading the // spectra, then break this loop. if(handler.shouldStop()) { qDebug() << "The operation was cancelled. Breaking the loop."; break; } std::vector item_list; for(std::size_t iter = 0; (iter < process_list_size) && ((iter + i) < spectrum_list_size); iter++) { if(std::find(selected_precursor.begin(), selected_precursor.end(), iter + i) != selected_precursor.end()) { bool get_data = want_binary_data; if((iter + i) % 2 == 0) { // MS1 get_data = handler.needMsLevelPeakList(1); } else { get_data = handler.needMsLevelPeakList(2); } item_list.push_back( {QualifiedMassSpectrum(), iter + i, get_data}); } } qDebug() << item_list.size(); // Use QtConcurrentBlocking::mapped to apply the scale function to all // the images in the list. QtConcurrent::blockingMap( item_list.begin(), item_list.end(), [this](tmp_item &one_item) { qDebug() << one_item.iter; one_item.qualified_mass_spectrum = qualifiedMassSpectrum(one_item.iter, one_item.want_binary_data); // qDebug() << one_item.qualified_mass_spectrum.size() << " " << // one_item.qualified_mass_spectrum.getMassSpectrumSPtr().get()->toString(); }); qDebug() << item_list.size(); for(auto &item : item_list) { // qDebug() << // item.qualified_mass_spectrum.getMassSpectrumSPtr() // .get() // ->toString(); handler.setQualifiedMassSpectrum(item.qualified_mass_spectrum); qDebug(); } } } else { for(std::size_t iter = 0; iter < spectrum_list_size; iter++) { qDebug(); // If the user of this reader instance wants to stop reading the // spectra, then break this loop. if(handler.shouldStop()) { qDebug() << "The operation was cancelled. Breaking the loop."; break; } bool get_data = want_binary_data; if(iter % 2 == 0) { // MS1 if(!handler.needMsLevelPeakList(1)) { get_data = false; } } QualifiedMassSpectrum qualified_mass_spectrum = qualifiedMassSpectrum(iter, get_data); handler.setQualifiedMassSpectrum(qualified_mass_spectrum); qDebug(); } } // End of // for(std::size_t iter = 0; iter < spectrum_list_size; iter++) // Now let the loading handler know that the loading of the data has // ended. The handler might need this "signal" to perform additional tasks // or to cleanup cruft. // qDebug() << "Loading ended"; // temp_output.close(); handler.loadingEnded(); } void TimsMsRunReaderMs2Selected::readSpectrumCollection2( [[maybe_unused]] const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) { return readSpectrumCollection(handler); } std::size_t TimsMsRunReaderMs2Selected::spectrumListSize() const { return (mpa_timsData->getTotalNumberOfPrecursors() * 2); } bool TimsMsRunReaderMs2Selected::hasScanNumbers() const { return false; } libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h000644 001750 001750 00000005126 14514537336 031257 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreaderms2.h * \date 10/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF specialized for MS2 * purpose */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "timsmsrunreaderms2.h" #include "../../types.h" #include "../../msfile/msfileaccessor.h" #include "../../msfile/msfilereader.h" #include "../../vendors/tims/timsdata.h" namespace pappso { class PMSPP_LIB_DECL TimsMsRunReaderMs2Selected : public TimsMsRunReaderMs2 { friend class MsFileAccessor; /** * @todo write docs */ public: TimsMsRunReaderMs2Selected(MsRunIdCstSPtr &msrun_id_csp); virtual ~TimsMsRunReaderMs2Selected(); virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override; virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override; virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data = true) const override; virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override; virtual std::size_t spectrumListSize() const override; virtual bool hasScanNumbers() const override; void setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter); void setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter); protected: virtual void initialize() override; virtual bool accept(const QString &file_name) const override; private: TimsData *mpa_timsData = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/private/timsframesmsrunreader.cpp000644 001750 001750 00000037235 14531704770 030660 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/private/timsmsrunreader.h * \date 05/09/2019 * \author Olivier Langella * \brief MSrun file reader for native Bruker TimsTOF raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsframesmsrunreader.h" #include "../../exception/exceptionnotimplemented.h" #include using namespace pappso; TimsFramesMsRunReader::TimsFramesMsRunReader(MsRunIdCstSPtr &msrun_id_csp) : MsRunReader(msrun_id_csp) { qDebug() << "Now initializing the TimsFramesMsRunReader."; initialize(); } TimsFramesMsRunReader::~TimsFramesMsRunReader() { msp_timsData = nullptr; } void TimsFramesMsRunReader::initialize() { msp_timsData = std::make_shared(mcsp_msRunId.get()->getFileName()); if(msp_timsData == nullptr) { throw PappsoException( QObject::tr("ERROR in TimsFramesMsRunReader::initialize " "msp_timsData is null for MsRunId %1") .arg(mcsp_msRunId.get()->toString())); } } bool TimsFramesMsRunReader::accept(const QString &file_name) const { qDebug() << file_name; return true; } pappso::MassSpectrumSPtr TimsFramesMsRunReader::massSpectrumSPtr( [[maybe_unused]] std::size_t spectrum_index) { throw ExceptionNotImplemented( QObject::tr("Not yet implemented in TimsFramesMsRunReader %1.\n") .arg(__LINE__)); return pappso::MassSpectrumSPtr(); } pappso::MassSpectrumCstSPtr TimsFramesMsRunReader::massSpectrumCstSPtr(std::size_t spectrum_index) { return msp_timsData->getMassSpectrumCstSPtrByRawIndex(spectrum_index); } QualifiedMassSpectrum TimsFramesMsRunReader::qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data) const { QualifiedMassSpectrum mass_spectrum; msp_timsData->getQualifiedMassSpectrumByRawIndex( getMsRunId(), mass_spectrum, spectrum_index, want_binary_data); return mass_spectrum; } void TimsFramesMsRunReader::readSpectrumCollection( SpectrumCollectionHandlerInterface &handler) { qDebug() << "Reading the spectrum collection with no specific configuration."; MsRunReadConfig config; readSpectrumCollection2(config, handler); } void TimsFramesMsRunReader::readSpectrumCollection2( const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) { qDebug().noquote() << "20231129 Reading the spectrum collection with this " "specific configuration:" << config.toString(); // We want to restrict the data reading process to the configuration provided // as parameter. // The frame record subset will include all frames fulfiling the config // requirements (retention time and ms levels) std::vector subset_of_tims_frame_ids; // The very first sorting of frames is perfomed on the basis of the // retention time range that the user might have defined. Otherwise, all the // frames are deemed suitable for next processing steps. // Then, the MS level is checked against the config provided by the user. for(auto const &frame_record : msp_timsData->getTimsFrameRecordList()) { if(frame_record.frame_id == 0) continue; if(config.acceptRetentionTimeInSeconds(frame_record.frame_time)) { std::size_t ms_level = 2; if(frame_record.msms_type == 0) ms_level = 1; if(config.acceptMsLevel(ms_level)) { subset_of_tims_frame_ids.push_back(frame_record.frame_id); } } } // At this point, we have a subset of frame records. std::size_t frames_count = subset_of_tims_frame_ids.size(); qDebug() << "The number of retained RT range-matching frames:" << frames_count; // Inform the handler of the spectrum list so that it can handle feedback to // the user. handler.spectrumListHasSize(frames_count); // Check for ion mobility range : bool asked_ion_mobility_range = false; quint32 mobility_scan_num_begin = 0; quint32 mobility_scan_num_end = 0; if(!config .getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mobility_index_begin) .isNull()) { asked_ion_mobility_range = true; mobility_scan_num_begin = config .getParameterValue(MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_index_begin) .toUInt(); mobility_scan_num_end = config .getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mobility_index_end) .toUInt(); } // Check for m/z resolution downgrading std::size_t mz_index_merge_window = 0; if(!config .getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_index_merge_window) .isNull()) { mz_index_merge_window = config .getParameterValue(MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window) .toUInt(); } // Check for m/z range selection bool asked_mz_range = false; double mz_range_begin = -1; double mz_range_end = -1; if(!config .getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_begin) .isNull()) { asked_mz_range = true; mz_range_begin = config .getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_begin) .toDouble(); mz_range_end = config .getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_end) .toDouble(); qDebug() << "The m/z range asked is: " << mz_range_begin << "--" << mz_range_end; } // Now that we have gathered all the configuration bits from the user, // iterate in the vector of frames records and for each frame ask that // all its scans be combined into a single mass spectrum, by taking into // account the configuration bits provided by the user. const std::vector &frame_id_descr_list = msp_timsData->getFrameIdDescrList(); // The scan index is the index of the scan in the *whole* mass data file, it // is a sequential number of scans over all the frames. std::size_t scan_index = 0; // iterate in each spectrum for(std::size_t tims_frame_id : subset_of_tims_frame_ids) { const FrameIdDescr ¤t_frame_record = frame_id_descr_list[tims_frame_id]; scan_index = current_frame_record.m_cumulSize; TimsFrameCstSPtr tims_frame_csp = msp_timsData->getTimsFrameCstSPtrCached(tims_frame_id); // If the user wants to select specific 1/Ko values, we need to // compute the ion mobility scan value starting from that 1/Ko value in // each frame. if(!config .getParameterValue( MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_one_over_k0_begin) .isNull()) { asked_ion_mobility_range = true; mobility_scan_num_begin = tims_frame_csp.get()->getScanNumFromOneOverK0( config .getParameterValue( MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_one_over_k0_begin) .toDouble()); mobility_scan_num_end = tims_frame_csp.get()->getScanNumFromOneOverK0( config .getParameterValue( MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_one_over_k0_end) .toDouble()); } // Get to know the size of the frame, that is, // the number of mobility scans in it. quint32 mobility_scans_count = tims_frame_csp->getTotalNumberOfScans(); // Provide these two variables for the function below to fill in the // values. quint32 min_mz_index_out = 0; quint32 max_mz_index_out = 0; Trace spectrum; if(config.needPeakList()) { if(asked_ion_mobility_range) { if(mobility_scan_num_end > (mobility_scans_count - 1)) { mobility_scan_num_end = mobility_scans_count - 1; } } else { mobility_scan_num_begin = 0; mobility_scan_num_end = mobility_scans_count - 1; } if(asked_mz_range) { spectrum = tims_frame_csp->cumulateScansToTraceMzDownResolution2( mz_index_merge_window, mz_range_begin, mz_range_end, mobility_scan_num_begin, mobility_scan_num_end, min_mz_index_out, max_mz_index_out); } else { spectrum = tims_frame_csp->cumulateScansToTraceMzDownResolution( mz_index_merge_window, mobility_scan_num_begin, mobility_scan_num_end, min_mz_index_out, max_mz_index_out); } } // qDebug() << "Got min_mz_index_out:" << min_mz_index_out; // qDebug() << "Got max_mz_index_out:" << max_mz_index_out; // Now, with or without the peak list, we have to craft a qualified mass // spectrum that will hold all the data about the data in it. QualifiedMassSpectrum mass_spectrum; MassSpectrumId spectrum_id; spectrum_id.setSpectrumIndex(tims_frame_id); spectrum_id.setMsRunId(getMsRunId()); // Can be modified to add bits that might help our case spectrum_id.setNativeId( QString("frame id=%1 scan index=%2 im_begin=%3 im_end=%4") .arg(tims_frame_id) .arg(scan_index) .arg(mobility_scan_num_begin) .arg(mobility_scan_num_end)); mass_spectrum.setMassSpectrumId(spectrum_id); // We want to document the retention time! mass_spectrum.setRtInSeconds(tims_frame_csp.get()->getTime()); // We do want to document the ms level of the spectrum and possibly // the precursor's m/z and charge. unsigned int frame_ms_level = tims_frame_csp.get()->getMsLevel(); mass_spectrum.setMsLevel(frame_ms_level); // We cannot set this value because the inverse mobility (1/Ko) measured // by Bruker does not correspond formally to a drift time. mass_spectrum.setDtInMilliSeconds(-1); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::TimsFrameScansCount, (qlonglong)tims_frame_csp->getTotalNumberOfScans()); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::TimsFrameInvKoBegin, tims_frame_csp->getOneOverK0Transformation(0)); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::TimsFrameInvKoEnd, tims_frame_csp->getOneOverK0Transformation( tims_frame_csp->getTotalNumberOfScans() - 1)); // qDebug() << "Setting mass spectrum parameter value mz index begin to:" // << min_mz_index_out; mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::TimsFrameMzIndexBegin, min_mz_index_out); // qDebug() << "Setting mass spectrum parameter value mz index end to:" // << max_mz_index_out; mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::TimsFrameMzIndexEnd, max_mz_index_out); if(config.needPeakList()) { mass_spectrum.setEmptyMassSpectrum(false); mass_spectrum.setMassSpectrumSPtr( std::make_shared(spectrum)); } else { mass_spectrum.setEmptyMassSpectrum(true); } handler.setQualifiedMassSpectrum(mass_spectrum); } } void TimsFramesMsRunReader::readSpectrumCollectionByMsLevel( [[maybe_unused]] SpectrumCollectionHandlerInterface &handler, [[maybe_unused]] unsigned int ms_level) { qDebug(); } std::size_t TimsFramesMsRunReader::spectrumListSize() const { return msp_timsData->getTotalNumberOfScans(); } bool TimsFramesMsRunReader::hasScanNumbers() const { return false; } bool TimsFramesMsRunReader::releaseDevice() { msp_timsData = nullptr; return true; } bool TimsFramesMsRunReader::acquireDevice() { if(msp_timsData == nullptr) { initialize(); } return true; } XicCoordSPtr TimsFramesMsRunReader::newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index [[maybe_unused]], pappso::PrecisionPtr precision [[maybe_unused]]) const { throw ExceptionNotImplemented(QObject::tr("Not implemented %1 %2 %3") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } XicCoordSPtr TimsFramesMsRunReader::newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum [[maybe_unused]], pappso::PrecisionPtr precision [[maybe_unused]]) const { throw ExceptionNotImplemented(QObject::tr("Not implemented %1 %2 %3") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } TimsDataSp TimsFramesMsRunReader::getTimsDataSPtr() { acquireDevice(); return msp_timsData; } Trace TimsFramesMsRunReader::getTicChromatogram() { // Use the Sqlite database to fetch the total ion current chromatogram (TIC // chromatogram). acquireDevice(); return msp_timsData->getTicChromatogram(); } Trace TimsFramesMsRunReader::computeTicChromatogram() { // We want to compute the TIC chromatogram, not load the chromatogram that // is located in the SQL database. // // For this, we need to iterated into the frames and ask for MS1 spectra // only. msp_timsData has that information: // // std::vector m_frameIdDescrList; // // and // struct FrameIdDescr // { // std::size_t m_frameId; // frame id // std::size_t m_size; // frame size (number of TOF scans in frame) // std::size_t m_cumulSize; // cumulative size // }; Trace tic_chromatogram; const std::vector frame_descr_list = msp_timsData->getFrameIdDescrList(); for(FrameIdDescr frame_id_descr : frame_descr_list) { TimsFrameCstSPtr tims_frame_csp = msp_timsData->getTimsFrameCstSPtrCached(frame_id_descr.m_frameId); std::size_t scan_begin = 0; std::size_t scan_end = tims_frame_csp->getTotalNumberOfScans() - 1; // By convention, a TIC chromatogram is only performed using MS1 // spectra. if(tims_frame_csp->getMsLevel() == 1) { // Retention times are in seconds in the Bruker world. double rt = tims_frame_csp->getTime(); tic_chromatogram.append(DataPoint( rt, tims_frame_csp->cumulateScansIntensities(scan_begin, scan_end))); } else continue; } return tic_chromatogram; } libpappsomspp-0.9.20/src/pappsomspp/msrun/xiccoord/000755 001750 001750 00000000000 14533473271 023661 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/msrun/xiccoord/ionmobilitygrid.cpp000644 001750 001750 00000013054 14526455546 027603 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/xiccoord/ionmobilitygrid.cpp * \date 26/01/2023 * \author Olivier Langella * \brief store observed ion mobility coordinates differences between MS runs */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "ionmobilitygrid.h" #include #include "xiccoordtims.h" using namespace pappso; IonMobilityGrid::IonMobilityGrid() { } IonMobilityGrid::~IonMobilityGrid() { } void pappso::IonMobilityGrid::storeObservedIdentityBetween( const pappso::MsRunId &msrun_ida, const pappso::XicCoord *xic_coorda, const pappso::MsRunId &msrun_idb, const pappso::XicCoord *xic_coordb) { if(msrun_ida == msrun_idb) return; QString msrun_key( QString("%1-%2").arg(msrun_ida.getXmlId()).arg(msrun_idb.getXmlId())); if(msrun_ida.getXmlId() > msrun_idb.getXmlId()) { msrun_key = QString("%1-%2").arg(msrun_idb.getXmlId()).arg(msrun_ida.getXmlId()); std::swap(xic_coorda, xic_coordb); } auto it_start = m_mapDiferrencesStart.insert({msrun_key, std::vector()}); it_start.first->second.push_back( xic_coordb->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toLongLong() - xic_coorda->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toLongLong()); auto it_stop = m_mapDiferrencesStop.insert({msrun_key, std::vector()}); it_stop.first->second.push_back( xic_coordb->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStop) .toLongLong() - xic_coorda->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStop) .toLongLong()); } void pappso::IonMobilityGrid::computeCorrections() { for(auto pair_key_start_vector : m_mapDiferrencesStart) { if(pair_key_start_vector.second.size() > 5) { // median const auto middleItr = pair_key_start_vector.second.begin() + (pair_key_start_vector.second.size() / 2); std::nth_element(pair_key_start_vector.second.begin(), middleItr, pair_key_start_vector.second.end()); m_mapCorrectionsStart[pair_key_start_vector.first] = *middleItr; } else { m_mapCorrectionsStart[pair_key_start_vector.first] = 0; } } m_mapDiferrencesStart.clear(); for(auto pair_key_stop_vector : m_mapDiferrencesStop) { if(pair_key_stop_vector.second.size() > 5) { // median const auto middleItr = pair_key_stop_vector.second.begin() + (pair_key_stop_vector.second.size() / 2); std::nth_element(pair_key_stop_vector.second.begin(), middleItr, pair_key_stop_vector.second.end()); m_mapCorrectionsStop[pair_key_stop_vector.first] = *middleItr; } else { m_mapCorrectionsStop[pair_key_stop_vector.first] = 0; } } m_mapDiferrencesStop.clear(); } pappso::XicCoordSPtr pappso::IonMobilityGrid::translateXicCoordFromTo( const pappso::XicCoord &source_xic_coord, const pappso::MsRunId &source_msrunid, const pappso::MsRunId &target_msrunid) const { if(m_mapCorrectionsStop.size() == 0) { return source_xic_coord.initializeAndClone(); } bool opposed = false; QString msrun_key(QString("%1-%2") .arg(source_msrunid.getXmlId()) .arg(target_msrunid.getXmlId())); if(source_msrunid.getXmlId() > target_msrunid.getXmlId()) { msrun_key = QString("%1-%2") .arg(target_msrunid.getXmlId()) .arg(source_msrunid.getXmlId()); opposed = true; } auto itstart = m_mapCorrectionsStart.find(msrun_key); long start_dev = 0; if(itstart != m_mapCorrectionsStart.end()) { start_dev = itstart->second; if(opposed) { start_dev *= -1; } } auto itstop = m_mapCorrectionsStop.find(msrun_key); long stop_dev = 0; if(itstop != m_mapCorrectionsStop.end()) { stop_dev = itstop->second; if(opposed) { stop_dev *= -1; } } pappso::XicCoordSPtr result_xic_coord_sp = source_xic_coord.initializeAndClone(); XicCoordTims *tims_coord = static_cast(result_xic_coord_sp.get()); tims_coord->scanNumBeginRangeCorrection(start_dev, stop_dev); return result_xic_coord_sp; } const std::map> & pappso::IonMobilityGrid::getMapDiferrencesStart() const { return m_mapDiferrencesStart; } const std::map & pappso::IonMobilityGrid::getMapCorrectionsStart() const { return m_mapCorrectionsStart; } libpappsomspp-0.9.20/src/pappsomspp/msrun/xiccoord/ionmobilitygrid.h000644 001750 001750 00000005060 14470717234 027237 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/xiccoord/ionmobilitygrid.h * \date 26/01/2023 * \author Olivier Langella * \brief store observed ion mobility coordinates differences between MS runs */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../msrunid.h" #include "xiccoord.h" #include "../../exportinmportconfig.h" namespace pappso { /** * @todo helper to align ion mobility ranges between MS runs */ class PMSPP_LIB_DECL IonMobilityGrid { public: /** * Default constructor */ IonMobilityGrid(); /** * Destructor */ virtual ~IonMobilityGrid(); void storeObservedIdentityBetween(const MsRunId &msrun_ida, const XicCoord *xic_coorda, const MsRunId &msrun_idb, const XicCoord *xic_coordb); void computeCorrections(); pappso::XicCoordSPtr translateXicCoordFromTo(const pappso::XicCoord &source_xic_coord, const MsRunId &source_msrunid, const MsRunId &target_msrunid) const; const std::map> &getMapDiferrencesStart() const; const std::map &getMapCorrectionsStart() const; private: std::map> m_mapDiferrencesStart; std::map> m_mapDiferrencesStop; /** @brief scan num correction on start position stored for each msrun pair */ std::map m_mapCorrectionsStart; /** @brief scan num correction on start position stored for each msrun pair */ std::map m_mapCorrectionsStop; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/xiccoord/xiccoord.cpp000644 001750 001750 00000005612 14526455546 026212 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/xiccoord/xiccoord.cpp * \date 22/04/2021 * \author Olivier Langella * \brief XIC coordinate in MSrun */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "xiccoord.h" #include using namespace pappso; pappso::XicCoord::XicCoord() : mzRange(pappso_double(1), PrecisionFactory::getPpmInstance(10.0)), rtTarget(0) { } XicCoord::XicCoord(const XicCoord &other) : mzRange(other.mzRange), rtTarget(other.rtTarget) { xicSptr = other.xicSptr; } XicCoord::~XicCoord() { } pappso::XicCoordSPtr pappso::XicCoord::initializeAndClone() const { XicCoordSPtr xic_coord_sp = std::make_shared(*this); xic_coord_sp.get()->xicSptr = std::make_shared(); return xic_coord_sp; } pappso::XicCoordSPtr pappso::XicCoord::addition(XicCoordSPtr &to_add) const { XicCoordSPtr xic_coord_sp = std::make_shared(*this); // xic_coord_sp.get()->xicSptr = nullptr; xic_coord_sp.get()->rtTarget += to_add.get()->rtTarget; xic_coord_sp.get()->mzRange += to_add.get()->mzRange; return xic_coord_sp; } XicCoordSPtr XicCoord::multiplyBy(double number) const { XicCoordSPtr xic_coord_sp = std::make_shared(*this); // xic_coord_sp.get()->xicSptr = nullptr; xic_coord_sp.get()->rtTarget *= number; xic_coord_sp.get()->mzRange *= number; return xic_coord_sp; } pappso::XicCoordSPtr pappso::XicCoord::divideBy(double number) const { XicCoordSPtr xic_coord_sp = std::make_shared(*this); // xic_coord_sp.get()->xicSptr = nullptr; xic_coord_sp.get()->rtTarget /= number; xic_coord_sp.get()->mzRange *= (double)((double)1 / number); return xic_coord_sp; } void pappso::XicCoord::reset() { xicSptr = nullptr; rtTarget = 0; mzRange = MzRange(0.0, 0.0); } QString pappso::XicCoord::toString() const { return QString("mz=%1 rt=%2").arg(mzRange.toString()).arg(rtTarget); } const QVariant pappso::XicCoord::getParam(XicCoordParam param [[maybe_unused]]) const { return QVariant(); } libpappsomspp-0.9.20/src/pappsomspp/msrun/xiccoord/xiccoord.h000644 001750 001750 00000006510 14514537336 025650 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/xiccoord/xiccoord.h * \date 22/04/2021 * \author Olivier Langella * \brief XIC coordinate in MSrun */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../exportinmportconfig.h" #include "../../mzrange.h" #include "../../xic/xic.h" #include namespace pappso { struct XicCoord; typedef std::shared_ptr XicCoordSPtr; /** \def XicCoordParam xic coordinate parameter * */ enum class XicCoordParam : std::int8_t { TimsTofIonMobilityScanNumberStart, ///< TimsTOF specific ion mobility start ///< range TimsTofIonMobilityScanNumberStop, ///< TimsTOF specific ion mobility stop ///< range }; /** @brief coordinates of the XIC to extract and the resulting XIC after * extraction * * to extract a XIC, we need basically the mass to extract it * this structure is meant to extact a XIC quickly and not to maintain * information about it : no peptide, no scan number, no retention time... * */ struct PMSPP_LIB_DECL XicCoord { /** * Default constructor */ XicCoord(); /** * Copy constructor * * @param other TODO */ XicCoord(const XicCoord &other); /** * Destructor */ virtual ~XicCoord(); /** @brief intialize the XIC and make a deep copy of object */ virtual XicCoordSPtr initializeAndClone() const; /** @brief compute a new XIC coord as the sum of the given one */ virtual XicCoordSPtr addition(XicCoordSPtr &to_add) const; /** @brief compute a new xic coord as a product by */ virtual XicCoordSPtr multiplyBy(double number) const; /** @brief compute a new xic coord as a division by */ virtual XicCoordSPtr divideBy(double number) const; /** @brief reset to zero */ virtual void reset(); /** @brief get a description of the XIC coordinate in a string */ virtual QString toString() const; /** @brief get a specific XIC coordinate parameter */ virtual const QVariant getParam(XicCoordParam param [[maybe_unused]]) const; /** @brief the mass to extract * */ MzRange mzRange; /** @brief the targeted retention time to extract around * intended in seconds, and related to one msrun. This is not a reference, * just to save memory and cpu usage when extracting xic */ double rtTarget = 0; /** @brief extracted xic */ XicSPtr xicSptr = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp000644 001750 001750 00000010654 14526455546 027111 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/xiccoord/xiccoordtims.cpp * \date 22/04/2021 * \author Olivier Langella * \brief XIC coordinate in a Tims MSrun */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include #include #include "xiccoordtims.h" #include "../../exception/exceptionnotpossible.h" namespace pappso { XicCoordTims::XicCoordTims(const XicCoordTims &other) : XicCoord(other) { scanNumBegin = other.scanNumBegin; scanNumEnd = other.scanNumEnd; } XicCoordTims::~XicCoordTims() { } XicCoordSPtr XicCoordTims::initializeAndClone() const { XicCoordTimsSPtr xic_coord_sp = std::make_shared(*this); xic_coord_sp.get()->xicSptr = std::make_shared(); return xic_coord_sp; } XicCoordSPtr XicCoordTims::addition(XicCoordSPtr &to_add) const { XicCoordTimsSPtr xic_coord_sp = std::make_shared(*this); XicCoordTims *toadd = dynamic_cast(to_add.get()); if(toadd == nullptr) { throw ExceptionNotPossible( QObject::tr("XicCoord to add is of a different type")); } // xic_coord_sp.get()->xicSptr = xic_coord_sp.get()->xicSptr; xic_coord_sp.get()->mzRange += to_add.get()->mzRange; xic_coord_sp.get()->rtTarget += to_add.get()->rtTarget; xic_coord_sp.get()->scanNumBegin += toadd->scanNumBegin; xic_coord_sp.get()->scanNumEnd += toadd->scanNumEnd; qDebug() << "xic_coord_sp.get()->scanNumBegin=" << xic_coord_sp.get()->scanNumBegin; qDebug() << "xic_coord_sp.get()->scanNumEnd=" << xic_coord_sp.get()->scanNumEnd; return xic_coord_sp; } XicCoordSPtr XicCoordTims::multiplyBy(double number) const { XicCoordTimsSPtr xic_coord_sp = std::make_shared(*this); // xic_coord_sp.get()->xicSptr = nullptr; xic_coord_sp.get()->rtTarget *= number; xic_coord_sp.get()->mzRange *= number; xic_coord_sp.get()->scanNumBegin *= number; xic_coord_sp.get()->scanNumEnd *= number; return xic_coord_sp; } XicCoordSPtr XicCoordTims::divideBy(double number) const { XicCoordTimsSPtr xic_coord_sp = std::make_shared(*this); // xic_coord_sp.get()->xicSptr = nullptr; xic_coord_sp.get()->rtTarget /= number; xic_coord_sp.get()->mzRange *= (double)((double)1 / number); xic_coord_sp.get()->scanNumBegin /= number; xic_coord_sp.get()->scanNumEnd /= number; qDebug() << "xic_coord_sp.get()->scanNumBegin=" << xic_coord_sp.get()->scanNumBegin; qDebug() << "xic_coord_sp.get()->scanNumEnd=" << xic_coord_sp.get()->scanNumEnd; return xic_coord_sp; } void XicCoordTims::reset() { xicSptr = nullptr; rtTarget = 0; mzRange = MzRange(0.0, 0.0); scanNumBegin = 0; scanNumEnd = 0; } QString XicCoordTims::toString() const { return QString("%1 begin=%2 end=%3") .arg(XicCoord::toString()) .arg(scanNumBegin) .arg(scanNumEnd); } const QVariant XicCoordTims::getParam(XicCoordParam param) const { switch(param) { case XicCoordParam::TimsTofIonMobilityScanNumberStart: return QVariant((quint64)scanNumBegin); break; case XicCoordParam::TimsTofIonMobilityScanNumberStop: return QVariant((quint64)scanNumEnd); break; default: return QVariant(); } } void XicCoordTims::scanNumBeginRangeCorrection(long start_dev, long stop_dev) { long begin = scanNumBegin + start_dev; long end = scanNumEnd + stop_dev; if(begin < 0) scanNumBegin = 0; else scanNumBegin = begin; if(end < 0) scanNumEnd = 0; else scanNumEnd = end; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/xiccoord/xiccoordtims.h000644 001750 001750 00000005113 14470717234 026541 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/xiccoord/xiccoordtims.h * \date 22/04/2021 * \author Olivier Langella * \brief XIC coordinate in a Tims MSrun */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "xiccoord.h" namespace pappso { struct XicCoordTims; typedef std::shared_ptr XicCoordTimsSPtr; /** @brief coordinates of the XIC to extract and the resulting XIC after * extraction * * to extract a XIC, we need basically the mass to extract it * this structure is meant to extact a XIC quickly and not to maintain * information about it : no peptide, no scan number, no retention time... * */ struct PMSPP_LIB_DECL XicCoordTims : XicCoord { /** * Default constructor */ XicCoordTims() : XicCoord(){}; /** * Copy constructor * * @param other TODO */ XicCoordTims(const XicCoordTims &other); /** * Destructor */ virtual ~XicCoordTims(); /** @brief intialize the XIC and make a deep copy of object */ virtual XicCoordSPtr initializeAndClone() const override; virtual XicCoordSPtr addition(XicCoordSPtr &to_add) const override; virtual XicCoordSPtr multiplyBy(double number) const override; virtual XicCoordSPtr divideBy(double number) const override; virtual void reset() override; virtual QString toString() const override; virtual const QVariant getParam(XicCoordParam param) const override; /** @brief apply scan num correction on xic coordinate */ void scanNumBeginRangeCorrection(long start_dev, long stop_dev); /** @brief mobility index begin */ std::size_t scanNumBegin; /** @brief mobility index end */ std::size_t scanNumEnd; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrundatasettree.cpp000644 001750 001750 00000073117 14526455546 026165 0ustar00rusconirusconi000000 000000 // GPL 3+ // Filippo Rusconi #include #include #include #include #include "msrundatasettree.h" #include "../pappsoexception.h" #include "../exception/exceptionnotpossible.h" namespace pappso { MsRunDataSetTree::MsRunDataSetTree(MsRunIdCstSPtr ms_run_id_csp) : mcsp_msRunId(ms_run_id_csp) { } MsRunDataSetTree::~MsRunDataSetTree() { // qDebug(); for(auto &&node : m_rootNodes) { // Each node is responsible for freeing its children nodes! delete node; } m_rootNodes.clear(); // Beware not to delete the node member of the map, as we have already // destroyed them above! // // for(auto iterator = m_indexNodeMap.begin(); iterator != // m_indexNodeMap.end(); //++iterator) //{ // delete(iterator->second); //} // qDebug(); } MsRunDataSetTreeNode * MsRunDataSetTree::addMassSpectrum( QualifiedMassSpectrumCstSPtr mass_spectrum_csp) { // qDebug(); if(mass_spectrum_csp == nullptr) qFatal("Cannot be nullptr"); if(mass_spectrum_csp.get() == nullptr) qFatal("Cannot be nullptr"); // We need to get the precursor spectrum index, in case this spectrum is a // fragmentation index. MsRunDataSetTreeNode *new_node_p = nullptr; std::size_t precursor_spectrum_index = mass_spectrum_csp->getPrecursorSpectrumIndex(); // qDebug() << "The precursor_spectrum_index:" << precursor_spectrum_index; if(precursor_spectrum_index == std::numeric_limits::max()) { // This spectrum is a full scan spectrum, not a fragmentation spectrum. // Create a new node with no parent and push it back to the root nodes // vector. new_node_p = new MsRunDataSetTreeNode(mass_spectrum_csp, nullptr); // Since there is no parent in this overload, it is assumed that the node // to be populated with the new node is the root node. m_rootNodes.push_back(new_node_p); // true: with_data // qDebug().noquote() << "Pushed back to the roots node vector node:" //<< new_node_p->toString(true); } else { // This spectrum is a fragmentation spectrum. // Sanity check if(mass_spectrum_csp->getMsLevel() <= 1) { throw ExceptionNotPossible( "msrundatasettree.cpp -- ERROR the MS level needs to be > 1 in a " "fragmentation spectrum."); } // Get the node that contains the precursor ion mass spectrum. MsRunDataSetTreeNode *parent_node_p = findNode(precursor_spectrum_index); if(parent_node_p == nullptr) { throw ExceptionNotPossible( "msrundatasettree.cpp -- ERROR could not find " "a tree node matching the index."); } // qDebug() << "Fragmentation spectrum" //<< "Found parent node:" << parent_node_p //<< "for precursor index:" << precursor_spectrum_index; // At this point, create a new node with the right parent. new_node_p = new MsRunDataSetTreeNode(mass_spectrum_csp, parent_node_p); parent_node_p->m_children.push_back(new_node_p); } // And now document that addition in the node index map. m_indexNodeMap.insert(std::pair( mass_spectrum_csp->getMassSpectrumId().getSpectrumIndex(), new_node_p)); // We also want to document the new node relating to the // retention time. documentNodeInDtRtMap( mass_spectrum_csp->getRtInMinutes(), new_node_p, DataKind::rt); // Likewise for the drift time. documentNodeInDtRtMap( mass_spectrum_csp->getDtInMilliSeconds(), new_node_p, DataKind::dt); ++m_spectrumCount; // qDebug() << "New index/node map:" //<< mass_spectrum_csp->getMassSpectrumId().getSpectrumIndex() << "/" //<< new_node_p; return new_node_p; } const std::map & MsRunDataSetTree::getIndexNodeMap() const { return m_indexNodeMap; } std::size_t MsRunDataSetTree::massSpectrumIndex(const MsRunDataSetTreeNode *node) const { // We have a node and we want to get the matching mass spectrum index. if(node == nullptr) throw("Cannot be that the node pointer is nullptr"); std::map::const_iterator iterator = std::find_if( m_indexNodeMap.begin(), m_indexNodeMap.end(), [node](const std::pair pair) { return pair.second == node; }); if(iterator != m_indexNodeMap.end()) return iterator->first; return std::numeric_limits::max(); } std::size_t MsRunDataSetTree::massSpectrumIndex( QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp) const { MsRunDataSetTreeNode *node_p = findNode(qualified_mass_spectrum_csp); return massSpectrumIndex(node_p); } const std::vector & MsRunDataSetTree::getRootNodes() const { return m_rootNodes; } void MsRunDataSetTree::accept(MsRunDataSetTreeNodeVisitorInterface &visitor) { // qDebug() << "Going to call node->accept(visitor) for each root node."; for(auto &&node : m_rootNodes) { // qDebug() << "Calling accept for root node:" << node; if(visitor.shouldStop()) break; node->accept(visitor); } } void MsRunDataSetTree::accept( MsRunDataSetTreeNodeVisitorInterface &visitor, std::vector::const_iterator nodes_begin_iterator, std::vector::const_iterator nodes_end_iterator) { // qDebug() << "Visitor:" << &visitor << "The distance is between iterators // is:" //<< std::distance(nodes_begin_iterator, nodes_end_iterator); using Iterator = std::vector::const_iterator; Iterator iter = nodes_begin_iterator; // Inform the visitor of the number of nodes to work on. std::size_t node_count = std::distance(nodes_begin_iterator, nodes_end_iterator); visitor.setNodesToProcessCount(node_count); while(iter != nodes_end_iterator) { // qDebug() << "Visitor:" << &visitor //<< "The distance is between iterators is:" //<< std::distance(nodes_begin_iterator, nodes_end_iterator); // qDebug() << "Node visited:" << (*iter)->toString(); if(visitor.shouldStop()) break; (*iter)->accept(visitor); ++iter; } } MsRunDataSetTreeNode * MsRunDataSetTree::findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp) const { // qDebug(); for(auto &node : m_rootNodes) { // qDebug() << "In one node of the root nodes."; MsRunDataSetTreeNode *iterNode = node->findNode(mass_spectrum_csp); if(iterNode != nullptr) return iterNode; } return nullptr; } MsRunDataSetTreeNode * MsRunDataSetTree::findNode(std::size_t spectrum_index) const { // qDebug(); for(auto &node : m_rootNodes) { // qDebug() << "In one node of the root nodes."; MsRunDataSetTreeNode *iterNode = node->findNode(spectrum_index); if(iterNode != nullptr) return iterNode; } return nullptr; } std::vector MsRunDataSetTree::flattenedView() { // We want to push back all the nodes of the tree in a flat vector of nodes. std::vector nodes; for(auto &&node : m_rootNodes) { // The node will store itself and all of its children. node->flattenedView(nodes, true /* with_descendants */); } return nodes; } std::vector MsRunDataSetTree::flattenedViewMsLevel(std::size_t ms_level, bool with_descendants) { std::vector nodes; // Logically, ms_level cannot be 0. if(!ms_level) { throw ExceptionNotPossible( "msrundatasettree.cpp -- ERROR the MS level cannot be 0."); return nodes; } // The depth of the tree at which we are right at this point is 0, we have not // gone into the children yet. std::size_t depth = 0; // If ms_level is 1, then that means that we want the nodes starting right at // the root nodes with or without the descendants. // std::cout << __FILE__ << " @ " << __LINE__ << " " << __FUNCTION__ << " () " //<< "ms_level: " << ms_level << " depth: " << depth << std::endl; if(ms_level == 1) { for(auto &&node : m_rootNodes) { // std::cout << __FILE__ << " @ " << __LINE__ << " " << __FUNCTION__ //<< " () " //<< "Handling one of the root nodes at ms_level = 1." //<< std::endl; node->flattenedView(nodes, with_descendants); } return nodes; } // At this point, we know that we want the descendants of the root nodes since // we want ms_level > 1, so we need go to to the children of the root nodes. // Let depth to 0, because if we go to the children of the root nodes we will // still be at depth 0, that is MS level 1. for(auto &node : m_rootNodes) { // std::cout //<< __FILE__ << " @ " << __LINE__ << " " << __FUNCTION__ << " () " //<< std::setprecision(15) //<< "Requesting a flattened view of the root's child nodes with depth: " //<< depth << std::endl; node->flattenedViewMsLevelNodes(ms_level, depth, nodes, with_descendants); } return nodes; } MsRunDataSetTreeNode * MsRunDataSetTree::precursorNodeByProductSpectrumIndex( std::size_t product_spectrum_index) { // qDebug(); // Find the node that holds the mass spectrum that was acquired as the // precursor that when fragmented gave a spectrum at spectrum_index; // Get the node that contains the product_spectrum_index first. MsRunDataSetTreeNode *node = nullptr; node = findNode(product_spectrum_index); // Now get the node that contains the precursor_spectrum_index. return findNode(node->mcsp_massSpectrum->getPrecursorSpectrumIndex()); } std::vector MsRunDataSetTree::productNodesByPrecursorSpectrumIndex( std::size_t precursor_spectrum_index) { std::vector nodes; // First get the node of the precursor spectrum index. MsRunDataSetTreeNode *precursor_node = findNode(precursor_spectrum_index); if(precursor_node == nullptr) return nodes; nodes.assign(precursor_node->m_children.begin(), precursor_node->m_children.end()); return nodes; } std::vector MsRunDataSetTree::precursorNodesByPrecursorMz(pappso_double mz, PrecisionPtr precision_ptr) { // Find all the precursor nodes holding a mass spectrum that contained a // precursor mz-value. if(precision_ptr == nullptr) throw ExceptionNotPossible( "msrundatasettree.cpp -- ERROR precision_ptr cannot be nullptr."); std::vector product_nodes; // As a first step, find all the nodes that hold a mass spectrum that was // acquired as a fragmentation spectrum of an ion of mz, that is, search all // the product ion nodes for which precursor was mz. for(auto &&node : m_rootNodes) { node->productNodesByPrecursorMz(mz, precision_ptr, product_nodes); } // Now, for each node found get the precursor node std::vector precursor_nodes; for(auto &&node : product_nodes) { precursor_nodes.push_back( findNode(node->mcsp_massSpectrum->getPrecursorSpectrumIndex())); } return precursor_nodes; } bool MsRunDataSetTree::documentNodeInDtRtMap(double time, MsRunDataSetTreeNode *node_p, DataKind data_kind) { // qDebug(); using NodeVector = std::vector; using DoubleNodeVectorMap = std::map; using MapPair = std::pair; using MapIterator = DoubleNodeVectorMap::iterator; DoubleNodeVectorMap *map_p; if(data_kind == DataKind::rt) { map_p = &m_rtDoubleNodeVectorMap; } else if(data_kind == DataKind::dt) { map_p = &m_dtDoubleNodeVectorMap; } else qFatal("Programming error."); // There are two possibilities: // // 1. The time was never encountered yet. We won't find it. We need to // allocate a vector of Node's and set it associated to time in the map. // // 2. The time was encountered already, we will find it in the maps, we'll // just push_back the Node in the vector of nodes. MapIterator found_iterator = map_p->find(time); if(found_iterator != map_p->end()) { // The time value was encountered already. found_iterator->second.push_back(node_p); // qDebug() << "Found iterator for time:" << time; } else { // We need to create a new vector with the node. NodeVector node_vector = {node_p}; map_p->insert(MapPair(time, node_vector)); // qDebug() << "Inserted new time:node_vector pair."; } return true; } MsRunDataSetTreeNode * MsRunDataSetTree::addMassSpectrum( QualifiedMassSpectrumCstSPtr mass_spectrum_csp, MsRunDataSetTreeNode *parent_p) { // qDebug(); // We want to add a mass spectrum. Either the parent_p argument is nullptr or // not. If it is nullptr, then we just append the mass spectrum to the vector // of root nodes. If it is not nullptr, we need to append the mass spectrum to // that node. MsRunDataSetTreeNode *new_node_p = new MsRunDataSetTreeNode(mass_spectrum_csp, parent_p); if(parent_p == nullptr) { m_rootNodes.push_back(new_node_p); // qDebug() << "Pushed back" << new_node << "to root nodes:" << // &m_rootNodes; } else { parent_p->m_children.push_back(new_node_p); // qDebug() << "Pushed back" << new_node << "with parent:" << parent_p; } ++m_spectrumCount; // And now document that addition in the node index map. m_indexNodeMap.insert(std::pair( mass_spectrum_csp->getMassSpectrumId().getSpectrumIndex(), new_node_p)); // We also want to document the new node relating to the // retention time. documentNodeInDtRtMap( mass_spectrum_csp->getRtInMinutes(), new_node_p, DataKind::rt); // Likewise for the drift time. documentNodeInDtRtMap( mass_spectrum_csp->getDtInMilliSeconds(), new_node_p, DataKind::dt); // qDebug() << "New index/node map:" //<< mass_spectrum_csp->getMassSpectrumId().getSpectrumIndex() << "/" //<< new_node; return new_node_p; } MsRunDataSetTreeNode * MsRunDataSetTree::addMassSpectrum( QualifiedMassSpectrumCstSPtr mass_spectrum_csp, std::size_t precursor_spectrum_index) { // qDebug(); // First get the node containing the mass spectrum that was acquired at index // precursor_spectrum_index. // qDebug() << "Need to find the precursor's mass spectrum node for precursor // " //"spectrum index:" //<< precursor_spectrum_index; MsRunDataSetTreeNode *mass_spec_data_node_p = findNode(precursor_spectrum_index); // qDebug() << "Found node" << mass_spec_data_node_p //<< "for precursor index:" << precursor_spectrum_index; if(mass_spec_data_node_p == nullptr) { throw ExceptionNotPossible( "msrundatasettree.cpp -- ERROR could not find a a " "tree node matching the index."); } // qDebug() << "Calling addMassSpectrum with parent node:" //<< mass_spec_data_node_p; return addMassSpectrum(mass_spectrum_csp, mass_spec_data_node_p); } std::size_t MsRunDataSetTree::addDataSetTreeNodesInsideDtRtRange(double start, double end, NodeVector &nodes, DataKind data_kind) const { using NodeVector = std::vector; using DoubleNodeVectorMap = std::map; using MapIterator = DoubleNodeVectorMap::const_iterator; const DoubleNodeVectorMap *map_p; if(data_kind == DataKind::rt) { map_p = &m_rtDoubleNodeVectorMap; } else if(data_kind == DataKind::dt) { map_p = &m_dtDoubleNodeVectorMap; } else qFatal("Programming error."); std::size_t added_nodes = 0; // Get the iterator to the map item that has the key greater or equal to // start. MapIterator start_iterator = map_p->lower_bound(start); if(start_iterator == map_p->end()) return 0; // Now get the end of the map useful range of items. MapIterator end_iterator = map_p->upper_bound(end); // Now that we have the iterator range, iterate in it and get the mass spectra // from each item's pair.second node vector. for(MapIterator iterator = start_iterator; iterator != end_iterator; ++iterator) { // We are iterating in MapPair items. NodeVector node_vector = iterator->second; // All the nodes in the node vector need to be copied to the mass_spectra // vector passed as parameter. for(auto &&node_p : node_vector) { nodes.push_back(node_p); ++added_nodes; } } return added_nodes; } std::size_t MsRunDataSetTree::removeDataSetTreeNodesOutsideDtRtRange( double start, double end, NodeVector &nodes, DataKind data_kind) const { using NodeVector = std::vector; using NodeVectorIterator = NodeVector::iterator; using DoubleNodeVectorMap = std::map; using MapIterator = DoubleNodeVectorMap::const_iterator; const DoubleNodeVectorMap *map_p; if(data_kind == DataKind::rt) { map_p = &m_rtDoubleNodeVectorMap; } else if(data_kind == DataKind::dt) { map_p = &m_dtDoubleNodeVectorMap; } else qFatal("Programming error."); std::size_t removed_vector_items = 0; // We want to remove from the nodes vector all the nodes that contain a mass // spectrum acquired at a time range outside of [ start-end ], that is, the // time values [begin() - start [ and ]end -- end()[. // Get the iterator to the map item that has the key less to // start (we want to keep the map item having key == start). MapIterator first_end_iterator = (*map_p).upper_bound(start); // Now that we have the first_end_iterator, we can iterate between [begin -- // first_end_iterator[ for(MapIterator iterator = map_p->begin(); iterator != first_end_iterator; ++iterator) { // Remove from the nodes vector the nodes. // We are iterating in MapPair items. NodeVector node_vector = iterator->second; // All the nodes in the node vector need to be removed from the // mass_spectra vector passed as parameter if found. for(auto &&node_p : node_vector) { NodeVectorIterator iterator = std::find(nodes.begin(), nodes.end(), node_p); if(iterator != nodes.end()) { // We found the node: remove it. nodes.erase(iterator); ++removed_vector_items; } } } // Now the second begin iterator, so that we can remove all the items // contained in the second range, that is, ]end--end()[. // The second_first_iterator will point to the item having its time value less // or equal to end. But we do not want to get items having their time equal to // end, only < end. So, if the iterator is not begin(), we just need to // decrement it once. MapIterator second_first_iterator = map_p->upper_bound(end); if(second_first_iterator != map_p->begin()) --second_first_iterator; for(MapIterator iterator = second_first_iterator; iterator != map_p->end(); ++iterator) { // We are iterating in MapPair items. NodeVector node_vector = iterator->second; // All the nodes in the node vector need to be removed from the // mass_spectra vector passed as parameter if found. for(auto &&node_p : node_vector) { NodeVectorIterator iterator = std::find(nodes.begin(), nodes.end(), node_p); if(iterator != nodes.end()) { // We found the node: remove it. nodes.erase(iterator); ++removed_vector_items; } } } return removed_vector_items; } std::size_t MsRunDataSetTree::addDataSetQualMassSpectraInsideDtRtRange( double start, double end, QualMassSpectraVector &mass_spectra, DataKind data_kind) const { // qDebug() << "With start:" << start << "and end:" << end; if(start == end) qDebug() << "Special case, start and end are equal:" << start; // We will use the maps that relate rt | dt to a vector of data tree nodes. // Indeed, we may have more than one mass spectrum acquired for a given rt, in // case of ion mobility mass spectrometry. Same for dt: we will have as many // spectra for each dt as there are retention time values... using DoubleNodeVectorMap = std::map; using MapIterator = DoubleNodeVectorMap::const_iterator; const DoubleNodeVectorMap *map_p; if(data_kind == DataKind::rt) { map_p = &m_rtDoubleNodeVectorMap; // qDebug() << "The RT map has size:" << map_p->size() << "start:" << // start //<< "end:" << end; } else if(data_kind == DataKind::dt) { map_p = &m_dtDoubleNodeVectorMap; // qDebug() << "The DT map has size:" << map_p->size() << "start:" << // start //<< "end:" << end; } else qFatal("Programming error."); // qDebug() << "The rt |dt / mass spectra map has size:" << map_p->size() //<< "The start:" << start << "the end:" << end; std::size_t added_mass_spectra = 0; // Get the iterator to the map item that has the key greater or equal to // start. MapIterator start_iterator = map_p->lower_bound(start); if(start_iterator == map_p->end()) { qDebug() << "The start iterator is end()!"; return 0; } // qDebug() << "The start_iterator points to:" << start_iterator->first //<< "as a rt|dt time."; // Now get the end of the map's useful range of items. // Returns an iterator pointing to the first element in the container whose // key is considered to go after 'end'. MapIterator end_iterator = map_p->upper_bound(end); // Immediately verify if there is no distance between start and end. if(!std::distance(start_iterator, end_iterator)) { qDebug() << "No range of mass spectra could be selected."; return 0; } if(end_iterator == map_p->end()) { // qDebug() << "The end_iterator points to the end of the map." //<< "The last map item is prev() at key value: " //<< std::prev(end_iterator)->first; } else { // qDebug() << "The end_iterator points to:" << end_iterator->first //<< "as a rt|dt time and the accounted key value is actually" //<< std::prev(end_iterator)->first; } // qDebug() << "The number of time values to iterate through:" //<< std::distance(start_iterator, end_iterator) //<< "with values: start: " << start_iterator->first //<< "and end: " << std::prev(end_iterator)->first; // Now that we have the iterator range, iterate in it and get the mass // spectra from each item's pair.second node vector. for(MapIterator iterator = start_iterator; iterator != end_iterator; ++iterator) { // We are iterating in MapPair items. NodeVector node_vector = iterator->second; // All the nodes' mass spectra in the node vector need to be copied to // the mass_spectra vector passed as parameter. for(auto &&node_p : node_vector) { QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp = node_p->getQualifiedMassSpectrum(); #if 0 // Sanity check only for deep debugging. if(qualified_mass_spectrum_csp == nullptr || qualified_mass_spectrum_csp.get() == nullptr) { throw ExceptionNotPossible( "The QualifiedMassSpectrumCstSPtr cannot be nullptr."); } else { //qDebug() << "Current mass spectrum is valid with rt:" //<< qualified_mass_spectrum_csp->getRtInMinutes(); } #endif mass_spectra.push_back(qualified_mass_spectrum_csp); ++added_mass_spectra; } } // qDebug() << "Returning added_mass_spectra:" << added_mass_spectra; return added_mass_spectra; } std::size_t MsRunDataSetTree::removeDataSetQualMassSpectraOutsideDtRtRange( double start, double end, QualMassSpectraVector &mass_spectra, DataKind data_kind) const { using QualMassSpectraVectorIterator = QualMassSpectraVector::iterator; using DoubleNodeVectorMap = std::map; using MapIterator = DoubleNodeVectorMap::const_iterator; const DoubleNodeVectorMap *map_p; if(data_kind == DataKind::rt) { map_p = &m_rtDoubleNodeVectorMap; // qDebug() << "The RT map has size:" << map_p->size() << "start:" << // start //<< "end:" << end; } else if(data_kind == DataKind::dt) { map_p = &m_dtDoubleNodeVectorMap; // qDebug() << "The DT map has size:" << map_p->size() << "start:" << // start //<< "end:" << end; } else qFatal("Programming error."); std::size_t removed_vector_items = 0; // We want to remove from the nodes vector all the nodes that contain a mass // spectrum acquired at a time range outside of [ start-end ], that is, the // time values [begin() - start [ and ]end -- end()[. // Looking for an iterator that points to an item having a time < start. // lower_bound returns an iterator pointing to the first element in the // range [first, last) that is not less than (i.e. greater or equal to) // value, or last if no such element is found. MapIterator first_end_iterator = (*map_p).lower_bound(start); // first_end_iterator points to the item that has the next time value with // respect to start. This is fine because we'll not remove that point // because the for loop below will stop one item short of // first_end_iterator. That means that we effectively remove all the items // [begin() -> start[ (start not include). Exactly what we want. // qDebug() << "lower_bound for start:" << first_end_iterator->first; // Now that we have the first_end_iterator, we can iterate between [begin -- // first_end_iterator[ for(MapIterator iterator = map_p->begin(); iterator != first_end_iterator; ++iterator) { // Remove from the nodes vector the nodes. // We are iterating in MapPair items. NodeVector node_vector = iterator->second; // All the nodes in the node vector need to be removed from the // mass_spectra vector passed as parameter if found. for(auto &&node_p : node_vector) { QualMassSpectraVectorIterator iterator = std::find(mass_spectra.begin(), mass_spectra.end(), node_p->getQualifiedMassSpectrum()); if(iterator != mass_spectra.end()) { // We found the mass spectrum: remove it. mass_spectra.erase(iterator); ++removed_vector_items; } } } // Now the second begin iterator, so that we can remove all the items // contained in the second range, that is, ]end--end()[. // The second_first_iterator will point to the item having its time value // less or equal to end. But we do not want to get items having their time // equal to end, only < end. So, if the iterator is not begin(), we just // need to decrement it once. MapIterator second_first_iterator = map_p->upper_bound(end); // second_first_iterator now points to the item after the one having time // end. Which is exactly what we want: we want to remove ]end--end()[ and // this is exactly what the loop starting a the point after end below. // qDebug() << "second_first_iterator for end:" << // second_first_iterator->first; for(MapIterator iterator = second_first_iterator; iterator != map_p->end(); ++iterator) { // We are iterating in MapPair items. NodeVector node_vector = iterator->second; // All the nodes in the node vector need to be removed from the // mass_spectra vector passed as parameter if found. for(auto &&node_p : node_vector) { QualMassSpectraVectorIterator iterator = std::find(mass_spectra.begin(), mass_spectra.end(), node_p->getQualifiedMassSpectrum()); if(iterator != mass_spectra.end()) { // We found the node: remove it. mass_spectra.erase(iterator); ++removed_vector_items; } } } return removed_vector_items; } std::size_t MsRunDataSetTree::depth() const { // We want to know what is the depth of the tree, that is the highest level // of MSn, that is, n. if(!m_rootNodes.size()) return 0; // qDebug() << "There are" << m_rootNodes.size() << "root nodes"; // By essence, we are at MS0: only if we have at least one root node do we // know we have MS1 data. So we already know that we have at least one // child, so start with depth 1. std::size_t depth = 1; std::size_t tmp_depth = 0; std::size_t greatest_depth = 0; for(auto &node : m_rootNodes) { tmp_depth = node->depth(depth); // qDebug() << "Returned depth:" << tmp_depth; if(tmp_depth > greatest_depth) greatest_depth = tmp_depth; } return greatest_depth; } std::size_t MsRunDataSetTree::size() const { std::size_t cumulative_node_count = 0; for(auto &node : m_rootNodes) { node->size(cumulative_node_count); // qDebug() << "Returned node_count:" << node_count; } return cumulative_node_count; } std::size_t MsRunDataSetTree::indexNodeMapSize() const { return m_indexNodeMap.size(); } std::size_t MsRunDataSetTree::getSpectrumCount() const { return m_spectrumCount; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrundatasettree.h000644 001750 001750 00000011431 14453474630 025613 0ustar00rusconirusconi000000 000000 // GPL 3+ // Filippo Rusconi #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes /////////////////////// Local includes #include "msrundatasettreevisitor.h" #include "msrundatasettreenode.h" #include "msrunid.h" #include "../exportinmportconfig.h" #include "../processing/combiners/selectionpolygon.h" namespace pappso { class MsRunDataSetTree; typedef std::shared_ptr MsRunDataSetTreeSPtr; typedef std::shared_ptr MsRunDataSetTreeCstSPtr; class PMSPP_LIB_DECL MsRunDataSetTree { public: MsRunDataSetTree(MsRunIdCstSPtr ms_run_id_csp); virtual ~MsRunDataSetTree(); MsRunDataSetTreeNode * addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum); const std::map &getIndexNodeMap() const; const std::vector &getRootNodes() const; void accept(MsRunDataSetTreeNodeVisitorInterface &visitor); void accept(MsRunDataSetTreeNodeVisitorInterface &visitor, std::vector::const_iterator nodes_begin_iterator, std::vector::const_iterator nodes_end_iterator); MsRunDataSetTreeNode * findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp) const; MsRunDataSetTreeNode *findNode(std::size_t spectrum_index) const; std::size_t massSpectrumIndex(const MsRunDataSetTreeNode *node) const; std::size_t massSpectrumIndex( QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp) const; /****************** Flattened views ******************/ std::vector flattenedView(); std::vector flattenedViewMsLevel(std::size_t ms_level, bool with_descendants = false); /****************** Flattened views ******************/ MsRunDataSetTreeNode * precursorNodeByProductSpectrumIndex(std::size_t product_spectrum_index); std::vector productNodesByPrecursorSpectrumIndex(std::size_t precursor_spectrum_index); std::vector precursorNodesByPrecursorMz(pappso_double mz, PrecisionPtr precision_ptr); // Utility functions. std::size_t depth() const; // The tree size as computed by going down the tree nodes. std::size_t size() const; // The size of the flat index/node map as filled in during file loading. std::size_t indexNodeMapSize() const; std::size_t getSpectrumCount() const; using NodeVector = std::vector; using QualMassSpectraVector = std::vector; using DoubleNodeVectorMap = std::map; std::size_t addDataSetTreeNodesInsideDtRtRange(double start, double end, NodeVector &nodes, DataKind data_kind) const; std::size_t addDataSetTreeNodesInsideDtRtPolygon(const SelectionPolygon &selectionPolygon, NodeVector &nodes, DataKind data_kind) const; std::size_t removeDataSetTreeNodesOutsideDtRtRange(double start, double end, NodeVector &nodes, DataKind data_kind) const; std::size_t addDataSetQualMassSpectraInsideDtRtRange(double start, double end, QualMassSpectraVector &mass_spectra, DataKind data_kind) const; std::size_t removeDataSetQualMassSpectraOutsideDtRtRange( double start, double end, QualMassSpectraVector &mass_spectra, DataKind data_kind) const; private: MsRunIdCstSPtr mcsp_msRunId; std::size_t m_spectrumCount = std::numeric_limits::min(); std::vector m_rootNodes; std::map m_indexNodeMap; // We want to be able to list easily all the mass spectra that were acquired // at any given RT or DT. DoubleNodeVectorMap m_dtDoubleNodeVectorMap; DoubleNodeVectorMap m_rtDoubleNodeVectorMap; bool documentNodeInDtRtMap(double time, MsRunDataSetTreeNode *node_p, DataKind data_kind); // These addMassSpectrum functions are for forensic science. MsRunDataSetTreeNode * addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum, MsRunDataSetTreeNode *parent); MsRunDataSetTreeNode * addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum, std::size_t precursor_spectrum_index); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrundatasettreenode.cpp000644 001750 001750 00000024500 14526455546 027023 0ustar00rusconirusconi000000 000000 // GPL 3+ // Filippo Rusconi /////////////////////// StdLib includes #include #include #include #include /////////////////////// Qt includes #include /////////////////////// pwiz includes /////////////////////// Local includes #include "../exception/exceptionnotpossible.h" #include "msrundatasettreenode.h" #include "../utils.h" namespace pappso { MsRunDataSetTreeNode::MsRunDataSetTreeNode() { } MsRunDataSetTreeNode::MsRunDataSetTreeNode( QualifiedMassSpectrumCstSPtr mass_spectrum_csp, MsRunDataSetTreeNode *parent_p) : mcsp_massSpectrum(mass_spectrum_csp), mp_parent(parent_p) { } MsRunDataSetTreeNode::MsRunDataSetTreeNode(const MsRunDataSetTreeNode &other) : mcsp_massSpectrum(other.mcsp_massSpectrum), mp_parent(other.mp_parent) { for(auto &&node : other.m_children) m_children.push_back(new MsRunDataSetTreeNode(*node)); } MsRunDataSetTreeNode::~MsRunDataSetTreeNode() { for(auto &&node : m_children) delete node; m_children.clear(); } MsRunDataSetTreeNode & MsRunDataSetTreeNode::operator=(const MsRunDataSetTreeNode &other) { if(this == &other) return *this; mcsp_massSpectrum = other.mcsp_massSpectrum; mp_parent = other.mp_parent; for(auto &&node : other.m_children) m_children.push_back(new MsRunDataSetTreeNode(*node)); return *this; } void MsRunDataSetTreeNode::setQualifiedMassSpectrum( QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp) { mcsp_massSpectrum = qualified_mass_spectrum_csp; } QualifiedMassSpectrumCstSPtr MsRunDataSetTreeNode::getQualifiedMassSpectrum() const { return mcsp_massSpectrum; } void MsRunDataSetTreeNode::setParent(MsRunDataSetTreeNode *parent) { mp_parent = parent; } MsRunDataSetTreeNode * MsRunDataSetTreeNode::getParent() const { // qDebug(); return mp_parent; } bool MsRunDataSetTreeNode::hasParent() const { // qDebug(); if(mp_parent != nullptr) return true; else return false; } void MsRunDataSetTreeNode::size(std::size_t &cumulative_node_count) const { // First account for this node. ++cumulative_node_count; // Then ask for each child to recursively account for themselves and their // children. for(auto &&node : m_children) { node->size(cumulative_node_count); } } MsRunDataSetTreeNode * MsRunDataSetTreeNode::findNode(std::size_t spectrum_index) { // qDebug(); // Finding a node that contains a qualified mass spectrum that has been // acquired at spectrum_index, requires checking if that node is not *this and // if not if it is not one of the children. By essence, this work is // recursive. if(mcsp_massSpectrum->getMassSpectrumId().getSpectrumIndex() == spectrum_index) { // qDebug() << "The mass spectrum's node is this node."; return this; } // qDebug() << "Need to go searching in the children."; for(auto &node : m_children) { MsRunDataSetTreeNode *iterNode = node->findNode(spectrum_index); if(iterNode != nullptr) { // qDebug() << "Found the mass spectrum's node."; return iterNode; } } return nullptr; } MsRunDataSetTreeNode * MsRunDataSetTreeNode::findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp) { // qDebug(); // Finding a node that contains a qualified mass spectrum requires checking if // that node is not *this and if not if it is not one of the children. By // essence, this work is recursive. if(mass_spectrum_csp == mcsp_massSpectrum) { // qDebug() << "The mass spectrum's node is this node."; return this; } // qDebug() << "Need to go searching in the children."; for(auto &node : m_children) { MsRunDataSetTreeNode *iterNode = node->findNode(mass_spectrum_csp); if(iterNode != nullptr) { // qDebug() << "Found the mass spectrum's node."; return iterNode; } } return nullptr; } void MsRunDataSetTreeNode::flattenedView(std::vector &nodes, bool with_descendants) { // Do store this. nodes.push_back(this); // And now the descendants. if(with_descendants) { for(auto &&node : m_children) { node->flattenedView(nodes, with_descendants); } } else { } } void MsRunDataSetTreeNode::flattenedViewChildrenOnly( std::vector &nodes, bool with_descendants) { // Do not store this, only this->m_children ! for(auto &&node : m_children) node->flattenedView(nodes, with_descendants); } void MsRunDataSetTreeNode::flattenedViewMsLevelNodes( std::size_t ms_level, std::size_t depth, std::vector &nodes, bool with_descendants) { if(ms_level == (depth + 1)) { // There we are. The ms_level that is asked matches the current depth of // the node we are in. flattenedView(nodes, with_descendants); } else if(ms_level > (depth + 1)) { // We still do not have to store the nodes, because what we are // searching is down the tree... for(auto &&node : m_children) { node->flattenedViewMsLevelNodes( ms_level, depth + 1, nodes, with_descendants); } } } std::vector MsRunDataSetTreeNode::productNodesByPrecursorMz( pappso_double precursor_mz, PrecisionPtr precision_ptr, std::vector &nodes) { if(precision_ptr == nullptr) throw ExceptionNotPossible( QObject::tr("Fatal error at msrundatasettreenode.cpp " "-- ERROR precision_ptr cannot be nullptr. " "Program aborted.")); // Check if this node matches the requirements. pappso_double mz = mcsp_massSpectrum->getPrecursorMz(); if(mz != std::numeric_limits::max()) { // Calculate the mz range using the tolerance. pappso_double lower_mz = precursor_mz - (precision_ptr->delta(precursor_mz) / 2); pappso_double upper_mz = precursor_mz + (precision_ptr->delta(precursor_mz) / 2); if(mz >= lower_mz && mz <= upper_mz) { // We are iterating in a node that holds a mass spectrum that was // acquired by fragmenting an ion that matches the searched mz value. nodes.push_back(this); } } // Now handle in the same way, but recursively, all the children of this node. for(auto &&node : m_children) { node->productNodesByPrecursorMz(precursor_mz, precision_ptr, nodes); } return nodes; } std::vector MsRunDataSetTreeNode::precursorIonNodesByPrecursorMz( pappso_double precursor_mz, PrecisionPtr precision_ptr, std::vector &nodes) { if(precision_ptr == nullptr) throw ExceptionNotPossible( QObject::tr("Fatal error at msrundatasettreenode.cpp " "-- ERROR precision_ptr cannot be nullptr. " "Program aborted.")); // Calculate the mz range using the tolerance. pappso_double lower_mz = precursor_mz - (precision_ptr->delta(precursor_mz) / 2); pappso_double upper_mz = precursor_mz + (precision_ptr->delta(precursor_mz) / 2); // Check if this node matches the requirements. pappso_double mz = mcsp_massSpectrum->getPrecursorMz(); if(mz != std::numeric_limits::max()) { if(mz >= lower_mz && mz <= upper_mz) { // We are iterating in a node that hold a mass spectrum that was // acquired by fragmenting an ion matching the searched mz value. We // can extract the spectrum index of that precursor mass spectrum and // then get its corresponding node, that we'll store. std::size_t precursor_spectrum_index = mcsp_massSpectrum->getPrecursorSpectrumIndex(); MsRunDataSetTreeNode *found_node = findNode(precursor_spectrum_index); if(precursor_spectrum_index != found_node->mcsp_massSpectrum->getMassSpectrumId() .getSpectrumIndex()) throw ExceptionNotPossible( QObject::tr("Fatal error at msrundatasettreenode.cpp " "-- ERROR precursor_spectrum_index bad value. " "Program aborted.")); nodes.push_back(found_node); } } // Now handle in the same way, but recursively, all the children of this node. for(auto &&node : m_children) { node->precursorIonNodesByPrecursorMz(precursor_mz, precision_ptr, nodes); } return nodes; } void MsRunDataSetTreeNode::accept(MsRunDataSetTreeNodeVisitorInterface &visitor) { // qDebug() << "now calling visitor.visit(*this);"; visitor.visit(*this); // qDebug() << "and now calling node->accept(visitor) for each child node."; visitor.setNodesToProcessCount(m_children.size()); for(auto &&node : m_children) node->accept(visitor); } std::size_t MsRunDataSetTreeNode::depth(std::size_t depth) const { // qDebug() << "Got depth:" << depth; // If there are no children in this node, that is the end of the tree. // Do not change anything an return. if(!m_children.size()) { // qDebug() << "No children, returning" << depth; return depth; } // qDebug() << "There are" << m_children.size() << "children nodes"; // At this point we know we can already increment depth by one because // we go down one level by iterating in the m_children vector of nodes. // qDebug() << "Children found, incrementing depth to" << depth + 1; std::size_t local_depth = depth + 1; std::size_t tmp_depth = 0; std::size_t greatest_depth = 0; for(auto &node : m_children) { // qDebug() << "In the children for loop"; tmp_depth = node->depth(local_depth); // qDebug() << "Got depth from iterated node:" << tmp_depth; if(tmp_depth > greatest_depth) greatest_depth = tmp_depth; } // qDebug() << "Returning:" << greatest_depth; return greatest_depth; } QString MsRunDataSetTreeNode::toString(bool with_data) const { QString text = QString("mcsp_massSpectrum: %1 ; to string: %2 ; children: %3\n") .arg(Utils::pointerToString( const_cast(mcsp_massSpectrum.get()))) .arg(mcsp_massSpectrum->toString()) .arg(m_children.size()); if(with_data) text += mcsp_massSpectrum->getMassSpectrumCstSPtr()->toString(); return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrundatasettreenode.h000644 001750 001750 00000005447 14371726065 026474 0ustar00rusconirusconi000000 000000 // GPL 3+ // Filippo Rusconi #pragma once /////////////////////// StdLib includes #include #include /////////////////////// Qt includes /////////////////////// pappsomspp includes /////////////////////// Local includes #include "../massspectrum/qualifiedmassspectrum.h" #include "../precision.h" #include "msrundatasettreevisitor.h" #include "../exportinmportconfig.h" namespace pappso { class MsRunDataSetTreeNode; typedef std::shared_ptr MsRunDataSetTreeNodeSPtr; typedef std::shared_ptr MsRunDataSetTreeNodeCstSPtr; class PMSPP_LIB_DECL MsRunDataSetTreeNode { friend class MsRunDataSetTree; public: MsRunDataSetTreeNode(); MsRunDataSetTreeNode(const MsRunDataSetTreeNode &other); MsRunDataSetTreeNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp, MsRunDataSetTreeNode *parent_p = nullptr); virtual ~MsRunDataSetTreeNode(); MsRunDataSetTreeNode &operator=(const MsRunDataSetTreeNode &other); void setQualifiedMassSpectrum( QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp); QualifiedMassSpectrumCstSPtr getQualifiedMassSpectrum() const; void setParent(MsRunDataSetTreeNode *parent); MsRunDataSetTreeNode *getParent() const; bool hasParent() const; void size(std::size_t &cumulative_node_count) const; MsRunDataSetTreeNode *findNode(std::size_t spectrum_index); MsRunDataSetTreeNode * findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp); void flattenedView(std::vector &nodes, bool with_descendants = false); void flattenedViewChildrenOnly(std::vector &nodes, bool with_descendants = false); void flattenedViewMsLevelNodes(std::size_t ms_level, std::size_t depth, std::vector &nodes, bool with_descendants = false); std::vector productNodesByPrecursorMz(pappso_double precursor_mz, PrecisionPtr precision_ptr, std::vector &nodes); std::vector precursorIonNodesByPrecursorMz(pappso_double precursor_mz, PrecisionPtr precision_ptr, std::vector &nodes); void accept(MsRunDataSetTreeNodeVisitorInterface &visitor); // Utility functions. std::size_t depth(std::size_t depth) const; QString toString(bool with_data = false) const; private: QualifiedMassSpectrumCstSPtr mcsp_massSpectrum = nullptr; MsRunDataSetTreeNode *mp_parent = nullptr; std::vector m_children; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrundatasettreevisitor.h000644 001750 001750 00000001020 14346367014 027222 0ustar00rusconirusconi000000 000000 // (C) 2019 Filippo Rusconi, GPL3+ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes /////////////////////// pappsomspp includes /////////////////////// Local includes namespace pappso { class MsRunDataSetTreeNode; class MsRunDataSetTreeNodeVisitorInterface { public: virtual bool visit(const MsRunDataSetTreeNode &node) = 0; virtual bool shouldStop() const = 0; virtual void setNodesToProcessCount(std::size_t) = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrunid.cpp000644 001750 001750 00000010077 14526455546 024250 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "msrunid.h" #include #include int msRunIdMetaTypeId = qRegisterMetaType("pappso::MsRunId"); int msRunIdCstSPtrMetaTypeId = qRegisterMetaType("pappso::MsRunIdCstSPtr"); namespace pappso { MsRunId::MsRunId() { } MsRunId::MsRunId(const QString &file_name) : m_fileName(file_name) { // by default, the sample name is given by the file name QFileInfo fileinfo(m_fileName); if(fileinfo.fileName() == "analysis.tdf") { m_fileName = fileinfo.absoluteDir().absolutePath(); } m_sampleName = QFileInfo(m_fileName).baseName(); } MsRunId::MsRunId(const QString &file_name, const QString &run_id) : MsRunId(file_name) { m_runId = run_id; } MsRunId::MsRunId(const MsRunId &other) : m_fileName(other.m_fileName), m_runId(other.m_runId), m_xmlId(other.m_xmlId), m_sampleName(other.m_sampleName), m_mzFormat(other.m_mzFormat) { } MsRunId::~MsRunId() { } void MsRunId::setSampleName(const QString &name) { m_sampleName = name; } const QString & MsRunId::getSampleName() const { return m_sampleName; } void MsRunId::setFileName(const QString &file_name) { m_fileName = file_name; QFileInfo file_info(file_name); QString extension = file_info.suffix(); if(m_sampleName.isEmpty()) { // set sample name by default : m_sampleName = file_info.baseName(); } m_mzFormat = MzFormat::unknown; if(extension.toLower() == "mzxml") { m_mzFormat = MzFormat::mzXML; } else if(extension.toLower() == "mgf") { m_mzFormat = MzFormat::MGF; } else if(extension.toLower() == "mzml") { m_mzFormat = MzFormat::mzML; } } void MsRunId::setRunId(const QString &run_id) { m_runId = run_id; } const QString & MsRunId::getRunId() const { return m_runId; } void MsRunId::setXmlId(const QString &xml_id) { m_xmlId = xml_id; } const QString & MsRunId::getXmlId() const { return m_xmlId; } const QString & MsRunId::getFileName() const { return m_fileName; } void MsRunId::setMzFormat(MzFormat format) { m_mzFormat = format; } MzFormat MsRunId::getMzFormat() const { return m_mzFormat; } bool MsRunId::operator==(const MsRunId &other) const { if(m_xmlId == other.m_xmlId) return true; return false; } MsRunId & MsRunId::operator=(const MsRunId &other) { m_xmlId = other.m_xmlId; m_fileName = other.m_fileName; m_sampleName = other.m_sampleName; m_mzFormat = other.m_mzFormat; return *this; } QString MsRunId::toString() const { QString text = QString( "file name: '%1'\n" "run id: '%2'\n" "xml id: '%3'\n" "sample name: '%4'\n") .arg(m_fileName) .arg(m_runId) .arg(m_xmlId) .arg(m_sampleName); return text; } bool MsRunId::isValid() const { return !m_fileName.isEmpty() && !m_runId.isEmpty() && !m_xmlId.isEmpty() && m_mzFormat != MzFormat::unknown; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrunid.h000644 001750 001750 00000005553 14401377416 023707 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once /////////////////////// StdLib includes #include /////////////////////// Qt includes #include #include /////////////////////// Local includes #include "../types.h" #include "../exportinmportconfig.h" namespace pappso { class MsRunId; typedef std::shared_ptr MsRunIdSPtr; typedef std::shared_ptr MsRunIdCstSPtr; /** @brief MS run identity * MsRunId identifies an MS run with a unique ID (XmlId) * and contains eventually informations on its location (local disk path or URL) */ class PMSPP_LIB_DECL MsRunId { public: MsRunId(); MsRunId(const QString &file_name); MsRunId(const QString &file_name, const QString &run_id); MsRunId(const MsRunId &other); virtual ~MsRunId(); bool operator==(const MsRunId &other) const; MsRunId &operator=(const MsRunId &other); void setFileName(const QString &file_name); const QString &getFileName() const; void setRunId(const QString &run_id); const QString &getRunId() const; /** @brief set an XML unique identifier for this MsRunId * @param xml_id this id must respect XML constraints (no space characters) */ void setXmlId(const QString &xml_id); const QString &getXmlId() const; /** @brief set a sample name for this MsRunId */ void setSampleName(const QString &name); const QString &getSampleName() const; void setMzFormat(MzFormat format); MzFormat getMzFormat() const; QString toString() const; bool isValid() const; private: QString m_fileName = "NOT_SET"; QString m_runId; QString m_xmlId; /* a1.... */ QString m_sampleName; MzFormat m_mzFormat = MzFormat::mzXML; }; } // namespace pappso Q_DECLARE_METATYPE(pappso::MsRunId); extern int msRunIdMetaTypeId; Q_DECLARE_METATYPE(pappso::MsRunIdCstSPtr); extern int msRunIdCstSPtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/msrun/msrunreadconfig.cpp000644 001750 001750 00000017363 14531131644 025744 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2023 Filippo Rusconi *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "msrunreadconfig.h" #include namespace pappso { MsRunReadConfig::MsRunReadConfig() { // Set these two levels to true by default. m_msLevels[1] = true; m_msLevels[2] = true; } MsRunReadConfig::MsRunReadConfig(const MsRunReadConfig &other) : m_retentionTimeStartSeconds(other.m_retentionTimeStartSeconds), m_retentionTimeEndSeconds(other.m_retentionTimeEndSeconds), m_paramsMap(other.m_paramsMap) { for(std::size_t index = 0; index < MAX_MS_LEVELS; ++index) m_msLevels[index] = other.m_msLevels[index]; } MsRunReadConfig::~MsRunReadConfig() { } MsRunReadConfig & MsRunReadConfig::operator=(const MsRunReadConfig &other) { if(&other == this) return *this; m_retentionTimeStartSeconds = other.m_retentionTimeStartSeconds; m_retentionTimeEndSeconds = other.m_retentionTimeEndSeconds; m_paramsMap = other.m_paramsMap; for(std::size_t index = 0; index < MAX_MS_LEVELS; ++index) m_msLevels[index] = other.m_msLevels[index]; return *this; } void MsRunReadConfig::setRetentionTimeStartInSeconds( double retention_time_start_in_seconds) { m_retentionTimeStartSeconds = retention_time_start_in_seconds; } double MsRunReadConfig::getRetentionTimeStartInSeconds() const { return m_retentionTimeStartSeconds; } void MsRunReadConfig::setRetentionTimeEndInSeconds( double retention_time_end_in_seconds) { m_retentionTimeEndSeconds = retention_time_end_in_seconds; } double MsRunReadConfig::getRetentionTimeEndInSeconds() const { return m_retentionTimeEndSeconds; } void MsRunReadConfig::setMsLevels(std::vector ms_levels) { // First reset all the levels to false, this time, since we'll fill the array // with explicit values. for(std::size_t index = 0; index < MAX_MS_LEVELS; ++index) m_msLevels[index] = false; // And now actually fill with true values the proper array cells. for(auto ms_level : ms_levels) { if(ms_level >= MAX_MS_LEVELS) { qDebug() << "The passed vector of MS levels holds a value that is " "not correct:" << ms_level << ": skipping it."; continue; } m_msLevels[ms_level] = true; } } const bool * MsRunReadConfig::getMsLevels(void) const { return m_msLevels; } QString MsRunReadConfig::getMsLevelsAsString() const { QString text = ""; for(std::size_t index = 0; index < MAX_MS_LEVELS; ++index) { if(m_msLevels[index] == true) text += QString("%1 ").arg(index); } return text; } bool MsRunReadConfig::acceptMsLevel(std::size_t ms_level) const { if(ms_level >= MAX_MS_LEVELS) return false; return m_msLevels[ms_level]; } bool MsRunReadConfig::acceptRetentionTimeInSeconds( double retention_time_in_seconds) const { qDebug() << "Requested retention_time_in_seconds:" << retention_time_in_seconds; // Whatever the member datum below, if it is equal to -1 // then that means that RT is not a selection criterion. if(m_retentionTimeStartSeconds == -1 || m_retentionTimeEndSeconds == -1) { return true; } // We use inclusive RT ranges. if(retention_time_in_seconds >= m_retentionTimeStartSeconds) { if(retention_time_in_seconds <= m_retentionTimeEndSeconds) { return true; } } return false; } bool MsRunReadConfig::needPeakList() const { return m_isPeakListNeeded; } void MsRunReadConfig::setNeedPeakList(bool need_peak_list) { m_isPeakListNeeded = need_peak_list; } void MsRunReadConfig::setParameterValue(pappso::MsRunReadConfigParameter parameter, const QVariant &value) { auto ret = m_paramsMap.insert( std::pair(parameter, value)); if(ret.second == false) { ret.first->second = value; } } const QVariant MsRunReadConfig::getParameterValue( pappso::MsRunReadConfigParameter parameter) const { auto it = m_paramsMap.find(parameter); if(it == m_paramsMap.end()) { return QVariant(); } else { return it->second; } } void MsRunReadConfig::reset() { m_retentionTimeStartSeconds = -1; m_retentionTimeEndSeconds = -1; m_isPeakListNeeded = true; for(std::size_t index = 0; index < MAX_MS_LEVELS; ++index) { m_msLevels[index] = false; } // Set these two levels to true by default. m_msLevels[1] = true; m_msLevels[2] = true; m_paramsMap.clear(); } QString MsRunReadConfig::toString() const { QString text = QString("MsRunReadConfig\n: RT start: %1, RT end: %2\n") .arg(m_retentionTimeStartSeconds) .arg(m_retentionTimeEndSeconds); text += "MS level(s): "; for(std::size_t index = 0; index < MAX_MS_LEVELS; ++index) { if(m_msLevels[index] == true) text += QString("%1 ").arg(index); } text += " \n"; if(!getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mobility_index_begin) .isNull()) { text += QString("Mobility index range: [%1-%2]\n") .arg(getParameterValue(MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_index_begin) .toUInt()) .arg(getParameterValue(MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_index_end) .toUInt()); } if(!getParameterValue(MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_one_over_k0_begin) .isNull()) { text += QString("Mobility 1/K0 range: [%1-%2]\n") .arg(getParameterValue( MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_one_over_k0_begin) .toDouble()) .arg(getParameterValue( MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_one_over_k0_end) .toDouble()); } if(!getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_begin) .isNull()) { text += QString("m/z range: [%1-%2]\n") .arg(getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_begin) .toDouble()) .arg(getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_end) .toDouble()); } if(!getParameterValue( MsRunReadConfigParameter::TimsFramesMsRunReader_mz_index_merge_window) .isNull()) { text += QString("m/z merge window %1\n") .arg(getParameterValue(MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window) .toUInt()); } return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrunreadconfig.h000644 001750 001750 00000006216 14515003373 025403 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2023 Filippo Rusconi *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include "../exportinmportconfig.h" namespace pappso { /** \def MsRunReadConfigParameters specific parameters for MsRunReadConfig * */ enum class MsRunReadConfigParameter { TimsFramesMsRunReader_mobility_index_begin, TimsFramesMsRunReader_mobility_index_end, TimsFramesMsRunReader_mobility_one_over_k0_begin, TimsFramesMsRunReader_mobility_one_over_k0_end, TimsFramesMsRunReader_mz_begin, TimsFramesMsRunReader_mz_end, TimsFramesMsRunReader_mz_index_merge_window, }; // It is generally admitted that 11 is the max MS levels // reachable using a Paul trap... constexpr std::size_t MAX_MS_LEVELS = 12; class PMSPP_LIB_DECL MsRunReadConfig { public: MsRunReadConfig(); MsRunReadConfig(const MsRunReadConfig &other); ~MsRunReadConfig(); MsRunReadConfig &operator=(const MsRunReadConfig &other); void setRetentionTimeStartInSeconds(double retention_time_start_in_seconds); double getRetentionTimeStartInSeconds() const; void setRetentionTimeEndInSeconds(double retention_time_end_in_seconds); double getRetentionTimeEndInSeconds() const; void setMsLevels(std::vector ms_levels); const bool *getMsLevels() const; QString getMsLevelsAsString() const; void setNeedPeakList(bool need_peak_list); bool needPeakList() const; void setParameterValue(MsRunReadConfigParameter parameter, const QVariant &value); const QVariant getParameterValue(MsRunReadConfigParameter parameter) const; void reset(); QString toString() const; bool acceptMsLevel(std::size_t ms_level) const; bool acceptRetentionTimeInSeconds(double retention_time_in_seconds) const; private: double m_retentionTimeStartSeconds = -1; double m_retentionTimeEndSeconds = -1; bool m_isPeakListNeeded = true; // Initialize the ms levels to false. // Each index in the array contains a bool value indicating, if true, a // requested MS level. bool m_msLevels[MAX_MS_LEVELS] = {false}; // Fixme: maybe we should initialize in the constructor the MS level 1 to // true? //! map containing any parameter value std::map m_paramsMap; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrunreader.cpp000644 001750 001750 00000010460 14526455546 025112 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/msrunreader.cpp * \date 29/05/2018 * \author Olivier Langella * \brief base interface to read MSrun files */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include #include #include "msrunreader.h" #include "../../pappsomspp/exception/exceptionnotfound.h" int msRunReaderSPtrMetaTypeId = qRegisterMetaType("pappso::MsRunReaderSPtr"); namespace pappso { MsRunReader::MsRunReader(MsRunIdCstSPtr &ms_run_id) : mcsp_msRunId(ms_run_id) { } MsRunReader::MsRunReader(const MsRunReader &other) : mcsp_msRunId(other.mcsp_msRunId) { mpa_multiMapScanNumber = nullptr; m_isMonoThread = other.m_isMonoThread; } const MsRunIdCstSPtr & MsRunReader::getMsRunId() const { return mcsp_msRunId; } MsRunReader::~MsRunReader() { if(mpa_multiMapScanNumber == nullptr) delete mpa_multiMapScanNumber; } void MsRunReader::setMonoThread(bool is_mono_thread) { m_isMonoThread = is_mono_thread; } bool MsRunReader::isMonoThread() const { return m_isMonoThread; } std::size_t MsRunReader::scanNumber2SpectrumIndex(std::size_t scan_number) { qDebug() << " " << mpa_multiMapScanNumber; if(mpa_multiMapScanNumber == nullptr) { mpa_multiMapScanNumber = new MsRunReaderScanNumberMultiMap(); readSpectrumCollection(*mpa_multiMapScanNumber); } try { return mpa_multiMapScanNumber->getSpectrumIndexFromScanNumber( scan_number); } catch(ExceptionNotFound &error) { throw ExceptionNotFound(QObject::tr("error reading file %1 : %2") .arg(mcsp_msRunId.get()->getFileName()) .arg(error.qwhat())); } catch(PappsoException &error) { throw PappsoException(QObject::tr("error reading file %1 : %2") .arg(mcsp_msRunId.get()->getFileName()) .arg(error.qwhat())); } } bool MsRunReader::hasScanNumbers() const { return false; } std::vector MsRunReader::getRetentionTimeLine() { qDebug(); try { MsRunReaderRetentionTimeLine reader_timeline; readSpectrumCollectionByMsLevel(reader_timeline, 1); return reader_timeline.getRetentionTimeLine(); } catch(ExceptionNotFound &error) { throw ExceptionNotFound(QObject::tr("error reading file %1 : %2") .arg(mcsp_msRunId.get()->getFileName()) .arg(error.qwhat())); } catch(PappsoException &error) { throw PappsoException(QObject::tr("error reading file %1 : %2") .arg(mcsp_msRunId.get()->getFileName()) .arg(error.qwhat())); } } Trace MsRunReader::getTicChromatogram() { qDebug(); try { MsRunReaderTicChromatogram ms_run_reader; readSpectrumCollection(ms_run_reader); return ms_run_reader.getTicChromatogram(); } catch(ExceptionNotFound &error) { throw ExceptionNotFound(QObject::tr("error reading file %1 : %2") .arg(mcsp_msRunId.get()->getFileName()) .arg(error.qwhat())); } catch(PappsoException &error) { throw PappsoException(QObject::tr("error reading file %1 : %2") .arg(mcsp_msRunId.get()->getFileName()) .arg(error.qwhat())); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/msrunreader.h000644 001750 001750 00000013600 14454021422 024534 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/msrunreader.h * \date 29/05/2018 * \author Olivier Langella * \brief base interface to read MSrun files */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include /////////////////////// pappsomspp includes #include "../trace/maptrace.h" /////////////////////// Local includes #include "spectrumcollectionhandlerinterface.h" #include "msrunreadconfig.h" #include "msrunid.h" #include "../massspectrum/qualifiedmassspectrum.h" #include "../msfile/msfilereader.h" #include "../exportinmportconfig.h" #include "xiccoord/xiccoord.h" namespace pappso { class PMSPP_LIB_DECL MsRunReader; typedef std::shared_ptr MsRunReaderSPtr; typedef std::shared_ptr MsRunReaderCstSPtr; /** @brief base class to read MSrun * the only way to build a MsRunReader object is to use the MsRunReaderFactory */ class PMSPP_LIB_DECL MsRunReader { friend class MsFileAccessor; public: MsRunReader(MsRunIdCstSPtr &ms_run_id); MsRunReader(const MsRunReader &other); virtual ~MsRunReader(); const MsRunIdCstSPtr &getMsRunId() const; /** @brief get a MassSpectrumSPtr class given its spectrum index */ virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) = 0; virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) = 0; /** @brief get a QualifiedMassSpectrum class given its scan number */ virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data = true) const = 0; /** @brief get a xic coordinate object from a given spectrum index */ virtual XicCoordSPtr newXicCoordSPtrFromSpectrumIndex(std::size_t spectrum_index, PrecisionPtr precision) const = 0; /** @brief get a xic coordinate object from a given spectrum */ virtual XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum( const QualifiedMassSpectrum &mass_spectrum, PrecisionPtr precision) const = 0; /** @brief get the totat number of spectrum conained in the MSrun data file */ virtual std::size_t spectrumListSize() const = 0; /** @brief function to visit an MsRunReader and get each Spectrum in a * spectrum collection handler */ virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) = 0; virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) = 0; /** @brief function to visit an MsRunReader and get each Spectrum in a * spectrum collection handler by Ms Levels */ virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) = 0; /** @brief if possible, converts a scan number into a spectrum index * This is a convenient function to help transition from the old scan number * (not implemented by all vendors) to more secure spectrum index (not vendor * dependant). * It is better to not rely on this function. */ virtual std::size_t scanNumber2SpectrumIndex(std::size_t scan_number); /** @brief tells if spectra can be accessed using scan numbers * by default, it returns false. Only overrided functions can check if scan * numbers are available in the current file */ virtual bool hasScanNumbers() const; /** @brief release data back end device * if a the data back end is released, the developper has to use acquireDevice * before using the msrunreader object * @return bool true if done */ virtual bool releaseDevice() = 0; /** @brief acquire data back end device * @return bool true if done */ virtual bool acquireDevice() = 0; /** @brief retention timeline * get retention times along the MSrun in seconds * @return vector of retention times (seconds) */ virtual std::vector getRetentionTimeLine(); /** @brief get a TIC chromatogram * * for each retention time, computes the sum of all intensities. * For IM-MS, combines the mobility spectra * * Note that, formally, a TIC chromatogram is computed only for MS1 spectra. * * @return a trace (x=rt, y=intensities) */ virtual Trace getTicChromatogram(); /** @brief set only one is_mono_thread to true * * this avoid to use qtconcurrent */ void setMonoThread(bool is_mono_thread); bool isMonoThread() const; protected: MsRunIdCstSPtr mcsp_msRunId; MsRunReaderScanNumberMultiMap *mpa_multiMapScanNumber = nullptr; virtual void initialize() = 0; /** @brief tells if the reader is able to handle this file * must be implemented by private MS run reader, specific of one or more file * format */ virtual bool accept(const QString &file_name) const = 0; private: bool m_isMonoThread = false; }; } // namespace pappso Q_DECLARE_METATYPE(pappso::MsRunReaderSPtr); extern int msRunReaderSPtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/msrun/spectrumcollectionhandlerinterface.cpp000644 001750 001750 00000016770 14531420661 031714 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/msrunreader.cpp * \date 29/05/2018 * \author Olivier Langella * \brief base interface to read MSrun files */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include #include #include "../../pappsomspp/exception/exceptionnotfound.h" #include "spectrumcollectionhandlerinterface.h" namespace pappso { bool SpectrumCollectionHandlerInterface::shouldStop() { return false; } void SpectrumCollectionHandlerInterface::loadingEnded() { } void SpectrumCollectionHandlerInterface::spectrumListHasSize( [[maybe_unused]] std::size_t size) { } void SpectrumCollectionHandlerInterface::setReadAhead(bool is_read_ahead) { m_isReadAhead = is_read_ahead; } bool SpectrumCollectionHandlerInterface::isReadAhead() const { return m_isReadAhead; } bool SpectrumCollectionHandlerInterface::needMsLevelPeakList( unsigned int ms_level) const { if(needPeakList() == true) { if(ms_level < m_needPeakListByMsLevel.size()) { return m_needPeakListByMsLevel[ms_level]; } else return true; } else { return false; } } void SpectrumCollectionHandlerInterface::setNeedMsLevelPeakList( unsigned int ms_level, bool want_peak_list) { if(ms_level < m_needPeakListByMsLevel.size()) { m_needPeakListByMsLevel[ms_level] = want_peak_list; } } bool MsRunSimpleStatistics::needPeakList() const { return false; } void MsRunSimpleStatistics::loadingEnded() { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "The data loading process ended."; } void MsRunSimpleStatistics::setQualifiedMassSpectrum( const QualifiedMassSpectrum &qspectrum) { // The vector[0] contains the number of spectra at MS // The vector[1] contains the number of spectra at MS^2 // The vector[2] contains the number of spectra at MS^3 // ... unsigned int ms_level = qspectrum.getMsLevel(); if(ms_level == 0) return; if(ms_level > m_countMsLevelSpectrum.size()) { m_countMsLevelSpectrum.resize(ms_level); } m_countMsLevelSpectrum[ms_level - 1]++; } unsigned long MsRunSimpleStatistics::getMsLevelCount(unsigned int ms_level) const { if(ms_level == 0) return 0; if(ms_level > m_countMsLevelSpectrum.size()) return 0; return (m_countMsLevelSpectrum[ms_level - 1]); } unsigned long MsRunSimpleStatistics::getTotalCount() const { unsigned long total = 0; for(unsigned long count : m_countMsLevelSpectrum) { total += count; } return total; } MsRunReaderScanNumberMultiMap::MsRunReaderScanNumberMultiMap() { // qDebug(); } MsRunReaderScanNumberMultiMap::~MsRunReaderScanNumberMultiMap() { // qDebug(); } bool MsRunReaderScanNumberMultiMap::needPeakList() const { return false; } void MsRunReaderScanNumberMultiMap::setQualifiedMassSpectrum( const QualifiedMassSpectrum &qspectrum) { qDebug() << " " << qspectrum.getMassSpectrumId().getNativeId(); QStringList native_id_list = qspectrum.getMassSpectrumId().getNativeId().split("="); if(native_id_list.size() < 2) { return; } else { std::size_t scan_number = native_id_list.back().toULong(); m_mmap_scan2index.insert(std::pair( scan_number, qspectrum.getMassSpectrumId().getSpectrumIndex())); qDebug() << "scan number " << scan_number << "=>" << qspectrum.getMassSpectrumId().getSpectrumIndex(); } } std::size_t MsRunReaderScanNumberMultiMap::getSpectrumIndexFromScanNumber( std::size_t scan_number) const { qDebug() << m_mmap_scan2index.size(); auto it = m_mmap_scan2index.find(scan_number); if(it == m_mmap_scan2index.end()) { throw ExceptionNotFound( QObject::tr("scan number %1 not found").arg(scan_number)); } std::size_t index = it->second; it++; if((it != m_mmap_scan2index.end()) && (it->first == scan_number)) { throw PappsoException( QObject::tr("scan number %1 found multiple times").arg(scan_number)); } return index; } MsRunReaderRetentionTimeLine::MsRunReaderRetentionTimeLine() { // qDebug(); } MsRunReaderRetentionTimeLine::~MsRunReaderRetentionTimeLine() { // qDebug(); } bool MsRunReaderRetentionTimeLine::needPeakList() const { return false; } void MsRunReaderRetentionTimeLine::setQualifiedMassSpectrum( const QualifiedMassSpectrum &qspectrum) { qDebug() << " " << qspectrum.getMassSpectrumId().getNativeId(); m_retention_time_list.push_back(qspectrum.getRtInSeconds()); } const std::vector & MsRunReaderRetentionTimeLine::getRetentionTimeLine() const { return m_retention_time_list; } MsRunReaderTicChromatogram::MsRunReaderTicChromatogram() { } MsRunReaderTicChromatogram::~MsRunReaderTicChromatogram() { } bool MsRunReaderTicChromatogram::needPeakList() const { return true; } void MsRunReaderTicChromatogram::setQualifiedMassSpectrum( const QualifiedMassSpectrum &qualified_mass_spectrum) { // In this specialized reader we want to compute the total ion current // chromatogram that plot the sum of all the ion intensities in the spectra as // a function of the retention time. uint spectrum_ms_level = qualified_mass_spectrum.getMsLevel(); if(spectrum_ms_level != 1) return; double sumY = qualified_mass_spectrum.getMassSpectrumSPtr()->sumY(); if(!sumY) return; double rt = qualified_mass_spectrum.getRtInMinutes(); using Pair = std::pair; using Map = std::map; using Iterator = Map::iterator; std::pair res = m_ticChromMapTrace.insert(Pair(rt, sumY)); if(!res.second) { // One other same rt value was seen already (like in ion mobility mass // spectrometry, for example). Only increment the y value. res.first->second += sumY; } } Trace MsRunReaderTicChromatogram::getTicChromatogram() const { return m_ticChromMapTrace.toTrace(); } MsRunReaderQualifiedSpectrumList::MsRunReaderQualifiedSpectrumList() { } MsRunReaderQualifiedSpectrumList::~MsRunReaderQualifiedSpectrumList() { } bool MsRunReaderQualifiedSpectrumList::needPeakList() const { return true; } void MsRunReaderQualifiedSpectrumList::spectrumListHasSize(std::size_t size) { m_qualifiedSpectrumList.clear(); } void MsRunReaderQualifiedSpectrumList::setQualifiedMassSpectrum( const QualifiedMassSpectrum &qualified_mass_spectrum) { m_qualifiedSpectrumList.push_back(qualified_mass_spectrum); } const std::vector & MsRunReaderQualifiedSpectrumList::getQualifiedMassSpectrumList() const { return m_qualifiedSpectrumList; } void MsRunReaderQualifiedSpectrumList::clear() { m_qualifiedSpectrumList.clear(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/spectrumcollectionhandlerinterface.h000644 001750 001750 00000014215 14526227527 031363 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/msrun/msrunreader.h * \date 29/05/2018 * \author Olivier Langella * \brief base interface to read MSrun files */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include /////////////////////// pappsomspp includes #include "../trace/maptrace.h" /////////////////////// Local includes #include "msrunid.h" #include "../massspectrum/qualifiedmassspectrum.h" #include "../msfile/msfilereader.h" #include "../exportinmportconfig.h" #include "xiccoord/xiccoord.h" namespace pappso { /** @brief interface to collect spectrums from the MsRunReader class */ class PMSPP_LIB_DECL SpectrumCollectionHandlerInterface { public: virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) = 0; /** @brief tells if we need the peak list (if we want the binary data) for * each spectrum */ virtual bool needPeakList() const = 0; /** @brief tells if we need the peak list (if we want the binary data) for * each spectrum, given an MS level */ virtual bool needMsLevelPeakList(unsigned int ms_level) const final; /** @brief tells if we need the peak list given */ virtual void setNeedMsLevelPeakList(unsigned int ms_level, bool want_peak_list) final; virtual bool shouldStop(); virtual void loadingEnded(); virtual void spectrumListHasSize(std::size_t size); /** @brief use threads to read a spectrum by batch of batch_size * @param is_read_ahead boolean to use threads or not */ virtual void setReadAhead(bool is_read_ahead) final; /** @brief tells if we want to read ahead spectrum */ virtual bool isReadAhead() const; private: bool m_isReadAhead = false; std::vector m_needPeakListByMsLevel = {true, true, true, true, true, true, true, true, true, true, true, true, true, true, true}; }; /** @brief example of interface to count MS levels of all spectrum in an MSrun */ class PMSPP_LIB_DECL MsRunSimpleStatistics : public SpectrumCollectionHandlerInterface { private: std::vector m_countMsLevelSpectrum; public: virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override; virtual bool needPeakList() const override; virtual void loadingEnded() override; unsigned long getMsLevelCount(unsigned int ms_level) const; unsigned long getTotalCount() const; }; /** @brief provides a multimap to find quickly spectrum index from scan number */ class PMSPP_LIB_DECL MsRunReaderScanNumberMultiMap : public SpectrumCollectionHandlerInterface { private: std::multimap m_mmap_scan2index; public: MsRunReaderScanNumberMultiMap(); virtual ~MsRunReaderScanNumberMultiMap(); virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override; virtual bool needPeakList() const override; std::size_t getSpectrumIndexFromScanNumber(std::size_t scan_number) const; }; /** @brief collect retention times along MS run */ class PMSPP_LIB_DECL MsRunReaderRetentionTimeLine : public SpectrumCollectionHandlerInterface { private: std::vector m_retention_time_list; public: MsRunReaderRetentionTimeLine(); virtual ~MsRunReaderRetentionTimeLine(); virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override; virtual bool needPeakList() const override; const std::vector &getRetentionTimeLine() const; }; /** @brief calculate a TIC chromatogram */ class PMSPP_LIB_DECL MsRunReaderTicChromatogram : public SpectrumCollectionHandlerInterface { public: MsRunReaderTicChromatogram(); virtual ~MsRunReaderTicChromatogram(); virtual void setQualifiedMassSpectrum( const QualifiedMassSpectrum &qualified_mass_spectrum) override; virtual bool needPeakList() const override; Trace getTicChromatogram() const; private: MapTrace m_ticChromMapTrace; }; /** @brief store all qualified spectrum into a vector */ class PMSPP_LIB_DECL MsRunReaderQualifiedSpectrumList : public SpectrumCollectionHandlerInterface { public: MsRunReaderQualifiedSpectrumList(); virtual ~MsRunReaderQualifiedSpectrumList(); virtual void setQualifiedMassSpectrum( const QualifiedMassSpectrum &qualified_mass_spectrum) override; virtual bool needPeakList() const override; virtual void spectrumListHasSize(std::size_t size) override; const std::vector & getQualifiedMassSpectrumList() const; void clear(); private: std::vector m_qualifiedSpectrumList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/xymsrunreader.cpp000644 001750 001750 00000020713 14526455546 025475 0ustar00rusconirusconi000000 000000 /////////////////////// StdLib includes /////////////////////// Qt includes #include #include /////////////////////// libpwiz includes #include /////////////////////// Local includes #include "xymsrunreader.h" #include "../utils.h" #include "../pappsoexception.h" #include "../exception/exceptionnotfound.h" #include "../exception/exceptionnotpossible.h" #include "../exception/exceptionnotimplemented.h" namespace pappso { XyMsRunReader::XyMsRunReader(MsRunIdCstSPtr &msrun_id_csp) : pappso::MsRunReader(msrun_id_csp) { // Run the initialization function that checks that the file exists! initialize(); } void XyMsRunReader::initialize() { // qDebug(); if(!QFileInfo(mcsp_msRunId->getFileName()).exists()) throw ExceptionNotFound(QObject::tr("Xy MS file %1 not found\n") .arg(mcsp_msRunId->getFileName())); // qDebug(); } XyMsRunReader::~XyMsRunReader() { } bool XyMsRunReader::accept(const QString &file_name) const { // Here we just test all the lines of the file to check that they comply with // the xy format. std::size_t line_count = 0; QFile file(file_name); if(!file.open(QFile::ReadOnly | QFile::Text)) { qDebug() << __FILE__ << __LINE__ << "Failed to open file" << file_name; return false; } QRegularExpressionMatch regExpMatch; QString line; bool file_reading_failed = false; while(!file.atEnd()) { line = file.readLine(); ++line_count; if(line.startsWith('#') || line.isEmpty() || Utils::endOfLineRegExp.match(line).hasMatch()) continue; // qDebug() << __FILE__ << __LINE__ << "Current xy format line:" << line; if(Utils::xyMassDataFormatRegExp.match(line).hasMatch()) continue; else { file_reading_failed = true; break; } } file.close(); if(!file_reading_failed && line_count >= 1) return true; return false; } pappso::MassSpectrumSPtr XyMsRunReader::massSpectrumSPtr(std::size_t spectrum_index) { return qualifiedMassSpectrum(spectrum_index).getMassSpectrumSPtr(); } pappso::MassSpectrumCstSPtr XyMsRunReader::massSpectrumCstSPtr(std::size_t spectrum_index) { return qualifiedMassSpectrum(spectrum_index).getMassSpectrumCstSPtr(); } QualifiedMassSpectrum XyMsRunReader::qualifiedMassSpectrumFromXyMSDataFile( MassSpectrumId mass_spectrum_id) const { // qDebug(); // This is a file that contains a single spectrum. Just iterate in the various // lines and convert them to DataPoint objects that are fed to the mass // spectrum. QualifiedMassSpectrum qualified_mass_spectrum(mass_spectrum_id); // Set manually data that are necessary for the correct use of this mass // spectrum in the MS data set tree node. qualified_mass_spectrum.setMsLevel(1); qualified_mass_spectrum.setRtInSeconds(0); MassSpectrum mass_spectrum; QFile file(mcsp_msRunId->getFileName()); if(!file.exists()) { // qDebug() << "File" << mcsp_msRunId->getFileName() << "does not exist."; return qualified_mass_spectrum; } if(!file.open(QFile::ReadOnly | QFile::Text)) { // qDebug() << "Failed to open file" << mcsp_msRunId->getFileName(); return qualified_mass_spectrum; } QRegularExpressionMatch regExpMatch; QString line; while(!file.atEnd()) { line = file.readLine(); if(line.startsWith('#') || line.isEmpty() || Utils::endOfLineRegExp.match(line).hasMatch()) continue; if(Utils::xyMassDataFormatRegExp.match(line).hasMatch()) { pappso_double x = -1; pappso_double y = -1; QRegularExpressionMatch regExpMatch = Utils::xyMassDataFormatRegExp.match(line); if(!regExpMatch.hasMatch()) throw ExceptionNotPossible( QObject::tr("Failed to create data point with line %1.\n") .arg(line)); bool ok = false; x = regExpMatch.captured(1).toDouble(&ok); if(!ok) throw ExceptionNotPossible( QObject::tr("Failed to create data point with line %1.\n") .arg(line)); // Note that group 2 is the separator group. y = regExpMatch.captured(3).toDouble(&ok); if(!ok) throw ExceptionNotPossible( QObject::tr("Failed to create data point with line %1.\n") .arg(line)); DataPoint data_point(x, y); mass_spectrum.emplace_back(x, y); } } file.close(); MassSpectrumSPtr spectrum_sp = mass_spectrum.makeMassSpectrumSPtr(); qualified_mass_spectrum.setMassSpectrumSPtr(spectrum_sp); // qDebug() << "the qualified mass spectrum has size:" //<< qualified_mass_spectrum.getMassSpectrumSPtr()->size(); return qualified_mass_spectrum; } QualifiedMassSpectrum XyMsRunReader::qualifiedMassSpectrum( [[maybe_unused]] std::size_t spectrum_index, bool want_binary_data) const { // qDebug(); // In reality there is only one mass spectrum in the file, so we do not use // spectrum_index, but use 0 instead. MassSpectrumId massSpectrumId(mcsp_msRunId, 0); QualifiedMassSpectrum qualified_mass_spectrum = qualifiedMassSpectrumFromXyMSDataFile(massSpectrumId); // qDebug() << "qualified mass spectrum has size:" //<< qualified_mass_spectrum.getMassSpectrumSPtr()->size(); // We also do not abide by the want_binary_data parameter because in this XY // mass spec data file loading process we actually want the data. if(!want_binary_data) { // qualified_mass_spectrum.setMassSpectrumSPtr(nullptr); } return qualified_mass_spectrum; } void XyMsRunReader::readSpectrumCollection( SpectrumCollectionHandlerInterface &handler) { // qDebug(); // In reality there is only one mass spectrum in the file. MassSpectrumId massSpectrumId(mcsp_msRunId, 0 /* spectrum index*/); QualifiedMassSpectrum qualified_mass_spectrum = qualifiedMassSpectrumFromXyMSDataFile(massSpectrumId); // qDebug() << "qualified mass spectrum has size:" //<< qualified_mass_spectrum.getMassSpectrumSPtr()->size(); // The handler will receive the index of the mass spectrum in the // current run via the mass spectrum id member datum. handler.setQualifiedMassSpectrum(qualified_mass_spectrum); // qDebug() << "Loading ended"; handler.loadingEnded(); } void XyMsRunReader::readSpectrumCollectionByMsLevel( SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) { // qDebug(); // In reality there is only one mass spectrum in the file. MassSpectrumId massSpectrumId(mcsp_msRunId, 0 /* spectrum index*/); QualifiedMassSpectrum qualified_mass_spectrum = qualifiedMassSpectrumFromXyMSDataFile(massSpectrumId); // qDebug() << "qualified mass spectrum has size:" //<< qualified_mass_spectrum.getMassSpectrumSPtr()->size(); // The handler will receive the index of the mass spectrum in the // current run via the mass spectrum id member datum. if(qualified_mass_spectrum.getMsLevel() == ms_level) { handler.setQualifiedMassSpectrum(qualified_mass_spectrum); } // qDebug() << "Loading ended"; handler.loadingEnded(); } void XyMsRunReader::readSpectrumCollection2( [[maybe_unused]] const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) { return readSpectrumCollection(handler); } std::size_t XyMsRunReader::spectrumListSize() const { return 1; } bool XyMsRunReader::releaseDevice() { return true; } bool XyMsRunReader::acquireDevice() { return true; } XicCoordSPtr XyMsRunReader::newXicCoordSPtrFromSpectrumIndex(std::size_t spectrum_index [[maybe_unused]], pappso::PrecisionPtr precision [[maybe_unused]]) const { throw ExceptionNotImplemented(QObject::tr("Not implemented %1 %2 %3") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } XicCoordSPtr XyMsRunReader::newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum [[maybe_unused]], pappso::PrecisionPtr precision [[maybe_unused]]) const { throw ExceptionNotImplemented(QObject::tr("Not implemented %1 %2 %3") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/msrun/xymsrunreader.h000644 001750 001750 00000003266 14514537336 025141 0ustar00rusconirusconi000000 000000 #pragma once #include "../msfile/msfileaccessor.h" namespace pappso { class XyMsRunReader : public MsRunReader { friend class MsFileAccessor; public: XyMsRunReader(MsRunIdCstSPtr &msrun_id_csp); virtual ~XyMsRunReader(); virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override; virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override; virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data = true) const override; virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override; virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromSpectrumIndex( std::size_t spectrum_index, pappso::PrecisionPtr precision) const override; virtual pappso::XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum( const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override; virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override; virtual std::size_t spectrumListSize() const override; virtual bool releaseDevice() override; virtual bool acquireDevice() override; protected: QString m_fileName; virtual void initialize() override; virtual bool accept(const QString &file_name) const override; QualifiedMassSpectrum qualifiedMassSpectrumFromXyMSDataFile(MassSpectrumId mass_spectrum_id) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/000755 001750 001750 00000000000 14533473271 021462 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodsink.cpp000644 001750 001750 00000004221 14526455546 026262 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "filterobopsimodsink.h" #include "../exception/exceptionnotfound.h" namespace pappso { FilterOboPsiModSink::FilterOboPsiModSink() { } FilterOboPsiModSink::~FilterOboPsiModSink() { } const std::list & FilterOboPsiModSink::getOboPsiModTermList() { return m_oboPsiModTermList; } void FilterOboPsiModSink::setOboPsiModTerm(const OboPsiModTerm &term) { m_oboPsiModTermList.push_back(term); } const OboPsiModTerm & FilterOboPsiModSink::getOne() { if(m_oboPsiModTermList.size() == 1) { return *m_oboPsiModTermList.begin(); } if(m_oboPsiModTermList.size() == 0) { throw ExceptionNotFound(QObject::tr("OBO term list is empty")); } else { throw ExceptionNotFound( QObject::tr("Too much OBO terms in list (size = %1)") .arg(m_oboPsiModTermList.size())); } } const OboPsiModTerm & FilterOboPsiModSink::getFirst() { if(m_oboPsiModTermList.size() == 0) { throw ExceptionNotFound(QObject::tr("OBO term list is empty")); } else { return *m_oboPsiModTermList.begin(); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodsink.h000644 001750 001750 00000003171 14346367014 025722 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "obopsimod.h" namespace pappso { class PMSPP_LIB_DECL FilterOboPsiModSink : public OboPsiModHandlerInterface { private: std::list m_oboPsiModTermList; public: FilterOboPsiModSink(); virtual ~FilterOboPsiModSink(); void setOboPsiModTerm(const OboPsiModTerm &term) override; const OboPsiModTerm &getOne(); const OboPsiModTerm &getFirst(); unsigned int size() { return m_oboPsiModTermList.size(); }; const std::list &getOboPsiModTermList(); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermaccession.cpp000644 001750 001750 00000003311 14526455546 030154 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "filterobopsimodtermaccession.h" #include namespace pappso { FilterOboPsiModTermAccession::FilterOboPsiModTermAccession( OboPsiModHandlerInterface &sink, const QString &accession) : m_sink(sink) { m_accession = accession; } FilterOboPsiModTermAccession::~FilterOboPsiModTermAccession() { } void FilterOboPsiModTermAccession::setOboPsiModTerm(const OboPsiModTerm &term) { // qDebug() << "FilterOboPsiModTermAccession::setOboPsiModTerm term._accession // " << term._accession << " == _accession " << _accession; if(term.m_accession == m_accession) { m_sink.setOboPsiModTerm(term); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermaccession.h000644 001750 001750 00000003113 14514537336 027614 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "obopsimodhandlerinterface.h" #include "obopsimodterm.h" namespace pappso { class PMSPP_LIB_DECL FilterOboPsiModTermAccession : public OboPsiModHandlerInterface { private: QString m_accession; OboPsiModHandlerInterface &m_sink; public: FilterOboPsiModTermAccession(OboPsiModHandlerInterface &sink, const QString &accession); virtual ~FilterOboPsiModTermAccession(); void setOboPsiModTerm(const OboPsiModTerm &term) override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermdiffmono.cpp000644 001750 001750 00000003152 14526455546 030011 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "filterobopsimodtermdiffmono.h" namespace pappso { FilterOboPsiModTermDiffMono::FilterOboPsiModTermDiffMono( OboPsiModHandlerInterface &sink, const MzRange &mass_range) : m_massRange(mass_range), m_sink(sink) { } FilterOboPsiModTermDiffMono::~FilterOboPsiModTermDiffMono() { } void FilterOboPsiModTermDiffMono::setOboPsiModTerm(const OboPsiModTerm &term) { // qDebug() << term._psi_mod_label << " " << term._psi_ms_label; if(m_massRange.contains(term.m_diffMono)) { m_sink.setOboPsiModTerm(term); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermdiffmono.h000644 001750 001750 00000003145 14514537336 027453 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "obopsimodhandlerinterface.h" #include "obopsimodterm.h" #include "../mzrange.h" namespace pappso { class PMSPP_LIB_DECL FilterOboPsiModTermDiffMono : public OboPsiModHandlerInterface { private: const MzRange m_massRange; OboPsiModHandlerInterface &m_sink; public: FilterOboPsiModTermDiffMono(OboPsiModHandlerInterface &sink, const MzRange &mass_range); virtual ~FilterOboPsiModTermDiffMono(); void setOboPsiModTerm(const OboPsiModTerm &term) override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermlabel.cpp000644 001750 001750 00000003776 14526455546 027303 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "filterobopsimodtermlabel.h" namespace pappso { FilterOboPsiModTermLabel::FilterOboPsiModTermLabel( OboPsiModHandlerInterface &sink, const QString &label_search) : m_sink(sink) { m_labelMatch.setPattern(QString(label_search).replace("*", "(.*)")); m_labelMatch.setPatternOptions(QRegularExpression::CaseInsensitiveOption); } FilterOboPsiModTermLabel::~FilterOboPsiModTermLabel() { } FilterOboPsiModTermLabel::FilterOboPsiModTermLabel( const FilterOboPsiModTermLabel &other) : m_labelMatch(other.m_labelMatch), m_sink(other.m_sink) { } void FilterOboPsiModTermLabel::setOboPsiModTerm(const OboPsiModTerm &term) { // qDebug() << term._psi_mod_label << " " << term._psi_ms_label; if(m_labelMatch.match(term.m_psiModLabel).hasMatch()) { m_sink.setOboPsiModTerm(term); } else if(m_labelMatch.match(term.m_psiMsLabel).hasMatch()) { m_sink.setOboPsiModTerm(term); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermlabel.h000644 001750 001750 00000003137 14346367014 026727 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "obopsimod.h" namespace pappso { class PMSPP_LIB_DECL FilterOboPsiModTermLabel : public OboPsiModHandlerInterface { private: QRegularExpression m_labelMatch; OboPsiModHandlerInterface &m_sink; public: FilterOboPsiModTermLabel(OboPsiModHandlerInterface &sink, const QString &label_search); FilterOboPsiModTermLabel(const FilterOboPsiModTermLabel &other); virtual ~FilterOboPsiModTermLabel(); void setOboPsiModTerm(const OboPsiModTerm &term) override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermname.cpp000644 001750 001750 00000003320 14526455546 027125 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "filterobopsimodtermname.h" namespace pappso { FilterOboPsiModTermName::FilterOboPsiModTermName( OboPsiModHandlerInterface &sink, const QString &name_search) : m_sink(sink) { m_nameMatch.setPattern(QString(name_search).replace("*", "(.*)")); m_nameMatch.setPatternOptions(QRegularExpression::CaseInsensitiveOption); } FilterOboPsiModTermName::~FilterOboPsiModTermName() { } void FilterOboPsiModTermName::setOboPsiModTerm(const OboPsiModTerm &term) { // qDebug() << term._psi_mod_label << " " << term._psi_ms_label; if(m_nameMatch.match(term.m_name).hasMatch()) { m_sink.setOboPsiModTerm(term); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/filterobopsimodtermname.h000644 001750 001750 00000003100 14346367014 026556 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "obopsimodhandlerinterface.h" #include "obopsimodterm.h" namespace pappso { class PMSPP_LIB_DECL FilterOboPsiModTermName : public OboPsiModHandlerInterface { private: QRegularExpression m_nameMatch; OboPsiModHandlerInterface &m_sink; public: FilterOboPsiModTermName(OboPsiModHandlerInterface &sink, const QString &name_search); virtual ~FilterOboPsiModTermName(); void setOboPsiModTerm(const OboPsiModTerm &term) override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/obopsimod.cpp000644 001750 001750 00000005161 14526455546 024173 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include "obopsimod.h" #include "../pappsoexception.h" #include inline void initMyResource() { Q_INIT_RESOURCE(libpappsomsppresources); } namespace pappso { OboPsiMod::OboPsiMod(OboPsiModHandlerInterface &handler) : m_handler(handler) { qDebug(); initMyResource(); parse(); } OboPsiMod::~OboPsiMod() { } void OboPsiMod::parse() { // std::cout << "OboPsiMod::parse Begin parsing OBO file" << std::endl; qDebug() << "OboPsiMod::parse Begin parsing OBO file"; QFile obofile(":/resources/PSI-MOD.obo"); if(!obofile.exists()) { throw PappsoException( QObject::tr("PSI-MOD OBO resource file : %1 not found") .arg(obofile.fileName())); } obofile.open(QIODevice::ReadOnly); QTextStream p_in(&obofile); // Search accession conta // QTextStream in(p_in); QString line = p_in.readLine(); bool in_term = false; while(!p_in.atEnd()) { // qDebug() << "OboPsiMod::parse line "<< line; if(line.startsWith("[Term]")) { in_term = true; m_term.clearTerm(); } else if(line.isEmpty()) { if(in_term) { m_handler.setOboPsiModTerm(m_term); in_term = false; } } else { if(in_term) m_term.parseLine(line); // m_handler.setSequence(line); } line = p_in.readLine(); } if(in_term) { m_handler.setOboPsiModTerm(m_term); } // p_in->close(); obofile.close(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/obopsimod.h000644 001750 001750 00000003073 14346367014 023630 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../types.h" #include "../exportinmportconfig.h" #include "obopsimodterm.h" #include "obopsimodhandlerinterface.h" namespace pappso { class PMSPP_LIB_DECL OboPsiMod { public: OboPsiMod(OboPsiModHandlerInterface &handler); ~OboPsiMod(); private: OboPsiModTerm m_term; OboPsiModHandlerInterface &m_handler; /** @brief starts reading obo file and reports each term with the callback * function */ void parse(); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/obopsimodhandlerinterface.h000644 001750 001750 00000002514 14346367014 027046 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "obopsimodterm.h" namespace pappso { class OboPsiModHandlerInterface { public: /** @brief triggered function on each obo term when parsing obo file */ virtual void setOboPsiModTerm(const OboPsiModTerm &term) = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/obopsimodterm.cpp000644 001750 001750 00000016050 14531114113 025034 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "obopsimodterm.h" #include "../pappsoexception.h" int oboPsiModTermMetaTypeId = qRegisterMetaType("pappso::OboPsiModTerm"); inline void initMyResource() { Q_INIT_RESOURCE(libpappsomsppresources); } namespace pappso { QRegularExpression OboPsiModTerm::m_firstParse("^([a-z,A-Z,_]+):\\s(.*)$"); QRegularExpression OboPsiModTerm::m_findExactPsiModLabel( "^(.*)\\sEXACT\\sPSI-MOD-label\\s\\[\\]$"); // synonym: "Carbamidomethyl" RELATED PSI-MS-label [] QRegularExpression OboPsiModTerm::m_findRelatedPsiMsLabel( "^(.*)\\sRELATED\\sPSI-MS-label\\s\\[\\]$"); OboPsiModTerm::OboPsiModTerm() { } OboPsiModTerm::~OboPsiModTerm() { } OboPsiModTerm::OboPsiModTerm(const OboPsiModTerm &other) { m_accession = other.m_accession; m_name = other.m_name; m_definition = other.m_definition; m_psiModLabel = other.m_psiModLabel; m_psiMsLabel = other.m_psiMsLabel; m_diffFormula = other.m_diffFormula; m_formula = other.m_formula; m_origin = other.m_origin; m_diffMono = other.m_diffMono; m_massMono = other.m_massMono; m_isA = other.m_isA; } OboPsiModTerm & OboPsiModTerm::operator=(const OboPsiModTerm &other) { m_accession = other.m_accession; m_name = other.m_name; m_definition = other.m_definition; m_psiModLabel = other.m_psiModLabel; m_psiMsLabel = other.m_psiMsLabel; m_diffFormula = other.m_diffFormula; m_origin = other.m_origin; m_diffMono = other.m_diffMono; m_massMono = other.m_massMono; m_isA = other.m_isA; return *this; } bool OboPsiModTerm::isValid() const { return (!m_accession.isEmpty()); } bool OboPsiModTerm::isA(const QString &accession) const { return m_isA.contains(accession); } void OboPsiModTerm::parseLine(const QString &line) { // qDebug() << "OboPsiModTerm::parseLine begin " << line; // id: MOD:00007 // is_a: MOD:01441 ! natural, standard, encoded residue QRegularExpressionMatch match_line = m_firstParse.match(line); if(match_line.hasMatch()) { QStringList pline = match_line.capturedTexts(); // qDebug() << "OboPsiModTerm::parseLine match " << pline[0] << pline[1]; if(pline[1] == "id") { m_accession = pline[2].trimmed(); // qDebug() << "OboPsiModTerm::parseLine accession = " << m_accession; } else if(pline[1] == "name") { m_name = pline[2].trimmed(); // qDebug() << "OboPsiModTerm::parseLine accession = " << m_accession; } else if(pline[1] == "is_a") { m_isA << pline[2].section(" ", 0, 0); // qDebug() << "OboPsiModTerm::parseLine is_a = " << m_isA.join(" "); } else if(pline[1] == "xref") { // xref: DiffMono: "1.007276" QRegularExpressionMatch match_subline = m_firstParse.match(pline[2]); if(match_subline.hasMatch()) { QStringList psecond = match_subline.capturedTexts(); if(psecond[1] == "DiffMono") { m_diffMono = psecond[2].replace("\"", "").toDouble(); // qDebug() << "OboPsiModTerm::parseLine m_diffMono = " << // m_diffMono; } else if(psecond[1] == "DiffFormula") { m_diffFormula = psecond[2].trimmed().replace("\"", ""); // qDebug() << "OboPsiModTerm::parseLine m_diffFormula = |" << // m_diffFormula<<"|"; } else if(psecond[1] == "Formula") { m_formula = psecond[2].trimmed().replace("\"", ""); // qDebug() << "OboPsiModTerm::parseLine m_diffFormula = |" << // m_diffFormula<<"|"; } else if(psecond[1] == "Origin") { m_origin = psecond[2].trimmed().replace("\"", "").replace(",", ""); // qDebug() << "OboPsiModTerm::parseLine m_diffFormula = |" << // m_diffFormula<<"|"; } // xref: MassMono: "71.037114" else if(psecond[1] == "MassMono") { bool is_ok = false; double mass_mono = psecond[2].replace("\"", "").toDouble(&is_ok); if(is_ok) m_massMono = mass_mono; else m_massMono = 0; // qDebug() << "OboPsiModTerm::parseLine m_diffFormula = |" << // m_diffFormula<<"|"; } } } else if(pline[1] == "synonym") { // synonym: "Se(S)Res" EXACT PSI-MOD-label [] QRegularExpressionMatch match_exact_psimod = m_findExactPsiModLabel.match(pline[2]); if(match_exact_psimod.hasMatch()) { m_psiModLabel = match_exact_psimod.captured(1).trimmed().replace("\"", ""); // qDebug() << "OboPsiModTerm::parseLine m_psiModLabel = |" << // m_psiModLabel<<"|"; } else { QRegularExpressionMatch match_related_psims = m_findRelatedPsiMsLabel.match(pline[2]); if(match_related_psims.hasMatch()) { m_psiMsLabel = match_related_psims.captured(1).trimmed().replace("\"", ""); // qDebug() << "OboPsiModTerm::parseLine m_psiModLabel = |" << // m_psiModLabel<<"|"; } } } else if(pline[1] == "def") { // def: "A protein modification that modifies an L-asparagine // residue." [PubMed:18688235] m_definition = pline[2]; } } } void OboPsiModTerm::clearTerm() { m_accession = ""; m_name = ""; m_definition = ""; m_psiModLabel = ""; m_diffFormula = ""; m_diffMono = 0; m_origin = ""; m_massMono = 0; m_isA.clear(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/obo/obopsimodterm.h000644 001750 001750 00000003704 14531114113 024503 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "../exportinmportconfig.h" namespace pappso { class OboPsiMod; class PMSPP_LIB_DECL OboPsiModTerm { friend OboPsiMod; public: OboPsiModTerm(); ~OboPsiModTerm(); OboPsiModTerm(const OboPsiModTerm &); OboPsiModTerm &operator=(const OboPsiModTerm &); bool isValid() const; /** @brief tells if this term "is_a" another accession * @return bool if true */ bool isA(const QString &accession) const; public: QString m_accession; QString m_name; QString m_definition; QString m_psiModLabel; QString m_psiMsLabel; QString m_diffFormula; QString m_formula; QString m_origin; double m_diffMono; double m_massMono; QStringList m_isA; private: void parseLine(const QString &line); void clearTerm(); static QRegularExpression m_firstParse; static QRegularExpression m_findExactPsiModLabel; static QRegularExpression m_findRelatedPsiMsLabel; }; } // namespace pappso extern int oboPsiModTermMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/peptide/000755 001750 001750 00000000000 14533473271 022335 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/peptide/ion.cpp000644 001750 001750 00000002744 14526455546 023644 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/ion.cpp * \date 10/3/2015 * \author Olivier Langella * \brief ion interface */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "ion.h" #include "../pappsoexception.h" namespace pappso { Ion::Ion() { } Ion::~Ion() { } pappso_double Ion::getMz(unsigned int charge) const { if(charge == 0) { throw PappsoException("charge == 0"); } return ((getMass() + (MHPLUS * charge)) / charge); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/ion.h000644 001750 001750 00000002713 14346367014 023275 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/ion.h * \date 10/3/2015 * \author Olivier Langella * \brief ion interface */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../types.h" #include "../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL Ion { public: Ion(); ~Ion(); virtual pappso_double getMass() const = 0; virtual pappso_double getMz(unsigned int charge) const final; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidefragment.cpp000644 001750 001750 00000013267 14526455546 026237 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidefragment.h * \date 10/3/2015 * \author Olivier Langella * \brief peptide fragment model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidefragment.h" #include "../pappsoexception.h" namespace pappso { PeptideFragment::PeptideFragment(const PeptideSp &sp_peptide, PeptideDirection direction, unsigned int size) : msp_peptide(sp_peptide), m_direction(direction), m_size(size) { if(m_direction == PeptideDirection::Nter) { std::vector::const_iterator it(msp_peptide.get()->begin()); std::vector::const_iterator end(msp_peptide.get()->end()); unsigned int i = 0; while(i < m_size) { m_mass += it->getMass(); it++; i++; } m_nterCterCleavage = AaModification::getInstance("internal:Cter_hydrolytic_cleavage_HO"); } else { std::vector::const_reverse_iterator it(msp_peptide.get()->rbegin()); std::vector::const_reverse_iterator end(msp_peptide.get()->rend()); unsigned int i = 0; while(i < m_size) { m_mass += it->getMass(); it++; i++; } m_nterCterCleavage = AaModification::getInstance("internal:Nter_hydrolytic_cleavage_H"); } m_mass += m_nterCterCleavage->getMass(); } PeptideFragment::PeptideFragment(const PeptideFragment &other) : msp_peptide(other.msp_peptide), m_direction(other.m_direction), m_size(other.m_size) { m_mass = other.m_mass; } PeptideFragment::PeptideFragment(PeptideFragment &&toCopy) // move constructor : msp_peptide(std::move(toCopy.msp_peptide)), m_direction(toCopy.m_direction), m_size(toCopy.m_size), m_mass(toCopy.m_mass) { } PeptideFragment::~PeptideFragment() { } const QString PeptideFragment::getPeptideIonDirectionName(PeptideDirection direction) { switch(direction) { case PeptideDirection::Cter: return "Cter"; break; case PeptideDirection::Nter: return "Nter"; break; default: throw PappsoException(QString("direction name not implemented")); break; } } const QString PeptideFragment::getSequence() const { QString sequence = msp_peptide.get()->getSequence(); int diffSize = msp_peptide.get()->size() - m_size; if(m_direction == PeptideDirection::Nter) { sequence = sequence.mid(0, m_size); } else { sequence = sequence.mid(diffSize, m_size); } return sequence; } int PeptideFragment::getNumberOfAtom(AtomIsotopeSurvey atom) const { int number = 0; if(m_direction == PeptideDirection::Nter) { std::vector::const_iterator it(msp_peptide.get()->begin()); std::vector::const_iterator end(msp_peptide.get()->end()); unsigned int i = 0; while(i < m_size) { number += it->getNumberOfAtom(atom); it++; i++; } } else { std::vector::const_reverse_iterator it(msp_peptide.get()->rbegin()); std::vector::const_reverse_iterator end(msp_peptide.get()->rend()); unsigned int i = 0; while(i < m_size) { number += it->getNumberOfAtom(atom); it++; i++; } } number += m_nterCterCleavage->getNumberOfAtom(atom); // qDebug() << "Aa::getMass() end " << mass; return number; } int PeptideFragment::getNumberOfIsotope(Isotope isotope) const { int number = 0; if(m_direction == PeptideDirection::Nter) { std::vector::const_iterator it(msp_peptide.get()->begin()); std::vector::const_iterator end(msp_peptide.get()->end()); unsigned int i = 0; while(i < m_size) { number += it->getNumberOfIsotope(isotope); it++; i++; } } else { std::vector::const_reverse_iterator it(msp_peptide.get()->rbegin()); std::vector::const_reverse_iterator end(msp_peptide.get()->rend()); unsigned int i = 0; while(i < m_size) { number += it->getNumberOfIsotope(isotope); it++; i++; } } // number += m_nterCterCleavage->getNumberOfIsotope(atom); // qDebug() << "Aa::getMass() end " << mass; return number; } const PeptideSp & PeptideFragment::getPeptideSp() const { return msp_peptide; }; unsigned int PeptideFragment::size() const { return m_size; } pappso_double PeptideFragment::getMass() const { return m_mass; } PeptideDirection PeptideFragment::getPeptideIonDirection() const { return m_direction; } bool PeptideFragment::isPalindrome() const { return msp_peptide.get()->isPalindrome(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidefragment.h000644 001750 001750 00000005052 14346367014 025665 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidefragment.h * \date 10/3/2015 * \author Olivier Langella * \brief peptide fragment model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "peptide.h" #include "../pappsoexception.h" #include "../exportinmportconfig.h" namespace pappso { class PeptideFragment; typedef std::shared_ptr PeptideFragmentSp; class PMSPP_LIB_DECL PeptideFragment : public PeptideInterface { public: PeptideFragment(const PeptideSp &sp_peptide, PeptideDirection direction, unsigned int size); PeptideFragment(const PeptideFragment &other); PeptideFragment(PeptideFragment &&toCopy); // move constructor virtual ~PeptideFragment(); virtual const PeptideSp &getPeptideSp() const; virtual unsigned int size() const override; virtual const QString getSequence() const override; virtual pappso_double getMass() const override; static const QString getPeptideIonDirectionName(PeptideDirection direction); PeptideDirection getPeptideIonDirection() const; virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override; virtual int getNumberOfIsotope(Isotope isotope) const override; virtual bool isPalindrome() const override; private: const PeptideSp msp_peptide; const PeptideDirection m_direction; const unsigned int m_size = 0; // the aa modification to add on Nter or Cter aa (depending on peptide // direction) AaModificationP m_nterCterCleavage; pappso_double m_mass = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidefragmention.cpp000644 001750 001750 00000040076 14526455546 026743 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidefragmention.cpp * \date 10/3/2015 * \author Olivier Langella * \brief peptide ion model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "peptidefragmention.h" #include "../pappsoexception.h" #include "peptidenaturalisotopelist.h" #include "peptiderawfragmentmasses.h" namespace pappso { PeptideFragmentIon::PeptideFragmentIon(const PeptideFragmentSp &sp_fragment, PeptideIon ion_type) : PeptideFragmentIon(sp_fragment, ion_type, 0) { } PeptideFragmentIon::PeptideFragmentIon( const PeptideFragmentSp &sp_fragment, PeptideIon ion_type, unsigned int number_of_neutral_phospho_loss) : msp_fragment(sp_fragment), m_ionType(ion_type) { m_mass = msp_fragment.get()->getMass(); PeptideDirection direction = msp_fragment.get()->getPeptideIonDirection(); if(direction != pappso::getPeptideIonDirection(m_ionType)) { throw PappsoException( QString("PeptideIon %1 is not an %2 fragment") .arg(PeptideFragmentIon::getPeptideIonName(m_ionType)) .arg(PeptideFragment::getPeptideIonDirectionName(direction))); } m_mass -= MASSH2O; switch(m_ionType) { // -MASSH2O case PeptideIon::yp: m_neutralPhosphoLossNumber = number_of_neutral_phospho_loss; m_mass -= ((MASSH2O + MASSPHOSPHORYLATEDR) * m_neutralPhosphoLossNumber); ion_type = PeptideIon::y; break; case PeptideIon::bp: m_neutralPhosphoLossNumber = number_of_neutral_phospho_loss; m_mass -= ((MASSH2O + MASSPHOSPHORYLATEDR) * m_neutralPhosphoLossNumber); ion_type = PeptideIon::b; break; default: break; } m_mass += PeptideRawFragmentMasses::getDeltaMass(ion_type); } PeptideFragmentIon::PeptideFragmentIon(const PeptideFragmentIon &other) : msp_fragment(other.msp_fragment), m_ionType(other.m_ionType) { m_mass = other.m_mass; } PeptideFragmentIon::PeptideFragmentIon( PeptideFragmentIon &&toCopy) // move constructor : msp_fragment(std::move(toCopy.msp_fragment)), m_ionType(toCopy.m_ionType), m_mass(toCopy.m_mass) { } PeptideFragmentIon::~PeptideFragmentIon() { } PeptideDirection PeptideFragmentIon::getPeptideIonDirection(PeptideIon ion_type) { return pappso::getPeptideIonDirection(ion_type); } const QString PeptideFragmentIon::getCompletePeptideIonName(unsigned int charge) const { std::size_t size = msp_fragment.get()->size(); QString plusstr = "+"; plusstr = plusstr.repeated(charge); if(m_ionType == PeptideIon::yp) { return QString("y%1(-P%2)%3") .arg(size) .arg(m_neutralPhosphoLossNumber) .arg(plusstr); } else if(m_ionType == PeptideIon::bp) { return QString("b%1(-P%2)%3") .arg(size) .arg(m_neutralPhosphoLossNumber) .arg(plusstr); } return QString("%1%2%3") .arg(getPeptideIonName(m_ionType)) .arg(size) .arg(plusstr); } const QString PeptideFragmentIon::getPeptideIonName() const { if((m_ionType == PeptideIon::yp) || (m_ionType == PeptideIon::bp)) { return QString("%1(%2)") .arg(getPeptideIonName(m_ionType)) .arg(m_neutralPhosphoLossNumber); } return getPeptideIonName(m_ionType); } const QString PeptideFragmentIon::getPeptideIonName(PeptideIon m_ionType) { switch(m_ionType) { case PeptideIon::y: return "y"; break; case PeptideIon::yp: return "yP"; break; case PeptideIon::ystar: return "y*"; break; case PeptideIon::yo: return "yO"; break; case PeptideIon::bstar: return "b*"; break; case PeptideIon::bo: return "bO"; break; case PeptideIon::a: return "a"; break; case PeptideIon::astar: return "a*"; break; case PeptideIon::ao: return "aO"; break; case PeptideIon::c: return "c"; break; // SvgIon.moxygen - mN case PeptideIon::z: return "z"; break; case PeptideIon::b: return "b"; break; case PeptideIon::bp: return "bP"; break; case PeptideIon::x: return "x"; break; default: throw PappsoException(QString("PeptideIon name not implemented")); break; } } const QColor PeptideFragmentIon::getPeptideIonColor(PeptideIon m_ionType) { switch(m_ionType) { case PeptideIon::y: return QColor("red"); break; case PeptideIon::yp: return QColor("red"); break; case PeptideIon::ystar: return QColor("red"); break; case PeptideIon::yo: return QColor("orange"); break; case PeptideIon::x: return QColor("orange"); break; case PeptideIon::bstar: return QColor("blue"); break; case PeptideIon::bo: return QColor("#ff00ff"); break; case PeptideIon::a: return QColor("green"); break; case PeptideIon::astar: return QColor("green"); break; case PeptideIon::ao: return QColor("green"); break; case PeptideIon::c: return QColor("blue"); break; // SvgIon.moxygen - mN case PeptideIon::z: return QColor("red"); break; case PeptideIon::b: return QColor("blue"); break; case PeptideIon::bp: return QColor("blue"); break; default: throw PappsoException(QString("PeptideIon color not implemented %1") .arg(getPeptideIonName(m_ionType))); break; } } int PeptideFragmentIon::getNumberOfAtom(AtomIsotopeSurvey atom) const { int number = msp_fragment.get()->getNumberOfAtom(atom); int diff = 0; switch(atom) { case AtomIsotopeSurvey::C: switch(m_ionType) { case PeptideIon::y: break; case PeptideIon::yp: // H 1 O 3 P 1 + H 2 0 break; case PeptideIon::ystar: // m_mass -= MASSNH3; break; case PeptideIon::yo: // m_mass -= MASSH2O; break; case PeptideIon::bstar: // m_mass -= MASSH2O; // m_mass -= MASSNH3; break; case PeptideIon::bo: // m_mass -= MASSH2O; // m_mass -= MASSH2O; break; case PeptideIon::a: // m_mass -= MASSH2O; // m_mass -= MASSCO; diff = -1; break; case PeptideIon::c: // m_mass += MASSNH3; break; // SvgIon.moxygen - mN case PeptideIon::z: // m_mass -= MASSH2O; // m_mass += MASSOXYGEN - MASSNITROGEN - MPROTIUM; break; case PeptideIon::b: // m_mass -= MASSH2O; break; case PeptideIon::bp: // H 1 O 3 P 1 + H 2 0 break; case PeptideIon::astar: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSNH3; diff = -1; break; case PeptideIon::ao: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSH2O; diff = -1; break; case PeptideIon::x: // +MASSCO + MASSOXYGEN diff = +1; break; default: throw PappsoException(QString("PeptideIon name not implemented")); break; } break; case AtomIsotopeSurvey::H: switch(m_ionType) { case PeptideIon::y: break; case PeptideIon::yp: // H 1 O 3 P 1 + H 2 0 diff = -3 * m_neutralPhosphoLossNumber; break; case PeptideIon::ystar: // m_mass -= MASSNH3; diff = -3; break; case PeptideIon::yo: // m_mass -= MASSH2O; diff = -2; break; case PeptideIon::bstar: // m_mass -= MASSH2O; // m_mass -= MASSNH3; diff = -5; break; case PeptideIon::bo: // m_mass -= MASSH2O; // m_mass -= MASSH2O; diff = -4; break; case PeptideIon::a: // m_mass -= MASSH2O; // m_mass -= MASSCO; diff = -2; break; case PeptideIon::c: // m_mass += MASSNH3; diff = -3; break; // SvgIon.moxygen - mN case PeptideIon::z: // m_mass -= MASSH2O; // m_mass += MASSOXYGEN - MASSNITROGEN - MPROTIUM; diff = -3; break; case PeptideIon::b: // m_mass -= MASSH2O; diff = -2; break; case PeptideIon::bp: // H 1 O 3 P 1 + H 2 0 diff = -3 * m_neutralPhosphoLossNumber; break; case PeptideIon::astar: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSNH3; diff = -5; break; case PeptideIon::ao: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSH2O; diff = -4; break; case PeptideIon::x: // +MASSCO + MASSOXYGEN diff = -2; break; default: throw PappsoException(QString("PeptideIon name not implemented")); break; } break; case AtomIsotopeSurvey::N: switch(m_ionType) { case PeptideIon::y: break; case PeptideIon::yp: // H 1 O 3 P 1 + H 2 0 break; case PeptideIon::ystar: // m_mass -= MASSNH3; diff = -1; break; case PeptideIon::yo: // m_mass -= MASSH2O; break; case PeptideIon::bstar: // m_mass -= MASSH2O; // m_mass -= MASSNH3; diff = -1; break; case PeptideIon::bo: // m_mass -= MASSH2O; // m_mass -= MASSH2O; break; case PeptideIon::a: // m_mass -= MASSH2O; // m_mass -= MASSCO; break; case PeptideIon::c: // m_mass += MASSNH3; diff = -1; break; // SvgIon.moxygen - mN case PeptideIon::z: // m_mass -= MASSH2O; // m_mass += MASSOXYGEN - MASSNITROGEN - MPROTIUM; diff = -1; break; case PeptideIon::b: // m_mass -= MASSH2O; break; case PeptideIon::bp: // H 1 O 3 P 1 + H 2 0 break; case PeptideIon::astar: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSNH3; diff = -1; break; case PeptideIon::ao: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSH2O; break; case PeptideIon::x: // +MASSCO + MASSOXYGEN break; default: throw PappsoException(QString("PeptideIon name not implemented")); break; } break; case AtomIsotopeSurvey::O: switch(m_ionType) { case PeptideIon::y: break; case PeptideIon::yp: // H 1 O 3 P 1 + H 2 0 diff = -4 * m_neutralPhosphoLossNumber; break; case PeptideIon::ystar: // m_mass -= MASSNH3; break; case PeptideIon::yo: // m_mass -= MASSH2O; diff = -1; break; case PeptideIon::bstar: // m_mass -= MASSH2O; // m_mass -= MASSNH3; diff = -1; break; case PeptideIon::bo: // m_mass -= MASSH2O; // m_mass -= MASSH2O; diff = -2; break; case PeptideIon::a: // m_mass -= MASSH2O; // m_mass -= MASSCO; diff = -2; break; case PeptideIon::c: // m_mass += MASSNH3; break; // SvgIon.moxygen - mN case PeptideIon::z: // m_mass -= MASSH2O; // m_mass += MASSOXYGEN - MASSNITROGEN - MPROTIUM; diff = -2; break; case PeptideIon::b: // m_mass -= MASSH2O; diff = -1; break; case PeptideIon::bp: // H 1 O 3 P 1 + H 2 0 diff = -4 * m_neutralPhosphoLossNumber; break; case PeptideIon::astar: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSNH3; diff = -2; break; case PeptideIon::ao: // m_mass -= MASSH2O; // m_mass = - MASSCO - MASSH2O; diff = -3; break; case PeptideIon::x: // +MASSCO + MASSOXYGEN diff = +1; break; default: throw PappsoException( QObject::tr("PeptideIon name not implemented")); break; } break; case AtomIsotopeSurvey::S: break; default: qDebug() << "PeptideFragmentIon::getNumberOfAtom(AtomIsotopeSurvey " "atom) NOT IMPLEMENTED"; } return number + diff; } int PeptideFragmentIon::getNumberOfIsotope(Isotope isotope) const { int number = msp_fragment.get()->getNumberOfIsotope(isotope); return number; } PeptideFragmentIonSp PeptideFragmentIon::makePeptideFragmentIonSp() const { return std::make_shared(*this); } unsigned int PeptideFragmentIon::size() const { return msp_fragment.get()->size(); } const QString PeptideFragmentIon::getSequence() const { return msp_fragment.get()->getSequence(); } const PeptideFragmentSp & PeptideFragmentIon::getPeptideFragmentSp() const { return msp_fragment; } const QString PeptideFragmentIon::getName() const { return QString("%1-%2").arg(getPeptideIonName(m_ionType)).arg(size()); } pappso_double PeptideFragmentIon::getMass() const { return m_mass; } PeptideIon PeptideFragmentIon::getPeptideIonType() const { return m_ionType; } PeptideDirection PeptideFragmentIon::getPeptideIonDirection() const { return msp_fragment.get()->getPeptideIonDirection(); } unsigned int PeptideFragmentIon::getNumberOfNeutralPhosphoLoss() const { return m_neutralPhosphoLossNumber; } bool PeptideFragmentIon::isPalindrome() const { return msp_fragment.get()->isPalindrome(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidefragmention.h000644 001750 001750 00000006255 14346367014 026401 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidefragmention.h * \date 10/3/2015 * \author Olivier Langella * \brief peptide ion model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../exportinmportconfig.h" #include "peptidefragment.h" namespace pappso { class PeptideFragmentIon; typedef std::shared_ptr PeptideFragmentIonSp; class PMSPP_LIB_DECL PeptideFragmentIon : public PeptideInterface { public: PeptideFragmentIon(const PeptideFragmentSp &sp_fragment, PeptideIon ion_type, unsigned int number_of_neutral_phospho_loss); PeptideFragmentIon(const PeptideFragmentSp &sp_fragment, PeptideIon ion_type); PeptideFragmentIon(const PeptideFragmentIon &other); PeptideFragmentIon(PeptideFragmentIon &&toCopy); // move constructor virtual ~PeptideFragmentIon(); PeptideFragmentIonSp makePeptideFragmentIonSp() const; virtual unsigned int size() const override; virtual const QString getSequence() const override; virtual const PeptideFragmentSp &getPeptideFragmentSp() const; virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override; virtual int getNumberOfIsotope(Isotope isotope) const override; virtual const QString getName() const override; pappso_double getMass() const override; const QString getPeptideIonName() const; /** @brief get a complete ion name string * @param charge * */ const QString getCompletePeptideIonName(unsigned int charge) const; static PeptideDirection getPeptideIonDirection(PeptideIon ion_type); static const QString getPeptideIonName(PeptideIon ion_type); static const QColor getPeptideIonColor(PeptideIon ion_type); PeptideIon getPeptideIonType() const; PeptideDirection getPeptideIonDirection() const; unsigned int getNumberOfNeutralPhosphoLoss() const; virtual bool isPalindrome() const override; private: const PeptideFragmentSp msp_fragment; const PeptideIon m_ionType; pappso_double m_mass = 0; // number of neutral phospho loss. this only occurs on MOD:00696 // it loses MOD:00696 + H2O unsigned int m_neutralPhosphoLossNumber = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidefragmentionlistbase.cpp000644 001750 001750 00000022551 14526455546 030470 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidefragmentionlistbase.cpp * \date 10/3/2015 * \author Olivier Langella * \brief fragmentation base object */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidefragmentionlistbase.h" #include #include #include "../pappsoexception.h" namespace pappso { std::list PeptideFragmentIonListBase::getCIDionList() { IonList ret; // populate ret ret.push_back(PeptideIon::y); ret.push_back(PeptideIon::yp); ret.push_back(PeptideIon::ystar); ret.push_back(PeptideIon::yo); ret.push_back(PeptideIon::b); ret.push_back(PeptideIon::bp); ret.push_back(PeptideIon::a); ret.push_back(PeptideIon::bstar); ret.push_back(PeptideIon::bo); return ret; } std::list PeptideFragmentIonListBase::getETDionList() { IonList ret; // populate ret ret.push_back(PeptideIon::y); ret.push_back(PeptideIon::c); ret.push_back(PeptideIon::z); ret.push_back(PeptideIon::ystar); ret.push_back(PeptideIon::yo); return ret; } const std::list & PeptideFragmentIonListBase::getIonList() const { return m_ionList; } PeptideFragmentIonListBase::PeptideFragmentIonListBase(const PeptideSp &peptide, const IonList &ions) : msp_peptide(peptide), m_ionList(ions) { try { qDebug() << "PeptideFragmentIonListBase::PeptideFragmentIonListBase begin " << ions.size(); std::list fragment_list = PeptideFragmentIonListBase::getPeptideFragmentList(msp_peptide); m_phosphorylationNumber = 0; AaModificationP phosphorylation_mod = nullptr; for(auto &&fragment_sp : fragment_list) { // qDebug()<< "PeptideFragmentIonListBase::PeptideFragmentIonListBase // ition"; if(fragment_sp.get()->getPeptideIonDirection() == PeptideDirection::Cter) { for(auto &&ion_type : m_ionList) { // qDebug()<< // "PeptideFragmentIonListBase::PeptideFragmentIonListBase // ition"; if((ion_type == PeptideIon::y) || (ion_type == PeptideIon::ystar) || (ion_type == PeptideIon::yo) || (ion_type == PeptideIon::z)) { msp_peptide_fragment_ion_list.push_back( std::make_shared(fragment_sp, ion_type)); } else if(ion_type == PeptideIon::yp) { if(phosphorylation_mod == nullptr) { phosphorylation_mod = AaModification::getInstance("MOD:00696"); m_phosphorylationNumber = peptide.get()->getNumberOfModification( phosphorylation_mod); } for(unsigned int i = 0; i < m_phosphorylationNumber; i++) { msp_peptide_fragment_ion_list.push_back( std::make_shared( fragment_sp, ion_type, i + 1)); } } } } else { for(auto &&ion_type : m_ionList) { // b, bstar, bo, a if((ion_type == PeptideIon::b) || (ion_type == PeptideIon::bstar) || (ion_type == PeptideIon::bo) || (ion_type == PeptideIon::a) || (ion_type == PeptideIon::c)) { msp_peptide_fragment_ion_list.push_back( std::make_shared(fragment_sp, ion_type)); } else if(ion_type == PeptideIon::bp) { if(phosphorylation_mod == nullptr) { phosphorylation_mod = AaModification::getInstance("MOD:00696"); m_phosphorylationNumber = peptide.get()->getNumberOfModification( phosphorylation_mod); } for(unsigned int i = 0; i < m_phosphorylationNumber; i++) { msp_peptide_fragment_ion_list.push_back( std::make_shared( fragment_sp, ion_type, i + 1)); } } } } } qDebug() << "PeptideFragmentIonListBase::PeptideFragmentIonListBase end " << ions.size(); } catch(PappsoException &exception_pappso) { QString errorStr = QObject::tr( "ERROR building PeptideFragmentIonListBase, PAPPSO exception:\n%1") .arg(exception_pappso.qwhat()); qDebug() << "PeptideFragmentIonListBase::PeptideFragmentIonListBase " "PappsoException :\n" << errorStr; throw PappsoException(errorStr); } catch(std::exception &exception_std) { QString errorStr = QObject::tr( "ERROR building PeptideFragmentIonListBase, std exception:\n%1") .arg(exception_std.what()); qDebug() << "PeptideFragmentIonListBase::PeptideFragmentIonListBase " "std::exception :\n" << errorStr; throw PappsoException(errorStr); } } PeptideFragmentIonListBase::PeptideFragmentIonListBase( const PeptideFragmentIonListBase &other) : msp_peptide(other.msp_peptide), msp_peptide_fragment_ion_list(other.msp_peptide_fragment_ion_list), m_ionList(other.m_ionList), m_phosphorylationNumber(other.m_phosphorylationNumber) { } PeptideFragmentIonListBaseSp PeptideFragmentIonListBase::makePeptideFragmentIonListBaseSp() const { return std::make_shared(*this); } PeptideFragmentIonListBase::~PeptideFragmentIonListBase() { } const std::list PeptideFragmentIonListBase::getPeptideFragmentList(const PeptideSp &peptide) { std::list peptide_fragment_list; unsigned int max = peptide.get()->size() - 1; for(unsigned int i = 0; i < max; i++) { peptide_fragment_list.push_back(std::make_shared( peptide, PeptideDirection::Nter, i + 1)); peptide_fragment_list.push_back(std::make_shared( peptide, PeptideDirection::Cter, i + 1)); } return peptide_fragment_list; } const std::list PeptideFragmentIonListBase::getPeptideFragmentIonSp(PeptideIon ion_type) const { std::list ion_list; for(auto &&peptide_fragment_ion_sp : msp_peptide_fragment_ion_list) { if(peptide_fragment_ion_sp.get()->getPeptideIonType() == ion_type) { ion_list.push_back(peptide_fragment_ion_sp); } } return (ion_list); } const PeptideFragmentIonSp & PeptideFragmentIonListBase::getPeptideFragmentIonSp(PeptideIon ion_type, unsigned int size) const { return getPeptideFragmentIonSp(ion_type, size, 0); } const PeptideFragmentIonSp & PeptideFragmentIonListBase::getPeptideFragmentIonSp( PeptideIon ion_type, unsigned int size, unsigned int number_of_neutral_phospho_loss) const { for(auto &&peptide_fragment_ion_sp : msp_peptide_fragment_ion_list) { if(peptide_fragment_ion_sp.get()->getPeptideIonType() == ion_type) { if(peptide_fragment_ion_sp.get()->size() == size) { if(peptide_fragment_ion_sp.get() ->getNumberOfNeutralPhosphoLoss() == number_of_neutral_phospho_loss) { return (peptide_fragment_ion_sp); } } } } throw PappsoException(QString("PeptideFragmentIon %1 of size %2 not found") .arg(PeptideFragmentIon::getPeptideIonName(ion_type)) .arg(size)); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidefragmentionlistbase.h000644 001750 001750 00000006470 14346367014 030127 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidefragmentionlistbase.h * \date 10/3/2015 * \author Olivier Langella * \brief fragmentation base object */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "peptidefragmention.h" #include "../exportinmportconfig.h" namespace pappso { class PeptideFragmentIonListBase; typedef std::shared_ptr PeptideFragmentIonListBaseSp; class PMSPP_LIB_DECL PeptideFragmentIonListBase { using IonList = std::list; protected: const PeptideSp msp_peptide; std::list msp_peptide_fragment_ion_list; IonList m_ionList; unsigned int m_phosphorylationNumber; static const std::list getPeptideFragmentList(const PeptideSp &peptide); public: PeptideFragmentIonListBase(const PeptideSp &peptide, const IonList &ions); PeptideFragmentIonListBase(const PeptideFragmentIonListBase &other); virtual ~PeptideFragmentIonListBase(); PeptideFragmentIonListBaseSp makePeptideFragmentIonListBaseSp() const; const std::list &getIonList() const; unsigned int getPhosphorylationNumber() const { return m_phosphorylationNumber; }; virtual const PeptideSp & getPeptideSp() const { return msp_peptide; }; const std::list getPeptideFragmentIonSp(PeptideIon ion_type) const; const PeptideFragmentIonSp &getPeptideFragmentIonSp(PeptideIon ion_type, unsigned int size) const; const PeptideFragmentIonSp & getPeptideFragmentIonSp(PeptideIon ion_type, unsigned int size, unsigned int number_of_neutral_phospho_loss) const; std::list::const_iterator begin() const { return msp_peptide_fragment_ion_list.begin(); } std::list::const_iterator end() const { return msp_peptide_fragment_ion_list.end(); } const std::list & getPeptideFragmentIonList() const { return msp_peptide_fragment_ion_list; } static std::list getCIDionList(); static std::list getETDionList(); unsigned int size() const { return msp_peptide_fragment_ion_list.size(); }; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptideinterface.cpp000644 001750 001750 00000007173 14526455546 026373 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptideinterface.h" namespace pappso { const QString PeptideInterface::getSequenceLi() const { return QString(this->getSequence()).replace("L", "I"); } const QString PeptideInterface::getFormula(unsigned int charge) const { QString carbon( QString("C %1").arg(this->getNumberOfAtom(AtomIsotopeSurvey::C) - this->getNumberOfIsotope(Isotope::C13))); if(this->getNumberOfIsotope(Isotope::C13) > 0) { carbon.append( QString(" (13)C %1").arg(this->getNumberOfIsotope(Isotope::C13))); } QString hydrogen( QString("H %1").arg(this->getNumberOfAtom(AtomIsotopeSurvey::H) + charge - this->getNumberOfIsotope(Isotope::H2))); if(this->getNumberOfIsotope(Isotope::H2) > 0) { hydrogen.append( QString(" (2)H %1").arg(this->getNumberOfIsotope(Isotope::H2))); } QString oxygen( QString("O %1").arg(this->getNumberOfAtom(AtomIsotopeSurvey::O) - this->getNumberOfIsotope(Isotope::O17) - this->getNumberOfIsotope(Isotope::O18))); if(this->getNumberOfIsotope(Isotope::O17) > 0) { oxygen.append( QString(" (17)O %1").arg(this->getNumberOfIsotope(Isotope::O17))); } if(this->getNumberOfIsotope(Isotope::O18) > 0) { oxygen.append( QString(" (18)O %1").arg(this->getNumberOfIsotope(Isotope::O18))); } QString nitrogen( QString("N %1").arg(this->getNumberOfAtom(AtomIsotopeSurvey::N) - this->getNumberOfIsotope(Isotope::N15))); if(this->getNumberOfIsotope(Isotope::N15) > 0) { nitrogen.append( QString(" (15)N %1").arg(this->getNumberOfIsotope(Isotope::N15))); } QString sulfur( QString("S %1").arg(this->getNumberOfAtom(AtomIsotopeSurvey::S) - this->getNumberOfIsotope(Isotope::S33) - this->getNumberOfIsotope(Isotope::S34) - this->getNumberOfIsotope(Isotope::S36))); if(this->getNumberOfIsotope(Isotope::S33) > 0) { sulfur.append( QString(" (33)S %1").arg(this->getNumberOfIsotope(Isotope::S33))); } if(this->getNumberOfIsotope(Isotope::S34) > 0) { sulfur.append( QString(" (34)S %1").arg(this->getNumberOfIsotope(Isotope::S34))); } if(this->getNumberOfIsotope(Isotope::S36) > 0) { sulfur.append( QString(" (36)S %1").arg(this->getNumberOfIsotope(Isotope::S36))); } return QString("%1 %2 %3 %4 %5") .arg(carbon) .arg(hydrogen) .arg(oxygen) .arg(nitrogen) .arg(sulfur); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptideinterface.h000644 001750 001750 00000004473 14346367014 026030 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "ion.h" #include #include "../amino_acid/atomnumberinterface.h" #include "../mzrange.h" #include "../exportinmportconfig.h" namespace pappso { class PeptideInterface; typedef std::shared_ptr PeptideInterfaceSp; class PMSPP_LIB_DECL PeptideInterface : public Ion, public AtomNumberInterface { public: /** @brief amino acid sequence without modification * */ virtual const QString getSequence() const = 0; /** @brief tells if the peptide sequence is a palindrome */ virtual bool isPalindrome() const = 0; /** @brief amino acid sequence without modification where L are replaced by I * */ virtual const QString getSequenceLi() const; virtual unsigned int size() const = 0; virtual const QString getName() const { return QString("unknown"); }; virtual const QString getFormula(unsigned int charge) const final; virtual bool matchPeak(PrecisionPtr precision, pappso_double peak_mz, unsigned int charge) const final { return (MzRange((getMass() + (MHPLUS * charge)) / charge, precision) .contains(peak_mz)); } // virtual int getNumberOfIsotope(Isotope isotope) const override = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidenaturalisotope.cpp000644 001750 001750 00000025004 14526455546 027475 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidenaturalisotope.cpp * \date 8/3/2015 * \author Olivier Langella * \brief peptide natural isotope model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidenaturalisotope.h" #include "../pappsoexception.h" #include #include using namespace std; namespace pappso { #define CACHE_ARRAY_SIZE 500 uint64_t combinations_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; uint64_t Combinations(unsigned int n, unsigned int k) { if(k > n) return 0; uint64_t r = 1; if((n < CACHE_ARRAY_SIZE) && (combinations_cache[n][k] != 0)) { return combinations_cache[n][k]; } for(unsigned int d = 1; d <= k; ++d) { r *= n--; r /= d; } if(n < CACHE_ARRAY_SIZE) { combinations_cache[n][k] = r; } return r; } enum class AtomIsotope { C, H, O, N, S }; pappso_double isotopem_ratio(pappso_double abundance, unsigned int total, unsigned int heavy) { return (pow(abundance, heavy) * pow((double)1 - abundance, (total - heavy)) * (double)Combinations(total, heavy)); } pappso_double ratioC13_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double ratioN15_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double ratioS36_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double ratioS34_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double ratioS33_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double ratioO17_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double ratioO18_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double ratioH2_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0}; pappso_double isotopem_ratio_cache(Isotope isotope, unsigned int total, unsigned int heavy) { pappso_double abundance = 1; switch(isotope) { case Isotope::H2: abundance = ABUNDANCEH2; if(total < CACHE_ARRAY_SIZE) { if(ratioH2_cache[total][heavy] == 0) { ratioH2_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioH2_cache[total][heavy]; } break; case Isotope::C13: abundance = ABUNDANCEC13; if(total < CACHE_ARRAY_SIZE) { if(ratioC13_cache[total][heavy] == 0) { ratioC13_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioC13_cache[total][heavy]; } break; case Isotope::N15: abundance = ABUNDANCEN15; if(total < CACHE_ARRAY_SIZE) { if(ratioN15_cache[total][heavy] == 0) { ratioN15_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioN15_cache[total][heavy]; } break; case Isotope::O18: abundance = ABUNDANCEO18; if(total < CACHE_ARRAY_SIZE) { if(ratioO18_cache[total][heavy] == 0) { ratioO18_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioO18_cache[total][heavy]; } break; case Isotope::O17: abundance = ABUNDANCEO17; if(total < CACHE_ARRAY_SIZE) { if(ratioO17_cache[total][heavy] == 0) { ratioO17_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioO17_cache[total][heavy]; } break; case Isotope::S33: abundance = ABUNDANCES33; if(total < CACHE_ARRAY_SIZE) { if(ratioS33_cache[total][heavy] == 0) { ratioS33_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioS33_cache[total][heavy]; } break; case Isotope::S34: abundance = ABUNDANCES34; if(total < CACHE_ARRAY_SIZE) { if(ratioS34_cache[total][heavy] == 0) { ratioS34_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioS34_cache[total][heavy]; } break; case Isotope::S36: abundance = ABUNDANCES36; if(total < CACHE_ARRAY_SIZE) { if(ratioS36_cache[total][heavy] == 0) { ratioS36_cache[total][heavy] = isotopem_ratio(abundance, total, heavy); } return ratioS36_cache[total][heavy]; } break; } return isotopem_ratio(abundance, total, heavy); } PeptideNaturalIsotope::PeptideNaturalIsotope( const PeptideInterfaceSp &peptide, const std::map &map_isotope) : m_peptide(peptide), m_mapIsotope(map_isotope) { //_abundance = ((_number_of_carbon - number_of_C13) * ABUNDANCEC12) + //(number_of_C13 * ABUNDANCEC13); p = pow(0.01, i)*pow(0.99, (c-i))*comb(c,i) // qDebug()<< "pow" << pow(ABUNDANCEC13, number_of_C13)*pow(1-ABUNDANCEC13, // (_number_of_carbon-number_of_C13)); // qDebug() <<"conb" << Combinations(_number_of_carbon,number_of_C13); // CHNO //_probC13 = pow(ABUNDANCEC13, number_of_C13)*pow((double)1-ABUNDANCEC13, //(_number_of_carbon-number_of_C13))* (double) // Combinations(_number_of_carbon,number_of_C13); // qDebug() <<"_probC13" <<_probC13; // number of fixed Oxygen atoms (already labelled, not natural) : int number_of_fixed_oxygen = m_peptide.get()->getNumberOfIsotope(Isotope::O18) + m_peptide.get()->getNumberOfIsotope(Isotope::O17); int number_of_fixed_sulfur = m_peptide.get()->getNumberOfIsotope(Isotope::S33) + m_peptide.get()->getNumberOfIsotope(Isotope::S34) + m_peptide.get()->getNumberOfIsotope(Isotope::S36); m_ratio = isotopem_ratio_cache( Isotope::C13, m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::C) - m_peptide.get()->getNumberOfIsotope(Isotope::C13), m_mapIsotope.at(Isotope::C13)); m_ratio *= isotopem_ratio_cache( Isotope::N15, m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::N) - m_peptide.get()->getNumberOfIsotope(Isotope::N15), m_mapIsotope.at(Isotope::N15)); m_ratio *= isotopem_ratio_cache( Isotope::O18, m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::O) - number_of_fixed_oxygen, m_mapIsotope.at(Isotope::O18)); m_ratio *= isotopem_ratio_cache( Isotope::O17, m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::O) - number_of_fixed_oxygen, m_mapIsotope.at(Isotope::O17)); m_ratio *= isotopem_ratio_cache( Isotope::S33, m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::S) - number_of_fixed_sulfur, m_mapIsotope.at(Isotope::S33)); m_ratio *= isotopem_ratio_cache( Isotope::S34, m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::S) - number_of_fixed_sulfur, m_mapIsotope.at(Isotope::S34)); m_ratio *= isotopem_ratio_cache( Isotope::S36, m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::S) - number_of_fixed_sulfur, m_mapIsotope.at(Isotope::S36)); // qDebug() << "Aa::getMass() begin"; m_mass = m_peptide.get()->getMass(); m_mass += (DIFFC12C13 * m_mapIsotope.at(Isotope::C13)); m_mass += (DIFFS32S33 * m_mapIsotope.at(Isotope::S33)); m_mass += (DIFFS32S34 * m_mapIsotope.at(Isotope::S34)); m_mass += (DIFFS32S36 * m_mapIsotope.at(Isotope::S36)); m_mass += (DIFFH1H2 * m_mapIsotope.at(Isotope::H2)); m_mass += (DIFFO16O18 * m_mapIsotope.at(Isotope::O18)); m_mass += (DIFFN14N15 * m_mapIsotope.at(Isotope::N15)); m_mass += (DIFFO16O17 * m_mapIsotope.at(Isotope::O17)); // qDebug() << "Aa::getMass() end " << mass; } PeptideNaturalIsotope::PeptideNaturalIsotope(const PeptideNaturalIsotope &other) : m_peptide(other.m_peptide), m_mapIsotope(other.m_mapIsotope) { m_ratio = other.m_ratio; } PeptideNaturalIsotope::~PeptideNaturalIsotope() { } pappso_double PeptideNaturalIsotope::getMass() const { return m_mass; } pappso_double PeptideNaturalIsotope::getIntensityRatio(unsigned int charge) const { return m_ratio * isotopem_ratio_cache( Isotope::H2, (m_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::H) + charge) - m_peptide.get()->getNumberOfIsotope(Isotope::H2), m_mapIsotope.at(Isotope::H2)); } int PeptideNaturalIsotope::getNumberOfAtom(AtomIsotopeSurvey atom) const { return m_peptide.get()->getNumberOfAtom(atom); } int PeptideNaturalIsotope::getNumberOfIsotope(Isotope isotope) const { return m_mapIsotope.at(isotope) + m_peptide.get()->getNumberOfIsotope(isotope); } const std::map & PeptideNaturalIsotope::getIsotopeMap() const { return m_mapIsotope; } bool PeptideNaturalIsotope::isPalindrome() const { return m_peptide.get()->isPalindrome(); } unsigned int PeptideNaturalIsotope::size() const { return m_peptide.get()->size(); } const QString PeptideNaturalIsotope::getSequence() const { return m_peptide.get()->getSequence(); } unsigned int PeptideNaturalIsotope::getIsotopeNumber() const { // only count variable (natural) isotope return m_mapIsotope.at(Isotope::C13) + m_mapIsotope.at(Isotope::H2) + m_mapIsotope.at(Isotope::O17) + m_mapIsotope.at(Isotope::O18) * 2 + m_mapIsotope.at(Isotope::N15) + m_mapIsotope.at(Isotope::S33) + (m_mapIsotope.at(Isotope::S34) * 2) + (m_mapIsotope.at(Isotope::S36) * 4); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidenaturalisotope.h000644 001750 001750 00000004546 14346367014 027142 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidenaturalisotope.h * \date 8/3/2015 * \author Olivier Langella * \brief peptide natural isotope model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "peptide.h" #include "../exportinmportconfig.h" namespace pappso { class PeptideNaturalIsotope; typedef std::shared_ptr PeptideNaturalIsotopeSp; class PMSPP_LIB_DECL PeptideNaturalIsotope : public PeptideInterface { public: PeptideNaturalIsotope(const PeptideInterfaceSp &peptide, const std::map &map_isotope); PeptideNaturalIsotope(const PeptideNaturalIsotope &other); virtual ~PeptideNaturalIsotope(); virtual unsigned int size() const override; virtual const QString getSequence() const override; pappso_double getMass() const override; virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override; virtual int getNumberOfIsotope(Isotope isotope) const override; pappso_double getIntensityRatio(unsigned int charge) const; const std::map &getIsotopeMap() const; virtual unsigned int getIsotopeNumber() const; virtual bool isPalindrome() const override; private: const PeptideInterfaceSp m_peptide; const std::map m_mapIsotope; pappso_double m_ratio; pappso_double m_mass; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp000644 001750 001750 00000017110 14526455546 031027 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "../pappsoexception.h" #include "peptidenaturalisotopeaverage.h" #include "peptidenaturalisotopelist.h" namespace pappso { PeptideNaturalIsotopeAverage::PeptideNaturalIsotopeAverage( const PeptideInterfaceSp &peptide, unsigned int isotopeNumber, unsigned int charge, PrecisionPtr precision) : mcsp_peptideSp(peptide), m_isotopeLevel(isotopeNumber), m_isotopeRank(1), m_z(charge), mp_precision(precision) { m_peptideNaturalIsotopeSpList.clear(); double diffC13 = ((double)isotopeNumber * DIFFC12C13) / (double)charge; m_averageMz = peptide.get()->getMz(charge) + diffC13; m_abundanceRatio = 0; } PeptideNaturalIsotopeAverage::PeptideNaturalIsotopeAverage( const PeptideInterfaceSp &peptide, unsigned int askedIsotopeRank, unsigned int isotopeLevel, unsigned int charge, PrecisionPtr precision) : PeptideNaturalIsotopeAverage(PeptideNaturalIsotopeList(peptide), askedIsotopeRank, isotopeLevel, charge, precision) { } PeptideNaturalIsotopeAverage::PeptideNaturalIsotopeAverage( const PeptideNaturalIsotopeList &isotopeList, unsigned int askedIsotopeRank, unsigned int isotope_number, unsigned int charge, PrecisionPtr precision) : mcsp_peptideSp(isotopeList.getPeptideInterfaceSp()), m_isotopeLevel(isotope_number), m_isotopeRank(askedIsotopeRank), m_z(charge), mp_precision(precision) { // get the askedIsotopeRank : std::vector v_isotope_list( isotopeList.getByIsotopeNumber(isotope_number, m_z)); qDebug() << "v_isotope_list.size()=" << v_isotope_list.size() << " " << isotope_number << " " << askedIsotopeRank; m_abundanceRatio = 0; m_averageMz = 0; if(askedIsotopeRank > v_isotope_list.size()) { // there is no isotope at this rank return; // throw PappsoException(QObject::tr("askedIsotopeRank greater than // v_isotope_list.size() %1 vs // %2").arg(askedIsotopeRank).arg(v_isotope_list.size())); } else if(askedIsotopeRank < 1) { throw PappsoException( QObject::tr("askedIsotopeRank must be 1 or more and not %1") .arg(askedIsotopeRank)); } unsigned int rank = 0; recursiveDepletion(v_isotope_list, rank); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } void PeptideNaturalIsotopeAverage::recursiveDepletion( std::vector &v_isotope_list, unsigned int rank) { rank++; m_abundanceRatio = 0; m_averageMz = 0; m_peptideNaturalIsotopeSpList.clear(); std::vector peptide_list; // select neighbors in the precision range : MzRange mz_range(v_isotope_list[0].get()->getMz(m_z), mp_precision); for(auto &isotope_sp : v_isotope_list) { if(mz_range.contains(isotope_sp.get()->getMz(m_z))) { peptide_list.push_back(isotope_sp); m_abundanceRatio += isotope_sp.get()->getIntensityRatio(m_z); m_averageMz += (isotope_sp.get()->getMz(m_z) * isotope_sp.get()->getIntensityRatio(m_z)); } } if(peptide_list.size() > 0) { m_averageMz = m_averageMz / m_abundanceRatio; // depletion auto it_remove = std::remove_if( v_isotope_list.begin(), v_isotope_list.end(), [peptide_list](const PeptideNaturalIsotopeSp &isotope_sp) { auto it = std::find(peptide_list.begin(), peptide_list.end(), isotope_sp); return (it != peptide_list.end()); }); v_isotope_list.erase(it_remove, v_isotope_list.end()); if(rank == m_isotopeRank) { m_peptideNaturalIsotopeSpList = peptide_list; return; } else { unsigned int charge = m_z; std::sort(v_isotope_list.begin(), v_isotope_list.end(), [charge](const PeptideNaturalIsotopeSp &m, const PeptideNaturalIsotopeSp &n) { return (m.get()->getIntensityRatio(charge) > n.get()->getIntensityRatio(charge)); }); recursiveDepletion(v_isotope_list, rank); } } else { m_abundanceRatio = 0; m_averageMz = 0; } } PeptideNaturalIsotopeAverageSp PeptideNaturalIsotopeAverage::makePeptideNaturalIsotopeAverageSp() const { return std::make_shared(*this); } PeptideNaturalIsotopeAverage::PeptideNaturalIsotopeAverage( const PeptideNaturalIsotopeAverage &other) : mcsp_peptideSp(other.mcsp_peptideSp), mp_precision(other.mp_precision) { qDebug(); m_peptideNaturalIsotopeSpList = other.m_peptideNaturalIsotopeSpList; m_averageMz = other.m_averageMz; m_abundanceRatio = other.m_abundanceRatio; m_isotopeLevel = other.m_isotopeLevel; m_isotopeRank = other.m_isotopeRank; m_z = other.m_z; qDebug(); } PeptideNaturalIsotopeAverage::~PeptideNaturalIsotopeAverage() { } pappso_double PeptideNaturalIsotopeAverage::getMz() const { return m_averageMz; } pappso_double PeptideNaturalIsotopeAverage::getIntensityRatio() const { return m_abundanceRatio; } unsigned int PeptideNaturalIsotopeAverage::getCharge() const { return m_z; } unsigned int PeptideNaturalIsotopeAverage::getIsotopeNumber() const { return m_isotopeLevel; } unsigned int PeptideNaturalIsotopeAverage::getIsotopeRank() const { return m_isotopeRank; } const std::vector & PeptideNaturalIsotopeAverage::getComponents() const { return m_peptideNaturalIsotopeSpList; } const PeptideInterfaceSp & PeptideNaturalIsotopeAverage::getPeptideInterfaceSp() const { return mcsp_peptideSp; } PrecisionPtr PeptideNaturalIsotopeAverage::getPrecision() const { return mp_precision; } bool PeptideNaturalIsotopeAverage::matchPeak(pappso_double peak_mz) const { // qDebug() << "PeptideNaturalIsotopeAverage::matchPeak"; // qDebug() << "PeptideNaturalIsotopeAverage::matchPeak precision " << // mp_precision.getDelta(200); return (MzRange(getMz(), mp_precision).contains(peak_mz)); } bool PeptideNaturalIsotopeAverage::isEmpty() const { return (m_peptideNaturalIsotopeSpList.size() == 0); } QString PeptideNaturalIsotopeAverage::toString() const { return QString("%1 l%2 mz%3 z%4 N%5") .arg(getPeptideInterfaceSp().get()->getSequence()) .arg(getPeptideInterfaceSp().get()->size()) .arg(getMz()) .arg(getCharge()) .arg(getIsotopeNumber()); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidenaturalisotopeaverage.h000644 001750 001750 00000006666 14346367014 030502 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../exportinmportconfig.h" #include "peptidenaturalisotope.h" namespace pappso { class PeptideNaturalIsotopeList; class PeptideNaturalIsotopeAverage; typedef std::shared_ptr PeptideNaturalIsotopeAverageSp; class PMSPP_LIB_DECL PeptideNaturalIsotopeAverage { public: /** @brief fast constructor * simple isotope build, not computing isotope ratio */ PeptideNaturalIsotopeAverage(const PeptideInterfaceSp &peptide, unsigned int isotopeNumber, unsigned int charge, PrecisionPtr precision); PeptideNaturalIsotopeAverage(const PeptideInterfaceSp &peptide, unsigned int askedIsotopeRank, unsigned int isotopeLevel, unsigned int charge, PrecisionPtr precision); PeptideNaturalIsotopeAverage(const PeptideNaturalIsotopeList &isotopeList, unsigned int askedIsotopeRank, unsigned int isotopeLevel, unsigned int charge, PrecisionPtr precision); PeptideNaturalIsotopeAverage(const PeptideNaturalIsotopeAverage &other); virtual ~PeptideNaturalIsotopeAverage(); PeptideNaturalIsotopeAverageSp makePeptideNaturalIsotopeAverageSp() const; pappso_double getMz() const; pappso_double getIntensityRatio() const; unsigned int getCharge() const; unsigned int getIsotopeNumber() const; unsigned int getIsotopeRank() const; const std::vector &getComponents() const; const PeptideInterfaceSp &getPeptideInterfaceSp() const; PrecisionPtr getPrecision() const; virtual bool matchPeak(pappso_double peak_mz) const final; bool isEmpty() const; virtual QString toString() const; private: void recursiveDepletion(std::vector &v_isotope_list, unsigned int rank); private: const PeptideInterfaceSp mcsp_peptideSp; std::vector m_peptideNaturalIsotopeSpList; pappso_double m_averageMz; pappso_double m_abundanceRatio; unsigned int m_isotopeLevel; unsigned int m_isotopeRank = 1; unsigned int m_z; PrecisionPtr mp_precision = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidenaturalisotopelist.cpp000644 001750 001750 00000045402 14526455546 030375 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidenaturalisotopelist.cpp * \date 8/3/2015 * \author Olivier Langella * \brief peptide natural isotope model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 7,7" #include #include "peptidenaturalisotopelist.h" #include "../pappsoexception.h" namespace pappso { PeptideNaturalIsotopeList::PeptideNaturalIsotopeList( const PeptideInterfaceSp &peptide, pappso_double minimum_ratio_to_compute) : msp_peptide(peptide) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " // << minimum_ratio_to_compute; int number_of_fixed_oxygen = msp_peptide.get()->getNumberOfIsotope(Isotope::O18) + msp_peptide.get()->getNumberOfIsotope(Isotope::O17); int number_of_fixed_sulfur = msp_peptide.get()->getNumberOfIsotope(Isotope::S33) + msp_peptide.get()->getNumberOfIsotope(Isotope::S34) + msp_peptide.get()->getNumberOfIsotope(Isotope::S36); int number_of_fixed_nitrogen = msp_peptide.get()->getNumberOfIsotope(Isotope::N15); int number_of_fixed_hydrogen = msp_peptide.get()->getNumberOfIsotope(Isotope::H2); int total_carbon(msp_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::C) - msp_peptide.get()->getNumberOfIsotope(Isotope::C13)); // qDebug() << "total_carbon " << total_carbon; // qDebug() << "total_sulfur " << total_sulfur; std::map map_isotope; map_isotope.insert(std::pair(Isotope::C13, 0)); map_isotope.insert(std::pair(Isotope::H2, 0)); map_isotope.insert(std::pair(Isotope::N15, 0)); map_isotope.insert(std::pair(Isotope::O17, 0)); map_isotope.insert(std::pair(Isotope::O18, 0)); map_isotope.insert(std::pair(Isotope::S33, 0)); map_isotope.insert(std::pair(Isotope::S34, 0)); map_isotope.insert(std::pair(Isotope::S36, 0)); for(int nbc13 = 0; nbc13 <= total_carbon; nbc13++) { map_isotope[Isotope::C13] = nbc13; PeptideNaturalIsotopeSp pepIsotope = std::make_shared(msp_peptide, map_isotope); this->msp_peptide_natural_isotope_list.push_back(pepIsotope); if(pepIsotope.get()->getIntensityRatio(1) < minimum_ratio_to_compute) { break; } } std::list temp_list; // ****************************************************************** // Sulfur isotope list int total_sulfur(msp_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::S) - number_of_fixed_sulfur); std::list::iterator it = msp_peptide_natural_isotope_list.begin(); while(it != msp_peptide_natural_isotope_list.end()) { map_isotope = it->get()->getIsotopeMap(); for(int nbS34 = 1; nbS34 <= total_sulfur; nbS34++) { map_isotope[Isotope::S34] = nbS34; PeptideNaturalIsotopeSp pepIsotope = std::make_shared(msp_peptide, map_isotope); temp_list.push_back(pepIsotope); if(pepIsotope.get()->getIntensityRatio(1) < minimum_ratio_to_compute) { // qDebug() << "peptide " << pepIsotope.get()->getFormula(1) << " // " << pepIsotope.get()->getIntensityRatio(1); it++; break; } } it++; } msp_peptide_natural_isotope_list.insert( it, temp_list.begin(), temp_list.end()); // compute S33 abundance temp_list.resize(0); it = msp_peptide_natural_isotope_list.begin(); while(it != msp_peptide_natural_isotope_list.end()) { // qDebug() << "peptide S33 " << it->get()->getFormula(1) << " " // <get()->getIntensityRatio(1); map_isotope = it->get()->getIsotopeMap(); for(int nbS33 = 1; nbS33 <= (total_sulfur - map_isotope[Isotope::S34]); nbS33++) { map_isotope[Isotope::S33] = nbS33; PeptideNaturalIsotopeSp pepIsotopeS33 = std::make_shared(msp_peptide, map_isotope); temp_list.push_back(pepIsotopeS33); if(pepIsotopeS33.get()->getIntensityRatio(1) < minimum_ratio_to_compute) { // it++; break; } } it++; } msp_peptide_natural_isotope_list.insert( it, temp_list.begin(), temp_list.end()); // compute S36 abundance temp_list.resize(0); it = msp_peptide_natural_isotope_list.begin(); while(it != msp_peptide_natural_isotope_list.end()) { map_isotope = it->get()->getIsotopeMap(); for(int nbS36 = 1; nbS36 <= (total_sulfur - map_isotope[Isotope::S34] - map_isotope[Isotope::S33]); nbS36++) { map_isotope[Isotope::S36] = nbS36; PeptideNaturalIsotopeSp pepIsotopeS36 = std::make_shared(msp_peptide, map_isotope); temp_list.push_back(pepIsotopeS36); if(pepIsotopeS36.get()->getIntensityRatio(1) < minimum_ratio_to_compute) { // it++; break; } } it++; } msp_peptide_natural_isotope_list.insert( it, temp_list.begin(), temp_list.end()); // ****************************************************************** // ****************************************************************** // Hydrogen isotope list temp_list.resize(0); // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // total_hydrogen"; int total_hydrogen(msp_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::H) - number_of_fixed_hydrogen); it = msp_peptide_natural_isotope_list.begin(); while(it != msp_peptide_natural_isotope_list.end()) { // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // getIsotopeMap " << it->getFormula(1) << " " << // msp_peptide_natural_isotope_list.size(); map_isotope = it->get()->getIsotopeMap(); for(int nbH2 = 1; nbH2 <= total_hydrogen; nbH2++) { map_isotope[Isotope::H2] = nbH2; PeptideNaturalIsotopeSp pepIsotope = std::make_shared(msp_peptide, map_isotope); temp_list.push_back(pepIsotope); if(pepIsotope.get()->getIntensityRatio(1) < minimum_ratio_to_compute) { // it++; break; } } it++; } msp_peptide_natural_isotope_list.insert( it, temp_list.begin(), temp_list.end()); // ****************************************************************** // ****************************************************************** // Oxygen isotope list temp_list.resize(0); // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // total_oxygen"; unsigned int total_oxygen( msp_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::O) - number_of_fixed_oxygen); it = msp_peptide_natural_isotope_list.begin(); while(it != msp_peptide_natural_isotope_list.end()) { // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // getIsotopeMap " << it->getFormula(1) << " " << // msp_peptide_natural_isotope_list.size(); map_isotope = it->get()->getIsotopeMap(); for(unsigned int nbO18 = 1; nbO18 <= total_oxygen; nbO18++) { // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // nbO18 " << nbO18; map_isotope[Isotope::O18] = nbO18; PeptideNaturalIsotopeSp pepIsotope = std::make_shared(msp_peptide, map_isotope); temp_list.push_back(pepIsotope); if(pepIsotope.get()->getIntensityRatio(1) < minimum_ratio_to_compute) { // it++; break; } } it++; } msp_peptide_natural_isotope_list.insert( it, temp_list.begin(), temp_list.end()); // ****************************************************************** // ****************************************************************** // Nitrogen isotope list temp_list.resize(0); // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // total_nitrogen"; unsigned int total_nitrogen( msp_peptide.get()->getNumberOfAtom(AtomIsotopeSurvey::N) - number_of_fixed_nitrogen); it = msp_peptide_natural_isotope_list.begin(); while(it != msp_peptide_natural_isotope_list.end()) { // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // getIsotopeMap " << it->getFormula(1) << " " << // msp_peptide_natural_isotope_list.size(); map_isotope = it->get()->getIsotopeMap(); for(unsigned int nbN15 = 1; nbN15 <= total_nitrogen; nbN15++) { // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList // nbN15 " << nbN15; map_isotope[Isotope::N15] = nbN15; PeptideNaturalIsotopeSp pepIsotope = std::make_shared(msp_peptide, map_isotope); temp_list.push_back(pepIsotope); if(pepIsotope.get()->getIntensityRatio(1) < minimum_ratio_to_compute) { // it++; break; } } it++; } msp_peptide_natural_isotope_list.insert( it, temp_list.begin(), temp_list.end()); // ****************************************************************** // qDebug() << "PeptideNaturalIsotopeList::PeptideNaturalIsotopeList end // size="<(*this); } PeptideNaturalIsotopeList::PeptideNaturalIsotopeList( const PeptideNaturalIsotopeList &other) : msp_peptide(other.msp_peptide), msp_peptide_natural_isotope_list(other.msp_peptide_natural_isotope_list) { } PeptideNaturalIsotopeList::~PeptideNaturalIsotopeList() { } const std::map PeptideNaturalIsotopeList::getIntensityRatioPerIsotopeNumber() const { std::list::const_iterator it = msp_peptide_natural_isotope_list.begin(); std::map map_isotope_number; while(it != msp_peptide_natural_isotope_list.end()) { unsigned int number = it->get()->getIsotopeNumber(); std::pair::iterator, bool> mapnew = map_isotope_number.insert( std::pair(number, 0)); if(mapnew.second == false) { // mapit = map_isotope_number.insert(std::pair(number, 0)); } mapnew.first->second += it->get()->getIntensityRatio(1); it++; } return map_isotope_number; } /** /brief get a sorted (by expected intensity) vector of isotopes of the same * level * * */ std::vector PeptideNaturalIsotopeList::getByIsotopeNumber(unsigned int isotope_number, unsigned int charge) const { std::vector v_isotope_list; for(auto &&isotopeSp : msp_peptide_natural_isotope_list) { if(isotopeSp.get()->getIsotopeNumber() == isotope_number) { v_isotope_list.push_back(isotopeSp); } } std::sort(v_isotope_list.begin(), v_isotope_list.end(), [charge](const PeptideNaturalIsotopeSp &m, const PeptideNaturalIsotopeSp &n) { return (m.get()->getIntensityRatio(charge) > n.get()->getIntensityRatio(charge)); }); return v_isotope_list; } /** /brief get a sorted (by expected intensity) vector of natural isotope * average by isotope number * * */ std::vector getByIntensityRatioByIsotopeNumber(const PeptideInterfaceSp &peptide, unsigned int charge, PrecisionPtr precision, unsigned int isotopeNumber, pappso_double minimumIntensity) { // qDebug() << "getByIntensityRatioByIsotopeNumber begin"; unsigned int askedIsotopeRank; unsigned int maxAskedIsotopeRank = 10; pappso_double cumulativeRatio = 0; std::vector v_isotopeAverageList; std::vector v_isotopeAverageListResult; std::vector previousIsotopeRank; bool isEmpty = false; for(askedIsotopeRank = 1; (askedIsotopeRank < maxAskedIsotopeRank) && (!isEmpty); askedIsotopeRank++) { PeptideNaturalIsotopeAverage isotopeAverage( peptide, askedIsotopeRank, isotopeNumber, charge, precision); isEmpty = isotopeAverage.isEmpty(); if(isEmpty) { } else { if(std::find(previousIsotopeRank.begin(), previousIsotopeRank.end(), isotopeAverage.getIsotopeRank()) == previousIsotopeRank.end()) { // not Found previousIsotopeRank.push_back(isotopeAverage.getIsotopeRank()); v_isotopeAverageList.push_back( isotopeAverage.makePeptideNaturalIsotopeAverageSp()); } } } if(v_isotopeAverageList.size() == 0) return v_isotopeAverageListResult; // qDebug() << "getByIntensityRatioByIsotopeNumber comp"; std::sort(v_isotopeAverageList.begin(), v_isotopeAverageList.end(), [](const PeptideNaturalIsotopeAverageSp &m, const PeptideNaturalIsotopeAverageSp &n) { return (m.get()->getIntensityRatio() > n.get()->getIntensityRatio()); }); cumulativeRatio = 0; auto it = v_isotopeAverageList.begin(); v_isotopeAverageListResult.clear(); // qDebug() << "getByIntensityRatioByIsotopeNumber cumul"; while((it != v_isotopeAverageList.end()) && (cumulativeRatio < minimumIntensity)) { cumulativeRatio += it->get()->getIntensityRatio(); v_isotopeAverageListResult.push_back(*it); it++; } // qDebug() << "getByIntensityRatioByIsotopeNumber end"; return v_isotopeAverageListResult; } /** /brief get a sorted (by expected intensity) vector of natural isotope * average * * */ std::vector PeptideNaturalIsotopeList::getByIntensityRatio( unsigned int charge, PrecisionPtr precision, pappso_double minimumIntensityRatio) const { // qDebug() << "PeptideNaturalIsotopeList::getByIntensityRatio begin"; std::vector peptide_natural_isotope_average_list; std::map map_isotope_number = getIntensityRatioPerIsotopeNumber(); std::vector> sorted_number_ratio; for(unsigned int i = 0; i < map_isotope_number.size(); i++) { sorted_number_ratio.push_back( std::pair(i, map_isotope_number[i])); unsigned int asked_rank = 0; unsigned int given_rank = 0; bool more_rank = true; while(more_rank) { asked_rank++; pappso::PeptideNaturalIsotopeAverage isotopeAverageMono( *this, asked_rank, i, charge, precision); given_rank = isotopeAverageMono.getIsotopeRank(); if(given_rank < asked_rank) { more_rank = false; } else if(isotopeAverageMono.getIntensityRatio() == 0) { more_rank = false; } else { // isotopeAverageMono.makePeptideNaturalIsotopeAverageSp(); peptide_natural_isotope_average_list.push_back( isotopeAverageMono.makePeptideNaturalIsotopeAverageSp()); } } } // sort by intensity ratio std::sort(sorted_number_ratio.begin(), sorted_number_ratio.end(), [](const std::pair &m, const std::pair &n) { return (m.second > n.second); }); double cumulativeRatio = 0; std::vector selected_isotope_number_list; for(auto &pair_isotope_number : sorted_number_ratio) { if(cumulativeRatio <= minimumIntensityRatio) { selected_isotope_number_list.push_back(pair_isotope_number.first); } else { break; } cumulativeRatio += pair_isotope_number.second; } auto it_remove = std::remove_if(peptide_natural_isotope_average_list.begin(), peptide_natural_isotope_average_list.end(), [selected_isotope_number_list]( const PeptideNaturalIsotopeAverageSp &average) { auto it = std::find(selected_isotope_number_list.begin(), selected_isotope_number_list.end(), average.get()->getIsotopeNumber()); return (it == selected_isotope_number_list.end()); }); peptide_natural_isotope_average_list.erase( it_remove, peptide_natural_isotope_average_list.end()); return peptide_natural_isotope_average_list; } PeptideNaturalIsotopeList::const_iterator PeptideNaturalIsotopeList::begin() const { return msp_peptide_natural_isotope_list.begin(); } PeptideNaturalIsotopeList::const_iterator PeptideNaturalIsotopeList::end() const { return msp_peptide_natural_isotope_list.end(); } unsigned int PeptideNaturalIsotopeList::size() const { return msp_peptide_natural_isotope_list.size(); } const PeptideInterfaceSp & PeptideNaturalIsotopeList::getPeptideInterfaceSp() const { return msp_peptide; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidenaturalisotopelist.h000644 001750 001750 00000006536 14346367014 030037 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptidenaturalisotopelist.h * \date 8/3/2015 * \author Olivier Langella * \brief peptide natural isotope model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "peptidenaturalisotope.h" #include "peptidenaturalisotopeaverage.h" #include "../exportinmportconfig.h" namespace pappso { class PeptideNaturalIsotopeList; typedef std::shared_ptr PeptideNaturalIsotopeListSp; class PMSPP_LIB_DECL PeptideNaturalIsotopeList { private: const PeptideInterfaceSp msp_peptide; std::list msp_peptide_natural_isotope_list; public: /** @brief compute the list of possible isotopes for a peptide * @param peptide the peptide * @param minimu_ratio_to_compute the limit under which we stop to compute * because the ratio is too thin and not informative (default is 0.001). This * limit is the same for each atom to survey : CHNOS */ PeptideNaturalIsotopeList(const PeptideInterfaceSp &peptide, pappso_double minimum_ratio_to_compute = 0.001); PeptideNaturalIsotopeList(const PeptideNaturalIsotopeList &other); ~PeptideNaturalIsotopeList(); PeptideNaturalIsotopeListSp makePeptideNaturalIsotopeListSp() const; typedef std::list::const_iterator const_iterator; const_iterator begin() const; const_iterator end() const; const std::map getIntensityRatioPerIsotopeNumber() const; std::vector getByIsotopeNumber(unsigned int isotopeLevel, unsigned int charge) const; /** @brief get the list of natural isotopes representing at least a minimum * ratio of the whole isotope pattern * @param charge gives the number of H+, important to take into account for * isotope ratio * @param precision the mass accuracy to take into acount each isotope (C13 != * H2) * @param minimum_isotope_pattern_ratio the minimum ratio of the isotope * pattern to represent */ std::vector getByIntensityRatio(unsigned int charge, PrecisionPtr precision, pappso_double minimum_isotope_pattern_ratio) const; unsigned int size() const; const PeptideInterfaceSp &getPeptideInterfaceSp() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptiderawfragmentmasses.cpp000644 001750 001750 00000015660 14526455546 030164 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptiderawfragmentmasses.cpp * \date 16/7/2016 * \author Olivier Langella * \brief class dedicated to raw mass computations of peptide products * (fragments) */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptiderawfragmentmasses.h" namespace pappso { PeptideRawFragmentMasses::ionDeltatMzMassMap PeptideRawFragmentMasses::m_ionDeltaMz = { [(std::int8_t)PeptideIon::b] = 0, [(std::int8_t)PeptideIon::bstar] = -MASSNH3, [(std::int8_t)PeptideIon::bo] = -MASSH2O, [(std::int8_t)PeptideIon::a] = -MASSCO, [(std::int8_t)PeptideIon::astar] = -MASSCO - MASSNH3, [(std::int8_t)PeptideIon::ao] = -MASSCO - MASSH2O, [(std::int8_t)PeptideIon::bp] = -1, [(std::int8_t)PeptideIon::c] = MASSNH3, [(std::int8_t)PeptideIon::y] = MASSH2O, [(std::int8_t)PeptideIon::ystar] = MASSH2O - MASSNH3, [(std::int8_t)PeptideIon::yo] = 0, [(std::int8_t)PeptideIon::z] = MASSOXYGEN - MASSNITROGEN - MPROTIUM, [(std::int8_t)PeptideIon::yp] = -1, [(std::int8_t)PeptideIon::x] = MASSCO + MASSOXYGEN}; pappso_double PeptideRawFragmentMasses::getDeltaMass(PeptideIon ion_type) { return m_ionDeltaMz[(std::int8_t)ion_type]; } PeptideRawFragmentMasses::PeptideRawFragmentMasses(const Peptide &peptide, RawFragmentationMode mode) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; std::vector::const_iterator it(peptide.begin()); std::vector::const_iterator end(peptide.end()); if(it == end) return; pappso_double nter_internal = peptide.getInternalNterModification()->getMass(); pappso_double cter_internal = peptide.getInternalCterModification()->getMass(); qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; pappso_double cumulative_mass = it->getMass() - nter_internal; qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; m_cumulativeNterMasses.push_back(cumulative_mass); it++; if(it != end) { end--; qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; while(it != end) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " cumulative_mass=" << cumulative_mass; cumulative_mass += it->getMass(); if((mode == RawFragmentationMode::proline_effect) && (it->getLetter() == 'P')) { } else { m_cumulativeNterMasses.push_back(cumulative_mass); } it++; } } qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; std::vector::const_reverse_iterator rit(peptide.rbegin()); std::vector::const_reverse_iterator ritf(peptide.rbegin()); std::vector::const_reverse_iterator rend(peptide.rend()); ritf++; cumulative_mass = rit->getMass() - cter_internal; if((mode == RawFragmentationMode::proline_effect) && (ritf != rend) && (ritf->getLetter() == 'P')) { } else { m_cumulativeCterMasses.push_back(cumulative_mass); } qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; rit++; ritf++; if(rit != rend) { rend--; while(rit != rend) { cumulative_mass += rit->getMass(); if((mode == RawFragmentationMode::proline_effect) && (ritf != peptide.rend()) && (ritf->getLetter() == 'P')) { } else { m_cumulativeCterMasses.push_back(cumulative_mass); } rit++; ritf++; } } qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } void PeptideRawFragmentMasses::pushBackIonMasses( std::vector &mass_list, PeptideIon ion_type) const { const std::vector *p_mass_list = &m_cumulativeCterMasses; if(peptideIonIsNter(ion_type)) { // nter p_mass_list = &m_cumulativeNterMasses; } for(pappso_double mass : *p_mass_list) { mass_list.push_back(mass + m_ionDeltaMz[(std::int8_t)ion_type]); } } void PeptideRawFragmentMasses::pushBackIonMz(std::vector &mass_list, PeptideIon ion_type, unsigned int charge) const { const std::vector *p_mass_list = &m_cumulativeCterMasses; if(peptideIonIsNter(ion_type)) { // nter p_mass_list = &m_cumulativeNterMasses; } for(pappso_double mass : *p_mass_list) { mass_list.push_back( (mass + m_ionDeltaMz[(std::int8_t)ion_type] + (MHPLUS * charge)) / charge); } } void PeptideRawFragmentMasses::pushBackMatchSpectrum( std::vector &peak_match_list, const MassSpectrum &spectrum, PrecisionPtr precision, PeptideIon ion_type, unsigned int charge) const { std::vector mass_list; pushBackIonMz(mass_list, ion_type, charge); // no need to sort // std::sort(mass_list.begin(), mass_list.end()); std::vector::iterator it_mz = mass_list.begin(); std::vector::iterator it_mz_end = mass_list.end(); // scan products over each peak in spectrum : std::vector::const_iterator it_peak = spectrum.begin(); std::vector::const_iterator it_peak_end = spectrum.end(); unsigned int ion_size = 1; while((it_peak != it_peak_end) && (it_mz != it_mz_end)) { MzRange massrange(it_peak->x, precision); if((*it_mz) > massrange.upper()) { it_peak++; continue; } if((*it_mz) < massrange.lower()) { it_mz++; ion_size++; continue; } peak_match_list.push_back( {(*it_peak), ion_type, ion_size, charge, (*it_mz)}); it_mz++; ion_size++; } } PeptideRawFragmentMasses::~PeptideRawFragmentMasses() { } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptiderawfragmentmasses.h000644 001750 001750 00000005406 14346367014 027616 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptiderawfragmentmasses.h * \date 16/7/2016 * \author Olivier Langella * \brief class dedicated to raw mass computations of peptide products * (fragments) */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "peptide.h" #include "../massspectrum/massspectrum.h" namespace pappso { enum class RawFragmentationMode : std::int8_t { full = 0, proline_effect = 1 }; struct SimplePeakIonMatch { DataPoint peak; PeptideIon ion_type; unsigned int ion_size; unsigned int ion_charge; pappso_double ion_mz; }; class PMSPP_LIB_DECL PeptideRawFragmentMasses { using ionDeltatMzMassMap = pappso_double[20]; private: static ionDeltatMzMassMap m_ionDeltaMz; /** \brief cumulative Nter masses (without internal Nter modification) * */ std::vector m_cumulativeNterMasses; /** \brief cumulative Cter masses (without internal Cter modification) * */ std::vector m_cumulativeCterMasses; public: PeptideRawFragmentMasses(const Peptide &peptide, RawFragmentationMode mode); ~PeptideRawFragmentMasses(); void pushBackIonMasses(std::vector &mass_list, PeptideIon ion_type) const; void pushBackIonMz(std::vector &mass_list, PeptideIon ion_type, unsigned int charge) const; void pushBackMatchSpectrum(std::vector &peak_match_list, const MassSpectrum &spectrum, PrecisionPtr precision, PeptideIon ion_type, unsigned int charge) const; static pappso_double getDeltaMass(PeptideIon ion_type); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidestrparser.cpp000644 001750 001750 00000013661 14526455546 026457 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "peptidestrparser.h" #include "../obo/filterobopsimodtermlabel.h" #include "../obo/filterobopsimodsink.h" namespace pappso { QRegularExpression PeptideStrParser::_mod_parser("\\([^)]*\\)"); QRegularExpression PeptideStrParser::_rx_psimod("MOD:[0-9]+"); QRegularExpression PeptideStrParser::_rx_modmass("[-+]?[0-9]+\\.?[0-9]*"); void PeptideStrParser::parseStringToPeptide(const QString &pepstr, Peptide &peptide) { // Peptide // peptide2("C(MOD:00397+MOD:01160)C(MOD:00397)AADDKEAC(MOD:00397)FAVEGPK"); // CCAADDKEACFAVEGPK /* */ int matched_length_cumul = 0; int pos = 0; QRegularExpressionMatch match_mod = _mod_parser.match(pepstr, pos); while(match_mod.hasMatch()) { pos = match_mod.capturedStart(0); QString captured = match_mod.captured(0); qDebug() << " captured=" << captured << " pos=" << pos << " match_mod.lastCapturedIndex()=" << match_mod.lastCapturedIndex(); QStringList mod_list = captured.mid(1, captured.size() - 2) .split(QRegularExpression("[+,\\,]")); for(QString &mod : mod_list) { qDebug() << "PeptideStrParser::parseString mod " << mod; QRegularExpressionMatch match_psimod = _rx_psimod.match(mod); if(match_psimod.hasMatch()) { qDebug() << "PeptideStrParser::parseString pos-1 " << (pos - 1 - matched_length_cumul); peptide.addAaModification(AaModification::getInstance(mod), pos - 1 - matched_length_cumul); } else if(mod.startsWith("internal:Nter_")) { peptide.setInternalNterModification( AaModification::getInstance(mod)); } else if(mod.startsWith("internal:Cter_")) { peptide.setInternalCterModification( AaModification::getInstance(mod)); } else if(mod.startsWith("C13N15:")) { qDebug() << "PeptideStrParser::parseString pos-1 " << (pos - 1 - matched_length_cumul); peptide.addAaModification(AaModification::getInstance(mod), pos - 1 - matched_length_cumul); } else { qDebug() << "mod=" << mod; QRegularExpressionMatch match_modmass = _rx_modmass.match(mod); if(match_modmass.hasMatch()) { // number qDebug() << "number mod=" << mod << " cap=" << match_modmass.captured(0); if(!mod.contains(".")) { // integer qDebug() << "integer mod=" << mod; mod = "MOD:0000" + mod; while(mod.size() > 9) { mod = mod.replace(4, 1, ""); } peptide.addAaModification( AaModification::getInstance(mod), pos - 1 - matched_length_cumul); } else { qDebug() << "double mod=" << mod; peptide.addAaModification( AaModification::getInstanceCustomizedMod( mod.toDouble()), pos - 1 - matched_length_cumul); } } else { qDebug() << "not a number mod=" << mod; FilterOboPsiModSink term_list; FilterOboPsiModTermLabel filter_label(term_list, mod); OboPsiMod psimod(filter_label); peptide.addAaModification( AaModification::getInstance(term_list.getFirst()), pos - 1 - matched_length_cumul); } } } matched_length_cumul += captured.size(); match_mod = _mod_parser.match(pepstr, pos + 1); } } PeptideSp PeptideStrParser::parseString(const QString &pepstr) { // QMutexLocker locker(&_mutex); Peptide peptide(QString(pepstr).replace(_mod_parser, "")); PeptideStrParser::parseStringToPeptide(pepstr, peptide); return (peptide.makePeptideSp()); } NoConstPeptideSp PeptideStrParser::parseNoConstString(const QString &pepstr) { // QMutexLocker locker(&_mutex); Peptide peptide(QString(pepstr).replace(_mod_parser, "")); PeptideStrParser::parseStringToPeptide(pepstr, peptide); return (peptide.makeNoConstPeptideSp()); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptidestrparser.h000644 001750 001750 00000003124 14346367014 026105 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "peptide.h" #include namespace pappso { class PMSPP_LIB_DECL PeptideStrParser { public: static PeptideSp parseString(const QString &pepstr); static NoConstPeptideSp parseNoConstString(const QString &pepstr); private: static void parseStringToPeptide(const QString &pepstr, Peptide &peptide); private: static QRegularExpression _mod_parser; static QRegularExpression _rx_psimod; static QRegularExpression _rx_modmass; // static QMutex _mutex; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptide.cpp000644 001750 001750 00000037010 14531326221 024462 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptide.cpp * \date 7/3/2015 * \author Olivier Langella * \brief peptide model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include "peptide.h" #include "../pappsoexception.h" #include "../exception/exceptionoutofrange.h" #include "../exception/exceptionnotpossible.h" #include "peptidenaturalisotopelist.h" namespace pappso { bool peptideIonTypeIsComplement(PeptideIon ion_type_ref, PeptideIon ion_type) { if(peptideIonIsNter(ion_type)) std::swap(ion_type_ref, ion_type); if(peptideIonIsNter(ion_type)) return false; if((ion_type_ref == PeptideIon::b) && (ion_type == PeptideIon::y)) return true; if((ion_type_ref == PeptideIon::ao) && (ion_type == PeptideIon::yo)) return true; if((ion_type_ref == PeptideIon::bstar) && (ion_type == PeptideIon::ystar)) return true; return false; } bool peptideIonIsNter(PeptideIon ion_type) { if((std::int8_t)ion_type < (std::int8_t)8) { return true; } return false; } PeptideDirection getPeptideIonDirection(PeptideIon ion_type) { if(peptideIonIsNter(ion_type)) { return PeptideDirection::Nter; } return PeptideDirection::Cter; } Peptide::Peptide(const QString &pepstr) { QString::const_iterator it(pepstr.begin()); if(it != pepstr.end()) { // first amino acid is the Nter one // by default, it is obtained by hydrolytic cleavage in normal water // and it is loaded with one Hydrogen Aa nter_aa(it->toLatin1()); nter_aa.addAaModification( AaModification::getInstance("internal:Nter_hydrolytic_cleavage_H")); m_aaVec.push_back(nter_aa); it++; while(it != pepstr.end()) { m_aaVec.push_back(Aa(it->toLatin1())); it++; } // by default, Nter aa is obtained by hydrolytic cleavage in normal water // and it is loaded with Hydrogen + Oxygen m_aaVec.back().addAaModification( AaModification::getInstance("internal:Cter_hydrolytic_cleavage_HO")); getMass(); qDebug() << "blabla " << m_aaVec.back().toString(); } } Peptide::~Peptide() { } Peptide::Peptide(const Peptide &peptide) : m_aaVec(peptide.m_aaVec), m_proxyMass(peptide.m_proxyMass) { } Peptide::Peptide(Peptide &&toCopy) // move constructor : m_aaVec(std::move(toCopy.m_aaVec)), m_proxyMass(toCopy.m_proxyMass) { } PeptideSp Peptide::makePeptideSp() const { return std::make_shared(*this); } NoConstPeptideSp Peptide::makeNoConstPeptideSp() const { return std::make_shared(*this); } std::vector::iterator Peptide::begin() { return m_aaVec.begin(); } std::vector::iterator Peptide::end() { return m_aaVec.end(); } std::vector::const_iterator Peptide::begin() const { return m_aaVec.begin(); } std::vector::const_iterator Peptide::end() const { return m_aaVec.end(); } std::vector::const_reverse_iterator Peptide::rbegin() const { return m_aaVec.rbegin(); } std::vector::const_reverse_iterator Peptide::rend() const { return m_aaVec.rend(); } pappso_double Peptide::getMass() const { return m_proxyMass; } unsigned int Peptide::size() const { return m_aaVec.size(); } void Peptide::addAaModification(AaModificationP aaModification, unsigned int position) { if(position >= size()) { throw ExceptionOutOfRange( QObject::tr("position (%1) > size (%2)").arg(position).arg(size())); } m_proxyMass = -1; qDebug() << "Peptide::addAaModification begin " << position; std::vector::iterator it = m_aaVec.begin() + position; it->addAaModification(aaModification); getMass(); qDebug() << "Peptide::addAaModification end"; } void Peptide::addAaModificationOnAllAminoAcid(AaModificationP aaModification, AminoAcidChar amino_acid) { for(auto &aa : *this) { if(aa.getAminoAcidChar() == amino_acid) { aa.addAaModification(aaModification); } } m_proxyMass = -1; getMass(); } const QString Peptide::getSequence() const { QString seq = ""; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { seq += it->getLetter(); it++; } return seq; } const QString Peptide::toAbsoluteString() const { QString seq = ""; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { seq += it->toAbsoluteString(); it++; } return seq; } const QString Peptide::getLiAbsoluteString() const { QString seq = ""; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { seq += it->toAbsoluteString(); it++; } return seq.replace("L", "I"); } const QString Peptide::toString() const { QString seq = ""; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { seq += it->toString(); it++; } return seq; } pappso_double Peptide::getMass() { qDebug() << "Aa::getMass() begin"; if(m_proxyMass < 0) { m_proxyMass = 0; for(auto aa : m_aaVec) { m_proxyMass += aa.getMass(); } } qDebug() << "Aa::getMass() end " << m_proxyMass; return m_proxyMass; } int Peptide::getNumberOfAtom(AtomIsotopeSurvey atom) const { int number = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { number += it->getNumberOfAtom(atom); it++; } // qDebug() << "Aa::getMass() end " << mass; return number; } int Peptide::getNumberOfIsotope(Isotope isotope) const { int number = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { number += it->getNumberOfIsotope(isotope); it++; } // qDebug() << "Aa::getMass() end " << mass; return number; } unsigned int Peptide::getNumberOfModification(AaModificationP mod) const { unsigned int number = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { number += it->getNumberOfModification(mod); it++; } // qDebug() << "Aa::getMass() end " << mass; return number; } unsigned int Peptide::countModificationOnAa(AaModificationP mod, const std::vector &aa_list) const { unsigned int number = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) != aa_list.end()) { number += it->getNumberOfModification(mod); } it++; } // qDebug() << "Aa::getMass() end " << mass; return number; } void Peptide::replaceAaModification(AaModificationP oldmod, AaModificationP newmod) { if(oldmod == newmod) return; std::vector::iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { it->replaceAaModification(oldmod, newmod); it++; } m_proxyMass = -1; getMass(); } void Peptide::removeAaModification(AaModificationP mod) { std::vector::iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { it->removeAaModification(mod); qDebug() << it->toString() << " " << toAbsoluteString(); it++; } m_proxyMass = -1; getMass(); // qDebug() << "Aa::getMass() end " << mass; } std::vector Peptide::getModificationPositionList(AaModificationP mod) const { std::vector position_list; unsigned int position = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { unsigned int number = 0; number += it->getNumberOfModification(mod); for(unsigned int j = 0; j < number; j++) { position_list.push_back(position); } it++; position++; } // qDebug() << "Aa::getMass() end " << mass; return position_list; } std::vector Peptide::getModificationPositionList(AaModificationP mod, const std::vector &aa_list) const { std::vector position_list; unsigned int position = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) != aa_list.end()) { unsigned int number = 0; number += it->getNumberOfModification(mod); for(unsigned int j = 0; j < number; j++) { position_list.push_back(position); } } it++; position++; } // qDebug() << "Aa::getMass() end " << mass; return position_list; } std::vector Peptide::getAaPositionList(char aa) const { std::vector position_list; unsigned int number = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { if(it->getLetter() == aa) position_list.push_back(number); number++; it++; } // qDebug() << "Aa::getMass() end " << mass; return position_list; } std::vector Peptide::getAaPositionList(std::list list_aa) const { std::vector position_list; unsigned int number = 0; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { bool found = (std::find(list_aa.begin(), list_aa.end(), it->getLetter()) != list_aa.end()); if(found) { position_list.push_back(number); } number++; it++; } // qDebug() << "Aa::getMass() end " << mass; return position_list; } AaModificationP Peptide::getInternalNterModification() const { std::vector::const_iterator it(m_aaVec.begin()); if(it != m_aaVec.end()) { return it->getInternalNterModification(); } return nullptr; } AaModificationP Peptide::getInternalCterModification() const { std::vector::const_iterator it(m_aaVec.end()); it--; if(it != m_aaVec.end()) { return it->getInternalCterModification(); } return nullptr; } void Peptide::removeInternalNterModification() { std::vector::iterator it(m_aaVec.begin()); if(it != m_aaVec.end()) { m_proxyMass -= it->getMass(); it->removeInternalNterModification(); m_proxyMass += it->getMass(); } } void Peptide::removeInternalCterModification() { std::vector::iterator it(m_aaVec.end()); it--; if(it != m_aaVec.end()) { m_proxyMass -= it->getMass(); it->removeInternalCterModification(); m_proxyMass += it->getMass(); } } void Peptide::setInternalNterModification(AaModificationP mod) { if(mod->getAccession().startsWith("internal:Nter_")) { removeInternalNterModification(); std::vector::iterator it(m_aaVec.begin()); if(it != m_aaVec.end()) { it->addAaModification(mod); } else { throw ExceptionOutOfRange(QObject::tr("peptide is empty")); } } else { throw ExceptionNotPossible( QObject::tr("modification is not an internal Nter modification : %1") .arg(mod->getAccession())); } } void Peptide::setInternalCterModification(AaModificationP mod) { if(mod->getAccession().startsWith("internal:Cter_")) { removeInternalCterModification(); std::vector::iterator it(m_aaVec.end()); it--; if(it != m_aaVec.end()) { it->addAaModification(mod); } else { throw ExceptionOutOfRange(QObject::tr("peptide is empty")); } } else { throw ExceptionNotPossible( QObject::tr("modification is not an internal Cter modification : %1") .arg(mod->getAccession())); } } void Peptide::rotate() { AaModificationP modNter = getInternalNterModification(); AaModificationP modCter = getInternalCterModification(); m_aaVec.begin()->removeInternalNterModification(); (m_aaVec.end() - 1)->removeInternalCterModification(); std::rotate(m_aaVec.begin(), m_aaVec.begin() + 1, m_aaVec.end()); m_aaVec.begin()->addAaModification(modNter); (m_aaVec.end() - 1)->addAaModification(modCter); } void Peptide::reverse() { AaModificationP modNter = getInternalNterModification(); AaModificationP modCter = getInternalCterModification(); m_aaVec.begin()->removeInternalNterModification(); (m_aaVec.end() - 1)->removeInternalCterModification(); std::reverse(m_aaVec.begin(), m_aaVec.end()); m_aaVec.begin()->addAaModification(modNter); (m_aaVec.end() - 1)->addAaModification(modCter); } bool Peptide::isPalindrome() const { std::size_t size = m_aaVec.size(); std::size_t k = (size - 1); for(std::size_t i = 0; i < (size / 2); i++, k--) { if(m_aaVec[i].getLetter() != m_aaVec[k].getLetter()) { return false; } } return true; } Aa & Peptide::getAa(unsigned int position) { if(position >= m_aaVec.size()) { throw ExceptionOutOfRange( QObject::tr("no AA at position %1").arg(position)); } return m_aaVec.at(position); } const Aa & Peptide::getConstAa(unsigned int position) const { if(position >= m_aaVec.size()) { throw ExceptionOutOfRange( QObject::tr("no AA at position %1").arg(position)); } return m_aaVec.at(position); } void Peptide::replaceLeucineIsoleucine() { std::vector::iterator it(m_aaVec.begin()); std::vector::iterator itend(m_aaVec.end()); for(; it != itend; it++) { it->replaceLeucineIsoleucine(); } } void Peptide::removeNterAminoAcid() { std::vector::iterator it(m_aaVec.begin()); if(it != m_aaVec.end()) { AaModificationP nter_modification = getInternalNterModification(); m_aaVec.erase(it); if(nter_modification != nullptr) { m_aaVec.begin()->addAaModification(nter_modification); } m_proxyMass = -1; getMass(); } else { throw ExceptionOutOfRange(QObject::tr("peptide is empty")); } } void Peptide::removeCterAminoAcid() { std::vector::iterator it(m_aaVec.end()); it--; if(it != m_aaVec.end()) { AaModificationP cter_modification = getInternalCterModification(); m_aaVec.erase(it); if(cter_modification != nullptr) { it = m_aaVec.end(); it--; it->addAaModification(cter_modification); } m_proxyMass = -1; getMass(); } else { throw ExceptionOutOfRange(QObject::tr("peptide is empty")); } } QString Peptide::toProForma() const { QString seq = ""; std::vector::const_iterator it(m_aaVec.begin()); while(it != m_aaVec.end()) { seq += it->toProForma(); it++; } return seq; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptide.h000644 001750 001750 00000016101 14531326221 024125 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptide.h * \date 7/3/2015 * \author Olivier Langella * \brief peptide model */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include #include "../amino_acid/aa.h" #include "peptideinterface.h" #include #include "../exportinmportconfig.h" namespace pappso { enum class PeptideDirection : std::int8_t { Nter = 0, Cter = 1 }; /** \brief tells if an ion is Nter * \param ion_type the ion to test */ PMSPP_LIB_DECL bool peptideIonIsNter(PeptideIon ion_type); /** \brief tells if an ion type is the complement ion of the other * \param ion_type_ref the ion type reference * \param ion_type the ion to test */ PMSPP_LIB_DECL bool peptideIonTypeIsComplement(PeptideIon ion_type_ref, PeptideIon ion_type); /** \brief get the direction of a peptide ion * \param ion_type the ion to test * \return the peptide direction */ PMSPP_LIB_DECL PeptideDirection getPeptideIonDirection(PeptideIon ion_type); enum class PeptideIonNter { b, bstar, bo, a, astar, ao, bp, c }; enum class PeptideIonCter { y, ystar, yo, z, yp, x }; class Peptide; typedef std::shared_ptr PeptideSp; typedef std::shared_ptr NoConstPeptideSp; class PMSPP_LIB_DECL Peptide : public PeptideInterface { friend class PeptideProFormaParser; public: Peptide(const QString &pepstr); virtual ~Peptide(); Peptide(const Peptide &peptide); friend bool operator<(const Peptide &l, const Peptide &r) { return (l.m_aaVec < r.m_aaVec); } friend bool operator==(const Peptide &l, const Peptide &r) { return (l.m_aaVec == r.m_aaVec); } Peptide(Peptide &&toCopy); PeptideSp makePeptideSp() const; NoConstPeptideSp makeNoConstPeptideSp() const; /** @brief adds a modification to amino acid sequence * @param aaModification pointer on modification to add * @param position position in the amino acid sequence (starts at 0) * */ void addAaModification(AaModificationP aaModification, unsigned int position); /** @brief adds a modification to all amino acid of the sequence * @param aaModification pointer on modification to add * @param AminoAcidChar amino_acid to apply the modification * */ void addAaModificationOnAllAminoAcid(AaModificationP aaModification, AminoAcidChar amino_acid); std::vector::iterator begin(); std::vector::iterator end(); std::vector::const_iterator begin() const; std::vector::const_iterator end() const; std::vector::const_reverse_iterator rbegin() const; std::vector::const_reverse_iterator rend() const; Aa &getAa(unsigned int position); const Aa &getConstAa(unsigned int position) const; pappso_double getMass(); pappso_double getMass() const override; virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override; virtual int getNumberOfIsotope(Isotope isotope) const override; /** \brief print amino acid sequence without modifications */ const QString getSequence() const override; unsigned int size() const override; /** @brief count modification occurence * @param mod modification to look for * @result number of occurences */ unsigned int getNumberOfModification(AaModificationP mod) const; /** @brief count modification occurence * @param mod modification to look for * @param aa_list amino acid list targets (one letter code) * @result number of occurences */ unsigned int countModificationOnAa(AaModificationP mod, const std::vector &aa_list) const; /** @brief replaces all occurences of a modification by a new one * @param oldmod modification to change * @param newmod new modification */ void replaceAaModification(AaModificationP oldmod, AaModificationP newmod); /** @brief removes all occurences of a modification * @param mod modification to remove */ void removeAaModification(AaModificationP mod); /** @brief get modification positions * @param mod modification to look for * @result vector containing positions (from 0 to size-1) */ std::vector getModificationPositionList(AaModificationP mod) const; /** @brief get modification positions * @param mod modification to look for * @param aa_list amino acid list targets (one letter code) * @result vector containing positions (from 0 to size-1) */ std::vector getModificationPositionList(AaModificationP mod, const std::vector &aa_list) const; /** @brief get positions of one amino acid in peptide * @param aa the one letter code of the amino acid * @result vector containing positions (from 0 to size-1) */ std::vector getAaPositionList(char aa) const; std::vector getAaPositionList(std::list list_aa) const; /** \brief print modification except internal modifications */ const QString toString() const; /** \brief print all modifications */ const QString toAbsoluteString() const; /** \brief get all sequence string with modifications and converting Leucine * to Isoleucine */ const QString getLiAbsoluteString() const; AaModificationP getInternalNterModification() const; AaModificationP getInternalCterModification() const; void removeInternalNterModification(); void removeInternalCterModification(); void setInternalNterModification(AaModificationP mod); void setInternalCterModification(AaModificationP mod); void rotate(); void reverse(); /** @brief tells if the peptide sequence is a palindrome */ virtual bool isPalindrome() const override; void replaceLeucineIsoleucine(); void removeNterAminoAcid(); void removeCterAminoAcid(); /** @brief get the peptide model in ProForma notation * https://github.com/HUPO-PSI/ProForma/blob/master/README.md * @return QString as described in ProForma */ QString toProForma() const; protected: std::vector m_aaVec; pappso_double m_proxyMass = -1; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptideproformaparser.cpp000644 001750 001750 00000007705 14531326221 027455 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptideproformaparser.cpp * \date 27/11/2023 * \author Olivier Langella * \brief parse peptide string in ProForma to pappso::Peptide */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "peptideproformaparser.h" #include "../obo/filterobopsimodtermlabel.h" #include "../obo/filterobopsimodsink.h" namespace pappso { // QRegularExpression PeptideProFormaParser::_mod_parser("\\[[^\\]]*\\]"); QRegularExpression PeptideProFormaParser::_rx_psimod("MOD:[0-9]+"); QRegularExpression PeptideProFormaParser::_rx_modmass("[-+]?[0-9]+\\.?[0-9]*"); void PeptideProFormaParser::parseStringToPeptide(const QString &pepstr, Peptide &peptide) { // Peptide // peptide2("C[MOD:00397][MOD:01160]C[MOD:00397]AADDKEAC[MOD:00397]FAVEGPK"); // CCAADDKEACFAVEGPK /* */ std::size_t i = 0; std::size_t end = pepstr.size(); while(i < end) { QChar aa_char = pepstr[i]; if(aa_char == '[') { QString mod; i++; aa_char = pepstr[i]; while((i < end) && (aa_char != ']')) { mod.append(aa_char); i++; aa_char = pepstr[i]; } // we have a mod // is it a double ? bool is_double = false; double mass_modif = mod.toDouble(&is_double); if(is_double) { peptide.m_aaVec.back().addAaModification( AaModification::getInstanceCustomizedMod(mass_modif)); } else { peptide.m_aaVec.back().addAaModification( AaModification::getInstance(mod)); } } else { if(aa_char.isLetter()) { Aa pappso_aa(aa_char.toLatin1()); if(peptide.size() == 0) { pappso_aa.addAaModification(AaModification::getInstance( "internal:Nter_hydrolytic_cleavage_H")); } peptide.m_aaVec.push_back(pappso_aa); } } i++; } peptide.m_aaVec.back().addAaModification( AaModification::getInstance("internal:Cter_hydrolytic_cleavage_HO")); // qDebug() << peptide.toProForma(); peptide.m_proxyMass = -1; peptide.getMass(); } PeptideSp PeptideProFormaParser::parseString(const QString &pepstr) { // QMutexLocker locker(&_mutex); Peptide peptide(""); PeptideProFormaParser::parseStringToPeptide(pepstr, peptide); // qDebug() << peptide.toProForma(); return (peptide.makePeptideSp()); } NoConstPeptideSp PeptideProFormaParser::parseNoConstString(const QString &pepstr) { // QMutexLocker locker(&_mutex); Peptide peptide(""); PeptideProFormaParser::parseStringToPeptide(pepstr, peptide); return (peptide.makeNoConstPeptideSp()); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/peptide/peptideproformaparser.h000644 001750 001750 00000003307 14531326221 027114 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/peptide/peptideproformaparser.h * \date 27/11/2023 * \author Olivier Langella * \brief parse peptide string in ProForma to pappso::Peptide * https://github.com/HUPO-PSI/ProForma/blob/master/README.md */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "peptide.h" namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL PeptideProFormaParser { public: static PeptideSp parseString(const QString &pepstr); static NoConstPeptideSp parseNoConstString(const QString &pepstr); private: static void parseStringToPeptide(const QString &pepstr, Peptide &peptide); private: //static QRegularExpression _mod_parser; static QRegularExpression _rx_psimod; static QRegularExpression _rx_modmass; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/000755 001750 001750 00000000000 14533473271 023057 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/000755 001750 001750 00000000000 14533473271 025040 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massdatacombinerinterface.cpp000644 001750 001750 00000001705 14526455546 032753 0ustar00rusconirusconi000000 000000 /////////////////////// StdLib includes /////////////////////// Qt includes /////////////////////// pappsomspp includes /////////////////////// Local includes #include "massdatacombinerinterface.h" namespace pappso { MassDataCombinerInterface::MassDataCombinerInterface(int decimal_places) : m_decimalPlaces(decimal_places) { } MassDataCombinerInterface::~MassDataCombinerInterface() { } void MassDataCombinerInterface::setDecimalPlaces(int value) { m_decimalPlaces = value; } int MassDataCombinerInterface::getDecimalPlaces() const { return m_decimalPlaces; } // using Iterator = std::vector::const_iterator; MapTrace & MassDataCombinerInterface::combine(MapTrace &map_trace, Iterator begin, Iterator end) { for(Iterator iterator = begin; iterator != end; ++iterator) combine(map_trace, *(*iterator)); return map_trace; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massdatacombinerinterface.h000644 001750 001750 00000002151 14346367014 032404 0ustar00rusconirusconi000000 000000 #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes /////////////////////// pappsomspp includes /////////////////////// Local includes #include "../../types.h" #include "selectionpolygon.h" #include "../../trace/maptrace.h" #include "../../massspectrum/qualifiedmassspectrum.h" #include "../filters/filterresample.h" #include "../../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL MassDataCombinerInterface { public: MassDataCombinerInterface(int decimal_places = -1); virtual ~MassDataCombinerInterface(); void setDecimalPlaces(int value); int getDecimalPlaces() const; using Iterator = std::vector::const_iterator; virtual MapTrace &combine(MapTrace &map_trace, Iterator begin, Iterator end); virtual MapTrace &combine(MapTrace &map_trace, const Trace &trace) const = 0; virtual MapTrace &combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const = 0; protected: //! Number of decimals to use for the keys (x values) int m_decimalPlaces = -1; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massspectrumcombiner.cpp000644 001750 001750 00000005562 14526455546 032030 0ustar00rusconirusconi000000 000000 #include #include #include #include #include #include #include #if 0 // For debugging purposes. #include #endif #include "massspectrumcombiner.h" #include "../../types.h" #include "../../utils.h" #include "../../pappsoexception.h" #include "../../exception/exceptionoutofrange.h" #include "../../exception/exceptionnotpossible.h" namespace pappso { //! Construct an uninitialized instance. MassSpectrumCombiner::MassSpectrumCombiner() { } MassSpectrumCombiner::MassSpectrumCombiner(int decimal_places) : MassDataCombinerInterface(decimal_places) { } MassSpectrumCombiner::MassSpectrumCombiner(std::vector bins, int decimalPlaces) : MassDataCombinerInterface(decimalPlaces) { m_bins.assign(bins.begin(), bins.end()); } MassSpectrumCombiner::MassSpectrumCombiner(const MassSpectrumCombiner &other) : MassDataCombinerInterface(other.m_decimalPlaces) { m_bins.assign(other.m_bins.begin(), other.m_bins.end()); // QString debug_string = QString( //"Number of bins: %1\n" //"First bins: %2 %3 %4 -- Last bins: %5 %6 %7\n") //.arg(m_bins.size()) //.arg(m_bins[0], 0, 'f', 6) //.arg(m_bins[1], 0, 'f', 6) //.arg(m_bins[2], 0, 'f', 6) //.arg(m_bins[m_bins.size() - 3], 0, 'f', 6) //.arg(m_bins[m_bins.size() - 2], 0, 'f', 6) //.arg(m_bins[m_bins.size() - 1], 0, 'f', 6); // qDebug().noquote() << debug_string; } MassSpectrumCombiner::MassSpectrumCombiner(MassSpectrumCombinerCstSPtr other) : MassDataCombinerInterface(other->m_decimalPlaces) { m_bins.assign(other->m_bins.begin(), other->m_bins.end()); } //! Destruct the instance. MassSpectrumCombiner::~MassSpectrumCombiner() { m_bins.clear(); } void MassSpectrumCombiner::setBins(std::vector bins) { m_bins.assign(bins.begin(), bins.end()); // QString debug_string = QString( //"Number of bins: %1\n" //"First bins: %2 %3 %4 -- Last bins: %5 %6 %7\n") //.arg(m_bins.size()) //.arg(m_bins[0], 0, 'f', 6) //.arg(m_bins[1], 0, 'f', 6) //.arg(m_bins[2], 0, 'f', 6) //.arg(m_bins[m_bins.size() - 3], 0, 'f', 6) //.arg(m_bins[m_bins.size() - 2], 0, 'f', 6) //.arg(m_bins[m_bins.size() - 1], 0, 'f', 6); // qDebug().noquote() << debug_string; } const std::vector & MassSpectrumCombiner::getBins() const { return m_bins; } std::size_t MassSpectrumCombiner::binCount() const { return m_bins.size(); } //! Find the bin that will contain \p mz. std::vector::iterator MassSpectrumCombiner::findBin(pappso_double mz) { return std::find_if(m_bins.begin(), m_bins.end(), [mz](pappso_double bin) { return (mz <= bin); }); } QString MassSpectrumCombiner::binsAsString() const { QString text; for(auto &bin : m_bins) text += QString("%1\n").arg(bin, 0, 'f', 6); text += "\n"; return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massspectrumcombiner.h000644 001750 001750 00000002465 14346367014 031464 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include "../../exportinmportconfig.h" #include "../../types.h" #include "../../mzrange.h" #include "../../massspectrum/massspectrum.h" #include "../../trace/datapoint.h" #include "../../trace/maptrace.h" #include "../filters/filterresample.h" #include "massdatacombinerinterface.h" namespace pappso { class MassSpectrumCombiner; typedef std::shared_ptr MassSpectrumCombinerCstSPtr; typedef std::shared_ptr MassSpectrumCombinerSPtr; class PMSPP_LIB_DECL MassSpectrumCombiner : public MassDataCombinerInterface { public: MassSpectrumCombiner(); MassSpectrumCombiner(int decimal_places); MassSpectrumCombiner(std::vector bins, int decimalPlaces = -1); MassSpectrumCombiner(MassSpectrumCombinerCstSPtr other); MassSpectrumCombiner(const MassSpectrumCombiner &other); MassSpectrumCombiner(const MassSpectrumCombiner &&other); virtual ~MassSpectrumCombiner(); void setBins(std::vector bins); const std::vector &getBins() const; std::size_t binCount() const; QString binsAsString() const; protected: std::vector m_bins; std::vector::iterator findBin(pappso_double mz); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp000644 001750 001750 00000033314 14526455546 033100 0ustar00rusconirusconi000000 000000 /////////////////////// StdLib includes #include #include #include #include #include #include #include /////////////////////// Qt includes #include #include #include #if 0 // For debugging purposes. #include #endif /////////////////////// Local includes #include "massspectrumminuscombiner.h" #include "../../types.h" #include "../../utils.h" #include "../../pappsoexception.h" #include "../../exception/exceptionoutofrange.h" #include "../../exception/exceptionnotpossible.h" namespace pappso { //! Construct an uninitialized instance. MassSpectrumMinusCombiner::MassSpectrumMinusCombiner() { } MassSpectrumMinusCombiner::MassSpectrumMinusCombiner(int decimal_places) : MassSpectrumCombiner(decimal_places) { } MassSpectrumMinusCombiner::MassSpectrumMinusCombiner( const MassSpectrumMinusCombiner &other) : MassSpectrumCombiner(other) { } MassSpectrumMinusCombiner::MassSpectrumMinusCombiner( MassSpectrumMinusCombinerCstSPtr other) : MassSpectrumCombiner(other) { } //! Destruct the instance. MassSpectrumMinusCombiner::~MassSpectrumMinusCombiner() { } MassSpectrumMinusCombiner & MassSpectrumMinusCombiner::operator=(const MassSpectrumMinusCombiner &other) { if(this == &other) return *this; m_decimalPlaces = other.m_decimalPlaces; m_bins.assign(other.m_bins.begin(), other.m_bins.end()); return *this; } MapTrace & MassSpectrumMinusCombiner::combine(MapTrace &map_trace, const Trace &trace) const { // qDebug(); if(!trace.size()) { // qDebug() << "Thread:" << QThread::currentThreadId() //<< "Returning right away because trace is empty."; return map_trace; } // We will need to only use these iterator variables if we do not want to // loose consistency. using TraceIter = std::vector::const_iterator; TraceIter trace_iter_begin = trace.begin(); TraceIter trace_iter = trace_iter_begin; TraceIter trace_iter_end = trace.end(); // The destination map trace will be filled-in with the result of the // combination. // Sanity check: if(!m_bins.size()) throw(ExceptionNotPossible("The bin vector cannot be empty.")); using BinIter = std::vector::const_iterator; BinIter bin_iter = m_bins.begin(); BinIter bin_end_iter = m_bins.end(); // qDebug() << "initial bins iter at a distance of:" //<< std::distance(m_bins.begin(), bin_iter) //<< "bins distance:" << std::distance(m_bins.begin(), m_bins.end()) //<< "bins size:" << m_bins.size() << "first bin:" << m_bins.front() //<< "last bin:" << m_bins.back(); // Iterate in the vector of bins and for each bin check if there are matching // data points in the trace. pappso_double current_bin_mz_value = 0; pappso_double trace_x = 0; pappso_double trace_y = 0; // Lower bound returns an iterator pointing to the first element in the // range [first, last) that is not less than (i.e. greater or equal to) // value, or last if no such element is found. // Get the first bin that would match the very first data point in the trace // that we need to combine into the map_trace. auto bin_iter_for_mz = lower_bound(bin_iter, bin_end_iter, trace_iter->x); if(bin_iter_for_mz != bin_end_iter) { // If we found a bin and that the bin is not the first bin of the bin // vector, then go back one bin to be sure we do not miss data points. if(bin_iter_for_mz != m_bins.begin()) bin_iter = --bin_iter_for_mz; } else throw(ExceptionNotPossible("The bin vector must match the mz value.")); // Now iterate in the bin vector starting from the std::prev(found bin). while(bin_iter != bin_end_iter) { current_bin_mz_value = *bin_iter; // qDebug() << "Iterating in new bin:" //<< QString("%1").arg(current_bin_mz_value, 0, 'f', 15) //<< "at a distance from the first bin of:" //<< std::distance(m_bins.begin(), bin_iter); // For the current bin, we start by instantiating a new DataPoint. By // essence, each bin will have at most one corresponding DataPoint. DataPoint bin_data_point; // Do not set the y value to 0 so that we can actually test if the // data point is valid later on (try not to push back y=0 data // points). bin_data_point.x = current_bin_mz_value; // qDebug() << "Seed bin_data_point.x with current_bin_mz_value value:" //<< QString("%1").arg(bin_data_point.x, 0, 'f', 15); // Now perform a loop over the data points in the mass spectrum. while(trace_iter != trace_iter_end) { bool trace_matched = false; // If we are not at the end of trace and if the y value of the // currently iterated trace datapoint is not 0, perform the rounding // and check if the obtained x value is in the current bin, that is if // it is less or equal to the current bin. // qDebug() << "Thread:" << QThread::currentThreadId(); // qDebug() << "Iterating in new trace datapoint:" //<< trace_iter->toString(15) << "at distance:" //<< std::distance(trace_iter_begin, trace_iter); if(trace_iter->y) { // qDebug() << "The y value of trace iterated value is not 0."; // trace_x is the m/z value that we need to combine, trace_x = trace_iter->x; trace_y = trace_iter->y; // Now apply the rounding (if any). if(m_decimalPlaces != -1) trace_x = Utils::roundToDecimals(trace_x, m_decimalPlaces); if(trace_x <= current_bin_mz_value) { // qDebug() //<< "trace_x <= current_bin_mz_value: the match happened."; // qDebug() << "Going to compute" << bin_data_point.y << "-" //<< trace_y << "with current_bin_mz_value:" //<< QString("%1").arg( // current_bin_mz_value, 0, 'f', 15); // This is where the bin_data_point actually gets decremented // by the y value of the currently iterated trace data point. // So bin_data_point has already the MINUS'ed value in it. // Relate this code line with the result.first->second += // bin_data_point.y; code line elsewhere in this function. bin_data_point.y -= trace_y; // qDebug() << "New bin_data_point.y value:" << // bin_data_point.y; // Let's record that we matched. trace_matched = true; // Because we matched, we can step-up with the // iterator. // qDebug() << "The values matched, increment the trace " //"itereator but not the bin iterator, as maybe " //"the next trace datapoint also matches the bin."; ++trace_iter; } // else //{ // We did have a non-0 y value, but that did not // match. So we do not step-up with the iterator because that // trace data point will fit into another bin not yet iterated // into. //} } // End of // if(trace_iter->y) else { // We iterated into a y=0 data point, so just skip it. Let the // below code think that we have matched the point and iterate one // step up. // qDebug() << "The y value of the currently iterated trace data " //"point is almost equal to 0, increment the " //"trace iter but do nothing else."; trace_matched = true; ++trace_iter; } // At this point, check if the trace data point matched the currently // iterated bin. if(!trace_matched) { // qDebug() << "The currently iterated trace datapoint did not " //"match the current bin."; // The trace data point did not match the currently iterated bin. // All we have to do is go to the next bin. We break and the bin // vector iterator will be incremented. // However, if we had a valid new data point, that // data point needs to be pushed back in the new mass // spectrum. if(bin_data_point.isValid()) { // qDebug() << "But we had a valid bin data point cooking, so // " "we have to take that into account:" //<< bin_data_point.toString(15); // We need to check if that bin value is present already in // the map_trace object passed as parameter. std::pair::iterator, bool> result = map_trace.insert(std::pair( bin_data_point.x, -bin_data_point.y)); if(!result.second) { // qDebug() //<< "The x value (mz) was already present in the " //"map trace, simply update its y value (intensity)."; // The key already existed! The item was not inserted. We // need to update the y value. // qDebug() << "Going to compute" << result.first->second //<< "+" << bin_data_point.y; // This might be counterintuitive: one would expect the // use of the '-=' operator because we are // MINUS-combining. But no! bin_data_point only get y // values already minus'ed. So we need to add that // minus'ed value, otherwise we add the value (- -value is // the same as +value). result.first->second += bin_data_point.y; // qDebug() << "New y value for the item in the map trace // " //"(result.first->second value):" //<< result.first->second; } // else //{ // qDebug() //<< "The data point has a mz value that was not present " //"in the map trace." //<< " Inserted a new data point into the map trace:" //<< bin_data_point.x << "," << bin_data_point.y; //} } // We need to break this loop! That will increment the // bin iterator. break; } } // End of // while(trace_iter != trace_iter_end) // Each time we get here, that means that we have consumed all // the mass spectra data points that matched the current bin. // So go to the next bin. if(trace_iter == trace_iter_end) { // Make sure a last check is done in case one data point was // cooking... if(bin_data_point.isValid()) { std::pair::iterator, bool> result = map_trace.insert(std::pair( bin_data_point.x, -bin_data_point.y)); if(!result.second) { // qDebug() //<< "The x value (mz) was already present in the " //"map trace, simply update its y value (intensity)."; // The key already existed! The item was not inserted. We // need to update the y value. // qDebug() << "Going to compute" << result.first->second << // "+" //<< bin_data_point.y; // This might be counterintuitive: one would expect the // use of the '-=' operator because we are // MINUS-combining. But no! bin_data_point only get y // values already minus'ed. So we need to add that // minus'ed value, otherwise we add the value (- -value is // the same as +value). result.first->second += bin_data_point.y; // qDebug() << "New y value for the item in the map trace " //"(result.first->second value):" //<< result.first->second; } // else //{ // qDebug() //<< "The data point has a mz value that was not present " //"in the map trace." //<< " Inserted a new data point into the map trace:" //<< bin_data_point.x << "," << bin_data_point.y; //} } // Now truly exit the loops... break; } ++bin_iter; } // End of // while(bin_iter != bin_end_iter) // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "The combination result mass spectrum being returned has TIC:" //<< new_trace.sumY(); return map_trace; } MapTrace & MassSpectrumMinusCombiner::combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const { // qDebug(); if(!map_trace_in.size()) { // qDebug() << "Thread:" << QThread::currentThreadId() //<< "Returning right away because map_trace_in is empty."; return map_trace_out; } Trace trace(map_trace_in); return combine(map_trace_out, trace); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massspectrumminuscombiner.h000644 001750 001750 00000002177 14346367014 032540 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include "../../exportinmportconfig.h" #include "../../types.h" #include "../../massspectrum/massspectrum.h" #include "massspectrumcombiner.h" namespace pappso { class MassSpectrumMinusCombiner; typedef std::shared_ptr MassSpectrumMinusCombinerCstSPtr; typedef std::shared_ptr MassSpectrumMinusCombinerSPtr; class PMSPP_LIB_DECL MassSpectrumMinusCombiner : public MassSpectrumCombiner { public: MassSpectrumMinusCombiner(); MassSpectrumMinusCombiner(int decimal_places); MassSpectrumMinusCombiner(MassSpectrumMinusCombinerCstSPtr other); MassSpectrumMinusCombiner(const MassSpectrumMinusCombiner &other); virtual ~MassSpectrumMinusCombiner(); MassSpectrumMinusCombiner &operator=(const MassSpectrumMinusCombiner &other); virtual MapTrace &combine(MapTrace &map_trace, const Trace &trace) const override; virtual MapTrace &combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp000644 001750 001750 00000027306 14526455546 032734 0ustar00rusconirusconi000000 000000 /////////////////////// StdLib includes #include #include #include #include #include #include #include /////////////////////// Qt includes #include #include #include #if 0 // For debugging purposes. #include #endif /////////////////////// Local includes #include "massspectrumpluscombiner.h" #include "../../types.h" #include "../../utils.h" #include "../../pappsoexception.h" #include "../../exception/exceptionoutofrange.h" #include "../../exception/exceptionnotpossible.h" namespace pappso { //! Construct an uninitialized instance. MassSpectrumPlusCombiner::MassSpectrumPlusCombiner() { } MassSpectrumPlusCombiner::MassSpectrumPlusCombiner(int decimal_places) : MassSpectrumCombiner(decimal_places) { } MassSpectrumPlusCombiner::MassSpectrumPlusCombiner( const MassSpectrumPlusCombiner &other) : MassSpectrumCombiner(other) { } MassSpectrumPlusCombiner::MassSpectrumPlusCombiner( MassSpectrumPlusCombinerCstSPtr other) : MassSpectrumCombiner(other) { } //! Destruct the instance. MassSpectrumPlusCombiner::~MassSpectrumPlusCombiner() { } MassSpectrumPlusCombiner & MassSpectrumPlusCombiner::operator=(const MassSpectrumPlusCombiner &other) { if(this == &other) return *this; m_decimalPlaces = other.m_decimalPlaces; m_bins.assign(other.m_bins.begin(), other.m_bins.end()); return *this; } // We get a trace as parameter that this combiner needs to combine to the // map_trace we also get as parameter. This combiner is for a mass spectrum, and // thus it needs to have been configured to hold a vector of m/z values that are // bins into which DataPoints from trace are combined into map_trace. It is the // bins that drive the the traversal of trace. For each bin, check if there is // (or are, if bins are big) data points in the trace that fit in it. MapTrace & MassSpectrumPlusCombiner::combine(MapTrace &map_trace, const Trace &trace) const { // qDebug(); // If there is no single point in the trace we need to combine into the // map_trace, then there is nothing to do. if(!trace.size()) { // qDebug() << "Thread:" << QThread::currentThreadId() //<< "Returning right away because trace is empty."; return map_trace; } // We will need to only use these iterator variables if we do not want to // loose consistency. using TraceIter = std::vector::const_iterator; TraceIter trace_iter_begin = trace.begin(); TraceIter trace_iter = trace_iter_begin; TraceIter trace_iter_end = trace.end(); // The destination map trace will be filled-in with the result of the // combination. // Sanity check: if(!m_bins.size()) throw(ExceptionNotPossible("The bin vector cannot be empty.")); using BinIter = std::vector::const_iterator; BinIter bin_iter = m_bins.begin(); BinIter bin_end_iter = m_bins.end(); // qDebug() << "initial bins iter at a distance of:" //<< std::distance(m_bins.begin(), bin_iter) //<< "bins distance:" << std::distance(m_bins.begin(), m_bins.end()) //<< "bins size:" << m_bins.size() << "first bin:" << m_bins.front() //<< "last bin:" << m_bins.back(); // Iterate in the vector of bins and for each bin check if there are matching // data points in the trace. pappso_double current_bin_mz = 0; pappso_double trace_x = 0; pappso_double trace_y = 0; // Lower bound returns an iterator pointing to the first element in the // range [first, last) that is not less than (i.e. greater or equal to) // value, or last if no such element is found. auto bin_iter_for_mz = lower_bound(bin_iter, bin_end_iter, trace_iter->x); if(bin_iter_for_mz != bin_end_iter) { if(bin_iter_for_mz != m_bins.begin()) bin_iter = --bin_iter_for_mz; } else throw(ExceptionNotPossible("The bin vector must match the mz value.")); while(bin_iter != bin_end_iter) { current_bin_mz = *bin_iter; // std::cout << std::setprecision(10) << "current bin: " << current_bin_mz //<< std::endl; // qDebug() << "Current bin:" //<< QString("%1").arg(current_bin_mz, 0, 'f', 15) //<< "at a distance of:" //<< std::distance(m_bins.begin(), bin_iter); // For the current bin, we start by instantiating a new DataPoint. By // essence, each bin will have at most one corresponding DataPoint. DataPoint new_data_point; // Do not set the y value to 0 so that we can actually test if the // data point is valid later on (try not to push back y=0 data // points). new_data_point.x = current_bin_mz; // Now perform a loop over the data points in the mass spectrum. // qDebug() << "Start looping in the trace to check if its DataPoint.x " //"value matches that of the current bin." //<< "trace_iter:" << trace_iter->toString() //<< "data point distance:" //<< std::distance(trace_iter_begin, trace_iter); while(trace_iter != trace_iter_end) { // std::cout << std::setprecision(10) //<< "trace data point being iterated into: " << trace_iter->x //<< " - " << trace_iter->y << std::endl; bool trace_matched = false; // If trace is not to the end and the y value is not 0 // apply the shift, perform the rounding and check if the obtained // x value is in the current bin, that is if it is less or equal // to the current bin. // qDebug() << "Thread:" << QThread::currentThreadId(); // qDebug() << "trace_iter:" << trace_iter->toString() //<< "data point distance:" //<< std::distance(trace_iter_begin, trace_iter); // if(!Utils::almostEqual(trace_iter->y, 0.0, 10)) trace_x = trace_iter->x; trace_y = trace_iter->y; if(trace_y) { // FIXME: unbelievable behaviour: when building in release mode // this code, under i386 (but not x86_64), this code fails if the // following%S statement is missing. There are a variety of // variants that work, the common denominator being that trace_x // has to be output along with a string. // std::cout << std::setprecision(10) //<< "iterated trace point: " << trace_x << " - " //<< trace_y << std::endl; // For this reason I had to deactivate the related tests // for i386 in tests/test_massspectrumcombiner.cpp // trace_x is the m/z value that we need to combine, // so make sure we check if there is a mz shift to apply. // if(m_mzIntegrationParams.m_applyMzShift) // trace_x += m_mzIntegrationParams.m_mzShift; // Now apply the rounding (if any). if(m_decimalPlaces != -1) trace_x = Utils::roundToDecimals(trace_x, m_decimalPlaces); if(trace_x <= current_bin_mz) { // std::cout //<< std::setprecision(10) //<< "Matched, because trace point.x is <= the current " //"bin; increment trace_iter" //<< std::endl; new_data_point.y += trace_y; // std::cout << std::setprecision(10) //<< "After incrementation of the intensity: " //<< new_data_point.y << std::endl; // Let's record that we matched. trace_matched = true; // Because we matched, we can step-up with the // iterator. ++trace_iter; } // else //{ // We did have a non-0 y value, but that did not // match. So we do not step-up with the iterator. //} } // End of // if(trace_iter->y) else { // std::cout << std::setprecision(10) //<< "itered trace point intensity is 0: " << trace_x //<< " - " << trace_y << std::endl; // We iterated into a y=0 data point, so just skip it. Let // the below code think that we have matched the point and // iterate one step up. // qDebug() << "The y value is almost equal to 0, increment the " //"trace iter but do nothing else."; trace_matched = true; ++trace_iter; } // At this point, check if none of them matched. if(!trace_matched) { // None of the first and trace mass spectra data // points were found to match the current bin. All we // have to do is go to the next bin. We break and the // bin vector iterator will be incremented. // However, if we had a valid new data point, that // data point needs to be pushed back in the new mass // spectrum. if(new_data_point.isValid()) { // We need to check if that bin value is present already in // the map_trace object passed as parameter. std::pair::iterator, bool> result = map_trace.insert(std::pair( new_data_point.x, new_data_point.y)); if(!result.second) { // The key already existed! The item was not inserted. We // need to update the value. result.first->second += new_data_point.y; // qDebug() //<< "Incremented the data point in the map trace."; } // else //{ // qDebug() //<< "Inserted a new data point into the map trace."; //} } // We need to break this loop! That will increment the // bin iterator. break; } } // End of // while(trace_iter != trace_iter_end) // Each time we get here, that means that we have consumed all // the mass spectra data points that matched the current bin. // So go to the next bin. if(trace_iter == trace_iter_end) { // Make sure a last check is done in case one data point was // cooking... if(new_data_point.isValid()) { std::pair::iterator, bool> result = map_trace.insert(std::pair( new_data_point.x, new_data_point.y)); if(!result.second) { result.first->second += new_data_point.y; } } // Now truly exit the loops... break; } ++bin_iter; } // End of // while(bin_iter != bin_end_iter) // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "The combination result mass spectrum being returned has TIC:" //<< new_trace.sumY(); return map_trace; } MapTrace & MassSpectrumPlusCombiner::combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const { // qDebug(); if(!map_trace_in.size()) { // qDebug() << "Thread:" << QThread::currentThreadId() //<< "Returning right away because map_trace_in is empty."; return map_trace_out; } Trace trace(map_trace_in); return combine(map_trace_out, trace); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/massspectrumpluscombiner.h000644 001750 001750 00000002156 14346367014 032365 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include "../../exportinmportconfig.h" #include "../../types.h" #include "../../massspectrum/massspectrum.h" #include "massspectrumcombiner.h" namespace pappso { class MassSpectrumPlusCombiner; typedef std::shared_ptr MassSpectrumPlusCombinerCstSPtr; typedef std::shared_ptr MassSpectrumPlusCombinerSPtr; class PMSPP_LIB_DECL MassSpectrumPlusCombiner : public MassSpectrumCombiner { public: MassSpectrumPlusCombiner(); MassSpectrumPlusCombiner(int decimal_places); MassSpectrumPlusCombiner(const MassSpectrumPlusCombiner &other); MassSpectrumPlusCombiner(MassSpectrumPlusCombinerCstSPtr other); virtual ~MassSpectrumPlusCombiner(); MassSpectrumPlusCombiner &operator=(const MassSpectrumPlusCombiner &other); virtual MapTrace &combine(MapTrace &map_trace, const Trace &trace) const override; virtual MapTrace &combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/mzintegrationparams.cpp000644 001750 001750 00000046700 14526455546 031660 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include #include #include #include /////////////////////// pappsomspp includes #include "../../utils.h" #include "../../massspectrum/massspectrum.h" /////////////////////// Local includes #include "mzintegrationparams.h" int mzIntegrationParamsMetaTypeId = qRegisterMetaType("pappso::MzIntegrationParams"); int mzIntegrationParamsPtrMetaTypeId = qRegisterMetaType( "pappso::MzIntegrationParams *"); namespace pappso { //! Map relating the BinningType to a textual representation std::map binningTypeMap{ {BinningType::NONE, "NONE"}, {BinningType::DATA_BASED, "DATA_BASED"}, {BinningType::ARBITRARY, "ARBITRARY"}}; MzIntegrationParams::MzIntegrationParams() { m_binningType = BinningType::NONE; mp_precision = pappso::PrecisionFactory::getPpmInstance(20); } MzIntegrationParams::MzIntegrationParams(pappso::pappso_double minMz, pappso::pappso_double maxMz, BinningType binningType, int decimalPlaces, pappso::PrecisionPtr precisionPtr, int binSizeDivisor, bool removeZeroValDataPoints) : m_smallestMz(minMz), m_greatestMz(maxMz), m_binningType(binningType), m_decimalPlaces(decimalPlaces), mp_precision(precisionPtr), m_binSizeDivisor(binSizeDivisor), m_removeZeroValDataPoints(removeZeroValDataPoints) { if(mp_precision == nullptr) mp_precision = pappso::PrecisionFactory::getPpmInstance(20); // qDebug() << "mp_precision:" << mp_precision->toString(); } MzIntegrationParams::MzIntegrationParams(const MzIntegrationParams &other) : m_smallestMz(other.m_smallestMz), m_greatestMz(other.m_greatestMz), m_binningType(other.m_binningType), m_decimalPlaces(other.m_decimalPlaces), mp_precision(other.mp_precision), m_binSizeDivisor(other.m_binSizeDivisor), m_removeZeroValDataPoints(other.m_removeZeroValDataPoints) { if(mp_precision == nullptr) mp_precision = pappso::PrecisionFactory::getResInstance(40000); // qDebug() << "mp_precision:" << mp_precision->toString(); } MzIntegrationParams::~MzIntegrationParams() { } MzIntegrationParams & MzIntegrationParams::operator=(const MzIntegrationParams &other) { if(this == &other) return *this; m_smallestMz = other.m_smallestMz; m_greatestMz = other.m_greatestMz; m_binningType = other.m_binningType; m_decimalPlaces = other.m_decimalPlaces; mp_precision = other.mp_precision; if(mp_precision == nullptr) mp_precision = pappso::PrecisionFactory::getPpmInstance(20); m_binSizeDivisor = other.m_binSizeDivisor; m_removeZeroValDataPoints = other.m_removeZeroValDataPoints; return *this; } void MzIntegrationParams::setSmallestMz(pappso::pappso_double value) { m_smallestMz = value; } void MzIntegrationParams::updateSmallestMz(pappso::pappso_double value) { m_smallestMz = m_smallestMz > value ? value : m_smallestMz; } pappso::pappso_double MzIntegrationParams::getSmallestMz() const { return m_smallestMz; } void MzIntegrationParams::setGreatestMz(pappso::pappso_double value) { m_greatestMz = value; } void MzIntegrationParams::updateGreatestMz(pappso::pappso_double value) { m_greatestMz = m_greatestMz < value ? value : m_greatestMz; } pappso::pappso_double MzIntegrationParams::getGreatestMz() const { return m_greatestMz; } void MzIntegrationParams::setBinningType(BinningType binningType) { m_binningType = binningType; } BinningType MzIntegrationParams::getBinningType() const { return m_binningType; } void MzIntegrationParams::setDecimalPlaces(int decimal_places) { m_decimalPlaces = decimal_places; } int MzIntegrationParams::getDecimalPlaces() const { return m_decimalPlaces; } void MzIntegrationParams::setPrecision(pappso::PrecisionPtr precisionPtr) { mp_precision = precisionPtr; if(mp_precision == nullptr) mp_precision = pappso::PrecisionFactory::getDaltonInstance(0.05); } pappso::PrecisionPtr MzIntegrationParams::getPrecision() const { return mp_precision; } void MzIntegrationParams::setBinSizeDivisor(int divisor) { m_binSizeDivisor = divisor; } int MzIntegrationParams::getBinSizeDivisor() const { return m_binSizeDivisor; } void MzIntegrationParams::setRemoveZeroValDataPoints(bool removeOrNot) { m_removeZeroValDataPoints = removeOrNot; } bool MzIntegrationParams::isRemoveZeroValDataPoints() const { return m_removeZeroValDataPoints; } //! Reset the instance to default values. void MzIntegrationParams::reset() { m_smallestMz = std::numeric_limits::min(); m_greatestMz = std::numeric_limits::min(); m_binningType = BinningType::NONE; // Special case for this member datum mp_precision = pappso::PrecisionFactory::getPpmInstance(20); m_binSizeDivisor = 1; m_removeZeroValDataPoints = false; } bool MzIntegrationParams::isValid() const { int errors = 0; if(!m_binSizeDivisor) errors += 1; if(m_binningType != BinningType::NONE) { // qDebug() << "m_smallestMz:" << m_smallestMz; // qDebug() << "smallest is max:" << (m_smallestMz == // std::numeric_limits::max()); errors += (m_smallestMz == std::numeric_limits::max() ? 1 : 0); // qDebug() << "m_greatestMz:" << m_greatestMz; // qDebug() << "greatest is min:" << (m_greatestMz == // std::numeric_limits::min()); errors += (m_greatestMz == std::numeric_limits::min() ? 1 : 0); // if(mp_precision != nullptr) // qDebug() << mp_precision->toString(); errors += (mp_precision == nullptr ? 1 : 0); } if(errors) { qDebug() << "The m/z integration parameters are not valid or do not apply..."; } return !errors; } bool MzIntegrationParams::hasValidMzRange() const { return (m_smallestMz != std::numeric_limits::max()) && (m_greatestMz != std::numeric_limits::min()); } std::vector MzIntegrationParams::createBins() { // qDebug() << "mp_precision:" << mp_precision->toString(); std::vector bins; if(m_binningType == BinningType::NONE) { // If no binning is to be performed, fine. return bins; } else if(m_binningType == BinningType::ARBITRARY) { // Use only data in the MzIntegrationParams member data. return createArbitraryBins(); } else if(m_binningType == BinningType::DATA_BASED) { // qDebug(); qFatal("Programming error."); } return bins; } std::vector MzIntegrationParams::createBins(pappso::MassSpectrumCstSPtr mass_spectrum_csp) { // qDebug(); std::vector bins; if(m_binningType == BinningType::NONE) { // If no binning is to be performed, fine. return bins; } else if(m_binningType == BinningType::ARBITRARY) { // Use only data in the MzIntegrationParams member data. return createArbitraryBins(); } else if(m_binningType == BinningType::DATA_BASED) { // qDebug(); // Use the first spectrum to perform the data-based bins return createDataBasedBins(mass_spectrum_csp); } return bins; } std::vector MzIntegrationParams::createArbitraryBins() { // Now starts the tricky stuff. Depending on how the binning has been // configured, we need to take diverse actions. // qDebug() << "Bin size specification:" << mp_precision->toString(); pappso::pappso_double min_mz = m_smallestMz; pappso::pappso_double max_mz = m_greatestMz; // qDebug() << "m_smallestMz:" << m_smallestMz //<< "m_greatestMz:" << m_greatestMz; // qDebug() << QString::asprintf("min_mz: %.6f\n", min_mz) //<< QString::asprintf("max_mz: %.6f\n", max_mz); pappso::pappso_double binSize; if(mp_precision->unit() == PrecisionUnit::res) { double resolution_based_bin_size = mp_precision->delta(min_mz); binSize = resolution_based_bin_size / m_binSizeDivisor; // qDebug() << "With res-based bin size, the uncorrected bin size:" //<< resolution_based_bin_size //<< "and the final binSize:" << binSize; } else binSize = mp_precision->delta(min_mz); // qDebug() << QString::asprintf( //"binSize is the precision delta for min_mz: %.6f\n", binSize); // Only compute the decimal places if they were not configured already. if(m_decimalPlaces == -1) { // qDebug() << "Now checking how many decimal places are needed."; // We want as many decimal places as there are 0s between the integral // part of the double and the first non-0 cipher. For example, if // binSize is 0.004, zero decimals is 2 and m_decimalPlaces is set to 3, // because we want decimals up to 4 included. m_decimalPlaces = pappso::Utils::zeroDecimalsInValue(binSize) + 1; // qDebug() << "With binSize" << binSize //<< " m_decimalPlaces was computed to be:" << m_decimalPlaces; } // else // qDebug() << "m_decimalPlaces: " << m_decimalPlaces; // Now that we have defined the value of m_decimalPlaces, let's use that // value. double first_mz = ceil((min_mz * std::pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); double last_mz = ceil((max_mz * pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); // qDebug() << "After having accounted for the decimals, new min/max values:" //<< QString::asprintf("Very first data point: %.6f\n", first_mz) //<< QString::asprintf("Very last data point to reach: %.6f\n", // last_mz); // Instanciate the vector of mz double_s that we'll feed with the bins. std::vector bins; // Store that very first value for later use in the loop. // The bins are notking more than: // // 1. The first mz (that is the smallest mz value found in all the spectra // 2. A sequence of mz values corresponding to that first mz value // incremented by the bin size. // Seed the root of the bin vector with the first mz value rounded above as // requested. pappso::pappso_double previous_mz_bin = first_mz; bins.push_back(previous_mz_bin); // Now continue adding mz values until we have reached the end of the // spectrum, that is the max_mz value, as converted using the decimals to // last_mz. // debugCount value used below for debugging purposes. // int debugCount = 0; while(previous_mz_bin <= last_mz) { // qDebug() << "Now starting the bin creation loop."; // Calculate dynamically the precision delta according to the current mz // value. // double precision_delta = mp_precision->delta(previous_mz_bin); // qDebug() << "precision_delta: " << precision_delta; // In certain circumstances, the bin size is not enough to properly render // hyper-high resolution data (like the theoretical isotopic cluster data // generated in silico). In that case, the bin size, computed using the // precision object, is divided by the m_binSizeDivisor, which normally is // set to 1 as the default, that is, it has no effect. double current_mz; if(mp_precision->unit() == PrecisionUnit::res) current_mz = previous_mz_bin + (mp_precision->delta(previous_mz_bin) / m_binSizeDivisor); else current_mz = previous_mz_bin + mp_precision->delta(previous_mz_bin); // qDebug() << QString::asprintf( //"previous_mzBin: %.6f and current_mz: %.6f\n", // previous_mz_bin, // current_mz); // Now apply on the obtained mz value the decimals that were either set // or computed earlier. double current_rounded_mz = ceil((current_mz * pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); // qDebug() << QString::asprintf( //"current_mz: %.6f and current_rounded_mz: %.6f and previous_mzBin " //": % .6f\n ", // current_mz, // current_rounded_mz, // previous_mz_bin); // If rounding makes the new value identical to the previous one, then // that means that we need to decrease roughness. if(current_rounded_mz == previous_mz_bin) { ++m_decimalPlaces; current_rounded_mz = ceil((current_mz * pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); // qDebug().noquote() //<< "Had to increment decimal places by one while creating the bins " //"in BinningType::ARBITRARY mode.."; } bins.push_back(current_rounded_mz); // Use the local_mz value for the storage of the previous mz bin. previous_mz_bin = current_rounded_mz; } #if 0 QString fileName = "/tmp/massSpecArbitraryBins.txt-at-" + QDateTime::currentDateTime().toString("yyyyMMdd-HH-mm-ss"); qDebug() << "Writing the list of bins setup in the " "mass spectrum in file " << fileName; QFile file(fileName); file.open(QIODevice::WriteOnly); QTextStream fileStream(&file); for(auto &&bin : bins) fileStream << QString("%1\n").arg(bin, 0, 'f', 10); fileStream.flush(); file.close(); #endif // qDebug() << "Prepared bins with " << bins.size() << "elements." //<< "starting with mz" << bins.front() << "ending with mz" //<< bins.back(); return bins; } std::vector MzIntegrationParams::createDataBasedBins( pappso::MassSpectrumCstSPtr mass_spectrum_csp) { // qDebug(); // The bins in *this mass spectrum must be calculated starting from the // data in the mass_spectrum_csp parameter. // Instanciate the vector of mz double_s that we'll feed with the bins. std::vector bins; if(mass_spectrum_csp->size() < 2) return bins; // Make sure the spectrum is sorted, as this functions takes for granted // that the DataPoint instances are sorted in ascending x (== mz) value // order. pappso::MassSpectrum local_mass_spectrum = *mass_spectrum_csp; local_mass_spectrum.sortMz(); pappso::pappso_double min_mz = m_smallestMz; // qDebug() << "The min_mz:" << min_mz; if(m_decimalPlaces != -1) min_mz = ceil((min_mz * pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); // Two values for the definition of a MassSpectrumBin. // The first value of the mz range that defines the bin. This value is part // of the bin. pappso::pappso_double start_mz_in = min_mz; // The second value of the mz range that defines the bin. This value is // *not* part of the bin. pappso::pappso_double end_mz_out; std::vector::const_iterator it = local_mass_spectrum.begin(); pappso::pappso_double prev_mz = it->x; if(m_decimalPlaces != -1) prev_mz = ceil((prev_mz * pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); ++it; while(it != local_mass_spectrum.end()) { pappso::pappso_double next_mz = it->x; if(m_decimalPlaces != -1) next_mz = ceil((next_mz * pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); pappso::pappso_double step = next_mz - prev_mz; end_mz_out = start_mz_in + step; if(m_decimalPlaces != -1) end_mz_out = ceil((end_mz_out * pow(10, m_decimalPlaces)) - 0.49) / pow(10, m_decimalPlaces); // The data point that is crafted has a 0 y-value. The binning must // indeed not create artificial intensity data. // qDebug() << "Pushing back bin:" << start_mz_in << end_mz_out; bins.push_back(start_mz_in); // Prepare next bin start_mz_in = end_mz_out; // Update prev_mz to be the current one for next iteration. prev_mz = next_mz; // Now got the next DataPoint instance. ++it; } #if 0 QString fileName = "/tmp/massSpecDataBasedBins.txt"; qDebug() << "Writing the list of bins setup in the " "mass spectrum in file " << fileName; QFile file(fileName); file.open(QIODevice::WriteOnly); QTextStream fileStream(&file); for(auto &&bin : m_bins) fileStream << QString("[%1-%2]\n") .arg(bin.startMzIn, 0, 'f', 10) .arg(bin.endMzOut, 0, 'f', 10); fileStream.flush(); file.close(); qDebug() << "elements." << "starting with mz" << m_bins.front().startMzIn << "ending with mz" << m_bins.back().endMzOut; #endif return bins; } QString MzIntegrationParams::toString(int offset, const QString &spacer) const { QString lead; for(int iter = 0; iter < offset; ++iter) lead += spacer; QString text = lead; text += "m/z integration parameters:\n"; text += lead; text += spacer; if(m_smallestMz != std::numeric_limits::max()) text.append( QString::asprintf("Smallest (first) m/z: %.6f\n", m_smallestMz)); text += lead; text += spacer; if(m_greatestMz != std::numeric_limits::min()) text.append(QString::asprintf("Greatest (last) m/z: %.6f\n", m_greatestMz)); text += lead; text += spacer; text.append(QString("Decimal places: %1\n").arg(m_decimalPlaces)); std::map::iterator it; it = binningTypeMap.find(m_binningType); if(it == binningTypeMap.end()) qFatal("Programming error."); text += lead; text += spacer; text.append(QString("Binning type: %1\n").arg(it->second.toLatin1().data())); // Only provide the details relative to the ARBITRARY binning type. if(m_binningType == BinningType::ARBITRARY) { text += lead; text += spacer; text += spacer; text.append(QString("Bin nominal size: %1\n") .arg(mp_precision->getNominal(), 0, 'f', 6)); text += lead; text += spacer; text += spacer; text.append(QString("Bin size: %2\n") .arg(mp_precision->toString().toLatin1().data())); text += lead; text += spacer; text += spacer; text.append(QString("Bin size divisor: %2\n").arg(m_binSizeDivisor)); } // Now other data that are independent of the bin settings. text += lead; text += spacer; text += QString("Remove 0-val data points: %1\n") .arg(m_removeZeroValDataPoints ? "true" : "false"); return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/mzintegrationparams.h000644 001750 001750 00000013113 14514537337 031311 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once #include #include "../../precision.h" #include "../../massspectrum/massspectrum.h" namespace pappso { //! Type of binning when performing integrations to a mass spectrum enum class BinningType { //! < no binning NONE = 0, //! binning based on mass spectral data DATA_BASED, //! binning based on arbitrary bin size value ARBITRARY, LAST, }; extern std::map binningTypeMap; //! The MzIntegrationParams class provides the parameters definining how m/z ! // integrations must be performed. /*! * Depending on the various mass spectrometer vendors, the mass spectrometry * data files are structured in different ways and the software for mass data * format conversion from raw files to mzML or mzXML produce mass data * characterized by different behaviours. * * The different characteristics of mass spectrometry data set are: * * The size of the various mass spectra in the file is constant or variable; * * The first m/z value of the various spectra is identical or not (that is, * the spectra are root in a constant or variable root m/z value); * * The m/z delta between two consecutive m/z values of a given spectrum are * constant or variable; * * The spectra contain or not 0-value m/z data points; */ class PMSPP_LIB_DECL MzIntegrationParams { public: Q_INVOKABLE MzIntegrationParams(); Q_INVOKABLE MzIntegrationParams(pappso::pappso_double minMz, pappso::pappso_double maxMz, BinningType binningType, int decimalPlaces, pappso::PrecisionPtr precisionPtr, int binSizeDivisor, bool removeZeroValDataPoints); Q_INVOKABLE MzIntegrationParams(const MzIntegrationParams &other); virtual ~MzIntegrationParams(); MzIntegrationParams &operator=(const MzIntegrationParams &other); Q_INVOKABLE void setSmallestMz(pappso::pappso_double value); Q_INVOKABLE void updateSmallestMz(pappso::pappso_double value); pappso::pappso_double getSmallestMz() const; Q_INVOKABLE void setGreatestMz(pappso::pappso_double value); Q_INVOKABLE void updateGreatestMz(pappso::pappso_double value); Q_INVOKABLE pappso::pappso_double getGreatestMz() const; Q_INVOKABLE void setBinningType(BinningType binningType); Q_INVOKABLE BinningType getBinningType() const; Q_INVOKABLE void setDecimalPlaces(int decimal_places); Q_INVOKABLE int getDecimalPlaces() const; Q_INVOKABLE void setPrecision(pappso::PrecisionPtr precisionPtr); Q_INVOKABLE pappso::PrecisionPtr getPrecision() const; void setBinSizeDivisor(int divisor); int getBinSizeDivisor() const; Q_INVOKABLE void setRemoveZeroValDataPoints(bool removeOrNot = true); Q_INVOKABLE bool isRemoveZeroValDataPoints() const; Q_INVOKABLE void reset(); Q_INVOKABLE bool isValid() const; Q_INVOKABLE bool hasValidMzRange() const; Q_INVOKABLE std::vector createBins(); Q_INVOKABLE std::vector createBins(pappso::MassSpectrumCstSPtr mass_spectrum_csp); Q_INVOKABLE QString toString(int offset = 0, const QString &spacer = QString()) const; private: // That smallest value needs to be set to max, because it will be necessary // compare any new m/z valut to it. pappso::pappso_double m_smallestMz = std::numeric_limits::max(); // That greatest value needs to be set to min, because it will be necessary // compare any new m/z valut to it. pappso::pappso_double m_greatestMz = std::numeric_limits::min(); BinningType m_binningType = BinningType::NONE; // -1 means that there is no restriction on the number of digits after the // decimal point. int m_decimalPlaces = -1; // This should actually be called "bin size" as it describes the width of // the bins. pappso::PrecisionPtr mp_precision = pappso::PrecisionFactory::getDaltonInstance(0.05); int m_binSizeDivisor = 1; bool m_removeZeroValDataPoints = true; std::vector createArbitraryBins(); std::vector createDataBasedBins(pappso::MassSpectrumCstSPtr massSpectrum); }; } // namespace pappso Q_DECLARE_METATYPE(pappso::MzIntegrationParams); Q_DECLARE_METATYPE(pappso::MzIntegrationParams *); extern int mzIntegrationParamsMetaTypeId; extern int mzIntegrationParamsPtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/selectionpolygon.cpp000644 001750 001750 00000105634 14526455546 031161 0ustar00rusconirusconi000000 000000 // Copyright 2021 Filippo Rusconi // GPLv3+ /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "selectionpolygon.h" namespace pappso { SelectionPolygon::SelectionPolygon() { // When we create a polygon, we create it as immense as possible, so that any // other polygon will fill inside it and *this polygon by necessity will // contain another one based on experimental data. See the header file for the // creation of the four points. } SelectionPolygon::SelectionPolygon(QPointF top_left_point, QPointF top_right_point) { // First clear the default values points because we want to push_back // new points and we want to only ever have 4 points. m_points.clear(); // We get only two points that provide the horizontal range of the polygon. // These two points show the x range of the polygon. We need to craft a // polygon that has: // // that specified x range and // // the widest y range possible. // top left point m_points.push_back( QPointF(top_left_point.x(), std::numeric_limits::max())); // top right point m_points.push_back( QPointF(top_right_point.x(), std::numeric_limits::max())); // bottom right point m_points.push_back( QPointF(top_right_point.x(), std::numeric_limits::min())); // bottom left point m_points.push_back( QPointF(top_left_point.x(), std::numeric_limits::min())); // Compute the min|max x|y coordinates of the polygon that will be used to // quickly check if a point is outside. computeMinMaxCoordinates(); } SelectionPolygon::SelectionPolygon(QPointF top_left_point, QPointF top_right_point, QPointF bottom_right_point, QPointF bottom_left_point) { // First clear the default values points. m_points.clear(); // Attention, we need to push back the points starting top left and clockwise. m_points.push_back(top_left_point); m_points.push_back(top_right_point); m_points.push_back(bottom_right_point); m_points.push_back(bottom_left_point); // Compute the min|max x|y coordinates of the polygon that will be used to // quickly check if a point is outside. computeMinMaxCoordinates(); } SelectionPolygon::SelectionPolygon(const SelectionPolygon &other) { if(other.m_points.size() != static_cast(PointSpecs::ENUM_LAST)) qFatal( "The template selection polygon must have four points, no less, no more"); // First clear the default values points. m_points.clear(); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { m_points.push_back(other.m_points[iter]); } m_minX = other.m_minX; m_minY = other.m_minY; m_maxX = other.m_maxX; m_maxY = other.m_maxY; } SelectionPolygon::~SelectionPolygon() { } void SelectionPolygon::setPoint(PointSpecs point_spec, double x, double y) { m_points[static_cast(point_spec)].setX(x); m_points[static_cast(point_spec)].setY(y); computeMinMaxCoordinates(); } void SelectionPolygon::setPoint(PointSpecs point_spec, QPointF point) { setPoint(point_spec, point.x(), point.y()); computeMinMaxCoordinates(); } void SelectionPolygon::copyPoint(PointSpecs point_spec_src, PointSpecs point_spec_dest) { QPointF src_point = getPoint(point_spec_src); setPoint(point_spec_dest, src_point); computeMinMaxCoordinates(); } void SelectionPolygon::set1D(double x_range_start, double x_range_end) { // We get only two points that provide the horizontal range of the polygon. // These two points show the x range of the polygon. We need to craft a // polygon that has: // // that specified x range and // // the widest y range possible. resetPoints(); // top left point setPoint(PointSpecs::TOP_LEFT_POINT, QPointF(x_range_start, std::numeric_limits::max())); // top right point setPoint(PointSpecs::TOP_RIGHT_POINT, QPointF(x_range_end, std::numeric_limits::max())); // bottom right point setPoint(PointSpecs::BOTTOM_RIGHT_POINT, QPointF(x_range_end, std::numeric_limits::min())); // bottom left point setPoint(PointSpecs::BOTTOM_LEFT_POINT, QPointF(x_range_start, std::numeric_limits::min())); // Compute the min|max x|y coordinates of the polygon that will be used to // quickly check if a point is outside. computeMinMaxCoordinates(); } void SelectionPolygon::set2D(QPointF top_left, QPointF top_right, QPointF bottom_right, QPointF bottom_left) { resetPoints(); // top left point setPoint(PointSpecs::TOP_LEFT_POINT, top_left); // qDebug() << "PointSpecs::TOP_LEFT_POINT:" << top_left; // top right point setPoint(PointSpecs::TOP_RIGHT_POINT, top_right); // qDebug() << "PointSpecs::TOP_RIGHT_POINT:" << top_right; // bottom right point setPoint(PointSpecs::BOTTOM_RIGHT_POINT, bottom_right); // qDebug() << "PointSpecs::BOTTOM_RIGHT_POINT:" << bottom_right; // bottom left point setPoint(PointSpecs::BOTTOM_LEFT_POINT, bottom_left); // qDebug() << "PointSpecs::BOTTOM_LEFT_POINT:" << bottom_left; // Compute the min|max x|y coordinates of the polygon that will be used to // quickly check if a point is outside. computeMinMaxCoordinates(); // qDebug() << toString(); } void SelectionPolygon::convertTo1D() { // When a 2D polygon is converted to a 1D polygon, the x axis range is // unchanged, but the height is set to its maximum possible with the bottom // line at y = min and the top line at y = max. computeMinMaxCoordinates(); set1D(m_minX, m_maxX); } QPointF SelectionPolygon::getLeftMostPoint() const { // When we say leftmost, that means that we are implicitely interesed in // x-axis coordinate of the points. QPointF temp_point(std::numeric_limits::max(), 0); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { if(m_points[iter].x() < temp_point.x()) { temp_point = m_points[iter]; } } return temp_point; } QPointF SelectionPolygon::getRightMostPoint() const { // When we say rightmost, that means that we are implicitely interesed in // x-axis coordinate of the points. QPointF temp_point(std::numeric_limits::min(), 0); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { if(m_points[iter].x() > temp_point.x()) { temp_point = m_points[iter]; } } return temp_point; } QPointF SelectionPolygon::getTopMostPoint() const { // When we say topmost or bottommost , that means that we are implicitely // interesed in y-axis coordinate of the points. QPointF temp_point(0, std::numeric_limits::min()); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { if(m_points[iter].y() > temp_point.y()) { temp_point = m_points[iter]; } } return temp_point; } QPointF SelectionPolygon::getBottomMostPoint() const { // When we say topmost or bottommost , that means that we are implicitely // interesed in y-axis coordinate of the points. QPointF temp_point(0, std::numeric_limits::max()); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { if(m_points[iter].y() < temp_point.y()) { temp_point = m_points[iter]; } } return temp_point; } const std::vector & SelectionPolygon::getPoints() const { return m_points; } QPointF SelectionPolygon::getPoint(PointSpecs point_spec) const { return m_points[static_cast(point_spec)]; } bool SelectionPolygon::computeMinMaxCoordinates() { // Set the variable to starting values that allow easy value comparisons with // std::min() and std::max() for checking the x|y values below. m_minX = std::numeric_limits::max(); m_minY = std::numeric_limits::max(); m_maxX = std::numeric_limits::min(); m_maxY = std::numeric_limits::min(); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { m_minX = std::min(m_points.at(iter).x(), m_minX); m_maxX = std::max(m_points.at(iter).x(), m_maxX); m_minY = std::min(m_points.at(iter).y(), m_minY); m_maxY = std::max(m_points.at(iter).y(), m_maxY); } return true; } bool SelectionPolygon::computeMinMaxCoordinates(double &min_x, double &max_x, double &min_y, double &max_y) const { // Set the variable to starting values that allow easy value comparisons with // std::min() and std::max() for checking the x|y values below. min_x = std::numeric_limits::max(); min_y = std::numeric_limits::max(); max_x = std::numeric_limits::min(); max_y = std::numeric_limits::min(); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { min_x = std::min(m_points.at(iter).x(), min_x); max_x = std::max(m_points.at(iter).x(), max_x); min_y = std::min(m_points.at(iter).y(), min_y); max_y = std::max(m_points.at(iter).y(), max_y); } // qDebug() << "min_x:" << min_x << "max_x:" << max_x << "min_y:" << min_y //<< "max_y:" << max_y; return true; } double SelectionPolygon::width(bool &ok) const { double min_x; double min_y; double max_x; double max_y; computeMinMaxCoordinates(min_x, max_x, min_y, max_y); ok = true; return max_x - min_x; } double SelectionPolygon::height(bool &ok) const { double min_x; double min_y; double max_x; double max_y; computeMinMaxCoordinates(min_x, max_x, min_y, max_y); ok = true; return max_y - min_y; } bool SelectionPolygon::rangeX(double &range_start, double &range_end) const { double min_y = std::numeric_limits::max(); double max_y = std::numeric_limits::min(); return computeMinMaxCoordinates(range_start, range_end, min_y, max_y); } bool SelectionPolygon::rangeY(double &range_start, double &range_end) const { double min_x = std::numeric_limits::max(); double max_x = std::numeric_limits::min(); return computeMinMaxCoordinates(min_x, max_x, range_start, range_end); } bool SelectionPolygon::range(Axis axis, double &range_start, double &range_end) const { if(axis == Axis::x) return rangeX(range_start, range_end); else if(axis == Axis::y) return rangeY(range_start, range_end); return false; } // All this is valid only if the polygon has four sides. // // Transposing means that we take each point and permute x with y. // During transposition, the TOP_RIGHT_POINT BOTTOM_LEFT_POINT are invariant. // // Transposition is like rotating the polygon arount the // BOTTOM_LEFT_POINT--TOP_RIGHT_POINT axis, which make them invariant and // permutates TOP_LEFT_POINT with BOTTOM_RIGHT_POINT. // // If iteration in the points is clockwise before, iteration below // counter-clockwise after transposition, that is: // TOP_LEFT_POINT becomes BOTTOM_RIGHT_POINT // SelectionPolygon SelectionPolygon::transpose() const { SelectionPolygon selection_polygon; // Make sure we do this for a polygon with four sides. if(m_points.size() != static_cast(PointSpecs::ENUM_LAST)) qFatal("The polygon must have four points, no less, no more"); // The two invariant points, that is, the two points that do no change // position in the polygon corners. Of course, x becomes y. selection_polygon.setPoint( PointSpecs::TOP_RIGHT_POINT, QPointF(getPoint(PointSpecs::TOP_RIGHT_POINT).y(), getPoint(PointSpecs::TOP_RIGHT_POINT).x())); selection_polygon.setPoint( PointSpecs::BOTTOM_LEFT_POINT, QPointF(getPoint(PointSpecs::BOTTOM_LEFT_POINT).y(), getPoint(PointSpecs::BOTTOM_LEFT_POINT).x())); // The two other points. selection_polygon.setPoint(PointSpecs::BOTTOM_RIGHT_POINT, QPointF(getPoint(PointSpecs::TOP_LEFT_POINT).y(), getPoint(PointSpecs::TOP_LEFT_POINT).x())); selection_polygon.setPoint( PointSpecs::TOP_LEFT_POINT, QPointF(getPoint(PointSpecs::BOTTOM_RIGHT_POINT).y(), getPoint(PointSpecs::BOTTOM_RIGHT_POINT).x())); return selection_polygon; } bool SelectionPolygon::contains(const QPointF &tested_point) const { // Easy check: if the point lies outside of most external limits of the // polygon, return false. if(tested_point.x() < m_minX || tested_point.x() > m_maxX || tested_point.y() < m_minY || tested_point.y() > m_maxY) { // qDebug() << "Testing point:" << tested_point //<< "aginst polygon:" << toString() //<< "is out of x and y ranges."; return false; } // There are two situations: // // 1. The selection polygon is a rectangle, we can check the tested_point very // easily. // // 2. The selection polygon is a skewed rectangle, that is, it is a // parallelogram, we need to really use the point-in-polygon algorithm. if(isRectangle()) { // qDebug() << "Selection polygon *is* rectangle."; double x = tested_point.x(); double y = tested_point.y(); // return (x >= getPoint(PointSpecs::TOP_LEFT_POINT).x() && // x <= getPoint(PointSpecs::TOP_RIGHT_POINT).x() && // y >= getPoint(PointSpecs::BOTTOM_LEFT_POINT).y() && // y <= getPoint(PointSpecs::TOP_LEFT_POINT).y()); bool res = x >= m_minX && x <= m_maxX && y >= m_minY && y <= m_maxY; // qDebug() << qSetRealNumberPrecision(10) << "Returning: " << res //<< "for point:" << tested_point //<< "and selection polygon:" << toString(); return res; } // qDebug() << "Testing point:" << tested_point //<< "aginst polygon:" << toString() //<< "is tested against a skewed selection polygon rectangle."; // At this point, we know the selection polygon is not rectangle, we have to // make the real check using the point-in-polygon algorithm. // This code is inspired by the work described here: // https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html // int pnpoly(int vertex_count, float *vertx, float *verty, float testx, // float testy) int i = 0; int j = 0; bool is_inside = false; int vertex_count = m_points.size(); for(i = 0, j = vertex_count - 1; i < vertex_count; j = i++) { if(((m_points.at(i).y() > tested_point.y()) != (m_points.at(j).y() > tested_point.y())) && (tested_point.x() < (m_points.at(j).x() - m_points.at(i).x()) * (tested_point.y() - m_points.at(i).y()) / (m_points.at(j).y() - m_points.at(i).y()) + m_points.at(i).x())) is_inside = !is_inside; } // if(is_inside) // qDebug() << "Testing point:" << tested_point //<< "aginst polygon:" << toString() << "turns out be in."; // else // qDebug() << "Testing point:" << tested_point //<< "aginst polygon:" << toString() << "turns out be out."; return is_inside; } bool SelectionPolygon::contains(const SelectionPolygon &selection_polygon) const { // A polygon is inside another polygon if all its points are inside the // polygon. bool is_inside = true; for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { if(!contains(selection_polygon.getPoint(static_cast(iter)))) is_inside = false; } return is_inside; } SelectionPolygon & SelectionPolygon::operator=(const SelectionPolygon &other) { if(this == &other) return *this; if(other.m_points.size() != static_cast(PointSpecs::ENUM_LAST)) qFatal("Programming error."); if(m_points.size() != static_cast(PointSpecs::ENUM_LAST)) qFatal("Programming error."); for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) m_points[iter] = other.m_points[iter]; m_minX = other.m_minX; m_minY = other.m_minY; m_maxX = other.m_maxX; m_maxY = other.m_maxY; return *this; } void SelectionPolygon::resetPoints() { // Reset the points exactly as they were set upon construction of an empty // polygon. m_points[0] = QPointF(std::numeric_limits::min(), std::numeric_limits::max()); m_points[0] = QPointF(std::numeric_limits::max(), std::numeric_limits::max()); m_points[0] = QPointF(std::numeric_limits::max(), std::numeric_limits::min()); m_points[0] = QPointF(std::numeric_limits::min(), std::numeric_limits::max()); } bool SelectionPolygon::is1D() const { // qDebug() << "Selection polygon:" << toString(); bool ok = false; double width_value = width(ok); if(!ok) return false; double height_value = height(ok); if(!ok) return false; // qDebug() << "Width and height computations succeeded:" //<< "width:" << width_value << "height:" << height_value; // A polygon is mono-dimensional if it has both non-0 width and no (max-min) // width AND if the height is 0 or (max-min). return ( (width_value > 0 && width_value < std::numeric_limits::max() - std::numeric_limits::min()) && (height_value == 0 || height_value == std::numeric_limits::max() - std::numeric_limits::min())); } bool SelectionPolygon::is2D() const { // A selection polygon can behave like a line segment if the bottom side // confounds with the top side. bool ok = false; double width_value = width(ok); if(!ok) return false; double height_value = height(ok); if(!ok) return false; // A polygon is two-dimensional if it has both non-0 width and no (max-min) // width AND same for height. return ( (width_value > 0 && width_value < std::numeric_limits::max() - std::numeric_limits::min()) && (height_value > 0 && height_value < std::numeric_limits::max() - std::numeric_limits::min())); } bool SelectionPolygon::isRectangle() const { // A skewed rectangle polygon has the following conditions verified: // // 1. If its left|right sides are vertical, then its top|bottom lines are // *not* horizontal. // // 2 If its top|bottom lines are horizontal, then its left|right sides are // *not* vertical. // // 3. Then, if a selection polygon is rectangle, its top|bottom lines are // horizontal and its left|right lines are vertical. // A line is vertical if its two defining points have the same X. // A line is horizontal if its two defining points have the same Y. // Try the horiontal top|bottom lines. if(getPoint(PointSpecs::TOP_LEFT_POINT).y() == getPoint(PointSpecs::TOP_RIGHT_POINT).y() && getPoint(PointSpecs::BOTTOM_LEFT_POINT).y() == getPoint(PointSpecs::BOTTOM_RIGHT_POINT).y()) { // We have horizontal top|bottom lines // Try the vertical lines if(getPoint(PointSpecs::TOP_LEFT_POINT).x() == getPoint(PointSpecs::BOTTOM_LEFT_POINT).x() && getPoint(PointSpecs::TOP_RIGHT_POINT).x() == getPoint(PointSpecs::BOTTOM_RIGHT_POINT).x()) { // The top|bottom lines are vertical return true; } } return false; } QString SelectionPolygon::toString() const { // By essence, a selection polygon is designed to always have 4 points. if(m_points.size() != static_cast(PointSpecs::ENUM_LAST)) qFatal("Programming error."); // qDebug() << "size:" << m_points.size(); QString text = "Selection polygon points, from top left, clockwise\n"; for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { QPointF iter_point = m_points[iter]; QString x_string = "NOT_SET"; if(iter_point.x() != std::numeric_limits::min() && iter_point.x() != std::numeric_limits::max()) x_string = QString("%1").arg(iter_point.x(), 0, 'f', 10); QString y_string = "NOT_SET"; if(iter_point.y() != std::numeric_limits::min() && iter_point.y() != std::numeric_limits::max()) y_string = QString("%1").arg(iter_point.y(), 0, 'f', 10); text += QString("(%1,%2)\n").arg(x_string).arg(y_string); } if(m_minX != std::numeric_limits::min() && m_minX != std::numeric_limits::max()) text += QString("minX: %1 - ").arg(m_minX, 0, 'f', 10); else text += QString("minX: NOT_SET - "); if(m_maxX != std::numeric_limits::min() && m_maxX != std::numeric_limits::max()) text += QString("maxX: %1 - ").arg(m_maxX, 0, 'f', 10); else text += QString("maxX: NOT_SET - "); if(m_minY != std::numeric_limits::min() && m_minY != std::numeric_limits::max()) text += QString("minY: %1 - ").arg(m_minY, 0, 'f', 10); else text += QString("minY: NOT_SET - "); if(m_maxY != std::numeric_limits::min() && m_maxY != std::numeric_limits::max()) text += QString("maxY: %1 - ").arg(m_maxY, 0, 'f', 10); else text += QString("maxY: NOT_SET - "); return text; } QString SelectionPolygon::toShort4PointsString() const { // By essence, a selection polygon is designed to always have 4 points. if(m_points.size() != static_cast(PointSpecs::ENUM_LAST)) qFatal("Programming error."); // qDebug() << "size:" << m_points.size(); QString text = "["; QString x_string = "NOT_SET"; QString y_string = "NOT_SET"; // There are two situations: // // 1. The selection polygon is 1D, we only need to provide two points // // 2. The selection polygon is 2D, we need to provide four points. if(is1D()) { text += QString("(%1,%2)").arg(getLeftMostPoint().x()).arg("NOT_SET"); text += QString("(%1,%2)").arg(getRightMostPoint().x()).arg("NOT_SET"); } else { for(int iter = 0; iter < static_cast(PointSpecs::ENUM_LAST); ++iter) { QPointF iter_point = m_points[iter]; if(iter_point.x() != std::numeric_limits::min() && iter_point.x() != std::numeric_limits::max()) x_string = QString("%1").arg(iter_point.x(), 0, 'f', 3); if(iter_point.y() != std::numeric_limits::min() && iter_point.y() != std::numeric_limits::max()) y_string = QString("%1").arg(iter_point.y(), 0, 'f', 3); text += QString("(%1,%2)").arg(x_string).arg(y_string); } } text += "]"; return text; } void SelectionPolygon::debugAlgorithm(const SelectionPolygon &selection_polygon, const QPointF &tested_point) { bool is_point_inside = false; QString debug_string; is_point_inside = selection_polygon.contains(tested_point); debug_string = QString("(%1,%2) is inside: %3") .arg(tested_point.x(), 0, 'f', 10) .arg(tested_point.y(), 0, 'f', 10) .arg(is_point_inside ? "true" : "false"); qDebug().noquote() << debug_string; } } // namespace pappso #if 0 // This is to test the algo that check if a point is left of a line or right of // it or onto it. In this implementation, two lines define the vertical sides of // a polygon (square to ease analysis) and if the point is on the left line, then it // is considered ok, that is, that it is on the right side of the line and if it // is on the right line, then it is considered ok, that is that it is on the // left side of the line. If both conditions are ok, then the point is inside // the vertical lines of the polygon. qDebug(); pappso::SelectionPolygon selection_polygon(QPointF(22.4, 473), QPointF(28.9, 473), QPointF(28.9, 250), QPointF(22.4, 250)); qDebug() << "The test selection polygon:" << selection_polygon.toString(); std::vector test_points; test_points.push_back(QPointF(25, 250)); test_points.push_back(QPointF(22.3, 362)); test_points.push_back(QPointF(22.4, 473)); test_points.push_back(QPointF(22.4, 473.5)); test_points.push_back(QPointF(25, 250)); test_points.push_back(QPointF(25, 250.5)); test_points.push_back(QPointF(25, 360)); test_points.push_back(QPointF(28.9, 250)); test_points.push_back(QPointF(29, 250)); test_points.push_back(QPointF(29, 360)); test_points.push_back(QPointF(28.9, 473)); test_points.push_back(QPointF(28.9, 473.5)); test_points.push_back(QPointF(20, 200)); test_points.push_back(QPointF(20, 600)); test_points.push_back(QPointF(35, 200)); test_points.push_back(QPointF(35, 600)); // double res = sideofline(XX;YY;xA;yA;xB;yB) = // (xB-xA) * (YY-yA) - (yB-yA) * (XX-xA) // If res == 0, the point is on the line // If rest < 0, the point is on the right of the line // If rest > 0, the point is on the left of the line for(auto &&data_point : test_points) { // Left vertical line of the polygon // Bottom point double xA_left = selection_polygon.getPoint(pappso::PointSpecs::BOTTOM_LEFT_POINT).x(); double yA_left = selection_polygon.getPoint(pappso::PointSpecs::BOTTOM_LEFT_POINT).y(); // Top point double xB_left = selection_polygon.getPoint(pappso::PointSpecs::TOP_LEFT_POINT).x(); double yB_left = selection_polygon.getPoint(pappso::PointSpecs::TOP_LEFT_POINT).y(); if((xB_left - xA_left) * (data_point.y() - yA_left) - (yB_left - yA_left) * (data_point.x() - xA_left) > 0) { // The point is left of the left line. We can remove the point // from the mass spectrum. qDebug() << qSetRealNumberPrecision(10) << "Filtered out point (left of left line):" << data_point.x() << "-" << data_point.y(); continue; } else { qDebug() << qSetRealNumberPrecision(10) << "Kept point (right of left line):" << data_point.x() << "-" << data_point.y(); } // Right vertical line of the polygon // Bottom point double xA_right = selection_polygon.getPoint(pappso::PointSpecs::BOTTOM_RIGHT_POINT).x(); double yA_right = selection_polygon.getPoint(pappso::PointSpecs::BOTTOM_RIGHT_POINT).y(); // Top point double xB_right = selection_polygon.getPoint(pappso::PointSpecs::TOP_RIGHT_POINT).x(); double yB_right = selection_polygon.getPoint(pappso::PointSpecs::TOP_RIGHT_POINT).y(); if((xB_right - xA_right) * (data_point.y() - yA_right) - (yB_right - yA_right) * (data_point.x() - xA_right) < 0) { qDebug() << qSetRealNumberPrecision(10) << "Filtered out point (right of right line):" << data_point.x() << "-" << data_point.y(); } else { qDebug() << qSetRealNumberPrecision(10) << "Definitively kept point (left of right line):" << data_point.x() << "-" << data_point.y(); } } #endif #if 0 // This is code to test the algorithm we have to establish if a given // point is inside a selection polygon. // First polygon that is square. SelectionPolygon first_polygon( QPointF(3, 8), QPointF(12, 8), QPointF(12, 3), QPointF(3, 3)); qDebug() << "square rectangle polygon: " << first_polygon.toString(); qDebug() << "outside"; SelectionPolygon::debugAlgorithm(first_polygon, QPointF(2,1)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(2.999999,5)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(2.999999,8.000001)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(2,5)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(2,9)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,1)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,8.0000001)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(12,1)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(12.0000001,3)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(14,3)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(14,5)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(14,8)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(14,9)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,9)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,2.9999999)); qDebug() << "on the lines"; SelectionPolygon::debugAlgorithm(first_polygon, QPointF(3,4)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,3)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(12,3)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(12,7)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(12,8)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,8)); qDebug() << "inside"; SelectionPolygon::debugAlgorithm(first_polygon, QPointF(4,4)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(3.00001, 3.00001)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,4)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,3.1)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(11,5)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(11.99999,5)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF(7,7.9)); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); SelectionPolygon::debugAlgorithm(first_polygon, QPointF()); // Second polygon that is skewed. SelectionPolygon second_polygon( QPointF(9, 8), QPointF(12, 8), QPointF(6, 2), QPointF(3, 2)); qDebug() << "skewed rectangle polygon: " << second_polygon.toString(); qDebug() << "outside"; SelectionPolygon::debugAlgorithm(second_polygon, QPointF(2,1)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(2.999999,1.999999)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(2.999999,3)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(2.999999,8.000001)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(2,5)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(2,9)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(6,5.0000001)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(7,1)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(7,2.999999)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(9,4.999999)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(9,8.0000001)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(12.00000001,8)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(12,7.999999)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(14,3)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(14,5)); qDebug() << "on the lines"; SelectionPolygon::debugAlgorithm(second_polygon, QPointF(3,2)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(6,5)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(12,8)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(9,8)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(9,5)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(11,7)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(7,6)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(4,3)); qDebug() << "inside"; SelectionPolygon::debugAlgorithm(second_polygon, QPointF(3.00001,2.000001)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(4,2.000001)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(6.000001,2.00003)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(7,4)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(8.99999,5)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(10,7.99999)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(5,3)); SelectionPolygon::debugAlgorithm(second_polygon, QPointF(5,3.99999)); #endif #if 0 void SelectionPolygon::reorderPoints() { // We want to make sure that we actually have the right QPointF instances at // the right corners. computeMinMaxCoordinates(); // Start by finding a point almost centered in the polygon. Not exactly // centered because our polygon can be squared and we'll look at angles // between the center-point->polygon-point_n and // center-point->polygon-point_n'. double PI = 3.14159265358979323846; QPointF center_point(0, 0); for(auto &point : m_points) { center_point.setX(center_point.x() + point.x()); center_point.setY(center_point.y() + point.y()); } center_point.setX(center_point.x() / m_points.size()); center_point.setY(center_point.y() / m_points.size()); // For a rectangle polygon, that would be the exact center and the angles // between the line segments would be similar two-by-two. So we need to move // the center_point a bit. double distance_x = center_point.x() - m_minX; double distance_y = center_point.y() - m_minY; center_point.setX(center_point.x() - (distance_x / 20)); center_point.setY(center_point.y() - (distance_y / 20)); std::sort(m_points.begin(), m_points.end(), [center_point, PI](const QPointF &a, const QPointF &b) -> bool { double a1 = std::fmod( std::atan2(a.x() - center_point.x(), a.y() - center_point.y()) * 180.0 / PI + 360, (double)360); double a2 = std::fmod( std::atan2(b.x() - center_point.x(), b.y() - center_point.y()) * 180.0 / PI + 360, (double)360); // Original version that had problems because arguments to '%' // were double and int. fmod() is % for double. //(std::atan2(b.x() - center_point.x(), b.y() - center_point.y()) //* 180.0 / PI + 360) % 360; return (int)(a1 - a2); }); } #endif libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/selectionpolygon.h000644 001750 001750 00000012621 14514537337 030613 0ustar00rusconirusconi000000 000000 // Copyright 2021 Filippo Rusconi // GPLv3+ #pragma once /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "../../types.h" namespace pappso { enum class PointSpecs { // Starting top left and then clockwise TOP_LEFT_POINT = 0, TOP_RIGHT_POINT = 1, BOTTOM_RIGHT_POINT = 2, BOTTOM_LEFT_POINT = 3, ENUM_LAST = 4, }; enum class DataDimension { NOT_SET = 0, HORIZONTAL, VERTICAL }; enum class PolygonType { NOT_SET = 0x0000, TOP_LINE = 1 << 0, BOTTOM_LINE = 1 << 1, HORIZONTAL_LINES = (TOP_LINE | BOTTOM_LINE), RIGHT_LINE = 1 << 2, LEFT_LINE = 1 << 3, VERTICAL_LINES = (RIGHT_LINE | LEFT_LINE), FULL_POLYGON = (HORIZONTAL_LINES | VERTICAL_LINES) }; class PMSPP_LIB_DECL SelectionPolygon { public: // Constructor with no arguments SelectionPolygon(); SelectionPolygon(QPointF top_left_point, QPointF top_right_point); SelectionPolygon(QPointF top_left_point, QPointF top_right_point, QPointF bottom_right_point, QPointF bottom_left_point); SelectionPolygon(const SelectionPolygon &other); virtual ~SelectionPolygon(); void setPoint(PointSpecs point_spec, double x, double y); void setPoint(PointSpecs point_spec, QPointF point); void copyPoint(PointSpecs point_spec_src, PointSpecs point_spec_dest); void set1D(double x_range_start, double x_range_end); void set2D(QPointF top_left, QPointF top_right, QPointF bottom_right, QPointF bottom_left); void convertTo1D(); const std::vector &getPoints() const; QPointF getLeftMostPoint() const; QPointF getRightMostPoint() const; QPointF getTopMostPoint() const; QPointF getBottomMostPoint() const; QPointF getPoint(PointSpecs point_spec) const; bool computeMinMaxCoordinates(); bool computeMinMaxCoordinates(double &min_x, double &max_x, double &min_y, double &max_y) const; double width(bool &ok) const; double height(bool &ok) const; bool rangeX(double &range_start, double &range_end) const; bool rangeY(double &range_start, double &range_end) const; bool range(Axis axis, double &range_start, double &range_end) const; SelectionPolygon transpose() const; bool contains(const QPointF &tested_point) const; bool contains(const SelectionPolygon &selection_polygon) const; SelectionPolygon &operator=(const SelectionPolygon &other); void resetPoints(); bool is1D() const; bool is2D() const; bool isRectangle() const; QString toShort4PointsString() const; QString toString() const; static void debugAlgorithm(const SelectionPolygon &selection_polygon, const QPointF &tested_point); protected: // The PointSpecs enum and the setPoint function ensure that there are no more // than four points in the vector. // We want to create a largest polygon possible, by settting the first point, // top_left on the lowest_x and highest_y, the top_right on the highest_x and // highest_y, the bottom_right on the highest_x and lowest_y, the bottom_left // at the lowest_x and lowest_y. std::vector m_points = {QPointF(std::numeric_limits::min(), std::numeric_limits::max()), QPointF(std::numeric_limits::max(), std::numeric_limits::max()), QPointF(std::numeric_limits::max(), std::numeric_limits::min()), QPointF(std::numeric_limits::min(), std::numeric_limits::min())}; double m_minX = std::numeric_limits::min(); double m_minY = std::numeric_limits::min(); double m_maxX = std::numeric_limits::max(); double m_maxY = std::numeric_limits::max(); }; struct PMSPP_LIB_DECL SelectionPolygonSpec { SelectionPolygon selectionPolygon; DataKind dataKind = DataKind::unset; // NO specification of the axis because it is implicit that MZ is Y and the // checked value is either DT or RT depending on dataKind. SelectionPolygonSpec(); SelectionPolygonSpec(const SelectionPolygon &selection_polygon, DataKind data_kind) : selectionPolygon(selection_polygon), dataKind(data_kind) { } SelectionPolygonSpec(const SelectionPolygonSpec &other) : selectionPolygon(other.selectionPolygon), dataKind(other.dataKind) { } SelectionPolygonSpec & operator=(const SelectionPolygonSpec &other) { if(this == &other) return *this; selectionPolygon = other.selectionPolygon; dataKind = other.dataKind; return *this; } QString toString() const { QString text = "Selection polygon spec:"; text += selectionPolygon.toString(); text += " - data kind: "; if(dataKind == DataKind::dt) text += "dt."; else if(dataKind == DataKind::mz) text += "m/z."; else if(dataKind == DataKind::rt) text += "rt."; else text += "unset."; return text; } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/tracecombiner.cpp000644 001750 001750 00000001347 14526455546 030375 0ustar00rusconirusconi000000 000000 #include #include #include #include #include #include #include #include "tracecombiner.h" #include "../../types.h" #include "../../utils.h" #include "../../pappsoexception.h" #include "../../exception/exceptionoutofrange.h" namespace pappso { TraceCombiner::TraceCombiner() { } TraceCombiner::TraceCombiner(int decimal_places) : MassDataCombinerInterface(decimal_places) { } TraceCombiner::TraceCombiner(const TraceCombiner &other) : MassDataCombinerInterface(other.m_decimalPlaces) { } TraceCombiner::TraceCombiner(TraceCombinerCstSPtr other) : MassDataCombinerInterface(other->m_decimalPlaces) { } TraceCombiner::~TraceCombiner() { } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/tracecombiner.h000644 001750 001750 00000001372 14346367014 030030 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include "../../exportinmportconfig.h" #include "../../types.h" #include "../../trace/trace.h" #include "../../trace/maptrace.h" #include "../../trace/datapoint.h" #include "../../mzrange.h" #include "massdatacombinerinterface.h" namespace pappso { class TraceCombiner; typedef std::shared_ptr TraceCombinerCstSPtr; typedef std::shared_ptr TraceCombinerSPtr; class PMSPP_LIB_DECL TraceCombiner : public MassDataCombinerInterface { public: TraceCombiner(); TraceCombiner(int decimal_places); TraceCombiner(const TraceCombiner &other); TraceCombiner(TraceCombinerCstSPtr other); virtual ~TraceCombiner(); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/traceminuscombiner.cpp000644 001750 001750 00000005471 14526455546 031453 0ustar00rusconirusconi000000 000000 #include #include #include #include #include #include #include #include "traceminuscombiner.h" #include "../../trace/trace.h" #include "../../types.h" #include "../../utils.h" #include "../../pappsoexception.h" #include "../../exception/exceptionoutofrange.h" namespace pappso { TraceMinusCombiner::TraceMinusCombiner() { } TraceMinusCombiner::TraceMinusCombiner(int decimal_places) : TraceCombiner(decimal_places) { } TraceMinusCombiner::TraceMinusCombiner(const TraceMinusCombiner &other) : TraceCombiner(other) { } TraceMinusCombiner::TraceMinusCombiner(TraceMinusCombinerCstSPtr other) : TraceCombiner(other) { } TraceMinusCombiner::~TraceMinusCombiner() { } MapTrace & TraceMinusCombiner::combine(MapTrace &map_trace, const Trace &trace) const { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "map trace size:" << map_trace.size() //<< "trace size:" << trace.size(); if(!trace.size()) return map_trace; for(auto ¤t_data_point : trace) { // If the data point is 0-intensity, then do nothing! if(!current_data_point.y) continue; // qDebug() << "Iterating in new trace data point:" //<< current_data_point.toString(15); double x = Utils::roundToDecimals(current_data_point.x, m_decimalPlaces); std::map::iterator map_iterator; std::pair::iterator, bool> result; // qDebug() << "Willing to insert new data point:" << x << "," //<< -current_data_point.y; result = map_trace.insert( std::pair(x, -current_data_point.y)); if(result.second) { // qDebug() << "Inserted new data point:" << x << "," //<< -current_data_point.y; // The new element was inserted, we have nothing to do. } else { // qDebug() << "Going to decrement from" << result.first->second //<< "a value of " << current_data_point.y; // The key already existed! The item was not inserted. We need to // update the value. result.first->second -= current_data_point.y; // qDebug() << "New result: " << result.first->second; } } // qDebug() << "Prior to returning map_trace, its size is:" << // map_trace.size(); return map_trace; } MapTrace & TraceMinusCombiner::combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "map trace size:" << map_trace_out.size() //<< "trace size:" << trace.size(); if(!map_trace_in.size()) return map_trace_out; return combine(map_trace_out, map_trace_in.toTrace()); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/traceminuscombiner.h000644 001750 001750 00000002074 14514537337 031110 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include "../../exportinmportconfig.h" #include "tracecombiner.h" #include "../../types.h" #include "../../trace/maptrace.h" #include "../../trace/trace.h" #include "../../trace/datapoint.h" #include "../../mzrange.h" namespace pappso { class TraceMinusCombiner; typedef std::shared_ptr TraceMinusCombinerCstSPtr; typedef std::shared_ptr TraceMinusCombinerSPtr; class PMSPP_LIB_DECL TraceMinusCombiner : public TraceCombiner { friend class MassSpectrumMinusCombiner; protected: public: TraceMinusCombiner(); TraceMinusCombiner(int decimal_places); TraceMinusCombiner(const TraceMinusCombiner &other); TraceMinusCombiner(TraceMinusCombinerCstSPtr other); virtual ~TraceMinusCombiner(); virtual MapTrace &combine(MapTrace &map_trace, const Trace &trace) const override; MapTrace &combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/tracepluscombiner.cpp000644 001750 001750 00000004630 14526455546 031277 0ustar00rusconirusconi000000 000000 #include #include #include #include #include #include #include #include #include "tracepluscombiner.h" #include "../../trace/trace.h" #include "../../types.h" #include "../../utils.h" #include "../../pappsoexception.h" #include "../../exception/exceptionoutofrange.h" namespace pappso { TracePlusCombiner::TracePlusCombiner() : TraceCombiner() { } TracePlusCombiner::TracePlusCombiner(int decimal_places) : TraceCombiner(decimal_places) { } TracePlusCombiner::TracePlusCombiner(const TracePlusCombiner &other) : TraceCombiner(other) { } TracePlusCombiner::TracePlusCombiner(TracePlusCombinerCstSPtr other) : TraceCombiner(other) { qDebug(); } TracePlusCombiner::~TracePlusCombiner() { } MapTrace & TracePlusCombiner::combine(MapTrace &map_trace, const Trace &trace) const { // qDebug() << "With m_decimalPlaces:" << m_decimalPlaces; if(!trace.size()) return map_trace; for(auto ¤t_data_point : trace) { // If the data point is 0-intensity, then do nothing! if(!current_data_point.y) continue; double x = Utils::roundToDecimals(current_data_point.x, m_decimalPlaces); std::map::iterator map_iterator; std::pair::iterator, bool> result; result = map_trace.insert( std::pair(x, current_data_point.y)); if(result.second) { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"; // The new element was inserted, we have nothing to do. } else { // The key already existed! The item was not inserted. We need to // update the value. result.first->second += current_data_point.y; } } // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "Prior to returning map_trace, its size is:" << map_trace.size(); // qDebug(); return map_trace; } MapTrace & TracePlusCombiner::combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "map trace size:" << map_trace_out.size() //<< "trace size:" << trace.size(); if(!map_trace_in.size()) return map_trace_out; return combine(map_trace_out, map_trace_in.toTrace()); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/combiners/tracepluscombiner.h000644 001750 001750 00000002041 14514537337 030732 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include "../../exportinmportconfig.h" #include "tracecombiner.h" #include "../../types.h" #include "../../trace/maptrace.h" #include "../../trace/trace.h" #include "../../trace/datapoint.h" #include "../../mzrange.h" namespace pappso { class TracePlusCombiner; typedef std::shared_ptr TracePlusCombinerCstSPtr; typedef std::shared_ptr TracePlusCombinerSPtr; class PMSPP_LIB_DECL TracePlusCombiner : public TraceCombiner { friend class MassSpectrumPlusCombiner; public: TracePlusCombiner(); TracePlusCombiner(int decimal_places); TracePlusCombiner(const TracePlusCombiner &other); TracePlusCombiner(TracePlusCombinerCstSPtr other); virtual ~TracePlusCombiner(); virtual MapTrace &combine(MapTrace &map_trace, const Trace &trace) const override; MapTrace &combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/compartraces/000755 001750 001750 00000000000 14533473271 025542 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/compartraces/cosinesimilarity.cpp000644 001750 001750 00000005524 14526455546 031652 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/compartraces/cosinesimilarity.cpp * \date 12/06/2023 * \author Olivier Langella * \brief computes cosine similarity of 2 traces vector * https://en.wikipedia.org/wiki/Cosine_similarity */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "cosinesimilarity.h" #include using namespace pappso; CosineSimilarity::CosineSimilarity(PrecisionPtr precision) { mp_precision = precision; msp_filterExclusion = std::make_shared(precision); } CosineSimilarity::CosineSimilarity(const CosineSimilarity &other) { mp_precision = other.mp_precision; msp_filterExclusion = other.msp_filterExclusion; } CosineSimilarity::~CosineSimilarity() { } double pappso::CosineSimilarity::similarity(pappso::Trace trace_a, pappso::Trace trace_b) const { // get inner peaks // we need a filter to get pairs of common peaks between a & b // or at least compute quickly intensity square of common pairs msp_filterExclusion.get()->filter(trace_a); msp_filterExclusion.get()->filter(trace_b); auto itb = trace_b.begin(); double inner_intensity_product = 0; for(const auto &peak_a : trace_a) { MzRange range(peak_a.x, mp_precision); double low = range.lower(); double up = range.upper(); while((itb != trace_b.end()) && (itb->x < low)) { itb++; } if(itb->x < up) { inner_intensity_product += peak_a.y * itb->y; } } double tracea_product = 0; // a intensity sum of intensity square for(const auto &peak_a : trace_a) { tracea_product += peak_a.y * peak_a.y; } double traceb_product = 0; // a intensity sum of intensity square for(const auto &peak_a : trace_b) { traceb_product += peak_a.y * peak_a.y; } return (inner_intensity_product / (sqrt(tracea_product) * sqrt(traceb_product))); } libpappsomspp-0.9.20/src/pappsomspp/processing/compartraces/cosinesimilarity.h000644 001750 001750 00000003535 14447024610 031301 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/compartraces/cosinesimilarity.h * \date 12/06/2023 * \author Olivier Langella * \brief computes cosine similarity of 2 traces vector * https://en.wikipedia.org/wiki/Cosine_similarity */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include "../../exportinmportconfig.h" #include "../../trace/trace.h" #include "../../precision.h" #include "../filters/filterexclusionmz.h" namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL CosineSimilarity { public: /** * Default constructor */ CosineSimilarity(PrecisionPtr precision); /** * Copy constructor * * @param other TODO */ CosineSimilarity(const CosineSimilarity &other); /** * Destructor */ ~CosineSimilarity(); double similarity(pappso::Trace trace_a, pappso::Trace trace_b) const; private: PrecisionPtr mp_precision; FilterInterfaceSPtr msp_filterExclusion; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/000755 001750 001750 00000000000 14533473271 025035 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracedetectioninterface.h000644 001750 001750 00000003557 14346367014 032075 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "tracepeak.h" namespace pappso { class TraceDetectionInterface; typedef std::shared_ptr TraceDetectionInterfaceSPtr; typedef std::shared_ptr TraceDetectionInterfaceCstSPtr; class TraceDetectionSinkInterface { public: virtual void setTracePeak(TracePeak &xic_peak) = 0; }; class TraceDetectionInterface { public: /** @brief detect peaks on a trace * @param trace the trace to detect peaks on * @param sink the object to store peaks or stream it * @param remove_peak_base if true, removes the area under the base of the * peak */ virtual void detect(const Trace &trace, TraceDetectionSinkInterface &sink, bool remove_peak_base) const = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracedetectionmoulon.cpp000644 001750 001750 00000007472 14526455546 032011 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "tracedetectionmoulon.h" namespace pappso { TraceDetectionMoulon::TraceDetectionMoulon( unsigned int smoothing_half_window_length, pappso_double tic_start, pappso_double tic_stop) : m_xicFilterSmoothing(smoothing_half_window_length) { m_ticStart = tic_start; m_ticStop = tic_stop; } TraceDetectionMoulon::TraceDetectionMoulon(const TraceDetectionMoulon &other) : m_xicFilterSmoothing(other.m_xicFilterSmoothing) { m_ticStart = other.m_ticStart; m_ticStop = other.m_ticStop; } TraceDetectionMoulon::~TraceDetectionMoulon() { } void TraceDetectionMoulon::setFilterMorphoMean(const FilterMorphoMean &smooth) { m_xicFilterSmoothing = smooth; } void TraceDetectionMoulon::setTicStart(double tic_start) { m_ticStart = tic_start; } void TraceDetectionMoulon::setTicStop(double tic_stop) { m_ticStop = tic_stop; } unsigned int TraceDetectionMoulon::getSmoothingHalfEdgeWindows() const { return m_xicFilterSmoothing.getMeanHalfEdgeWindows(); } pappso_double TraceDetectionMoulon::getTicStart() const { return m_ticStart; } pappso_double TraceDetectionMoulon::getTicStop() const { return m_ticStop; } void TraceDetectionMoulon::detect(const Trace &xic, TraceDetectionSinkInterface &sink, bool remove_peak_base) const { Trace xic_smoothed(xic); m_xicFilterSmoothing.filter(xic_smoothed); // detect peaks : bool banked(false); unsigned int nb_tic_start(0); std::vector::const_iterator it_smoothed; std::vector::const_iterator it, it_begin; // TracePeak *p_current_peak = nullptr; for(it_smoothed = xic_smoothed.begin(), it = xic.begin(); it_smoothed != xic_smoothed.end(); ++it_smoothed, ++it) { if((nb_tic_start == 0) && (it_begin != xic.end()) && (banked == false)) { // delete(p_current_peak); // p_current_peak = nullptr; it_begin = xic.end(); } if(it_smoothed->y >= m_ticStart) { nb_tic_start++; if(it_begin == xic.end()) { // p_current_peak = new TracePeak; // p_current_peak->setLeftBoundary(*it_smoothed); it_begin = it; banked = false; } if((nb_tic_start == 2) && (banked == false)) { banked = true; } } else { nb_tic_start = 0; } if(it_smoothed->y <= m_ticStop) { if(it_begin != xic.end()) { if(banked) { TracePeak peak(it_begin, it + 1, remove_peak_base); sink.setTracePeak(peak); } banked = false; } } } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracedetectionmoulon.h000644 001750 001750 00000004045 14346367014 031437 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "tracedetectioninterface.h" #include "../../processing/filters/filtermorpho.h" namespace pappso { class PMSPP_LIB_DECL TraceDetectionMoulon : public TraceDetectionInterface { private: FilterMorphoMean m_xicFilterSmoothing; pappso_double m_ticStart; pappso_double m_ticStop; public: TraceDetectionMoulon(unsigned int smoothing_half_window_length, pappso_double tic_start, pappso_double tic_stop); TraceDetectionMoulon(const TraceDetectionMoulon &other); virtual ~TraceDetectionMoulon(); void setFilterMorphoMean(const FilterMorphoMean &smooth); void setTicStart(double tic_start); void setTicStop(double tic_stop); unsigned int getSmoothingHalfEdgeWindows() const; pappso_double getTicStart() const; pappso_double getTicStop() const; void detect(const Trace &xic, TraceDetectionSinkInterface &sink, bool remove_peak_base) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracedetectionzivy.cpp000644 001750 001750 00000016630 14526455546 031475 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "tracedetectionzivy.h" #include "tracepeak.h" #include "../../exception/exceptionoutofrange.h" #include "../../exception/exceptionnotpossible.h" #include namespace pappso { TraceDetectionZivy::TraceDetectionZivy( unsigned int smoothing_half_window_length, unsigned int minmax_half_window_length, unsigned int maxmin_half_window_length, pappso_double detection_threshold_on_minmax, pappso_double detection_threshold_on_maxmin) : m_smooth(smoothing_half_window_length), m_minMax(minmax_half_window_length), m_maxMin(maxmin_half_window_length) { m_detectionThresholdOnMaxMin = detection_threshold_on_maxmin; m_detectionThresholdOnMinMax = detection_threshold_on_minmax; } TraceDetectionZivy::~TraceDetectionZivy() { } void TraceDetectionZivy::setFilterMorphoMean(const FilterMorphoMean &smooth) { m_smooth = smooth; } void TraceDetectionZivy::setFilterMorphoMinMax(const FilterMorphoMinMax &minMax) { m_minMax = minMax; } void TraceDetectionZivy::setFilterMorphoMaxMin(const FilterMorphoMaxMin &maxMin) { m_maxMin = maxMin; } void TraceDetectionZivy::setDetectionThresholdOnMinmax( double detectionThresholdOnMinMax) { m_detectionThresholdOnMinMax = detectionThresholdOnMinMax; } void TraceDetectionZivy::setDetectionThresholdOnMaxmin( double detectionThresholdOnMaxMin) { m_detectionThresholdOnMaxMin = detectionThresholdOnMaxMin; } unsigned int TraceDetectionZivy::getSmoothingHalfEdgeWindows() const { return m_smooth.getMeanHalfEdgeWindows(); }; unsigned int TraceDetectionZivy::getMaxMinHalfEdgeWindows() const { return m_maxMin.getMaxMinHalfEdgeWindows(); }; unsigned int TraceDetectionZivy::getMinMaxHalfEdgeWindows() const { return m_minMax.getMinMaxHalfEdgeWindows(); }; pappso_double TraceDetectionZivy::getDetectionThresholdOnMinmax() const { return m_detectionThresholdOnMinMax; }; pappso_double TraceDetectionZivy::getDetectionThresholdOnMaxmin() const { return m_detectionThresholdOnMaxMin; }; void TraceDetectionZivy::detect(const Trace &xic, TraceDetectionSinkInterface &sink, bool remove_peak_base) const { // detect peak positions on close curve : a peak is an intensity value // strictly greater than the two surrounding values. In case of // equality (very rare, can happen with some old old spectrometers) we // take the last equal point to be the peak qDebug(); std::size_t size = xic.size(); if(size < 4) { qDebug() << QObject::tr( "The original XIC is too small to detect peaks (%1)") .arg(xic.size()); return; } if(size <= m_maxMin.getMaxMinHalfEdgeWindows()) return; if(size <= m_minMax.getMinMaxHalfEdgeWindows()) return; Trace xic_minmax(xic); //"close" courbe du haut if(m_smooth.getMeanHalfEdgeWindows() != 0) { qDebug() << "f"; m_smooth.filter(xic_minmax); } qDebug(); Trace xic_maxmin(xic_minmax); //"open" courbe du bas qDebug(); try { qDebug() << "f1"; m_minMax.filter(xic_minmax); qDebug() << "f2"; m_maxMin.filter(xic_maxmin); } catch(const ExceptionOutOfRange &e) { qDebug() << QObject::tr( "The original XIC is too small to detect peaks (%1) :\n%2") .arg(xic.size()) .arg(e.qwhat()); return; } qDebug() << "a"; std::vector::const_iterator previous_rt = xic_minmax.begin(); std::vector::const_iterator current_rt = (previous_rt + 1); std::vector::const_iterator last_rt = (xic_minmax.end() - 1); std::vector::const_iterator current_rt_on_maxmin = (xic_maxmin.begin() + 1); std::vector::const_iterator xic_position = xic.begin(); qDebug() << "b"; while(current_rt != last_rt) // for (unsigned int i = 1, count = 0; i < xic_minmax.size() - 1; ) { // conditions to have a peak if((previous_rt->y < current_rt->y) && (current_rt->y > m_detectionThresholdOnMinMax) && (current_rt_on_maxmin->y > m_detectionThresholdOnMaxMin)) { // here we test the last condition to have a peak // no peak case if(current_rt->y < (current_rt + 1)->y) { //++i; previous_rt = current_rt; current_rt++; current_rt_on_maxmin++; } // there is a peak here ! case else if(current_rt->y > (current_rt + 1)->y) { // peak.setMaxXicElement(*current_rt); // find left boundary std::vector::const_iterator it_left = moveLowerYLeftDataPoint(xic_minmax, current_rt); // walk back it_left = moveLowerYRigthDataPoint(xic_minmax, it_left); // peak.setLeftBoundary(*it_left); // find right boundary std::vector::const_iterator it_right = moveLowerYRigthDataPoint(xic_minmax, current_rt); // walk back it_right = moveLowerYLeftDataPoint(xic_minmax, it_right); // peak.setRightBoundary(*it_right); // integrate peak surface : auto it = findFirstEqualOrGreaterX(xic_position, xic.end(), it_left->x); xic_position = findFirstEqualOrGreaterX(it, xic.end(), it_right->x) + 1; // peak.setArea(areaTrace(it, xic_position)); // find the maximum : // peak.setMaxXicElement(*maxYDataPoint(it, xic_position)); // areaTrace() TracePeak peak(it, xic_position, remove_peak_base); sink.setTracePeak(peak); // } //++i; previous_rt = current_rt; current_rt++; current_rt_on_maxmin++; } // equality case, skipping equal points else { // while (v_minmax[i] == v_minmax[i + 1]) { //++i; current_rt++; current_rt_on_maxmin++; //++count; } } // no chance to have a peak at all, continue looping else { //++i; previous_rt = current_rt; current_rt++; current_rt_on_maxmin++; } } // end loop for peaks qDebug(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracedetectionzivy.h000644 001750 001750 00000005056 14346367014 031132 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "tracedetectioninterface.h" #include "../../processing/filters/filtermorpho.h" namespace pappso { class PMSPP_LIB_DECL TraceDetectionZivy : public TraceDetectionInterface { public: TraceDetectionZivy(unsigned int smoothing_half_window_length, unsigned int minmax_half_window_length, unsigned int maxmin_half_window_length, pappso_double detection_threshold_on_minmax, pappso_double detection_threshold_on_maxmin); virtual ~TraceDetectionZivy(); void setFilterMorphoMean(const FilterMorphoMean &smooth); void setFilterMorphoMinMax(const FilterMorphoMinMax &m_minMax); void setFilterMorphoMaxMin(const FilterMorphoMaxMin &maxMin); void setDetectionThresholdOnMinmax(double detectionThresholdOnMinMax); void setDetectionThresholdOnMaxmin(double detectionThresholdOnMaxMin); unsigned int getSmoothingHalfEdgeWindows() const; unsigned int getMaxMinHalfEdgeWindows() const; unsigned int getMinMaxHalfEdgeWindows() const; pappso_double getDetectionThresholdOnMinmax() const; pappso_double getDetectionThresholdOnMaxmin() const; void detect(const Trace &xic, TraceDetectionSinkInterface &sink, bool remove_peak_base) const override; private: FilterMorphoMean m_smooth; FilterMorphoMinMax m_minMax; FilterMorphoMaxMin m_maxMin; pappso_double m_detectionThresholdOnMinMax; pappso_double m_detectionThresholdOnMaxMin; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracepeak.cpp000644 001750 001750 00000007117 14526455546 027515 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "tracepeak.h" #include "../../trace/trace.h" namespace pappso { TracePeak::TracePeak() { } TracePeak::TracePeak(std::vector::const_iterator it_begin, std::vector::const_iterator it_end) { m_left = *it_begin; m_right = *(it_end - 1); m_max = *maxYDataPoint(it_begin, it_end); m_area = areaTrace(it_begin, it_end); } TracePeak::TracePeak(std::vector::const_iterator it_begin, std::vector::const_iterator it_end, bool remove_base) { m_left = *it_begin; m_right = *(it_end - 1); m_max = *maxYDataPoint(it_begin, it_end); m_area = areaTrace(it_begin, it_end); if(remove_base) { // remove the base of this peak m_area -= std::min(m_left.y, m_right.y) * (m_right.x - m_left.x); if(m_area < 0) m_area = 0; } } TracePeak::TracePeak(const TracePeak &other) { m_area = other.m_area; m_left = other.m_left; m_right = other.m_right; m_max = other.m_max; } TracePeak::~TracePeak() { } TracePeakCstSPtr TracePeak::makeTracePeakCstSPtr() const { return std::make_shared(*this); } DataPoint & TracePeak::getMaxXicElement() { return m_max; }; void TracePeak::setMaxXicElement(const DataPoint &max) { m_max = max; }; DataPoint & TracePeak::getLeftBoundary() { return m_left; }; void TracePeak::setLeftBoundary(const DataPoint &left) { m_left = left; }; DataPoint & TracePeak::getRightBoundary() { return m_right; }; const DataPoint & TracePeak::getRightBoundary() const { return m_right; }; void TracePeak::setRightBoundary(const DataPoint &right) { m_right = right; }; pappso_double TracePeak::getArea() const { return m_area; }; void TracePeak::setArea(pappso_double area) { m_area = area; }; bool TracePeak::containsRt(pappso::pappso_double rt) const { if((rt >= m_left.x) && (rt <= m_right.x)) { return (true); } return (false); } const DataPoint & TracePeak::getMaxXicElement() const { return m_max; } const DataPoint & TracePeak::getLeftBoundary() const { return m_left; } bool TracePeak::operator==(const TracePeak &other) const { return ((m_area == other.m_area) && (m_max == other.m_max) && (m_left == other.m_left) && (m_right == other.m_right)); } TracePeak & TracePeak::operator=(const TracePeak &other) { if(this == &other) return *this; m_area = other.m_area; m_max = other.m_max; m_left = other.m_left; m_right = other.m_right; return *this; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracepeak.h000644 001750 001750 00000005404 14346367014 027147 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../../exportinmportconfig.h" #include "../../trace/trace.h" #include "../../types.h" namespace pappso { class TracePeak; typedef std::shared_ptr TracePeakCstSPtr; /** @/brief Xic Peak stores peak boudaries detected from a Xic * */ class PMSPP_LIB_DECL TracePeak { public: TracePeak(); /** @brief construct a peak given a trace, begin and end x coordinate */ TracePeak(std::vector::const_iterator it_begin, std::vector::const_iterator it_end); /** @brief construct a peak given a trace, begin and end x coordinate * * @param it_begin begining of trace * @param it_end end of trace * @param remove_base if true, remove the base peak signal */ TracePeak(std::vector::const_iterator it_begin, std::vector::const_iterator it_end, bool remove_base); TracePeak(const TracePeak &other); ~TracePeak(); TracePeakCstSPtr makeTracePeakCstSPtr() const; DataPoint &getMaxXicElement(); const DataPoint &getMaxXicElement() const; void setMaxXicElement(const DataPoint &max); DataPoint &getLeftBoundary(); const DataPoint &getLeftBoundary() const; void setLeftBoundary(const DataPoint &left); DataPoint &getRightBoundary(); const DataPoint &getRightBoundary() const; void setRightBoundary(const DataPoint &right); pappso_double getArea() const; void setArea(pappso_double area); bool containsRt(pappso::pappso_double rt) const; bool operator==(const TracePeak &other) const; TracePeak &operator=(const TracePeak &other); protected: pappso_double m_area = 0; DataPoint m_max; DataPoint m_left; DataPoint m_right; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracepeaklist.cpp000644 001750 001750 00000004772 14526455546 030415 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/detection/tracepeaklist.cpp * \date 15/09/2021 * \author Olivier Langella * \brief trace peak list */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "tracepeaklist.h" using namespace pappso; TracePeakList::TracePeakList() { } TracePeakList::TracePeakList(const TracePeakList &other) : std::vector(other) { } TracePeakList::~TracePeakList() { } void pappso::TracePeakList::setTracePeak(pappso::TracePeak &xic_peak) { push_back(xic_peak); } std::vector::iterator pappso::findBestTracePeakGivenRtList(std::vector::iterator begin, std::vector::iterator end, const std::vector &rt_list, std::size_t &nb_peaks) { // get peak containing rt ahead : auto itend = std::partition(begin, end, [rt_list](const TracePeak &a) { for(double rt : rt_list) { if(a.containsRt(rt)) { return true; }; } return false; }); nb_peaks = std::distance(begin, itend); if(nb_peaks == 0) return end; return std::max_element( begin, itend, [](const TracePeak &a, const TracePeak &b) { return a.getArea() < b.getArea(); }); } std::vector::iterator pappso::findTracePeakGivenRt(std::vector::iterator begin, std::vector::iterator end, double rt) { return find_if( begin, end, [rt](const TracePeak &a) { return a.containsRt(rt); }); } libpappsomspp-0.9.20/src/pappsomspp/processing/detection/tracepeaklist.h000644 001750 001750 00000005364 14346367014 030050 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/detection/tracepeaklist.h * \date 15/09/2021 * \author Olivier Langella * \brief trace peak list */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "tracepeak.h" #include "tracedetectioninterface.h" namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL TracePeakList : public std::vector, public TraceDetectionSinkInterface { public: /** * Default constructor */ TracePeakList(); /** * Copy constructor * * @param other TODO */ TracePeakList(const TracePeakList &other); /** * Destructor */ virtual ~TracePeakList(); virtual void setTracePeak(TracePeak &xic_peak) override; }; /** @brief find the best peak matching a list of retention times * * @param begin begin iterator * @param end end iterator * @param rt_list retention time list in seconds * @param nb_peaks retrieve the number of detected peaks concerned by the * retention times * @return iterator on the best peak (bigger area) concerned by the retention * times * * */ PMSPP_LIB_DECL std::vector::iterator findBestTracePeakGivenRtList(std::vector::iterator begin, std::vector::iterator end, const std::vector &rt_list, std::size_t &nb_peaks); /** @brief find the peak matching a retention time * * @param begin begin iterator * @param end end iterator * @param rt retention time in seconds * @return iterator on the peak concerned by the retention time * */ PMSPP_LIB_DECL std::vector::iterator findTracePeakGivenRt(std::vector::iterator begin, std::vector::iterator end, double rt); } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/000755 001750 001750 00000000000 14533473271 024527 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp000644 001750 001750 00000007553 14526455546 034037 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #include #include #include #include "../../exception/exceptionnotrecognized.h" #include "filterceilingamplitudepercentage.h" namespace pappso { FilterCeilingAmplitudePercentage::FilterCeilingAmplitudePercentage( double percentage) { m_percentage = percentage; } FilterCeilingAmplitudePercentage::FilterCeilingAmplitudePercentage( const FilterCeilingAmplitudePercentage &other) { m_percentage = other.m_percentage; } FilterCeilingAmplitudePercentage::~FilterCeilingAmplitudePercentage() { } FilterCeilingAmplitudePercentage & FilterCeilingAmplitudePercentage::operator=( const FilterCeilingAmplitudePercentage &other) { if(&other == this) return *this; m_percentage = other.m_percentage; return *this; } FilterCeilingAmplitudePercentage::FilterCeilingAmplitudePercentage( const QString ¶meters) { buildFilterFromString(parameters); } void FilterCeilingAmplitudePercentage::buildFilterFromString( const QString ¶meters) { // Typical string: "CeilingAmplitudePercentage|15" if(parameters.startsWith(QString("%1|").arg(name()))) { QStringList params = parameters.split("|").back().split(";"); m_percentage = params.at(0).toDouble(); } else { throw pappso::ExceptionNotRecognized( QString( "Building of FilterCeilingAmplitudePercentage from string %1 failed") .arg(parameters)); } } Trace & FilterCeilingAmplitudePercentage::filter(Trace &data_points) const { auto it_min = minYDataPoint(data_points.begin(), data_points.end()); auto it_max = maxYDataPoint(data_points.begin(), data_points.end()); if(it_min == data_points.end() || it_max == data_points.end()) return data_points; double min = it_min->y; double max = it_max->y; double amplitude = max - min; double amplitude_ratio = amplitude * m_percentage / 100; double threshold = min + amplitude_ratio; // Since we never remove points, we only change their y value, we can do the // filtering inplace. for(auto &&data_point : data_points) { // Change the value to be threshold (re-ceiling in action). if(data_point.y > threshold) { data_point.y = threshold; } } return data_points; } double FilterCeilingAmplitudePercentage::getPercentage() const { return m_percentage; } //! Return a string with the textual representation of the configuration data. QString FilterCeilingAmplitudePercentage::toString() const { return QString("%1|%2").arg(name()).arg( QString::number(m_percentage, 'f', 2)); } QString FilterCeilingAmplitudePercentage::name() const { return "CeilingAmplitudePercentage"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h000644 001750 001750 00000005513 14514537337 033472 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once #include #include "../../trace/trace.h" #include "../../exportinmportconfig.h" #include "filternameinterface.h" namespace pappso { class FilterCeilingAmplitudePercentage; typedef std::shared_ptr FilterCeilingAmplitudePercentageSPtr; typedef std::shared_ptr FilterCeilingAmplitudePercentageCstSPtr; /** * @brief Redefines the ceiling intensity of the Trace * * The amplitude of the trace is computed (maxValue - minValue) * Its fraction is calculated = amplitude * (percentage / 100) * The threshold value is computed as (minValue + fraction) * * When the values to be filtered are above that threshold they acquire that * threshold value. * * When the values to be filtered are below that threshold they remain * unchanged. * * This effectively re-ceilings the values to threshold. */ class PMSPP_LIB_DECL FilterCeilingAmplitudePercentage : public FilterNameInterface { public: FilterCeilingAmplitudePercentage(double percentage); FilterCeilingAmplitudePercentage(const QString ¶meters); FilterCeilingAmplitudePercentage( const FilterCeilingAmplitudePercentage &other); virtual ~FilterCeilingAmplitudePercentage(); FilterCeilingAmplitudePercentage & operator=(const FilterCeilingAmplitudePercentage &other); Trace &filter(Trace &data_points) const override; double getPercentage() const; QString name() const override; QString toString() const override; protected: void buildFilterFromString(const QString &strBuildParams) override; private: double m_percentage; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterchargedeconvolution.cpp000644 001750 001750 00000024321 14526455546 032514 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filtertdfcorrectpeak.cpp * \date 30/09/2020 * \author Thomas Renne * \brief Sum peaks and transform mz to fit charge = 1 */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filterchargedeconvolution.h" #include #include "../../exception/exceptionnotrecognized.h" using namespace pappso; pappso::FilterChargeDeconvolution::FilterChargeDeconvolution( const QString &strBuildParams) { buildFilterFromString(strBuildParams); // qInfo() << "ChargeDeconvolution created"; } FilterChargeDeconvolution::FilterChargeDeconvolution(PrecisionPtr precision_ptr) : m_precisionPtrZ1(precision_ptr) { m_diffC12C13_z1 = DIFFC12C13; m_diffC12C13_z2 = DIFFC12C13 / 2; m_precisionPtrZ1 = precision_ptr; m_precisionPtrZ2 = pappso::PrecisionFactory::getPrecisionPtrFractionInstance( m_precisionPtrZ1, 0.5); // pappso::PrecisionFactory::getPrecisionDividedBy(m_precisionPtrZ1, 2): // qInfo() << m_precisionPtrZ2->getNominal(); } FilterChargeDeconvolution::FilterChargeDeconvolution( const FilterChargeDeconvolution &other) : m_precisionPtrZ1(other.m_precisionPtrZ1), m_precisionPtrZ2(other.m_precisionPtrZ2) { m_diffC12C13_z1 = DIFFC12C13; m_diffC12C13_z2 = DIFFC12C13 / 2; } FilterChargeDeconvolution::~FilterChargeDeconvolution() { qDebug() << "ChargeDeconvolution destroyed"; } void pappso::FilterChargeDeconvolution::buildFilterFromString( const QString &strBuildParams) { //"chargeDeconvolution|0.02dalton" qDebug(); if(strBuildParams.startsWith("chargeDeconvolution|")) { QStringList params = strBuildParams.split("|").back().split(";", Qt::SkipEmptyParts); QString precision = params.at(0); m_precisionPtrZ1 = PrecisionFactory::fromString(precision.replace("dalton", " dalton") .replace("ppm", " ppm") .replace("res", " res")); qDebug(); m_precisionPtrZ2 = pappso::PrecisionFactory::getPrecisionPtrFractionInstance( m_precisionPtrZ1, 0.5); m_diffC12C13_z1 = DIFFC12C13; m_diffC12C13_z2 = DIFFC12C13 / 2; } else { throw pappso::ExceptionNotRecognized( QString("building chargeDeconvolution from string %1 is not possible") .arg(strBuildParams)); } qDebug(); } QString pappso::FilterChargeDeconvolution::name() const { return "chargeDeconvolution"; } QString pappso::FilterChargeDeconvolution::toString() const { QString strCode = QString("%1|%2").arg(name()).arg(m_precisionPtrZ1->toString()); strCode.replace(" ", ""); return strCode; } Trace & FilterChargeDeconvolution::filter(Trace &data_points) const { qDebug(); std::vector data_points_info; data_points.sortY(SortOrder::descending); qDebug() << data_points.size(); Trace new_trace; for(auto &data_point : data_points) { addDataPointToList(data_points_info, data_point); } computeBestChargeOfDataPoint(data_points_info); // qDebug() << data_points_info.size(); computeIsotopeDeconvolution(data_points_info); // qDebug() << data_points_info.size(); transformToMonoChargedForAllDataPoint(data_points_info); for(DataPointInfoSp &dpi : data_points_info) { // qDebug() << dpi->new_mono_charge_data_point.x << dpi->z_charge; new_trace.push_back(dpi->new_mono_charge_data_point); } new_trace.sortX(); data_points = std::move(new_trace); qDebug() << data_points.size(); qDebug(); return data_points; } void pappso::FilterChargeDeconvolution::addDataPointToList( std::vector &points, pappso::DataPoint &data_point) const { DataPointInfoSp new_dpi(std::make_shared()); new_dpi->data_point = data_point; MzRange range1(data_point.x + m_diffC12C13_z1, m_precisionPtrZ1); new_dpi->z1_range = std::pair(range1.lower(), range1.upper()); MzRange range2(data_point.x + m_diffC12C13_z2, m_precisionPtrZ2); new_dpi->z2_range = std::pair(range2.lower(), range2.upper()); addDataPointRefByExclusion(points, new_dpi); points.push_back(new_dpi); } void pappso::FilterChargeDeconvolution::addDataPointRefByExclusion( std::vector &points, FilterChargeDeconvolution::DataPointInfoSp &new_dpi) const { // add datapoint which match the mz_range = 1 to z1_list auto i_z1 = points.begin(), end = points.end(); while(i_z1 != end) { // get the datapoint which match the range i_z1 = std::find_if(i_z1, end, [&new_dpi](DataPointInfoSp dpi) { return (new_dpi->data_point.x >= dpi->z1_range.first && new_dpi->data_point.x <= dpi->z1_range.second); }); if(i_z1 != end) { // add the datapoint to the list and add the parent pointer i_z1->get()->z1_vect.push_back(new_dpi); new_dpi->parent = *i_z1; DataPointInfoSp parent_z1 = i_z1->get()->parent.lock(); while(parent_z1 != nullptr) { parent_z1.get()->z1_vect.push_back(new_dpi); parent_z1 = parent_z1->parent.lock(); } i_z1++; } } // add datapoint which match the mz_range = 2 to z2_list auto i_z2 = points.begin(); while(i_z2 != end) { // get the datapoint which match the range i_z2 = std::find_if(i_z2, end, [&new_dpi](DataPointInfoSp dpi) { return (new_dpi->data_point.x >= dpi->z2_range.first && new_dpi->data_point.x <= dpi->z2_range.second); }); if(i_z2 != end) { // add the datapoint to the list and add the parent pointer i_z2->get()->z2_vect.push_back(new_dpi); new_dpi->parent = *i_z2; DataPointInfoSp parent_z2 = i_z2->get()->parent.lock(); while(parent_z2 != nullptr) { parent_z2.get()->z2_vect.push_back(new_dpi); parent_z2 = parent_z2->parent.lock(); } i_z2++; } } } void pappso::FilterChargeDeconvolution::computeBestChargeOfDataPoint( std::vector &data_points_info) const { for(DataPointInfoSp &data_point_info : data_points_info) { if(data_point_info.get()->z1_vect.size() >= 1 && data_point_info.get()->z2_vect.size() == 0) { for(std::weak_ptr other : data_point_info.get()->z1_vect) { other.lock()->z_charge = 1; } data_point_info.get()->z_charge = 1; } else if(data_point_info.get()->z1_vect.size() == 0 && data_point_info.get()->z2_vect.size() >= 1) { for(std::weak_ptr other : data_point_info.get()->z2_vect) { other.lock()->z_charge = 2; } data_point_info.get()->z_charge = 2; } else if(data_point_info.get()->z1_vect.size() >= 1 && data_point_info.get()->z2_vect.size() >= 1) { for(std::weak_ptr other : data_point_info.get()->z2_vect) { other.lock()->z_charge = 2; } data_point_info.get()->z_charge = 2; } else { if(data_point_info.get()->z_charge == -1) { data_point_info.get()->z_charge = 0; } } } } void pappso::FilterChargeDeconvolution::computeIsotopeDeconvolution( std::vector &data_points_info) const { std::vector deconvoluted_points_info; for(DataPointInfoSp &data_point_info : data_points_info) { if(data_point_info->parent.lock() == nullptr) { DataPointInfoSp deconvoluted_point(std::make_shared()); deconvoluted_point->z_charge = data_point_info->z_charge; deconvoluted_point->new_mono_charge_data_point = data_point_info->data_point; if(data_point_info->z_charge == 1) { for(std::weak_ptr data : data_point_info->z1_vect) { deconvoluted_point->new_mono_charge_data_point.y += data.lock()->data_point.y; } } else if(data_point_info->z_charge == 2) { for(std::weak_ptr data : data_point_info->z2_vect) { deconvoluted_point->new_mono_charge_data_point.y += data.lock()->data_point.y; } } else // if z.charge == 0 { deconvoluted_point->new_mono_charge_data_point = data_point_info->data_point; } deconvoluted_points_info.push_back(deconvoluted_point); } } data_points_info = deconvoluted_points_info; } void pappso::FilterChargeDeconvolution::transformToMonoChargedForAllDataPoint( std::vector &data_points_info) const { for(DataPointInfoSp &dpi : data_points_info) { if(dpi->z_charge == 2) { dpi->new_mono_charge_data_point.x += dpi->new_mono_charge_data_point.x - MHPLUS; } } } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterchargedeconvolution.h000644 001750 001750 00000011515 14346367014 032152 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filterchargedeconvolution.h * \date 30/09/2020 * \author Thomas Renne * \brief Sum peaks and transform mz to fit charge = 1 */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filternameinterface.h" #include "../../trace/trace.h" /** * @brief tries to keep as much as possible monoisotopes, removing any possible * C13 peaks and changes multicharge peaks to monocharge */ namespace pappso { class PMSPP_LIB_DECL FilterChargeDeconvolution : public FilterNameInterface { private: struct DataPointInfo; typedef std::shared_ptr DataPointInfoSp; struct DataPointInfo { // peak charge int z_charge = -1; // datapoint get from the raw data DataPoint data_point; // new data point with new intensity and mz DataPoint new_mono_charge_data_point; // range of mass possible for z1 peak (~1mz) std::pair z1_range; // range of mass possible for z2 peak (~0.5mz) std::pair z2_range; // datapointInfo where the mass is in the range std::weak_ptr parent; // list of datapointinfo with 1mz diff multiple std::vector> z1_vect; // list of datapointinfo with 2mz diff multiple std::vector> z2_vect; }; public: /** * Default constructor */ FilterChargeDeconvolution(PrecisionPtr precision_ptr); /** * @param strBuildParams string to build the filter * "chargeDeconvolution|0.02dalton" */ FilterChargeDeconvolution(const QString &strBuildParams); /** * Copy constructor * * @param other TODO */ FilterChargeDeconvolution(const FilterChargeDeconvolution &other); /** * Destructor */ virtual ~FilterChargeDeconvolution(); /** * @brief get all the datapoints and remove different isotope and add their * intensity and change to charge = 1 when the charge is known * @return a list of datapoint */ Trace &filter(Trace &data_points) const override; virtual QString name() const override; QString toString() const override; protected: void buildFilterFromString(const QString &strBuildParams) override; private: /** * @brief Add each datapoint to a vector of structure describe above * @return the vecotr of datapointInfo with their datapoint and their * exclusion mass range */ void addDataPointToList( std::vector &points, DataPoint &data_point) const; /** * @brief For each datapointInfo add the datapoint to the lists by their * exclusion range * @return the vecotr of datapointInfo with their lists of isotopics peaks */ void addDataPointRefByExclusion( std::vector &points, FilterChargeDeconvolution::DataPointInfoSp &new_dpi) const; /** * @brief Compare both list (z1 and z2) and add the right level of charge * @return the vecotr of datapointInfo with their charge */ void computeBestChargeOfDataPoint( std::vector &data_points_info) const; /** * @brief For eache datapointInfo whith no parent copy info in new vector with * the intensity of the monoistipics peaks added * @return the vecotr of datapointInfo with their intensity merged */ void computeIsotopeDeconvolution( std::vector &data_points_info) const; /** * @brief For eache datapointInfo with a charge = 2 transform the peak to a * charge = 1 by multiplying the mz by 2 and remove 1 H * @return the vecotr of datapointInfo their z corrected */ void transformToMonoChargedForAllDataPoint( std::vector &data_points_info) const; private: double m_diffC12C13_z1; double m_diffC12C13_z2; PrecisionPtr m_precisionPtrZ1; PrecisionPtr m_precisionPtrZ2; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp000644 001750 001750 00000011142 14526455546 033024 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filtercomplementionenhancer.cpp * \date 21/08/2020 * \author Olivier Langella * \brief enhance ion intensity of ion fragment complement */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filtercomplementionenhancer.h" #include "../../exception/exceptionnotrecognized.h" using namespace pappso; FilterComplementIonEnhancer::FilterComplementIonEnhancer( double target_mz, PrecisionPtr precision_ptr) : m_targetMzSum(target_mz), m_precisionPtr(precision_ptr) { } FilterComplementIonEnhancer::FilterComplementIonEnhancer( const FilterComplementIonEnhancer &other) : m_targetMzSum(other.m_targetMzSum), m_precisionPtr(other.m_precisionPtr) { } pappso::FilterComplementIonEnhancer::FilterComplementIonEnhancer( const pappso::QualifiedMassSpectrum &qmass_spectrum, pappso::PrecisionPtr precision_ptr) : m_targetMzSum(((qmass_spectrum.getPrecursorMz() - (qmass_spectrum.getPrecursorCharge() * MHPLUS / qmass_spectrum.getPrecursorCharge())) * qmass_spectrum.getPrecursorCharge() + (MHPLUS + MHPLUS))), m_precisionPtr(precision_ptr) { } pappso::FilterComplementIonEnhancer::FilterComplementIonEnhancer( const QString &strBuildParams) { buildFilterFromString(strBuildParams); } void pappso::FilterComplementIonEnhancer::buildFilterFromString( const QString &strBuildParams) { //"complementIonEnhancer|456.567;0.02dalton" if(strBuildParams.startsWith("complementIonEnhancer|")) { QStringList params = strBuildParams.split("|").back().split(";"); m_targetMzSum = params.at(0).toDouble(); QString precision = params.at(1); m_precisionPtr = PrecisionFactory::fromString(precision.replace("dalton", " dalton") .replace("ppm", " ppm") .replace("res", " res")); } else { throw pappso::ExceptionNotRecognized( QString( "building FilterComplementIonEnhancer from string %1 is not possible") .arg(strBuildParams)); } } QString pappso::FilterComplementIonEnhancer::name() const { return "complementIonEnhancer"; } QString pappso::FilterComplementIonEnhancer::toString() const { QString strCode = QString("%1|%2;%3") .arg(name()) .arg(QString::number(m_targetMzSum, 'g', 15)) .arg(m_precisionPtr->toString()); strCode.replace(" ", ""); return strCode; } FilterComplementIonEnhancer::~FilterComplementIonEnhancer() { } pappso::Trace & pappso::FilterComplementIonEnhancer::filter(pappso::Trace &data_points) const { auto it_end = data_points.end(); std::sort(data_points.begin(), it_end, [](const DataPoint &a, const DataPoint &b) { return (a.y > b.y); }); for(auto it = data_points.begin(); it != it_end; it++) { double mz_complement = m_targetMzSum - it->x; if(mz_complement > 0) { MzRange mz_range(mz_complement, m_precisionPtr); enhanceComplementMassInRange( it->y, mz_range.lower(), mz_range.upper(), it, it_end); } } data_points.sortX(); return data_points; } void pappso::FilterComplementIonEnhancer::enhanceComplementMassInRange( double new_intensity, double mz_lower_bound, double mz_upper_bound, std::vector::iterator it_begin, std::vector::iterator it_end) const { for(std::vector::iterator it = it_begin; it != it_end; it++) { if((it->x >= mz_lower_bound) && (it->x <= mz_upper_bound)) { if(it->y < new_intensity) { it->y = new_intensity; } } } } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtercomplementionenhancer.h000644 001750 001750 00000005745 14346367014 032475 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filtercomplementionenhancer.h * \date 21/08/2020 * \author Olivier Langella * \brief enhance ion intensity of ion fragment complement */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filterinterface.h" #include "../../trace/trace.h" #include "../../massspectrum/qualifiedmassspectrum.h" #include "filternameinterface.h" namespace pappso { /** * @brief try to detect complementary ions and assign maximum intensity of both * elements * * experimental filter */ class PMSPP_LIB_DECL FilterComplementIonEnhancer : public FilterNameInterface { public: /** * @param target_mz the targeted mass of the peak pair * @param precision_ptr matching precision */ FilterComplementIonEnhancer(double target_mz, PrecisionPtr precision_ptr); /** * @param qmass_spectrum qualified mass spectrum to compute the targeted mass * of the peak pair * @param precision_ptr matching precision */ FilterComplementIonEnhancer(const QualifiedMassSpectrum &qmass_spectrum, PrecisionPtr precision_ptr); /** * @param strBuildParams string to build the filter * "complementIonEnhancer|456.567;0.02dalton" */ FilterComplementIonEnhancer(const QString &strBuildParams); /** * Copy constructor * * @param other TODO */ FilterComplementIonEnhancer(const FilterComplementIonEnhancer &other); /** * Destructor */ virtual ~FilterComplementIonEnhancer(); Trace &filter(Trace &data_points) const override; void buildFilterFromString(const QString &strBuildParams) override; QString name() const override; QString toString() const override; private: void enhanceComplementMassInRange(double new_intensity, double mz_lower_bound, double mz_upper_bound, std::vector::iterator it_begin, std::vector::iterator it_end) const; private: double m_targetMzSum; PrecisionPtr m_precisionPtr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterexclusionmz.cpp000644 001750 001750 00000007277 14526455546 031045 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filterexclusionmz.cpp * \date 09/02/2021 * \author Thomas Renne * \brief Delete small peaks in the exclusion range */ /******************************************************************************* * Copyright (c) 2021 Thomas Renne . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filterexclusionmz.h" #include #include "../../exception/exceptionnotrecognized.h" using namespace pappso; FilterMzExclusion::FilterMzExclusion(const QString &strBuildParams) { buildFilterFromString(strBuildParams); } FilterMzExclusion::FilterMzExclusion(pappso::PrecisionPtr precision_ptr) : m_exclusionPrecision(precision_ptr) { } FilterMzExclusion::FilterMzExclusion(const pappso::FilterMzExclusion &other) : m_exclusionPrecision(other.m_exclusionPrecision) { } FilterMzExclusion::~FilterMzExclusion() { } void pappso::FilterMzExclusion::buildFilterFromString(const QString &strBuildParams) { qDebug(); if(strBuildParams.startsWith("mzExclusion|")) { QStringList params = strBuildParams.split("|").back().split(";", Qt::SkipEmptyParts); QString precision = params.at(0); m_exclusionPrecision = PrecisionFactory::fromString(precision.replace("dalton", " dalton") .replace("ppm", " ppm") .replace("res", " res")); } else { throw pappso::ExceptionNotRecognized( QString("building mzExclusion from string %1 is not possible") .arg(strBuildParams)); } qDebug(); } pappso::Trace & pappso::FilterMzExclusion::filter(pappso::Trace &data_points) const { qDebug(); qDebug() << "before" << data_points.size(); data_points.sortY(SortOrder::descending); Trace new_trace = removeTraceInExclusionMargin(data_points); new_trace.sortX(); data_points = std::move(new_trace); qDebug() << "after" << data_points.size(); qDebug(); return data_points; } QString pappso::FilterMzExclusion::name() const { return "mzExclusion"; } QString pappso::FilterMzExclusion::toString() const { QString strCode = QString("%1|%2").arg(name()).arg(m_exclusionPrecision->toString()); strCode.replace(" ", ""); return strCode; } pappso::Trace pappso::FilterMzExclusion::removeTraceInExclusionMargin( pappso::Trace &points) const { Trace new_trace; std::vector excluded_ranges; for(auto &data_point : points) { auto exclude_index = excluded_ranges.begin(), end = excluded_ranges.end(); exclude_index = std::find_if(exclude_index, end, [&data_point](MzRange range) { return (data_point.x >= range.lower() && data_point.x <= range.upper()); }); if(exclude_index == end) { new_trace.push_back(data_point); MzRange new_range(data_point.x, m_exclusionPrecision); excluded_ranges.push_back(new_range); } } return new_trace; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterexclusionmz.h000644 001750 001750 00000004303 14346367014 030465 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filterexclusionmz.h * \date 09/02/2021 * \author Thomas Renne * \brief Delete small peaks in the exclusion range */ /******************************************************************************* * Copyright (c) 2021 Thomas Renne . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filternameinterface.h" #include "../../trace/trace.h" namespace pappso { class PMSPP_LIB_DECL FilterMzExclusion : public FilterNameInterface { public: /** * Default constructor */ FilterMzExclusion(PrecisionPtr precision_ptr); /** * @param strBuildParams string to build the filter * "mzExclusion|0.02dalton" */ FilterMzExclusion(const QString &strBuildParams); /** * Copy constructor * * @param other TODO */ FilterMzExclusion(const FilterMzExclusion &other); /** * Destructor */ virtual ~FilterMzExclusion(); QString name() const override; QString toString() const override; /** * @brief get all the datapoints and remove different isotope and add their * intensity and change to charge = 1 when the charge is known * @return a list of datapoint */ Trace &filter(Trace &data_points) const override; private: void buildFilterFromString(const QString &strBuildParams) override; Trace removeTraceInExclusionMargin(Trace &points) const; private: PrecisionPtr m_exclusionPrecision; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp000644 001750 001750 00000007477 14526455546 033553 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #include #include #include #include "../../exception/exceptionnotrecognized.h" #include "filterflooramplitudepercentage.h" namespace pappso { FilterFloorAmplitudePercentage::FilterFloorAmplitudePercentage( double percentage) { m_percentage = percentage; } FilterFloorAmplitudePercentage::FilterFloorAmplitudePercentage( const FilterFloorAmplitudePercentage &other) { m_percentage = other.m_percentage; } FilterFloorAmplitudePercentage::~FilterFloorAmplitudePercentage() { } FilterFloorAmplitudePercentage & FilterFloorAmplitudePercentage::operator=( const FilterFloorAmplitudePercentage &other) { if(&other == this) return *this; m_percentage = other.m_percentage; return *this; } FilterFloorAmplitudePercentage::FilterFloorAmplitudePercentage( const QString ¶meters) { buildFilterFromString(parameters); } void FilterFloorAmplitudePercentage::buildFilterFromString(const QString ¶meters) { // Typical string: "FloorAmplitudePercentage|15" if(parameters.startsWith(QString("%1|").arg(name()))) { QStringList params = parameters.split("|").back().split(";"); m_percentage = params.at(0).toDouble(); } else { throw pappso::ExceptionNotRecognized( QString( "Building of FilterFloorAmplitudePercentage from string %1 failed") .arg(parameters)); } } Trace & FilterFloorAmplitudePercentage::filter(Trace &data_points) const { auto it_min = minYDataPoint(data_points.begin(), data_points.end()); auto it_max = maxYDataPoint(data_points.begin(), data_points.end()); if(it_min == data_points.end() || it_max == data_points.end()) return data_points; double min = it_min->y; double max = it_max->y; double amplitude = max - min; double amplitude_ratio = amplitude * m_percentage / 100; double threshold = min + amplitude_ratio; // Since we never remove points, we only change their y value, we can do the // filtering inplace. for(auto &&data_point : data_points) { // Change the value to be threshold (re-flooring in action). if(data_point.y < threshold) { data_point.y = threshold; } } return data_points; } double FilterFloorAmplitudePercentage::getPercentage() const { return m_percentage; } //! Return a string with the textual representation of the configuration data. QString FilterFloorAmplitudePercentage::toString() const { return QString("%1|%2").arg(name()).arg( QString::number(m_percentage, 'f', 2)); } QString FilterFloorAmplitudePercentage::name() const { return "FloorAmplitudePercentage"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterflooramplitudepercentage.h000644 001750 001750 00000005446 14346367014 033202 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once #include #include "../../trace/trace.h" #include "../../exportinmportconfig.h" #include "filternameinterface.h" namespace pappso { class FilterFloorAmplitudePercentage; typedef std::shared_ptr FilterFloorAmplitudePercentageSPtr; typedef std::shared_ptr FilterFloorAmplitudePercentageCstSPtr; /** * @brief Redefines the floor intensity of the Trace * * The amplitude of the trace is computed (maxValue - minValue) * Its fraction is calculated = amplitude * (percentage / 100) * The threshold value is computed as (minValue + fraction) * * When the values to be filtered are below that threshold they acquire that * threshold value. * * When the values to be filtered are above that threshold they remain * unchanged. * * This effectively re-floors the values to threshold. */ class PMSPP_LIB_DECL FilterFloorAmplitudePercentage : public FilterNameInterface { public: FilterFloorAmplitudePercentage(double percentage); FilterFloorAmplitudePercentage(const QString ¶meters); FilterFloorAmplitudePercentage(const FilterFloorAmplitudePercentage &other); virtual ~FilterFloorAmplitudePercentage(); FilterFloorAmplitudePercentage & operator=(const FilterFloorAmplitudePercentage &other); Trace &filter(Trace &data_points) const override; double getPercentage() const; QString name() const override; QString toString() const override; protected: void buildFilterFromString(const QString &strBuildParams) override; private: double m_percentage; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterinterface.h000644 001750 001750 00000004017 14346367014 030047 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filers/filterinterface.h * \date 26/04/2019 * \author Olivier Langella * \brief generic interface to filter any trace */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "../../exportinmportconfig.h" namespace pappso { class Trace; /** @brief generic interface to apply a filter on a trace */ class PMSPP_LIB_DECL FilterInterface { public: virtual Trace &filter(Trace &data_points) const = 0; virtual ~FilterInterface(){}; }; typedef std::shared_ptr FilterInterfaceSPtr; typedef std::shared_ptr FilterInterfaceCstSPtr; class MassSpectrum; /** @brief generic interface to apply a filter on a MassSpectrum * This is the same as FilterInterface, but some filter are only relevant if * they are used on MassSpectrum using this interface means the filter can only * be applied on MassSpectrum and not on Trace */ class PMSPP_LIB_DECL MassSpectrumFilterInterface { public: virtual MassSpectrum &filter(MassSpectrum &spectrum) const = 0; virtual ~MassSpectrumFilterInterface(){}; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterlocalmaximum.cpp000644 001750 001750 00000005002 14526455546 031135 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filterlocalmaximum.cpp * \date 24/09/2019 * \author Olivier Langella * \brief filter to select local maximum in a spectrum * inspired from the proteowizard library "LocalMaximumPeakDetector" */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filterlocalmaximum.h" #include "../../trace/trace.h" using namespace pappso; FilterLocalMaximum::FilterLocalMaximum(std::size_t half_window_size) : m_halfWindowSize(half_window_size) { } FilterLocalMaximum::FilterLocalMaximum(const FilterLocalMaximum &other) : m_halfWindowSize(other.m_halfWindowSize) { } FilterLocalMaximum::~FilterLocalMaximum() { } Trace & FilterLocalMaximum::filter(Trace &data_points) const { if(m_halfWindowSize == 0) return data_points; Trace new_trace; auto it = data_points.begin(); auto itend = data_points.end() - m_halfWindowSize - 1; // no filter at the end of signal // new_trace.reserve(data_points.size()); while((it != data_points.end()) && (std::distance(data_points.begin(), it) < (int)m_halfWindowSize)) { // no filter at the begining of the signal it++; } while(it != itend) { auto itwend = it + m_halfWindowSize + 1; auto itw = maxYDataPoint(it - m_halfWindowSize, it + 1); if(itw == it) { itw = maxYDataPoint(it, itwend); if(itw == it) { new_trace.push_back({it->x, it->y}); } } it++; } data_points = std::move(new_trace); return data_points; } std::size_t FilterLocalMaximum::getHalfWindowSize() const { return m_halfWindowSize; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterlocalmaximum.h000644 001750 001750 00000003730 14346367014 030600 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filterlocalmaximum.h * \date 24/09/2019 * \author Olivier Langella * \brief filter to select local maximum in a spectrum * inspired from the proteowizard library "LocalMaximumPeakDetector" */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filterinterface.h" namespace pappso { /** * @brief finds all local maxima, i.e. any point that has a greater y value than * both of its neighboring points and only keep those points * * usefull documentation : * http://pd.chem.ucl.ac.uk/pdnn/peaks/peakindx.htm */ class PMSPP_LIB_DECL FilterLocalMaximum : public FilterInterface { public: /** * Default constructor */ FilterLocalMaximum(std::size_t half_window_size); /** * Copy constructor * * @param other TODO */ FilterLocalMaximum(const FilterLocalMaximum &other); /** * Destructor */ virtual ~FilterLocalMaximum(); Trace &filter(Trace &data_points) const override; std::size_t getHalfWindowSize() const; private: std::size_t m_halfWindowSize = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp000644 001750 001750 00000052367 14526455546 034021 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #include #include #include #include #include #include "../../exception/exceptionnotrecognized.h" #include "filterlowintensitysignalremoval.h" #include "../../trace/maptrace.h" namespace pappso { FilterLowIntensitySignalRemoval::FilterLowIntensitySignalRemoval( double mean, double std_dev, double threshold) { m_noiseMean = mean; m_noiseStdDev = std_dev; m_threshold = threshold; } FilterLowIntensitySignalRemoval::FilterLowIntensitySignalRemoval( const QString ¶meters) { buildFilterFromString(parameters); } FilterLowIntensitySignalRemoval::FilterLowIntensitySignalRemoval( const FilterLowIntensitySignalRemoval &other) { m_noiseMean = other.m_noiseMean; m_noiseStdDev = other.m_noiseStdDev; m_threshold = other.m_threshold; } FilterLowIntensitySignalRemoval::~FilterLowIntensitySignalRemoval() { } FilterLowIntensitySignalRemoval & FilterLowIntensitySignalRemoval::operator=( const FilterLowIntensitySignalRemoval &other) { if(&other == this) return *this; m_noiseMean = other.m_noiseMean; m_noiseStdDev = other.m_noiseStdDev; m_threshold = other.m_threshold; return *this; } void FilterLowIntensitySignalRemoval::buildFilterFromString( const QString ¶meters) { // Typical string: "FloorAmplitudePercentage|15" if(parameters.startsWith(QString("%1|").arg(name()))) { QStringList params = parameters.split("|").back().split(";"); m_noiseMean = params.at(0).toDouble(); m_noiseStdDev = params.at(1).toDouble(); m_threshold = params.at(2).toDouble(); } else { throw pappso::ExceptionNotRecognized( QString( "Building of FilterLowIntensitySignalRemoval from string %1 failed") .arg(parameters)); } } std::size_t FilterLowIntensitySignalRemoval::detectClusterApices(const Trace &trace) { // We want to iterate in the trace and check if we can get the apicess // isolated one by one. An apex is nothing more than the top cusp of a // triangle. We only store apices that have a value > m_threshold. m_clusters.clear(); std::size_t trace_size = trace.size(); if(trace_size <= 2) { // qDebug() << "The original trace has less than 3 points. Returning it " //"without modification."; return m_clusters.size(); } // else // qDebug() << "The original trace has" << trace_size << "data points"; // Seed the system with the first point of the trace. m_curIter = trace.cbegin(); m_prevIter = trace.cbegin(); // qDebug() << "First trace point: " //<< "(" << m_prevIter->x << "," << m_prevIter->y << ");"; // We still have not found any apex! m_prevApex = trace.cend(); // We will need to know if we were ascending to an apex. bool was_ascending_to_apex = false; // Prepare a first apex cluster. ApicesSPtr cluster_apices = std::make_shared(); // Now that we have seeded the system with the first point of the original // trace, go to the next one. ++m_curIter; // And now iterate in the original trace and make sure we detect all the // apicess. while(m_curIter != trace.cend()) { // qDebug() << "Current trace point: " //<< "(" << m_curIter->x << "," << m_curIter->y << ");"; // We monitor if we are going up or down a peak. if(m_curIter->y > m_prevIter->y) // We are ascending a peak. We do not know if we are at the apex. { // qDebug().noquote() << "We are ascending to an apex.\n"; was_ascending_to_apex = true; } else // We are descending a peak. { // qDebug().noquote() << "Descending a peak. "; // There are two situations: // // 1. Either we were ascending to an apex, and m_prev is that apex, // // 2. Or we were not ascending to an apex and in fact all we are doing // is going down an apex that occurred more than one trace point ago. if(!was_ascending_to_apex) // We were not ascending to an apex. { // Do nothing here. // qDebug().noquote() //<< "But, we were not ascending to an apex, so do nothing.\n"; } else // We are effectively descending a peak right after the apex was // reached at the previous iteration. { m_curApex = m_prevIter; // qDebug().noquote() //<< "And, we were ascending to an apex, so " //"m_curApex has become m_prevIter: (" //<< m_curApex->x << "," << m_curApex->y << ")\n"; // We might have two situations: // 1. We had already encountered an apex. // 2. We had not yet encountered an apex. if(m_prevApex != trace.cend()) // We had already encountered an apex. { // Was that apex far on the left of the current apex ? if(m_curApex->x - m_prevApex->x > INTRA_CLUSTER_INTER_PEAK_DISTANCE) // The distance is not compatible with both apices to belong // to the same apices cluster. { // We are creating a new isotopic apices. // But, since another apex had been encountered already, // that means that an isotopic apices was cooking // already. We must store it. if(!cluster_apices->size()) qFatal("Cannot be that the apices has no apex."); // Store the crafted apices cluster. m_clusters.push_back(cluster_apices); // qDebug().noquote() //<< "There was a previous apex already, BUT " //"outside of apices range. " //"Pushing the cooking apices that has size:" //<< cluster_apices->size(); // Now create a brand new apices for later work. cluster_apices = std::make_shared(); // qDebug() << "Created a brand new apices."; // We only start the new apices with the current apex if // that apex is above the threshold. if(m_curApex->y > m_threshold) { // And start it with the current apex. cluster_apices->push_back(m_curApex); // qDebug() //<< "Since the current apex is above the threshold, " //"we PUSH it to the newly created apices: (" //<< m_curApex->x << "," << m_curApex->y << ")"; m_prevApex = m_curApex; // qDebug() << "Set prev apex to be cur apex."; } else { // qDebug() //<< "Since the current apex is below the threshold, " //"we DO NOT push it to the newly created " //"apices: (" //<< m_curApex->x << "," << m_curApex->y << ")"; // Since previous apex went to the closed apices, we // need to reset it. m_prevApex = trace.cend(); // qDebug() << "Since the previous apex went to the " //"closed apices, and cur apex has too " //"small an intensity, we reset prev apex " //"to trace.cend()."; } } else // The distance is compatible with both apices to belong to // the same isotopic apices. { // But we only push back the current apex to the apices // if its intensity is above the threshold. if(m_curApex->y > m_threshold) // The current apex was above the threshold { cluster_apices->push_back(m_curApex); // qDebug().noquote() //<< "There was an apex already inside of apices " //"range. " //"AND, since the current apex was above the " //"threshold, we indeed push it to apices.\n"; // qDebug().noquote() //<< "Current apex PUSHED: " << m_curApex->x << ", " //<< m_curApex->y; m_prevApex = m_curApex; // qDebug() << "We set prev apex to be cur apex."; } else { // qDebug().noquote() //<< "There was an apex already inside of apices " //"range. " //"BUT, since the current apex was below the " //"threshold, we do not push it to apices.\n"; // qDebug().noquote() //<< "Current apex NOT pushed: " << m_curApex->x //<< ", " << m_curApex->y; } } } else // No apex was previously found. We are fillin-up a new isotopic // apices. { if(m_curApex->y > m_threshold) // We can actually add that apex to a new isotopic apices. { if(cluster_apices->size()) qCritical( "At this point, the apices should be new and " "empty."); cluster_apices->push_back(m_curApex); // qDebug().noquote() //<< "No previous apex was found. Since current apex' " //"intensity is above threshold, we push it back to " //"the " //"apices.\n"; // Store current apex as previous apex for next rounds. m_prevApex = m_curApex; // qDebug().noquote() << "And thus we store the current " //"apex as previous apex.\n"; } else { // qDebug().noquote() //<< "No previous apex was found. Since current apex' " //"intensity is below threshold, we do nothing.\n"; } } } // End of // ! if(!was_ascending_to_apex) // That is, we were ascending to an apex. // Tell what it is: we were not ascending to an apex. was_ascending_to_apex = false; } // End of // ! if(m_curIter->y > m_prevIter->y) // That is, we are descending a peak. // At this point, prepare next round. // qDebug().noquote() //<< "Preparing next round, with m_prevIter = m_curIter and ++index.\n"; m_prevIter = m_curIter; ++m_curIter; } // End of // while(index < trace_size) // At this point, if a apices had been cooking, add it. if(cluster_apices->size()) m_clusters.push_back(cluster_apices); return m_clusters.size(); } Trace::const_iterator FilterLowIntensitySignalRemoval::backwardFindApex(const Trace &trace, Trace::const_iterator iter, double distance_threshold) { // We receive an iterator that points to an apex. We want iterate back in the // trace working copy and look if there are apices that are distant less than // 1.1~Th. Trace::const_iterator init_iter = iter; if(iter == trace.cbegin()) return iter; // Seed the previous iter to iter, because we'll move from there right away. Trace::const_iterator prev_iter = init_iter; Trace::const_iterator last_apex_iter = init_iter; // We will need to know if we were ascending to an apex. bool was_ascending_to_apex = false; // Now that we have seeded the system, we can move iter one data point: --iter; while(iter != trace.cbegin()) { // If we are already outside of distance_threshold, return the last apex // that was found (or initial iter if none was encountered) if(abs(init_iter->x - iter->x) >= distance_threshold) return last_apex_iter; if(iter->y > prev_iter->y) { // New data point has greater intensity. Just record that fact. was_ascending_to_apex = true; } else { // New data point has smaller intensity. We are descending a peak. if(was_ascending_to_apex) { // We had an apex at previous iter. We are inside the distance // threshold. That is good. But we still could find another apex // while moving along the trace that is in the distance threshold. // This is why we keep going, but we store the previous iter as // the last encountered apex. last_apex_iter = prev_iter; } } prev_iter = iter; // Move. --iter; } // qDebug() << "Init m/z: " << init_iter->x //<< "Returning m/z: " << last_apex_iter->x //<< "at distance:" << std::distance(last_apex_iter, init_iter); // At this point last_apex_iter is the same as the initial iter. return last_apex_iter; } Trace::const_iterator FilterLowIntensitySignalRemoval::forwardFindApex(const Trace &trace, Trace::const_iterator iter, double distance_threshold) { // We receive an iterator that points to an apex. We want iterate back in the // trace working copy and look if there are apices that are distant less than // 1.1~Th. Trace::const_iterator init_iter = iter; if(iter == trace.cend()) return iter; // Seed the previous iter to iter, because we'll move from there right away. Trace::const_iterator prev_iter = init_iter; Trace::const_iterator last_apex_iter = init_iter; // We will need to know if we were ascending to an apex. bool was_ascending_to_apex = false; // Now that we have seeded the system, we can move iter one data point: ++iter; while(iter != trace.cend()) { // If we are already outside of distance_threshold, return the last apex // that was found (or initial iter if none was encountered) // FIXME: maybe we should compare prev_iter->x with iter->x so that we // continue moving if all the succcessive apices found are each one in the // distance_threshold from the previous one ? if(abs(init_iter->x - iter->x) >= distance_threshold) return last_apex_iter; if(iter->y > prev_iter->y) { // New data point has greater intensity. Just record that fact. was_ascending_to_apex = true; } else { // New data point has smaller intensity. We are descending a peak. if(was_ascending_to_apex) { // We had an apex at previous iter. We are inside the distance // threshold. That is good. But we still could find another apex // while moving along the trace that is in the distance threshold. // This is why we keep going, but we store the previous iter as // the last encountered apex. last_apex_iter = prev_iter; } } prev_iter = iter; // Move. ++iter; } // At this point last_apex_iter is the same as the initial iter. return last_apex_iter; } Trace FilterLowIntensitySignalRemoval::reconstructTrace(const Trace &trace) { // We start from the vector of apices and try to remake a high resolution // trace out of these apices. MapTrace map_trace; // The general idea is that apices were detected, and only apices having // their intensity above the threshold were stored. That means that we need to // add points to the trace to reconstruct a meaningful trace. Indeed, imagine // a heavy peptide isotopic cluster: the first peak's apex is below threshold // and was not stored. The second peak is also below. But the third isotopic // cluster peak is above and was stored. // // How do we reconstruct the trace to have all these points that were // preceding the first isotopic cluster apex that was detected. // // The same applies to the last peaks of the cluster that are below the // threshold whil the preceeding ones were above! // The general idea is to iterate in the vector of apices and for each apex // that is encountered, ask if there were apices // m_clusters is a vector that contains vectors of Trace::const_iter. // Each vector in m_clusters should represent all the apices of a cluster. // qDebug() << "Reconstructing trace with " << m_clusters.size() << // "clusters."; Trace::const_iterator left_begin_iter = trace.cend(); Trace::const_iterator right_end_iter = trace.cend(); for(auto &&cluster_apices : m_clusters) { // cluster_apices is a vector of Trace::const_iterator. If we want to // reconstruct the Trace, we need to iterate through all the DataPoint // objects in between cluster_apices.begin() and cluster_apices.end(). Trace::const_iterator begin_iter = *(cluster_apices->begin()); Trace::const_iterator end_iter = *(std::prev(cluster_apices->end())); // qDebug() << "Iterating in a new cluster apices with boundaries:" //<< begin_iter->x << "-" << end_iter->x; left_begin_iter = backwardFindApex(trace, begin_iter, INTRA_CLUSTER_INTER_PEAK_DISTANCE); // qDebug() << "After backwardFindApex, left_begin_iter points to:" //<< left_begin_iter->toString() << "with distance:" //<< std::distance(left_begin_iter, begin_iter); right_end_iter = forwardFindApex( trace, end_iter, 1.5 * INTRA_CLUSTER_INTER_PEAK_DISTANCE); for(Trace::const_iterator iter = left_begin_iter; iter != right_end_iter; ++iter) { map_trace[iter->x] = iter->y; } // Now reset the left and right iters to intensity 0 to avoid having // disgraceful oblique lines connnecting trace segments. map_trace[left_begin_iter->x] = 0; map_trace[std::prev(right_end_iter)->x] = 0; } return map_trace.toTrace(); } Trace & FilterLowIntensitySignalRemoval::filter(Trace &trace) const { // qDebug(); // Horrible hack to have a non const filtering process. return const_cast(this)->nonConstFilter( trace); } Trace & FilterLowIntensitySignalRemoval::nonConstFilter(Trace &trace) { // qDebug(); if(trace.size() <= 2) { // qDebug() << "The original trace has less than 3 points. Returning it " //"without modification."; return trace; } // else // qDebug() << "The original trace had" << trace.size() << "data points"; std::size_t cluster_count = detectClusterApices(trace); // qDebug() << "Number of detected cluster apices: " << cluster_count; if(!cluster_count) return trace; // At this point we want to work on the apices and reconstruct a full // trace. Trace reconstructed_trace = reconstructTrace(trace); trace = std::move(reconstructed_trace); return trace; } double FilterLowIntensitySignalRemoval::getThreshold() const { return m_threshold; } //! Return a string with the textual representation of the configuration data. QString FilterLowIntensitySignalRemoval::toString() const { return QString("%1|%2").arg(name()).arg(QString::number(m_threshold, 'f', 2)); } QString FilterLowIntensitySignalRemoval::name() const { return "FilterLowIntensitySignalRemoval"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h000644 001750 001750 00000010553 14346367014 033445 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once #include #include "../../trace/trace.h" #include "../../exportinmportconfig.h" #include "filternameinterface.h" namespace pappso { class FilterLowIntensitySignalRemoval; typedef std::shared_ptr FilterLowIntensitySignalRemovalSPtr; typedef std::shared_ptr FilterLowIntensitySignalRemovalCstSPtr; /** * @brief Redefines the floor intensity of the Trace * * The amplitude of the trace is computed (maxValue - minValue) * Its fraction is calculated = amplitude * (percentage / 100) * The threshold value is computed as (minValue + fraction) * * When the values to be filtered are below that threshold they acquire that * threshold value. * * When the values to be filtered are above that threshold they remain * unchanged. * * This effectively re-floors the values to threshold. */ class PMSPP_LIB_DECL FilterLowIntensitySignalRemoval : public FilterNameInterface { public: FilterLowIntensitySignalRemoval(double mean, double std_dev, double threshold); FilterLowIntensitySignalRemoval(const QString ¶meters); FilterLowIntensitySignalRemoval(const FilterLowIntensitySignalRemoval &other); virtual ~FilterLowIntensitySignalRemoval(); FilterLowIntensitySignalRemoval & operator=(const FilterLowIntensitySignalRemoval &other); Trace &filter(Trace &data_points) const override; double getThreshold() const; QString name() const override; QString toString() const override; protected: void buildFilterFromString(const QString &strBuildParams) override; Trace &nonConstFilter(Trace &data_points); std::size_t detectClusterApices(const Trace &trace); Trace::const_iterator backwardFindApex(const Trace &trace, Trace::const_iterator iter, double distance_threshold); Trace::const_iterator forwardFindApex(const Trace &trace, Trace::const_iterator iter, double distance_threshold); Trace reconstructTrace(const Trace &trace); private: static constexpr double nan = std::numeric_limits::quiet_NaN(); double m_threshold; double m_noiseMean; double m_noiseStdDev; constexpr static double INTRA_CLUSTER_INTER_PEAK_DISTANCE = 1.1; const std::size_t m_minIntPointCount = 5; const std::size_t m_minIntStdDevFactor = 2; double m_min; double m_max; double m_minMean; double m_minStdDev; double m_noiseLevel; bool m_seen_upward_phase = false; using TraceCIter = Trace::const_iterator; // Beware HYPER-ROUGH inialization of the iterator ! TraceCIter m_prevApex = static_cast(0); TraceCIter m_curApex = static_cast(0); TraceCIter m_curIter = static_cast(0); TraceCIter m_prevIter = static_cast(0); using ClusterApices = std::vector; using ApicesSPtr = std::shared_ptr; // All the cluster apices std::vector m_clusters; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtermorpho.cpp000644 001750 001750 00000027602 14526455546 027763 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtermorpho.cpp * \date 02/05/2019 * \author Olivier Langella * \brief collection of morphological filters */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filtermorpho.h" #include "../../trace/trace.h" #include #include "../../exception/exceptionoutofrange.h" #include "../../exception/exceptionnotrecognized.h" using namespace pappso; FilterMorphoWindowBase::FilterMorphoWindowBase(std::size_t half_window_size) : m_halfWindowSize(half_window_size) { } FilterMorphoWindowBase::FilterMorphoWindowBase( const FilterMorphoWindowBase &other) : m_halfWindowSize(other.m_halfWindowSize) { } std::size_t FilterMorphoWindowBase::getHalfWindowSize() const { return m_halfWindowSize; } FilterMorphoWindowBase & FilterMorphoWindowBase::operator=(const FilterMorphoWindowBase &other) { m_halfWindowSize = other.m_halfWindowSize; return *this; } Trace & FilterMorphoWindowBase::filter(Trace &data_points) const { qDebug() << " " << m_halfWindowSize << " data_points.size()" << data_points.size(); if(m_halfWindowSize == 0) return data_points; if(data_points.size() <= m_halfWindowSize) return data_points; Trace old_trace(data_points); auto it = old_trace.begin(); auto itend = old_trace.end() - m_halfWindowSize - 1; auto it_target = data_points.begin(); std::size_t loop_begin = 0; while((it != itend) && (loop_begin < m_halfWindowSize)) { // maxYDataPoint(it_begin, it + m_halfWindowSize + 1); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " // << it->x << " " << m_halfWindowSize; // it_target->x = it->x; it_target->y = getWindowValue(old_trace.begin(), it + m_halfWindowSize + 1); it++; it_target++; loop_begin++; } // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; while(it != itend) { // it_target->x = it->x; // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " // << it->x; it_target->y = getWindowValue(it - m_halfWindowSize, it + m_halfWindowSize + 1); it++; it_target++; } // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; while(it != old_trace.end()) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " // << it->x; // it_target->x = it->x; it_target->y = getWindowValue(it - m_halfWindowSize, old_trace.end()); it++; it_target++; } // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; // problem with move or swap : this lead to segmentation faults in some cases // data_points = std::move(new_trace); qDebug(); return data_points; } FilterMorphoSum::FilterMorphoSum(std::size_t half_window_size) : FilterMorphoWindowBase(half_window_size) { } FilterMorphoSum::FilterMorphoSum(const FilterMorphoSum &other) : FilterMorphoWindowBase(other.m_halfWindowSize) { } FilterMorphoSum & FilterMorphoSum::operator=(const FilterMorphoSum &other) { m_halfWindowSize = other.m_halfWindowSize; return *this; } double FilterMorphoSum::getWindowValue( std::vector::const_iterator begin, std::vector::const_iterator end) const { qDebug(); return sumYTrace(begin, end, 0); } FilterMorphoMax::FilterMorphoMax(std::size_t half_window_size) : FilterMorphoWindowBase(half_window_size) { } FilterMorphoMax::FilterMorphoMax(const FilterMorphoMax &other) : FilterMorphoWindowBase(other.m_halfWindowSize) { } FilterMorphoMax & FilterMorphoMax::operator=(const FilterMorphoMax &other) { m_halfWindowSize = other.m_halfWindowSize; return *this; } double FilterMorphoMax::getWindowValue( std::vector::const_iterator begin, std::vector::const_iterator end) const { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; return maxYDataPoint(begin, end)->y; } std::size_t FilterMorphoMax::getMaxHalfEdgeWindows() const { return m_halfWindowSize; } FilterMorphoMin::FilterMorphoMin(std::size_t half_window_size) : FilterMorphoWindowBase(half_window_size) { } FilterMorphoMin::FilterMorphoMin(const FilterMorphoMin &other) : FilterMorphoWindowBase(other.m_halfWindowSize) { } FilterMorphoMin & FilterMorphoMin::operator=(const FilterMorphoMin &other) { m_halfWindowSize = other.m_halfWindowSize; return *this; } double FilterMorphoMin::getWindowValue( std::vector::const_iterator begin, std::vector::const_iterator end) const { return minYDataPoint(begin, end)->y; } std::size_t FilterMorphoMin::getMinHalfEdgeWindows() const { return m_halfWindowSize; } FilterMorphoMinMax::FilterMorphoMinMax(std::size_t half_window_size) : m_filterMax(half_window_size), m_filterMin(half_window_size) { } FilterMorphoMinMax::FilterMorphoMinMax(const FilterMorphoMinMax &other) : m_filterMax(other.m_filterMax), m_filterMin(other.m_filterMin) { } FilterMorphoMinMax & FilterMorphoMinMax::operator=(const FilterMorphoMinMax &other) { m_filterMax = other.m_filterMax; m_filterMin = other.m_filterMin; return *this; } Trace & FilterMorphoMinMax::filter(Trace &data_points) const { qDebug(); m_filterMax.filter(data_points); m_filterMin.filter(data_points); qDebug(); return data_points; } std::size_t FilterMorphoMinMax::getMinMaxHalfEdgeWindows() const { return ((FilterMorphoMax)m_filterMax).getMaxHalfEdgeWindows(); } FilterMorphoMaxMin::FilterMorphoMaxMin(std::size_t half_window_size) : m_filterMin(half_window_size), m_filterMax(half_window_size) { } FilterMorphoMaxMin::FilterMorphoMaxMin(const FilterMorphoMaxMin &other) : m_filterMin(other.m_filterMin), m_filterMax(other.m_filterMax) { } FilterMorphoMaxMin & FilterMorphoMaxMin::operator=(const FilterMorphoMaxMin &other) { m_filterMin = other.m_filterMin; m_filterMax = other.m_filterMax; return *this; } Trace & FilterMorphoMaxMin::filter(Trace &data_points) const { qDebug(); m_filterMin.filter(data_points); m_filterMax.filter(data_points); qDebug(); return data_points; } std::size_t FilterMorphoMaxMin::getMaxMinHalfEdgeWindows() const { return ((FilterMorphoMax)m_filterMax).getMaxHalfEdgeWindows(); } FilterMorphoAntiSpike::FilterMorphoAntiSpike(std::size_t half_window_size) : m_halfWindowSize(half_window_size) { } FilterMorphoAntiSpike::FilterMorphoAntiSpike(const FilterMorphoAntiSpike &other) : m_halfWindowSize(other.m_halfWindowSize) { } pappso::FilterMorphoAntiSpike::FilterMorphoAntiSpike( const QString &strBuildParams) { buildFilterFromString(strBuildParams); } void pappso::FilterMorphoAntiSpike::buildFilterFromString( const QString &strBuildParams) { //"antiSpike|2" if(strBuildParams.startsWith("antiSpike|")) { QStringList params = strBuildParams.split("|").back().split(";"); m_halfWindowSize = params.at(0).toUInt(); } else { throw pappso::ExceptionNotRecognized( QString("building FilterMorphoAntiSpike from string %1 is not possible") .arg(strBuildParams)); } } QString pappso::FilterMorphoAntiSpike::toString() const { QString strCode = QString("antiSpike|%1").arg(m_halfWindowSize); return strCode; } QString pappso::FilterMorphoAntiSpike::name() const { return "antiSpike"; } FilterMorphoAntiSpike & FilterMorphoAntiSpike::operator=(const FilterMorphoAntiSpike &other) { m_halfWindowSize = other.m_halfWindowSize; return *this; } std::size_t FilterMorphoAntiSpike::getHalfWindowSize() const { return m_halfWindowSize; } Trace & FilterMorphoAntiSpike::filter(Trace &data_points) const { // qDebug(); if(m_halfWindowSize == 0) return data_points; if(data_points.size() < m_halfWindowSize) return data_points; Trace old_trace(data_points); auto it = old_trace.begin(); auto it_target = data_points.begin(); auto itw = old_trace.begin(); auto itend = old_trace.end() - m_halfWindowSize - 1; // new_trace.reserve(data_points.size()); // qDebug(); while((it != old_trace.end()) && (std::distance(old_trace.begin(), it) < (int)m_halfWindowSize)) { // no anti spike at the begining of the signal it++; it_target++; } // qDebug(); while((it != itend) && (it != old_trace.end())) { // qDebug(); auto itwend = it + m_halfWindowSize + 1; itw = findDifferentYvalue(it - m_halfWindowSize, it + 1, 0); if(itw == it) { // qDebug(); itw = findDifferentYvalue(it + 1, itwend, 0); if(itw == itwend) { it_target->y = 0; } // qDebug(); } // qDebug(); it++; it_target++; } return data_points; } FilterMorphoMedian::FilterMorphoMedian(std::size_t half_window_size) : FilterMorphoWindowBase(half_window_size) { } FilterMorphoMedian::FilterMorphoMedian(const FilterMorphoMedian &other) : FilterMorphoWindowBase(other.m_halfWindowSize) { } FilterMorphoMedian & FilterMorphoMedian::operator=(const FilterMorphoMedian &other) { m_halfWindowSize = other.m_halfWindowSize; return *this; } double FilterMorphoMedian::getWindowValue( std::vector::const_iterator begin, std::vector::const_iterator end) const { return medianYTrace(begin, end); } FilterMorphoMean::FilterMorphoMean(std::size_t half_window_size) : FilterMorphoWindowBase(half_window_size) { } FilterMorphoMean::FilterMorphoMean(const FilterMorphoMean &other) : FilterMorphoWindowBase(other.m_halfWindowSize) { } FilterMorphoMean & FilterMorphoMean::operator=(const FilterMorphoMean &other) { m_halfWindowSize = other.m_halfWindowSize; return *this; } std::size_t FilterMorphoMean::getMeanHalfEdgeWindows() const { return m_halfWindowSize; } double FilterMorphoMean::getWindowValue( std::vector::const_iterator begin, std::vector::const_iterator end) const { return meanYTrace(begin, end); } FilterMorphoBackground::FilterMorphoBackground( std::size_t median_half_window_size, std::size_t minmax_half_window_size) : m_filterMorphoMedian(median_half_window_size), m_filterMorphoMinMax(minmax_half_window_size) { } FilterMorphoBackground::FilterMorphoBackground( const FilterMorphoBackground &other) : m_filterMorphoMedian(other.m_filterMorphoMedian), m_filterMorphoMinMax(other.m_filterMorphoMinMax) { } FilterMorphoBackground & FilterMorphoBackground::operator=(const FilterMorphoBackground &other) { m_filterMorphoMedian = other.m_filterMorphoMedian; m_filterMorphoMinMax = other.m_filterMorphoMinMax; return *this; } Trace & FilterMorphoBackground::filter(Trace &data_points) const { m_filterMorphoMedian.filter(data_points); m_filterMorphoMinMax.filter(data_points); // finally filter negative values for(DataPoint &point : data_points) { if(point.y < 0) { point.y = 0; } } return data_points; } const FilterMorphoMedian & FilterMorphoBackground::getFilterMorphoMedian() const { return m_filterMorphoMedian; } const FilterMorphoMinMax & FilterMorphoBackground::getFilterMorphoMinMax() const { return m_filterMorphoMinMax; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtermorpho.h000644 001750 001750 00000016174 14346367014 027422 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtermorpho.h * \date 02/05/2019 * \author Olivier Langella * \brief collection of morphological filters */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filtersuite.h" #include namespace pappso { struct DataPoint; /** @brief base class that apply a signal treatment based on a window */ class FilterMorphoWindowBase : public FilterInterface { protected: std::size_t m_halfWindowSize = 0; virtual double getWindowValue(std::vector::const_iterator begin, std::vector::const_iterator end) const = 0; public: FilterMorphoWindowBase(std::size_t half_window_size); FilterMorphoWindowBase(const FilterMorphoWindowBase &other); virtual ~FilterMorphoWindowBase(){}; FilterMorphoWindowBase &operator=(const FilterMorphoWindowBase &other); virtual Trace &filter(Trace &data_points) const override; virtual std::size_t getHalfWindowSize() const; }; /** @brief test purpose */ class PMSPP_LIB_DECL FilterMorphoSum : public FilterMorphoWindowBase { public: FilterMorphoSum(std::size_t half_window_size); FilterMorphoSum(const FilterMorphoSum &other); virtual ~FilterMorphoSum(){}; FilterMorphoSum &operator=(const FilterMorphoSum &other); double getWindowValue(std::vector::const_iterator begin, std::vector::const_iterator end) const override; }; /** @brief transform the trace into its maximum over a window */ class PMSPP_LIB_DECL FilterMorphoMax : public FilterMorphoWindowBase { public: FilterMorphoMax(std::size_t half_window_size); FilterMorphoMax(const FilterMorphoMax &other); virtual ~FilterMorphoMax(){}; FilterMorphoMax &operator=(const FilterMorphoMax &other); double getWindowValue(std::vector::const_iterator begin, std::vector::const_iterator end) const override; std::size_t getMaxHalfEdgeWindows() const; }; /** @brief transform the trace into its minimum over a window */ class PMSPP_LIB_DECL FilterMorphoMin : public FilterMorphoWindowBase { public: FilterMorphoMin(std::size_t half_window_size); FilterMorphoMin(const FilterMorphoMin &other); virtual ~FilterMorphoMin(){}; FilterMorphoMin &operator=(const FilterMorphoMin &other); double getWindowValue(std::vector::const_iterator begin, std::vector::const_iterator end) const override; std::size_t getMinHalfEdgeWindows() const; }; /** @brief transform the trace with the minimum of the maximum * equivalent of the dilate filter for pictures */ class PMSPP_LIB_DECL FilterMorphoMinMax : public FilterInterface { private: FilterMorphoMax m_filterMax; FilterMorphoMin m_filterMin; public: FilterMorphoMinMax(std::size_t half_window_size); FilterMorphoMinMax(const FilterMorphoMinMax &other); virtual ~FilterMorphoMinMax(){}; FilterMorphoMinMax &operator=(const FilterMorphoMinMax &other); Trace &filter(Trace &data_points) const override; std::size_t getMinMaxHalfEdgeWindows() const; }; /** @brief transform the trace with the maximum of the minimum * equivalent of the erode filter for pictures */ class PMSPP_LIB_DECL FilterMorphoMaxMin : public FilterInterface { private: FilterMorphoMin m_filterMin; FilterMorphoMax m_filterMax; public: FilterMorphoMaxMin(std::size_t half_window_size); FilterMorphoMaxMin(const FilterMorphoMaxMin &other); virtual ~FilterMorphoMaxMin(){}; FilterMorphoMaxMin &operator=(const FilterMorphoMaxMin &other); Trace &filter(Trace &data_points) const override; std::size_t getMaxMinHalfEdgeWindows() const; }; /** @brief anti spike filter * set to zero alone values inside the window */ class PMSPP_LIB_DECL FilterMorphoAntiSpike : public FilterNameInterface { private: std::size_t m_halfWindowSize = 0; public: FilterMorphoAntiSpike(std::size_t half_window_size); /** * @param strBuildParams string to build the filter * "antiSpike|2" */ FilterMorphoAntiSpike(const QString &strBuildParams); FilterMorphoAntiSpike(const FilterMorphoAntiSpike &other); virtual ~FilterMorphoAntiSpike(){}; FilterMorphoAntiSpike &operator=(const FilterMorphoAntiSpike &other); Trace &filter(Trace &data_points) const override; std::size_t getHalfWindowSize() const; void buildFilterFromString(const QString &strBuildParams) override; QString toString() const override; QString name() const override; }; /** @brief median filter * apply median of y values inside the window */ class PMSPP_LIB_DECL FilterMorphoMedian : public FilterMorphoWindowBase { public: FilterMorphoMedian(std::size_t half_window_size); FilterMorphoMedian(const FilterMorphoMedian &other); virtual ~FilterMorphoMedian(){}; FilterMorphoMedian &operator=(const FilterMorphoMedian &other); double getWindowValue(std::vector::const_iterator begin, std::vector::const_iterator end) const override; }; /** @brief mean filter * apply mean of y values inside the window : this results in a kind of * smoothing */ class PMSPP_LIB_DECL FilterMorphoMean : public FilterMorphoWindowBase { public: FilterMorphoMean(std::size_t half_window_size); FilterMorphoMean(const FilterMorphoMean &other); virtual ~FilterMorphoMean(){}; FilterMorphoMean &operator=(const FilterMorphoMean &other); double getWindowValue(std::vector::const_iterator begin, std::vector::const_iterator end) const override; std::size_t getMeanHalfEdgeWindows() const; }; /** @brief compute background of a trace * compute background noise on a trace */ class PMSPP_LIB_DECL FilterMorphoBackground : public FilterInterface { private: FilterMorphoMedian m_filterMorphoMedian; FilterMorphoMinMax m_filterMorphoMinMax; public: FilterMorphoBackground(std::size_t median_half_window_size, std::size_t minmax_half_window_size); FilterMorphoBackground(const FilterMorphoBackground &other); virtual ~FilterMorphoBackground(){}; FilterMorphoBackground &operator=(const FilterMorphoBackground &other); const FilterMorphoMedian &getFilterMorphoMedian() const; const FilterMorphoMinMax &getFilterMorphoMinMax() const; Trace &filter(Trace &data_points) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filternameinterface.cpp000644 001750 001750 00000002277 14526455546 031261 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filers/filternameinterface.cpp * \date 31/10/2020 * \author Olivier Langella * \brief interface to allow filter object construction from strings */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filternameinterface.h" using namespace pappso; libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filternameinterface.h000644 001750 001750 00000003675 14514537337 030725 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filers/filternameinterface.h * \date 31/10/2020 * \author Olivier Langella * \brief interface to allow filter object construction from strings */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "../../exportinmportconfig.h" #include "filterinterface.h" namespace pappso { /** @brief Interface that allows to build filter objects from strings */ class PMSPP_LIB_DECL FilterNameInterface : public FilterInterface { public: virtual QString name() const = 0; virtual QString toString() const = 0; virtual ~FilterNameInterface(){}; protected: /** @brief build this filter using a string * @param strBuildParams a string coding the filter and its parameters * "filterName|param1;param2;param3" * */ virtual void buildFilterFromString(const QString &strBuildParams) = 0; }; typedef std::shared_ptr FilterNameInterfaceSPtr; typedef std::shared_ptr FilterNameInterfaceCstSPtr; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filternormalizeintensities.cpp000644 001750 001750 00000007237 14526455546 032740 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #include #include #include #include #include #include "filternormalizeintensities.h" #include "../../exception/exceptionnotrecognized.h" #include "../../exception/exceptionnotpossible.h" namespace pappso { FilterNormalizeIntensities::FilterNormalizeIntensities(double new_max_y_value) : m_newYMax(new_max_y_value) { } FilterNormalizeIntensities::FilterNormalizeIntensities( const QString ¶meters) { buildFilterFromString(parameters); } FilterNormalizeIntensities::FilterNormalizeIntensities( const FilterNormalizeIntensities &other) { m_newYMax = other.m_newYMax; } FilterNormalizeIntensities::~FilterNormalizeIntensities() { } FilterNormalizeIntensities & FilterNormalizeIntensities::operator=(const FilterNormalizeIntensities &other) { if(&other == this) return *this; m_newYMax = other.m_newYMax; return *this; } void FilterNormalizeIntensities::buildFilterFromString(const QString ¶meters) { // Typical string: "FloorAmplitudePercentage|15" if(parameters.startsWith(QString("%1|").arg(name()))) { QStringList params = parameters.split("|").back().split(";"); m_newYMax = params.at(0).toDouble(); } else { throw pappso::ExceptionNotRecognized( QString("Building of FilterNormalizeIntensities from string %1 failed") .arg(parameters)); } } Trace & FilterNormalizeIntensities::filter(Trace &trace) const { // Start by looking at the most intense data point (greatest y value of the // whole trace) auto max_dp_iter = maxYDataPoint(trace.cbegin(), trace.cend()); if(max_dp_iter == trace.cend()) throw pappso::ExceptionNotPossible( QString("Failed to find the max intensity data point in the trace.")); if(!max_dp_iter->y) throw pappso::ExceptionNotPossible( QString("The max intensity data point in the trace has intensity 0.")); double ratio = m_newYMax / max_dp_iter->y; for(DataPoint &dp : trace) { dp.y *= ratio; } // #if 0 max_dp_iter = maxYDataPoint(trace.cbegin(), trace.cend()); qDebug() << "Now max int:" << max_dp_iter->y; // #endif return trace; } //! Return a string with the textual representation of the configuration data. QString FilterNormalizeIntensities::toString() const { return QString("%1").arg(name()).arg(QString::number(m_newYMax, 'f', 2)); } QString FilterNormalizeIntensities::name() const { return "FilterNormalizeIntensities"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filternormalizeintensities.h000644 001750 001750 00000005313 14514537337 032372 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2021 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once #include #include "../../trace/trace.h" #include "../../exportinmportconfig.h" #include "filternameinterface.h" namespace pappso { class FilterNormalizeIntensities; typedef std::shared_ptr FilterNormalizeIntensitiesSPtr; typedef std::shared_ptr FilterNormalizeIntensitiesCstSPtr; /** * @brief Sets the maximum intensity of the trace to the provided value * * All the other values are modified by applying the same modification ratio. * * The amplitude of the trace is computed (maxValue - minValue) * The new maxValue is set to the required intensity. * All the other data points have their intensity modified: * * new_intensity = previous_intensity / old_max_value * new_max_value */ class PMSPP_LIB_DECL FilterNormalizeIntensities : public FilterNameInterface { public: FilterNormalizeIntensities(double new_max_y_value); FilterNormalizeIntensities(const QString ¶meters); FilterNormalizeIntensities(const FilterNormalizeIntensities &other); virtual ~FilterNormalizeIntensities(); FilterNormalizeIntensities & operator=(const FilterNormalizeIntensities &other); Trace &filter(Trace &data_points) const override; QString name() const override; QString toString() const override; protected: void buildFilterFromString(const QString &strBuildParams) override; private: static constexpr double nan = std::numeric_limits::quiet_NaN(); double m_newYMax; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterpass.cpp000644 001750 001750 00000031730 14526455546 027422 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filterpass.cpp * \date 26/04/2019 * \author Olivier Langella * \brief collection of filters concerned by Y selection */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filterpass.h" #include "../../trace/trace.h" #include #include #include "../../massspectrum/massspectrum.h" #include "../../exception/exceptionoutofrange.h" #include "../../exception/exceptionnotrecognized.h" #include using namespace pappso; FilterLowPass::FilterLowPass(double pass_y) : m_passY(pass_y) { } FilterLowPass::FilterLowPass(const FilterLowPass &other) : m_passY(other.m_passY) { } FilterLowPass & FilterLowPass::operator=(const FilterLowPass &other) { m_passY = other.m_passY; return *this; } Trace & FilterLowPass::filter(Trace &data_points) const { Trace new_data_points; for(auto &&data_point : data_points) { if(data_point.y < m_passY) { new_data_points.push_back(data_point); } } data_points = std::move(new_data_points); return data_points; } FilterHighPass::FilterHighPass(double pass_y) : m_passY(pass_y) { } FilterHighPass::FilterHighPass(const FilterHighPass &other) : m_passY(other.m_passY) { } FilterHighPass & FilterHighPass::operator=(const FilterHighPass &other) { m_passY = other.m_passY; return *this; } Trace & FilterHighPass::filter(Trace &data_points) const { Trace new_data_points; for(auto &&data_point : data_points) { if(data_point.y > m_passY) { new_data_points.push_back(data_point); } } data_points = std::move(new_data_points); return data_points; } FilterHighPassPercentage::FilterHighPassPercentage(double ratio_pass_y) : m_ratioPassY(ratio_pass_y) { } FilterHighPassPercentage::FilterHighPassPercentage( const FilterHighPassPercentage &other) : m_ratioPassY(other.m_ratioPassY) { } FilterHighPassPercentage & FilterHighPassPercentage::operator=(const FilterHighPassPercentage &other) { m_ratioPassY = other.m_ratioPassY; return *this; } Trace & FilterHighPassPercentage::filter(Trace &data_points) const { auto it_max = maxYDataPoint(data_points.begin(), data_points.end()); if(it_max == data_points.end()) return data_points; double pass = (it_max->y * m_ratioPassY); Trace new_data_points; for(auto &&data_point : data_points) { if(data_point.y > pass) { new_data_points.push_back(data_point); } } data_points = std::move(new_data_points); return data_points; } FilterGreatestY::FilterGreatestY(std::size_t number_of_points) : m_numberOfPoints(number_of_points) { } FilterGreatestY::FilterGreatestY(const FilterGreatestY &other) : m_numberOfPoints(other.m_numberOfPoints) { } FilterGreatestY & FilterGreatestY::operator=(const FilterGreatestY &other) { m_numberOfPoints = other.m_numberOfPoints; return *this; } Trace & FilterGreatestY::filter(Trace &data_points) const { // Reverse-sort the data points (in y decreasing order) so that we get the // greatest to the front of the vector and we'll then copy the first n data // points to the returned vector. See that return (b < a) ? if(m_numberOfPoints >= data_points.size()) return data_points; std::sort(data_points.begin(), data_points.end(), [](const DataPoint &a, const DataPoint &b) { return (b.y < a.y); }); data_points.erase(data_points.begin() + m_numberOfPoints, data_points.end()); // And now sort the Trace conventionally, that is in x increasing order. std::sort(data_points.begin(), data_points.end(), [](const DataPoint &a, const DataPoint &b) { return (a.x < b.x); }); return data_points; } std::size_t FilterGreatestY::getNumberOfPoints() const { return m_numberOfPoints; } FilterGreatestYperWindow::FilterGreatestYperWindow( double window_range, std::size_t number_of_points_per_window) : m_xWindowRange(window_range), m_numberOfPoints(number_of_points_per_window) { qDebug(); if(m_xWindowRange < 0.5) { throw pappso::ExceptionOutOfRange( QObject::tr("window_range must be greater than 0.5")); } qDebug(); } FilterGreatestYperWindow::FilterGreatestYperWindow( const FilterGreatestYperWindow &other) : m_xWindowRange(other.m_xWindowRange), m_numberOfPoints(other.m_numberOfPoints) { qDebug(); } FilterGreatestYperWindow & FilterGreatestYperWindow::operator=(const FilterGreatestYperWindow &other) { qDebug(); m_numberOfPoints = other.m_numberOfPoints; m_xWindowRange = other.m_xWindowRange; return *this; } Trace & FilterGreatestYperWindow::filter(Trace &data_points) const { std::vector new_trace(data_points); data_points.clear(); int window_number = 0; int old_window_number = -1; std::size_t number_of_peaks_in_window = 0; auto itbegin = data_points.begin(); std::vector::iterator it_min; // std::sort(data_points.begin(), // data_points.end(), // [](const DataPoint &a, const DataPoint &b) { return (a.y > b.y); // }); qDebug() << " m_xWindowRange=" << m_xWindowRange << " m_numberOfPoints=" << m_numberOfPoints; for(const pappso::DataPoint &data_point : new_trace) { qDebug() << " data_point.x=" << data_point.x << " data_point.y=" << data_point.y; window_number = trunc(data_point.x / m_xWindowRange); qDebug() << window_number; if(window_number != old_window_number) { old_window_number = window_number; number_of_peaks_in_window = 0; itbegin = data_points.end(); } if(number_of_peaks_in_window < m_numberOfPoints) { qDebug(); data_points.push_back(data_point); number_of_peaks_in_window++; if(number_of_peaks_in_window == 1) { itbegin = data_points.begin() + (data_points.size() - 1); } } else { qDebug(); it_min = minYDataPoint(itbegin, data_points.end()); if(it_min != data_points.end()) { qDebug(); if(it_min->y < data_point.y) { qDebug(); *it_min = data_point; // it_min->x = data_point.x; // it_min->y = data_point.y; } } } } qDebug(); // new_trace.sortX(); // qDebug() << new_trace.size(); // data_points.clear(); // data_points = new_trace; // data_points = std::move(new_trace); // qDebug() << data_points.size(); data_points.sortX(); qDebug(); return data_points; } std::size_t FilterGreatestYperWindow::getNumberOfPoints() const { return m_numberOfPoints; } FilterFloorY::FilterFloorY() { } FilterFloorY::FilterFloorY([[maybe_unused]] const FilterFloorY &other) { } FilterFloorY & FilterFloorY::operator=([[maybe_unused]] const FilterFloorY &other) { return *this; } Trace & FilterFloorY::filter(Trace &data_points) const { for(auto &&dataPoint : data_points) { dataPoint.y = std::floor(dataPoint.y); } return data_points; } FilterRoundY::FilterRoundY() { } FilterRoundY::FilterRoundY([[maybe_unused]] const FilterRoundY &other) { } FilterRoundY & FilterRoundY::operator=([[maybe_unused]] const FilterRoundY &other) { return *this; } Trace & FilterRoundY::filter(Trace &data_points) const { for(auto &&dataPoint : data_points) { dataPoint.y = std::round(dataPoint.y); } return data_points; } FilterRescaleY::FilterRescaleY(double dynamic) : m_dynamic(dynamic) { } FilterRescaleY::FilterRescaleY(const FilterRescaleY &other) : m_dynamic(other.m_dynamic) { } Trace & FilterRescaleY::filter(Trace &data_points) const { if(m_dynamic == 0) return data_points; auto it_max = maxYDataPoint(data_points.begin(), data_points.end()); if(it_max == data_points.end()) return data_points; double maximum = it_max->y; for(auto &&dataPoint : data_points) { dataPoint.y = (dataPoint.y / maximum) * m_dynamic; } return data_points; } FilterRescaleY & FilterRescaleY::operator=(const FilterRescaleY &other) { m_dynamic = other.m_dynamic; return *this; } double FilterRescaleY::getDynamicRange() const { return m_dynamic; } MassSpectrumFilterGreatestItensities::MassSpectrumFilterGreatestItensities( std::size_t number_of_points) : m_filterGreatestY(number_of_points) { } MassSpectrumFilterGreatestItensities::MassSpectrumFilterGreatestItensities( const MassSpectrumFilterGreatestItensities &other) : m_filterGreatestY(other.m_filterGreatestY) { } MassSpectrumFilterGreatestItensities & MassSpectrumFilterGreatestItensities::operator=( const MassSpectrumFilterGreatestItensities &other) { m_filterGreatestY = other.m_filterGreatestY; return *this; } MassSpectrum & MassSpectrumFilterGreatestItensities::filter(MassSpectrum &spectrum) const { m_filterGreatestY.filter(spectrum); return spectrum; } FilterScaleFactorY::FilterScaleFactorY(double dynamic) : m_factor(dynamic) { } FilterScaleFactorY::FilterScaleFactorY(const FilterScaleFactorY &other) : m_factor(other.m_factor) { } FilterScaleFactorY & FilterScaleFactorY::operator=(const FilterScaleFactorY &other) { m_factor = other.m_factor; return *this; } Trace & FilterScaleFactorY::filter(Trace &data_points) const { if(m_factor == 1) return data_points; for(auto &&dataPoint : data_points) { dataPoint.y = dataPoint.y * m_factor; } return data_points; } double FilterScaleFactorY::getScaleFactorY() const { return m_factor; } FilterRemoveY::FilterRemoveY(double valueToRemove) : m_valueToRemove(valueToRemove) { } FilterRemoveY::FilterRemoveY(const FilterRemoveY &other) : m_valueToRemove(other.m_valueToRemove) { } FilterRemoveY & FilterRemoveY::operator=(const FilterRemoveY &other) { m_valueToRemove = other.m_valueToRemove; return *this; } double FilterRemoveY::getValue() const { return m_valueToRemove; } Trace & FilterRemoveY::filter(Trace &data_points) const { for(auto &&dataPoint : data_points) { if(dataPoint.y < m_valueToRemove) dataPoint.y = 0; else dataPoint.y = dataPoint.y - m_valueToRemove; } return data_points; } FilterQuantileBasedRemoveY::FilterQuantileBasedRemoveY(double quantile) : m_quantile(quantile) { } FilterQuantileBasedRemoveY::FilterQuantileBasedRemoveY( const FilterQuantileBasedRemoveY &other) : m_quantile(other.m_quantile) { } FilterQuantileBasedRemoveY & FilterQuantileBasedRemoveY::operator=(const FilterQuantileBasedRemoveY &other) { m_quantile = other.m_quantile; return *this; } double FilterQuantileBasedRemoveY::getQuantileThreshold() const { return m_quantile; } Trace & pappso::FilterQuantileBasedRemoveY::filter(pappso::Trace &data_points) const { if(data_points.size() == 0) return data_points; double value_to_temove = quantileYTrace(data_points.begin(), data_points.end(), m_quantile); for(auto &&dataPoint : data_points) { if(dataPoint.y < value_to_temove) dataPoint.y = 0; else dataPoint.y = dataPoint.y - value_to_temove; } return data_points; } pappso::FilterQuantileBasedRemoveY::FilterQuantileBasedRemoveY( const QString &strBuildParams) { buildFilterFromString(strBuildParams); } void pappso::FilterQuantileBasedRemoveY::buildFilterFromString( const QString &strBuildParams) { //"passQuantileBasedRemoveY|0.6" qDebug(); if(strBuildParams.startsWith("passQuantileBasedRemoveY|")) { QStringList params = strBuildParams.split("|").back().split(";", Qt::SkipEmptyParts); QString value = params.at(0); m_quantile = value.toDouble(); } else { throw pappso::ExceptionNotRecognized( QString( "building passQuantileBasedRemoveY from string %1 is not possible") .arg(strBuildParams)); } qDebug(); } QString pappso::FilterQuantileBasedRemoveY::name() const { return "passQuantileBasedRemoveY"; } QString pappso::FilterQuantileBasedRemoveY::toString() const { QString strCode = QString("%1|%2").arg(name()).arg(m_quantile); return strCode; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterpass.h000644 001750 001750 00000017231 14346367014 027057 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filterpass.h * \date 26/04/2019 * \author Olivier Langella * \brief collection of filters concerned by Y selection */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filternameinterface.h" #include #include "../../exportinmportconfig.h" namespace pappso { /** @brief remove datapoints higher than a given Y value (intensity) */ class PMSPP_LIB_DECL FilterLowPass : public FilterInterface { private: double m_passY = 0; public: FilterLowPass(double pass_y); FilterLowPass(const FilterLowPass &other); virtual ~FilterLowPass(){}; FilterLowPass &operator=(const FilterLowPass &other); Trace &filter(Trace &data_points) const override; }; /** @brief remove datapoints below a given Y value (intensity) */ class PMSPP_LIB_DECL FilterHighPass : public FilterInterface { private: double m_passY = 0; public: FilterHighPass(double pass_y); FilterHighPass(const FilterHighPass &other); virtual ~FilterHighPass(){}; FilterHighPass &operator=(const FilterHighPass &other); Trace &filter(Trace &data_points) const override; }; /** @brief remove datapoints below a given intensity percentage (ratio) of the * maximum intensity */ class PMSPP_LIB_DECL FilterHighPassPercentage : public FilterInterface { public: FilterHighPassPercentage(double y_ratio); FilterHighPassPercentage(const FilterHighPassPercentage &other); virtual ~FilterHighPassPercentage(){}; FilterHighPassPercentage &operator=(const FilterHighPassPercentage &other); Trace &filter(Trace &data_points) const override; private: double m_ratioPassY = 0; }; /** @brief keep N datapoints form the greatest intensities to the lowest */ class PMSPP_LIB_DECL FilterGreatestY : public FilterInterface { public: /** @brief constructor with the number of datapoints to keep * * @param number_of_points maximum number of points accepted in resulting * spectrum */ FilterGreatestY(std::size_t number_of_points = 0); FilterGreatestY(const FilterGreatestY &other); virtual ~FilterGreatestY(){}; FilterGreatestY &operator=(const FilterGreatestY &other); Trace &filter(Trace &data_points) const override; std::size_t getNumberOfPoints() const; private: std::size_t m_numberOfPoints = 0; }; /** @brief keep N datapoints form the greatest intensities to the lowest within * a mass range in dalton */ class PMSPP_LIB_DECL FilterGreatestYperWindow : public FilterInterface { public: /** @brief constructor with the number of datapoints to keep * * @param window_range mass range to consider (must be greater than 0.5) * @param number_of_points_per_window maximum number of points accepted per * mass window in resulting spectrum */ FilterGreatestYperWindow(double window_range, std::size_t number_of_points_per_window); FilterGreatestYperWindow(const FilterGreatestYperWindow &other); virtual ~FilterGreatestYperWindow(){}; FilterGreatestYperWindow &operator=(const FilterGreatestYperWindow &other); Trace &filter(Trace &data_points) const override; std::size_t getNumberOfPoints() const; private: double m_xWindowRange = 1; std::size_t m_numberOfPoints = 0; }; class PMSPP_LIB_DECL MassSpectrumFilterGreatestItensities : public MassSpectrumFilterInterface { private: FilterGreatestY m_filterGreatestY; public: MassSpectrumFilterGreatestItensities(std::size_t number_of_points = 0); MassSpectrumFilterGreatestItensities( const MassSpectrumFilterGreatestItensities &other); virtual ~MassSpectrumFilterGreatestItensities(){}; MassSpectrumFilterGreatestItensities & operator=(const MassSpectrumFilterGreatestItensities &other); MassSpectrum &filter(MassSpectrum &spectrum) const override; }; /** @brief apply std::floor (round to lowest integer) to all Y values */ class PMSPP_LIB_DECL FilterFloorY : public FilterInterface { public: FilterFloorY(); FilterFloorY(const FilterFloorY &other); virtual ~FilterFloorY(){}; FilterFloorY &operator=(const FilterFloorY &other); Trace &filter(Trace &data_points) const override; }; /** @brief apply std::round (round to nearest integer) to all Y values */ class PMSPP_LIB_DECL FilterRoundY : public FilterInterface { public: FilterRoundY(); FilterRoundY(const FilterRoundY &other); virtual ~FilterRoundY(){}; FilterRoundY &operator=(const FilterRoundY &other); Trace &filter(Trace &data_points) const override; }; /** @brief rescales Y values into a dynamic range * if the dynamic range is set to 0, this filter is ignored */ class PMSPP_LIB_DECL FilterRescaleY : public FilterInterface { private: double m_dynamic = 0; public: FilterRescaleY(double dynamic); FilterRescaleY(const FilterRescaleY &other); virtual ~FilterRescaleY(){}; FilterRescaleY &operator=(const FilterRescaleY &other); double getDynamicRange() const; Trace &filter(Trace &data_points) const override; }; /** @brief rescales Y values given a tranformation factor */ class PMSPP_LIB_DECL FilterScaleFactorY : public FilterInterface { private: double m_factor = 0; public: FilterScaleFactorY(double m_factor); FilterScaleFactorY(const FilterScaleFactorY &other); virtual ~FilterScaleFactorY(){}; FilterScaleFactorY &operator=(const FilterScaleFactorY &other); Trace &filter(Trace &data_points) const override; double getScaleFactorY() const; }; /** @brief removes a value to all Y values */ class PMSPP_LIB_DECL FilterRemoveY : public FilterInterface { private: double m_valueToRemove = 0; public: FilterRemoveY(double valueToRemove); FilterRemoveY(const FilterRemoveY &other); virtual ~FilterRemoveY(){}; FilterRemoveY &operator=(const FilterRemoveY &other); Trace &filter(Trace &data_points) const override; double getValue() const; }; /** @brief removes a value found by quantile to all Y values * * sort all values by Y intensity and take the iest value located at the defined * quantile the use it to remove this value to all Y intensities */ class PMSPP_LIB_DECL FilterQuantileBasedRemoveY : public FilterNameInterface { public: FilterQuantileBasedRemoveY(double quantile_threshold); /** * @param strBuildParams string to build the filter * "passQuantileBasedRemoveY|0.6" */ FilterQuantileBasedRemoveY(const QString &strBuildParams); FilterQuantileBasedRemoveY(const FilterQuantileBasedRemoveY &other); virtual ~FilterQuantileBasedRemoveY(){}; FilterQuantileBasedRemoveY & operator=(const FilterQuantileBasedRemoveY &other); Trace &filter(Trace &data_points) const override; double getQuantileThreshold() const; virtual QString name() const override; QString toString() const override; protected: void buildFilterFromString(const QString &strBuildParams) override; private: double m_quantile = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterpeakdelta.cpp000644 001750 001750 00000003675 14526455546 030415 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtepeakdelta.h * \date 05/04/2023 * \author Olivier Langella * \brief transform trace into list of peak mass delta */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filterpeakdelta.h" using namespace pappso; FilterPeakDelta::FilterPeakDelta() { } FilterPeakDelta::FilterPeakDelta(const FilterPeakDelta &other [[maybe_unused]]) { } FilterPeakDelta::~FilterPeakDelta() { } pappso::Trace & pappso::FilterPeakDelta::filter(pappso::Trace &data_points) const { Trace old_trace(data_points); data_points.clear(); auto it_out = old_trace.begin(); auto it_in = it_out + 1; auto it_end = old_trace.end(); while(it_out != it_end) { while(it_in != it_end) { double intensity = (it_out->y + it_in->y) - (std::abs(it_out->y - it_in->y)); data_points.push_back( DataPoint(std::abs(it_out->x - it_in->x), intensity)); it_in++; } it_out++; it_in = it_out + 1; } data_points.sortX(); return data_points; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterpeakdelta.h000644 001750 001750 00000003117 14417445171 030041 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtepeakdelta.h * \date 05/04/2023 * \author Olivier Langella * \brief transform trace into list of peak mass delta */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filternameinterface.h" #include "../../trace/trace.h" namespace pappso { class PMSPP_LIB_DECL FilterPeakDelta : public FilterInterface { public: /** * Default constructor */ FilterPeakDelta(); /** * Copy constructor * * @param other TODO */ FilterPeakDelta(const FilterPeakDelta &other); /** * Destructor */ virtual ~FilterPeakDelta(); virtual Trace &filter(Trace &data_points) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterremovec13.cpp000644 001750 001750 00000005706 14526455546 030264 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filterremovec13.h * \date 19/08/2020 * \author Olivier Langella * \brief sum peaks under a triangle base */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filterremovec13.h" using namespace pappso; FilterRemoveC13::FilterRemoveC13(PrecisionPtr precision_ptr) : m_precisionPtr(precision_ptr) { m_diffC12C13_z1 = DIFFC12C13; m_diffC12C13_z2 = DIFFC12C13 / 2; } FilterRemoveC13::FilterRemoveC13(const FilterRemoveC13 &other) : m_precisionPtr(other.m_precisionPtr) { m_diffC12C13_z1 = DIFFC12C13; m_diffC12C13_z2 = DIFFC12C13 / 2; } FilterRemoveC13::~FilterRemoveC13() { } Trace & FilterRemoveC13::filter(Trace &data_points) const { std::vector> exclusionMassMap; // qDebug() << data_points.size(); std::sort(data_points.begin(), data_points.end(), [](const DataPoint &a, const DataPoint &b) { return (a.y > b.y); }); Trace new_trace; for(auto &data_point : data_points) { if(notExcluded(exclusionMassMap, data_point.x)) { new_trace.push_back(data_point); } addExclusionMap(exclusionMassMap, data_point.x); } new_trace.sortX(); // qDebug() << new_trace.size(); data_points = std::move(new_trace); // qDebug() << data_points.size(); return data_points; } bool pappso::FilterRemoveC13::notExcluded( std::vector> &exclusionMassMap, double mass) const { for(auto &mass_range : exclusionMassMap) { if((mass_range.first <= mass) && (mass_range.second >= mass)) { return false; } } return true; } void pappso::FilterRemoveC13::addExclusionMap( std::vector> &exclusionMassMap, double mass) const { MzRange range1(mass + m_diffC12C13_z1, m_precisionPtr); exclusionMassMap.push_back( std::pair(range1.lower(), range1.upper())); MzRange range2(mass + m_diffC12C13_z2, m_precisionPtr); exclusionMassMap.push_back( std::pair(range2.lower(), range2.upper())); } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterremovec13.h000644 001750 001750 00000004240 14346367014 027711 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filters/filterremovec13.h * \date 19/08/2020 * \author Olivier Langella * \brief sum peaks under a triangle base */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filterinterface.h" #include "../../trace/trace.h" /** * @brief tries to keep as much as possible monoisotopes, removing any possible * C13 peaks * * first sort peaks by decreasing intensities, then keep most intense ones and * avoid any peaks in possible C13 windows after */ namespace pappso { class PMSPP_LIB_DECL FilterRemoveC13 : public FilterInterface { public: /** * Default constructor */ FilterRemoveC13(PrecisionPtr precision_ptr); /** * Copy constructor * * @param other TODO */ FilterRemoveC13(const FilterRemoveC13 &other); /** * Destructor */ virtual ~FilterRemoveC13(); Trace &filter(Trace &data_points) const override; private: bool notExcluded(std::vector> &exclusionMassMap, double mass) const; void addExclusionMap(std::vector> &exclusionMassMap, double mass) const; private: double m_diffC12C13_z1; double m_diffC12C13_z2; PrecisionPtr m_precisionPtr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterresample.cpp000644 001750 001750 00000040322 14526455546 030261 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filterresample.cpp * \date 28/04/2019 * \author Olivier Langella * \brief collection of filters concerned by X selection */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filterresample.h" #include "../../massspectrum/massspectrum.h" #include namespace pappso { FilterResampleKeepSmaller::FilterResampleKeepSmaller(double x_value) : m_value(x_value) { } FilterResampleKeepSmaller::FilterResampleKeepSmaller( const FilterResampleKeepSmaller &other) : FilterResampleKeepSmaller(other.m_value) { } Trace & FilterResampleKeepSmaller::filter(Trace &spectrum) const { auto begin_it = findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_value); spectrum.erase(begin_it, spectrum.end()); return spectrum; } FilterResampleKeepGreater::FilterResampleKeepGreater(double x_value) : m_value(x_value) { } FilterResampleKeepGreater::FilterResampleKeepGreater( const FilterResampleKeepGreater &other) : FilterResampleKeepGreater(other.m_value) { } double FilterResampleKeepGreater::getThresholdX() const { return m_value; } FilterResampleKeepGreater & FilterResampleKeepGreater::operator=(const FilterResampleKeepGreater &other) { m_value = other.m_value; return *this; } Trace & FilterResampleKeepGreater::filter(Trace &spectrum) const { // qDebug() << " spectrum.size()=" << spectrum.size(); auto last_it = findFirstGreaterX(spectrum.begin(), spectrum.end(), m_value); spectrum.erase(spectrum.begin(), last_it); // qDebug() << " spectrum.size()=" << spectrum.size(); return spectrum; } FilterResampleRemoveXRange::FilterResampleRemoveXRange(double min_x, double max_x) : m_minX(min_x), m_maxX(max_x) { } FilterResampleRemoveXRange::FilterResampleRemoveXRange( const FilterResampleRemoveXRange &other) : FilterResampleRemoveXRange(other.m_minX, other.m_maxX) { } FilterResampleRemoveXRange & FilterResampleRemoveXRange::operator=(const FilterResampleRemoveXRange &other) { m_minX = other.m_minX; m_maxX = other.m_maxX; return *this; } Trace & FilterResampleRemoveXRange::filter(Trace &spectrum) const { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " m_min_x=" << m_min_x; // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " m_max_x=" << m_max_x; auto begin_it = findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_minX); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " begin_it->x=" << begin_it->x; auto end_it = findFirstGreaterX(begin_it, spectrum.end(), m_maxX); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " end_it->x=" << end_it->x; spectrum.erase(begin_it, end_it); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " spectrum.size()=" << spectrum.size(); return spectrum; } FilterResampleKeepXRange::FilterResampleKeepXRange(double min_x, double max_x) : m_minX(min_x), m_maxX(max_x) { } FilterResampleKeepXRange::FilterResampleKeepXRange( const FilterResampleKeepXRange &other) : m_minX(other.m_minX), m_maxX(other.m_maxX) { } FilterResampleKeepXRange & FilterResampleKeepXRange::operator=(const FilterResampleKeepXRange &other) { if(&other == this) return *this; m_minX = other.m_minX; m_maxX = other.m_maxX; return *this; } Trace & FilterResampleKeepXRange::filter(Trace &spectrum) const { // qDebug() << "The range to keep:" << m_minX << "-" << m_maxX; auto begin_it = findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_minX); // qDebug() << "Found begin iterator (for m_minX) having:" << begin_it->x //<< "x (m/z) value"; auto end_it = findFirstGreaterX(begin_it, spectrum.end(), m_maxX); if(end_it == spectrum.end()) { // qDebug() << "The end iterator (for m_maxX) is the end(). The prev " //"iterator has" //<< std::prev(end_it)->x << " x(m / z) value."; } else { // qDebug() << "Found end iterator (for m_maxX) having:" << end_it->x //<< "x (m/z) value"; } // qDebug() << "Only keeping range" << begin_it->x << "-" //<< std::prev(end_it)->x; spectrum.erase(end_it, spectrum.end()); spectrum.erase(spectrum.begin(), begin_it); return spectrum; } MassSpectrumFilterResampleRemoveMzRange:: MassSpectrumFilterResampleRemoveMzRange(const MzRange &mz_range) : m_filterRange(mz_range.lower(), mz_range.upper()) { } MassSpectrumFilterResampleRemoveMzRange:: MassSpectrumFilterResampleRemoveMzRange( const MassSpectrumFilterResampleRemoveMzRange &other) : m_filterRange(other.m_filterRange) { } MassSpectrum & MassSpectrumFilterResampleRemoveMzRange::filter(MassSpectrum &spectrum) const { // qDebug() << m_filterRange.filter(spectrum); m_filterRange.filter(spectrum); return spectrum; } MassSpectrumFilterResampleKeepMzRange::MassSpectrumFilterResampleKeepMzRange( const MzRange &mz_range) : m_filterRange(mz_range.lower(), mz_range.upper()) { } MassSpectrumFilterResampleKeepMzRange::MassSpectrumFilterResampleKeepMzRange( const MassSpectrumFilterResampleKeepMzRange &other) : m_filterRange(other.m_filterRange) { } MassSpectrum & MassSpectrumFilterResampleKeepMzRange::filter(MassSpectrum &spectrum) const { m_filterRange.filter(spectrum); return spectrum; } FilterResampleKeepPointInPolygon::FilterResampleKeepPointInPolygon() { } FilterResampleKeepPointInPolygon::FilterResampleKeepPointInPolygon( const SelectionPolygon &selection_polygon, DataKind data_kind) { // It is assumed that the selection polygon always has x:MZ and y:DT|RT // depending on the spec data kind. m_selectionPolygonSpecs.push_back( SelectionPolygonSpec(selection_polygon, data_kind)); m_lowestMz = m_selectionPolygonSpecs.front().selectionPolygon.getBottomMostPoint().y(); m_greatestMz = m_selectionPolygonSpecs.front().selectionPolygon.getTopMostPoint().y(); } FilterResampleKeepPointInPolygon::FilterResampleKeepPointInPolygon( const SelectionPolygonSpecVector &selection_polygon_specs) { // qDebug(); m_selectionPolygonSpecs.assign(selection_polygon_specs.begin(), selection_polygon_specs.end()); for(auto &&item : m_selectionPolygonSpecs) { m_lowestMz = std::min(m_lowestMz, item.selectionPolygon.getBottomMostPoint().y()); m_greatestMz = std::max(m_greatestMz, item.selectionPolygon.getTopMostPoint().y()); } } FilterResampleKeepPointInPolygon::FilterResampleKeepPointInPolygon( const FilterResampleKeepPointInPolygon &other) { // qDebug(); m_selectionPolygonSpecs.assign(other.m_selectionPolygonSpecs.begin(), other.m_selectionPolygonSpecs.end()); for(auto &&item : m_selectionPolygonSpecs) { m_lowestMz = std::min(m_lowestMz, item.selectionPolygon.getBottomMostPoint().y()); m_greatestMz = std::max(m_greatestMz, item.selectionPolygon.getTopMostPoint().y()); } } void FilterResampleKeepPointInPolygon::newSelectionPolygonSpec( const SelectionPolygonSpec &selection_polygon_spec) { // It is assumed that the selection polygon always has x:MZ and y:DT|RT // depending on the spec data kind. m_selectionPolygonSpecs.push_back(selection_polygon_spec); m_lowestMz = std::min( m_lowestMz, m_selectionPolygonSpecs.back().selectionPolygon.getBottomMostPoint().y()); m_greatestMz = std::max( m_greatestMz, m_selectionPolygonSpecs.back().selectionPolygon.getTopMostPoint().y()); } FilterResampleKeepPointInPolygon & FilterResampleKeepPointInPolygon::operator=( const FilterResampleKeepPointInPolygon &other) { if(this == &other) return *this; m_selectionPolygonSpecs.assign(other.m_selectionPolygonSpecs.begin(), other.m_selectionPolygonSpecs.end()); m_lowestMz = other.m_lowestMz; m_greatestMz = other.m_greatestMz; return *this; } Trace & FilterResampleKeepPointInPolygon::filter([[maybe_unused]] Trace &trace) const { qFatal("Programming error."); return trace; } Trace & FilterResampleKeepPointInPolygon::filter(Trace &trace, double dt_value, double rt_value) const { // Each time a new selection polygon spec is added, the lowest and greatest // m/z values are computed. We use these values to remove from the spectrum // all the points that are outside of that lowest-gratest range. // Find the iterator to the most front of the DataPoint vector (mass // spectrum). // Note that the m_lowestMz and m_greatestMz are set during construction of // this FilterResampleKeepPointInPolygon filter using the // selection polygon specs. // qDebug() << "The lowest and greatest m/z values:" << m_lowestMz << "and" //<< m_greatestMz; // Start by filtering away all the data points outside of the // [m_lowestMz--m_greatestMz] range. FilterResampleKeepXRange the_filter(m_lowestMz, m_greatestMz); trace = the_filter.filter(trace); // Now iterate in all the data points remaining in the trace and for each // point craft a "virtual" point using the dt|rt value and the m/z value of // the data point (data_point.x). auto begin_it = trace.begin(); auto end_it = trace.end(); // qDebug() << "Iterating in the m/z range:" << begin_it->x << "-" //<< std::prev(end_it)->x; // Start at the end of the range. The iter is outside of the requested range, // in fact, as shown using iter-- below. auto iter = end_it; while(iter > begin_it) { // Immediately go to the last data point of the desired iteration range of // the trace that we need to filter. Remember that end() is not pointing // to any vector item, but past the last one. iter--; // qDebug() << "Iterating in trace data point with m/z value:" << iter->x; // Now that we have the m/z value, we can check it, in combination with // the value in the selection polygon spec (to make a point) against the // various selection polygon specs in our member vector. double checked_value; for(auto &&spec : m_selectionPolygonSpecs) { // qDebug() << "Iterating in selection polygon spec:" << // spec.toString(); if(spec.dataKind == DataKind::dt) { if(dt_value == -1) qFatal("Programming error."); checked_value = dt_value; // qDebug() << "The data kind: dt."; } else if(spec.dataKind == DataKind::rt) { checked_value = rt_value; // qDebug() << "The data kind: rt."; } else qFatal("Programming error."); // First version doing the whole computation on the basis of the // selection polygon's all faces. // if(!spec.selectionPolygon.contains(QPointF(checked_value, iter->x))) iter = trace.erase(iter); #if 0 //This code does not work because depending on the orientation of the //skewed selection polygon (left bottom to right top or left top to //right bottom or or Or depending on the axes of the //bi-dimensional colormap, requiring transposition or not), the //notion of "left line" and of "right line" changes. // Second version checking that point is right of left vertical line // of polygon and left of right vertical line. // double res = sideofline(XX;YY;xA;yA;xB;yB) = // (xB-xA) * (YY-yA) - (yB-yA) * (XX-xA) // If res == 0, the point is on the line // If rest < 0, the point is on the right of the line // If rest > 0, the point is on the left of the line // Left vertical line of the polygon // Bottom point double xA_left = spec.selectionPolygon.getPoint(PointSpecs::BOTTOM_LEFT_POINT).x(); double yA_left = spec.selectionPolygon.getPoint(PointSpecs::BOTTOM_LEFT_POINT).y(); // Top point double xB_left = spec.selectionPolygon.getPoint(PointSpecs::TOP_LEFT_POINT).x(); double yB_left = spec.selectionPolygon.getPoint(PointSpecs::TOP_LEFT_POINT).y(); qDebug() << "The left line goes: (" << xA_left << "," << yA_left << ")->(" << xB_left << "," << yB_left << ")"; if((xB_left - xA_left) * (iter->x - yA_left) - (yB_left - yA_left) * (checked_value - xA_left) > 0) { // The point is left of the left line. We can remove the point // from the mass spectrum. qDebug() << qSetRealNumberPrecision(10) << "Filtered out point (left of left line):" << checked_value << "-" << iter->x; iter = trace.erase(iter); // No need to go on with the analysis, just go to the next (that // is, previous, since we iterate backwards) data point. continue; } else { qDebug() << qSetRealNumberPrecision(10) << "Kept point (right of left line):" << checked_value << "-" << iter->x; } // Right vertical line of the polygon // Bottom point double xA_right = spec.selectionPolygon.getPoint(PointSpecs::BOTTOM_RIGHT_POINT).x(); double yA_right = spec.selectionPolygon.getPoint(PointSpecs::BOTTOM_RIGHT_POINT).y(); // Top point double xB_right = spec.selectionPolygon.getPoint(PointSpecs::TOP_RIGHT_POINT).x(); double yB_right = spec.selectionPolygon.getPoint(PointSpecs::TOP_RIGHT_POINT).y(); qDebug() << "The right line goes: (" << xA_right << "," << yA_right << ")->(" << xB_right << "," << yB_right << ")"; if((xB_right - xA_right) * (iter->x - yA_right) - (yB_right - yA_right) * (checked_value - xA_right) < 0) { qDebug() << qSetRealNumberPrecision(10) << "Filtered out point (right of right line):" << checked_value << "-" << iter->x; // The point is right of the right line. We can remove the point // from the mass spectrum. iter = trace.erase(iter); // Here, continue is implicit. // No need to go on with the analysis, just go to the next (that // is, previous, since we iterate backwards) data point. // continue; } else { if(iter->x >= 449 && iter->x <= 450 && checked_value > 19.5 && checked_value < 20) qDebug() << qSetRealNumberPrecision(10) << "SHOULD NOT Definitively kept point (left of right line):" << checked_value << "-" << iter->x; else qDebug() << qSetRealNumberPrecision(10) << "MIGHT Definitively kept point (left of right line):" << checked_value << "-" << iter->x; } #endif } // End of // for(auto &&spec : m_selectionPolygonSpecs) } // End of // while(iter > begin_it) return trace; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filterresample.h000644 001750 001750 00000011613 14360267753 027724 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filterresample.h * \date 28/04/2019 * \author Olivier Langella * \brief collection of filters concerned by X selection */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filterinterface.h" #include #include "../../mzrange.h" #include "../../exportinmportconfig.h" #include "../combiners/selectionpolygon.h" namespace pappso { class PMSPP_LIB_DECL FilterResampleKeepSmaller : public FilterInterface { private: double m_value; public: FilterResampleKeepSmaller(double x_value); FilterResampleKeepSmaller(const FilterResampleKeepSmaller &other); virtual ~FilterResampleKeepSmaller(){}; Trace &filter(Trace &trace) const override; }; class PMSPP_LIB_DECL FilterResampleKeepGreater : public FilterInterface { private: double m_value; public: FilterResampleKeepGreater(double x_value); FilterResampleKeepGreater(const FilterResampleKeepGreater &other); virtual ~FilterResampleKeepGreater(){}; FilterResampleKeepGreater &operator=(const FilterResampleKeepGreater &other); Trace &filter(Trace &trace) const override; double getThresholdX() const; }; class PMSPP_LIB_DECL FilterResampleRemoveXRange : public FilterInterface { private: double m_minX; double m_maxX; public: FilterResampleRemoveXRange(double min_x, double max_x); FilterResampleRemoveXRange(const FilterResampleRemoveXRange &other); virtual ~FilterResampleRemoveXRange(){}; FilterResampleRemoveXRange & operator=(const FilterResampleRemoveXRange &other); Trace &filter(Trace &trace) const override; }; class PMSPP_LIB_DECL FilterResampleKeepXRange : public FilterInterface { private: double m_minX; double m_maxX; public: FilterResampleKeepXRange(double min_x = 0, double max_x = 0); FilterResampleKeepXRange(const FilterResampleKeepXRange &other); virtual ~FilterResampleKeepXRange(){}; FilterResampleKeepXRange &operator=(const FilterResampleKeepXRange &other); Trace &filter(Trace &trace) const override; }; using SelectionPolygonSpecVector = std::vector; class PMSPP_LIB_DECL FilterResampleKeepPointInPolygon : public FilterInterface { public: FilterResampleKeepPointInPolygon(); FilterResampleKeepPointInPolygon(const SelectionPolygon &selection_polygon, DataKind data_kind); FilterResampleKeepPointInPolygon( const SelectionPolygonSpecVector &selection_polygon_specs); FilterResampleKeepPointInPolygon( const FilterResampleKeepPointInPolygon &other); virtual ~FilterResampleKeepPointInPolygon(){}; void newSelectionPolygonSpec(const SelectionPolygonSpec &selection_polygon_spec); FilterResampleKeepPointInPolygon & operator=(const FilterResampleKeepPointInPolygon &other); using FilterInterface::filter; Trace &filter(Trace &trace) const override; Trace &filter(Trace &trace, double dt_value, double rt_value) const; private: std::vector m_selectionPolygonSpecs; double m_lowestMz = std::numeric_limits::max(); double m_greatestMz = std::numeric_limits::min(); }; class PMSPP_LIB_DECL MassSpectrumFilterResampleRemoveMzRange : public MassSpectrumFilterInterface { private: const FilterResampleRemoveXRange m_filterRange; public: MassSpectrumFilterResampleRemoveMzRange(const MzRange &mz_range); MassSpectrumFilterResampleRemoveMzRange( const MassSpectrumFilterResampleRemoveMzRange &other); virtual ~MassSpectrumFilterResampleRemoveMzRange(){}; MassSpectrum &filter(MassSpectrum &spectrum) const override; }; class PMSPP_LIB_DECL MassSpectrumFilterResampleKeepMzRange : public MassSpectrumFilterInterface { private: const FilterResampleKeepXRange m_filterRange; public: MassSpectrumFilterResampleKeepMzRange(const MzRange &mz_range); MassSpectrumFilterResampleKeepMzRange( const MassSpectrumFilterResampleKeepMzRange &other); virtual ~MassSpectrumFilterResampleKeepMzRange(){}; MassSpectrum &filter(MassSpectrum &spectrum) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtersuite.cpp000644 001750 001750 00000002761 14526455546 027607 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtersuite.cpp * \date 02/05/2019 * \author Olivier Langella * \brief apply a suite of filters on a trace */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filtersuite.h" #include using namespace pappso; FilterSuite::FilterSuite() { } FilterSuite::FilterSuite(const FilterSuite &other) : std::vector(other) { } Trace & FilterSuite::filter(Trace &data_points) const { qDebug(); for(auto &&filter : *this) { qDebug(); filter.get()->filter(data_points); } qDebug(); return data_points; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtersuite.h000644 001750 001750 00000003001 14346367014 027230 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtersuite.h * \date 02/05/2019 * \author Olivier Langella * \brief apply a suite of filters on a trace */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "filternameinterface.h" namespace pappso { /** @brief apply a suite of filters from a vector */ class PMSPP_LIB_DECL FilterSuite : public std::vector, public FilterInterface { public: FilterSuite(); FilterSuite(const FilterSuite &other); Trace &filter(Trace &data_points) const override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtersuitestring.cpp000644 001750 001750 00000007563 14526455546 031043 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filers/filtersuitestring.cpp * \date 17/11/2020 * \author Olivier Langella * \brief build a filter suite from a string */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella * * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filtersuitestring.h" #include "filterchargedeconvolution.h" #include "filtercomplementionenhancer.h" #include "filterpass.h" #include "filtermorpho.h" #include #include #include "../../exception/exceptionnotrecognized.h" #include "filterexclusionmz.h" namespace pappso { FilterSuiteString::FilterSuiteString(const QString &strBuildParams) { buildFilterFromString(strBuildParams); } FilterSuiteString::~FilterSuiteString() { } pappso::Trace & FilterSuiteString::filter(pappso::Trace &data_points) const { qDebug(); for(auto &&filter : m_filterVector) { qDebug() << filter.get(); qDebug() << filter->toString(); filter->filter(data_points); } qDebug(); return data_points; } QString pappso::FilterSuiteString::name() const { // FIXME: check if this makes sense return "Suite of filters"; } QString FilterSuiteString::toString() const { QStringList filter_str_list; for(auto &&filter : m_filterVector) { filter_str_list << filter->toString(); } return filter_str_list.join(" "); } void FilterSuiteString::buildFilterFromString(const QString &strBuildParams) { // qInfo() << strBuildParams; QStringList filters = strBuildParams.split(" ", Qt::SkipEmptyParts); for(QString filter_str : filters) { if(filter_str.startsWith("complementIonEnhancer|")) { m_filterVector.push_back( std::make_shared(filter_str)); } else if(filter_str.startsWith("chargeDeconvolution|")) { m_filterVector.push_back( std::make_shared(filter_str)); } else if(filter_str.startsWith("mzExclusion|")) { m_filterVector.push_back( std::make_shared(filter_str)); } else if(filter_str.startsWith("passQuantileBasedRemoveY|")) { m_filterVector.push_back( std::make_shared(filter_str)); } else if(filter_str.startsWith("antiSpike|")) { m_filterVector.push_back( std::make_shared(filter_str)); } else { throw pappso::ExceptionNotRecognized( QString("building Filter from string %1 is " "not possible") .arg(filter_str)); } } } void FilterSuiteString::addFilterFromString(const QString &strBuildParams) { buildFilterFromString(strBuildParams); } FilterSuiteString::FilterNameType::const_iterator FilterSuiteString::begin() { return m_filterVector.begin(); }; FilterSuiteString::FilterNameType::const_iterator FilterSuiteString::end() { return m_filterVector.end(); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtersuitestring.h000644 001750 001750 00000004554 14346367014 030475 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/filers/filtersuitestring.h * \date 17/11/2020 * \author Olivier Langella * \brief build a filter suite from a string */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella * * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "filternameinterface.h" #include "../../exportinmportconfig.h" namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL FilterSuiteString : public FilterNameInterface { public: /** * @param strBuildParams string to build the filter * "chargeDeconvolution|0.02dalton anotherFilter|param1;param2" */ FilterSuiteString(const QString &strBuildParams); /** * Destructor */ virtual ~FilterSuiteString(); pappso::Trace &filter(pappso::Trace &data_points) const override; virtual QString name() const override; QString toString() const override; /** @brief takes a string that describes filters to add * @param strBuildParams string to build the filter * "chargeDeconvolution|0.02dalton anotherFilter|param1;param2" */ void addFilterFromString(const QString &strBuildParams); using FilterNameType = std::vector; FilterNameType::const_iterator begin(); FilterNameType::const_iterator end(); protected: void buildFilterFromString(const QString &strBuildParams) override; private: std::vector m_filterVector; }; typedef std::shared_ptr FilterSuiteStringSPtr; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtertandemremovec13.cpp000644 001750 001750 00000005261 14526455546 031451 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtertandemremovec13.h * \date 26/04/2019 * \author Olivier Langella * \brief new implementation of the X!Tandem filter to remove isotopes in an MS2 * signal */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filtertandemremovec13.h" #include "../../massspectrum/massspectrum.h" #include using namespace pappso; FilterTandemDeisotope::FilterTandemDeisotope(double mz_range_max, double minimum_mz) { m_arbitrary_minimum_mz = minimum_mz; m_arbitrary_range_between_isotopes = mz_range_max; } FilterTandemDeisotope::FilterTandemDeisotope(const FilterTandemDeisotope &other) { m_arbitrary_minimum_mz = other.m_arbitrary_minimum_mz; m_arbitrary_range_between_isotopes = other.m_arbitrary_range_between_isotopes; } MassSpectrum & FilterTandemDeisotope::filter(MassSpectrum &data_points) const { MassSpectrum massSpectrum; if(data_points.size() > 0) { // auto it_write = data_points.begin(); auto it_read = data_points.begin() + 1; auto it_end = data_points.end(); DataPoint value_write = *data_points.begin(); double last_mz = value_write.x; while(it_read != it_end) { if((it_read->x - last_mz) >= m_arbitrary_range_between_isotopes || it_read->x < m_arbitrary_minimum_mz) { massSpectrum.push_back(value_write); value_write = *it_read; last_mz = value_write.x; } else if(it_read->y > value_write.y) { value_write = *it_read; } it_read++; } massSpectrum.push_back(value_write); } data_points = std::move(massSpectrum); return data_points; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtertandemremovec13.h000644 001750 001750 00000004466 14346367014 031114 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtertandemremovec13.h * \date 26/04/2019 * \author Olivier Langella * \brief new implementation of the X!Tandem filter to remove isotopes in an MS2 * signal */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filterinterface.h" #include namespace pappso { /** @brief Deisotope the mass spectrum * \c this mass spectrum is iterated over and according to a data point-based * moving window progression does the following tests: * * - any data point having a x value (m/z value) less than 200 is conserved; * * - any data point having a x value greater than the previous data point's x * value by at least 0.95 is conserved; * * remove isotopes as in X!Tandem algorithm this method doesn't * really remove isotopes: it cleans up multiple intensities within one * Dalton of each other. first tandem filter is 0.95 (remove_isotopes(_s);) second tandem filter is 1.5 (clean_isotopes(_s);) * */ class PMSPP_LIB_DECL FilterTandemDeisotope : public MassSpectrumFilterInterface { public: FilterTandemDeisotope(double mz_range_max = 0.95, double minimum_mz = 200.0); FilterTandemDeisotope(const FilterTandemDeisotope &other); MassSpectrum &filter(MassSpectrum &data_points) const override; private: double m_arbitrary_range_between_isotopes = 0.95; double m_arbitrary_minimum_mz = 200.0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtertriangle.cpp000644 001750 001750 00000006077 14526455546 030267 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtertriangle.h * \date 27/10/2019 * \author Olivier Langella * \brief sum peaks under a triangle base */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "filtertriangle.h" #include using namespace pappso; FilterTriangle::FilterTriangle() { } FilterTriangle::FilterTriangle(const FilterTriangle &other) { m_triangleSlope = other.m_triangleSlope; } FilterTriangle::~FilterTriangle() { } double FilterTriangle::setTriangleSlope(double intensity, double mz) { m_maxMzRange = mz; m_triangleSlope = mz / intensity; return m_triangleSlope; } DataPoint FilterTriangle::sumAndRemove(Trace &trace, const DataPoint &max_intensity) const { // qDebug(); // double sum = max_intensity.y; // double wmean = max_intensity.y * max_intensity.x; double mz_range = max_intensity.y * m_triangleSlope; if(mz_range > m_maxMzRange) { mz_range = m_maxMzRange; } double min_range = max_intensity.x - mz_range; double max_range = max_intensity.x + mz_range; DataPoint new_point; new_point.y = 0; new_point.x = 0; // Trace new_trace; for(DataPoint &old_point : trace) { if((old_point.x < min_range) || (old_point.x > max_range)) { // new_trace.push_back(old_point); } else { new_point.y += old_point.y; new_point.x += old_point.y * old_point.x; old_point.y = 0; } } // trace = std::move(new_trace); new_point.x = new_point.x / new_point.y; // weighted mean on mz return new_point; } Trace & FilterTriangle::filter(Trace &data_points) const { // qDebug() << data_points.size(); Trace new_trace; std::vector::iterator it_max = maxYDataPoint(data_points.begin(), data_points.end()); // qDebug(); while((it_max != data_points.end()) && (it_max->y > 0)) { // qDebug(); new_trace.push_back(sumAndRemove(data_points, *it_max)); // qDebug(); it_max = maxYDataPoint(data_points.begin(), data_points.end()); } new_trace.sortX(); // qDebug() << new_trace.size(); data_points = std::move(new_trace); // qDebug() << data_points.size(); return data_points; } libpappsomspp-0.9.20/src/pappsomspp/processing/filters/filtertriangle.h000644 001750 001750 00000003454 14346367014 027720 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/filers/filtertriangle.h * \date 27/10/2019 * \author Olivier Langella * \brief sum peaks under a triangle base */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "filterinterface.h" #include "../../trace/trace.h" namespace pappso { /** * @todo sum peaks under a triangle base */ class PMSPP_LIB_DECL FilterTriangle : public FilterInterface { public: /** * Default constructor */ FilterTriangle(); /** * Copy constructor * * @param other TODO */ FilterTriangle(const FilterTriangle &other); /** * Destructor */ ~FilterTriangle(); double setTriangleSlope(double intensity, double mz); Trace &filter(Trace &data_points) const override; private: DataPoint sumAndRemove(Trace &trace, const DataPoint &max_intensity) const; private: double m_triangleSlope; double m_maxMzRange = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/savgolfilter.cpp000644 001750 001750 00000043412 14526455546 027747 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #include #include #include #include "../../exception/exceptionnotrecognized.h" #include "savgolfilter.h" namespace pappso { #define SWAP(a, b) \ tempr = (a); \ (a) = (b); \ (b) = tempr FilterSavitzkyGolay::FilterSavitzkyGolay( int nL, int nR, int m, int lD, bool convolveWithNr) { m_params.nL = nL; m_params.nR = nR; m_params.m = m; m_params.lD = lD; m_params.convolveWithNr = convolveWithNr; } FilterSavitzkyGolay::FilterSavitzkyGolay(const SavGolParams sav_gol_params) { m_params.nL = sav_gol_params.nL; m_params.nR = sav_gol_params.nR; m_params.m = sav_gol_params.m; m_params.lD = sav_gol_params.lD; m_params.convolveWithNr = sav_gol_params.convolveWithNr; } FilterSavitzkyGolay::FilterSavitzkyGolay(const FilterSavitzkyGolay &other) { // This function only copies the parameters, not the data. m_params.nL = other.m_params.nL; m_params.nR = other.m_params.nR; m_params.m = other.m_params.m; m_params.lD = other.m_params.lD; m_params.convolveWithNr = other.m_params.convolveWithNr; } FilterSavitzkyGolay::~FilterSavitzkyGolay() { } FilterSavitzkyGolay & FilterSavitzkyGolay::operator=(const FilterSavitzkyGolay &other) { if(&other == this) return *this; // This function only copies the parameters, not the data. m_params.nL = other.m_params.nL; m_params.nR = other.m_params.nR; m_params.m = other.m_params.m; m_params.lD = other.m_params.lD; m_params.convolveWithNr = other.m_params.convolveWithNr; return *this; } FilterSavitzkyGolay::FilterSavitzkyGolay(const QString ¶meters) { buildFilterFromString(parameters); } void FilterSavitzkyGolay::buildFilterFromString(const QString ¶meters) { // Typical string: "Savitzky-Golay|15;15;4;0;false" if(parameters.startsWith(QString("%1|").arg(name()))) { QStringList params = parameters.split("|").back().split(";"); m_params.nL = params.at(0).toInt(); m_params.nR = params.at(1).toInt(); m_params.m = params.at(2).toInt(); m_params.lD = params.at(3).toInt(); m_params.convolveWithNr = (params.at(4) == "true" ? true : false); } else { throw pappso::ExceptionNotRecognized( QString("Building of FilterSavitzkyGolay from string %1 failed") .arg(parameters)); } } Trace & FilterSavitzkyGolay::filter(Trace &data_points) const { // Initialize data: // We want the filter to stay constant so we create a local copy of the data. int data_point_count = data_points.size(); pappso_double *x_data_p = dvector(1, data_point_count); pappso_double *y_initial_data_p = dvector(1, data_point_count); pappso_double *y_filtered_data_p = nullptr; if(m_params.convolveWithNr) y_filtered_data_p = dvector(1, 2 * data_point_count); else y_filtered_data_p = dvector(1, data_point_count); for(int iter = 0; iter < data_point_count; ++iter) { x_data_p[iter] = data_points.at(iter).x; y_initial_data_p[iter] = data_points.at(iter).y; } // Now run the filter. runFilter(y_initial_data_p, y_filtered_data_p, data_point_count); // Put back the modified y values into the trace. auto iter_yf = y_filtered_data_p; for(auto &data_point : data_points) { data_point.y = *iter_yf; iter_yf++; } return data_points; } SavGolParams FilterSavitzkyGolay::getParameters() const { return SavGolParams( m_params.nL, m_params.nR, m_params.m, m_params.lD, m_params.convolveWithNr); } //! Return a string with the textual representation of the configuration data. QString FilterSavitzkyGolay::toString() const { return QString("%1|%2").arg(name()).arg(m_params.toString()); } QString FilterSavitzkyGolay::name() const { return "Savitzky-Golay"; } int * FilterSavitzkyGolay::ivector(long nl, long nh) const { int *v; v = (int *)malloc((size_t)((nh - nl + 2) * sizeof(int))); if(!v) { qFatal("Error: Allocation failure."); } return v - nl + 1; } pappso_double * FilterSavitzkyGolay::dvector(long nl, long nh) const { pappso_double *v; long k; v = (pappso_double *)malloc((size_t)((nh - nl + 2) * sizeof(pappso_double))); if(!v) { qFatal("Error: Allocation failure."); } for(k = nl; k <= nh; k++) v[k] = 0.0; return v - nl + 1; } pappso_double ** FilterSavitzkyGolay::dmatrix(long nrl, long nrh, long ncl, long nch) const { long i, nrow = nrh - nrl + 1, ncol = nch - ncl + 1; pappso_double **m; m = (pappso_double **)malloc((size_t)((nrow + 1) * sizeof(pappso_double *))); if(!m) { qFatal("Error: Allocation failure."); } m += 1; m -= nrl; m[nrl] = (pappso_double *)malloc( (size_t)((nrow * ncol + 1) * sizeof(pappso_double))); if(!m[nrl]) { qFatal("Error: Allocation failure."); } m[nrl] += 1; m[nrl] -= ncl; for(i = nrl + 1; i <= nrh; i++) m[i] = m[i - 1] + ncol; return m; } void FilterSavitzkyGolay::free_ivector(int *v, long nl, [[maybe_unused]] long nh) const { free((char *)(v + nl - 1)); } void FilterSavitzkyGolay::free_dvector(pappso_double *v, long nl, [[maybe_unused]] long nh) const { free((char *)(v + nl - 1)); } void FilterSavitzkyGolay::free_dmatrix(pappso_double **m, long nrl, [[maybe_unused]] long nrh, long ncl, [[maybe_unused]] long nch) const { free((char *)(m[nrl] + ncl - 1)); free((char *)(m + nrl - 1)); } void FilterSavitzkyGolay::lubksb(pappso_double **a, int n, int *indx, pappso_double b[]) const { int i, ii = 0, ip, j; pappso_double sum; for(i = 1; i <= n; i++) { ip = indx[i]; sum = b[ip]; b[ip] = b[i]; if(ii) for(j = ii; j <= i - 1; j++) sum -= a[i][j] * b[j]; else if(sum) ii = i; b[i] = sum; } for(i = n; i >= 1; i--) { sum = b[i]; for(j = i + 1; j <= n; j++) sum -= a[i][j] * b[j]; b[i] = sum / a[i][i]; } } void FilterSavitzkyGolay::ludcmp(pappso_double **a, int n, int *indx, pappso_double *d) const { int i, imax = 0, j, k; pappso_double big, dum, sum, temp; pappso_double *vv; vv = dvector(1, n); *d = 1.0; for(i = 1; i <= n; i++) { big = 0.0; for(j = 1; j <= n; j++) if((temp = fabs(a[i][j])) > big) big = temp; if(big == 0.0) { qFatal("Error: Singular matrix found in routine ludcmp()."); } vv[i] = 1.0 / big; } for(j = 1; j <= n; j++) { for(i = 1; i < j; i++) { sum = a[i][j]; for(k = 1; k < i; k++) sum -= a[i][k] * a[k][j]; a[i][j] = sum; } big = 0.0; for(i = j; i <= n; i++) { sum = a[i][j]; for(k = 1; k < j; k++) sum -= a[i][k] * a[k][j]; a[i][j] = sum; if((dum = vv[i] * fabs(sum)) >= big) { big = dum; imax = i; } } if(j != imax) { for(k = 1; k <= n; k++) { dum = a[imax][k]; a[imax][k] = a[j][k]; a[j][k] = dum; } *d = -(*d); vv[imax] = vv[j]; } indx[j] = imax; if(a[j][j] == 0.0) a[j][j] = std::numeric_limits::epsilon(); if(j != n) { dum = 1.0 / (a[j][j]); for(i = j + 1; i <= n; i++) a[i][j] *= dum; } } free_dvector(vv, 1, n); } void FilterSavitzkyGolay::four1(pappso_double data[], unsigned long nn, int isign) { unsigned long n, mmax, m, j, istep, i; pappso_double wtemp, wr, wpr, wpi, wi, theta; pappso_double tempr, tempi; n = nn << 1; j = 1; for(i = 1; i < n; i += 2) { if(j > i) { SWAP(data[j], data[i]); SWAP(data[j + 1], data[i + 1]); } m = n >> 1; while(m >= 2 && j > m) { j -= m; m >>= 1; } j += m; } mmax = 2; while(n > mmax) { istep = mmax << 1; theta = isign * (6.28318530717959 / mmax); wtemp = sin(0.5 * theta); wpr = -2.0 * wtemp * wtemp; wpi = sin(theta); wr = 1.0; wi = 0.0; for(m = 1; m < mmax; m += 2) { for(i = m; i <= n; i += istep) { j = i + mmax; tempr = wr * data[j] - wi * data[j + 1]; tempi = wr * data[j + 1] + wi * data[j]; data[j] = data[i] - tempr; data[j + 1] = data[i + 1] - tempi; data[i] += tempr; data[i + 1] += tempi; } wr = (wtemp = wr) * wpr - wi * wpi + wr; wi = wi * wpr + wtemp * wpi + wi; } mmax = istep; } } void FilterSavitzkyGolay::twofft(pappso_double data1[], pappso_double data2[], pappso_double fft1[], pappso_double fft2[], unsigned long n) { unsigned long nn3, nn2, jj, j; pappso_double rep, rem, aip, aim; nn3 = 1 + (nn2 = 2 + n + n); for(j = 1, jj = 2; j <= n; j++, jj += 2) { fft1[jj - 1] = data1[j]; fft1[jj] = data2[j]; } four1(fft1, n, 1); fft2[1] = fft1[2]; fft1[2] = fft2[2] = 0.0; for(j = 3; j <= n + 1; j += 2) { rep = 0.5 * (fft1[j] + fft1[nn2 - j]); rem = 0.5 * (fft1[j] - fft1[nn2 - j]); aip = 0.5 * (fft1[j + 1] + fft1[nn3 - j]); aim = 0.5 * (fft1[j + 1] - fft1[nn3 - j]); fft1[j] = rep; fft1[j + 1] = aim; fft1[nn2 - j] = rep; fft1[nn3 - j] = -aim; fft2[j] = aip; fft2[j + 1] = -rem; fft2[nn2 - j] = aip; fft2[nn3 - j] = rem; } } void FilterSavitzkyGolay::realft(pappso_double data[], unsigned long n, int isign) { unsigned long i, i1, i2, i3, i4, np3; pappso_double c1 = 0.5, c2, h1r, h1i, h2r, h2i; pappso_double wr, wi, wpr, wpi, wtemp, theta; theta = 3.141592653589793 / (pappso_double)(n >> 1); if(isign == 1) { c2 = -0.5; four1(data, n >> 1, 1); } else { c2 = 0.5; theta = -theta; } wtemp = sin(0.5 * theta); wpr = -2.0 * wtemp * wtemp; wpi = sin(theta); wr = 1.0 + wpr; wi = wpi; np3 = n + 3; for(i = 2; i <= (n >> 2); i++) { i4 = 1 + (i3 = np3 - (i2 = 1 + (i1 = i + i - 1))); h1r = c1 * (data[i1] + data[i3]); h1i = c1 * (data[i2] - data[i4]); h2r = -c2 * (data[i2] + data[i4]); h2i = c2 * (data[i1] - data[i3]); data[i1] = h1r + wr * h2r - wi * h2i; data[i2] = h1i + wr * h2i + wi * h2r; data[i3] = h1r - wr * h2r + wi * h2i; data[i4] = -h1i + wr * h2i + wi * h2r; wr = (wtemp = wr) * wpr - wi * wpi + wr; wi = wi * wpr + wtemp * wpi + wi; } if(isign == 1) { data[1] = (h1r = data[1]) + data[2]; data[2] = h1r - data[2]; } else { data[1] = c1 * ((h1r = data[1]) + data[2]); data[2] = c1 * (h1r - data[2]); four1(data, n >> 1, -1); } } char FilterSavitzkyGolay::convlv(pappso_double data[], unsigned long n, pappso_double respns[], unsigned long m, int isign, pappso_double ans[]) { unsigned long i, no2; pappso_double dum, mag2, *fft; fft = dvector(1, n << 1); for(i = 1; i <= (m - 1) / 2; i++) respns[n + 1 - i] = respns[m + 1 - i]; for(i = (m + 3) / 2; i <= n - (m - 1) / 2; i++) respns[i] = 0.0; twofft(data, respns, fft, ans, n); no2 = n >> 1; for(i = 2; i <= n + 2; i += 2) { if(isign == 1) { ans[i - 1] = (fft[i - 1] * (dum = ans[i - 1]) - fft[i] * ans[i]) / no2; ans[i] = (fft[i] * dum + fft[i - 1] * ans[i]) / no2; } else if(isign == -1) { if((mag2 = ans[i - 1] * ans[i - 1] + ans[i] * ans[i]) == 0.0) { qDebug("Attempt of deconvolving at zero response in convlv()."); return (1); } ans[i - 1] = (fft[i - 1] * (dum = ans[i - 1]) + fft[i] * ans[i]) / mag2 / no2; ans[i] = (fft[i] * dum - fft[i - 1] * ans[i]) / mag2 / no2; } else { qDebug("No meaning for isign in convlv()."); return (1); } } ans[2] = ans[n + 1]; realft(ans, n, -1); free_dvector(fft, 1, n << 1); return (0); } char FilterSavitzkyGolay::sgcoeff( pappso_double c[], int np, int nl, int nr, int ld, int m) const { int imj, ipj, j, k, kk, mm, *indx; pappso_double d, fac, sum, **a, *b; if(np < nl + nr + 1 || nl < 0 || nr < 0 || ld > m || nl + nr < m) { qDebug("Inconsistent arguments detected in routine sgcoeff."); return (1); } indx = ivector(1, m + 1); a = dmatrix(1, m + 1, 1, m + 1); b = dvector(1, m + 1); for(ipj = 0; ipj <= (m << 1); ipj++) { sum = (ipj ? 0.0 : 1.0); for(k = 1; k <= nr; k++) sum += pow((pappso_double)k, (pappso_double)ipj); for(k = 1; k <= nl; k++) sum += pow((pappso_double)-k, (pappso_double)ipj); mm = (ipj < 2 * m - ipj ? ipj : 2 * m - ipj); for(imj = -mm; imj <= mm; imj += 2) a[1 + (ipj + imj) / 2][1 + (ipj - imj) / 2] = sum; } ludcmp(a, m + 1, indx, &d); for(j = 1; j <= m + 1; j++) b[j] = 0.0; b[ld + 1] = 1.0; lubksb(a, m + 1, indx, b); for(kk = 1; kk <= np; kk++) c[kk] = 0.0; for(k = -nl; k <= nr; k++) { sum = b[1]; fac = 1.0; for(mm = 1; mm <= m; mm++) sum += b[mm + 1] * (fac *= k); kk = ((np - k) % np) + 1; c[kk] = sum; } free_dvector(b, 1, m + 1); free_dmatrix(a, 1, m + 1, 1, m + 1); free_ivector(indx, 1, m + 1); return (0); } //! Perform the Savitzky-Golay filtering process. /* The results are in the \c y_filtered_data_p C array of pappso_double values. */ char FilterSavitzkyGolay::runFilter(double *y_data_p, double *y_filtered_data_p, int data_point_count) const { int np = m_params.nL + 1 + m_params.nR; pappso_double *c; char retval; #if CONVOLVE_WITH_NR_CONVLV c = dvector(1, data_point_count); retval = sgcoeff(c, np, m_nL, m_nR, m_lD, m_m); if(retval == 0) convlv(y_data_p, data_point_count, c, np, 1, y_filtered_data_p); free_dvector(c, 1, data_point_count); #else int j; long int k; c = dvector(1, m_params.nL + m_params.nR + 1); retval = sgcoeff(c, np, m_params.nL, m_params.nR, m_params.lD, m_params.m); if(retval == 0) { qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" << "retval is 0"; for(k = 1; k <= m_params.nL; k++) { for(y_filtered_data_p[k] = 0.0, j = -m_params.nL; j <= m_params.nR; j++) { if(k + j >= 1) { y_filtered_data_p[k] += c[(j >= 0 ? j + 1 : m_params.nR + m_params.nL + 2 + j)] * y_data_p[k + j]; } } } for(k = m_params.nL + 1; k <= data_point_count - m_params.nR; k++) { for(y_filtered_data_p[k] = 0.0, j = -m_params.nL; j <= m_params.nR; j++) { y_filtered_data_p[k] += c[(j >= 0 ? j + 1 : m_params.nR + m_params.nL + 2 + j)] * y_data_p[k + j]; } } for(k = data_point_count - m_params.nR + 1; k <= data_point_count; k++) { for(y_filtered_data_p[k] = 0.0, j = -m_params.nL; j <= m_params.nR; j++) { if(k + j <= data_point_count) { y_filtered_data_p[k] += c[(j >= 0 ? j + 1 : m_params.nR + m_params.nL + 2 + j)] * y_data_p[k + j]; } } } } free_dvector(c, 1, m_params.nR + m_params.nL + 1); #endif return (retval); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/filters/savgolfilter.h000644 001750 001750 00000014345 14514537340 027405 0ustar00rusconirusconi000000 000000 /* BEGIN software license * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This file is part of the msXpertSuite project. * * The msXpertSuite project is the successor of the massXpert project. This * project now includes various independent modules: * * - massXpert, model polymer chemistries and simulate mass spectrometric data; * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once #include #include "../../trace/trace.h" #include "../../exportinmportconfig.h" #include "filternameinterface.h" namespace pappso { //! Parameters for the Savitzky-Golay filter struct PMSPP_LIB_DECL SavGolParams { int nL = 15; //!< number of data points on the left of the filtered point int nR = 15; //!< number of data points on the right of the filtered point int m = 4; //!< order of the polynomial to use in the regression analysis leading to the //! Savitzky-Golay coefficients (typically between 2 and 6) int lD = 0; //!< specifies the order of the derivative to extract from the Savitzky-Golay //! smoothing algorithm (for regular smoothing, use 0) bool convolveWithNr = false; //!< set to false for best results SavGolParams(){}; SavGolParams(const SavGolParams &other) : nL{other.nL}, nR{other.nR}, m{other.m}, lD{other.lD}, convolveWithNr{other.convolveWithNr} { } SavGolParams( int nLParam, int nRParam, int mParam, int lDParam, bool convolveWithNrParam) { nL = nLParam; nR = nRParam; m = mParam; lD = lDParam; convolveWithNr = convolveWithNrParam; } void initialize( int nLParam, int nRParam, int mParam, int lDParam, bool convolveWithNrParam) { nL = nLParam; nR = nRParam; m = mParam; lD = lDParam; convolveWithNr = convolveWithNrParam; } void initialize(const SavGolParams &other) { nL = other.nL; nR = other.nR; m = other.m; lD = other.lD; convolveWithNr = other.convolveWithNr; } QString toString() const { return QString("%1;%2;%3;%4;%5") .arg(QString::number(nL)) .arg(QString::number(nR)) .arg(QString::number(m)) .arg(QString::number(lD)) .arg(convolveWithNr ? "true" : "false"); } }; class FilterSavitzkyGolay; typedef std::shared_ptr FilterSavitzkyGolaySPtr; typedef std::shared_ptr FilterSavitzkyGolayCstSPtr; /** * @brief uses Savitsky-Golay filter on trace */ class PMSPP_LIB_DECL FilterSavitzkyGolay : public FilterNameInterface { public: /** Construct a FilterSavitzkyGolay instance using the Savitzky-Golay parameters \param nL number of data point left of the point being filtered \param nR number of data point right of the point being filtered \param m order of the polynomial to use in the regression analysis \param lD order of the derivative to extract \param convolveWithNr set to false */ FilterSavitzkyGolay( int nL, int nR, int m, int lD, bool convolveWithNr = false); FilterSavitzkyGolay(const SavGolParams sav_gol_params); FilterSavitzkyGolay(const QString ¶meters); /** * Copy constructor * * @param other TODO */ FilterSavitzkyGolay(const FilterSavitzkyGolay &other); /** * Destructor */ virtual ~FilterSavitzkyGolay(); FilterSavitzkyGolay &operator=(const FilterSavitzkyGolay &other); Trace &filter(Trace &data_points) const override; SavGolParams getParameters() const; char runFilter(double *y_data_p, double *y_filtered_data_p, int data_point_count) const; void filteredData(std::vector &data); QString name() const override; // Utility function QString toString() const override; protected: void buildFilterFromString(const QString &strBuildParams) override; private: ///// Parameters to configure the Savitzky-Golay filter algorithm SavGolParams m_params; ///// Data used for running the algorithm. //! C array of keys of the Trace pappso_double *m_x; //! C array of raw values of the Trace pappso_double *m_yr; //! C array of filtered values after the computation has been performed pappso_double *m_yf; ///// Functions that actually implement the algorithm. int *ivector(long nl, long nh) const; pappso_double *dvector(long nl, long nh) const; pappso_double **dmatrix(long nrl, long nrh, long ncl, long nch) const; void free_ivector(int *v, long nl, long nh) const; void free_dvector(pappso_double *v, long nl, long nh) const; void free_dmatrix(pappso_double **m, long nrl, long nrh, long ncl, long nch) const; void lubksb(pappso_double **a, int n, int *indx, pappso_double b[]) const; void ludcmp(pappso_double **a, int n, int *indx, pappso_double *d) const; void four1(pappso_double data[], unsigned long nn, int isign); void twofft(pappso_double data1[], pappso_double data2[], pappso_double fft1[], pappso_double fft2[], unsigned long n); void realft(pappso_double data[], unsigned long n, int isign); char convlv(pappso_double data[], unsigned long n, pappso_double respns[], unsigned long m, int isign, pappso_double ans[]); char sgcoeff(pappso_double c[], int np, int nl, int nr, int ld, int m) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/000755 001750 001750 00000000000 14533473271 025730 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp000644 001750 001750 00000041750 14533333502 032031 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp * \date 25/01/2020 * \author Olivier Langella * \brief actually does really run tandem directly on Bruker's data */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "tandemwrapperrun.h" #include #include #include #include #include #include #include "../../exception/exceptioninterrupted.h" #include "../../msfile/msfileaccessor.h" #include "../../msrun/private/timsmsrunreaderms2.h" #include "../../processing/filters/filtertriangle.h" #include "../../processing/filters/filterchargedeconvolution.h" #include "../../msrun/output/mzxmloutput.h" #include "wraptandemresults.h" #include "xtandempresetreader.h" #include "wraptandeminput.h" namespace pappso { TandemWrapperRun::TandemWrapperRun(const QString &tandem_binary, const QString &tmp_dir) { setTandemBinaryPath(tandem_binary); if(!tmp_dir.isEmpty()) { mpa_temporaryDirectory = new QTemporaryDir(tmp_dir + "/xtpwrp"); } else { mpa_temporaryDirectory = new QTemporaryDir(QDir::tempPath() + "/xtpwrp"); } mpa_temporaryDirectory->setAutoRemove(true); if(!mpa_temporaryDirectory->isValid()) { throw pappso::PappsoException( QObject::tr("ERROR: unable to create temporary directory %1\n Please " "check file system permissions") .arg(mpa_temporaryDirectory->path())); } } TandemWrapperRun::~TandemWrapperRun() { if(mpa_temporaryDirectory != nullptr) { delete mpa_temporaryDirectory; } if(m_xtProcess != nullptr) { m_xtProcess->deleteLater(); } } void TandemWrapperRun::setTandemBinaryPath(const QString &tandem_binary_path) { m_tandemBinary = tandem_binary_path; QSettings settings; if(m_tandemBinary.isEmpty()) { m_tandemBinary = settings.value("path/tandem_binary", "/usr/bin/tandem").toString(); } // check for tandem executable m_tandemVersion = checkXtandemVersion(m_tandemBinary); qDebug() << m_tandemVersion; settings.setValue("path/tandem_binary", m_tandemBinary); } const QString TandemWrapperRun::checkXtandemVersion(const QString &tandem_bin_path) { qDebug(); // check tandem path QFileInfo tandem_exe(tandem_bin_path); if(!tandem_exe.exists()) { // dir.path() returns the unique directory path throw pappso::PappsoException( QObject::tr( "X!Tandem software not found at %1.\nPlease check the X!Tandem " "installation on your computer and set tandem.exe path.") .arg(tandem_exe.absoluteFilePath())); } if(!tandem_exe.isReadable()) { // dir.path() returns the unique directory path throw pappso::PappsoException( QObject::tr("Please check permissions on X!Tandem software found at %1 " "(file not readable).") .arg(tandem_exe.absoluteFilePath())); } if(!tandem_exe.isExecutable()) { // dir.path() returns the unique directory path throw pappso::PappsoException( QObject::tr("Please check permissions on X!Tandem software found at %1 " "(file not executable).") .arg(tandem_exe.absoluteFilePath())); } QString version_return; QStringList arguments; arguments << "-v"; QProcess *xt_process = new QProcess(); // hk_process->setWorkingDirectory(QFileInfo(_hardklor_exe).absolutePath()); xt_process->start(tandem_bin_path, arguments); if(!xt_process->waitForStarted()) { throw pappso::PappsoException( QObject::tr("X!Tandem %1 process failed to start") .arg(m_tandemVersion)); } while(xt_process->waitForReadyRead(1000)) { } /* if (!xt_process->waitForFinished(_max_xt_time_ms)) { throw pappso::PappsoException(QObject::tr("can't wait for X!Tandem process to finish : timeout at %1").arg(_max_xt_time_ms)); } */ QByteArray result = xt_process->readAll(); qDebug() << result.constData(); // X! TANDEM Jackhammer TPP (2013.06.15.1 - LabKey, Insilicos, ISB) QRegularExpression parse_version( "(.*) TANDEM ([A-Z,a-z, ]+) \\(([^ ,^\\)]*)(.*)"); qDebug() << parse_version; // Pattern patt = Pattern.compile("X! TANDEM [A-Z]+ \\((.*)\\)", // Pattern.CASE_INSENSITIVE); QRegularExpressionMatch match_parse_version = parse_version.match(result.constData()); if(match_parse_version.hasMatch()) { version_return = QString("X!Tandem %1 %2") .arg(match_parse_version.captured(2)) .arg(match_parse_version.captured(3)); //.join(" "); } else { throw pappso::PappsoException( QObject::tr("This executable %1 may not be a valid X!Tandem software. " "Please check your X!Tandem installation.") .arg(tandem_bin_path)); } QProcess::ExitStatus Status = xt_process->exitStatus(); delete xt_process; if(Status != 0) { // != QProcess::NormalExit throw pappso::PappsoException( QObject::tr("error executing X!Tandem Status != 0 : %1 %2\n%3") .arg(tandem_bin_path) .arg(arguments.join(" ").arg(result.data()))); } qDebug(); return version_return; } void TandemWrapperRun::readyReadStandardOutput() { QString message(m_xtProcess->readAllStandardOutput()); mp_monitor->appendText(message); if(message.toLower().contains("error")) { throw pappso::XtandemError(message); } if(mp_monitor->shouldIstop()) { m_xtProcess->kill(); delete m_xtProcess; m_xtProcess = nullptr; throw pappso::ExceptionInterrupted( QObject::tr("X!Tandem stopped by the user")); } } void TandemWrapperRun::readyReadStandardError() { mp_monitor->appendText(m_xtProcess->readAllStandardError()); if(mp_monitor->shouldIstop()) { m_xtProcess->kill(); delete m_xtProcess; m_xtProcess = nullptr; throw pappso::ExceptionInterrupted( QObject::tr("X!Tandem stopped by the user")); } } void TandemWrapperRun::writeFinalTandemOutput( const QString &tmp_tandem_output, const QString &final_tandem_output, const QString &original_msdata_file_name) { mp_monitor->setStatus(QObject::tr("Rewriting X!Tandem XML result file")); WrapTandemResults wrap_output(final_tandem_output, original_msdata_file_name); wrap_output.setInputParameters("spectrum, timstof MS2 filters", getMs2FilterSuiteString()); wrap_output.setInputParameters("spectrum, mzFormat", QString("%1").arg((int)m_mzFormat)); if(m_convertMzDataUsingSpectrumIndex) { wrap_output.setInputParameters("output, spectrum index", "true"); } else { } if(m_conversionTime != 0) { wrap_output.setInputParameters( "timing, tandemwrapper conversion time (sec)", QString("%1").arg(m_conversionTime / 1000)); } if(wrap_output.readFile(tmp_tandem_output)) { } else { throw pappso::PappsoException( QObject::tr("Error reading %1 X!Tandem output file :\n %2") .arg(tmp_tandem_output) .arg(wrap_output.errorString())); } } void TandemWrapperRun::readTandemPresetFile(const QString &tandem_preset_file) { // get number of threads and centroid parameters from tandem preset XtandemPresetReader preset_handler; if(preset_handler.readFile(tandem_preset_file)) { int ideal_number_of_thread = QThread::idealThreadCount(); int cpu_number = preset_handler.getNumberOfThreads(); qDebug() << " cpu_number=" << cpu_number; // QThreadPool::globalInstance()->setMaxThreadCount(1); if(cpu_number > ideal_number_of_thread) { cpu_number = ideal_number_of_thread; } else { if(cpu_number > 0) { QThreadPool::globalInstance()->setMaxThreadCount(cpu_number); qDebug() << " maxThreadCount=" << QThreadPool::globalInstance()->maxThreadCount(); } } QString ms2_filters_str = preset_handler.getMs2FiltersOptions(); if(!ms2_filters_str.isEmpty()) { msp_ms2FilterSuiteString = std::make_shared(ms2_filters_str); } else { msp_ms2FilterSuiteString = std::make_shared( "chargeDeconvolution|0.02dalton mzExclusion|0.01dalton"); } } else { throw pappso::PappsoException( QObject::tr("Error reading %1 X!Tandem preset file :\n %2") .arg(tandem_preset_file) .arg(preset_handler.errorString())); } } void TandemWrapperRun::wrapTandemInputFile(const QString &tandem_input_file) { // read original tandem input file // store original ms data file name // create new mzXML data file in temporary directory // create new tandem input file based on new mzXML file QString mzxml_data_file_name = mpa_temporaryDirectory->filePath("msdata.mzxml"); QString wrapped_tandem_input = mpa_temporaryDirectory->filePath("input_tandem.xml"); QString wrapped_tandem_output = mpa_temporaryDirectory->filePath("output_tandem.xml"); WrapTandemInput wrap_tandem_input( mzxml_data_file_name, wrapped_tandem_input, wrapped_tandem_output); if(wrap_tandem_input.readFile(tandem_input_file)) { } else { throw pappso::PappsoException( QObject::tr("Error reading %1 X!Tandem input file :\n %2") .arg(tandem_input_file) .arg(wrap_tandem_input.errorString())); } /* * XtandemInputSaxHandler wrap_input( mzxml_data_file_name, wrapped_tandem_input, wrapped_tandem_output); QFile qfile(tandem_input_file); if(!qfile.exists()) { throw pappso::PappsoException( QObject::tr("Tandem input file %1 does not exists") .arg(QFileInfo(tandem_input_file).absoluteFilePath())); } QXmlInputSource xmlInputSource(&qfile); QXmlSimpleReader simplereader; simplereader.setContentHandler(&wrap_input); simplereader.setErrorHandler(&wrap_input); if(simplereader.parse(xmlInputSource)) { } else { throw pappso::PappsoException( QObject::tr("Error reading %1 X!Tandem input file :\n %2") .arg(tandem_input_file) .arg(wrap_input.errorString())); } */ // get number of threads and centroid parameters from tandem preset readTandemPresetFile(wrap_tandem_input.getOriginalTandemPresetFileName()); // convert to mzXML QString original_msdata_file_name = wrap_tandem_input.getOriginalMsDataFileName(); if(convertOrginalMsData2mzXmlData(original_msdata_file_name, mzxml_data_file_name)) { // launch tandem runTandem(wrapped_tandem_input); // rewrite tandem result file writeFinalTandemOutput( wrapped_tandem_output, wrap_tandem_input.getOriginalTandemOutputFileName(), original_msdata_file_name); } else { // launch tandem on original file runTandem(tandem_input_file); } } bool TandemWrapperRun::convertOrginalMsData2mzXmlData(const QString &origin, const QString &target) { qDebug(); pappso::MsFileAccessor origin_access(origin, "runa1"); origin_access.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); origin_access.getMsRunIds(); m_mzFormat = origin_access.getFileFormat(); if(m_mzFormat == pappso::MzFormat::unknown) { throw pappso::PappsoException( QObject::tr("%1 file format not known").arg(origin)); } if(origin_access.getFileFormat() == pappso::MzFormat::brukerTims) { m_convertMzDataUsingSpectrumIndex = true; } if((origin_access.getFileFormat() == pappso::MzFormat::mzML) || (origin_access.getFileFormat() == pappso::MzFormat::brukerTims)) { mp_monitor->setStatus( QObject::tr("Converting %1 to mzXML %2").arg(origin).arg(target)); pappso::MsRunReaderSPtr p_reader; p_reader = origin_access.msRunReaderSPtr(origin_access.getMsRunIds().front()); pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(p_reader.get()); if(tims2_reader != nullptr) { qDebug(); tims2_reader->setMs2BuiltinCentroid(true); if(msp_ms2FilterSuiteString != nullptr) { tims2_reader->setMs2FilterCstSPtr(msp_ms2FilterSuiteString); } qDebug(); } pappso::MzxmlOutput *p_mzxml_output; QFile output_file(target); // qDebug() << " TsvDirectoryWriter::writeSheet " << // QFileInfo(*_p_ofile).absoluteFilePath(); if(output_file.open(QIODevice::WriteOnly)) { QElapsedTimer timer; m_conversionTime = 0; timer.start(); p_mzxml_output = new pappso::MzxmlOutput( *mp_monitor, QTextStream(&output_file).device()); p_mzxml_output->maskMs1(true); p_mzxml_output->setReadAhead(true); p_mzxml_output->write(p_reader.get()); p_mzxml_output->close(); delete p_mzxml_output; m_conversionTime = timer.elapsed(); mp_monitor->setStatus(QObject::tr("Conversion finished in %1 seconds") .arg(m_conversionTime / 1000)); } else { throw pappso::PappsoException( QObject::tr("unable to write into %1 mzXML output file") .arg(target)); } qDebug(); return true; } else { // other mz data formats return false; } return true; } void TandemWrapperRun::run(UiMonitorInterface &monitor, const QString &tandem_input_file) { mp_monitor = &monitor; wrapTandemInputFile(tandem_input_file); mp_monitor = nullptr; } void TandemWrapperRun::runTandem(const QString &tandem_input_file) { if(mp_monitor->shouldIstop()) { throw pappso::ExceptionInterrupted( QObject::tr("X!Tandem stopped by the user processing on file %1") .arg(tandem_input_file)); } m_xtProcess = new QProcess(); QStringList arguments; qDebug() << m_tandemBinary << " " << m_xtProcess->arguments(); arguments << tandem_input_file; // hk_process->setWorkingDirectory(QFileInfo(_hardklor_exe).absolutePath()); m_xtProcess->start(m_tandemBinary, arguments); qDebug() << m_tandemBinary << " " << m_xtProcess->arguments(); connect(m_xtProcess, &QProcess::readyReadStandardOutput, this, &TandemWrapperRun::readyReadStandardOutput); connect(m_xtProcess, &QProcess::readyReadStandardError, this, &TandemWrapperRun::readyReadStandardError); qDebug() << m_tandemBinary << " " << m_xtProcess->arguments(); mp_monitor->setStatus(QObject::tr("Running X!Tandem")); if(!m_xtProcess->waitForStarted()) { throw pappso::PappsoException( QObject::tr("X!Tandem process failed to start")); } qDebug() << m_tandemBinary << " " << m_xtProcess->arguments(); while(m_xtProcess->waitForFinished(m_maxTandemRunTimeMs) == false) { //_p_monitor->appendText(xt_process->readAll().data()); // data.append(xt_process->readAll()); if(mp_monitor->shouldIstop()) { m_xtProcess->kill(); delete m_xtProcess; m_xtProcess = nullptr; throw pappso::ExceptionInterrupted( QObject::tr("X!Tandem stopped by the user processing on file %1") .arg(tandem_input_file)); } } QProcess::ExitStatus Status = m_xtProcess->exitStatus(); delete m_xtProcess; if(Status != QProcess::ExitStatus::NormalExit) { // != QProcess::NormalExit throw pappso::PappsoException( QObject::tr("error executing X!Tandem Status != 0 : %1") .arg(m_tandemBinary)); } m_xtProcess = nullptr; } QString TandemWrapperRun::getMs2FilterSuiteString() const { if(msp_ms2FilterSuiteString == nullptr) return ""; return msp_ms2FilterSuiteString.get()->toString(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h000644 001750 001750 00000011152 14514537340 031474 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/tandemwrapperrun.h * \date 25/01/2020 * \author Olivier Langella * \brief actually does really run tandem directly on Bruker's data */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include #include #include #include #include #include "../../exportinmportconfig.h" #include "../../processing/filters/filtersuitestring.h" #include "../uimonitor/uimonitorinterface.h" #include "../../pappsoexception.h" #include "../../types.h" /** * @todo write docs */ namespace pappso { class XtandemError : public PappsoException { public: XtandemError(const QString &message) throw() : PappsoException(message) { } virtual QException * clone() const override { return new XtandemError(*this); } }; class PMSPP_LIB_DECL TandemWrapperRun : public QObject { Q_OBJECT public: /** @brief prepare a tandem run * @param tandem_binary file path to tandem.exe if not set, a default value is * given in QSettings * @param tmp_dir temporary directory, where to write mzXML file conversion if * not set, a default value is given in QSettings */ TandemWrapperRun(const QString &tandem_binary, const QString &tmp_dir); /** @brief run a tandem job * * The tandem input file *should* contain an additional input parameter called * "spectrum, timstof MS2 filters". The value of this parameters *must* * contain a string describing the FilterSuiteString to apply on TimsTOF MS2. * A default value of "chargeDeconvolution|0.02dalton" is recommended for this * additional tandem input parameter * * @param monitor user interface monitor * @param tandem_input_file tandem xml input file */ void run(UiMonitorInterface &monitor, const QString &tandem_input_file); void readTandemPresetFile(const QString &tandem_preset_file); /** @brief gets the list of filters used on MS2 spectrum * * @return string describing filters and associated parameters */ QString getMs2FilterSuiteString() const; /** * Destructor */ ~TandemWrapperRun(); signals: void tandemProgressMessage(QString message); private: void setTandemBinaryPath(const QString &tandem_binary_path); const QString checkXtandemVersion(const QString &tandem_bin_path); void wrapTandemInputFile(const QString &tandem_input_file); bool convertOrginalMsData2mzXmlData(const QString &origin, const QString &target); /** @brief run a tandem job * @param tandem_input_file tandem xml input file */ void runTandem(const QString &tandem_input_file); /** @brief tandem output modification * tandem output is modified to contain the Bruker's file as input and * centroidization parameters * @param tmp_tandem_output raw tandem output filename * @param final_tandem_output final destination file for modified tandem * output */ void writeFinalTandemOutput(const QString &tmp_tandem_output, const QString &final_tandem_output, const QString &original_msdata_file_name); private slots: void readyReadStandardOutput(); void readyReadStandardError(); private: UiMonitorInterface *mp_monitor; QString m_tandemBinary; QString m_tandemVersion; QString m_tmpDir; int m_maxTandemRunTimeMs = 1000; // If msecs is -1, this function will not time out. QProcess *m_xtProcess = nullptr; std::shared_ptr msp_ms2FilterSuiteString = nullptr; QTemporaryDir *mpa_temporaryDirectory = nullptr; bool m_convertMzDataUsingSpectrumIndex = false; pappso::MzFormat m_mzFormat = pappso::MzFormat::unknown; qint64 m_conversionTime = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp000644 001750 001750 00000012524 14526455546 031671 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/wraptandeminput.cpp * \date 13/11/2021 * \author Olivier Langella * \brief rewrites tandem xml input file with temporary files */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "wraptandeminput.h" #include #include "../../pappsoexception.h" namespace pappso { WrapTandemInput::WrapTandemInput(const QString &destinationMzXmlFile, const QString &destinationTandemInputFile, const QString &destinationTandemOutputFile) : m_destinationTandemInputFile(destinationTandemInputFile) { m_destinationMzXmlFileName = destinationMzXmlFile; m_destinationTandemOutputFileName = destinationTandemOutputFile; m_destinationTandemInputFileName = QFileInfo(destinationTandemInputFile).absoluteFilePath(); if(destinationTandemInputFile.isEmpty()) { throw pappso::PappsoException( QObject::tr("ERROR: X!Tandem input file path is empty")); } if(!m_destinationTandemInputFile.open(QIODevice::WriteOnly)) { throw pappso::PappsoException( QObject::tr("ERROR: unable to open %1 tandem output file for write") .arg(destinationTandemInputFile)); } m_writerXmlTandemInput.setDevice(&m_destinationTandemInputFile); m_writerXmlTandemInput.setAutoFormatting(true); m_writerXmlTandemInput.writeStartDocument("1.0"); } WrapTandemInput::~WrapTandemInput() { m_destinationTandemInputFile.close(); } void WrapTandemInput::readStream() { qDebug(); if(m_qxmlStreamReader.readNextStartElement()) { if(m_qxmlStreamReader.name().toString() == "bioml") { cloneStartElement(m_writerXmlTandemInput); qDebug(); while(m_qxmlStreamReader.readNextStartElement()) { // qDebug() << m_qxmlStreamReader.name(); // read_note(); cloneStartElement(m_writerXmlTandemInput); QString type = m_qxmlStreamReader.attributes().value("type").toString(); QString label = m_qxmlStreamReader.attributes().value("label").toString(); if((type == "input") && (label == "spectrum, path")) { // m_originMzDataFileName = m_qxmlStreamReader.readElementText(); m_writerXmlTandemInput.writeCharacters( m_destinationMzXmlFileName); // m_qxmlStreamReader.skipCurrentElement(); } else if((type == "input") && (label == "output, path")) { // m_originTandemOutpuFileName = m_qxmlStreamReader.readElementText(); m_writerXmlTandemInput.writeCharacters( m_destinationTandemOutputFileName); // m_qxmlStreamReader.skipCurrentElement(); } // list path, default parameters else if((type == "input") && (label == "list path, default parameters")) { ///gorgone/pappso/tmp/xtpcpp.AjyZGg/Lumos_trypsin_rev_camC_oxM_10ppm_HCDOT_12102017CH.xml m_originTandemPresetFileName = m_qxmlStreamReader.readElementText(); m_writerXmlTandemInput.writeCharacters( m_originTandemPresetFileName); } else { m_writerXmlTandemInput.writeCharacters( m_qxmlStreamReader.readElementText()); } m_writerXmlTandemInput.writeEndElement(); } } else { m_qxmlStreamReader.raiseError( QObject::tr("Not an X!Tandem input file")); m_qxmlStreamReader.skipCurrentElement(); } } m_writerXmlTandemInput.writeEndDocument(); m_destinationTandemInputFile.close(); qDebug(); } const QString & WrapTandemInput::getOriginalMsDataFileName() const { return m_originMzDataFileName; } const QString & WrapTandemInput::getOriginalTandemOutputFileName() const { return m_originTandemOutpuFileName; } const QString & WrapTandemInput::getOriginalTandemPresetFileName() const { return m_originTandemPresetFileName; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/wraptandeminput.h000644 001750 001750 00000004312 14346367014 031322 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/wraptandeminput.h * \date 13/11/2021 * \author Olivier Langella * \brief rewrites tandem xml input file with temporary files */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include #include #include "../xml/xmlstreamreaderinterface.h" /** * @todo write docs */ namespace pappso { /** * @todo write docs */ class WrapTandemInput : public XmlStreamReaderInterface { public: /** * Default constructor */ WrapTandemInput(const QString &destinationMzXmlFile, const QString &destinationTandemInputFile, const QString &destinationTandemOutputFile); /** * Destructor */ virtual ~WrapTandemInput(); const QString &getOriginalMsDataFileName() const; const QString &getOriginalTandemOutputFileName() const; const QString &getOriginalTandemPresetFileName() const; protected: virtual void readStream() override; private: QString m_destinationMzXmlFileName; QString m_originMzDataFileName; QString m_destinationTandemInputFileName; QString m_originTandemPresetFileName; QString m_originTandemOutpuFileName; QString m_destinationTandemOutputFileName; QFile m_destinationTandemInputFile; QXmlStreamWriter m_writerXmlTandemInput; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/wraptandemresults.cpp000644 001750 001750 00000016375 14526455546 032243 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/wraptandemresults.cpp * \date 13/11/2021 * \author Olivier Langella * \brief rewrites tandem xml output file with temporary files */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "wraptandemresults.h" #include #include "../../pappsoexception.h" namespace pappso { WrapTandemResults::WrapTandemResults(const QString &final_tandem_output, const QString &original_msdata_file_name) : m_destinationTandemOutputFile(final_tandem_output) { qDebug() << final_tandem_output; m_originalMsDataFileName = QFileInfo(original_msdata_file_name).absoluteFilePath(); if(!m_destinationTandemOutputFile.open(QIODevice::WriteOnly)) { throw pappso::PappsoException( QObject::tr("ERROR: unable to open %1 to write XML output") .arg(final_tandem_output)); } m_writerXmlTandemOutput.setDevice(&m_destinationTandemOutputFile); m_writerXmlTandemOutput.writeStartDocument("1.0"); m_writerXmlTandemOutput.setAutoFormatting(true); } WrapTandemResults::~WrapTandemResults() { } void WrapTandemResults::setInputParameters(const QString &label_name_attribute, const QString &input_value) { m_mapTandemInputParameters.insert( std::pair(label_name_attribute, input_value)); } void WrapTandemResults::process_group_note() { cloneStartElement(m_writerXmlTandemOutput); while(m_qxmlStreamReader.readNext() && !m_qxmlStreamReader.isEndElement()) { if(m_qxmlStreamReader.isStartElement()) { QString type = m_qxmlStreamReader.attributes().value("type").toString(); QString label = m_qxmlStreamReader.attributes().value("label").toString(); qDebug() << "type=" << type << " label=" << label; // qDebug() << "XtandemParamSaxHandler::endElement_note begin " << // /tmp/tandemwrapper-IehrEL/msdata.mzxml if(label == "spectrum, path") { ///gorgone/pappso/jouy/raw/2019_Lumos/20191222_107_Juste/20191222_18_EF1.mzXML // m_originMzDataFileName = m_currentText; // p_writeXmlTandemOutput->writeCharacters(m_destinationMzXmlFileName); m_writerXmlTandemOutput.writeStartElement("note"); m_writerXmlTandemOutput.writeAttributes( m_qxmlStreamReader.attributes()); m_writerXmlTandemOutput.writeCharacters(m_originalMsDataFileName); m_writerXmlTandemOutput.writeEndElement(); for(auto pair_input : m_mapTandemInputParameters) { m_writerXmlTandemOutput.writeStartElement("note"); m_writerXmlTandemOutput.writeAttribute("type", "input"); m_writerXmlTandemOutput.writeAttribute("label", pair_input.first); m_writerXmlTandemOutput.writeCharacters(pair_input.second); m_writerXmlTandemOutput.writeEndElement(); } m_qxmlStreamReader.skipCurrentElement(); } else if(label == "output, path") { ///tmp/tandemwrapper-sSGxtE/output_tandem.xml m_writerXmlTandemOutput.writeStartElement("note"); m_writerXmlTandemOutput.writeAttributes( m_qxmlStreamReader.attributes()); m_writerXmlTandemOutput.writeCharacters( QFileInfo(m_destinationTandemOutputFile).absoluteFilePath()); m_writerXmlTandemOutput.writeEndElement(); m_qxmlStreamReader.skipCurrentElement(); } else { cloneElement(m_writerXmlTandemOutput); } } } m_writerXmlTandemOutput.writeEndElement(); } void WrapTandemResults::readStream() { qDebug(); if(m_qxmlStreamReader.readNextStartElement()) { if(m_qxmlStreamReader.name().toString() == "bioml") { cloneStartElement(m_writerXmlTandemOutput); qDebug(); while(m_qxmlStreamReader.readNextStartElement()) { if(m_qxmlStreamReader.name().toString() == "group") { QString type = m_qxmlStreamReader.attributes().value("type").toString(); if(type == "model") { cloneElement(m_writerXmlTandemOutput); } else if(type == "parameters") { QString label = m_qxmlStreamReader.attributes() .value("label") .toString(); if(label == "performance parameters") { cloneElement(m_writerXmlTandemOutput); } else if(label == "input parameters") { process_group_note(); // cloneElement(m_writerXmlTandemOutput); } else if(label == "unused input parameters") { cloneElement(m_writerXmlTandemOutput); } else { m_qxmlStreamReader.skipCurrentElement(); } } } else { qDebug() << m_qxmlStreamReader.name(); // read_note(); cloneStartElement(m_writerXmlTandemOutput); m_writerXmlTandemOutput.writeCharacters( m_qxmlStreamReader.readElementText()); m_writerXmlTandemOutput.writeEndElement(); } } } else { m_qxmlStreamReader.raiseError( QObject::tr("Not an X!Tandem result file")); m_qxmlStreamReader.skipCurrentElement(); } } m_writerXmlTandemOutput.writeEndDocument(); m_destinationTandemOutputFile.close(); qDebug(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/wraptandemresults.h000644 001750 001750 00000003741 14346367014 031671 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/wraptandemresults.h * \date 13/11/2021 * \author Olivier Langella * \brief rewrites tandem xml output file with temporary files */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include #include #include "../xml/xmlstreamreaderinterface.h" namespace pappso { /** * @todo write docs */ class WrapTandemResults : public XmlStreamReaderInterface { public: /** * Default constructor */ WrapTandemResults(const QString &final_tandem_output, const QString &original_msdata_file_name); /** * Destructor */ virtual ~WrapTandemResults(); void setInputParameters(const QString &label_name_attribute, const QString &input_value); protected: virtual void readStream() override; private: void process_group_note(); private: QFile m_destinationTandemOutputFile; QXmlStreamWriter m_writerXmlTandemOutput; QString m_originalMsDataFileName; std::map m_mapTandemInputParameters; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp000644 001750 001750 00000011204 14526455546 032507 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp * \date 06/02/2020 * \author Olivier Langella * \brief read tandem preset file to get centroid parameters and number of * threads */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "xtandempresetreader.h" #include "../../pappsoexception.h" #include "../../precision.h" namespace pappso { XtandemPresetReader::XtandemPresetReader() { } XtandemPresetReader::~XtandemPresetReader() { } void XtandemPresetReader::read_note() { // /gorgone/pappso/jouy/users/Celine/2019_Lumos/20191222_107_Juste_APD/metapappso_condor/test_run/20191222_18_EF1_third_step_test_condor_22janv.xml if(m_qxmlStreamReader.name().toString() != "note") { m_qxmlStreamReader.skipCurrentElement(); return; } Q_ASSERT(m_qxmlStreamReader.name().toString() == "note"); QString label; m_countNote++; if((m_qxmlStreamReader.attributes().hasAttribute("type")) && (m_qxmlStreamReader.attributes().value("type").toString() == "input")) { if(m_qxmlStreamReader.attributes().hasAttribute("label")) { label = m_qxmlStreamReader.attributes().value("label").toString(); } } if(label.isEmpty()) { } else { if(label == "spectrum, timstof MS2 filters") { } else if(label == "spectrum, threads") { m_threads = m_qxmlStreamReader.readElementText().toInt(); return; } else if(label == "spectrum, fragment monoisotopic mass error units") { m_ms2precisionUnit = PrecisionUnit::dalton; if(m_qxmlStreamReader.readElementText().trimmed().toLower() == "ppm") { m_ms2precisionUnit = PrecisionUnit::ppm; } return; } else if(label == "spectrum, fragment monoisotopic mass error") { m_ms2precisionValue = m_qxmlStreamReader.readElementText().toDouble(); return; } } m_qxmlStreamReader.skipCurrentElement(); // qDebug() << "end "; // } int XtandemPresetReader::getNumberOfThreads() const { return m_threads; } const QString XtandemPresetReader::getMs2FiltersOptions() const { QString filter_suite; PrecisionPtr precision = PrecisionFactory::getPrecisionPtrInstance( m_ms2precisionUnit, m_ms2precisionValue); QString charge_decon_filter = QString("chargeDeconvolution|%1") .arg(precision->toString().replace(" ", "")); PrecisionPtr precision_exclu = PrecisionFactory::getPrecisionPtrInstance( m_ms2precisionUnit, m_ms2precisionValue / 2); QString mz_exclusion_filter = QString("mzExclusion|%1").arg(precision_exclu->toString().replace(" ", "")); filter_suite = charge_decon_filter + " " + mz_exclusion_filter; return filter_suite; } void XtandemPresetReader::readStream() { qDebug(); m_countNote = 0; m_threads = -1; m_ms2precisionUnit = PrecisionUnit::dalton; m_ms2precisionValue = -1; if(m_qxmlStreamReader.readNextStartElement()) { if(m_qxmlStreamReader.name().toString() == "bioml") { qDebug(); while(m_qxmlStreamReader.readNextStartElement()) { // qDebug() << m_qxmlStreamReader.name(); read_note(); } } else { m_qxmlStreamReader.raiseError( QObject::tr("Not an X!Tandem preset file")); m_qxmlStreamReader.skipCurrentElement(); } } if(m_threads == -1) { qDebug(); m_qxmlStreamReader.raiseError(QObject::tr("Not an X!Tandem preset file")); } qDebug(); } int XtandemPresetReader::getCountNote() const { return m_countNote; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h000644 001750 001750 00000003564 14346367014 032156 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/tandemwrapper/xtandempresetreader.h * \date 06/02/2020 * \author Olivier Langella * \brief read tandem preset file to get centroid parameters and number of * threads */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include #include "../../types.h" #include "../xml/xmlstreamreaderinterface.h" /** * @todo write docs */ namespace pappso { class XtandemPresetReader : public XmlStreamReaderInterface { public: /** * Default constructor */ XtandemPresetReader(); /** * Destructor */ virtual ~XtandemPresetReader(); int getNumberOfThreads() const; const QString getMs2FiltersOptions() const; int getCountNote() const; protected: virtual void readStream() override; private: void read_note(); private: int m_countNote = -1; int m_threads = -1; PrecisionUnit m_ms2precisionUnit = PrecisionUnit::dalton; double m_ms2precisionValue = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/uimonitor/000755 001750 001750 00000000000 14533473271 025104 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/uimonitor/uimonitorinterface.h000644 001750 001750 00000005744 14346367014 031174 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/uimonitor/uimonitorinterface.h * \date 14/5/2021 * \author Olivier Langella * \brief generic interface to monitor any long process * A long process needs to be interrupted by the user and to report progress *while running. This interface is used by long process in this library. **/ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include "../../exportinmportconfig.h" namespace pappso { /** * @todo pure virtual user interface class to monitor any long process * it contains : * - title, status, progress messages * - callback functions to interrupt long process * it does not contains any error messages functions : use * pappso::ExceptionInterrupted to handle this * */ class PMSPP_LIB_DECL UiMonitorInterface { public: /** @brief should the procces be stopped ? * If true, then cancel process * Use this function at strategic point of your process in order to interrupt * it cleanly * Implementation **must** take care of thread resistance if implemented */ virtual bool shouldIstop() = 0; /** @brief use it if the number of steps is known in an algorithm * the total number of steps is usefull to report to the user a progress * message in percents or with a progress bar * @param total_number_of_steps the total number of steps */ virtual void setTotalSteps(std::size_t total_number_of_steps) { m_totalSteps = total_number_of_steps; }; /** @brief count steps * report when a step is computed in an algorithm */ virtual void count() = 0; /** @brief current kind of process running * @param title process title */ virtual void setTitle(const QString &title) = 0; /** @brief current status of the process * @param status status message */ virtual void setStatus(const QString &status) = 0; /** @brief append a text to a long report * @param text string to append in a long report */ virtual void appendText(const QString &text) = 0; protected: std::size_t m_totalSteps = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/uimonitor/uimonitortext.cpp000644 001750 001750 00000004377 14526455546 030564 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/uimonitor/uimonitortext.cpp * \date 14/5/2021 * \author Olivier Langella * \brief simle text monitor implementation of the User Interface Monitor **/ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include #include "uimonitortext.h" using namespace pappso; UiMonitorText::UiMonitorText(QTextStream &output_stream) : m_outputStream(output_stream) { } UiMonitorText::~UiMonitorText() { } bool pappso::UiMonitorText::shouldIstop() { // by defaut not interruptible return false; } void pappso::UiMonitorText::setTitle(const QString &title) { m_outputStream << title << Qt::endl; m_outputStream.flush(); } void pappso::UiMonitorText::setStatus(const QString &status) { m_outputStream << status << Qt::endl; m_outputStream.flush(); } void pappso::UiMonitorText::count() { m_count++; if(m_count <= m_totalSteps) { m_outputStream << m_count << " "; } else { m_outputStream << QObject::tr("%1 on %2").arg(m_count).arg(m_totalSteps) << " "; } m_outputStream.flush(); } void pappso::UiMonitorText::appendText(const QString &text) { m_outputStream << text; m_outputStream.flush(); } void pappso::UiMonitorText::setTotalSteps(std::size_t total_number_of_steps) { UiMonitorInterface::setTotalSteps(total_number_of_steps); m_count = 0; } libpappsomspp-0.9.20/src/pappsomspp/processing/uimonitor/uimonitortext.h000644 001750 001750 00000004362 14346367014 030213 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/uimonitor/uimonitortext.h * \date 14/5/2021 * \author Olivier Langella * \brief simle text monitor implementation of the User Interface Monitor **/ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "uimonitorinterface.h" #include namespace pappso { /** * @todo simple text monitor using text stream */ class PMSPP_LIB_DECL UiMonitorText : public UiMonitorInterface { public: /** * Default constructor */ UiMonitorText(QTextStream &output_stream); /** * Destructor */ ~UiMonitorText(); virtual bool shouldIstop() override; /** @brief count steps * report when a step is computed in an algorithm */ virtual void count() override; /** @brief current kind of process running * @param title process title */ virtual void setTitle(const QString &title) override; /** @brief current status of the process * @param status status message */ virtual void setStatus(const QString &status) override; /** @brief append a text to a long report * @param text string to append in a long report */ virtual void appendText(const QString &text) override; virtual void setTotalSteps(std::size_t total_number_of_steps); protected: QTextStream &m_outputStream; std::size_t m_count = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/uimonitor/uimonitortextpercent.cpp000644 001750 001750 00000004163 14526455546 032136 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/uimonitor/uimonitortextpercent.cpp * \date 25/9/2021 * \author Olivier Langella * \brief simle text monitor implementation of the User Interface Monitor *displaying percent progression **/ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "uimonitortextpercent.h" #include using namespace pappso; UiMonitorTextPercent::UiMonitorTextPercent(QTextStream &output_stream) : UiMonitorText(output_stream) { m_unit = -1; m_totalSteps = 1; } UiMonitorTextPercent::~UiMonitorTextPercent() { } void pappso::UiMonitorTextPercent::setTotalSteps(std::size_t total_number_of_steps) { if(m_count > 0) { m_outputStream << Qt::endl; m_outputStream.flush(); } UiMonitorText::setTotalSteps(total_number_of_steps); m_unit = -1; if(m_totalSteps == 0) { m_totalSteps = -1; } } void pappso::UiMonitorTextPercent::count() { m_count++; if(m_count <= m_totalSteps) { int unit = (int)(((float)m_count / (float)m_totalSteps) * 10); // qDebug() << unit; if(unit > m_unit) { m_outputStream << (unit * 10) << "% "; m_outputStream.flush(); m_unit = unit; } } } libpappsomspp-0.9.20/src/pappsomspp/processing/uimonitor/uimonitortextpercent.h000644 001750 001750 00000003447 14346367014 031577 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/uimonitor/uimonitortextpercent.h * \date 25/9/2021 * \author Olivier Langella * \brief simle text monitor implementation of the User Interface Monitor *displaying percent progression **/ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "uimonitorinterface.h" #include "uimonitortext.h" #include namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL UiMonitorTextPercent : public UiMonitorText { public: /** * Default constructor */ UiMonitorTextPercent(QTextStream &output_stream); /** * Destructor */ virtual ~UiMonitorTextPercent(); /** @brief count steps * report when a step is computed in an algorithm */ virtual void count() override; virtual void setTotalSteps(std::size_t total_number_of_steps); protected: int m_unit; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/uimonitor/uimonitorvoid.h000644 001750 001750 00000003476 14346367014 030175 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/uimonitor/uimonitorvoid.h * \date 14/5/2021 * \author Olivier Langella * \brief simle monitor that does nothing **/ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "uimonitorinterface.h" #include namespace pappso { /** * @todo nothing monitor to save CPU and memory if needed */ class PMSPP_LIB_DECL UiMonitorVoid : public UiMonitorInterface { public: virtual bool shouldIstop() override { return false; }; virtual void setTotalSteps(std::size_t total_number_of_steps [[maybe_unused]]) override{}; virtual void count() override{}; virtual void setTitle(const QString &title [[maybe_unused]]) override{}; virtual void setStatus(const QString &status [[maybe_unused]]) override{}; virtual void appendText(const QString &text [[maybe_unused]]) override{}; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/xml/000755 001750 001750 00000000000 14533473271 023657 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp000644 001750 001750 00000011436 14526455546 031457 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/xml/xmlstreamreaderinterface.cpp * \date 12/11/2021 * \author Olivier Langella * \brief common interface to read all XML streams containing convenient * functions */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "xmlstreamreaderinterface.h" #include #include #include using namespace pappso; XmlStreamReaderInterface::XmlStreamReaderInterface() { } XmlStreamReaderInterface::~XmlStreamReaderInterface() { } QString pappso::XmlStreamReaderInterface::errorString() const { if(m_qxmlStreamReader.errorString().isEmpty()) return ""; else { QString error = QObject::tr("ERROR at line %1 column %2\n%3") .arg(m_qxmlStreamReader.lineNumber()) .arg(m_qxmlStreamReader.columnNumber()) .arg(m_qxmlStreamReader.errorString()); return error; } } bool pappso::XmlStreamReaderInterface::readFile(const QString &fileName) { QFile file(fileName); if(!file.open(QFile::ReadOnly | QFile::Text)) { m_qxmlStreamReader.raiseError( QObject::tr("Cannot read file %1 : %2") .arg(QFileInfo(fileName).absoluteFilePath()) .arg(m_qxmlStreamReader.errorString())); return false; } if(read(&file)) { file.close(); return true; } else { file.close(); m_qxmlStreamReader.raiseError( QObject::tr("Error reading file %1 : %2") .arg(QFileInfo(fileName).absoluteFilePath()) .arg(m_qxmlStreamReader.errorString())); return false; } } bool pappso::XmlStreamReaderInterface::read(QIODevice *device) { m_qxmlStreamReader.setDevice(device); m_qxmlStreamReader.setNamespaceProcessing(true); readStream(); return !m_qxmlStreamReader.error(); } bool pappso::XmlStreamReaderInterface::read(const QString &xml_content) { m_qxmlStreamReader.clear(); m_qxmlStreamReader.addData(xml_content); m_qxmlStreamReader.setNamespaceProcessing(true); readStream(); return !m_qxmlStreamReader.error(); } void pappso::XmlStreamReaderInterface::cloneStartElement( QXmlStreamWriter &output) const { output.writeStartElement(m_qxmlStreamReader.name().toString()); for(auto declaration : m_qxmlStreamReader.namespaceDeclarations()) { output.writeNamespace(declaration.namespaceUri().toString(), declaration.prefix().toString()); } output.writeAttributes(m_qxmlStreamReader.attributes()); } void pappso::XmlStreamReaderInterface::cloneElement(QXmlStreamWriter &output) { qDebug() << " name=" << m_qxmlStreamReader.name(); output.writeStartElement(m_qxmlStreamReader.namespaceUri().toString(), m_qxmlStreamReader.name().toString()); output.writeAttributes(m_qxmlStreamReader.attributes()); qDebug() << m_qxmlStreamReader.name(); while(m_qxmlStreamReader.readNext() && !m_qxmlStreamReader.isEndElement()) { cloneNode(output); if(output.hasError()) { qDebug(); m_qxmlStreamReader.raiseError(QObject::tr("Error in output stream")); } } qDebug(); output.writeEndElement(); } void pappso::XmlStreamReaderInterface::cloneNode(QXmlStreamWriter &output) { qDebug(); if(m_qxmlStreamReader.isCharacters()) { qDebug() << "isCharacters " << m_qxmlStreamReader.text(); if((m_qxmlStreamReader.text().toString() == "\n") || (m_qxmlStreamReader.text().toString() == "\n\t")) { // xml cleaner } else { output.writeCharacters( m_qxmlStreamReader.text().toString().trimmed()); } } else if(m_qxmlStreamReader.isEndElement()) { qDebug() << "isEndElement"; output.writeEndElement(); } else if(m_qxmlStreamReader.isStartElement()) { qDebug() << "isStartElement"; cloneElement(output); } else { } qDebug(); } libpappsomspp-0.9.20/src/pappsomspp/processing/xml/xmlstreamreaderinterface.h000644 001750 001750 00000003722 14346367014 031113 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/xml/xmlstreamreaderinterface.h * \date 12/11/2021 * \author Olivier Langella * \brief common interface to read all XML streams containing convenient * functions */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include #include #include #include "../../exportinmportconfig.h" namespace pappso { /** * @brief convenient xml reader helper */ class PMSPP_LIB_DECL XmlStreamReaderInterface { public: /** * Default constructor */ XmlStreamReaderInterface(); /** * Destructor */ virtual ~XmlStreamReaderInterface(); virtual bool readFile(const QString &fileName); bool read(QIODevice *device); bool read(const QString &xml_content); QString errorString() const; protected: virtual void readStream() = 0; void cloneStartElement(QXmlStreamWriter &output) const; void cloneElement(QXmlStreamWriter &output); void cloneNode(QXmlStreamWriter &output); protected: QXmlStreamReader m_qxmlStreamReader; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/000755 001750 001750 00000000000 14533473271 024655 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/experimentalspectrum.cpp000644 001750 001750 00000020217 14531114113 031624 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/experimentalspectrum.cpp * \date 08/11/2023 * \author Olivier Langella * \brief transform a spectrum to SpecGlob spectra * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "experimentalspectrum.h" #include #include "../../pappsoexception.h" #include namespace pappso { namespace specglob { ExperimentalSpectrum::ExperimentalSpectrum( const pappso::QualifiedMassSpectrum &qmass_spectrum, pappso::PrecisionPtr precision_ptr) : std::vector() { m_qualifiedMassSpectrum = qmass_spectrum; m_precisionPtr = precision_ptr; createSymetricPeakList(); } ExperimentalSpectrum::ExperimentalSpectrum(const ExperimentalSpectrum &other) : std::vector(other) { m_targetMzSum = other.m_targetMzSum; m_qualifiedMassSpectrum = other.m_qualifiedMassSpectrum; m_precisionPtr = other.m_precisionPtr; } ExperimentalSpectrum::~ExperimentalSpectrum() { } void ExperimentalSpectrum::createSymetricPeakList() { bool ok; auto charge = m_qualifiedMassSpectrum.getPrecursorCharge(&ok); if(!ok) { throw pappso::PappsoException( QObject::tr("precursor charge is not defined in spectrum %1") .arg(m_qualifiedMassSpectrum.getMassSpectrumId().getNativeId())); } double mz_prec = m_qualifiedMassSpectrum.getPrecursorMz(&ok); if(!ok) { throw pappso::PappsoException( QObject::tr("precursor m/z is not defined in spectrum %1") .arg(m_qualifiedMassSpectrum.getMassSpectrumId().getNativeId())); } // compute precursor mass given the charge state m_precursorMass = mz_prec * (double)charge; m_precursorMass -= pappso::MHPLUS * (double)charge; m_targetMzSum = m_precursorMass + pappso::MHPLUS + pappso::MHPLUS; std::vector mz_list = m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->xValues(); std::size_t mz_current_indice = 0; auto itend = m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->end(); for(std::vector::const_iterator it = m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->begin(); it != itend; it++) { double current_mz = it->x; double symetric_current_mz = getSymetricMz(current_mz); auto itpair_symetric = findMz(symetric_current_mz); if(itpair_symetric != itend) { // there is a counterpart push_back({ExperimentalSpectrumDataPointType::both, it->x, 0}); qDebug() << "current_mz=" << current_mz << " both"; } else { // there is no counterpart push_back({ExperimentalSpectrumDataPointType::native, it->x, 0}); push_back({ExperimentalSpectrumDataPointType::symetric, symetric_current_mz, 0}); qDebug() << "current_mz=" << current_mz << " symetrics"; } mz_current_indice++; } // we add a peak with NT mass (1.0078) if it is not detected, to give better // chance to align the first amino acid in b if it is present if(findMz(pappso::MPROTIUM) == itend) { push_back( {ExperimentalSpectrumDataPointType::synthetic, pappso::MPROTIUM, 0}); } // We add the B peak corresponding to the precursor (complete peptide) double precusorBion = m_targetMzSum - pappso::MASSH2O - pappso::MPROTIUM; if(findMz(precusorBion) == itend) { push_back( {ExperimentalSpectrumDataPointType::synthetic, precusorBion, 0}); } std::sort(begin(), end(), [](const ExperimentalSpectrumDataPoint &a, const ExperimentalSpectrumDataPoint &b) { return (a.symetric_mz < b.symetric_mz); }); std::size_t i = 0; for(auto &data_point : *this) { data_point.indice = i; i++; } } std::vector::const_iterator ExperimentalSpectrum::findMz(double mz) { pappso::MzRange mz_range(mz, m_precisionPtr); auto itend = m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->end(); auto it = findFirstEqualOrGreaterX( m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->begin(), m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->end(), mz_range.lower()); if(it != itend) { if(it->x <= mz_range.upper()) { return it; } } return itend; } double ExperimentalSpectrum::getTargetMzSum() const { return m_targetMzSum; } std::vector ExperimentalSpectrum::getMassList() const { std::vector mass_list; for(const ExperimentalSpectrumDataPoint &n : *this) { mass_list.push_back(n.symetric_mz); } return mass_list; } double ExperimentalSpectrum::getSymetricMz(double mz) const { return m_targetMzSum - mz; } std::vector ExperimentalSpectrum::getMassList(ExperimentalSpectrumDataPointType type) const { std::vector mass_list; for(const ExperimentalSpectrumDataPoint &n : *this) { if(n.type == type) mass_list.push_back(n.symetric_mz); } return mass_list; } QString ExperimentalSpectrum::toString() const { QStringList all_element; for(const ExperimentalSpectrumDataPoint &n : *this) { all_element << QString("%1 %2").arg(n.symetric_mz).arg((std::uint8_t)n.type); } return QString("[%1]").arg(all_element.join("] [")); } double ExperimentalSpectrum::getPrecursorMass() const { return m_precursorMass; } std::vector::const_reverse_iterator ExperimentalSpectrum::reverseFindDiffMz( std::size_t start_position, const pappso::MzRange &aaTheoMzRange) const { qDebug() << "start_position" << start_position << " lookfor=" << aaTheoMzRange.getMz(); std::vector::const_reverse_iterator itrbegin = rbegin() + (size() - 1 - start_position); qDebug() << itrbegin->indice << "mz=" << itrbegin->symetric_mz; double eperimentalMzReference = itrbegin->symetric_mz; auto itrend = this->rend(); // We check all row from j to 0 qDebug(); for(auto itr = itrbegin + 1; itr != itrend; ++itr) { qDebug() << itr->indice; double experimentalMzDifference = eperimentalMzReference - itr->symetric_mz; if(experimentalMzDifference > aaTheoMzRange.upper()) { // if we pass the mass of the theoretical amino acid, we stop to not // over // calculate qDebug() << experimentalMzDifference << ">" << aaTheoMzRange.upper(); return itrend; } else if(experimentalMzDifference < aaTheoMzRange.lower()) { continue; } qDebug() << itr->indice << " diff=" << experimentalMzDifference; // if we found that j-k give an amino acid, we keep k value return itr; } qDebug() << "rend"; return itrend; // a value of -1 to show that // there is no k value } const pappso::QualifiedMassSpectrum & ExperimentalSpectrum::getQualifiedMassSpectrum() const { return m_qualifiedMassSpectrum; } } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/experimentalspectrum.h000644 001750 001750 00000007711 14531114113 031275 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/experimentalspectrum.h * \date 08/11/2023 * \author Olivier Langella * \brief transform a spectrum to SpecGlob spectra * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #pragma once #include "../../massspectrum/qualifiedmassspectrum.h" #include "../../exportinmportconfig.h" #include "types.h" namespace pappso { namespace specglob { struct ExperimentalSpectrumDataPoint { ExperimentalSpectrumDataPointType type; double symetric_mz = 0; std::size_t indice; }; class ExperimentalSpectrum; typedef std::shared_ptr ExperimentalSpectrumCsp; /** * @todo write docs */ class PMSPP_LIB_DECL ExperimentalSpectrum : public std::vector { public: /** * Default constructor */ ExperimentalSpectrum(const pappso::QualifiedMassSpectrum &qmass_spectrum, pappso::PrecisionPtr precision_ptr); /** * Copy constructor * * @param other TODO */ ExperimentalSpectrum(const ExperimentalSpectrum &other); /** * Destructor */ virtual ~ExperimentalSpectrum(); std::vector getMassList() const; /** @brief compute the symetric mass * for debuggin purpose */ double getSymetricMz(double mz) const; double getTargetMzSum() const; double getPrecursorMass() const; std::vector getMassList(ExperimentalSpectrumDataPointType type) const; QString toString() const; const pappso::QualifiedMassSpectrum &getQualifiedMassSpectrum() const; /** @brief find the peak for wich mass difference from rbegin corresponds to * aaTheoMass Find if a peak back in the peak list has a mass difference that * corresponds to the targeted mass * * @param start_position reverse iterator on the reference peak to look for * mass difference from * @param targeted_mass_range the mass difference to look forconst * pappso::PeptideSp peptide_sp * @return a reverse iterator on the peak (found) or the end of the search * (not found) */ std::vector::const_reverse_iterator reverseFindDiffMz(std::size_t start_position, const pappso::MzRange &targeted_mass_range) const; private: /** @brief add symetric peaks to the spectrum * Create a SymetricPeakList that contain symmetric peaks and the information * if a peak is the initial peak, the symmetric peak, or both if already * exist. * assuming fragment ion charge is 1 */ void createSymetricPeakList(); /** @brief find the correspondin mz in the mass spectrum (given the precision) */ std::vector::const_iterator findMz(double mz); private: pappso::QualifiedMassSpectrum m_qualifiedMassSpectrum; double m_targetMzSum; double m_precursorMass; pappso::PrecisionPtr m_precisionPtr; }; } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/peptidespectrum.cpp000644 001750 001750 00000005750 14531114113 030566 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/peptidespectrum.cpp * \date 06/11/2023 * \author Olivier Langella * \brief transform a peptide to SpecGlob spectrum * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "peptidespectrum.h" #include "../../peptide/peptidefragmentionlistbase.h" #include "../../peptide/peptiderawfragmentmasses.h" namespace pappso { namespace specglob { PeptideSpectrum::PeptideSpectrum(const pappso::PeptideSp peptide_sp) : std::vector() { pappso::PeptideIon ion_type = pappso::PeptideIon::b; msp_peptide = peptide_sp; std::list ion_list; ion_list.push_back(ion_type); pappso::PeptideFragmentIonListBase fragmented_ion_list(msp_peptide, ion_list); std::list peptide_ion_list = fragmented_ion_list.getPeptideFragmentIonSp(pappso::PeptideIon::b); push_back({pappso::MHPLUS, 0}); // qDebug() << pappso::PeptideRawFragmentMasses::getDeltaMass(ion_type); for(auto &peptide_ion : peptide_ion_list) { push_back({peptide_ion.get()->getMz(1), 0}); } push_back({(msp_peptide.get()->getMz(1) - pappso::MASSH2O + pappso::PeptideRawFragmentMasses::getDeltaMass(ion_type)), 0}); for(std::size_t i = 1; i < size(); i++) { at(i).diff_mz = (at(i).mz - at(i - 1).mz); } } PeptideSpectrum::PeptideSpectrum(const PeptideSpectrum &other) : std::vector(other) { msp_peptide = other.msp_peptide; } PeptideSpectrum::~PeptideSpectrum() { } std::vector PeptideSpectrum::getMassList() const { std::vector mass_list; for(const PeptideSpectrumDataPoint &n : *this) { mass_list.push_back(n.mz); }; return mass_list; } pappso::PeptideSp PeptideSpectrum::getPeptideSp() const { return msp_peptide; } } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/peptidespectrum.h000644 001750 001750 00000004334 14531114113 030230 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/peptidespectrum.h * \date 06/11/2023 * \author Olivier Langella * \brief transform a peptide to SpecGlob spectrum * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #pragma once #include "../../peptide/peptide.h" #include #include "../../exportinmportconfig.h" namespace pappso { namespace specglob { struct PeptideSpectrumDataPoint { double mz; double diff_mz; }; class PeptideSpectrum; typedef std::shared_ptr PeptideSpectraCsp; /** * @todo write docs */ class PMSPP_LIB_DECL PeptideSpectrum : public std::vector { public: /** * Default constructor */ PeptideSpectrum(const pappso::PeptideSp peptide_sp); /** * Copy constructor * * @param other TODO */ PeptideSpectrum(const PeptideSpectrum &other); /** * Destructor */ virtual ~PeptideSpectrum(); std::vector getMassList() const; pappso::PeptideSp getPeptideSp() const; private: pappso::PeptideSp msp_peptide; // std::vector m_massList; }; } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/scorevalues.cpp000644 001750 001750 00000005702 14531114113 027701 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/scorevalues.h * \date 06/11/2023 * \author Olivier Langella * \brief scores to apply in comparisons * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "scorevalues.h" #include namespace pappso { namespace specglob { ScoreValues::ScoreValues() { //#Scores to apply //#Score for non alignment (int) // sg.scoreNonAlign=-4 m_scoreTable[(std::uint8_t)ScoreValueType::scoreNonAlign] = -4; //#Score for re-alignment (int) // sg.scoreReAlignNative=-8 m_scoreTable[(std::uint8_t)ScoreValueType::scoreReAlignNative] = -8; // sg.scoreReAlignSym=-8 m_scoreTable[(std::uint8_t)ScoreValueType::scoreReAlignSym] = -8; // sg.scoreReAlignBoth=-6 m_scoreTable[(std::uint8_t)ScoreValueType::scoreReAlignBoth] = -6; //#Score for good alignment(int) m_scoreTable[(std::uint8_t)ScoreValueType::scoreAlignNative] = 7; m_scoreTable[(std::uint8_t)ScoreValueType::scoreAlignSym] = 7; m_scoreTable[(std::uint8_t)ScoreValueType::scoreAlignBoth] = 10; //#Score for re - alignment without offset(int) m_scoreTable[(std::uint8_t)ScoreValueType::scoreReAlignNativeNO] = 4; m_scoreTable[(std::uint8_t)ScoreValueType::scoreReAlignSymNO] = 4; m_scoreTable[(std::uint8_t)ScoreValueType::scoreReAlignBothNO] = 7; } ScoreValues::ScoreValues(const ScoreValues &other) { std::copy(other.m_scoreTable, other.m_scoreTable + 10, m_scoreTable); } ScoreValues::~ScoreValues() { } int ScoreValues::get(ScoreValueType type) { return m_scoreTable[(std::uint8_t)type]; } void ScoreValues::set(ScoreValueType type, int value) { m_scoreTable[(std::uint8_t)type] = value; } const ScoreValues & ScoreValues::operator=(const ScoreValues &other) { std::copy(other.m_scoreTable, other.m_scoreTable + 10, m_scoreTable); return *this; } } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/scorevalues.h000644 001750 001750 00000003605 14531114113 027346 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/scorevalues.h * \date 06/11/2023 * \author Olivier Langella * \brief scores to apply in comparisons * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #pragma once #include #include "../../exportinmportconfig.h" #include "types.h" namespace pappso { namespace specglob { /** * @todo write docs */ class PMSPP_LIB_DECL ScoreValues { public: /** * Default constructor */ ScoreValues(); ScoreValues(const ScoreValues &other); /** * Destructor */ virtual ~ScoreValues(); const ScoreValues &operator=(const ScoreValues &other); int get(ScoreValueType type); void set(ScoreValueType type, int value); private: int m_scoreTable[10]; }; } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/spectralalignment.cpp000644 001750 001750 00000057256 14531114113 031075 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/spectraalignment.cpp * \date 08/11/2023 * \author Olivier Langella * \brief petide to spectrum alignment * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "spectralalignment.h" #include "../../pappsoexception.h" #include "../../utils.h" namespace pappso { namespace specglob { SpectralAlignment::SpectralAlignment(ScoreValues score_values, pappso::PrecisionPtr precision_ptr) { m_precisionPtr = precision_ptr; m_scoreValues = score_values; } SpectralAlignment::~SpectralAlignment() { } ExperimentalSpectrumCsp SpectralAlignment::getExperimentalSpectrumCsp() const { return mcsp_experimentalSpectrum; } PeptideSpectraCsp SpectralAlignment::getPeptideSpectraCsp() const { return mcsp_peptideSpectrum; } void SpectralAlignment::align(PeptideSpectraCsp peptide_spectrum, ExperimentalSpectrumCsp experimental_spectrum) { mcsp_experimentalSpectrum = experimental_spectrum; mcsp_peptideSpectrum = peptide_spectrum; m_maxScore = 0; m_matrix.resize(mcsp_peptideSpectrum.get()->size(), mcsp_experimentalSpectrum.get()->size()); // set the value of difference between Precursor mass and theoretical mass of // the proposed peptide m_precursorMassDelta = mcsp_experimentalSpectrum.get()->getPrecursorMass() - mcsp_peptideSpectrum.get()->getPeptideSp().get()->getMass(); fillMassDelta(*mcsp_peptideSpectrum.get(), *mcsp_experimentalSpectrum.get()); m_itPosMax = m_matrix.end2(); // Make the alignment in filling the matrices auto last_theoretical_peptide = std::prev(m_matrix.end1()); for(auto itmi = ++m_matrix.begin1(); itmi != m_matrix.end1(); ++itmi) { for(auto itmj = ++itmi.begin(); itmj != itmi.end(); itmj++) { // qDebug() << "i=" << itmj.index1() << " j=" << itmj.index2(); fillMatricesWithScores(itmj, *mcsp_peptideSpectrum.get(), *mcsp_experimentalSpectrum.get()); // keep the Max Score during matrixes filling // the condition is to keep the max score in the last line (last // theoretical amino acid) This is for try to keep all amino acids of // the initial Theoretical sequence (but can modify alignment choice) if(itmi == last_theoretical_peptide && (*itmj).score > m_maxScore) { m_maxScore = (*itmj).score; m_itPosMax = itmj; } } } } void SpectralAlignment::fillMatricesWithScores( const boost::numeric::ublas::matrix::iterator2 &it_pos, const PeptideSpectrum &peptide_spectrum, const ExperimentalSpectrum &experimental_spectrum) { // long theoIndiceI = it_pos.index1(); // long expeIndiceJ = it_pos.index2(); // in first time, we set score corresponding to type of peak (initial/mirror // or both) we set initial score to peak mirror or initial ExperimentalSpectrumDataPointType expePeakType = getExperimentalSpectrumDataPoint(it_pos).type; // experimental_spectrum.at(expeIndiceJ).type; int alignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreAlignNative); int reAlignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignNative); int reAlignScoreNOToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignNativeNO); switch(expePeakType) { case ExperimentalSpectrumDataPointType::symetric: // this is a symmetric peak alignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreAlignSym); reAlignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignSym); reAlignScoreNOToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignSymNO); if(m_BETTER_END_RA && it_pos.index1() == peptide_spectrum.getPeptideSp().get()->size()) { reAlignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreNonAlign) + m_scoreValues.get(ScoreValueType::scoreAlignSym); } break; case ExperimentalSpectrumDataPointType::both: // this is a native peak with a symmetric corresponding alignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreAlignBoth); reAlignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignBoth); reAlignScoreNOToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignBothNO); if(m_BETTER_END_RA && it_pos.index1() == peptide_spectrum.getPeptideSp().get()->size()) { reAlignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreNonAlign) + m_scoreValues.get(ScoreValueType::scoreAlignBoth); } break; default: // this is a native or synthetic peak alignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreAlignNative); reAlignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignNative); reAlignScoreNOToAdd = m_scoreValues.get(ScoreValueType::scoreReAlignNativeNO); if(m_BETTER_END_RA && it_pos.index1() == peptide_spectrum.getPeptideSp().get()->size()) { reAlignScoreToAdd = m_scoreValues.get(ScoreValueType::scoreNonAlign) + m_scoreValues.get(ScoreValueType::scoreAlignNative); } break; } SpectralAlignmentDataPoint &matrix_data_point_i_j = *it_pos; /* long k = getkValue(it_pos, peptide_spectrum.at(it_pos.index1()).diff_mz, experimental_spectrum); if(it_pos.index1() == 15) qDebug() << "position1" << it_pos.index1() << "position2" << it_pos.index1() << " k=" << k << " " << peptide_spectrum.at(it_pos.index1()).diff_mz; */ pappso::MzRange aaMassRange(peptide_spectrum.at(it_pos.index1()).diff_mz, m_precisionPtr); qDebug(); // long k = -1; auto itKpeak = experimental_spectrum.reverseFindDiffMz(it_pos.index2(), aaMassRange); // if(itKpeak != experimental_spectrum.rend()) // k = itKpeak->indice; if(itKpeak == experimental_spectrum.rend()) { matrix_data_point_i_j.score = m_matrix(it_pos.index1() - 1, it_pos.index2()).score + (m_scoreValues.get(ScoreValueType::scoreNonAlign)); matrix_data_point_i_j.origin_column_indices = it_pos.index2(); matrix_data_point_i_j.alignment_type = SpectralAlignmentType::nonAlign; } else { SpectralAlignmentDataPoint &matrix_data_point_previ_k = m_matrix(it_pos.index1() - 1, itKpeak->indice); int scoreAlignK = matrix_data_point_previ_k.score + alignScoreToAdd; // if it come from non align, we must verify that there is no offset from // previous align if(matrix_data_point_previ_k.alignment_type == SpectralAlignmentType::nonAlign) { int l; for(l = it_pos.index1() - 1; l > 0; l--) { if(m_matrix(l, itKpeak->indice).origin_column_indices != itKpeak->indice) break; } if(std::abs(m_matrix(l, itKpeak->indice).mass_difference - (*it_pos).mass_difference) > m_precisionPtr->getNominal()) scoreAlignK = matrix_data_point_previ_k.score + reAlignScoreToAdd; } // int[0] = the j value m and int[1] = the score value SpectralAlignmentDataPoint reAlignBestScore = getBestRealignScore( it_pos, itKpeak->indice, reAlignScoreToAdd, reAlignScoreNOToAdd); // For debug to see value for any match // System.out.println("score k = " + scoreAlignK + " - score m = " + // reAlignBestScore[1] + " - origin m = " // + reAlignBestScore[0]); if(scoreAlignK >= reAlignBestScore.score) { // setMatricesData(theoIndiceI, expeIndiceJ, scoreAlignK, k, 2); matrix_data_point_i_j.score = scoreAlignK; matrix_data_point_i_j.origin_column_indices = itKpeak->indice; matrix_data_point_i_j.alignment_type = SpectralAlignmentType::align; } else { /*setMatricesData(theoIndiceI, expeIndiceJ, reAlignBestScore[1], reAlignBestScore[0], reAlignBestScore[2]);*/ matrix_data_point_i_j = reAlignBestScore; } } } SpectralAlignmentDataPoint SpectralAlignment::getBestRealignScore( const boost::numeric::ublas::matrix::iterator2 &it_pos, std::size_t expeIndicesK, int reAlignScore, int alignScoreToAdd) { std::size_t previous_peptide_row = it_pos.index1() - 1; SpectralAlignmentDataPoint return_data_point = *it_pos; int bestScore = -10000; int origin = -1; // find the best score column indice on previous row, walking back from // expeIndicesK m is a j value between 0 and k where a realign can be do if we // accept mass offset for(long m = expeIndicesK; m > -1; m--) { // the >= here is for keep the highest S value if there is multiple S with // the same best score if(m_matrix(previous_peptide_row, m).score > bestScore) { bestScore = m_matrix(previous_peptide_row, m).score; origin = m; } } return_data_point.origin_column_indices = origin; return_data_point.score = bestScore + reAlignScore; return_data_point.alignment_type = SpectralAlignmentType::reAlign; // [2] = 1; if(origin == -1) return return_data_point; // We check for the last alignment if we have chain of Non Alignment to // compare the last mass offset found std::size_t lastAlignIndiceI = previous_peptide_row; for(long l = previous_peptide_row; l > 0; l--) { if(m_matrix(l, origin).origin_column_indices != 0) { lastAlignIndiceI = l; break; } } // if the difference of mass offset between actual state and last align (or // realign) is null, we consider that to an alignment if((lastAlignIndiceI != (previous_peptide_row)) && (it_pos.index1() > 1) && (std::abs(m_matrix(previous_peptide_row, expeIndicesK).mass_difference - m_matrix(lastAlignIndiceI, origin).mass_difference) < m_precisionPtr->getNominal())) { return_data_point.score = bestScore + alignScoreToAdd; return_data_point.alignment_type = SpectralAlignmentType::align; //[2] = 2; } // we return the origin (value of m) and the associate calculated score and // the type of Alignment return return_data_point; } void SpectralAlignment::fillMassDelta( const PeptideSpectrum &peptide_spectrum, const ExperimentalSpectrum &experimental_spectrum) { auto it_peptide = peptide_spectrum.begin(); auto it_spectrum = experimental_spectrum.begin(); for(auto itr1 = m_matrix.begin1(); itr1 != m_matrix.end1(); ++itr1, it_peptide++) { it_spectrum = experimental_spectrum.begin(); for(auto itr2 = itr1.begin(); itr2 != itr1.end(); itr2++, it_spectrum++) { (*itr2).alignment_type = SpectralAlignmentType::nonAlign; if(it_peptide == peptide_spectrum.begin()) (*itr2).alignment_type = SpectralAlignmentType::nonAlign; (*itr2).origin_column_indices = 0; (*itr2).score = 0; (*itr2).mass_difference = it_spectrum->symetric_mz - it_peptide->mz; // qDebug() << " i=" << itr2.index1() << " j=" << itr2.index2() // << " mass_difference=" << (*itr2).mass_difference; } } } const matrix & SpectralAlignment::getMatrix() const { return m_matrix; } std::vector SpectralAlignment::getScoreRow(std::size_t row_indice) const { std::vector score; auto itr1 = m_matrix.begin1() + row_indice; for(auto itr2 = itr1.begin(); itr2 != itr1.end(); itr2++) { score.push_back((*itr2).score); } return score; } int SpectralAlignment::getMaxScore() const { return m_maxScore; } boost::numeric::ublas::matrix::iterator2 SpectralAlignment::getMaxPosIterator() const { return m_itPosMax; } const ExperimentalSpectrumDataPoint & SpectralAlignment::getExperimentalSpectrumDataPoint( const boost::numeric::ublas::matrix::iterator2 &itpos) const { return mcsp_experimentalSpectrum.get()->at(itpos.index2()); } double SpectralAlignment::getPrecursorMzDelta() const { return m_precursorMassDelta; } QString SpectralAlignment::backTrack() const { if(m_maxScore < 1) { throw pappso::PappsoException("no backtrack"); } QString pepModified = ""; QString theoSequence = mcsp_peptideSpectrum.get()->getPeptideSp().get()->getSequence(); int actualI = m_itPosMax.index1(); int prevI; int actualJ = m_itPosMax.index2(); int prevJ; double actualDelMass; double prevDelMass; int modifCount = 0; double totExplainMass = 0.0; // System.out.println(theoSequence); // System.out.println("actualI is : " + actualI + " and actualJ is : " + // actualJ); while(actualI > 0) { // System.out.println(actualI); // define the actual mass delta to the actual i and j QString tempPepSeq = ""; QString tempAA = ""; QString aminoAcid = ""; actualDelMass = m_matrix(actualI, actualJ).mass_difference; prevI = actualI - 1; prevJ = m_matrix(actualI, actualJ).origin_column_indices; prevDelMass = m_matrix(prevI, prevJ).mass_difference; // We checking first if last Amino acid are not aligned if(m_matrix(actualI, actualJ).alignment_type == SpectralAlignmentType::nonAlign) { // System.out.println("I'm NON ALIGN"); tempPepSeq = QString("[%1]").arg(theoSequence.at(actualI - 1)); while(m_matrix(prevI, prevJ).alignment_type == SpectralAlignmentType::nonAlign && prevI > 0) { tempPepSeq = QString("[%1]").arg(theoSequence.at(prevI - 1)) + tempPepSeq; prevI--; } // modifCount++; actualI = prevI; actualJ = prevJ; pepModified = tempPepSeq + pepModified; qDebug() << "a1 pepModified=" << pepModified; // if not, we are in the case where there is an alignment or a // realignment if there is Align or a re-align, put the letter of // Amino Acid and check what we get before to see if we have a mass // change } else { // we put the actual amino acid because he is found, and in function // of alignment type, we can have a mass offset tempPepSeq = QString("%1").arg(theoSequence.at(actualI - 1)); aminoAcid = tempPepSeq; // we check if there is a deletion before the founded aminoAcid if(prevI > 0 && m_matrix(prevI, prevJ).alignment_type == SpectralAlignmentType::nonAlign) { // modifCount++; // we continue to check if this is a deletion bloc to keep the // mass difference due to the deletion of the block while(prevI > 0 && m_matrix(prevI, prevJ).alignment_type == SpectralAlignmentType::nonAlign) { tempPepSeq = QString("[%1]").arg(theoSequence.at(prevI - 1)) + tempPepSeq; tempAA = QString("%1").arg(theoSequence.at(prevI - 1)) + tempAA; prevI--; prevDelMass = m_matrix(prevI, prevJ).mass_difference; if(prevI == 0) { prevDelMass = 0.0; } } // check the mass delta to avoid showing a null mass delta if(std::abs(actualDelMass - prevDelMass) > m_precisionPtr->getNominal()) { tempPepSeq = tempPepSeq.mid(0, tempPepSeq.length() - 1); tempPepSeq += QString("[%1]").arg(actualDelMass - prevDelMass) + aminoAcid; totExplainMass += (actualDelMass - prevDelMass); modifCount++; qDebug() << "a2a1 tempPepSeq=" << tempPepSeq; } // if there this is just a re-align, we need to indicate the mass // offset } else if(m_matrix(actualI, actualJ).alignment_type == SpectralAlignmentType::reAlign) { tempPepSeq = QString("[%1]").arg(actualDelMass - prevDelMass) + tempPepSeq; modifCount++; totExplainMass += (actualDelMass - prevDelMass); // the fact when you align the first amino acid, but there is a // leak of Amino acid in OMS solution before } else if(actualI == 1 && m_matrix(actualI, actualJ).alignment_type == SpectralAlignmentType::align && (std::abs(actualDelMass) > m_precisionPtr->getNominal())) { tempPepSeq = QString("[%1]").arg(actualDelMass) + tempPepSeq; totExplainMass += actualDelMass; modifCount++; } pepModified = tempPepSeq + pepModified; qDebug() << "a2 pepModified=" << pepModified; // System.out.println(pepModified); actualI = prevI; actualJ = prevJ; } } // setModificationNumber(modifCount); return QString("%1_[%2]") .arg(pepModified) .arg(m_precursorMassDelta - totExplainMass); } PeptideModel SpectralAlignment::buildPeptideModel() const { if(m_maxScore < 1) { throw pappso::PappsoException( QObject::tr("Spectral alignment failed m_maxScore == %1") .arg(m_maxScore)); } PeptideModel sg_peptide_model( mcsp_experimentalSpectrum.get()->getQualifiedMassSpectrum(), *(mcsp_peptideSpectrum.get()->getPeptideSp().get())); int actualI = m_itPosMax.index1(); int prevI; int actualJ = m_itPosMax.index2(); int prevJ; double actualDelMass; double prevDelMass; // System.out.println(theoSequence); // System.out.println("actualI is : " + actualI + " and actualJ is : " + // actualJ); while(actualI > 0) { // System.out.println(actualI); // define the actual mass delta to the actual i and j QString aminoAcid = ""; actualDelMass = m_matrix(actualI, actualJ).mass_difference; prevI = actualI - 1; prevJ = m_matrix(actualI, actualJ).origin_column_indices; prevDelMass = m_matrix(prevI, prevJ).mass_difference; // We checking first if last Amino acid are not aligned if(m_matrix(actualI, actualJ).alignment_type == SpectralAlignmentType::nonAlign) { // System.out.println("I'm NON ALIGN"); while(m_matrix(prevI, prevJ).alignment_type == SpectralAlignmentType::nonAlign && prevI > 0) { if(prevI > 0) sg_peptide_model[prevI - 1].bracket = true; prevI--; } // modifCount++; actualI = prevI; actualJ = prevJ; // if not, we are in the case where there is an alignment or a // realignment if there is Align or a re-align, put the letter of // Amino Acid and check what we get before to see if we have a mass // change } else { // we put the actual amino acid because he is found, and in function // of alignment type, we can have a mass offset // we check if there is a deletion before the founded aminoAcid if(prevI > 0 && m_matrix(prevI, prevJ).alignment_type == SpectralAlignmentType::nonAlign) { // modifCount++; // we continue to check if this is a deletion bloc to keep the // mass difference due to the deletion of the block while(prevI > 0 && m_matrix(prevI, prevJ).alignment_type == SpectralAlignmentType::nonAlign) { if(prevI > 0) sg_peptide_model[prevI - 1].bracket = true; prevI--; prevDelMass = m_matrix(prevI, prevJ).mass_difference; if(prevI == 0) { prevDelMass = 0.0; } } // check the mass delta to avoid showing a null mass delta if(std::abs(actualDelMass - prevDelMass) > m_precisionPtr->getNominal()) { int mass_i = actualI - 1; if(mass_i == 0) { sg_peptide_model.setBeginMassDelta(actualDelMass - prevDelMass); } else { sg_peptide_model[mass_i - 1].mass_difference = actualDelMass - prevDelMass; } } // if there this is just a re-align, we need to indicate the mass // offset } else if(m_matrix(actualI, actualJ).alignment_type == SpectralAlignmentType::reAlign) { int mass_i = actualI - 1; if(mass_i == 0) { sg_peptide_model.setBeginMassDelta(actualDelMass - prevDelMass); } else { sg_peptide_model[mass_i - 1].mass_difference = actualDelMass - prevDelMass; } // the fact when you align the first amino acid, but there is a // leak of Amino acid in OMS solution before } else if(actualI == 1 && m_matrix(actualI, actualJ).alignment_type == SpectralAlignmentType::align && (std::abs(actualDelMass) > m_precisionPtr->getNominal())) { sg_peptide_model.setBeginMassDelta(actualDelMass); } actualI = prevI; actualJ = prevJ; } } // setModificationNumber(modifCount); // return QString("%1_[%2]") // .arg(pepModified) // .arg(m_precursorMassDelta - totExplainMass); return sg_peptide_model; } } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/spectralalignment.h000644 001750 001750 00000012706 14531114113 030531 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/spectraalignment.h * \date 08/11/2023 * \author Olivier Langella * \brief petide to spectrum alignment * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #pragma once #include #include "experimentalspectrum.h" #include "peptidespectrum.h" #include "scorevalues.h" #include "peptidemodel.h" #include "../../exportinmportconfig.h" using namespace boost::numeric::ublas; namespace pappso { namespace specglob { struct SpectralAlignmentDataPoint { double mass_difference; int score; std::size_t origin_column_indices; SpectralAlignmentType alignment_type; }; /** * @todo write docs */ class PMSPP_LIB_DECL SpectralAlignment { public: /** * Default constructor */ SpectralAlignment(ScoreValues score_values, pappso::PrecisionPtr precision_ptr); /** * Destructor */ ~SpectralAlignment(); void align(PeptideSpectraCsp peptide_spectrum, ExperimentalSpectrumCsp experimental_spectrum); const matrix &getMatrix() const; std::vector getScoreRow(std::size_t row_indice) const; int getMaxScore() const; boost::numeric::ublas::matrix::iterator2 getMaxPosIterator() const; double getPrecursorMzDelta() const; /** * Backtrack is here to get the HitModified Sequence during the backtrack of * score calculation. It start from best score align case in matrix and use * origin matrix to go back to the start of the alignment * * @param row : the row indices of the best score * @param column : the column indices of the best score * @param precision : the precision of measures */ QString backTrack() const; PeptideModel buildPeptideModel() const; ExperimentalSpectrumCsp getExperimentalSpectrumCsp() const; PeptideSpectraCsp getPeptideSpectraCsp() const; private: const ExperimentalSpectrumDataPoint &getExperimentalSpectrumDataPoint( const boost::numeric::ublas::matrix::iterator2 &itpos) const; void fillMassDelta(const PeptideSpectrum &peptide_spectrum, const ExperimentalSpectrum &experimental_spectrum); /** * This method do the alignment of the 2 Spectra and fill matrices at actual * coordinates i(row - theoretical) and j(column - experimental) * * @param theoIndiceI : The actual theoretical peak indices * @param expeIndiceJ : The actual experimental peak indices * */ void fillMatricesWithScores( const boost::numeric::ublas::matrix::iterator2 &it_pos, const PeptideSpectrum &peptide_spectrum, const ExperimentalSpectrum &experimental_spectrum); /** * Method to get a realigned j value of where come from the realignment and * get the associated realigned score * * @param theoIndicesI : The row where we are actually * @param expeIndicesK : The founded k indices * @param expeIndicesJ : The column where we are actually * @param reAlignScore : Score to add if it is needed to add offset to * realign * @param alignScoreToAdd : Score to add if there is an alignment with peak k * @param precision : Precision of measures * @return an int[] where int[0] is the origin column (m) where come from the * re-alignment and int[1] is the calculated re-aligned score and * int[3] is the alignment type code * */ SpectralAlignmentDataPoint getBestRealignScore( const boost::numeric::ublas::matrix::iterator2 &it_pos, std::size_t expeIndicesK, int reAlignScore, int alignScoreToAdd); private: ExperimentalSpectrumCsp mcsp_experimentalSpectrum; PeptideSpectraCsp mcsp_peptideSpectrum; matrix m_matrix; // x <= peptide, y <= spectrum pappso::PrecisionPtr m_precisionPtr; ScoreValues m_scoreValues; int m_maxScore; boost::numeric::ublas::matrix::iterator2 m_itPosMax; double m_precursorMassDelta = 0; // diffference between precursor ion and theoretical peptide ion /** * modifies the score on the last amino acid alignment (RA score * rather than NA * Not documented anyMore in the interface */ bool m_BETTER_END_RA = false; }; } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/types.h000644 001750 001750 00000005703 14531114113 026160 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/types.h * \date 14/11/2023 * \author Olivier Langella * \brief SpecGlobTool types definition * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y * * ANR founded project : * https://anr.fr/Project-ANR-18-CE45-0004 */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute ipetide to spectrum * alignmentt and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #pragma once namespace pappso { namespace specglob { enum class SpectralAlignmentType : std::uint8_t { nonAlign = 0, ///< the type of alignment to put in origin matrix NON Alignment (0 - NA) reAlign = 1, ///< Re Alignment (1 - RE) align = 2, ///< Alignment (2 - AL) }; enum class ScoreValueType : std::uint8_t { scoreNonAlign = 0, ///< Score for non alignment (int) scoreReAlignNative = 1, ////algorithm< Score for re-alignment native (int) scoreReAlignSym = 2, ///< Score for re-alignment symetric (int) scoreReAlignBoth = 3, ///< Score for re-alignment both (int) scoreAlignNative = 4, ///< Score for good alignment native (int) scoreAlignSym = 5, ///< Score for good alignment symetric (int) scoreAlignBoth = 6, ///< Score for good alignment both (int) scoreReAlignNativeNO = 7, ///< Score for re-alignment without offset native (int) scoreReAlignSymNO = 8, ///< Score for re-alignment without offset symetric (int) scoreReAlignBothNO = 9, ///< Score for re-alignment without offset both (int) }; enum class ExperimentalSpectrumDataPointType : std::uint8_t { native = 0, ///< native peak, but has no mz counterpart (the complement ion), ///< we had to compute the symetric mass symetric = 1, ///< new peak : computed symetric mass from a corresponding native peak both = 2, ///< both, the ion and the complement exists in the original spectrum synthetic = 3, ///< does not correspond to existing peak, for computational purpose }; } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/peptidemodel.cpp000644 001750 001750 00000056643 14533323122 030037 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/peptidemodel.h * \date 14/11/2023 * \author Olivier Langella * \brief SpecGlobTool peptide model * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute ipetide to spectrum * alignmentt and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "peptidemodel.h" #include "../../peptide/peptiderawfragmentmasses.h" #include "../../pappsoexception.h" #include "../../utils.h" namespace pappso { namespace specglob { PeptideModel::PeptideModel() { // not valid } PeptideModel::PeptideModel(const pappso::QualifiedMassSpectrum &qmass_spectrum, const pappso::Peptide &peptide) : std::vector() { m_experimentalPrecursorMass = qmass_spectrum.getPrecursorMass(); mcsp_peakList = qmass_spectrum.getMassSpectrumCstSPtr(); m_nterModification = peptide.getInternalNterModification(); m_cterModification = peptide.getInternalCterModification(); for(auto aa_pep : peptide) { aa_pep.removeInternalCterModification(); aa_pep.removeInternalNterModification(); push_back({aa_pep, SpectralAlignmentType::nonAlign, false, 0.0}); } // internal:Nter_hydrolytic_cleavage_H // internal:Cter_hydrolytic_cleavage_HO // } PeptideModel::PeptideModel(const PeptideModel &other) : std::vector(other) { m_experimentalPrecursorMass = other.m_experimentalPrecursorMass; mcsp_peakList = other.mcsp_peakList; m_experimentalPrecursorMass = other.m_experimentalPrecursorMass; m_beginMassDelta = other.m_beginMassDelta; m_nterModification = other.m_nterModification; m_cterModification = other.m_cterModification; m_countSharedPeaks = other.m_countSharedPeaks; m_intensitySharedPeaks = other.m_intensitySharedPeaks; m_intensityExperimentalPeaks = other.m_intensityExperimentalPeaks; } PeptideModel & PeptideModel::operator=(const PeptideModel &other) { assign(other.begin(), other.end()); m_experimentalPrecursorMass = other.m_experimentalPrecursorMass; mcsp_peakList = other.mcsp_peakList; m_experimentalPrecursorMass = other.m_experimentalPrecursorMass; m_beginMassDelta = other.m_beginMassDelta; m_nterModification = other.m_nterModification; m_cterModification = other.m_cterModification; m_countSharedPeaks = other.m_countSharedPeaks; m_intensitySharedPeaks = other.m_intensitySharedPeaks; m_intensityExperimentalPeaks = other.m_intensityExperimentalPeaks; m_theoreticalPeakList.clear(); return *this; } PeptideModel & PeptideModel::copyDeep(const PeptideModel &other) { operator=(other); m_theoreticalPeakList = other.m_theoreticalPeakList; return *this; } PeptideModel::~PeptideModel() { } QString PeptideModel::toString() const { QString peptide_str; if(m_beginMassDelta != 0.0) peptide_str.append( QString("[%1]").arg(QString::number(m_beginMassDelta, 'f', 2))); for(auto aa_model : *this) { qDebug() << " aa_model.amino_acid.toString()=" << aa_model.amino_acid.toAbsoluteString() << " aa_model.alignment_type=" << Utils::toString(aa_model.alignment_type) << " aa_model.mass_difference=" << aa_model.mass_difference << " aa_model.bracket=" << aa_model.bracket; if(aa_model.remove) peptide_str.append("-("); if(aa_model.bracket) { peptide_str.append( QString("[%1]").arg(aa_model.amino_acid.toString())); } else { peptide_str.append(aa_model.amino_acid.toString()); } if(aa_model.mass_difference != 0.0) { peptide_str.append(QString("[%1]").arg( QString::number(aa_model.mass_difference, 'f', 2))); } if(aa_model.remove) peptide_str.append(")"); } peptide_str.replace(")-(", ""); peptide_str.append( QString("_[%1]").arg(QString::number(getMassDelta(), 'f', 2))); peptide_str.replace("_[0.00]", ""); peptide_str.replace("_[-0.00]", ""); return peptide_str; } QString PeptideModel::toProForma() const { QString peptide_str; // if(m_beginMassDelta != 0.0) // peptide_str.append( // QString("[%1]").arg(QString::number(m_beginMassDelta, 'f', 2))); double mass_diff = m_beginMassDelta; for(auto aa_model : *this) { qDebug() << " aa_model.amino_acid.toString()=" << aa_model.amino_acid.toAbsoluteString() << " aa_model.alignment_type=" << Utils::toString(aa_model.alignment_type) << " aa_model.mass_difference=" << aa_model.mass_difference << " aa_model.bracket=" << aa_model.bracket; if(aa_model.bracket) { } if(aa_model.remove) { peptide_str.append(aa_model.amino_acid.getLetter()); peptide_str.append( "[" + AaModification::getInstanceRemovalAccessionByAaLetter( aa_model.amino_acid.getLetter()) ->getAccession() + "]"); } else { peptide_str.append(aa_model.amino_acid.toProForma()); mass_diff += aa_model.mass_difference; if(mass_diff != 0.0) { if(mass_diff > 0) { peptide_str.append( QString("[+%1]").arg(QString::number(mass_diff, 'f', 4))); } else { peptide_str.append( QString("[%1]").arg(QString::number(mass_diff, 'f', 4))); } } } mass_diff = 0.0; } return peptide_str; } double PeptideModel::getMass() const { double mass = m_beginMassDelta; if(m_cterModification != nullptr) mass += m_cterModification->getMass(); if(m_nterModification != nullptr) mass += m_nterModification->getMass(); for(auto aa_model : *this) { mass += aa_model.amino_acid.getMass() + aa_model.mass_difference; } return mass; } double PeptideModel::getMassDelta() const { return m_experimentalPrecursorMass - getMass(); } std::size_t PeptideModel::modifCount() const { std::size_t count = 0; if(m_beginMassDelta != 0.0) count++; for(auto aa_model : *this) { if(aa_model.mass_difference != 0.0) count++; } return count; } void PeptideModel::setBeginMassDelta(double delta) { m_beginMassDelta = delta; } void PeptideModel::matchExperimentalPeaks(pappso::PrecisionPtr precision) { if(m_theoreticalPeakList.size() == 0) { m_intensityExperimentalPeaks = mcsp_peakList.get()->totalIonCurrent(); generateTheoreticalPeaks(precision); } auto it_expe_peaks_end = mcsp_peakList.get()->end(); auto it_expe_peaks = mcsp_peakList.get()->begin(); auto it_theo_peaks = m_theoreticalPeakList.begin(); while((it_expe_peaks != mcsp_peakList.get()->end()) && (it_theo_peaks != m_theoreticalPeakList.end())) { while((it_expe_peaks != mcsp_peakList.get()->end()) && (it_expe_peaks->x < it_theo_peaks->mz_range.lower())) { // find the first possible ion hit it_expe_peaks++; } if(it_expe_peaks == mcsp_peakList.get()->end()) continue; if(it_expe_peaks->x < it_theo_peaks->mz_range.upper()) { // ok, we've got a hit auto it_theo_peaks_loop = it_theo_peaks; while((it_theo_peaks_loop != m_theoreticalPeakList.end()) && (it_theo_peaks_loop->mz_range.contains(it_expe_peaks->x))) { if((it_theo_peaks_loop->it_experimental_peak_match == it_expe_peaks_end) || (it_theo_peaks_loop->it_experimental_peak_match->y < it_expe_peaks->y)) { it_theo_peaks_loop->it_experimental_peak_match = it_expe_peaks; qDebug() << "match: mz=" << it_expe_peaks->x << " intensity=" << it_expe_peaks->y; break; } it_theo_peaks_loop++; } it_expe_peaks++; } else { it_theo_peaks++; } // it_expe_peaks++; } // get number of shared peaks m_countSharedPeaks = 0; m_intensitySharedPeaks = 0; std::vector::const_iterator> matched_experimental_peaks; for(auto &theo_peak : m_theoreticalPeakList) { if(theo_peak.it_experimental_peak_match != it_expe_peaks_end) { matched_experimental_peaks.push_back( theo_peak.it_experimental_peak_match); // m_countSharedPeaks++; } } auto it_end = std::unique(matched_experimental_peaks.begin(), matched_experimental_peaks.end()); m_countSharedPeaks = std::distance(matched_experimental_peaks.begin(), it_end); m_intensitySharedPeaks = std::accumulate( matched_experimental_peaks.begin(), it_end, 0.0, [](double k, const std::vector::const_iterator &l) { return (k + l->y); }); } void PeptideModel::generateTheoreticalPeaks(pappso::PrecisionPtr precision) { m_theoreticalPeakList.clear(); double cumul_mass = m_beginMassDelta + m_nterModification->getMass() - pappso::MPROTIUM + pappso::MHPLUS; auto it_expe_peaks_end = mcsp_peakList.get()->end(); std::size_t i = 0; for(auto aa_model : *this) { // compute B ions cumul_mass += aa_model.amino_acid.getMass() + aa_model.mass_difference; qDebug() << cumul_mass; m_theoreticalPeakList.push_back( {pappso::MzRange(cumul_mass, precision), it_expe_peaks_end, i}); i++; } // remove the complete ion B (entire peptide, no fragment): m_theoreticalPeakList.pop_back(); std::size_t bmaxindice = m_theoreticalPeakList.size(); double yion_delta = pappso::PeptideRawFragmentMasses::getDeltaMass(pappso::PeptideIon::y); cumul_mass += yion_delta + pappso::MHPLUS; for(std::size_t i = 0; i < bmaxindice; i++) { m_theoreticalPeakList.push_back( {pappso::MzRange(cumul_mass - m_theoreticalPeakList[i].mz_range.getMz(), precision), it_expe_peaks_end, i + 1}); qDebug() << m_theoreticalPeakList.back().mz_range.getMz(); } std::sort( m_theoreticalPeakList.begin(), m_theoreticalPeakList.end(), [](const TheoreticalPeakDataPoint &a, const TheoreticalPeakDataPoint &b) { return a.mz_range.getMz() < b.mz_range.getMz(); }); } std::vector PeptideModel::getTheoreticalIonMassList() const { std::vector mass_list; for(auto &datapoint : m_theoreticalPeakList) { mass_list.push_back(datapoint.mz_range.getMz()); } return mass_list; } std::size_t PeptideModel::getCountSharedPeaks() const { return m_countSharedPeaks; } double PeptideModel::getIntensitySharedPeaks() const { return m_intensitySharedPeaks; } double PeptideModel::getIntensityExperimentalPeaks() const { return m_intensityExperimentalPeaks; } void PeptideModel::assignResidualMass2Cter() { back().mass_difference = getMassDelta(); } bool PeptideModel::eliminateComplementaryDelta(pappso::PrecisionPtr precision) { double precision_ref = precision->getNominal(); double offset = 0; bool modified = false; std::vector::iterator it_begin_block = end(); if(std::abs(m_beginMassDelta) > precision_ref) { it_begin_block = begin(); offset = m_beginMassDelta; qDebug() << " new block offset=" << offset; } qDebug() << offset; for(auto it = begin(); it != end(); it++) { qDebug() << " it->mass_difference=" << it->mass_difference; if(it_begin_block == end()) { if(std::abs(it->mass_difference) > precision_ref) { // new block it_begin_block = it; offset = it->mass_difference; } qDebug() << " new block offset=" << offset; } if(it_begin_block != end()) { // existing block qDebug() << " existing block offset=" << offset; if(it == begin()) { offset += it->mass_difference; } else { // where is the end of the block ? qDebug() << " where is the end of the block ? offset=" << offset; auto it_end_block = std::find_if( it, end(), [offset, precision_ref](const AminoAcidModel &point) { qDebug() << point.mass_difference << " " << offset + point.mass_difference; if(std::abs(offset + point.mass_difference) <= precision_ref) return true; return false; }); if(it_end_block != end()) { // eliminate mass mass_difference modified = true; if(it_begin_block == begin()) m_beginMassDelta = 0; it_begin_block->mass_difference = 0.0; it_end_block->mass_difference = 0.0; // start new block search it_begin_block = end(); offset = 0; qDebug() << " existing block end block found"; } else { qDebug() << " existing block end block not found offset=" << offset; // close block it_begin_block = end(); offset = 0; } } } } qDebug() << toString(); return modified; } bool PeptideModel::eliminateNegativeOffset(pappso::PrecisionPtr precision) { // System.out.println("Elimination des neg offsets"); double precision_ref = precision->getNominal(); auto it_reverse = rbegin(); bool modified = false; while(it_reverse != rend()) { if(it_reverse->remove) { // this is a part of already removed block } else { double mass_difference = it_reverse->mass_difference; if(mass_difference < 0) { // try to find an amino acid blocl of that mass double cumul_mass_aa = 0; auto it_block_end = it_reverse; while(it_block_end != rend()) { cumul_mass_aa += it_block_end->amino_acid.getMass(); it_block_end++; if(std::abs(mass_difference + cumul_mass_aa) < precision_ref) { modified = true; // block found -> remove this range for(auto it_block = it_reverse; it_block != it_block_end; it_block++) { it_block->remove = true; } } else { if((it_block_end != rend()) && (it_block_end->mass_difference != 0.0)) { // interrupted block break; } } } } } it_reverse++; } return modified; } bool PeptideModel::removeBracketsForAlignedAA() { if(m_theoreticalPeakList.size() == 0) { throw pappso::PappsoException("missing peak matching"); } bool modified = false; auto it_expe_peaks_end = mcsp_peakList.get()->end(); for(auto &theo_peak : m_theoreticalPeakList) { if(theo_peak.it_experimental_peak_match != it_expe_peaks_end) { if(at(theo_peak.aa_indice).bracket == true) { modified = true; at(theo_peak.aa_indice).bracket = false; } } } return modified; } const std::vector & PeptideModel::getTheoreticalPeakDataPointList() const { return m_theoreticalPeakList; } QString PeptideModel::getTheoreticalPeakDataPointListToString() const { auto it_expe_peaks_end = mcsp_peakList.get()->end(); QString str; for(auto &theo_peak : m_theoreticalPeakList) { double intensity = 0; if(theo_peak.it_experimental_peak_match != it_expe_peaks_end) { intensity = theo_peak.it_experimental_peak_match->y; } str.append(QString("{%1,%2,%3,%4}") .arg(theo_peak.mz_range.getMz()) .arg(intensity) .arg(theo_peak.aa_indice) .arg(at(theo_peak.aa_indice).amino_acid.toString())); } return str; } bool PeptideModel::checkForMutation(const pappso::Aa &amino_acid_candidate, pappso::PrecisionPtr precision) { bool modif = false; double total_mass_to_insert = amino_acid_candidate.getMass(); auto insert_aa_modification = AaModification::getInstanceInsertionAccessionByAaLetter( amino_acid_candidate.getLetter()); double mass_difference = m_beginMassDelta; for(auto &aa_model : *this) { mass_difference += aa_model.mass_difference; auto aa_ref = aa_model.amino_acid; if(mass_difference != 0.0) { mass_difference += aa_ref.getTotalModificationMass(); AaModificationP aa_ref_remove = AaModification::getInstanceRemovalAccessionByAaLetter( aa_model.amino_acid.getLetter()); // check for possible mutation double current_diff = (aa_ref_remove->getMass() - mass_difference) + total_mass_to_insert; qDebug() << "current_diff=" << current_diff; if(std::abs(current_diff) < precision->getNominal()) { qDebug() << "modif = true="; aa_model.mass_difference = 0; aa_model.amino_acid.removeAllButInternalModification(); aa_model.amino_acid.addAaModification(aa_ref_remove); aa_model.amino_acid.addAaModification(insert_aa_modification); for(auto &mod : amino_acid_candidate.getModificationList()) { aa_model.amino_acid.addAaModification(mod); } modif = true; } } mass_difference = 0; } return modif; } bool PeptideModel::checkForMutations(const std::vector &aa_list, pappso::PrecisionPtr precision) { bool modif = false; // AaModificationP carbamido = AaModification::getInstance("MOD:00397"); // AaModificationP metox = AaModification::getInstance("MOD:00719"); std::vector modificationInsertList; for(const auto aa : aa_list) { modificationInsertList.push_back( AaModification::getInstanceInsertionAccessionByAaLetter((char)aa)); } double mass_difference = m_beginMassDelta; for(auto &aa_model : *this) { mass_difference += aa_model.mass_difference; auto aa_ref = aa_model.amino_acid; if(mass_difference != 0.0) { mass_difference += aa_ref.getTotalModificationMass(); AaModificationP aa_ref_remove = AaModification::getInstanceRemovalAccessionByAaLetter( aa_model.amino_acid.getLetter()); AaModificationP aa_ref_insert = nullptr; double better_diff = 10; // check for possible mutation for(const auto aaInsertion : modificationInsertList) { double current_diff = (aa_ref_remove->getMass() - mass_difference) + aaInsertion->getMass(); qDebug() << aa_model.amino_acid.getLetter() << " " << aaInsertion->getName() << " " << aaInsertion->getMass() << " " << current_diff; if(std::abs(current_diff) < std::abs(better_diff)) { aa_ref_insert = aaInsertion; better_diff = current_diff; } } qDebug() << "better_diff=" << better_diff; if((aa_ref_insert != nullptr) && (std::abs(better_diff) < precision->getNominal())) { qDebug() << "modif = true="; aa_model.mass_difference = 0; aa_model.amino_acid.removeAllButInternalModification(); aa_model.amino_acid.addAaModification(aa_ref_remove); aa_model.amino_acid.addAaModification(aa_ref_insert); modif = true; } } mass_difference = 0; } return modif; } bool PeptideModel::checkForAaModificationP(pappso::AaModificationP modification, pappso::PrecisionPtr precision) { bool modif = false; double mass_difference = m_beginMassDelta; for(auto &aa_model : *this) { mass_difference += aa_model.mass_difference; auto aa_ref = aa_model.amino_acid; if(mass_difference != 0.0) { if(std::abs(modification->getMass() - mass_difference) < precision->getNominal()) { aa_model.mass_difference = 0; aa_model.amino_acid.addAaModification(modification); modif = true; } } mass_difference = 0; } return modif; } bool PeptideModel::checkForAaModification(const pappso::Aa &aa_modified, pappso::PrecisionPtr precision) { bool modif = false; double mass_difference = m_beginMassDelta; for(auto &aa_model : *this) { mass_difference += aa_model.mass_difference; auto aa_ref = aa_model.amino_acid; if(aa_ref.getLetter() == aa_modified.getLetter()) { if(mass_difference != 0.0) { double mass_modification = aa_modified.getTotalModificationMass(); if(std::abs(mass_modification - mass_difference) < precision->getNominal()) { aa_model.mass_difference = 0; for(auto &modification : aa_modified.getModificationList()) { aa_model.amino_acid.addAaModification(modification); } modif = true; } } } mass_difference = 0; } return modif; } } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/peptidemodel.h000644 001750 001750 00000015477 14533323122 027504 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/peptidemodel.h * \date 14/11/2023 * \author Olivier Langella * \brief SpecGlobTool peptide model * \todo https://www.psidev.info/proforma * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute ipetide to spectrum * alignmentt and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #pragma once #include "../../peptide/peptide.h" #include "../../massspectrum/qualifiedmassspectrum.h" #include "types.h" #include "../../exportinmportconfig.h" namespace pappso { namespace specglob { struct AminoAcidModel { pappso::Aa amino_acid; SpectralAlignmentType alignment_type; bool bracket; double mass_difference; bool remove = false; }; struct TheoreticalPeakDataPoint { pappso::MzRange mz_range; std::vector::const_iterator it_experimental_peak_match; // intensity of experimental matched peak std::size_t aa_indice; // the amino acid indice in the peptide model (from 0 // to size, begining by nter) }; /** * @todo write docs */ class PMSPP_LIB_DECL PeptideModel : public std::vector { public: /** * Default constructor */ PeptideModel(const pappso::QualifiedMassSpectrum &qmass_spectrum, const pappso::Peptide &peptide); PeptideModel(); /** * Copy constructor * * @param other TODO */ PeptideModel(const PeptideModel &other); /** * Destructor */ virtual ~PeptideModel(); QString toString() const; // void setPrecursorMass(double precursor_mass); double getMass() const; /** @brief mass delta between experimental and theoretical mass */ double getMassDelta() const; std::size_t modifCount() const; void setBeginMassDelta(double); void matchExperimentalPeaks(pappso::PrecisionPtr precision); std::vector getTheoreticalIonMassList() const; std::size_t getCountSharedPeaks() const; double getIntensitySharedPeaks() const; double getIntensityExperimentalPeaks() const; void assignResidualMass2Cter(); /** * Use to delete offset when there is two opposite mass in the hit modified * example : [150.2]SDS[-150.2]KR --> SDSKR * * @param precision : The mass spectrometer precision * @return true if model is modified */ bool eliminateComplementaryDelta(pappso::PrecisionPtr precision); /** @brief try to replace mass differences with corresponding mutations mass * delta * * amino acid list is tested as raw (no modification) * * @param aa_list amno acid list to test (beware of cysteine + * carbamidomethyl) * @param precision : The mass spectrometer precision * @return true if model is modified */ bool checkForMutations(const std::vector &aa_list, pappso::PrecisionPtr precision); /** @brief try to replace mass differences with corresponding mutation mass * delta * * amino acid candidate tested could bear some modifications * * @param amino_acid_candidate : The amino acid candidate to check * @param precision : The mass spectrometer precision * @return true if model is modified */ bool checkForMutation(const pappso::Aa &amino_acid_candidate, pappso::PrecisionPtr precision); /** @brief try to replace mass differences with the given modifications on a * specific amino acid * * @param aa_modified the modified amino acid * @param precision The mass spectrometer precision * @return true if model is modified */ bool checkForAaModification(const pappso::Aa &aa_modified, pappso::PrecisionPtr precision); /** @brief try to replace mass differences with the given modification * * @param modification : The proposed modification pointer * @param precision : The mass spectrometer precision * @return true if model is modified */ bool checkForAaModificationP(pappso::AaModificationP modification, pappso::PrecisionPtr precision); PeptideModel &operator=(const PeptideModel &other); PeptideModel ©Deep(const PeptideModel &other); /** * Use to try to explain negative offset with deletion of amino acids * * @param precision : The mass spectrometer precision * @return true if model is modified */ bool eliminateNegativeOffset(pappso::PrecisionPtr precision); /** * Use to remove brackets around not found Amino acids when the B or Y peak * corresponding to the amino acid in the sequence is in the experimental peak * list * * @param betterModified : The better sequence of hit Modified * @param experimentalMassList : The list of mass that are in the experimental * spectrum * @param precision : The precision of the mass spectrometer * @return the new sequence without brackets around found amino acids after * all post treatments */ bool removeBracketsForAlignedAA(); const std::vector & getTheoreticalPeakDataPointList() const; QString getTheoreticalPeakDataPointListToString() const; /** @brief get the peptide model in ProForma notation * https://github.com/HUPO-PSI/ProForma/blob/master/README.md * @return QString as described in ProForma */ QString toProForma() const; private: void generateTheoreticalPeaks(pappso::PrecisionPtr precision); private: std::vector m_theoreticalPeakList; double m_experimentalPrecursorMass; double m_beginMassDelta = 0; pappso::MassSpectrumCstSPtr mcsp_peakList = nullptr; pappso::AaModificationP m_nterModification; pappso::AaModificationP m_cterModification; std::size_t m_countSharedPeaks = 0; double m_intensitySharedPeaks = 0; double m_intensityExperimentalPeaks = 0; }; } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/posttreatment.cpp000644 001750 001750 00000027156 14533323122 030272 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/sgposttreatment.cpp * \date 15/11/2023 * \author Olivier Langella * \brief SpecGlobTool peptide model post treatment * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute ipetide to spectrum * alignmentt and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "posttreatment.h" namespace pappso { namespace specglob { PostTreatment::PostTreatment(pappso::PrecisionPtr precision, const PeptideModel &peptide_model) : m_originalPeptideModel(peptide_model), m_betterPeptideModel(peptide_model) { m_precision = precision; m_originalPeptideModel.matchExperimentalPeaks(m_precision); findBetterPeptideModel(); } PostTreatment::~PostTreatment() { } const PeptideModel & PostTreatment::getBetterPeptideModel() const { return m_betterPeptideModel; } void PostTreatment::findBetterPeptideModel() { if(std::abs(m_originalPeptideModel.getMassDelta()) > m_precision->getNominal()) { // calculate the number of shared peaks with the deltaM on the last aa m_betterPeptideModel.assignResidualMass2Cter(); m_betterPeptideModel.matchExperimentalPeaks(m_precision); if(m_betterPeptideModel.getCountSharedPeaks() > m_originalPeptideModel.getCountSharedPeaks()) { } else { // not better, get back to original peptide m_betterPeptideModel.copyDeep(m_originalPeptideModel); } } else { m_betterPeptideModel.matchExperimentalPeaks(m_precision); } // Try to remove complementary mass offset // Not done if the number of peaks is increased by more than two peaks // If the number of peaks > +2, it is considered as an information that must // be kept in the alignment Could be modified...the information is in the // preAligned column PeptideModel test_peptide_model_remove_complementary(m_betterPeptideModel); if(test_peptide_model_remove_complementary.eliminateComplementaryDelta( m_precision)) { test_peptide_model_remove_complementary.matchExperimentalPeaks( m_precision); qDebug() << "test_peptide_model_remove_complementary.getCountSharedPeaks()=" << test_peptide_model_remove_complementary.getCountSharedPeaks() << " m_betterPeptideModel.getCountSharedPeaks()=" << m_betterPeptideModel.getCountSharedPeaks(); if(test_peptide_model_remove_complementary.getCountSharedPeaks() < m_betterPeptideModel.getCountSharedPeaks() + 2) { qDebug() << "replace with " << test_peptide_model_remove_complementary.toString(); m_betterPeptideModel.copyDeep( test_peptide_model_remove_complementary); } } // if bestModified contains negative offSet, try to remove amino acids to // explain it PeptideModel test_peptide_model_remove_negative = m_betterPeptideModel; if(test_peptide_model_remove_negative.eliminateNegativeOffset(m_precision)) { test_peptide_model_remove_negative.matchExperimentalPeaks(m_precision); if(test_peptide_model_remove_negative.getCountSharedPeaks() >= m_betterPeptideModel.getCountSharedPeaks()) { qDebug() << "replace with " << test_peptide_model_remove_negative.toString(); m_betterPeptideModel.copyDeep(test_peptide_model_remove_negative); } } // findBetterMassDifferencePosition tryToRemoveOffsets(); tryBetterPositionOffsets(); if(m_betterPeptideModel.getMassDelta() < -m_precision->getNominal()) { tryToCumulateOffSets(); } m_betterPeptideModel.removeBracketsForAlignedAA(); } void PostTreatment::tryBetterPositionOffsets() { PeptideModel better_peptide_model_move_offset = m_betterPeptideModel; std::size_t best_count_shared_peaks = m_betterPeptideModel.getCountSharedPeaks(); qDebug() << best_count_shared_peaks; qDebug() << m_betterPeptideModel.toString(); bool move = false; for(std::size_t i = 0; i < m_betterPeptideModel.size(); i++) { qDebug() << "i =" << i; if(m_betterPeptideModel.at(i).remove == true) continue; if(m_betterPeptideModel.at(i).mass_difference == 0.0) continue; if(m_betterPeptideModel.at(i).bracket == true) { // try to move if double mass_diff = m_betterPeptideModel.at(i).mass_difference; PeptideModel test_peptide_model_move_offset = better_peptide_model_move_offset; test_peptide_model_move_offset.at(i).mass_difference = 0; qDebug() << test_peptide_model_move_offset.toString(); std::size_t j = i; while(j > 0) { j -= 1; if(test_peptide_model_move_offset.at(j).bracket == false) break; if(test_peptide_model_move_offset.at(j).mass_difference != 0.0) break; test_peptide_model_move_offset.at(j).mass_difference = mass_diff; test_peptide_model_move_offset.matchExperimentalPeaks( m_precision); qDebug() << test_peptide_model_move_offset.toString() << " " << test_peptide_model_move_offset.getCountSharedPeaks() << " " << best_count_shared_peaks; if(test_peptide_model_move_offset.getCountSharedPeaks() > best_count_shared_peaks) { best_count_shared_peaks = test_peptide_model_move_offset.getCountSharedPeaks(); better_peptide_model_move_offset.copyDeep( test_peptide_model_move_offset); move = true; } else { test_peptide_model_move_offset = better_peptide_model_move_offset; } } } } if(move) { m_betterPeptideModel.copyDeep(better_peptide_model_move_offset); } qDebug() << m_betterPeptideModel.toString(); } void PostTreatment::tryToRemoveOffsets() { // We'll try to evaluate for each deltaM if it can be a neutral loss or not // For this, we compare the number of shared peaks with and without the shift PeptideModel better_peptide_model_for_neutral_loss; std::size_t best_count_shared_peaks = m_betterPeptideModel.getCountSharedPeaks(); qDebug() << best_count_shared_peaks; for(std::size_t i = 0; i < m_betterPeptideModel.size(); i++) { if(m_betterPeptideModel.at(i).remove == true) continue; if(m_betterPeptideModel.at(i).mass_difference == 0.0) continue; // try in the case we remove the offset PeptideModel test_peptide_model_for_neutral_loss = m_betterPeptideModel; test_peptide_model_for_neutral_loss.at(i).mass_difference = 0; test_peptide_model_for_neutral_loss.matchExperimentalPeaks(m_precision); qDebug() << test_peptide_model_for_neutral_loss.toString() << " " << test_peptide_model_for_neutral_loss.getCountSharedPeaks() << " " << best_count_shared_peaks; if(test_peptide_model_for_neutral_loss.getCountSharedPeaks() >= best_count_shared_peaks) { best_count_shared_peaks = test_peptide_model_for_neutral_loss.getCountSharedPeaks(); better_peptide_model_for_neutral_loss.copyDeep( test_peptide_model_for_neutral_loss); } } if(better_peptide_model_for_neutral_loss.size() > 0) { m_betterPeptideModel.copyDeep(better_peptide_model_for_neutral_loss); } } void PostTreatment::tryToCumulateOffSets() { double mass_delta = m_betterPeptideModel.getMassDelta(); std::size_t best_count_shared_peaks = m_betterPeptideModel.getCountSharedPeaks(); PeptideModel better_peptide_model_cumulating_residual_mass_delta; for(std::size_t i = 0; i < m_betterPeptideModel.size(); i++) { if(m_betterPeptideModel.at(i).remove == true) continue; if(m_betterPeptideModel.at(i).mass_difference == 0.0) continue; PeptideModel test_peptide_model_cumulating_residual_mass_delta = m_betterPeptideModel; // try to cumulate the current mass difference with unexplained mass delta // : test_peptide_model_cumulating_residual_mass_delta.at(i).mass_difference += mass_delta; test_peptide_model_cumulating_residual_mass_delta.matchExperimentalPeaks( m_precision); if(test_peptide_model_cumulating_residual_mass_delta .getCountSharedPeaks() >= best_count_shared_peaks) { best_count_shared_peaks = test_peptide_model_cumulating_residual_mass_delta .getCountSharedPeaks(); better_peptide_model_cumulating_residual_mass_delta.copyDeep( test_peptide_model_cumulating_residual_mass_delta); } } if(better_peptide_model_cumulating_residual_mass_delta.size() > 0) { m_betterPeptideModel.copyDeep( better_peptide_model_cumulating_residual_mass_delta); } } const PeptideModel & PostTreatment::getOriginalPeptideModel() const { return m_originalPeptideModel; } bool PostTreatment::findReplaceMutations() { auto peptide_model = m_betterPeptideModel; bool modif = false; std::vector aa_list = { pappso::AminoAcidChar::alanine, pappso::AminoAcidChar::aspartic_acid, pappso::AminoAcidChar::glutamic_acid, pappso::AminoAcidChar::phenylalanine, pappso::AminoAcidChar::glycine, pappso::AminoAcidChar::histidine, pappso::AminoAcidChar::isoleucine, pappso::AminoAcidChar::lysine, pappso::AminoAcidChar::leucine, pappso::AminoAcidChar::methionine, pappso::AminoAcidChar::asparagine, pappso::AminoAcidChar::proline, pappso::AminoAcidChar::glutamine, pappso::AminoAcidChar::arginine, pappso::AminoAcidChar::serine, pappso::AminoAcidChar::threonine, pappso::AminoAcidChar::valine, pappso::AminoAcidChar::tryptophan, pappso::AminoAcidChar::tyrosine}; if(peptide_model.checkForMutations(aa_list, m_precision)) { modif = true; } pappso::Aa cysteine('C'); cysteine.addAaModification( pappso::AaModification::getInstance("MOD:00397")); // carbamido if(peptide_model.checkForMutation(cysteine, m_precision)) { modif = true; } pappso::Aa methionine('M'); methionine.addAaModification( pappso::AaModification::getInstance("MOD:00719")); // oxydation if(peptide_model.checkForMutation(methionine, m_precision)) { modif = true; } if(modif) { m_betterPeptideModel = peptide_model; } return modif; } } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/processing/specglob/posttreatment.h000644 001750 001750 00000006641 14533323122 027733 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/processing/specglob/sgposttreatment.h * \date 15/11/2023 * \author Olivier Langella * \brief SpecGlobTool peptide model post treatment * * C++ implementation of the SpecGlob algorithm described in : * 1. Prunier, G. et al. Fast alignment of mass spectra in large proteomics * datasets, capturing dissimilarities arising from multiple complex * modifications of peptides. BMC Bioinformatics 24, 421 (2023). * * HAL Id : hal-04296170 , version 1 * Mot de passe : hxo20cl * DOI : 10.1186/s12859-023-05555-y */ /* * SpecGlobTool, Spectra to peptide alignment tool * Copyright (C) 2023 Olivier Langella * * * This program is free software: you can redistribute ipetide to spectrum * alignmentt and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #pragma once #include "peptidemodel.h" #include "../../exportinmportconfig.h" namespace pappso { namespace specglob { /** * @todo write docs */ class PMSPP_LIB_DECL PostTreatment { public: /** * Default constructor */ PostTreatment(pappso::PrecisionPtr precision, const PeptideModel &peptide_model); /** * Destructor */ virtual ~PostTreatment(); const PeptideModel &getBetterPeptideModel() const; const PeptideModel &getOriginalPeptideModel() const; bool findReplaceMutations(); private: /** @brief whole processus to find a better peptide model * * assign residual mass to Cter * remove complementary mass delta * eliminate negative offsets (perhaps neutral loss) * check negative offsets for amino acid mass sums to remove * try better positions for mass delta * */ void findBetterPeptideModel(); /** @brief try to move offset (mass difference) * * for each mass difference position, try to move to other position if the * amino acid is not aligned, count matched peaks and compare to the previous * solution. * Keep only the better position */ void tryBetterPositionOffsets(); /** @brief try to remove offset (mass difference) * * for each mass difference position, count matched peaks and compare to the * previous solution. Removes mass difference if it does not degrade the * number of matched peaks */ void tryToRemoveOffsets(); /** @brief try to assign residual mass delta to non aligned elements * * This method is run only if there is not-aligned offSets. It may be * explained by an inadequate alignment at the start because we give some * advance to non-tryptic peptides. But, at the end of the alignment, we can * consider it was not the best choice Trying to improve this alignment by * adding not-aligned offSet with another one */ void tryToCumulateOffSets(); private: PeptideModel m_originalPeptideModel; PeptideModel m_betterPeptideModel; pappso::PrecisionPtr m_precision; }; } // namespace specglob } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/000755 001750 001750 00000000000 14533473271 022363 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/protein/enzyme.cpp000644 001750 001750 00000026603 14526455546 024414 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "enzyme.h" #include #include #include "../exception/exceptionnotpossible.h" // #include namespace pappso { Enzyme::Enzyme() { m_recognitionSite.setPattern("([KR])([^P])"); m_miscleavage = 0; char vv1[] = {'A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W', 'Y', 'V'}; m_wildCardX.assign(std::begin(vv1), std::end(vv1)); char vv2[] = {'N', 'D'}; m_wildCardB.assign(std::begin(vv2), std::end(vv2)); char vv3[] = {'Q', 'E'}; m_wildCardZ.assign(std::begin(vv3), std::end(vv3)); } Enzyme::Enzyme(const QString &recognition_site) { m_recognitionSite.setPattern(recognition_site); m_miscleavage = 0; char vv1[] = {'A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W', 'Y', 'V'}; m_wildCardX.assign(std::begin(vv1), std::end(vv1)); char vv2[] = {'N', 'D'}; m_wildCardB.assign(std::begin(vv2), std::end(vv2)); char vv3[] = {'Q', 'E'}; m_wildCardZ.assign(std::begin(vv3), std::end(vv3)); } Enzyme::~Enzyme() { } void Enzyme::setMiscleavage(unsigned int miscleavage) { m_miscleavage = miscleavage; } unsigned int Enzyme::getMiscleavage() const { return m_miscleavage; } void Enzyme::setMaxPeptideVariantListSize(std::size_t max_peptide_variant_list_size) { m_maxPeptideVariantListSize = max_peptide_variant_list_size; } void Enzyme::eat(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, EnzymeProductInterface &enzyme_product) const { /* * for aa in self.aa_to_cut: seq = seq.replace(aa, aa + ' ') seq_stack = [] for s in seq.strip().split(' '): seq_stack.append(s) if len(seq_stack) > self.misscleavage + 1: seq_stack.pop(0) s2 = "" for s_miss in seq_stack[::-1]: s2 = s_miss + s2 yield s2 */ qDebug() << "Enzyme::eat begin "; const QString sequence = protein_sp.get()->getSequence(); qDebug() << sequence; QStringList peptide_list; int pos = 0; int peptide_start = 0; int peptide_size = sequence.size(); QRegularExpressionMatch match_recognition_site = m_recognitionSite.match(sequence, pos); while(match_recognition_site.hasMatch()) { pos = match_recognition_site.capturedStart(0); peptide_size = pos + match_recognition_site.captured(1).length() - peptide_start; // qDebug() << "pos=" << pos << " peptide_start=" << peptide_start << " // peptide_size=" << peptide_size << " " << // sequence.mid(peptide_start,peptide_size); if(peptide_size > 0) { peptide_list.append(sequence.mid(peptide_start, peptide_size)); } peptide_start += peptide_size; pos = peptide_start; // all peptides MUST be consecutive match_recognition_site = m_recognitionSite.match(sequence, pos); } peptide_size = sequence.size() - peptide_start; if(peptide_size > 0) { peptide_list.append(sequence.mid(peptide_start, peptide_size)); } unsigned int start = 1; bool is_nter = true; foreach(const QString &peptide, peptide_list) { // enzyme_product.setPeptide(sequence_database_id, protein_sp,is_decoy, // peptide, start,is_nter,0, false); sanityCheck(enzyme_product, sequence_database_id, protein_sp, is_decoy, peptide, start, is_nter, 0, false); is_nter = false; start += peptide.size(); } unsigned int miscleavage_i = 0; while(miscleavage_i < m_miscleavage) { miscleavage_i++; qDebug() << "miscleavage_i=" << miscleavage_i; int chunk_number = miscleavage_i + 1; unsigned int start = 1; bool is_nter = true; for(auto i = 0; i < peptide_list.size(); ++i) { qDebug() << "start=" << start; QStringList peptide_mis_list; for(auto j = 0; (j < chunk_number) && ((i + j) < peptide_list.size()); j++) { peptide_mis_list << peptide_list.at(i + j); } if(peptide_mis_list.size() == chunk_number) { // enzyme_product.setPeptide(sequence_database_id, // protein_sp,is_decoy, peptide_mis_list.join(""), start,is_nter, // miscleavage_i, false); sanityCheck(enzyme_product, sequence_database_id, protein_sp, is_decoy, peptide_mis_list.join(""), start, is_nter, miscleavage_i, false); } is_nter = false; start += peptide_list.at(i).size(); } } } void Enzyme::replaceWildcards(std::vector *p_peptide_variant_list) const { std::string new_peptide = p_peptide_variant_list->at(0); qDebug() << "Enzyme::replaceWildcards begin " << new_peptide.c_str(); std::vector old_peptide_variant_list; old_peptide_variant_list.assign(p_peptide_variant_list->begin(), p_peptide_variant_list->end()); for(char wildcard : {'X', 'B', 'Z'}) { std::size_t position = new_peptide.find(wildcard); if(position == std::string::npos) { continue; } else { p_peptide_variant_list->clear(); /* new_peptide[position] = 'A'; p_peptide_variant_list->push_back(new_peptide); break; */ const std::vector *p_x_replace_wildcard = nullptr; if(wildcard == 'X') { p_x_replace_wildcard = &m_wildCardX; } else if(wildcard == 'B') { p_x_replace_wildcard = &m_wildCardB; } else if(wildcard == 'Z') { p_x_replace_wildcard = &m_wildCardZ; } if(p_x_replace_wildcard != nullptr) { for(std::string orig_peptide : old_peptide_variant_list) { for(char replace : *p_x_replace_wildcard) { orig_peptide[position] = replace; p_peptide_variant_list->push_back(orig_peptide); } } } else { throw ExceptionNotPossible( QObject::tr("x_replace_wildcard is empty")); } // new_peptide[position] = 'A'; // p_peptide_variant_list->push_back(new_peptide); // p_peptide_variant_list->resize(1); // std::cerr << "Enzyme::replaceWildcards begin // p_peptide_variant_list.size()=" << p_peptide_variant_list->size() // << // endl; break; } } std::vector().swap( old_peptide_variant_list); // clear old_peptide_variant_list reallocating qDebug() << "Enzyme::replaceWildcards end " << new_peptide.c_str(); } void Enzyme::setTakeOnlyFirstWildcard(bool take_only_first_wildcard) { m_takeOnlyFirstWildcard = take_only_first_wildcard; } void Enzyme::sanityCheck(EnzymeProductInterface &enzyme_product, std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideStr &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) const { if(peptide.contains('X') || peptide.contains('B') || peptide.contains('Z')) { std::vector peptide_variant_list; peptide_variant_list.push_back(peptide.toStdString()); while((peptide_variant_list.at(0).find('X') != std::string::npos) || (peptide_variant_list.at(0).find('B') != std::string::npos) || (peptide_variant_list.at(0).find('Z') != std::string::npos)) { replaceWildcards(&peptide_variant_list); if(peptide_variant_list.size() > m_maxPeptideVariantListSize) { peptide_variant_list.resize(m_maxPeptideVariantListSize); peptide_variant_list.shrink_to_fit(); } } // peptide_variant_list.resize(2); if(m_takeOnlyFirstWildcard) { enzyme_product.setPeptide(sequence_database_id, protein_sp, is_decoy, QString(peptide_variant_list.at(0).c_str()), start, is_nter, missed_cleavage_number, semi_enzyme); } else { std::string peptide_variant = peptide_variant_list.back(); while(peptide_variant_list.size() > 0) { enzyme_product.setPeptide(sequence_database_id, protein_sp, is_decoy, QString(peptide_variant.c_str()), start, is_nter, missed_cleavage_number, semi_enzyme); peptide_variant_list.pop_back(); if(peptide_variant_list.size() > 0) { peptide_variant = peptide_variant_list.back(); } } } std::vector().swap( peptide_variant_list); // clear peptide_variant_list reallocating } else { enzyme_product.setPeptide(sequence_database_id, protein_sp, is_decoy, peptide, start, is_nter, missed_cleavage_number, semi_enzyme); } } const QRegularExpression & Enzyme::getQRegExpRecognitionSite() const { return m_recognitionSite; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/enzyme.h000644 001750 001750 00000007716 14346367014 024055 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" #include namespace pappso { class PMSPP_LIB_DECL Enzyme { public: /** \brief build the default enzyme (trypsin) with recognition_site = * "([KR])([^P])" * */ Enzyme(); /** \brief build any enzyme given a recognition_site * \param recognition_site is a regular expression that must identify 2 motifs * : one on Nter side one on Cter side * */ Enzyme(const QString &recognition_site); ~Enzyme(); /** \brief digest a protein into enzyme products * \param sequence_database_id integer that references the sequence fatabase * (file, stream, url...) \param protein_sp is the original protein to be * digested \param is_decoy tell if the current protein is a decoy (true) or * normal (false) protein \param enzyme_product is the object that will * receive the digestion products * */ void eat(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, EnzymeProductInterface &enzyme_product) const; /** \brief sets the maximum number of missed cleavage allowed in the digestion * \param miscleavage maximum number of missed cleavade to allow (defaults is * 0) * */ void setMiscleavage(unsigned int miscleavage); /** \brief get the maximum number of missed cleavage allowed in the digestion * @return miscleavage maximum number of missed cleavade to allow (defaults is * 0) * */ unsigned int getMiscleavage() const; /** \brief take only first m_takeOnlyFirstWildcard * \param bool true : switch to take only the first possibility if there are * X, B or Z wildcards in sequence */ void setTakeOnlyFirstWildcard(bool take_only_first_wildcard); /** \brief if there are wildcards in the protein sequence : restrict the * number of possible peptide sequences \param max_peptide_variant_list_size * maximum number of peptide variant (default is 100) */ void setMaxPeptideVariantListSize(std::size_t max_peptide_variant_list_size); const QRegularExpression &getQRegExpRecognitionSite() const; private: /** \brief example with a kinase == [K,R] */ QRegularExpression m_recognitionSite; unsigned int m_miscleavage = 0; bool m_takeOnlyFirstWildcard = false; std::size_t m_maxPeptideVariantListSize = 100; std::vector m_wildCardX; std::vector m_wildCardB; std::vector m_wildCardZ; void sanityCheck(EnzymeProductInterface &enzyme_product, std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideStr &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) const; void replaceWildcards(std::vector *p_peptide_variant_list) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/enzymeproductinterface.h000644 001750 001750 00000010362 14346367014 027326 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "protein.h" #include "../peptide/peptide.h" #include namespace pappso { class EnzymeProductInterface { public: /** @brief function to give the products of a protein digestion by an enzyme * @param sequence_database_id integer that references the sequence fatabase * (file, stream, url...) * @param protein_sp shared pointer on the protein that was digested * @param is_decoy tell if the current protein is a decoy (true) or normal * (false) protein * @param peptide amino acid sequence of the peptide (string) produced by the * digestion * @param start the position of the first amino acid of the peptide in the * original protein sequence. the first amino acid of the protein is at * position 1. * @param is_nter boolean to tell if the peptide is an Nter peptide (to allow * Methionin Nter removal) * @param missed_cleavage_number number of missed cleavage sites (that the * enzyme has not cut) fot the product * @param semi_enzyme boolean that tells if this peptide is the produce of a * semi enzymatic lysis * */ virtual void setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideStr &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) = 0; }; class PeptideModificatorInterface { public: virtual ~PeptideModificatorInterface(){}; /** @brief function to give the products of modifications for a digested * peptide * @param sequence_database_id integer that references the sequence fatabase * (file, stream, url...) * @param protein_sp shared pointer on the * protein that was initialy digested * @param is_decoy tell if the current * protein is a decoy (true) or normal (false) protein * @param peptide Peptide * object containing sequence and possible modifications * @param start the * position of the first amino acid of the peptide in the original protein * sequence. the first amino acid of the protein is at position 1. * @param * is_nter boolean to tell if the peptide is an Nter peptide (to allow * Methionin Nter removal) * @param missed_cleavage_number number of missed * cleavage sites (that the enzyme has not cut) fot the product * @param * semi_enzyme boolean that tells if this peptide is the produce of a semi * enzymatic lysis * */ virtual void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) = 0; }; class PeptideSinkInterface { public: virtual void setSink(EnzymeProductInterface *sink) = 0; }; class PeptideSpSinkInterface { public: virtual void setSink(PeptideModificatorInterface *sink) = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidebuilder.cpp000644 001750 001750 00000005236 14526455546 026105 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidebuilder.h" #include namespace pappso { PeptideBuilder::PeptideBuilder() { } PeptideBuilder::~PeptideBuilder() { } void PeptideBuilder::addFixedAaModification(char aa, AaModificationP modification) { m_fixedModificationList.push_back( std::pair(aa, modification)); } void PeptideBuilder::setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide_str, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { qDebug() << "PeptideBuilder::setPeptide begin"; Peptide peptide(peptide_str); for(auto &&aamod_pair : m_fixedModificationList) { std::vector position_list = peptide.getAaPositionList(aamod_pair.first); for(auto &&position : position_list) { peptide.addAaModification(aamod_pair.second, position); } } PeptideSp peptide_sp = peptide.makePeptideSp(); // set fixed modifications qDebug() << "PeptideBuilder::setPeptide m_sink->setPeptideSp"; m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp, start, is_nter, missed_cleavage_number, semi_enzyme); qDebug() << "PeptideBuilder::setPeptide end"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidebuilder.h000644 001750 001750 00000004107 14346367014 025536 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" namespace pappso { /** \brief builds a peptide shared pointer from peptide string and adds fixed * modifications * */ class PMSPP_LIB_DECL PeptideBuilder : public EnzymeProductInterface, PeptideSpSinkInterface { public: PeptideBuilder(); virtual ~PeptideBuilder(); void setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide_str, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; void addFixedAaModification(char aa, AaModificationP modification); void setSink(PeptideModificatorInterface *sink) override { m_sink = sink; }; private: PeptideModificatorInterface *m_sink = nullptr; std::list> m_fixedModificationList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidefixedmodificationbuilder.cpp000644 001750 001750 00000005613 14526455546 031512 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidefixedmodificationbuilder.h" using namespace pappso; PeptideFixedModificationBuilder::PeptideFixedModificationBuilder( AaModificationP p_mod) : mp_mod(p_mod) { } PeptideFixedModificationBuilder::~PeptideFixedModificationBuilder() { } void PeptideFixedModificationBuilder::addAa(char aa) { m_aaModificationList.append(aa); m_pattern.setPattern(QString("[%1]").arg(m_aaModificationList)); } void PeptideFixedModificationBuilder::setPeptideSp( std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { qDebug() << "PeptideFixedModificationBuilder::setPeptide begin"; std::vector position_list; getModificationPositionList(position_list, peptide_sp_original.get()->getSequence()); Peptide peptide(*peptide_sp_original.get()); unsigned int size = peptide.size(); for(unsigned int pos : position_list) { if((m_isProtNterMod) && (is_nter)) { peptide.addAaModification(mp_mod, pos); } else if((m_isProtCterMod) && (protein_sp.get()->size() == (start + size))) { peptide.addAaModification(mp_mod, pos); } else if(m_isProtElseMod) { peptide.addAaModification(mp_mod, pos); } } PeptideSp peptide_sp = peptide.makePeptideSp(); // set fixed modifications m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp, start, is_nter, missed_cleavage_number, semi_enzyme); qDebug() << "PeptideFixedModificationBuilder::setPeptide end"; } libpappsomspp-0.9.20/src/pappsomspp/protein/peptidefixedmodificationbuilder.h000644 001750 001750 00000005071 14346367014 031145 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "peptidemodificatorbase.h" namespace pappso { class PMSPP_LIB_DECL PeptideFixedModificationBuilder : public PeptideModificatorBase { public: PeptideFixedModificationBuilder(AaModificationP p_mod); virtual ~PeptideFixedModificationBuilder(); void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; void addAa(char aa); void setSink(PeptideModificatorInterface *sink) override { m_sink = sink; }; /** \brief this modification concerns the Nter peptide * */ void setProtNter(bool arg1) { m_isProtNterMod = arg1; }; /** \brief this modification concerns the Cter peptide * */ void setProtCter(bool arg1) { m_isProtCterMod = arg1; }; /** \brief this modification concerns all peptides between Nter and Cter * */ void setProtElse(bool arg1) { m_isProtElseMod = arg1; }; private: PeptideModificatorInterface *m_sink = nullptr; const AaModificationP mp_mod; // protein Nter modification bool m_isProtNterMod = true; // protein Cter modification bool m_isProtCterMod = true; // all peptide between Nter and Cter bool m_isProtElseMod = true; QString m_aaModificationList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemethioninremove.cpp000644 001750 001750 00000006622 14526455546 027667 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidemethioninremove.h" namespace pappso { PeptideMethioninRemove::PeptideMethioninRemove(bool ism_isPotential) { m_isPotential = ism_isPotential; } PeptideMethioninRemove::~PeptideMethioninRemove() { } void PeptideMethioninRemove::setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { if(is_nter) { // Nter is often acetylated : MOD:00394 if(peptide[0] == 'M') { if(m_isPotential) { m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide, start, is_nter, missed_cleavage_number, semi_enzyme); } // peptide = peptide.right(peptide.size()-1); m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide.right(peptide.size() - 1), start + 1, is_nter, missed_cleavage_number, semi_enzyme); } else { m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide, start, is_nter, missed_cleavage_number, semi_enzyme); } } else { m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide, start, is_nter, missed_cleavage_number, semi_enzyme); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemethioninremove.h000644 001750 001750 00000004005 14346367014 027315 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" namespace pappso { /** \brief potential remove Nter Methionin * */ class PMSPP_LIB_DECL PeptideMethioninRemove : public EnzymeProductInterface, PeptideSinkInterface { private: EnzymeProductInterface *m_sink = nullptr; bool m_isPotential = true; public: PeptideMethioninRemove(bool ism_isPotential); virtual ~PeptideMethioninRemove(); // EnzymeProductInterface void setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; // PeptideSinkInterface void setSink(EnzymeProductInterface *sink) override { m_sink = sink; }; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemodificatorbase.cpp000644 001750 001750 00000007671 14526455546 027617 0ustar00rusconirusconi000000 000000 /** * \file protein/peptidemodificatorbase.h * \date 6/12/2016 * \author Olivier Langella * \brief base class for all peptide modification builders */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidemodificatorbase.h" namespace pappso { PeptideModificatorBase::PeptideModificatorBase() { } PeptideModificatorBase::~PeptideModificatorBase() { } void PeptideModificatorBase::setModificationPattern(QString &pattern) { m_pattern.setPattern(pattern); } void PeptideModificatorBase::getModificationPositionList( std::vector &position_list, const QString &peptide_str) { int pos = 0; QRegularExpressionMatch match_pattern = m_pattern.match(peptide_str, pos); while(match_pattern.hasMatch()) { pos = match_pattern.capturedStart(0); if(match_pattern.lastCapturedIndex() == 0) { // no motif, just push position position_list.push_back(pos); pos++; } else { // there is a motif : target this position pos = match_pattern.capturedStart(1); if((position_list.size() > 0) && (position_list.back() == (unsigned int)pos)) { pos = match_pattern.capturedStart(0) + 1; } else { position_list.push_back(pos); pos = match_pattern.capturedStart(0) + 1; } } match_pattern = m_pattern.match(peptide_str, pos); } } void PeptideModificatorBase::getModificationPositionList( std::vector &position_list, const Peptide *p_peptide, AaModificationP mod, unsigned int modification_counter) { int pos = 0; const QString peptide_str = p_peptide->getSequence(); QRegularExpressionMatch match_pattern = m_pattern.match(peptide_str, pos); while(match_pattern.hasMatch()) { pos = match_pattern.capturedStart(0); if(match_pattern.lastCapturedIndex() == 0) { // no motif, just push position if(p_peptide->getConstAa(pos).getNumberOfModification(mod) == modification_counter) { position_list.push_back(pos); } pos++; } else { // there is a motif : target this position pos = match_pattern.capturedStart(1); if((position_list.size() > 0) && (position_list.back() == (unsigned int)pos)) { pos = match_pattern.capturedStart(0) + 1; } else { if(p_peptide->getConstAa(pos).getNumberOfModification(mod) == modification_counter) { position_list.push_back(pos); } pos = match_pattern.capturedStart(0) + 1; } } match_pattern = m_pattern.match(peptide_str, pos); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemodificatorbase.h000644 001750 001750 00000005300 14346367014 027237 0ustar00rusconirusconi000000 000000 /** * \file protein/peptidemodificatorbase.h * \date 6/12/2016 * \author Olivier Langella * \brief base class for all peptide modification builders */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" namespace pappso { class PMSPP_LIB_DECL PeptideModificatorBase : public PeptideModificatorInterface, public PeptideSpSinkInterface { public: PeptideModificatorBase(); virtual ~PeptideModificatorBase(); /** \brief set the pattern on which the modification will be applied (usually * the list of concerned AA) \details the pattern is a standard regular * expression : it describes the target site to modify. This standard regular * expression is used to make a replacement of all motifs describes by an * underscore ("_") The underscore is taken as a landmark to apply the * modification. \param pattern the regular expression pattern ( [YST] to * replace Y, S and T with _ and modify it ). The pattern can also contain the * / separator to eventually specify the replacement motif. This can be used * to described very complex modification patterns * */ // : virtual void setModificationPattern(QString &pattern) final; protected: QRegularExpression m_pattern; virtual void getModificationPositionList(std::vector &position_list, const QString &peptide_str) final; virtual void getModificationPositionList(std::vector &position_list, const Peptide *p_peptide, AaModificationP mod, unsigned int modification_counter); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemodificatorpipeline.cpp000644 001750 001750 00000027532 14526455546 030510 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidemodificatorpipeline.h" #include "peptidefixedmodificationbuilder.h" #include "peptidevariablemodificationbuilder.h" #include "../pappsoexception.h" #include using namespace pappso; // QRegularExpression // PeptideModificatorPipeline::_rx_modmass("[-+]?[0-9]*\\.?[0-9]*"); PeptideModificatorPipeline::PeptideModificatorPipeline() { } PeptideModificatorPipeline::PeptideModificatorPipeline( const PeptideModificatorPipeline &other) { throw PappsoException( QObject::tr("unable to copy PeptideModificatorPipeline object")); if(other.mp_peptideModificatorTee != nullptr) { // mp_peptideModificatorTee = new // PeptideModificatorTee(other.mp_peptideModificatorTee); } mp_lastPeptideSinkInterface = nullptr; mp_firstModificator = nullptr; for(auto p_mod : other.m_pepModificatorPtrList) { delete(p_mod); } m_sink = other.m_sink; mp_lastPeptideSinkInterface = other.mp_lastPeptideSinkInterface; mp_firstModificator = other.mp_firstModificator; m_pepModificatorPtrList = other.m_pepModificatorPtrList; } PeptideModificatorPipeline::~PeptideModificatorPipeline() { for(auto p_mod : m_pepModificatorPtrList) { delete(p_mod); } if(mp_peptideModificatorTee == nullptr) { delete(mp_peptideModificatorTee); } } void PeptideModificatorPipeline::setSink(PeptideModificatorInterface *sink) { if(mp_peptideModificatorTee != nullptr) { throw PappsoException(QObject::tr( "Please use setSink before addLabeledModificationString function")); } m_sink = sink; if(mp_firstModificator != nullptr) { mp_lastPeptideSinkInterface->setSink(m_sink); } }; void PeptideModificatorPipeline::addFixedModificationString(const QString &mod_str) { privAddFixedModificationString(mod_str, true, true, true); } void PeptideModificatorPipeline::addFixedNterModificationString( const QString &mod_str) { privAddFixedModificationString(mod_str, true, false, false); } void PeptideModificatorPipeline::addFixedCterModificationString( const QString &mod_str) { privAddFixedModificationString(mod_str, false, true, false); } void PeptideModificatorPipeline::privAddFixedModificationString( const QString &mod_str, bool Nter, bool Cter, bool else_prot) { //"MOD:00397@C, MOD:00398@R" if(mp_peptideModificatorTee != nullptr) { throw PappsoException( QObject::tr("Unable to add fixed modification string after " "addLabeledModificationString function")); } QStringList mod_list_str = mod_str.simplified().replace(" ", "").split(",", Qt::SkipEmptyParts); for(auto i = 0; i < mod_list_str.size(); ++i) { parseFixedModification(mod_list_str[i], Nter, Cter, else_prot); } } void PeptideModificatorPipeline::parseFixedModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot) { QStringList str_split = mod_str.split("@", Qt::SkipEmptyParts); pappso::AaModificationP aa_mod = AaModification::getInstance(str_split[0]); PeptideFixedModificationBuilder *mod = new PeptideFixedModificationBuilder(aa_mod); mod->setModificationPattern(str_split[1]); mod->setSink(m_sink); mod->setProtNter(Nter); mod->setProtCter(Cter); mod->setProtElse(else_prot); m_pepModificatorPtrList.push_back(mod); if(mp_firstModificator == nullptr) { mp_firstModificator = mod; } else { mp_lastPeptideSinkInterface->setSink(mod); } mp_lastPeptideSinkInterface = mod; } void PeptideModificatorPipeline::addPotentialModificationString( const QString &mod_str) { privAddPotentialModificationString(mod_str, true, true, true); } // protein Nter modification void PeptideModificatorPipeline::addPotentialNterModificationString( const QString &mod_str) { privAddPotentialModificationString(mod_str, true, false, false); } // protein Cter modification void PeptideModificatorPipeline::addPotentialCterModificationString( const QString &mod_str) { privAddPotentialModificationString(mod_str, false, true, false); } void PeptideModificatorPipeline::privAddPotentialModificationString( const QString &mod_str, bool Nter, bool Cter, bool else_prot) { //"MOD:00397@C, MOD:00398@R" if(mp_peptideModificatorTee != nullptr) { throw PappsoException( QObject::tr("Unable to add potential modification string after " "addLabeledModificationString function")); } QStringList mod_list_str = mod_str.simplified().replace(" ", "").split(",", Qt::SkipEmptyParts); for(auto i = 0; i < mod_list_str.size(); ++i) { parsePotentialModification(mod_list_str[i], Nter, Cter, else_prot); } } void PeptideModificatorPipeline::parsePotentialModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot) { QStringList str_split = mod_str.split("@", Qt::SkipEmptyParts); QString mod_acc_str = str_split[0]; QStringList str_acc_split = mod_acc_str.split("(", Qt::SkipEmptyParts); pappso::AaModificationP aa_mod = AaModification::getInstance(str_acc_split[0]); PeptideVariableModificationBuilder *mod = new PeptideVariableModificationBuilder(aa_mod); // qDebug() << "PeptideModificatorPipeline::parsePotentialModification " << ; if(str_acc_split.length() == 2) { QStringList max_num_str_list = str_acc_split[1].replace(")", "").split("-", Qt::SkipEmptyParts); if(max_num_str_list.length() == 1) { mod->setModificationCounter(max_num_str_list[0].toUInt()); } else if(max_num_str_list.length() == 2) { mod->setMinNumberMod(max_num_str_list[0].toUInt()); mod->setMaxNumberMod(max_num_str_list[1].toUInt()); } } mod->setModificationPattern(str_split[1]); mod->setSink(m_sink); mod->setProtNter(Nter); mod->setProtCter(Cter); mod->setProtElse(else_prot); m_pepModificatorPtrList.push_back(mod); if(mp_firstModificator == nullptr) { mp_firstModificator = mod; } else { mp_lastPeptideSinkInterface->setSink(mod); } mp_lastPeptideSinkInterface = mod; } void PeptideModificatorPipeline::addLabeledModificationString(const QString &mod_str) { if(m_sink == nullptr) { throw PappsoException(QObject::tr( "Please use setSink before addLabeledModificationString function")); } if(mp_peptideModificatorTee == nullptr) { mp_peptideModificatorTee = new PeptideModificatorTee; } if(mp_firstModificator == nullptr) { mp_firstModificator = mp_peptideModificatorTee; } // backup pointers PeptideModificatorInterface *backup_sink = m_sink; PeptideSpSinkInterface *backup_p_last_peptide_sink_interface = mp_lastPeptideSinkInterface; PeptideModificatorInterface *backup_p_first_modificator = mp_firstModificator; QStringList mod_list_str = mod_str.simplified().replace(" ", "").split(",", Qt::SkipEmptyParts); for(auto i = 0; i < mod_list_str.size(); ++i) { parseLabeledModification(mod_list_str[i], true, true, true); if(i == 0) { mp_peptideModificatorTee->addModificator(mp_firstModificator); } } m_sink = backup_sink; mp_lastPeptideSinkInterface = backup_p_last_peptide_sink_interface; mp_firstModificator = backup_p_first_modificator; mp_lastPeptideSinkInterface->setSink(mp_peptideModificatorTee); } void PeptideModificatorPipeline::parseLabeledModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot) { QStringList str_split = mod_str.split("@", Qt::SkipEmptyParts); pappso::AaModificationP aa_mod = AaModification::getInstance(str_split[0]); PeptideFixedModificationBuilder *mod = new PeptideFixedModificationBuilder(aa_mod); mod->setModificationPattern(str_split[1]); mod->setSink(m_sink); mod->setProtNter(Nter); mod->setProtCter(Cter); mod->setProtCter(else_prot); m_pepModificatorPtrList.push_back(mod); mp_lastPeptideSinkInterface->setSink(mod); mp_lastPeptideSinkInterface = mod; mp_firstModificator = mod; } void PeptideModificatorPipeline::setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { if(mp_firstModificator == nullptr) { m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp_original, start, is_nter, missed_cleavage_number, semi_enzyme); } else { mp_firstModificator->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp_original, start, is_nter, missed_cleavage_number, semi_enzyme); } } void PeptideModificatorPipeline::setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide_str, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { qDebug() << "PeptideModificatorPipeline::setPeptide begin"; Peptide peptide(peptide_str); PeptideSp peptide_sp = peptide.makePeptideSp(); qDebug() << "PeptideModificatorPipeline::setPeptide m_sink->setPeptideSp"; setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp, start, is_nter, missed_cleavage_number, semi_enzyme); qDebug() << "PeptideModificatorPipeline::setPeptide end"; } libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemodificatorpipeline.h000644 001750 001750 00000010175 14346367014 030140 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" #include "peptidemodificatortee.h" namespace pappso { class PMSPP_LIB_DECL PeptideModificatorPipeline : public PeptideModificatorInterface, public PeptideSpSinkInterface, public EnzymeProductInterface { public: PeptideModificatorPipeline(); PeptideModificatorPipeline(const PeptideModificatorPipeline &other); virtual ~PeptideModificatorPipeline(); void addFixedModificationString(const QString &mod_str); // protein Nter modification void addFixedNterModificationString(const QString &mod_str); // protein Cter modification void addFixedCterModificationString(const QString &mod_str); void addPotentialModificationString(const QString &mod_str); // protein Nter modification void addPotentialNterModificationString(const QString &mod_str); // protein Cter modification void addPotentialCterModificationString(const QString &mod_str); void setSink(PeptideModificatorInterface *sink) override; void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; void setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide_str, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; void addLabeledModificationString(const QString &mod_str); private: PeptideModificatorTee *mp_peptideModificatorTee = nullptr; PeptideModificatorInterface *m_sink = nullptr; PeptideSpSinkInterface *mp_lastPeptideSinkInterface; PeptideModificatorInterface *mp_firstModificator = nullptr; std::vector m_pepModificatorPtrList; void parseFixedModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot); void privAddFixedModificationString(const QString &mod_str, bool Nter, bool Cter, bool else_prot); void parsePotentialModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot); void privAddPotentialModificationString(const QString &mod_str, bool Nter, bool Cter, bool else_prot); void parseLabeledModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemodificatortee.cpp000644 001750 001750 00000005200 14526455546 027444 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidemodificatortee.h" using namespace pappso; PeptideModificatorTee::PeptideModificatorTee() { } PeptideModificatorTee::PeptideModificatorTee(const PeptideModificatorTee &other) { throw PappsoException( QObject::tr("unable to copy PeptideModificatorTee object")); m_peptideModPtrList = other.m_peptideModPtrList; } PeptideModificatorTee::~PeptideModificatorTee() { } void PeptideModificatorTee::addModificator( PeptideModificatorInterface *p_peptide_mod) { m_peptideModPtrList.push_back(p_peptide_mod); } void PeptideModificatorTee::setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { qDebug() << "PeptideModificatorTee::setPeptide begin"; for(auto p_peptide_mod : m_peptideModPtrList) { p_peptide_mod->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp_original, start, is_nter, missed_cleavage_number, semi_enzyme); } qDebug() << "PeptideModificatorTee::setPeptide end"; } libpappsomspp-0.9.20/src/pappsomspp/protein/peptidemodificatortee.h000644 001750 001750 00000003641 14346367014 027110 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" #include "../pappsoexception.h" namespace pappso { class PMSPP_LIB_DECL PeptideModificatorTee : public PeptideModificatorInterface { public: PeptideModificatorTee(); PeptideModificatorTee(const PeptideModificatorTee &other); virtual ~PeptideModificatorTee(); void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; void addModificator(PeptideModificatorInterface *p_peptide_mod); private: std::list m_peptideModPtrList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidesemienzyme.cpp000644 001750 001750 00000006174 14526455546 026646 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidesemienzyme.h" #include "../exception/exceptionnotpossible.h" namespace pappso { PeptideSemiEnzyme::PeptideSemiEnzyme() { } PeptideSemiEnzyme::~PeptideSemiEnzyme() { } void PeptideSemiEnzyme::setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { // if (start == 1) { // m_sink->setPeptide(protein_sp, peptide, start); // 2 begin // size = 6 // i=5 //} if(semi_enzyme) { throw ExceptionNotPossible( QObject::tr("ERROR : semi_ensyme flag is true.\n This is not possible, " "because only PeptideSemiEnzyme is autorized to set it " "true, and this can not be used several times.")); } m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide, start, is_nter, missed_cleavage_number, false); // transmits orignal peptide unsigned int max = peptide.size(); // unsigned int maxi = max-1; for(unsigned int i = 1; i < max; i++) { m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide.left(i), start, is_nter, missed_cleavage_number, true); m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide.right(i), start + (max - i), false, missed_cleavage_number, true); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidesemienzyme.h000644 001750 001750 00000004003 14346367014 026270 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" namespace pappso { /** \brief cut a regular peptide obtained with an enzyme at any position from * Nter or Cter * * WORK IN PROGRESS * */ class PMSPP_LIB_DECL PeptideSemiEnzyme : public EnzymeProductInterface, PeptideSinkInterface { public: PeptideSemiEnzyme(); virtual ~PeptideSemiEnzyme(); // EnzymeProductInterface void setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; // PeptideSinkInterface void setSink(EnzymeProductInterface *sink) override { m_sink = sink; }; private: EnzymeProductInterface *m_sink = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidesizefilter.cpp000644 001750 001750 00000004231 14526455546 026631 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidesizefilter.h" namespace pappso { PeptideSizeFilter::PeptideSizeFilter(unsigned int min_size, unsigned int max_size) : m_minSize(min_size), m_maxSize(max_size) { } PeptideSizeFilter::~PeptideSizeFilter() { } void PeptideSizeFilter::setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { if((peptide.size() >= m_minSize) && (peptide.size() <= m_maxSize)) { m_sink->setPeptide(sequence_database_id, protein_sp, is_decoy, peptide, start, is_nter, missed_cleavage_number, semi_enzyme); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidesizefilter.h000644 001750 001750 00000004016 14346367014 026267 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "enzymeproductinterface.h" namespace pappso { /** \brief filter peptide string by size * */ class PMSPP_LIB_DECL PeptideSizeFilter : public EnzymeProductInterface, PeptideSinkInterface { public: PeptideSizeFilter(unsigned int min_size, unsigned int max_size); virtual ~PeptideSizeFilter(); // EnzymeProductInterface void setPeptide(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; // PeptideSinkInterface void setSink(EnzymeProductInterface *sink) override { m_sink = sink; }; private: EnzymeProductInterface *m_sink = nullptr; const int m_minSize; const int m_maxSize; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidevariablemodificationbuilder.cpp000644 001750 001750 00000015373 14526455546 032204 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidevariablemodificationbuilder.h" namespace pappso { bool PeptideVariableModificationBuilder::next_combination( const std::vector::iterator first, std::vector::iterator k, const std::vector::iterator last) { /* Credits: Mark Nelson http://marknelson.us */ if((first == last) || (first == k) || (last == k)) return false; std::vector::iterator i1 = first; std::vector::iterator i2 = last; ++i1; if(last == i1) return false; i1 = last; --i1; i1 = k; --i2; while(first != i1) { if(*--i1 < *i2) { std::vector::iterator j = k; while(!(*i1 < *j)) ++j; std::iter_swap(i1, j); ++i1; ++j; i2 = k; std::rotate(i1, j, last); while(last != j) { ++j; ++i2; } std::rotate(k, i2, last); return true; } } std::rotate(first, k, last); return false; } PeptideVariableModificationBuilder::PeptideVariableModificationBuilder( AaModificationP mod) : mp_mod(mod) { } PeptideVariableModificationBuilder::~PeptideVariableModificationBuilder() { } void PeptideVariableModificationBuilder::addAa(char aa) { m_aaModificationList.append(aa); m_pattern.setPattern(QString("[%1]").arg(m_aaModificationList)); } void PeptideVariableModificationBuilder::setPeptideSp( std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { // QString s = "Banana"; // s.replace(QRegExp("a[mn]"), "ox"); bool modify_this_peptide = true; if(m_isProtNterMod || m_isProtCterMod) { modify_this_peptide = false; if((m_isProtNterMod) && (is_nter)) { // this an Nter peptide modify_this_peptide = true; } else if((m_isProtCterMod) && (protein_sp.get()->size() == (start + peptide_sp_original.get()->size()))) { // this is a Cter peptide modify_this_peptide = true; } else if(m_isProtElseMod) { modify_this_peptide = true; } } if(modify_this_peptide) { std::vector position_list; getModificationPositionList( position_list, peptide_sp_original.get(), mp_mod, m_modificationCount); // std::vector< unsigned int > position_list = // peptide_sp_original.get()->getAaPositionList(m_aaModificationList); // std::string s = "12345"; // no AA modification : if(m_minNumberMod == 0) { m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp_original, start, is_nter, missed_cleavage_number, semi_enzyme); } unsigned int nb_pos = position_list.size(); if(nb_pos > 0) { // loop to find 1 to n-1 AA modification combinations unsigned int comb_size = 1; while((comb_size < nb_pos) && (comb_size <= m_maxNumberMod)) { do { // std::cout << std::string(being,begin + comb_size) << // std::endl; Peptide new_peptide(*(peptide_sp_original.get())); for(unsigned int i = 0; i < comb_size; i++) { new_peptide.addAaModification(mp_mod, position_list[i]); } PeptideSp new_peptide_sp = new_peptide.makePeptideSp(); m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, new_peptide_sp, start, is_nter, missed_cleavage_number, semi_enzyme); } while(next_combination(position_list.begin(), position_list.begin() + comb_size, position_list.end())); comb_size++; } if(nb_pos <= m_maxNumberMod) { // the last combination : all aa are modified : Peptide new_peptide(*(peptide_sp_original.get())); for(unsigned int i = 0; i < nb_pos; i++) { new_peptide.addAaModification(mp_mod, position_list[i]); } PeptideSp new_peptide_sp = new_peptide.makePeptideSp(); m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, new_peptide_sp, start, is_nter, missed_cleavage_number, semi_enzyme); } } } else { // no modification m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp_original, start, is_nter, missed_cleavage_number, semi_enzyme); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidevariablemodificationbuilder.h000644 001750 001750 00000006540 14346367014 031635 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "peptidemodificatorbase.h" namespace pappso { /** \brief Modify a peptide shared pointer with a variable modification on one * AA * */ class PMSPP_LIB_DECL PeptideVariableModificationBuilder : public PeptideModificatorBase { public: PeptideVariableModificationBuilder(AaModificationP mod); virtual ~PeptideVariableModificationBuilder(); void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; void addAa(char aa); void setMaxNumberMod(unsigned int max_num) { m_maxNumberMod = max_num; }; void setMinNumberMod(unsigned int min_num) { m_minNumberMod = min_num; }; void setModificationCounter(unsigned int counter) { m_modificationCount = counter; }; void setSink(PeptideModificatorInterface *sink) override { m_sink = sink; }; /** \brief this modification concerns the Nter peptide * */ void setProtNter(bool arg1) { m_isProtNterMod = arg1; }; /** \brief this modification concerns the Cter peptide * */ void setProtCter(bool arg1) { m_isProtCterMod = arg1; }; /** \brief this modification concerns all peptides between Nter and Cter * */ void setProtElse(bool arg1) { m_isProtElseMod = arg1; }; protected: static bool next_combination(const std::vector::iterator first, std::vector::iterator k, const std::vector::iterator last); PeptideModificatorInterface *m_sink = nullptr; AaModificationP mp_mod; // minimum number of positions to modify unsigned int m_minNumberMod = 0; // maximum number of positions to modify unsigned int m_maxNumberMod = 30000; // modification counter per site unsigned int m_modificationCount = 0; // protein Nter modification bool m_isProtNterMod = true; // protein Cter modification bool m_isProtCterMod = true; bool m_isProtElseMod = true; private: QString m_aaModificationList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidevariablemodificationreplacement.cpp000644 001750 001750 00000015254 14526455546 033053 0ustar00rusconirusconi000000 000000 /** * \file protein/peptidevariablemodificationreplacement.h * \date 5/12/2016 * \author Olivier Langella * \brief potential replacement of a modification by an other */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peptidevariablemodificationreplacement.h" namespace pappso { PeptideVariableModificationReplacement::PeptideVariableModificationReplacement( AaModificationP mod_before, AaModificationP mod_after) : PeptideVariableModificationBuilder(mod_before) { mp_modAfter = mod_after; /** this forces to check that the targetted modified sites really has the * mod_before */ m_modificationCount = 1; } PeptideVariableModificationReplacement:: ~PeptideVariableModificationReplacement() { } void PeptideVariableModificationReplacement::replaceModificationsAtPosition( Peptide &new_peptide, unsigned int position) { // replace all mod_before by mod_after : Aa &aa = new_peptide.getAa(position); aa.removeAaModification(mp_mod); unsigned int i = 0; while(i < m_modificationCount) { aa.addAaModification(mp_modAfter); i++; } } void PeptideVariableModificationReplacement::setPeptideSp( std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) { // QString s = "Banana"; // s.replace(QRegExp("a[mn]"), "ox"); bool modify_this_peptide = true; if(m_isProtNterMod || m_isProtCterMod) { modify_this_peptide = false; if((m_isProtNterMod) && (is_nter)) { // this an Nter peptide modify_this_peptide = true; } else if((m_isProtCterMod) && (protein_sp.get()->size() == (start + peptide_sp_original.get()->size()))) { // this is a Cter peptide modify_this_peptide = true; } else if(m_isProtElseMod) { modify_this_peptide = true; } } if(modify_this_peptide) { std::vector position_list; getModificationPositionList( position_list, peptide_sp_original.get(), mp_mod, m_modificationCount); // std::vector< unsigned int > position_list = // peptide_sp_original.get()->getAaPositionList(_aamp_modification_list); // std::string s = "12345"; // no AA modification : if(m_minNumberMod == 0) { m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp_original, start, is_nter, missed_cleavage_number, semi_enzyme); } unsigned int nb_pos = position_list.size(); if(nb_pos > 0) { // loop to find 1 to n-1 AA modification combinations unsigned int comb_size = 1; while((comb_size < nb_pos) && (comb_size <= m_maxNumberMod)) { do { // std::cout << std::string(being,begin + comb_size) << // std::endl; Peptide new_peptide(*(peptide_sp_original.get())); for(unsigned int i = 0; i < comb_size; i++) { // new_peptide.addAaModification(mp_mod,position_list[i]); this->replaceModificationsAtPosition(new_peptide, position_list[i]); } PeptideSp new_peptide_sp = new_peptide.makePeptideSp(); m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, new_peptide_sp, start, is_nter, missed_cleavage_number, semi_enzyme); } while(next_combination(position_list.begin(), position_list.begin() + comb_size, position_list.end())); comb_size++; } if(nb_pos <= m_maxNumberMod) { // the last combination : all aa are modified : Peptide new_peptide(*(peptide_sp_original.get())); for(unsigned int i = 0; i < nb_pos; i++) { // new_peptide.addAaModification(mp_mod,position_list[i]); this->replaceModificationsAtPosition(new_peptide, position_list[i]); } PeptideSp new_peptide_sp = new_peptide.makePeptideSp(); m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, new_peptide_sp, start, is_nter, missed_cleavage_number, semi_enzyme); } } } else { // no modification m_sink->setPeptideSp(sequence_database_id, protein_sp, is_decoy, peptide_sp_original, start, is_nter, missed_cleavage_number, semi_enzyme); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/peptidevariablemodificationreplacement.h000644 001750 001750 00000004257 14346367014 032511 0ustar00rusconirusconi000000 000000 /** * \file protein/peptidevariablemodificationreplacement.h * \date 1/12/2016 * \author Olivier Langella * \brief potential replacement of a modification by an other */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "peptidevariablemodificationbuilder.h" namespace pappso { class PMSPP_LIB_DECL PeptideVariableModificationReplacement : public PeptideVariableModificationBuilder { public: PeptideVariableModificationReplacement(AaModificationP mod_before, AaModificationP mod_after); virtual ~PeptideVariableModificationReplacement(); void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override; private: void replaceModificationsAtPosition(Peptide &new_peptide, unsigned int position); AaModificationP mp_modAfter; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/protein.cpp000644 001750 001750 00000010766 14526455546 024570 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/protein/protein.cpp * \date 2/7/2015 * \author Olivier Langella * \brief object to handle a protein */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "protein.h" #include "../peptide/peptide.h" #include #include #include "../pappsoexception.h" namespace pappso { QRegularExpression Protein::m_removeTranslationStopRegExp("\\*$"); /* * http://www.ncbi.nlm.nih.gov/BLAST/blastcgihelp.shtml */ // For those programs that use amino acid query sequences (BLASTP and // TBLASTN), the accepted amino acid codes are: // // A alanine P proline // B aspartate/asparagine Q glutamine // C cystine R arginine // D aspartate S serine // E glutamate T threonine // F phenylalanine U selenocysteine // G glycine V valine // H histidine W tryptophan // I isoleucine Y tyrosine // K lysine Z glutamate/glutamine // L leucine X any // M methionine * translation stop // N asparagine - gap of indeterminate length Protein::Protein() { } Protein::Protein(const QString &description, const QString &sequence) : m_description(description.simplified()), m_accession(m_description.split(" ").at(0)), m_sequence(sequence) { m_description = m_description.remove(0, m_accession.size()).simplified(); // m_sequence.replace(m_removeTranslationStopRegExp, ""); m_length = m_sequence.size(); } Protein::Protein(const Protein &protein) : m_description(protein.m_description), m_accession(protein.m_accession), m_sequence(protein.m_sequence), m_length(protein.m_length) { } Protein & Protein::removeTranslationStop() { m_sequence.replace(m_removeTranslationStopRegExp, ""); return (*this); } Protein & Protein::reverse() { std::reverse(m_sequence.begin(), m_sequence.end()); return (*this); } ProteinSp Protein::makeProteinSp() const { return std::make_shared(*this); } bool Protein::operator==(const Protein &other) const { return (m_accession == other.m_accession); } void Protein::setSequence(const QString &sequence) { m_sequence = sequence.simplified(); m_length = m_sequence.size(); } unsigned int Protein::size() const { return m_length; } const QString & Protein::getSequence() const { return m_sequence; } const QString & Protein::getAccession() const { return m_accession; } void Protein::setAccession(const QString &accession) { m_accession = accession.simplified(); } const QString & Protein::getDescription() const { return m_description; } void Protein::setDescription(const QString &description) { m_description = description.simplified(); } Protein::~Protein() { } pappso_double Protein::getMass() const { try { // qDebug() << "ProteinXtp::getMass() begin " << // getOnlyAminoAcidSequence().replace("[BZX]","E"); // replace amino acid wildcard by E, just to give an random mass (assumed // it is not perfect) QString sequence(m_sequence); sequence.replace(QRegularExpression("[^WGASPVTLINDKQEMHFRCYUBZX]"), ""); pappso::Peptide peptide( sequence.replace(QRegularExpression("[BZX]"), "E")); return peptide.getMass(); } catch(pappso::PappsoException &error) { throw pappso::PappsoException( QObject::tr("Error computing mass for protein %1 :\n%2") .arg(getAccession()) .arg(error.qwhat())); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/protein.h000644 001750 001750 00000005357 14346367014 024225 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/protein/protein.h * \date 2/7/2015 * \author Olivier Langella * \brief object to handle a protein */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include "../types.h" #include "../exportinmportconfig.h" namespace pappso { class Protein; /** \brief shared pointer on a Protein object */ typedef std::shared_ptr ProteinSp; class PMSPP_LIB_DECL Protein { private: /** \brief free text to describe the protein */ QString m_description; /** \brief a single unique identifier of the protein (usually the first word * of description) */ QString m_accession; /** \brief the amino acid sequence */ QString m_sequence; /** \brief number of amino acid */ unsigned int m_length = 0; static QRegularExpression m_removeTranslationStopRegExp; public: Protein(); Protein(const QString &description, const QString &sequence); Protein(const Protein &protein); ProteinSp makeProteinSp() const; bool operator==(const Protein &other) const; ~Protein(); const QString &getSequence() const; void setSequence(const QString &sequence); const QString &getAccession() const; virtual void setAccession(const QString &accession); const QString &getDescription() const; void setDescription(const QString &description); /** \brief remove * characters at the end of the sequence */ Protein &removeTranslationStop(); /** \brief reverse characters in the sequence */ Protein &reverse(); /** \brief protein amino acid sequence size */ unsigned int size() const; /** \brief get monoisotopic mass of ProteinSp Protein::makeProteinSp() const */ pappso_double getMass() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/proteinintegercode.cpp000644 001750 001750 00000010432 14526455546 026767 0ustar00rusconirusconi000000 000000 /** * \file protein/proteinintegercode.cpp * \date 22/05/2023 * \author Olivier Langella * \brief transform protein amino acid sequence into vectors of amino acid codes */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "proteinintegercode.h" #include "../exception/exceptionoutofrange.h" using namespace pappso; ProteinIntegerCode::ProteinIntegerCode(ProteinSp protein, const AaStringCodec &codec, std::size_t aa_str_max_size) { msp_protein = protein; if(aa_str_max_size > 7) { throw ExceptionOutOfRange( QObject::tr("aa_str_max_size exceeds max size")); } QString seq_str = protein.get()->getSequence(); m_seqAaCode.clear(); for(const QChar &aa_str : seq_str) { m_seqAaCode.push_back(codec.getAaCode().getAaCode(aa_str.toLatin1())); } for(std::size_t i = 2; i <= aa_str_max_size; i++) { m_peptideCodedFragments.push_back(computePeptideCodeFragments(codec, i)); } } ProteinIntegerCode::ProteinIntegerCode(const ProteinIntegerCode &other) { msp_protein = other.msp_protein; m_seqAaCode = other.m_seqAaCode; m_peptideCodedFragments = other.m_peptideCodedFragments; } ProteinIntegerCode::~ProteinIntegerCode() { } std::vector pappso::ProteinIntegerCode::computePeptideCodeFragments( const AaStringCodec &codec, std::size_t fragment_size) const { std::vector fragments; int max = (m_seqAaCode.size() - fragment_size); if(max < 0) return fragments; auto it = m_seqAaCode.begin(); for(int i = 0; i <= max; i++) { fragments.push_back(codec.codeLlc(it, fragment_size)); it++; } return fragments; } const std::vector & pappso::ProteinIntegerCode::getPeptideCodedFragment(std::size_t size) const { if(size < 2) { throw ExceptionOutOfRange(QObject::tr("size too small")); } std::size_t indice = size - 2; if(indice < m_peptideCodedFragments.size()) { return m_peptideCodedFragments.at(indice); } throw ExceptionOutOfRange(QObject::tr("size too big")); } std::vector> pappso::ProteinIntegerCode::match( const std::vector &code_list_in) const { std::vector> return_pos; std::vector code_list = code_list_in; std::sort(code_list.begin(), code_list.end()); auto it_end = std::unique(code_list.begin(), code_list.end()); for(auto it_code = code_list.begin(); it_code != it_end; it_code++) { std::size_t size = 2; for(auto &liste_protein_seq_code : m_peptideCodedFragments) { auto it_seq_position = std::find(liste_protein_seq_code.begin(), liste_protein_seq_code.end(), *it_code); while(it_seq_position != liste_protein_seq_code.end()) { // found std::size_t position = std::distance(liste_protein_seq_code.begin(), it_seq_position); return_pos.push_back({size, position}); it_seq_position = std::find( ++it_seq_position, liste_protein_seq_code.end(), *it_code); qDebug(); } size++; qDebug(); } qDebug(); } return return_pos; } libpappsomspp-0.9.20/src/pappsomspp/protein/proteinintegercode.h000644 001750 001750 00000004343 14514537340 026426 0ustar00rusconirusconi000000 000000 /** * \file protein/proteinintegercode.h * \date 22/05/2023 * \author Olivier Langella * \brief transform protein amino acid sequence into vectors of amino acid codes */ /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include "../exportinmportconfig.h" #include "../amino_acid/aastringcodec.h" #include "protein.h" #include namespace pappso { /** * @brief */ class PMSPP_LIB_DECL ProteinIntegerCode { public: /** * Default constructor */ ProteinIntegerCode(ProteinSp protein, const AaStringCodec &codec, std::size_t aa_str_max_size = 5); /** * Copy constructor * * @param other TODO */ ProteinIntegerCode(const ProteinIntegerCode &other); /** * Destructor */ ~ProteinIntegerCode(); const std::vector & getPeptideCodedFragment(std::size_t size) const; std::vector> match(const std::vector &code_list) const; private: std::vector computePeptideCodeFragments(const AaStringCodec &codec, std::size_t fragment_size) const; private: ProteinSp msp_protein; std::vector m_seqAaCode; std::vector> m_peptideCodedFragments; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/protein/proteinpeptidelist.cpp000644 001750 001750 00000000175 14526455546 027030 0ustar00rusconirusconi000000 000000 #include "proteinpeptidelist.h" ProteinPeptideList::ProteinPeptideList() { } ProteinPeptideList::~ProteinPeptideList() { } libpappsomspp-0.9.20/src/pappsomspp/protein/proteinpeptidelist.h000644 001750 001750 00000002514 14346367014 026464 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/protein/proteinpeptidelist.h * \date 2/7/2015 * \author Olivier Langella * \brief object to handle a peptide list linked to one protein */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once class ProteinPeptideList { public: ProteinPeptideList(); ~ProteinPeptideList(); }; libpappsomspp-0.9.20/src/pappsomspp/psm/000755 001750 001750 00000000000 14533473271 021502 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/psm/deepprot/000755 001750 001750 00000000000 14533473271 023324 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/psm/deepprot/deepprotenum.cpp000644 001750 001750 00000012323 14526455546 026547 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/deepprot/deepprotenum.cpp * \date 22/1/2021 * \author Olivier Langella * \brief base type definition to use in DeepProt * * DeepProt is the C++ implementation of the SpecOMS algorithm * */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include #include "deepprotenum.h" #include "../../pappsoexception.h" pappso::DeepProtMatchType pappso::DeepProtEnumStr::DeepProtMatchTypeFromString(const QString &name) { DeepProtMatchType match_type = DeepProtMatchType::uncategorized; if(name == "delta_position") { match_type = DeepProtMatchType::DeltaPosition; } else if(name == "no_delta_position") { match_type = DeepProtMatchType::NoDeltaPosition; } else if(name == "uncategorized") { match_type = DeepProtMatchType::uncategorized; } else if(name == "zero_mass_delta") { match_type = DeepProtMatchType::ZeroMassDelta; } else if(name == "zero_mass_delta_mc") { match_type = DeepProtMatchType::ZeroMassDeltaMissedCleavage; } else if(name == "zero_mass_delta_st") { match_type = DeepProtMatchType::ZeroMassDeltaSemiTryptic; } else { throw pappso::PappsoException( QObject::tr("DeepProtMatchType unknown :\n%1").arg(name)); } return match_type; } pappso::DeepProtPeptideCandidateStatus pappso::DeepProtEnumStr::DeepProtPeptideCandidateStatusFromString( const QString &name) { DeepProtPeptideCandidateStatus status = DeepProtPeptideCandidateStatus::unmodified; if(name == "cter_removal") { status = DeepProtPeptideCandidateStatus::CterRemoval; } else if(name == "delta_position") { status = DeepProtPeptideCandidateStatus::DeltaPosition; } else if(name == "missed_cleavage") { status = DeepProtPeptideCandidateStatus::MissedCleavage; } else if(name == "no_delta_position") { status = DeepProtPeptideCandidateStatus::NoDeltaPosition; } else if(name == "nter_removal") { status = DeepProtPeptideCandidateStatus::NterRemoval; } else if(name == "zero_mass_delta") { status = DeepProtPeptideCandidateStatus::ZeroMassDelta; } else { throw pappso::PappsoException( QObject::tr("DeepProtPeptideCandidateStatus unknown :\n%1").arg(name)); } return status; } const QString pappso::DeepProtEnumStr::toString(pappso::DeepProtMatchType match_type) { QString match_type_str; switch(match_type) { case DeepProtMatchType::DeltaPosition: match_type_str = "delta_position"; break; case DeepProtMatchType::NoDeltaPosition: match_type_str = "no_delta_position"; break; case DeepProtMatchType::uncategorized: match_type_str = "uncategorized"; break; case DeepProtMatchType::ZeroMassDelta: match_type_str = "zero_mass_delta"; break; case DeepProtMatchType::ZeroMassDeltaMissedCleavage: match_type_str = "zero_mass_delta_mc"; break; case DeepProtMatchType::ZeroMassDeltaSemiTryptic: match_type_str = "zero_mass_delta_st"; break; default: throw pappso::PappsoException( QObject::tr("DeepProtMatchType unknown :\n%1") .arg((std::uint8_t)match_type)); } return match_type_str; } const QString pappso::DeepProtEnumStr::toString(pappso::DeepProtPeptideCandidateStatus status) { QString status_str; switch(status) { case DeepProtPeptideCandidateStatus::CterRemoval: status_str = "cter_removal"; break; case DeepProtPeptideCandidateStatus::DeltaPosition: status_str = "delta_position"; break; case DeepProtPeptideCandidateStatus::MissedCleavage: status_str = "missed_cleavage"; break; case DeepProtPeptideCandidateStatus::NoDeltaPosition: status_str = "no_delta_position"; break; case DeepProtPeptideCandidateStatus::NterRemoval: status_str = "nter_removal"; break; case DeepProtPeptideCandidateStatus::ZeroMassDelta: status_str = "zero_mass_delta"; break; default: throw pappso::PappsoException( QObject::tr("DeepProtPeptideCandidateStatus unknown :\n%1") .arg((std::uint8_t)status)); } return status_str; } libpappsomspp-0.9.20/src/pappsomspp/psm/deepprot/deepprotenum.h000644 001750 001750 00000005466 14514537340 026214 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/deepprot/deepprotenum.h * \date 22/1/2021 * \author Olivier Langella * \brief base type definition to use in DeepProt * * DeepProt is the C++ implementation of the SpecOMS algorithm * */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../exportinmportconfig.h" #include namespace pappso { /** @brief definition of different class of PSMs used by DeepProt */ enum class DeepProtMatchType : std::uint8_t { uncategorized = 0, ///< precursor mass was not compared ZeroMassDelta = 1, ///< peptide candidate is in precursor mz range ZeroMassDeltaMissedCleavage = 2, ///< peptide candidate with missed cleavage is in precursor mz range ZeroMassDeltaSemiTryptic = 3, ///< semi tryptic peptide candidate is in precursor mz range DeltaPosition = 4, ///< spectrum shifter on peptide candidate has detected a ///< position for the mass delta NoDeltaPosition = 5, ///< spectrum shifter on peptide candidate has not ///< detected a position for the mass delta last = 6 }; /** @brief definition of different status for potential peptide candidates on * the same spectrum */ enum class DeepProtPeptideCandidateStatus : std::uint8_t { unmodified = 0, ///< precursor mass was not compared ZeroMassDelta = 1, CterRemoval = 2, NterRemoval = 3, MissedCleavage = 4, DeltaPosition = 5, NoDeltaPosition = 6, last = 7 }; class PMSPP_LIB_DECL DeepProtEnumStr { public: static const QString toString(DeepProtMatchType match_type); static const QString toString(DeepProtPeptideCandidateStatus status); static DeepProtPeptideCandidateStatus DeepProtPeptideCandidateStatusFromString(const QString &name); static DeepProtMatchType DeepProtMatchTypeFromString(const QString &name); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/experimental/000755 001750 001750 00000000000 14533473271 024177 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/psm/experimental/ionisotoperatioscore.cpp000644 001750 001750 00000007767 14526455546 031216 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/experimental/ionisotoperatioscore.cpp * \date 18/05/2019 * \author Olivier Langella * \brief psm score computed using ion isotopes */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "ionisotoperatioscore.h" #include "../peptideisotopespectrummatch.h" #include "../../trace/linearregression.h" using namespace pappso; IonIsotopeRatioScore::IonIsotopeRatioScore(const MassSpectrum &spectrum, const PeptideSp &peptide_sp, unsigned int parent_charge, PrecisionPtr precision, std::vector ion_vector) { std::list ion_list(ion_vector.begin(), ion_vector.end()); PeptideIsotopeSpectrumMatch psm_match( spectrum, peptide_sp, parent_charge, precision, ion_list, 1, 1); Trace scaterplot; for(PeptideIon ion_type : ion_vector) { std::vector mono_th_intensities(peptide_sp.get()->size(), 0); std::vector isotope_th_intensities(peptide_sp.get()->size(), 0); std::vector mono_exp_intensities(peptide_sp.get()->size(), 0); std::vector isotope_exp_intensities(peptide_sp.get()->size(), 0); for(const PeakIonIsotopeMatch &peak_ion_match : psm_match.getPeakIonIsotopeMatchList()) { if(peak_ion_match.getPeptideIonType() == ion_type) { std::size_t vector_position = peak_ion_match.getPeptideFragmentIonSp().get()->size() - 1; PeptideNaturalIsotopeAverageSp iso_average_sp = peak_ion_match.getPeptideNaturalIsotopeAverageSp(); if(iso_average_sp.get()->getIsotopeNumber() == 0) { mono_th_intensities[vector_position] = iso_average_sp.get()->getIntensityRatio(); mono_exp_intensities[vector_position] = peak_ion_match.getPeak().y; } else if(iso_average_sp.get()->getIsotopeNumber() == 1) { isotope_th_intensities[vector_position] = iso_average_sp.get()->getIntensityRatio(); isotope_exp_intensities[vector_position] = peak_ion_match.getPeak().y; } } } for(std::size_t i = 0; i < mono_th_intensities.size(); i++) { if((mono_th_intensities[i] != 0) && (isotope_th_intensities[i] != 0)) { DataPoint xy(mono_th_intensities[i] / isotope_th_intensities[i], mono_exp_intensities[i] / isotope_exp_intensities[i]); scaterplot.push_back(xy); } } } scaterplot.sortX(); LinearRegression linear_regression(scaterplot); m_ionIsotopeRatioScore = linear_regression.getCoefficientOfDetermination(); } IonIsotopeRatioScore::~IonIsotopeRatioScore() { } pappso::pappso_double IonIsotopeRatioScore::getIonIsotopeRatioScore() const { return m_ionIsotopeRatioScore; } libpappsomspp-0.9.20/src/pappsomspp/psm/experimental/ionisotoperatioscore.h000644 001750 001750 00000003316 14346367014 030635 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/experimental/ionisotoperatioscore.h * \date 18/05/2019 * \author Olivier Langella * \brief psm score computed using ion isotopes */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../massspectrum/massspectrum.h" #include "../../peptide/peptide.h" namespace pappso { class PMSPP_LIB_DECL IonIsotopeRatioScore { public: IonIsotopeRatioScore(const MassSpectrum &spectrum, const PeptideSp &peptide_sp, unsigned int parent_charge, PrecisionPtr precision, std::vector ion_list); virtual ~IonIsotopeRatioScore(); pappso::pappso_double getIonIsotopeRatioScore() const; private: pappso::pappso_double m_ionIsotopeRatioScore; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/features/000755 001750 001750 00000000000 14533473271 023320 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/psm/features/psmfeatures.cpp000644 001750 001750 00000033045 14526455546 026376 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/features/psmfeatures.cpp * \date 19/07/2022 * \author Olivier Langella * \brief comutes various PSM (Peptide Spectrum Match) features */ /******************************************************************************* * Copyright (c) 2022 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #include "psmfeatures.h" #include #include using namespace pappso; PsmFeatures::PsmFeatures(PrecisionPtr ms2precision, double minimumMz) { m_ms2precision = ms2precision; m_ionList.push_back(PeptideIon::y); m_ionList.push_back(PeptideIon::b); msp_filterKeepGreater = std::make_shared(minimumMz); msp_filterChargeDeconvolution = std::make_shared(m_ms2precision); msp_filterMzExclusion = std::make_shared( PrecisionFactory::getPrecisionPtrFractionInstance(m_ms2precision, 0.5)); } PsmFeatures::~PsmFeatures() { } void PsmFeatures::setPeptideSpectrumCharge(const pappso::PeptideSp peptideSp, const MassSpectrum *p_spectrum, unsigned int parent_charge, unsigned int max_isotope_number) { m_peakIonPairs.clear(); msp_peptide = peptideSp; MassSpectrum spectrum(*p_spectrum); msp_filterKeepGreater.get()->filter(spectrum); // msp_filterChargeDeconvolution.get()->filter(spectrum); // msp_filterMzExclusion.get()->filter(spectrum); msp_peptideSpectrumMatch = std::make_shared(spectrum, peptideSp, parent_charge, m_ms2precision, m_ionList, max_isotope_number, 1); msp_peptideSpectrumMatch.get()->dropPeaksLackingMonoisotope(); m_spectrumSumIntensity = spectrum.sumY(); qDebug() << " accumulate"; std::vector delta_list; // TODO compute number of matched complementary peaks having m/z compatible // with the precursor m_precursorTheoreticalMz = peptideSp.get()->getMz(parent_charge); m_precursorTheoreticalMass = peptideSp.get()->getMass(); m_parentCharge = parent_charge; findComplementIonPairs(peptideSp); for(const pappso::PeakIonIsotopeMatch &peak_ion : msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList()) { delta_list.push_back( peak_ion.getPeptideFragmentIonSp().get()->getMz(peak_ion.getCharge()) - peak_ion.getPeak().x); } pappso::pappso_double sum = std::accumulate(delta_list.begin(), delta_list.end(), 0); qDebug() << " delta_list.size()=" << delta_list.size(); m_matchedMzDiffMean = 0; m_matchedMzDiffMedian = 0; m_matchedMzDiffSd = 0; if(delta_list.size() > 0) { m_matchedMzDiffMean = sum / ((pappso::pappso_double)delta_list.size()); std::sort(delta_list.begin(), delta_list.end()); m_matchedMzDiffMedian = delta_list[(delta_list.size() / 2)]; qDebug() << " sd"; m_matchedMzDiffSd = 0; for(pappso::pappso_double val : delta_list) { // sd = sd + ((val - mean) * (val - mean)); m_matchedMzDiffSd += std::pow((val - m_matchedMzDiffMean), 2); } m_matchedMzDiffSd = m_matchedMzDiffSd / delta_list.size(); m_matchedMzDiffSd = std::sqrt(m_matchedMzDiffSd); } else { } } double PsmFeatures::getIntensityOfMatchedIon(PeptideIon ion_type) { double sum = 0; for(const PeakIonMatch &peak_ion_match : *msp_peptideSpectrumMatch.get()) { if(peak_ion_match.getPeptideIonType() == ion_type) { sum += peak_ion_match.getPeak().y; } } return sum; } double PsmFeatures::getTotalIntensityOfMatchedIons() const { double sum = 0; for(const PeakIonMatch &peak_ion_match : *msp_peptideSpectrumMatch.get()) { sum += peak_ion_match.getPeak().y; } return sum; } double PsmFeatures::getTotalIntensity() const { return m_spectrumSumIntensity; } std::size_t pappso::PsmFeatures::countMatchedIonComplementPairs() const { return m_peakIonPairs.size(); } const std::vector< std::pair> & pappso::PsmFeatures::getPeakIonPairs() const { return m_peakIonPairs; } double pappso::PsmFeatures::getTotalIntensityOfMatchedIonComplementPairs() const { double sum = 0; for(auto &peak_pairs : m_peakIonPairs) { sum += peak_pairs.first.getPeak().y; sum += peak_pairs.second.getPeak().y; } return sum; } double pappso::PsmFeatures::getMatchedMzDiffSd() const { return m_matchedMzDiffSd; } double pappso::PsmFeatures::getMatchedMzDiffMean() const { return m_matchedMzDiffMean; } std::size_t pappso::PsmFeatures::getNumberOfMatchedIons() const { return msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList().size(); } std::size_t pappso::PsmFeatures::getMaxConsecutiveIon(pappso::PeptideIon ion_type) { std::size_t max = 0; auto peak_ion_match_list = msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList(); peak_ion_match_list.erase( std::remove_if( peak_ion_match_list.begin(), peak_ion_match_list.end(), [ion_type](const PeakIonIsotopeMatch &a) { if(a.getPeptideIonType() != ion_type) return true; if(a.getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber() > 0) return true; return false; }), peak_ion_match_list.end()); peak_ion_match_list.sort( [](const PeakIonIsotopeMatch &a, const PeakIonIsotopeMatch &b) { if(a.getCharge() < b.getCharge()) return true; if(a.getPeptideIonType() < b.getPeptideIonType()) return true; if(a.getPeptideFragmentIonSp().get()->size() < b.getPeptideFragmentIonSp().get()->size()) return true; return false; }); unsigned int charge = 0; std::size_t size = 0; std::size_t count = 0; for(std::list::iterator it = peak_ion_match_list.begin(); it != peak_ion_match_list.end(); it++) { qDebug() << it->toString() << max << " " << it->getPeak().x << " " << it->getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber(); count++; if((charge != it->getCharge()) || (size != (it->getPeptideFragmentIonSp().get()->size() - 1))) { count = 1; charge = it->getCharge(); } if(max < count) max = count; size = it->getPeptideFragmentIonSp().get()->size(); } return max; } std::size_t pappso::PsmFeatures::getAaSequenceCoverage(pappso::PeptideIon ion_type) { std::vector covered; covered.resize(msp_peptide.get()->size(), false); for(auto &peak : msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList()) { if(peak.getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber() == 0) { // only count with monotisotopic if(peak.getPeptideIonType() == ion_type) { covered[peak.getPeptideFragmentIonSp().get()->size() - 1] = true; } } } return std::count(covered.begin(), covered.end(), true); } std::size_t pappso::PsmFeatures::getComplementPairsAaSequenceCoverage() { std::vector covered; covered.resize(msp_peptide.get()->size(), false); for(auto &peak_pair : m_peakIonPairs) { std::size_t pos = peak_pair.first.getPeptideFragmentIonSp().get()->size() - 1; covered[pos] = true; covered[pos + 1] = true; } return std::count(covered.begin(), covered.end(), true); } double pappso::PsmFeatures::getMaxIntensityPeakIonMatch( pappso::PeptideIon ion_type) const { std::list peak_ion_type = msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList(); peak_ion_type.remove_if([ion_type](const PeakIonIsotopeMatch &a) { return (a.getPeptideIonType() != ion_type); }); auto peak_it = std::max_element( peak_ion_type.begin(), peak_ion_type.end(), [](const PeakIonIsotopeMatch &a, const PeakIonIsotopeMatch &b) { return (a.getPeak().y < b.getPeak().y); }); if(peak_it == peak_ion_type.end()) return 0; return peak_it->getPeak().y; } double pappso::PsmFeatures::getMaxIntensityMatchedIonComplementPairPrecursorMassDelta() const { auto peak_it = std::max_element( m_peakIonPairs.begin(), m_peakIonPairs.end(), [](const std::pair &a, const std::pair &b) { return ((a.first.getPeak().y + a.second.getPeak().y) < (b.first.getPeak().y + b.second.getPeak().y)); }); if(peak_it == m_peakIonPairs.end()) return 0; return getIonPairPrecursorMassDelta(*peak_it); } double pappso::PsmFeatures::getIonPairPrecursorMassDelta( const std::pair &ion_pair) const { qDebug() << m_precursorTheoreticalMz << " " << ion_pair.first.getPeak().x << " " << ion_pair.second.getPeak().x << " " << ion_pair.second.getCharge() << " " << ion_pair.first.getCharge() << " " << m_parentCharge; double diff = (m_precursorTheoreticalMass + (MHPLUS * ion_pair.first.getCharge())) / ion_pair.first.getCharge(); return (diff - (ion_pair.first.getPeak().x + ion_pair.second.getPeak().x - ((MHPLUS * ion_pair.first.getCharge())) / ion_pair.first.getCharge())); } void pappso::PsmFeatures::findComplementIonPairs(const pappso::PeptideSp &peptideSp) { std::size_t peptide_size = peptideSp.get()->size(); std::vector ion_isotope_list( msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList().begin(), msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList().end()); for(const pappso::PeakIonIsotopeMatch &peak_ion_ext : ion_isotope_list) { if(peptideIonIsNter(peak_ion_ext.getPeptideIonType())) { auto it = findComplementIonType(ion_isotope_list.begin(), ion_isotope_list.end(), peak_ion_ext, peptide_size); if(it != ion_isotope_list.end()) { // contains the complementary ion m_peakIonPairs.push_back({peak_ion_ext, *it}); } } } } LinearRegression pappso::PsmFeatures::getIonIsotopeLinearRegression() const { std::size_t peptide_size = msp_peptide.get()->size(); std::vector ion_isotope_list( msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList().begin(), msp_peptideSpectrumMatch.get()->getPeakIonIsotopeMatchList().end()); Trace scaterplot; for(PeptideIon ion_type : m_ionList) { std::vector mono_th_intensities(peptide_size, 0); std::vector isotope_th_intensities(peptide_size, 0); std::vector mono_exp_intensities(peptide_size, 0); std::vector isotope_exp_intensities(peptide_size, 0); for(const PeakIonIsotopeMatch &peak_ion_match : ion_isotope_list) { if(peak_ion_match.getPeptideIonType() == ion_type) { std::size_t vector_position = peak_ion_match.getPeptideFragmentIonSp().get()->size() - 1; PeptideNaturalIsotopeAverageSp iso_average_sp = peak_ion_match.getPeptideNaturalIsotopeAverageSp(); if(iso_average_sp.get()->getIsotopeNumber() == 0) { mono_th_intensities[vector_position] = iso_average_sp.get()->getIntensityRatio(); mono_exp_intensities[vector_position] = peak_ion_match.getPeak().y; } else if(iso_average_sp.get()->getIsotopeNumber() == 1) { isotope_th_intensities[vector_position] = iso_average_sp.get()->getIntensityRatio(); isotope_exp_intensities[vector_position] = peak_ion_match.getPeak().y; } } } for(std::size_t i = 0; i < mono_th_intensities.size(); i++) { if((mono_th_intensities[i] != 0) && (isotope_th_intensities[i] != 0)) { DataPoint xy(mono_th_intensities[i] / isotope_th_intensities[i], mono_exp_intensities[i] / isotope_exp_intensities[i]); scaterplot.push_back(xy); } } } scaterplot.sortX(); LinearRegression linear_regression(scaterplot); return linear_regression; } libpappsomspp-0.9.20/src/pappsomspp/psm/features/psmfeatures.h000644 001750 001750 00000011726 14417445171 026035 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/features/psmfeatures.h * \date 19/07/2022 * \author Olivier Langella * \brief comutes various PSM (Peptide Spectrum Match) features */ /******************************************************************************* * Copyright (c) 2022 Olivier Langella . * * This file is part of PAPPSOms-tools. * * PAPPSOms-tools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms-tools is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms-tools. If not, see . * ******************************************************************************/ #pragma once #include "../../massspectrum/massspectrum.h" #include "../../mzrange.h" #include "../../peptide/peptidefragmention.h" #include "../../processing/filters/filterchargedeconvolution.h" #include "../../processing/filters/filterexclusionmz.h" #include "../../processing/filters/filterresample.h" #include "../peptideisotopespectrummatch.h" #include "../../trace/linearregression.h" namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL PsmFeatures { public: /** @brief compute psm features * @param ms2precision precision of mass measurements for MS2 fragments * @param minimumMz ignore mz values under this threshold */ PsmFeatures(PrecisionPtr ms2precision, double minimumMz); /** * Destructor */ ~PsmFeatures(); void setPeptideSpectrumCharge(const pappso::PeptideSp peptideSp, const MassSpectrum *p_spectrum, unsigned int parent_charge, unsigned int max_isotope_number); /** @brief get the sum of intensity of a specific ion * @param ion_type ion species (y, b, ...) */ double getIntensityOfMatchedIon(PeptideIon ion_type); /** @brief sum of all peak intensities (matched or not) */ double getTotalIntensity() const; /** @brief sum of matched peak intensities */ double getTotalIntensityOfMatchedIons() const; /** @brief number of matched ions (peaks) */ std::size_t getNumberOfMatchedIons() const; /** @brief count the number of matched ion complement * * matched ion complement are ions with a sum compatible to the precursor mass * */ std::size_t countMatchedIonComplementPairs() const; /** @brief intensity of matched ion complement */ double getTotalIntensityOfMatchedIonComplementPairs() const; const std::vector< std::pair> & getPeakIonPairs() const; /** @brief get mean deviation of matched peak mass delta */ double getMatchedMzDiffMean() const; /** @brief get standard deviation of matched peak mass delta */ double getMatchedMzDiffSd() const; /** @brief get the precursor mass delta of the maximum intensity pair of * complement ions */ double getMaxIntensityMatchedIonComplementPairPrecursorMassDelta() const; /** @brief get the maximum consecutive fragments of one ion type * @param ion_type ion species (y, b, ...) */ std::size_t getMaxConsecutiveIon(PeptideIon ion_type); /** @brief number of amino acid covered by matched ions */ std::size_t getAaSequenceCoverage(PeptideIon ion_type); /** @brief number of amino acid covered by matched complement pairs of ions */ std::size_t getComplementPairsAaSequenceCoverage(); double getMaxIntensityPeakIonMatch(PeptideIon ion_type) const; double getIonPairPrecursorMassDelta( const std::pair &ion_pair) const; /** experimental use with caution */ LinearRegression getIonIsotopeLinearRegression() const; private: void findComplementIonPairs(const pappso::PeptideSp &peptideSp); private: std::shared_ptr msp_filterChargeDeconvolution; std::shared_ptr msp_filterMzExclusion; std::shared_ptr msp_filterKeepGreater; std::shared_ptr msp_peptideSpectrumMatch; pappso::PeptideSp msp_peptide; PrecisionPtr m_ms2precision; std::list m_ionList; double m_spectrumSumIntensity; double m_precursorTheoreticalMz; double m_precursorTheoreticalMass; unsigned int m_parentCharge = 1; std::vector< std::pair> m_peakIonPairs; double m_matchedMzDiffMean = 0; double m_matchedMzDiffMedian = 0; double m_matchedMzDiffSd = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/morpheus/000755 001750 001750 00000000000 14533473271 023344 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/psm/morpheus/morpheusscore.cpp000644 001750 001750 00000010163 14526455546 026756 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/morpheusscore.cpp * \date 16/7/2016 * \author Olivier Langella * \brief computation of Morpheus score * https://github.com/cwenger/Morpheus/blob/master/Morpheus/Morpheus/PeptideSpectrumMatch.cs */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "morpheusscore.h" #include "../../trace/datapoint.h" #include "../../massspectrum/massspectrum.h" namespace pappso { MorpheusScore::MorpheusScore(const MassSpectrum &spectrum, pappso::PeptideSp peptide_sp, unsigned int parent_charge, PrecisionPtr precision, std::vector ion_list, RawFragmentationMode fragmentation_mode) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; PeptideRawFragmentMasses calc_mass_list_proline(*peptide_sp.get(), fragmentation_mode); std::vector ion_products; unsigned int charge = parent_charge; while(charge > 0) { for(PeptideIon &ion : ion_list) { calc_mass_list_proline.pushBackIonMz(ion_products, ion, charge); } charge--; } // compute the number of matched peaks unsigned int number_of_matched_peaks = 0; std::sort(ion_products.begin(), ion_products.end()); // compute ratio of matched peaks on total peaks std::vector::const_iterator it_theoretical = ion_products.begin(); std::vector::const_iterator it_theoretical_end = ion_products.end(); std::vector::const_iterator it_spectrum = spectrum.begin(); std::vector::const_iterator it_spectrum_end = spectrum.end(); pappso::pappso_double sum_intensities = 0; pappso::pappso_double sum_matched_intensities = 0; // unsigned int peak_number = spectrum.size(); while((it_spectrum != it_spectrum_end) && (it_theoretical != it_theoretical_end)) { sum_intensities += it_spectrum->y; MzRange peak_range(it_spectrum->x, precision); while((it_theoretical != it_theoretical_end) && (*it_theoretical < peak_range.lower())) { it_theoretical++; } while((it_theoretical != it_theoretical_end) && peak_range.contains(*it_theoretical)) { sum_matched_intensities += it_spectrum->y; number_of_matched_peaks++; it_theoretical++; } it_spectrum++; } while(it_spectrum != it_spectrum_end) { sum_intensities += it_spectrum->y; it_spectrum++; } // compute the sum of matching peak intensities // morpheus score = number of matched peaks + matching intensities ratio _morpheus_score = (pappso_double)number_of_matched_peaks + (sum_matched_intensities / sum_intensities); qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } MorpheusScore::~MorpheusScore() { } pappso::pappso_double MorpheusScore::getMorpheusScore() const { return _morpheus_score; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/morpheus/morpheusscore.h000644 001750 001750 00000003646 14346367014 026423 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/morpheusscore.h * \date 16/7/2016 * \author Olivier Langella * \brief computation of Morpheus score * https://github.com/cwenger/Morpheus/blob/master/Morpheus/Morpheus/PeptideSpectrumMatch.cs */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../../massspectrum/massspectrum.h" #include "../../peptide/peptide.h" #include "../../peptide/peptiderawfragmentmasses.h" namespace pappso { class PMSPP_LIB_DECL MorpheusScore { public: MorpheusScore(const MassSpectrum &spectrum, pappso::PeptideSp peptideSp, unsigned int parent_charge, PrecisionPtr precision, std::vector ion_list, RawFragmentationMode fragmentation_mode); ~MorpheusScore(); pappso::pappso_double getMorpheusScore() const; private: pappso::pappso_double _morpheus_score; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/xtandem/000755 001750 001750 00000000000 14533473271 023142 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp000644 001750 001750 00000021614 14526455546 027425 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/xtandemhyperscore.cpp * \date 19/3/2015 * \author Olivier Langella * \brief computation of the X!Tandem hyperscore */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include "../../pappsoexception.h" #include "../../peptide/peptidefragment.h" #include "../../peptide/peptidefragmentionlistbase.h" #include "xtandemhyperscore.h" #include "../peptidespectrummatch.h" namespace pappso { unsigned int factorial(unsigned int n) { unsigned int retval = 1; for(int i = n; i > 1; --i) retval *= i; return retval; } XtandemHyperscore::XtandemHyperscore(const MassSpectrum &spectrum, pappso::PeptideSp peptideSp, unsigned int parent_charge, PrecisionPtr precision, std::list ion_list, bool refine_spectrum_synthesis) : _refine_spectrum_synthesis(refine_spectrum_synthesis) { try { /* if ((peptide_ion_sp.get()->getPeptideIonType() == PeptideIon::c) || (peptide_ion_sp.get()->getPeptideIonType() == PeptideIon::z)) { if(current_max_charge > 2) { current_max_charge--; } }*/ unsigned int max_charge = parent_charge; if(parent_charge > 1) { max_charge = parent_charge - 1; } PeptideSpectrumMatch psm( spectrum, peptideSp, max_charge, precision, ion_list); _ion_count = {{PeptideIon::a, 0}, {PeptideIon::b, 0}, {PeptideIon::bo, 0}, {PeptideIon::bstar, 0}, {PeptideIon::c, 0}, {PeptideIon::y, 0}, {PeptideIon::yo, 0}, {PeptideIon::ystar, 0}, {PeptideIon::z, 0}}; std::map ion_count; for(auto &&ion_type : ion_list) { ion_count.insert(std::pair(ion_type, 0)); } std::map charge_dot_product; std::map> charge_ion_count; for(unsigned int i = 1; i <= max_charge; i++) { charge_dot_product.insert( std::pair(i, 0)); charge_ion_count.insert( std::pair>( i, ion_count)); } QString sequence = peptideSp.get()->getSequence(); for(auto &&peptide_ion_match : psm) { PeptideIon ion_type = peptide_ion_match.getPeptideIonType(); unsigned int charge = peptide_ion_match.getCharge(); charge_dot_product[charge] += peptide_ion_match.getPeak().y * getXtandemPredictedIonIntensityFactor( sequence, peptide_ion_match.getPeptideIonDirection(), peptide_ion_match.getPeptideFragmentIonSp().get()->size()); charge_ion_count[charge][ion_type] += 1; _ion_count[ion_type] += 1; } qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " _ion_count[PeptideIon::y]=" << _ion_count[PeptideIon::y]; // take the 2 best component pappso_double sum_intensity = 0; for(unsigned int i = 1; i <= max_charge; i++) { sum_intensity += charge_dot_product[i]; } for(auto count : _ion_count) { sum_intensity *= factorial(count.second); } _proto_hyperscore = sum_intensity; } catch(PappsoException &exception_pappso) { QString errorStr = QObject::tr("ERROR computing hyperscore, PAPPSO exception:\n%1") .arg(exception_pappso.qwhat()); qDebug() << "XtandemHyperscore::XtandemHyperscore PappsoException :\n" << errorStr; throw PappsoException(errorStr); } catch(std::exception &exception_std) { QString errorStr = QObject::tr("ERROR computing hyperscore, std exception:\n%1") .arg(exception_std.what()); qDebug() << "XtandemHyperscore::XtandemHyperscore std::exception :\n" << errorStr; throw PappsoException(errorStr); } } XtandemHyperscore::XtandemHyperscore(const XtandemHyperscore &other) { _ion_count = other._ion_count; _proto_hyperscore = other._proto_hyperscore; _refine_spectrum_synthesis = other._refine_spectrum_synthesis; } unsigned int XtandemHyperscore::getMatchedIons(PeptideIon ion_type) const { return _ion_count.at(ion_type); } XtandemHyperscore::~XtandemHyperscore() { } XtandemHyperscore::AaFactorMap XtandemHyperscore::_aa_ion_factor_y = [] { AaFactorMap ret; // populate ret for(long c = 64; c < 126; c++) { ret.insert(std::pair(c, pappso_double(1.0))); } ret['P'] = pappso_double(5.0); return ret; }(); XtandemHyperscore::AaFactorMap XtandemHyperscore::_aa_ion_factor_b = [] { AaFactorMap ret; // populate ret for(long c = 64; c < 126; c++) { ret.insert(std::pair(c, pappso_double(1.0))); } ret['D'] = pappso_double(5.0); ret['N'] = pappso_double(2.0); ret['V'] = pappso_double(3.0); ret['E'] = pappso_double(3.0); ret['Q'] = pappso_double(2.0); ret['I'] = pappso_double(3.0); ret['L'] = pappso_double(3.0); return ret; }(); unsigned int XtandemHyperscore::getXtandemPredictedIonIntensityFactor( const QString &sequence, PeptideDirection ion_direction, unsigned int ion_size) const { unsigned int Pi(1); char last_aa_nter('_'), last_aa_cter('_'); if(ion_direction == PeptideDirection::Nter) { last_aa_nter = sequence[ion_size - 1].toLatin1(); last_aa_cter = sequence[ion_size].toLatin1(); if(ion_size == 2) { if(last_aa_nter == 'P') { Pi *= 10; } else { Pi *= 3; } } } else { unsigned int offset(sequence.size() - ion_size); last_aa_nter = sequence[offset - 1].toLatin1(); last_aa_cter = sequence[offset].toLatin1(); if((offset) == 2) { if(last_aa_nter == 'P') { Pi *= 10; } else { Pi *= 3; } } } // QDebug << " last_aa_nter=" << QChar(last_aa_nter) << " // _aa_ion_factor_b[last_aa_nter]="s ; qDebug() << PeptideFragment::getPeptideIonDirectionName(ion_direction) << " last_aa_nter=" << last_aa_nter << " _aa_ion_factor_b[last_aa_nter]=" << _aa_ion_factor_b[last_aa_nter] << " last_aa_cter=" << last_aa_cter << " _aa_ion_factor_y[last_aa_cter]=" << _aa_ion_factor_y[last_aa_cter]; if(_refine_spectrum_synthesis) { Pi *= _aa_ion_factor_b[last_aa_nter] * _aa_ion_factor_y[last_aa_cter]; } return Pi; } pappso_double XtandemHyperscore::getHyperscore() const { try { qDebug() << " _proto_hyperscore=" << _proto_hyperscore; double hyperscore = (log10(_proto_hyperscore) * 4); if(hyperscore < 0) return 0; return hyperscore; } catch(PappsoException &exception_pappso) { QString errorStr = QObject::tr("ERROR in getHyperscore, PAPPSO exception:\n%1") .arg(exception_pappso.qwhat()); qDebug() << "XtandemHyperscore::getHyperscore PappsoException :\n" << errorStr; throw PappsoException(errorStr); } catch(std::exception &exception_std) { QString errorStr = QObject::tr("ERROR in getHyperscore, std exception:\n%1") .arg(exception_std.what()); qDebug() << "XtandemHyperscore::getHyperscore std::exception :\n" << errorStr; throw PappsoException(errorStr); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/xtandem/xtandemhyperscore.h000644 001750 001750 00000004600 14346367014 027056 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/xtandem/xtandemhyperscore.h * \date 19/3/2015 * \author Olivier Langella * \brief computation of the X!Tandem hyperscore */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../../massspectrum/massspectrum.h" #include "../../mzrange.h" #include "../../peptide/peptidefragmention.h" namespace pappso { class PMSPP_LIB_DECL XtandemHyperscore { public: using AaFactorMap = std::map; XtandemHyperscore(const MassSpectrum &spectrum, pappso::PeptideSp peptideSp, unsigned int parent_charge, PrecisionPtr precision, std::list ion_list, bool refine_spectrum_synthesis); XtandemHyperscore(const XtandemHyperscore &other); ~XtandemHyperscore(); pappso_double getHyperscore() const; unsigned int getMatchedIons(PeptideIon ion_type) const; private: bool _refine_spectrum_synthesis; unsigned int getXtandemPredictedIonIntensityFactor(const QString &sequence, PeptideDirection ion_direction, unsigned int ion_size) const; pappso_double _proto_hyperscore; std::map _ion_count; static AaFactorMap _aa_ion_factor_y; static AaFactorMap _aa_ion_factor_b; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp000644 001750 001750 00000020416 14526455546 030122 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp * \date 8/9/2016 * \author Olivier Langella * \brief computation of the X!Tandem hyperscore */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "xtandemhyperscorebis.h" #include #include "../../peptide/peptiderawfragmentmasses.h" #include "../../pappsoexception.h" // FIXME pourquoi ici cette directive et pas le namespace habituel ? using namespace pappso; unsigned int factorial(unsigned int n) { unsigned int retval = 1; for(int i = n; i > 1; --i) retval *= i; return retval; } XtandemHyperscoreBis::XtandemHyperscoreBis( bool refine_spectrum_synthesis, PrecisionPtr precision, const std::vector &ion_list) { m_isRefineSpectrumSynthesis = refine_spectrum_synthesis; mp_precision = precision; m_ionList = ion_list; m_totalMatchedIons = 0; } XtandemHyperscoreBis::~XtandemHyperscoreBis() { } unsigned int XtandemHyperscoreBis::getMatchedIons(PeptideIon ion_type) const { return m_ionCount[(std::int8_t)ion_type]; } void XtandemHyperscoreBis::reset() { std::fill(m_ionCount, m_ionCount + PEPTIDE_ION_TYPE_COUNT, 0); m_totalMatchedIons = 0; m_protoHyperscore = 0; } bool XtandemHyperscoreBis::computeXtandemHyperscore(const MassSpectrum &spectrum, const Peptide &peptide, unsigned int parent_charge) { try { unsigned int max_charge = parent_charge; if(parent_charge > 1) { max_charge = parent_charge - 1; } // PeptideSpectrumMatch psm (spectrum, peptideSp, max_charge, precision, // ion_list); PeptideRawFragmentMasses calc_mass_list(peptide, RawFragmentationMode::full); std::vector match_products; unsigned int charge_i; for(PeptideIon &ion : m_ionList) { charge_i = max_charge; while(charge_i > 0) { calc_mass_list.pushBackMatchSpectrum( match_products, spectrum, mp_precision, ion, charge_i); charge_i--; } } m_totalMatchedIons = match_products.size(); if(m_totalMatchedIons == 0) { m_protoHyperscore = 0; } else { unsigned int charge_ion_count[5][20] = {0}; pappso_double charge_dot_product[5] = {0}; QString sequence = peptide.getSequence(); for(SimplePeakIonMatch &peptide_ion_match : match_products) { charge_dot_product[peptide_ion_match.ion_charge] += peptide_ion_match.peak.y * getXtandemPredictedIonIntensityFactor( sequence, peptide_ion_match.ion_type, peptide_ion_match.ion_size); charge_ion_count[peptide_ion_match.ion_charge] [(std::int8_t)peptide_ion_match.ion_type] += 1; m_ionCount[(std::int8_t)peptide_ion_match.ion_type] += 1; } // take the 2 best component pappso_double sum_intensity = 0; for(unsigned int i = 1; i <= max_charge; i++) { sum_intensity += charge_dot_product[i]; } for(auto count : m_ionCount) { sum_intensity *= factorial(count); } m_protoHyperscore = sum_intensity; } return true; } catch(PappsoException &exception_pappso) { QString errorStr = QObject::tr("ERROR computing hyperscore, PAPPSO exception:\n%1") .arg(exception_pappso.qwhat()); qDebug() << "XtandemHyperscore::XtandemHyperscore PappsoException :\n" << errorStr; throw PappsoException(errorStr); } catch(std::exception &exception_std) { QString errorStr = QObject::tr("ERROR computing hyperscore, std exception:\n%1") .arg(exception_std.what()); qDebug() << "XtandemHyperscore::XtandemHyperscore std::exception :\n" << errorStr; throw PappsoException(errorStr); } } XtandemHyperscoreBis::AaFactorMap XtandemHyperscoreBis::m_aaIonFactorY = [] { AaFactorMap ret; // populate ret for(long c = 64; c < 126; c++) { ret.insert(std::pair(c, pappso_double(1.0))); } ret['P'] = pappso_double(5.0); return ret; }(); XtandemHyperscoreBis::AaFactorMap XtandemHyperscoreBis::m_aaIonFactorBb = [] { AaFactorMap ret; // populate ret for(long c = 64; c < 126; c++) { ret.insert(std::pair(c, pappso_double(1.0))); } ret['D'] = pappso_double(5.0); ret['N'] = pappso_double(2.0); ret['V'] = pappso_double(3.0); ret['E'] = pappso_double(3.0); ret['Q'] = pappso_double(2.0); ret['I'] = pappso_double(3.0); ret['L'] = pappso_double(3.0); return ret; }(); unsigned int XtandemHyperscoreBis::getXtandemPredictedIonIntensityFactor( const QString &sequence, PeptideIon ion_type, unsigned int ion_size) const { unsigned int Pi(1); char last_aa_nter('_'), last_aa_cter('_'); if(peptideIonIsNter(ion_type)) { last_aa_nter = sequence[ion_size - 1].toLatin1(); last_aa_cter = sequence[ion_size].toLatin1(); if(ion_size == 2) { if(last_aa_nter == 'P') { Pi *= 10; } else { Pi *= 3; } } } else { unsigned int offset(sequence.size() - ion_size); last_aa_nter = sequence[offset - 1].toLatin1(); last_aa_cter = sequence[offset].toLatin1(); if((offset) == 2) { if(last_aa_nter == 'P') { Pi *= 10; } else { Pi *= 3; } } } // QDebug << " last_aa_nter=" << QChar(last_aa_nter) << " // m_aaIonFactorBb[last_aa_nter]="s ; // qDebug() << PeptideFragment::getPeptideIonDirectionName(ion_direction) << " // last_aa_nter=" << last_aa_nter << " m_aaIonFactorBb[last_aa_nter]=" << // m_aaIonFactorBb[last_aa_nter] << " last_aa_cter=" << last_aa_cter << " // m_aaIonFactorY[last_aa_cter]=" << m_aaIonFactorY[last_aa_cter]; if(m_isRefineSpectrumSynthesis) { Pi *= m_aaIonFactorBb[last_aa_nter] * m_aaIonFactorY[last_aa_cter]; } return Pi; } unsigned int XtandemHyperscoreBis::getTotalMatchedIons() const { return m_totalMatchedIons; } pappso_double XtandemHyperscoreBis::getHyperscore() const { try { if(m_protoHyperscore == 0) return 0.0; return (log10(m_protoHyperscore) * 4); } catch(PappsoException &exception_pappso) { QString errorStr = QObject::tr("ERROR in getHyperscore, PAPPSO exception:\n%1") .arg(exception_pappso.qwhat()); qDebug() << "XtandemHyperscore::getHyperscore PappsoException :\n" << errorStr; throw PappsoException(errorStr); } catch(std::exception &exception_std) { QString errorStr = QObject::tr("ERROR in getHyperscore, std exception:\n%1") .arg(exception_std.what()); qDebug() << "XtandemHyperscore::getHyperscore std::exception :\n" << errorStr; throw PappsoException(errorStr); } } libpappsomspp-0.9.20/src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h000644 001750 001750 00000005030 14346367014 027552 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/xtandem/xtandemhyperscorebis.h * \date 8/9/2016 * \author Olivier Langella * \brief computation of the X!Tandem hyperscore */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../../massspectrum/massspectrum.h" #include "../../peptide/peptide.h" namespace pappso { class XtandemHyperscoreBis { using AaFactorMap = std::map; private: unsigned int getXtandemPredictedIonIntensityFactor(const QString &sequence, PeptideIon ion_type, unsigned int size) const; bool m_isRefineSpectrumSynthesis; PrecisionPtr mp_precision; std::vector m_ionList; unsigned int m_totalMatchedIons = 0; unsigned int m_ionCount[PEPTIDE_ION_TYPE_COUNT] = {0}; pappso_double m_protoHyperscore; static AaFactorMap m_aaIonFactorY; static AaFactorMap m_aaIonFactorBb; public: XtandemHyperscoreBis(bool refine_spectrum_synthesis, PrecisionPtr precision, const std::vector &ion_list); ~XtandemHyperscoreBis(); pappso_double getHyperscore() const; unsigned int getMatchedIons(PeptideIon ion_type) const; void reset(); bool computeXtandemHyperscore(const MassSpectrum &spectrum, const Peptide &peptide, unsigned int parent_charge); unsigned int getTotalMatchedIons() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp000644 001750 001750 00000022665 14526455546 030512 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/xtandem/xtandemhyperscore.cpp * \date 16/8/2016 * \author Olivier Langella * \brief process spectrum to compute X!Tandem hyperscore */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "xtandemspectrumprocess.h" #include namespace pappso { XtandemSpectrumProcess::XtandemSpectrumProcess() : m_filter_keep_greater(150), m_n_most_intense(100), m_filter_rescale(100), m_filter_highpass(0.9) { } XtandemSpectrumProcess::XtandemSpectrumProcess( const XtandemSpectrumProcess ©) : m_filter_keep_greater(copy.m_filter_keep_greater), m_n_most_intense(copy.m_n_most_intense), m_filter_rescale(copy.m_filter_rescale), m_filter_highpass(copy.m_filter_highpass) { m_isRemoveIsotope = copy.m_isRemoveIsotope; m_isExcludeParent_neutral_loss = copy.m_isExcludeParent_neutral_loss; m_neutralLossMass = copy.m_neutralLossMass; m_neutralLossWindowDalton = copy.m_neutralLossWindowDalton; m_isExcludeParent = copy.m_isExcludeParent; m_isExcludeParent_lower_dalton = copy.m_isExcludeParent_lower_dalton; m_isExcludeParent_upper_dalton = copy.m_isExcludeParent_upper_dalton; m_isRefineSpectrumModel = copy.m_isRefineSpectrumModel; _y_ions = copy._y_ions; // PeptideIon::y _b_ions = copy._b_ions; // PeptideIon::b _ystar_ions = copy._ystar_ions; // PeptideIon::ystar _bstar_ions = copy._bstar_ions; // PeptideIon::bstar _c_ions = copy._c_ions; // PeptideIon::c _z_ions = copy._z_ions; // PeptideIon::z _a_ions = copy._a_ions; // PeptideIon::a _x_ions = copy._x_ions; // CO2 _astar_ions = copy._astar_ions; // PeptideIon::a _ao_ions = copy._ao_ions; _bo_ions = copy._bo_ions; _yo_ions = copy._yo_ions; } XtandemSpectrumProcess::~XtandemSpectrumProcess() { } void XtandemSpectrumProcess::setMinimumMz(pappso_double minimum_mz) { m_filter_keep_greater = FilterResampleKeepGreater(minimum_mz); } void XtandemSpectrumProcess::setNmostIntense(unsigned int nmost_intense) { m_n_most_intense = FilterGreatestY(nmost_intense); } void XtandemSpectrumProcess::setDynamicRange(pappso::pappso_double dynamic_range) { m_filter_rescale = FilterRescaleY(dynamic_range); } void XtandemSpectrumProcess::setRemoveIsotope(bool remove_isotope) { m_isRemoveIsotope = remove_isotope; } void XtandemSpectrumProcess::setExcludeParent(bool exclude_parent) { m_isExcludeParent = exclude_parent; } void XtandemSpectrumProcess::setExcludeParentNeutralLoss(bool neutral_loss) { m_isExcludeParent_neutral_loss = neutral_loss; } void XtandemSpectrumProcess::setNeutralLossMass( pappso::pappso_double neutral_loss_mass) { m_neutralLossMass = neutral_loss_mass; } void XtandemSpectrumProcess::setNeutralLossWindowDalton( pappso_double neutral_loss_precision) { m_neutralLossWindowDalton = neutral_loss_precision; } void XtandemSpectrumProcess::setRefineSpectrumModel(bool refine) { m_isRefineSpectrumModel = refine; } // FIXME: enumeration values 'bp' and 'yp' not handled in switch void XtandemSpectrumProcess::setIonScore(PeptideIon ion_type, bool compute_score) { switch(ion_type) { case PeptideIon::y: _y_ions = compute_score; break; case PeptideIon::b: _b_ions = compute_score; break; case PeptideIon::ystar: _ystar_ions = compute_score; break; case PeptideIon::bstar: _bstar_ions = compute_score; break; case PeptideIon::yo: _yo_ions = compute_score; break; case PeptideIon::bo: _bo_ions = compute_score; break; case PeptideIon::z: _z_ions = compute_score; break; case PeptideIon::a: _a_ions = compute_score; break; case PeptideIon::astar: _astar_ions = compute_score; break; case PeptideIon::ao: _ao_ions = compute_score; break; case PeptideIon::c: _c_ions = compute_score; break; case PeptideIon::x: _x_ions = compute_score; break; case PeptideIon::bp: case PeptideIon::yp: break; } } pappso_double XtandemSpectrumProcess::getMinimumMz() const { return m_filter_keep_greater.getThresholdX(); } unsigned int XtandemSpectrumProcess::getNmostIntense() const { return m_n_most_intense.getNumberOfPoints(); } pappso::pappso_double XtandemSpectrumProcess::getDynamicRange() const { return m_filter_rescale.getDynamicRange(); } bool XtandemSpectrumProcess::getRemoveIsotope() const { return m_isRemoveIsotope; } bool XtandemSpectrumProcess::getExcludeParent() const { return m_isExcludeParent; } bool XtandemSpectrumProcess::getExcludeParentNeutralLoss() const { return m_isExcludeParent_neutral_loss; } pappso::pappso_double XtandemSpectrumProcess::getNeutralLossMass() const { return m_neutralLossMass; } pappso_double XtandemSpectrumProcess::getNeutralLossWindowDalton() const { return m_neutralLossWindowDalton; } bool XtandemSpectrumProcess::getRefineSpectrumModel() const { return m_isRefineSpectrumModel; } // FIXME: enumeration values 'bp' and 'yp' not handled in switch bool XtandemSpectrumProcess::getIonScore(PeptideIon ion_type) const { switch(ion_type) { case PeptideIon::y: return _y_ions; case PeptideIon::b: return _b_ions; case PeptideIon::ystar: return _ystar_ions; case PeptideIon::bstar: return _bstar_ions; case PeptideIon::yo: return _yo_ions; case PeptideIon::bo: return _bo_ions; case PeptideIon::z: return _z_ions; case PeptideIon::a: return _a_ions; case PeptideIon::astar: return _astar_ions; case PeptideIon::ao: return _ao_ions; case PeptideIon::c: return _c_ions; case PeptideIon::x: return _x_ions; default: break; } return false; } MassSpectrum XtandemSpectrumProcess::process(const MassSpectrum &spectrum, pappso_double parent_ion_mz, unsigned int parent_charge) const { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " parent_charge==" << parent_charge; // 1) clean isotopes MassSpectrum spectrum_process(spectrum); if(m_isRemoveIsotope) { spectrum_process.massSpectrumFilter(FilterTandemDeisotope()); } qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; // 2) remove parent ion mass if(m_isExcludeParent) { spectrum_process.massSpectrumFilter( MassSpectrumFilterResampleRemoveMzRange( MzRange(parent_ion_mz, PrecisionFactory::getDaltonInstance( m_isExcludeParent_lower_dalton / parent_charge), PrecisionFactory::getDaltonInstance( m_isExcludeParent_upper_dalton / parent_charge)))); } qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "() "; // 3) remove low masses // 4) normalization m_filter_keep_greater.filter(spectrum_process); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; m_filter_rescale.filter(spectrum_process); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; // m_filter_floor.filter(spectrum_process); m_filter_highpass.filter(spectrum_process); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; // 5) remove neutral loss if(m_isExcludeParent_neutral_loss) { pappso_double parent_ion_mhplus = ((parent_ion_mz - (MHPLUS * parent_charge)) * parent_charge) + MHPLUS; MassSpectrumFilterResampleRemoveMzRange filter_parent(MzRange( parent_ion_mhplus - m_neutralLossMass, PrecisionFactory::getDaltonInstance(m_neutralLossWindowDalton))); filter_parent.filter(spectrum_process); } // 6) clean isotopes // 7) keep n most intense peaks qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " parent_charge==" << parent_charge; // return spectrum_process.massSpectrumFilter(m_filter_remove_c13) // .filter(m_nMostIntense); m_filter_remove_c13.filter(spectrum_process); m_n_most_intense.filter(spectrum_process); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "() " << spectrum_process.size(); return spectrum_process; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h000644 001750 001750 00000010635 14346367014 030141 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/xtandem/xtandemhyperscore.h * \date 16/8/2016 * \author Olivier Langella * \brief process spectrum to compute X!Tandem hyperscore */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../../massspectrum/massspectrum.h" #include "../../peptide/peptide.h" #include "../../processing/filters/filterpass.h" #include "../../processing/filters/filterresample.h" #include "../../processing/filters/filtertandemremovec13.h" namespace pappso { class PMSPP_LIB_DECL XtandemSpectrumProcess { public: XtandemSpectrumProcess(); XtandemSpectrumProcess(const XtandemSpectrumProcess ©); ~XtandemSpectrumProcess(); /** \brief process raw spectrum to prepare hyperscore computation */ MassSpectrum process(const MassSpectrum &spectrum, pappso_double parent_ion_mass, unsigned int parent_charge) const; void setMinimumMz(pappso_double minimum_mz); void setNmostIntense(unsigned int nmost_intense); void setDynamicRange(pappso::pappso_double dynamic_range); void setRemoveIsotope(bool remove_isotope); void setExcludeParent(bool exclude_parent); void setExcludeParentNeutralLoss(bool neutral_loss); void setNeutralLossMass(pappso::pappso_double neutral_loss_mass); void setNeutralLossWindowDalton(pappso::pappso_double neutral_loss_precision); void setRefineSpectrumModel(bool refine); void setIonScore(PeptideIon ion_type, bool compute_score); pappso_double getMinimumMz() const; unsigned int getNmostIntense() const; pappso::pappso_double getDynamicRange() const; bool getRemoveIsotope() const; bool getExcludeParent() const; bool getExcludeParentNeutralLoss() const; pappso::pappso_double getNeutralLossMass() const; pappso::pappso_double getNeutralLossWindowDalton() const; bool getRefineSpectrumModel() const; bool getIonScore(PeptideIon ion_type) const; private: // MassSpectrum spectrum_simple = // _spectrum.getOriginalSpectrumSp()->applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); // pappso_double m_minimumMz = 150; FilterResampleKeepGreater m_filter_keep_greater; FilterGreatestY m_n_most_intense; FilterRescaleY m_filter_rescale; FilterTandemDeisotope m_filter_remove_c13 = FilterTandemDeisotope(1.5, 200); FilterFloorY m_filter_floor; FilterHighPass m_filter_highpass; bool m_isRemoveIsotope = true; bool m_isExcludeParent = false; pappso::pappso_double m_isExcludeParent_lower_dalton = 2; pappso::pappso_double m_isExcludeParent_upper_dalton = 2; bool m_isExcludeParent_neutral_loss = false; pappso::pappso_double m_neutralLossMass = MASSH2O; pappso::pappso_double m_neutralLossWindowDalton = 0.5; bool m_isRefineSpectrumModel = true; bool _y_ions = true; // PeptideIon::y bool _ystar_ions = false; // PeptideIon::ystar bool _b_ions = true; // PeptideIon::b bool _bstar_ions = false; // PeptideIon::bstar bool _c_ions = false; // PeptideIon::ystar bool _z_ions = false; // PeptideIon::z bool _a_ions = false; // PeptideIon::a bool _x_ions = false; // CO2 bool _astar_ions = false; // PeptideIon::a bool _ao_ions = false; // PeptideIon::ao bool _bo_ions = false; // PeptideIon::bo bool _yo_ions = false; // PeptideIon::yo }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/peakionisotopematch.cpp000644 001750 001750 00000007265 14526455546 026275 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #include "peakionisotopematch.h" namespace pappso { std::vector::iterator findComplementIonType(std::vector::iterator begin, std::vector::iterator end, const PeakIonIsotopeMatch &peak_ion, std::size_t peptide_size) { return std::find_if( begin, end, [peak_ion, peptide_size](const PeakIonIsotopeMatch &to_compare) { if(to_compare.getCharge() == peak_ion.getCharge()) { if((to_compare.getPeptideFragmentIonSp().get()->size() + peak_ion.getPeptideFragmentIonSp().get()->size()) == peptide_size) { if(peptideIonTypeIsComplement(to_compare.getPeptideIonType(), peak_ion.getPeptideIonType())) { if(to_compare.getPeptideNaturalIsotopeAverageSp() .get() ->getIsotopeNumber() == peak_ion.getPeptideNaturalIsotopeAverageSp() .get() ->getIsotopeNumber()) { return true; } } } } return false; }); } PeakIonIsotopeMatch::PeakIonIsotopeMatch( const DataPoint &peak, const PeptideNaturalIsotopeAverageSp &naturalIsotopeAverageSp, const PeptideFragmentIonSp &ion_sp) : PeakIonMatch(peak, ion_sp, naturalIsotopeAverageSp.get()->getCharge()), _naturalIsotopeAverageSp(naturalIsotopeAverageSp) { qDebug(); } PeakIonIsotopeMatch::PeakIonIsotopeMatch(const PeakIonIsotopeMatch &other) : PeakIonMatch(other) { _naturalIsotopeAverageSp = other._naturalIsotopeAverageSp; } PeakIonIsotopeMatch::PeakIonIsotopeMatch(PeakIonIsotopeMatch &&other) : PeakIonMatch(std::move(other)) { _naturalIsotopeAverageSp = other._naturalIsotopeAverageSp; } PeakIonIsotopeMatch::~PeakIonIsotopeMatch() { } const PeptideNaturalIsotopeAverageSp & PeakIonIsotopeMatch::getPeptideNaturalIsotopeAverageSp() const { return _naturalIsotopeAverageSp; } PeakIonIsotopeMatch & PeakIonIsotopeMatch::operator=(const PeakIonIsotopeMatch &other) { PeakIonMatch::operator=(other); _naturalIsotopeAverageSp = other._naturalIsotopeAverageSp; return *this; } QString PeakIonIsotopeMatch::toString() const { return QString("%1isotope%2r%3mz%4") .arg(PeakIonMatch::toString()) .arg(_naturalIsotopeAverageSp.get()->getIsotopeNumber()) .arg(_naturalIsotopeAverageSp.get()->getIsotopeRank()) .arg(getPeak().x); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/peakionisotopematch.h000644 001750 001750 00000004763 14346367014 025732 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #pragma once #include "../exportinmportconfig.h" #include "peakionmatch.h" #include "../peptide/peptidenaturalisotopeaverage.h" namespace pappso { class PeakIonIsotopeMatch; typedef std::shared_ptr PeakIonIsotopeMatchCstSPtr; /** @brief find the first element containing the complementary ion * complementary ion of y1 is b(n-1) for instance * */ PMSPP_LIB_DECL std::vector::iterator findComplementIonType(std::vector::iterator begin, std::vector::iterator end, const PeakIonIsotopeMatch &peak_ion, std::size_t peptide_size); class PMSPP_LIB_DECL PeakIonIsotopeMatch : public PeakIonMatch { public: PeakIonIsotopeMatch( const DataPoint &peak, const PeptideNaturalIsotopeAverageSp &naturalIsotopeAverageSp, const PeptideFragmentIonSp &ion_sp); PeakIonIsotopeMatch(const PeakIonIsotopeMatch &other); PeakIonIsotopeMatch(PeakIonIsotopeMatch &&other); virtual ~PeakIonIsotopeMatch(); virtual const PeptideNaturalIsotopeAverageSp & getPeptideNaturalIsotopeAverageSp() const; PeakIonIsotopeMatch &operator=(const PeakIonIsotopeMatch &other); virtual QString toString() const; private: PeptideNaturalIsotopeAverageSp _naturalIsotopeAverageSp; }; } // namespace pappso Q_DECLARE_METATYPE(pappso::PeakIonIsotopeMatchCstSPtr); libpappsomspp-0.9.20/src/pappsomspp/psm/peakionmatch.cpp000644 001750 001750 00000005071 14526455546 024663 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/peakionmatch.cpp * \date 4/4/2015 * \author Olivier Langella * \brief associate a peak and a peptide + charge */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "peakionmatch.h" namespace pappso { PeakIonMatch::PeakIonMatch(const DataPoint &peak, const PeptideFragmentIonSp &ion_sp, unsigned int charge) : _peak(peak), _ion_sp(ion_sp), _charge(charge) { } PeakIonMatch::PeakIonMatch(const PeakIonMatch &other) : _peak(other._peak), _ion_sp(other._ion_sp), _charge(other._charge) { } PeakIonMatch::PeakIonMatch(PeakIonMatch &&other) : _peak(std::move(other._peak)), _ion_sp(other._ion_sp), _charge(std::move(other._charge)) { } PeakIonMatch::~PeakIonMatch() { } PeakIonMatch & PeakIonMatch::operator=(const PeakIonMatch &other) { _peak = other._peak; _ion_sp = other._ion_sp; _charge = other._charge; return *this; } const PeptideFragmentIonSp & PeakIonMatch::getPeptideFragmentIonSp() const { return _ion_sp; } const DataPoint & PeakIonMatch::getPeak() const { return _peak; } unsigned int PeakIonMatch::getCharge() const { return _charge; } PeptideIon PeakIonMatch::getPeptideIonType() const { return _ion_sp.get()->getPeptideIonType(); } PeptideDirection PeakIonMatch::getPeptideIonDirection() const { return _ion_sp.get()->getPeptideFragmentSp().get()->getPeptideIonDirection(); } QString PeakIonMatch::toString() const { return QString("%1").arg( _ion_sp.get()->getCompletePeptideIonName(getCharge())); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/peakionmatch.h000644 001750 001750 00000004070 14346367014 024316 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/peakionmatch.h * \date 4/4/2015 * \author Olivier Langella * \brief associate a peak and a peptide + charge */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../exportinmportconfig.h" #include "../massspectrum/massspectrum.h" #include "../peptide/peptidefragmention.h" namespace pappso { class PMSPP_LIB_DECL PeakIonMatch { public: PeakIonMatch(const DataPoint &peak, const PeptideFragmentIonSp &ion_sp, unsigned int charge); PeakIonMatch(const PeakIonMatch &other); PeakIonMatch(PeakIonMatch &&other); virtual ~PeakIonMatch(); PeakIonMatch &operator=(const PeakIonMatch &other); virtual const PeptideFragmentIonSp &getPeptideFragmentIonSp() const; const DataPoint &getPeak() const; unsigned int getCharge() const; PeptideIon getPeptideIonType() const; PeptideDirection getPeptideIonDirection() const; virtual QString toString() const; private: DataPoint _peak; PeptideFragmentIonSp _ion_sp; unsigned int _charge; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/peptideisotopespectrummatch.cpp000644 001750 001750 00000024760 14526455546 030063 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #include "peptideisotopespectrummatch.h" #include "../peptide/peptidenaturalisotopelist.h" namespace pappso { PeptideIsotopeSpectrumMatch::PeptideIsotopeSpectrumMatch( const MassSpectrum &spectrum, const PeptideSp &peptideSp, unsigned int parent_charge, PrecisionPtr precision, const std::list &ion_type_list, unsigned int max_isotope_number, [[maybe_unused]] unsigned int max_isotope_rank) : _precision(precision) { try { _peak_ion_match_list.clear(); qDebug() << "peptideSp.get()->getSequence()=" << peptideSp.get()->getSequence() << " max_isotope_number=" << max_isotope_number << " spectrum.size=" << spectrum.size() << " parent_charge=" << parent_charge << " ion_type_list.size=" << ion_type_list.size() << " max_isotope_rank=" << max_isotope_rank; PeptideFragmentIonListBase fragmentIonList(peptideSp, ion_type_list); qDebug() << " fragmentIonList.size()=" << fragmentIonList.size(); std::vector peak_list(spectrum.begin(), spectrum.end()); for(auto ion_type : ion_type_list) { const std::list peptide_fragment_ion_list = fragmentIonList.getPeptideFragmentIonSp(ion_type); qDebug() << " peptide_fragment_ion_list.size()=" << peptide_fragment_ion_list.size(); for(unsigned int charge = 1; charge <= parent_charge; charge++) { qDebug(); for(auto &&peptide_fragment_ion : peptide_fragment_ion_list) { qDebug() << "peptide_fragment_ion.get()->getMz(charge)=" << peptide_fragment_ion.get()->getMz(charge); PeptideNaturalIsotopeList isotope_list(peptide_fragment_ion); for(unsigned int isotope_number = 0; isotope_number <= max_isotope_number; isotope_number++) { qDebug(); PeptideNaturalIsotopeAverage *p_isotopeIon; if(max_isotope_rank == 0) { // fast constructor, no need to compute isotope ratio p_isotopeIon = new PeptideNaturalIsotopeAverage( peptide_fragment_ion, isotope_number, charge, precision); } else { p_isotopeIon = new PeptideNaturalIsotopeAverage(isotope_list, max_isotope_rank, isotope_number, charge, precision); } qDebug() << "max_isotope_rank=" << max_isotope_rank << " isotope_number=" << isotope_number << " charge=" << charge << " precision=" << precision << " p_isotopeIon->getMz()=" << p_isotopeIon->getMz() << " " << isotope_number << " " << p_isotopeIon->toString(); std::vector::iterator it_peak = getBestPeakIterator(peak_list, *p_isotopeIon); if(it_peak != peak_list.end()) { _peak_ion_match_list.push_back(PeakIonIsotopeMatch( *it_peak, p_isotopeIon->makePeptideNaturalIsotopeAverageSp(), peptide_fragment_ion)); peak_list.erase(it_peak); qDebug() << isotope_number << " " << _peak_ion_match_list.back().toString(); } delete p_isotopeIon; } } } } } catch(PappsoException &exception_pappso) { QString errorStr = QObject::tr( "ERROR building PeptideIsotopeSpectrumMatch, PAPPSO exception:\n%1") .arg(exception_pappso.qwhat()); qDebug() << "PeptideIsotopeSpectrumMatch::PeptideIsotopeSpectrumMatch " "PappsoException :\n" << errorStr; throw PappsoException(errorStr); } catch(std::exception &exception_std) { QString errorStr = QObject::tr( "ERROR building PeptideIsotopeSpectrumMatch, std exception:\n%1") .arg(exception_std.what()); qDebug() << "PeptideIsotopeSpectrumMatch::PeptideIsotopeSpectrumMatch " "std::exception :\n" << errorStr; throw PappsoException(errorStr); } qDebug() << "_peak_ion_match_list.size()=" << _peak_ion_match_list.size(); } PeptideIsotopeSpectrumMatch::PeptideIsotopeSpectrumMatch( const MassSpectrum &spectrum, std::vector v_peptideIsotopeList, std::vector v_peptideIonList, PrecisionPtr precision) : _precision(precision) { qDebug() << " begin"; if(v_peptideIsotopeList.size() != v_peptideIonList.size()) { throw PappsoException( QObject::tr( "v_peptideIsotopeList.size() %1 != v_peptideIonList.size() %2") .arg(v_peptideIsotopeList.size()) .arg(v_peptideIonList.size())); } auto isotopeIt = v_peptideIsotopeList.begin(); auto ionIt = v_peptideIonList.begin(); std::vector peak_list(spectrum.begin(), spectrum.end()); while(isotopeIt != v_peptideIsotopeList.end()) { std::vector::iterator it_peak = getBestPeakIterator(peak_list, *(isotopeIt->get())); if(it_peak != peak_list.end()) { _peak_ion_match_list.push_back( PeakIonIsotopeMatch(*it_peak, *isotopeIt, *ionIt)); peak_list.erase(it_peak); } isotopeIt++; ionIt++; } qDebug() << "_peak_ion_match_list.size()=" << _peak_ion_match_list.size() << " end"; } PeptideIsotopeSpectrumMatch::PeptideIsotopeSpectrumMatch( const PeptideIsotopeSpectrumMatch &other) : _precision(other._precision), _peak_ion_match_list(other._peak_ion_match_list) { qDebug(); } PeptideIsotopeSpectrumMatch::~PeptideIsotopeSpectrumMatch() { } std::vector::iterator PeptideIsotopeSpectrumMatch::getBestPeakIterator( std::vector &peak_list, const PeptideNaturalIsotopeAverage &ion) const { // qDebug(); std::vector::iterator itpeak = peak_list.begin(); std::vector::iterator itend = peak_list.end(); std::vector::iterator itselect = peak_list.end(); pappso_double best_intensity = 0; while(itpeak != itend) { // qDebug() << itpeak->x; if(ion.matchPeak(itpeak->x)) { if(itpeak->y > best_intensity) { best_intensity = itpeak->y; itselect = itpeak; } } itpeak++; } // qDebug(); return (itselect); } const std::list & PeptideIsotopeSpectrumMatch::getPeakIonIsotopeMatchList() const { qDebug() << "_peak_ion_match_list.size()=" << _peak_ion_match_list.size(); return _peak_ion_match_list; } std::size_t PeptideIsotopeSpectrumMatch::size() const { return _peak_ion_match_list.size(); } PeptideIsotopeSpectrumMatch::const_iterator PeptideIsotopeSpectrumMatch::begin() const { return _peak_ion_match_list.begin(); } PeptideIsotopeSpectrumMatch::const_iterator PeptideIsotopeSpectrumMatch::end() const { return _peak_ion_match_list.end(); } void PeptideIsotopeSpectrumMatch::dropPeaksLackingMonoisotope() { qDebug(); _peak_ion_match_list.sort( [](const PeakIonIsotopeMatch &a, const PeakIonIsotopeMatch &b) { if(a.getPeptideIonType() < b.getPeptideIonType()) return true; if(a.getPeptideFragmentIonSp().get()->size() < b.getPeptideFragmentIonSp().get()->size()) return true; if(a.getCharge() < b.getCharge()) return true; if(a.getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber() < b.getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber()) return true; return false; }); PeptideIon ion_type = PeptideIon::b; std::size_t nserie = 0; std::size_t isotopeserie = 0; unsigned int charge = 0; for(std::list::iterator it = _peak_ion_match_list.begin(); it != _peak_ion_match_list.end(); it++) { if((nserie != it->getPeptideFragmentIonSp().get()->size()) || (ion_type != it->getPeptideIonType()) || (charge != it->getCharge())) { ion_type = it->getPeptideIonType(); isotopeserie = 0; nserie = it->getPeptideFragmentIonSp().get()->size(); charge = it->getCharge(); } if(isotopeserie <= it->getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber()) { isotopeserie = it->getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber(); } else { it = _peak_ion_match_list.erase(it); } } qDebug(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/peptideisotopespectrummatch.h000644 001750 001750 00000006331 14346367014 027512 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #pragma once #include "../massspectrum/massspectrum.h" #include "../mzrange.h" #include "../peptide/peptidefragmention.h" #include "../peptide/peptidefragmentionlistbase.h" #include "peakionisotopematch.h" #include "../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL PeptideIsotopeSpectrumMatch { public: /** @brief annotate spectrum with peptide ions and isotopes * @param spectrum the spectrum to annotate * @param peptide_sp peptide to fragment * @param parent_charge charge of the ion parent * @param precision MS2 mass measurement precision * @param ion_list ion types to compute fragments * @param max_isotope_number maximum isotope number to compute (0 means only * monoisotope is computed) * @param max_isotope_rank maximum rank inside isotope level to compute */ PeptideIsotopeSpectrumMatch(const MassSpectrum &spectrum, const PeptideSp &peptide_sp, unsigned int parent_charge, PrecisionPtr precision, const std::list &ion_type_list, unsigned int max_isotope_number, unsigned int max_isotope_rank); PeptideIsotopeSpectrumMatch( const MassSpectrum &spectrum, std::vector v_peptideIsotopeList, std::vector v_peptideIonList, PrecisionPtr precision); PeptideIsotopeSpectrumMatch(const PeptideIsotopeSpectrumMatch &other); virtual ~PeptideIsotopeSpectrumMatch(); const std::list &getPeakIonIsotopeMatchList() const; typedef std::list::const_iterator const_iterator; std::size_t size() const; const_iterator begin() const; const_iterator end() const; void dropPeaksLackingMonoisotope(); private: virtual std::vector::iterator getBestPeakIterator(std::vector &peak_list, const PeptideNaturalIsotopeAverage &ion) const; PrecisionPtr _precision; std::list _peak_ion_match_list; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/peptidespectrummatch.cpp000644 001750 001750 00000020003 14526455546 026442 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/peptidespectrummatch.cpp * \date 2/4/2015 * \author Olivier Langella * \brief find peaks matching between ions and spectrum */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include #include "peakionmatch.h" #include "peptidespectrummatch.h" #include "../pappsoexception.h" #include "../peptide/peptidefragment.h" #include "../peptide/peptidefragmentionlistbase.h" namespace pappso { void PeptideSpectrumMatch::privMatchIonList( const MassSpectrum &spectrum, const PeptideFragmentIonListBase &fragmentIonList, unsigned int max_charge, const std::list &ion_type_list) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " ion_type_list.size()=" << ion_type_list.size(); std::list peak_list(spectrum.begin(), spectrum.end()); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " peak_list.size()=" << peak_list.size(); for(auto ion_type : ion_type_list) { auto ion_list = fragmentIonList.getPeptideFragmentIonSp(ion_type); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " ion_list.size()=" << ion_list.size(); for(unsigned int charge = 1; charge <= max_charge; charge++) { for(auto &&ion : ion_list) { std::list::iterator it_peak = getBestPeakIterator(peak_list, ion, charge); if(it_peak != peak_list.end()) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << // __LINE__ // << " peak FOUND"; _peak_ion_match_list.push_back( PeakIonMatch(*it_peak, ion, charge)); _ion_type_count[(std::int8_t)ion->getPeptideIonType()]++; peak_list.erase(it_peak); } } } } } PeptideSpectrumMatch::PeptideSpectrumMatch( const MassSpectrum &spectrum, std::vector &v_peptide_fragment_ion, std::vector &v_peptide_fragment_ion_charge, PrecisionPtr precision) : _precision(precision) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; // throw PappsoException(QObject::tr("v_peptideIsotopeList.size() %1 != // v_peptideIonList.size() // %2").arg(v_peptideIsotopeList.size()).arg(v_peptideIonList.size())); if(v_peptide_fragment_ion.size() != v_peptide_fragment_ion_charge.size()) { throw PappsoException( QObject::tr("v_peptide_fragment_ion.size() != " "v_peptide_fragment_ion_charge.size() %2") .arg(v_peptide_fragment_ion.size()) .arg(v_peptide_fragment_ion_charge.size())); } auto ionIt = v_peptide_fragment_ion.begin(); auto chargeIt = v_peptide_fragment_ion_charge.begin(); std::list peak_list(spectrum.begin(), spectrum.end()); while(ionIt != v_peptide_fragment_ion.end()) { std::list::iterator it_peak = getBestPeakIterator(peak_list, *ionIt, *chargeIt); if(it_peak != peak_list.end()) { _peak_ion_match_list.push_back( PeakIonMatch(*it_peak, *ionIt, *chargeIt)); _ion_type_count[(std::int8_t)ionIt->get()->getPeptideIonType()]++; peak_list.erase(it_peak); } ionIt++; chargeIt++; } qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " _ion_type_count[PeptideIon::y]=" << _ion_type_count[(std::int8_t)PeptideIon::y]; } PeptideSpectrumMatch::PeptideSpectrumMatch( const MassSpectrum &spectrum, const PeptideFragmentIonListBase &fragmentIonList, unsigned int max_charge, PrecisionPtr precision, const std::list &ion_type_list) : _precision(precision) { privMatchIonList(spectrum, fragmentIonList, max_charge, ion_type_list); qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " _ion_type_count[PeptideIon::y]=" << _ion_type_count[(std::int8_t)PeptideIon::y]; } PeptideSpectrumMatch::PeptideSpectrumMatch( const MassSpectrum &spectrum, const pappso::PeptideSp &peptideSp, unsigned int parent_charge, PrecisionPtr precision, const std::list &ion_type_list) : _precision(precision) { PeptideFragmentIonListBase fragmentIonList(peptideSp, ion_type_list); privMatchIonList(spectrum, fragmentIonList, parent_charge, ion_type_list); qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " _ion_type_count[PeptideIon::y]=" << _ion_type_count[(std::int8_t)PeptideIon::y]; } PeptideSpectrumMatch::PeptideSpectrumMatch(const PeptideSpectrumMatch &other) : _precision(other._precision), _peak_ion_match_list(other._peak_ion_match_list) { } std::list::iterator PeptideSpectrumMatch::getBestPeakIterator(std::list &peak_list, const PeptideFragmentIonSp &ion, unsigned int charge) const { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " peak_list.size()=" << peak_list.size(); std::list::iterator itpeak = peak_list.begin(); std::list::iterator itend = peak_list.end(); std::list::iterator itselect = peak_list.end(); pappso_double best_intensity = 0; while(itpeak != itend) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " itpeak->x=" << itpeak->x; if(ion.get()->matchPeak(_precision, itpeak->x, charge)) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " ion.get()->matchPeak"; if(itpeak->y > best_intensity) { best_intensity = itpeak->y; itselect = itpeak; } } itpeak++; } return (itselect); } PeptideSpectrumMatch::~PeptideSpectrumMatch() { } unsigned int PeptideSpectrumMatch::size() const { return _peak_ion_match_list.size(); } PeptideSpectrumMatch::const_iterator PeptideSpectrumMatch::begin() const { return _peak_ion_match_list.begin(); } PeptideSpectrumMatch::const_iterator PeptideSpectrumMatch::end() const { return _peak_ion_match_list.end(); } unsigned int PeptideSpectrumMatch::countTotalMatchedIons() const { return std::accumulate(_ion_type_count.begin(), _ion_type_count.end(), 0); } const std::array & PeptideSpectrumMatch::getIonTypeCountArray() const { return _ion_type_count; } bool PeptideSpectrumMatch::contains(const PeptideFragmentIon *peptideFragmentIonSp, unsigned int z) const { auto it = _peak_ion_match_list.begin(); while(it != _peak_ion_match_list.end()) { const PeakIonMatch &ref = *it; if((ref.getCharge() == z) && (ref.getPeptideFragmentIonSp().get() == peptideFragmentIonSp)) { return true; } it++; } return false; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/psm/peptidespectrummatch.h000644 001750 001750 00000006476 14346367014 026121 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/psm/peptidespectrummatch.h * \date 2/4/2015 * \author Olivier Langella * \brief find peaks matching between ions and spectrum */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../massspectrum/massspectrum.h" #include "../mzrange.h" #include "../peptide/peptidefragmention.h" #include "../peptide/peptidefragmentionlistbase.h" #include "peakionmatch.h" namespace pappso { class PMSPP_LIB_DECL PeptideSpectrumMatch { public: PeptideSpectrumMatch(const MassSpectrum &spectrum, const pappso::PeptideSp &peptideSp, unsigned int parent_charge, PrecisionPtr precision, const std::list &ion_type_list); PeptideSpectrumMatch( const MassSpectrum &spectrum, const PeptideFragmentIonListBase &peptide_fragment_ion_list, unsigned int parent_charge, PrecisionPtr precision, const std::list &ion_type_list); PeptideSpectrumMatch( const MassSpectrum &spectrum, std::vector &v_peptide_fragment_ion, std::vector &v_peptide_fragment_ion_charge, PrecisionPtr precision); PeptideSpectrumMatch(const PeptideSpectrumMatch &other); virtual ~PeptideSpectrumMatch(); bool contains(const PeptideFragmentIon *peptideFragmentIonSp, unsigned int z) const; typedef std::list::const_iterator const_iterator; unsigned int size() const; const_iterator begin() const; const_iterator end() const; unsigned int countTotalMatchedIons() const; const std::array & getIonTypeCountArray() const; private: void privMatchIonList(const MassSpectrum &spectrum, const PeptideFragmentIonListBase &fragmentIonList, unsigned int max_charge, const std::list &ion_type_list); virtual std::list::iterator getBestPeakIterator(std::list &peak_list, const PeptideFragmentIonSp &ion, unsigned int charge) const; private: PrecisionPtr _precision; std::list _peak_ion_match_list; std::array _ion_type_count = {{0}}; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/trace/000755 001750 001750 00000000000 14533473271 022001 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/trace/datapoint.cpp000644 001750 001750 00000006411 14526455546 024501 0ustar00rusconirusconi000000 000000 // Copyright 2019, 2020 Filippo Rusconi // License: GPLv3+ /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include #include #include /////////////////////// Local includes #include "datapoint.h" #include "../types.h" #include "../utils.h" #include "../pappsoexception.h" #include "../exception/exceptionoutofrange.h" #include "../exception/exceptionnotpossible.h" int dataPointMetaTypeId = qRegisterMetaType("pappso::DataPoint"); int dataPointCstSPtrMetaTypeId = qRegisterMetaType("pappso::DataPointCstSPtr"); namespace pappso { DataPoint::DataPoint() { } DataPoint::DataPoint(const DataPoint &other) : x(other.x), y(other.y) { } DataPoint::DataPoint(pappso_double x, pappso_double y) : x(x), y(y) { } DataPoint::DataPoint(std::pair pair) : x(pair.first), y(pair.second) { } DataPoint::DataPoint(const QString &text) { if(!initialize(text)) throw ExceptionNotPossible( "Failed to initialize the DataPoint object using the provided string."); } // For debugging purposes. // DataPoint::~DataPoint() //{ ////qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" ////<< "Calling destructor for DataPoint."; //} DataPointCstSPtr DataPoint::makeDataPointCstSPtr() const { return std::make_shared(*this); } void DataPoint::initialize(pappso_double x, pappso_double y) { this->x = x; this->y = y; } void DataPoint::initialize(const DataPoint &other) { x = other.x; y = other.y; } bool DataPoint::initialize(const QString &text) { QRegularExpressionMatch regExpMatch; regExpMatch = Utils::xyMassDataFormatRegExp.match(text); if(!regExpMatch.hasMatch()) return false; bool ok = false; double key = regExpMatch.captured(1).toDouble(&ok); if(!ok) return false; // Note that group 2 is the separator group. double val = regExpMatch.captured(3).toDouble(&ok); if(!ok) return false; x = key; y = val; return true; } void DataPoint::reset() { x = -1; y = 0; } bool DataPoint::isValid() const { return (x >= 0); } QString DataPoint::toString() const { return QString("%1 %2").arg(x, 0, 'f', 15).arg(y, 0, 'f', 15); } QString DataPoint::toString(int decimals) const { return QString("%1 %2").arg(x, 0, 'f', decimals).arg(y, 0, 'f', decimals); } QDataStream & operator<<(QDataStream &out, const DataPoint &dataPoint) { out << dataPoint.x; out << dataPoint.y; return out; } QDataStream & operator>>(QDataStream &in, DataPoint &dataPoint) { if(in.atEnd()) { throw PappsoException( QString("error in QDataStream unserialize operator>> of massSpectrum " "dataPoint:\nread datastream failed status=%1") .arg(in.status())); } in >> dataPoint.x; in >> dataPoint.y; return in; } void DataPoint::incrementX(pappso_double value) { x += value; } void DataPoint::incrementY(pappso_double value) { y += value; } bool DataPoint::operator==(const DataPoint &other) const { return ((x == other.x) && (y == other.y)); } DataPoint & DataPoint::operator=(const DataPoint &other) { x = other.x; y = other.y; return *this; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/trace/datapoint.h000644 001750 001750 00000002666 14514537340 024144 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include #include #include "../exportinmportconfig.h" #include "../types.h" namespace pappso { struct DataPoint; typedef std::shared_ptr DataPointCstSPtr; struct PMSPP_LIB_DECL DataPoint { pappso_double x = -1; pappso_double y = 0; DataPoint(); DataPoint(const DataPoint &other); DataPoint(pappso_double x, pappso_double y); DataPoint(std::pair pair); DataPoint(const QString &text); // For debugging purposes. //~DataPoint(); DataPointCstSPtr makeDataPointCstSPtr() const; void initialize(pappso_double x, pappso_double y); void initialize(const DataPoint &other); bool initialize(const QString &text); void reset(); void incrementX(pappso_double value); void incrementY(pappso_double value); bool operator==(const DataPoint &other) const; DataPoint &operator=(const DataPoint &other); bool isValid() const; QString toString() const; QString toString(int decimals) const; }; PMSPP_LIB_DECL QDataStream &operator<<(QDataStream &out, const DataPoint &dataPoint); PMSPP_LIB_DECL QDataStream &operator>>(QDataStream &out, DataPoint &dataPoint); } // namespace pappso Q_DECLARE_METATYPE(pappso::DataPoint); extern int dataPointMetaTypeId; Q_DECLARE_METATYPE(pappso::DataPointCstSPtr); extern int dataPointCstSPtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/trace/linearregression.cpp000644 001750 001750 00000007321 14526455546 026072 0ustar00rusconirusconi000000 000000 /** * \file trace/linearregression.cpp * \date 17/9/2016 * \author Olivier Langella * \brief compute linear regression */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of peptider. * * peptider is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * peptider is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with peptider. If not, see . * ******************************************************************************/ #include "linearregression.h" #include #include using namespace pappso; pappso::LinearRegression::LinearRegression( const pappso::LinearRegression &other) : m_slope(other.m_slope), m_intercept(other.m_intercept), m_data(other.m_data) { } LinearRegression::LinearRegression(const Trace &data) { m_data = data; std::size_t size = data.size(); if(size > 2) { pappso::pappso_double x_vec_mean = (std::accumulate(data.begin(), data.end(), 0, [](double a, const DataPoint &b) { return a + b.x; }) / size); pappso::pappso_double y_vec_mean = (sumYTrace(data.begin(), data.end(), 0) / size); pappso::pappso_double sx = 0; pappso::pappso_double sxy = 0; for(size_t i = 0; i < size; i++) { sx += std::pow((data[i].x - x_vec_mean), 2); sxy += (data[i].x - x_vec_mean) * (data[i].y - y_vec_mean); } m_slope = sxy / sx; m_intercept = y_vec_mean - (m_slope * x_vec_mean); } } std::size_t pappso::LinearRegression::getSize() const { return m_data.size(); } pappso::pappso_double LinearRegression::getIntercept() const { return m_intercept; } pappso::pappso_double LinearRegression::getSlope() const { return m_slope; } pappso::pappso_double LinearRegression::getYfromX(pappso::pappso_double x) const { return (m_slope * x + m_intercept); } double LinearRegression::getRmsd() const { std::size_t size = m_data.size(); if(size > 2) { pappso::pappso_double sum_square_deviation = 0; for(size_t i = 0; i < size; i++) { sum_square_deviation += std::pow((m_data[i].y - getYfromX(m_data[i].x)), 2); } return sqrt(sum_square_deviation / (double)size); } return 0; } double LinearRegression::getNrmsd() const { return (getRmsd() / (maxYDataPoint(m_data.begin(), m_data.end())->y - minYDataPoint(m_data.begin(), m_data.end())->y)); } double LinearRegression::getCoefficientOfDetermination() const { std::size_t size = m_data.size(); if(size > 2) { double meanY = meanYTrace(m_data.begin(), m_data.end()); pappso::pappso_double sum_square_deviation = 0; for(size_t i = 0; i < size; i++) { sum_square_deviation += std::pow((m_data[i].y - getYfromX(m_data[i].x)), 2); } pappso::pappso_double sum_square_total = 0; for(size_t i = 0; i < size; i++) { sum_square_total += std::pow((m_data[i].y - meanY), 2); } return ((double)1.0 - (sum_square_deviation / sum_square_total)); } return 0; } libpappsomspp-0.9.20/src/pappsomspp/trace/linearregression.h000644 001750 001750 00000003416 14444327362 025531 0ustar00rusconirusconi000000 000000 /** * \file utils/linearregression.h * \date 17/9/2016 * \author Olivier Langella * \brief compute linear regression */ /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of peptider. * * peptider is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * peptider is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with peptider. If not, see . * ******************************************************************************/ #pragma once #include "trace.h" namespace pappso { class PMSPP_LIB_DECL LinearRegression { public: LinearRegression(const Trace &data); LinearRegression(const LinearRegression &other); double getYfromX(double score) const; double getIntercept() const; double getSlope() const; /** @brief get Root-Mean-Square Deviation */ double getRmsd() const; /** @brief get Normalized Root-Mean-Square Deviation */ double getNrmsd() const; /** @brief get Coefficient of determination (R2) */ double getCoefficientOfDetermination() const; /** @brief get data size */ std::size_t getSize() const; private: double m_slope = 0; double m_intercept = 0; Trace m_data; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/trace/maptrace.cpp000644 001750 001750 00000011705 14526455546 024314 0ustar00rusconirusconi000000 000000 #include #include #include #include #include #include #include #include /////////////////////// Qt includes #include #include #include "../exception/exceptionnotpossible.h" #include "maptrace.h" #include "../processing/combiners/tracepluscombiner.h" #include "../processing/combiners/traceminuscombiner.h" #include "../types.h" int mapTraceMetaTypeId = qRegisterMetaType("pappso::MapTrace"); int mapTracePtrMetaTypeId = qRegisterMetaType("pappso::MapTrace *"); namespace pappso { MapTrace::MapTrace() { } MapTrace::MapTrace( const std::vector> &dataPoints) { for(auto &dataPoint : dataPoints) { insert(dataPoint); } } MapTrace::MapTrace(const std::vector &dataPoints) { for(auto &dataPoint : dataPoints) { insert(std::pair(dataPoint.x, dataPoint.y)); } } MapTrace::MapTrace(const MapTrace &other) : std::map(other) { } MapTrace::MapTrace(const Trace &trace) { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"; for(auto &dataPoint : trace) { // std::cout << __FILE__ << " @ " << __LINE__ << " " << __FUNCTION__ << " // () " //<< std::setprecision(15) //<< "Current data point: " << dataPoint.toString().toStdString() << // std::endl; insert(std::pair(dataPoint.x, dataPoint.y)); } // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "After construction, map size: " << size(); } MapTrace::~MapTrace() { // Calls the destructor for each DataPoint object in the vector. clear(); } size_t MapTrace::initialize(const std::vector &xVector, const std::vector &yVector) { // Clear *this, because initialize supposes that *this will contain only the // data in the vectors. clear(); // Sanity check if(xVector.size() != yVector.size()) throw ExceptionNotPossible( QObject::tr("Fatal error at msrundatasettreenode.cpp " "-- ERROR xVector and yVector must have the same size." "Program aborted.")); for(std::size_t iter = 0; iter < xVector.size(); ++iter) { insert(std::pair(xVector.at(iter), yVector.at(iter))); } return size(); } size_t MapTrace::initialize(const std::map &map) { // Clear *this, because initialize supposes that *this will be identical to // map. clear(); for(auto &&pair : map) { insert(pair); } return size(); } MapTrace & MapTrace::operator=(const MapTrace &other) { if(&other == this) return *this; // Clear *this, because initialize supposes that *this will be identical to // other. clear(); for(auto &pair : other) { insert(pair); } return *this; } MapTraceSPtr MapTrace::makeMapTraceSPtr() const { return std::make_shared(*this); } MapTraceCstSPtr MapTrace::makeMapTraceCstSPtr() const { return std::make_shared(*this); } std::vector MapTrace::xValues() { std::vector vector; for(auto &&pair : *this) vector.push_back(pair.first); return vector; } std::vector MapTrace::yValues() { std::vector vector; for(auto &&pair : *this) vector.push_back(pair.second); return vector; } void MapTrace::insertOrUpdate(const DataPoint &data_point) { // Try to insert the data point into the map. Check if that was done or // not. std::pair::iterator, bool> res = insert(std::pair(data_point.x, data_point.y)); if(!res.second) { // One other same (x,y) value pair was seen already. Only increment the y // value. res.first->second += data_point.y; } } void MapTrace::insertOrUpdate(const Trace &trace) { for(const DataPoint &data_point : trace) insertOrUpdate(data_point); } Trace MapTrace::toTrace() const { Trace trace; for(auto &&pair : *this) trace.push_back(DataPoint(pair.first, pair.second)); return trace; } QString MapTrace::toString() const { // Even if the spectrum is empty, we should return an empty string. QString text; for(auto &&pair : *this) { // For debugging #if 0 QString new_data_point_text = QString("%1 %2\n") .arg(pair.first, 0, 'f', 10) .arg(pair.second, 0, 'f', 10); qDebug() << "new data point text:" << new_data_point_text; text.append(new_data_point_text); #endif text.append(QString("%1 %2\n") .arg(pair.first, 0, 'f', 10) .arg(pair.second, 0, 'f', 10)); } return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/trace/maptrace.h000644 001750 001750 00000003232 14346367014 023745 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include #include #include "../exportinmportconfig.h" #include "../types.h" #include "trace.h" #include "datapoint.h" #include "../mzrange.h" namespace pappso { class MapTrace; QDataStream &operator<<(QDataStream &out, const Trace &trace); QDataStream &operator>>(QDataStream &out, Trace &trace); typedef std::shared_ptr MapTraceSPtr; typedef std::shared_ptr MapTraceCstSPtr; class TraceCombiner; class TracePlusCombiner; class TraceMinusCombiner; class PMSPP_LIB_DECL MapTrace : public std::map { public: MapTrace(); MapTrace( const std::vector> &dataPoints); MapTrace(const std::vector &dataPoints); MapTrace(const MapTrace &other); MapTrace(const Trace &trace); virtual ~MapTrace(); size_t initialize(const std::vector &xVector, const std::vector &yVector); size_t initialize(const std::map &map); virtual MapTrace &operator=(const MapTrace &other); MapTraceSPtr makeMapTraceSPtr() const; MapTraceCstSPtr makeMapTraceCstSPtr() const; std::vector xValues(); std::vector yValues(); void insertOrUpdate(const DataPoint &data_point); void insertOrUpdate(const Trace &trace); Trace toTrace() const; QString toString() const; protected: private: }; } // namespace pappso Q_DECLARE_METATYPE(pappso::MapTrace); Q_DECLARE_METATYPE(pappso::MapTrace *); extern int mapTraceMetaTypeId; extern int mapTracePtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/trace/trace.cpp000644 001750 001750 00000070564 14526455546 023626 0ustar00rusconirusconi000000 000000 #include #include #include #include #include #include #include #include #include #include #include #include "../utils.h" #include "trace.h" #include "maptrace.h" #include "../processing/combiners/tracepluscombiner.h" #include "../processing/combiners/traceminuscombiner.h" #include "../types.h" #include "../pappsoexception.h" #include "../exception/exceptionoutofrange.h" #include "../exception/exceptionnotpossible.h" #include "../processing/filters/filterresample.h" #include "../processing/filters/filterpass.h" int traceMetaTypeId = qRegisterMetaType("pappso::Trace"); int tracePtrMetaTypeId = qRegisterMetaType("pappso::Trace *"); namespace pappso { QDataStream & operator<<(QDataStream &out, const Trace &trace) { for(auto &dataPoint : trace) { out << dataPoint.x; out << dataPoint.y; out << "\n"; } out << "\n"; return out; } QDataStream & operator>>(QDataStream &in, Trace &trace) { if(in.atEnd()) { throw PappsoException( QString("error in QDataStream unserialize operator>> of trace:\n" "read datastream failed status=%1") .arg(in.status())); } for(auto &dataPoint : trace) { in >> dataPoint.x; in >> dataPoint.y; } return in; } std::vector::iterator findFirstEqualOrGreaterX(std::vector::iterator begin, std::vector::iterator end, const double &value) { return std::find_if(begin, end, [value](const DataPoint &to_compare) { if(to_compare.x < value) { return false; } return true; }); } std::vector::const_iterator findFirstEqualOrGreaterX(std::vector::const_iterator begin, std::vector::const_iterator end, const double &value) { return std::find_if(begin, end, [value](const DataPoint &to_compare) { if(to_compare.x < value) { return false; } return true; }); } std::vector::iterator findFirstGreaterX(std::vector::iterator begin, std::vector::iterator end, const double &value) { return std::find_if(begin, end, [value](const DataPoint &to_compare) { if(to_compare.x > value) { return true; } return false; }); } std::vector::const_iterator findFirstGreaterX(std::vector::const_iterator begin, std::vector::const_iterator end, const double &value) { return std::find_if(begin, end, [value](const DataPoint &to_compare) { if(to_compare.x > value) { return true; } return false; }); } std::vector::iterator findDifferentYvalue(std::vector::iterator begin, std::vector::iterator end, const double &y_value) { return std::find_if(begin, end, [y_value](const DataPoint &to_compare) { if(to_compare.y != y_value) { return true; } return false; }); } std::vector::const_iterator findDifferentYvalue(std::vector::const_iterator begin, std::vector::const_iterator end, const double &y_value) { return std::find_if(begin, end, [y_value](const DataPoint &to_compare) { if(to_compare.y != y_value) { return true; } return false; }); } std::vector::const_iterator minYDataPoint(std::vector::const_iterator begin, std::vector::const_iterator end) { return std::min_element( begin, end, [](const DataPoint &a, const DataPoint &b) { return a.y < b.y; }); } std::vector::iterator minYDataPoint(std::vector::iterator begin, std::vector::iterator end) { return std::min_element( begin, end, [](const DataPoint &a, const DataPoint &b) { return a.y < b.y; }); } std::vector::const_iterator maxYDataPoint(std::vector::const_iterator begin, std::vector::const_iterator end) { return std::max_element( begin, end, [](const DataPoint &a, const DataPoint &b) { return a.y < b.y; }); } std::vector::iterator maxYDataPoint(std::vector::iterator begin, std::vector::iterator end) { return std::max_element( begin, end, [](const DataPoint &a, const DataPoint &b) { return a.y < b.y; }); } // As long as next DataPoint has its y value less or equal to prev's, // move along down the container. That is, continue moving is // direction is downhill to the end of the container (its back). std::vector::const_iterator moveLowerYRigthDataPoint(const Trace &trace, std::vector::const_iterator begin) { if(begin == trace.end()) return begin; auto it = begin + 1; auto result = begin; // Move along as long as next point's y value is less // or equal to prev point's y value (FR, check). while((it != trace.end()) && (it->y <= result->y)) { it++; result++; } return result; } std::vector::const_iterator moveLowerYLeftDataPoint(const Trace &trace, std::vector::const_iterator begin) { if(begin == trace.begin()) return begin; auto it = begin - 1; auto result = begin; // As long as prev datapoint has y value less or equal to next, // move along up the container. That is, continue moving if // direction is downhill to the beginning of the container (its front). while((it != trace.begin()) && (it->y <= result->y)) { it--; result--; } return result; } double sumYTrace(std::vector::const_iterator begin, std::vector::const_iterator end, double init) { return std::accumulate( begin, end, init, [](double a, const DataPoint &b) { return a + b.y; }); } double meanYTrace(std::vector::const_iterator begin, std::vector::const_iterator end) { pappso_double nb_element = distance(begin, end); if(nb_element == 0) throw ExceptionOutOfRange( QObject::tr("unable to compute mean on a trace of size 0")); return (sumYTrace(begin, end, 0) / nb_element); } double quantileYTrace(std::vector::const_iterator begin, std::vector::const_iterator end, double quantile) { std::size_t nb_element = distance(begin, end); if(nb_element == 0) throw ExceptionOutOfRange( QObject::tr("unable to compute quantile on a trace of size 0")); std::size_t ieth_element = std::round((double)nb_element * quantile); if(ieth_element > nb_element) throw ExceptionOutOfRange( QObject::tr("quantile value must be lower than 1")); std::vector data(begin, end); std::nth_element( data.begin(), data.begin() + ieth_element, data.end(), [](const DataPoint &a, const DataPoint &b) { return a.y < b.y; }); return data[ieth_element].y; } double medianYTrace(std::vector::const_iterator begin, std::vector::const_iterator end) { std::size_t nb_element = distance(begin, end); if(nb_element == 0) throw ExceptionOutOfRange( QObject::tr("unable to compute median on a trace of size 0")); std::vector data(begin, end); std::nth_element( data.begin(), data.begin() + data.size() / 2, data.end(), [](const DataPoint &a, const DataPoint &b) { return a.y < b.y; }); return data[data.size() / 2].y; } double areaTrace(std::vector::const_iterator begin, std::vector::const_iterator end) { if(begin == end) return 0; auto previous = begin; auto next = begin + 1; double area = 0; while(next != end) { area += ((next->x - previous->x) * (previous->y + next->y)) / (double)2; previous++; next++; } return area; } Trace flooredLocalMaxima(std::vector::const_iterator begin, std::vector::const_iterator end, double y_floor) { Trace local_maxima_trace; Trace single_peak_trace; DataPoint previous_data_point; for(auto iter = begin; iter != end; ++iter) { DataPoint iterated_data_point(iter->x, iter->y); // qDebug().noquote() << "Current data point:" //<< iterated_data_point.toString(); if(iterated_data_point.y < y_floor) { // qDebug() << "under the floor"; if(single_peak_trace.size()) { // qDebug() << "There was a single peak trace cooking"; local_maxima_trace.push_back(single_peak_trace.maxYDataPoint()); // qDebug().noquote() << "pushed back local maximum point:" //<< local_maxima_trace.back().toString(); // Clean and set the context. single_peak_trace.clear(); previous_data_point = iterated_data_point; continue; } else { // qDebug() << "no single peak trace cooking"; previous_data_point = iterated_data_point; continue; } } else { // qDebug() << "over the floor"; // The iterated value is greater than the y_floor value, so we need to // handle it. if(iterated_data_point.y == previous_data_point.y) { // We are in a flat region, no need to change anything to the // context, just skip the point. continue; } else if(iterated_data_point.y > previous_data_point.y) { // qDebug().noquote() << "ascending in a peak"; // The previously iterated y value was smaller than the presently // iterated one, so we are ascending in a peak. // All we need to do is set the context. single_peak_trace.push_back(iterated_data_point); // qDebug().noquote() << "pushed back normal point:" //<< single_peak_trace.back().toString(); previous_data_point = iterated_data_point; continue; } else { // qDebug().noquote() << "started descending in a peak"; // No, the currently iterated y value is less than the previously // iterated value. single_peak_trace.push_back(iterated_data_point); // qDebug().noquote() << "pushed back normal point:" //<< single_peak_trace.back().toString(); previous_data_point = iterated_data_point; continue; } } } // End of // for(auto iter = begin; iter != end; ++iter) // Attention, we might arrive here with a peak being created, we need to get // its maximum if that peak is non-empty; if(single_peak_trace.size()) { local_maxima_trace.push_back(single_peak_trace.maxYDataPoint()); // qDebug().noquote() //<< "was cooking a peak: pushed back local maximum point:" //<< local_maxima_trace.back().toString(); } return local_maxima_trace; } Trace::Trace() { } Trace::Trace(const QString &text) { initialize(text); } Trace::Trace(const std::vector &xVector, const std::vector &yVector) { initialize(xVector, yVector); } size_t Trace::initialize(const QString &space_sep_text) { QStringList string_list = space_sep_text.split("\n", Qt::SkipEmptyParts); // qDebug() << "Split text into" << string_list.size() //<< "substrings:" << string_list; for(int iter = 0; iter < string_list.size(); ++iter) { QString line = string_list.at(iter); // qDebug() << "Now processing line:" << line; // Returns a string that has whitespace removed from the start and the // end, and that has each sequence of internal whitespace replaced with a // single space. line = line.simplified(); // Remove any parentheses and replace comma and semicolumn with space. // line.remove(QChar('(')); // line.remove(QChar(')')); // line.replace(QChar(','), QChar(' ')); // line.replace(QChar(';'), QChar(' ')); append(DataPoint(line)); } return size(); } size_t Trace::initialize(const QString &x_text, const QString &y_text) { QStringList x_string_list = x_text.split("\n", Qt::SkipEmptyParts); QStringList y_string_list = y_text.split("\n", Qt::SkipEmptyParts); if(x_string_list.size() != y_string_list.size()) throw ExceptionNotPossible( "trace.cpp -- ERROR x_text and y_text must have the same number of " "lines."); for(int iter = 0; iter < x_string_list.size(); ++iter) { QString x_line = x_string_list.at(iter); QString y_line = y_string_list.at(iter); // Returns a string that has whitespace removed from the start and the // end, and that has each sequence of internal whitespace replaced with a // single space. x_line = x_line.simplified(); y_line = y_line.simplified(); append(DataPoint(x_line + " " + y_line)); } return size(); } Trace::Trace( const std::vector> &dataPoints) { reserve(dataPoints.size()); for(auto &dataPoint : dataPoints) { push_back(DataPoint(dataPoint)); } sortX(); // std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { // return (a.x < b.x); //}); } Trace::Trace(const std::vector &dataPoints) : std::vector(dataPoints) { sortX(); // std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { // return (a.x < b.x); //}); } Trace::Trace(const std::vector &&dataPoints) : std::vector(std::move(dataPoints)) { // This constructor used by the MassSpectrum && constructor. sortX(); // std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { // return (a.x < b.x); //}); } Trace::Trace(const MapTrace &map_trace) { for(auto &&item : map_trace) push_back(DataPoint(item.first, item.second)); // No need to sort, maps are sorted by key (that is, x). } Trace::Trace(const Trace &other) : std::vector(other) { } Trace::Trace(const Trace &&other) : std::vector(std::move(other)) { // This constructor used by the MassSpectrum && constructor. } Trace::~Trace() { // Calls the destructor for each DataPoint object in the vector. clear(); } size_t Trace::initialize(const std::vector &xVector, const std::vector &yVector) { // Sanity check if(xVector.size() != yVector.size()) throw ExceptionNotPossible( "trace.cpp -- ERROR xVector and yVector must have the same size."); // We are initializing, not appending. erase(begin(), end()); for(std::size_t iter = 0; iter < xVector.size(); ++iter) { push_back(DataPoint(xVector.at(iter), yVector.at(iter))); } sortX(); // std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { // return (a.x < b.x); //}); #if 0 for(auto &item : *this) { std::cout << item.x << "-" << item.y; } #endif return size(); } size_t Trace::initialize(const std::map &map) { // We are initializing, not appending. erase(begin(), end()); for(auto &&item : map) { push_back(DataPoint(item.first, item.second)); } // No need to sort, maps are sorted by key (that is, x). return size(); } size_t Trace::initialize(const Trace &other) { *this = other; return size(); } size_t Trace::append(const DataPoint &data_point) { push_back(data_point); return size(); } Trace & Trace::operator=(const Trace &other) { assign(other.begin(), other.end()); return *this; } Trace & Trace::operator=(Trace &&other) { vector::operator=(std::move(other)); return *this; } TraceSPtr Trace::makeTraceSPtr() const { return std::make_shared(*this); } TraceCstSPtr Trace::makeTraceCstSPtr() const { return std::make_shared(*this); } std::vector Trace::xValues() const { std::vector values; for(auto &&dataPoint : *this) { values.push_back(dataPoint.x); } return values; } std::vector Trace::yValues() const { std::vector values; for(auto &&dataPoint : *this) { values.push_back(dataPoint.y); } return values; } std::map Trace::toMap() const { std::map map; std::pair::iterator, bool> ret; for(auto &&dataPoint : *this) { ret = map.insert( std::pair(dataPoint.x, dataPoint.y)); if(ret.second == false) { qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" << "It is odd that the Trace contains multiple same keys."; // No insertion, then increment the y value. ret.first->second += dataPoint.y; } } return map; } // const DataPoint & // Trace::dataPointWithX(pappso_double value) const //{ // auto iterator = // std::find_if(begin(), end(), [value](const DataPoint &dataPoint) { // return (dataPoint.x == value); //}); // if(iterator != end()) //{ //// The returned data point is valid. // return *iterator; //} // else //{ //// The returned data point is invalid because it is not initialized. // return DataPoint(); //} //} std::vector::iterator Trace::dataPointIteratorWithX(pappso_double value) { auto iterator = std::find_if(begin(), end(), [value](const DataPoint &dataPoint) { return (dataPoint.x == value); }); return iterator; } std::vector::const_iterator Trace::dataPointCstIteratorWithX(pappso_double value) const { auto iterator = std::find_if(begin(), end(), [value](const DataPoint &dataPoint) { return (dataPoint.x == value); }); return iterator; } std::size_t Trace::dataPointIndexWithX(pappso_double value) const { std::vector::const_iterator iterator = dataPointCstIteratorWithX(value); if(iterator != end()) return std::distance(begin(), iterator); return std::numeric_limits::max(); } DataPoint Trace::containsX(pappso_double value, PrecisionPtr precision_p) const { // std::cout << std::setprecision(10) << "getting value: " << value //<< " and precision: " << precision_p->getNominal() << std::endl; pappso_double delta = precision_p->delta(value); double left_most = value - delta; double right_most = value + delta; // std::cout << std::setprecision(10) << "delta: " << delta //<< " left_most: " << left_most << " right_most: " << right_most //<< std::endl; auto iterator = std::find_if(begin(), end(), [value, precision_p, delta, left_most, right_most]( const DataPoint &data_point) { if(precision_p) { // FIXME: unbelievable behaviour: when building in // release mode this code, under i386 (but not x86_64), // this code fails if the following%S statement is // missing. // std::cout << std::setprecision(10) //<< "Testing data_point.x: " << data_point.x //<< std::endl; // For this reason I had to deactivate the related tests // for i386 in tests/test_trace.cpp double diff_to_left_most = data_point.x - left_most; double diff_to_right_most = data_point.x - right_most; // std::cout << std::setprecision(10) //<< "diff_to_left_most: " << diff_to_left_most //<< " diff_to_right_most: " << diff_to_right_most << // std::endl; // if(diff_to_left_most > 0) //{ // std::cout << std::setprecision(10) //<< " point is right of left_most: " << // diff_to_left_most //<< std::endl; //} // if(diff_to_left_most < 0) //{ // std::cout << std::setprecision(10) //<< "point is left of left_most: " << diff_to_left_most //<< std::endl; //} // if(!diff_to_left_most) //{ // std::cout << std::setprecision(10) //<< "point is spot on left_most: " << diff_to_left_most //<< std::endl; //} // if(diff_to_right_most > 0) //{ // std::cout << std::setprecision(10) //<< "point is right of right_most: " << // diff_to_right_most //<< std::endl; //} // if(diff_to_right_most < 0) //{ // std::cout << std::setprecision(10) //<< "point is left or of right_most: " //<< diff_to_right_most << std::endl; //} // if(!diff_to_right_most) //{ // std::cout << std::setprecision(10) //<< "point is spot on right_most: " << // diff_to_right_most //<< std::endl; //} if(diff_to_left_most >= 0 && diff_to_right_most <= 0) { // std::cout << "The point is inside the range, // should return true." //<< std::endl; return true; } else { // std::cout //<< "The point is outside the range, should return // false." //<< std::endl; return false; } } else { return (data_point.x == value); } }); if(iterator != end()) { // The returned data point is valid. return *iterator; } else { // The returned data point is invalid because it is not initialized. return DataPoint(); } } const DataPoint & Trace::minXDataPoint() const { auto dataPoint = std::min_element( begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.x < b.x); }); if(dataPoint == end()) { throw ExceptionOutOfRange( QObject::tr("unable to get min peak x on spectrum size %1") .arg(size())); } return (*dataPoint); } const DataPoint & Trace::maxXDataPoint() const { auto dataPoint = std::max_element( begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.x < b.x); }); if(dataPoint == end()) { throw ExceptionOutOfRange( QObject::tr("unable to get max peak x on spectrum size %1") .arg(size())); } return (*dataPoint); } const DataPoint & Trace::minYDataPoint() const { auto dataPoint = std::min_element( begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.y < b.y); }); if(dataPoint == end()) { throw ExceptionOutOfRange( QObject::tr("unable to get min peak intensity on spectrum size %1") .arg(size())); } return (*dataPoint); } const DataPoint & Trace::maxYDataPoint() const { auto dataPoint = std::max_element( begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.y < b.y); }); if(dataPoint == end()) { throw ExceptionOutOfRange( QObject::tr("unable to get max peak intensity on spectrum size %1") .arg(size())); } return (*dataPoint); } pappso_double Trace::minX() const { return minXDataPoint().x; } pappso_double Trace::maxX() const { return maxXDataPoint().x; } pappso_double Trace::minY() const { return minYDataPoint().y; } pappso_double Trace::maxY() const { return maxYDataPoint().y; } pappso_double Trace::sumY() const { // double sum = 0; // for(auto &&dp : m_dataPoints) // sum += dp.y; // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()" //<< "Returning sum/tic:" << sum; // return sum; return std::accumulate(begin(), end(), (double)0, [](pappso_double sum, const DataPoint &dataPoint) { return (sum + dataPoint.y); }); } pappso_double Trace::sumY(double mzStart, double mzEnd) const { auto begin_it = findFirstEqualOrGreaterX(this->begin(), this->end(), mzStart); auto end_it = findFirstGreaterX(begin_it, this->end(), mzEnd); return sumYTrace(begin_it, end_it, 0); } pappso_double Trace::maxY(double mzStart, double mzEnd) const { std::vector::const_iterator begin_it = findFirstEqualOrGreaterX(this->begin(), this->end(), mzStart); double max_y = 0; while(begin_it != findFirstGreaterX(begin_it, this->end(), mzEnd)) { if(begin_it->y > max_y) max_y = begin_it->y; begin_it++; } return max_y; } void Trace::sort(SortType sort_type, SortOrder sort_order) { if(sort_type == SortType::no_sort) return; if(sort_type == SortType::x) return sortX(sort_order); else return sortY(sort_order); } void Trace::sortX(SortOrder sort_order) { if(sort_order == SortOrder::ascending) std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.x < b.x); }); else std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.x > b.x); }); } void Trace::sortY(SortOrder sort_order) { if(sort_order == SortOrder::ascending) std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.y < b.y); }); else std::sort(begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.y > b.y); }); } void Trace::unique() { auto last = std::unique(begin(), end(), [](const DataPoint &a, const DataPoint &b) { return (a.x == b.x); }); erase(last, end()); } std::size_t Trace::removeZeroYDataPoints() { qDebug(); auto it = begin(); auto end_it = end(); std::size_t count = 0; while(it != end_it) { if(Utils::almostEqual(it->y, 0)) { // erase returns an iterator to the next item in the vector. it = erase(it); ++count; } else // We need to increment (no call to erase here). ++it; } return count; } QString Trace::toString() const { // Even if the spectrum is empty, we should return an empty string. QString text; for(auto &&dataPoint : *this) { text.append(QString("%1\n").arg(dataPoint.toString())); } return text; } QByteArray Trace::xAsBase64Encoded() const { QByteArray unencoded_array; for(auto &&data_point : *this) { QByteArray local_array; local_array.setNum(data_point.x, 'f', 12); local_array.append("\n"); unencoded_array.append(local_array); } QByteArray base64_encoded_array = unencoded_array.toBase64( QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals); return base64_encoded_array; } QByteArray Trace::yAsBase64Encoded() const { QByteArray unencoded_array; for(auto &&data_point : *this) { QByteArray local_array; local_array.setNum(data_point.y, 'f', 12); local_array.append("\n"); unencoded_array.append(local_array); } QByteArray base64_encoded_array = unencoded_array.toBase64( QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals); return base64_encoded_array; } Trace & Trace::filter(const FilterInterface &filter) { return filter.filter(*this); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/trace/trace.h000644 001750 001750 00000020661 14404322662 023247 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include "../exportinmportconfig.h" #include "../types.h" #include "datapoint.h" #include "../mzrange.h" #include "../processing/filters/filterinterface.h" namespace pappso { class Trace; // @TODO function is not implemented : PMSPP_LIB_DECL QDataStream &operator<<(QDataStream &out, const Trace &trace); // @TODO function is not implemented : PMSPP_LIB_DECL QDataStream &operator>>(QDataStream &out, Trace &trace); /** @brief find the first element in which X is equal or greater than the value * searched important : it implies that Trace is sorted by X * */ PMSPP_LIB_DECL std::vector::iterator findFirstEqualOrGreaterX(std::vector::iterator begin, std::vector::iterator end, const double &value); PMSPP_LIB_DECL std::vector::const_iterator findFirstEqualOrGreaterX(std::vector::const_iterator begin, std::vector::const_iterator end, const double &value); /** @brief find the first element in which Y is different of value * */ PMSPP_LIB_DECL std::vector::iterator findDifferentYvalue(std::vector::iterator begin, std::vector::iterator end, const double &y_value); PMSPP_LIB_DECL std::vector::const_iterator findDifferentYvalue(std::vector::const_iterator begin, std::vector::const_iterator end, const double &y_value); /** @brief find the first element in which X is greater than the value * searched important : it implies that Trace is sorted by X * */ PMSPP_LIB_DECL std::vector::iterator findFirstGreaterX(std::vector::iterator begin, std::vector::iterator end, const double &value); PMSPP_LIB_DECL std::vector::const_iterator findFirstGreaterX(std::vector::const_iterator begin, std::vector::const_iterator end, const double &value); /** @brief find the element with the smallest Y value (intensity) * */ PMSPP_LIB_DECL std::vector::iterator minYDataPoint(std::vector::iterator begin, std::vector::iterator end); PMSPP_LIB_DECL std::vector::const_iterator minYDataPoint(std::vector::const_iterator begin, std::vector::const_iterator end); /** @brief find the element with the greatest Y value (intensity) * */ PMSPP_LIB_DECL std::vector::iterator maxYDataPoint(std::vector::iterator begin, std::vector::iterator end); PMSPP_LIB_DECL std::vector::const_iterator maxYDataPoint(std::vector::const_iterator begin, std::vector::const_iterator end); /** @brief Move right to the lower value * */ PMSPP_LIB_DECL std::vector::const_iterator moveLowerYRigthDataPoint(const Trace &trace, std::vector::const_iterator begin); /** @brief Move left to the lower value * */ PMSPP_LIB_DECL std::vector::const_iterator moveLowerYLeftDataPoint(const Trace &trace, std::vector::const_iterator begin); /** @brief calculate the sum of y value of a trace * */ PMSPP_LIB_DECL double sumYTrace(std::vector::const_iterator begin, std::vector::const_iterator end, double init); /** @brief calculate the mean of y value of a trace * */ PMSPP_LIB_DECL double meanYTrace(std::vector::const_iterator begin, std::vector::const_iterator end); /** @brief calculate the median of y value of a trace * */ PMSPP_LIB_DECL double medianYTrace(std::vector::const_iterator begin, std::vector::const_iterator end); /** @brief calculate the quantile of y value of a trace * @param begin begin iterator * @param end end iterator * @param quantile the quantile value between 0 and 1 * @return Y value at the quantile * */ PMSPP_LIB_DECL double quantileYTrace(std::vector::const_iterator begin, std::vector::const_iterator end, double quantile); /** @brief calculate the area of a trace * */ PMSPP_LIB_DECL double areaTrace(std::vector::const_iterator begin, std::vector::const_iterator end); PMSPP_LIB_DECL Trace flooredLocalMaxima(std::vector::const_iterator begin, std::vector::const_iterator end, double y_floor); typedef std::shared_ptr TraceSPtr; typedef std::shared_ptr TraceCstSPtr; class MapTrace; class TraceCombiner; class TracePlusCombiner; class TraceMinusCombiner; /** * \class Trace * \brief A simple container of DataPoint instances */ class PMSPP_LIB_DECL Trace : public std::vector { friend class TraceCombiner; friend class TraceMinusCombiner; friend class TracePlusCombiner; friend class MassSpectrumCombinerInterface; public: Trace(); Trace(const QString &text); Trace(const std::vector &xVector, const std::vector &yVector); Trace(const std::vector> &dataPoints); Trace(const std::vector &dataPoints); Trace(const std::vector &&dataPoints); explicit Trace(const MapTrace &map_trace); Trace(const Trace &other); Trace(const Trace &&other); // move constructor virtual ~Trace(); size_t initialize(const std::vector &xVector, const std::vector &yVector); size_t initialize(const QString &x_text, const QString &y_text); size_t initialize(const QString &space_sep_text); size_t initialize(const Trace &other); size_t initialize(const std::map &map); virtual Trace &operator=(const Trace &x); virtual Trace &operator=(Trace &&x); TraceSPtr makeTraceSPtr() const; TraceCstSPtr makeTraceCstSPtr() const; /** @brief appends a datapoint and return new size */ size_t append(const DataPoint &data_point); std::vector xValues() const; std::vector yValues() const; std::map toMap() const; DataPoint containsX(pappso_double value, PrecisionPtr precision_p = nullptr) const; // const Peak & Spectrum::getLowestIntensity() const; const DataPoint &minXDataPoint() const; // was const Peak & Spectrum::getMaxIntensity() const; const DataPoint &maxXDataPoint() const; // const Peak & Spectrum::getLowestIntensity() const; const DataPoint &minYDataPoint() const; // was const Peak & Spectrum::getMaxIntensity() const; const DataPoint &maxYDataPoint() const; pappso_double minX() const; pappso_double maxX() const; pappso_double minY() const; pappso_double maxY() const; pappso_double maxY(double mzStart, double mzEnd) const; pappso_double sumY() const; pappso_double sumY(double mzStart, double mzEnd) const; // was void Spectrum::sortByMz(); void sort(SortType sort_type, SortOrder sort_order = SortOrder::ascending); void sortX(SortOrder sort_order = SortOrder::ascending); void sortY(SortOrder sort_order = SortOrder::ascending); void unique(); std::size_t removeZeroYDataPoints(); /** @brief apply a filter on this trace * @param filter to process the signal * @return reference on the modified Trace */ virtual Trace &filter(const FilterInterface &filter) final; QString toString() const; QByteArray xAsBase64Encoded() const; QByteArray yAsBase64Encoded() const; /** @brief find datapoint with exactly x value */ std::vector::const_iterator dataPointCstIteratorWithX(pappso_double value) const; protected: //! Return a reference to the DataPoint instance that has its y member equal //! to \p value. // const DataPoint &dataPointWithX(pappso_double value) const; std::size_t dataPointIndexWithX(pappso_double value) const; std::vector::iterator dataPointIteratorWithX(pappso_double value); }; } // namespace pappso Q_DECLARE_METATYPE(pappso::Trace); Q_DECLARE_METATYPE(pappso::Trace *); extern int traceMetaTypeId; extern int tracePtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/vendors/000755 001750 001750 00000000000 14533473271 022363 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/000755 001750 001750 00000000000 14533473271 023337 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/000755 001750 001750 00000000000 14533473271 026175 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/cardano.cpp000644 001750 001750 00000012163 14526455546 030322 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/cardano.cpp * \date 17/12/2022 * \brief cubic solver adapted from * https://www.codeproject.com/articles/798474/to-solve-a-cubic-equation thanks * to "Sergey Bochkanov" for his advise */ /******************************************************************************* * Copyright (c) 2022 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "cardano.h" #include #include const double BUFFER_SQRT3{std::sqrt(3.0)}; const double BUFFER_inv27{1.0 / 27.0}; const double BUFFER_pow11{std::pow(10.0, -11.0)}; void cubic_solver( InHousePolynomialSolverResult &res, double a1, double b, double c, double d) { /** * @todo Cardaono cubic solver * * adapted in c++ from * https://www.codeproject.com/articles/798474/to-solve-a-cubic-equation thanks * to "Sergey Bochkanov" for his advise * * Cubic Equation https://github.com/harveytriana/CubicEquation Quartic Equation https://github.com/harveytriana/QuarticEcuation */ double a, p, q, u, v; double r, alpha; a = b / a1; b = c / a1; c = d / a1; double aover3(a / 3.0); p = -(a * aover3) + b; q = (2.0 * BUFFER_inv27 * a * a * a) - (b * aover3) + c; d = q * q / 4.0 + p * p * p * BUFFER_inv27; if(std::abs(d) < BUFFER_pow11) d = 0; // 3 cases D > 0, D == 0 and D < 0 if(d > 1e-20) { double dsqrt = std::sqrt(d); u = std::cbrt(-q / 2.0 + dsqrt); v = std::cbrt(-q / 2.0 - dsqrt); res.x1 = u + v - aover3; /* res.x2.real(-(u + v) / 2.0 - aover3); res.x2.imag(BUFFER_SQRT3 / 2.0 * (u - v)); res.x3.real(res.x2.real()); res.x3.imag(-res.x2.imag()); */ res.type = CardanoResultCase::positived; } if(std::abs(d) <= 1e-20) { u = std::cbrt(-q / 2.0); v = u; res.x1 = u + v - aover3; // res.x2.real(-(u + v) / 2.0 - aover3); res.type = CardanoResultCase::zerod; } if(d < -1e-20) { r = std::cbrt(std::sqrt(-p * p * p * BUFFER_inv27)); alpha = std::atan(std::sqrt(-d) / -q * 2.0); if(q > 0) // if q > 0 the angle becomes 2 * PI - alpha alpha = 2.0 * M_PI - alpha; res.x1 = r * (std::cos((6.0 * M_PI - alpha) / 3.0) + std::cos(alpha / 3.0)) - aover3; /* res.x2.real(r * (std::cos((2.0 * M_PI + alpha) / 3.0) + std::cos((4.0 * M_PI - alpha) / 3.0)) - aover3); res.x3.real(r * (std::cos((4.0 * M_PI + alpha) / 3.0) + std::cos((2.0 * M_PI - alpha) / 3.0)) - aover3); */ res.type = CardanoResultCase::negatived; } } InHousePolynomialSolverResult inHousePolynomialSolve(const std::vector &polynome) { InHousePolynomialSolverResult res; res.type = CardanoResultCase::notvalid; std::size_t polynome_size = polynome.size(); double a, b, c, delta; switch(polynome_size) { case 0: break; case 1: break; case 2: // linear// equation ax + b = 0 a = polynome[1]; b = polynome[0]; if(a != 0) { res.x1 = -b / a; res.type = CardanoResultCase::line; } break; case 3: // quadratic equation ax**2 + bx + c = 0 a = polynome[2]; if(a == 0) return res; b = polynome[1]; c = polynome[0]; if(a == 0) return res; // calculate the discriminant delta = (b * b) - (a * c * 4); // qDebug() << delta; if(delta < 0) { } else if(std::abs(delta) <= 1e-20) { res.x1 = -b / (a * 2); // qDebug() << x1.real() << " " << x2.real(); res.type = CardanoResultCase::quadratic; } else { // find two solutions delta = std::sqrt(delta); res.x1 = (-b + delta) / (a * 2); res.x2 = (-b - delta) / (a * 2); // qDebug() << x1.real() << " " << x2.real(); res.type = CardanoResultCase::quadratic; } break; case 4: cubic_solver(res, polynome[3], polynome[2], polynome[1], polynome[0]); } return res; } libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/cardano.h000644 001750 001750 00000003132 14513233205 027741 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/cardano.h * \date 17/12/2022 * \brief cubic solver adapted from * https://www.codeproject.com/articles/798474/to-solve-a-cubic-equation thanks * to "Sergey Bochkanov" for his advise */ /******************************************************************************* * Copyright (c) 2022 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include enum class CardanoResultCase : std::int8_t { notvalid, zerod, negatived, positived, quadratic, line }; struct InHousePolynomialSolverResult { CardanoResultCase type; double x1; double x2; double x3; }; InHousePolynomialSolverResult inHousePolynomialSolve(const std::vector &polynome); libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp000644 001750 001750 00000003477 14526455546 033442 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp * \date 11/11/2020 * \author Olivier Langella * \brief handles different ways to compute m/z using calibration parameters */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "mzcalibrationinterface.h" namespace pappso { MzCalibrationInterface::MzCalibrationInterface(double digitizerTimebase, double digitizerDelay) : m_digitizerTimebase(digitizerTimebase), m_digitizerDelay(digitizerDelay) { } MzCalibrationInterface::~MzCalibrationInterface() { } double MzCalibrationInterface::getTofFromTofIndex(double index) const { // mz calibration return (index * m_digitizerTimebase) + m_digitizerDelay; } double MzCalibrationInterface::getTofFromTofIndex(quint32 index) const { // mz calibration return ((double)index * m_digitizerTimebase) + m_digitizerDelay; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h000644 001750 001750 00000005313 14346367014 033066 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h * \date 11/11/2020 * \author Olivier Langella * \brief handles different ways to compute m/z using calibration parameters */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include namespace pappso { class MzCalibrationInterface; typedef std::shared_ptr MzCalibrationInterfaceSPtr; /** * @todo write docs */ class MzCalibrationInterface { public: /** * Default constructor */ MzCalibrationInterface(double digitizerTimebase, double digitizerDelay); /** * Destructor */ virtual ~MzCalibrationInterface(); /** * Assignment operator * * @param other TODO * @return TODO */ MzCalibrationInterface &operator=(const MzCalibrationInterface &other); /** * @todo write docs * * @param other TODO * @return TODO */ bool operator==(const MzCalibrationInterface &other) const; /** @brief get time of flight from raw index * @param tof_index digitizer x raw value * @return tof time of flight */ double getTofFromTofIndex(quint32 tof_index) const; /** @brief get time of flight from double index */ double getTofFromTofIndex(double tof_index) const; /** @brief get m/z from time of flight raw index * @param tof_index time of flight * @return m/z value */ virtual double getMzFromTofIndex(quint32 tof_index) = 0; /** @brief get raw TOF index of a given m/z * @param mz the mass to transform * @return integer x raw value */ virtual quint32 getTofIndexFromMz(double mz) = 0; protected: double m_digitizerTimebase = 0; double m_digitizerDelay = 0; /** @brief MZ calibration parameters */ std::vector m_mzCalibrationArr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp000644 001750 001750 00000016240 14526455546 032653 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp * \date 11/11/2020 * \author Olivier Langella * \brief implement Bruker's model type 1 formula to compute m/z */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "mzcalibrationmodel1.h" #include #include #include #include "../../../pappsoexception.h" #include "cardano.h" using namespace pappso; MzCalibrationModel1::MzCalibrationModel1(double T1_frame, double T2_frame, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3, double C4, double T1_ref, double T2_ref, double dC1, double dC2) : MzCalibrationInterface(digitizerTimebase, digitizerDelay) { double temperature_correction = dC1 * (T1_ref - T1_frame) + dC2 * (T2_ref - T2_frame); temperature_correction = (double)1.0 + (temperature_correction / 1.0e6); // temperature compensation C1 = C1 * temperature_correction; C2 = C2 / temperature_correction; m_mzCalibrationArr.clear(); m_digitizerDelay = digitizerDelay; m_digitizerTimebase = digitizerTimebase; m_mzCalibrationArr.push_back(C0); m_mzCalibrationArr.push_back(std::sqrt(std::pow(10, 12) / C1)); m_mzCalibrationArr.push_back(C2); m_mzCalibrationArr.push_back(C3); m_mzCalibrationArr.push_back(C4); } MzCalibrationModel1::~MzCalibrationModel1() { } double MzCalibrationModel1::getMzFromTofIndex(quint32 tof_index) { double tof = ((double)tof_index * m_digitizerTimebase) + m_digitizerDelay; // http://www.alglib.net/equations/polynomial.php // http://www.alglib.net/translator/man/manual.cpp.html#sub_polynomialsolve // https://math.stackexchange.com/questions/1291208/number-of-roots-of-a-polynomial-of-non-integer-degree // https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=2ahUKEwiWhLOFxqrkAhVLxYUKHVqqDFcQFjABegQIAxAB&url=https%3A%2F%2Fkluge.in-chemnitz.de%2Fopensource%2Fspline%2Fexample_alglib.cpp&usg=AOvVaw0guGejJGPmkOVg48_GJYR8 // https://stackoverflow.com/questions/26091323/how-to-plot-a-function-curve-in-r /* * beware to put the function on a single line in R: > eq <- function(m){ 1 + (sqrt((10^12)/670) * sqrt(m)) + (207.775676931964 * m) + (59.2526676368822 * (m^1.5)) } > eq <- function(m){ 313.577620892277 + (sqrt((10^12)/157424.07710945) * sqrt(m)) + (0.000338743021989553 * m) + (0 * (m^1.5)) } > plot(eq(1:1000), type='l') > eq2 <- function(m2){ 1 + sqrt((10^12)/670) * m2 + 207.775676931964 * (m2^2) + 59.2526676368822 * (m2^3) } > plot(eq2(1:sqrt(1000)), type='l') */ // How to Factor a Trinomial with Fractions as Coefficients // formula // a = c0 = 1 // b = sqrt((10^12)/c1), c1 = 670 * m^0.5 (1/2) // c = c2, c2 = 207.775676931964 * m // d = c3, c3 = 59.2526676368822 * m^1.5 (3/2) // double mz = 0; /* transformation formula given by Bruker 29/8/2019 : * x = m + dm * * time = m_mzCalibrationArr[0] * + sqrt ((10^12)/m_mzCalibrationArr[1]) * x^0.5 * + m_mzCalibrationArr[2] * x * + m_mzCalibrationArr[3] * x^1.5 */ std::vector X; X.push_back((m_mzCalibrationArr[0] - (double)tof)); X.push_back(m_mzCalibrationArr[1]); if(m_mzCalibrationArr[2] != 0) { X.push_back(m_mzCalibrationArr[2]); } if(m_mzCalibrationArr[3] != 0) { X.push_back(m_mzCalibrationArr[3]); // qDebug() << "m_mzCalibrationArr[3]=" << m_mzCalibrationArr[3]; } else { // qDebug() << "m_mzCalibrationArr[3]=" << m_mzCalibrationArr[3]; } InHousePolynomialSolverResult res = inHousePolynomialSolve(X); if(res.type == CardanoResultCase::notvalid) { throw pappso::PappsoException( QObject::tr("ERROR in %1 %2 %3" "inHousePolynomialSolve :\nresult is not valid") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } return (pow(res.x1, 2) - m_mzCalibrationArr[4]); } quint32 MzCalibrationModel1::getTofIndexFromMz(double mz) { // formula // a = c0 = 1 // b = sqrt((10^12)/c1), c1 = 670 * m^0.5 (1/2) // c = c2, c2 = 207.775676931964 * m // d = c3, c3 = 59.2526676368822 * m^1.5 (3/2) qDebug() << "mz=" << mz; mz = mz + m_mzCalibrationArr[4]; // mz_corr double tof = m_mzCalibrationArr[0]; qDebug() << "tof ( m_mzCalibrationArr[0])=" << tof; // TODO cache value of std::sqrt((std::pow(10, 12) / m_mzCalibrationArr[1])) tof += m_mzCalibrationArr[1] * std::sqrt(mz); qDebug() << "tof=" << tof; tof += m_mzCalibrationArr[2] * mz; qDebug() << "tof=" << tof; tof += m_mzCalibrationArr[3] * std::pow(mz, 1.5); qDebug() << "tof=" << tof; tof -= m_digitizerDelay; qDebug() << "tof=" << tof; tof = tof / m_digitizerTimebase; qDebug() << "index=" << tof; return (quint32)std::round(tof); } pappso::MzCalibrationModel1Cached::MzCalibrationModel1Cached( double T1_frame, double T2_frame, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3, double C4, double T1_ref, double T2_ref, double dC1, double dC2) : MzCalibrationModel1(T1_frame, T2_frame, digitizerTimebase, digitizerDelay, C0, C1, C2, C3, C4, T1_ref, T2_ref, dC1, dC2) { } pappso::MzCalibrationModel1Cached::~MzCalibrationModel1Cached() { } double MzCalibrationModel1Cached::getMzFromTofIndex(quint32 tof_index) { if(m_max > tof_index) { if(m_arrMasses[tof_index] == 0) { m_arrMasses[tof_index] = MzCalibrationModel1::getMzFromTofIndex(tof_index); } return m_arrMasses[tof_index]; } else { return MzCalibrationModel1::getMzFromTofIndex(tof_index); } } libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h000644 001750 001750 00000005674 14514537341 032320 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h * \date 11/11/2020 * \author Olivier Langella * \brief implement Bruker's model type 1 formula to compute m/z */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "mzcalibrationinterface.h" #pragma once namespace pappso { /** * @todo write docs */ class MzCalibrationModel1 : public MzCalibrationInterface { public: /** * Default constructor */ MzCalibrationModel1(double T1_frame, double T2_frame, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3, double C4, double T1_ref, double T2_ref, double dC1, double dC2); /** * Destructor */ virtual ~MzCalibrationModel1(); virtual double getMzFromTofIndex(quint32 tof_index) override; virtual quint32 getTofIndexFromMz(double mz) override; private: // double m_arrMasses[600000] = {0}; }; class MzCalibrationModel1Cached : public MzCalibrationModel1 { public: /** * Default constructor */ MzCalibrationModel1Cached(double T1_frame, double T2_frame, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3, double C4, double T1_ref, double T2_ref, double dC1, double dC2); /** * Destructor */ virtual ~MzCalibrationModel1Cached(); virtual double getMzFromTofIndex(quint32 tof_index) override; private: double m_arrMasses[600000] = {0}; quint32 m_max = 600000; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.cpp000644 001750 001750 00000007652 14526455546 032635 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/mzcalibratiostore.cpp * \date 12/11/2020 * \author Olivier Langella * \brief store a collection of MzCalibration models */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "mzcalibrationstore.h" #include #include "mzcalibrationmodel1.h" #include "../../../pappsoexception.h" #include namespace pappso { MzCalibrationStore::MzCalibrationStore() { } MzCalibrationStore::~MzCalibrationStore() { } MzCalibrationInterfaceSPtr MzCalibrationStore::getInstance(double T1_frame, double T2_frame, const QSqlRecord &mz_calibration_record) { // qDebug(); MzCalibrationInterfaceSPtr msp_mzCalibration = nullptr; QString mz_calibration_key = QString("%1-%2-%3-%4") .arg(mz_calibration_record.value("Id").toInt()) .arg(mz_calibration_record.value("ModelType").toInt()) .arg(QString::number(T1_frame, 'g', 10)) .arg(QString::number(T2_frame, 'g', 10)); auto itmap = m_mapMzCalibrationSPtr.find(mz_calibration_key); if(itmap != m_mapMzCalibrationSPtr.end()) { // qDebug() << mz_calibration_key << " calibration object found"; msp_mzCalibration = itmap->second; } else { if(mz_calibration_record.value("ModelType").toInt() == 1) { msp_mzCalibration = std::make_shared( T1_frame, T2_frame, mz_calibration_record.value("DigitizerTimebase") .toDouble(), // MzCalibration.DigitizerTimebase mz_calibration_record.value("DigitizerDelay") .toDouble(), // MzCalibration.DigitizerDelay mz_calibration_record.value("C0").toDouble(), // MzCalibration.C0 mz_calibration_record.value("C1").toDouble(), // MzCalibration.C1 mz_calibration_record.value("C2").toDouble(), // MzCalibration.C2 mz_calibration_record.value("C3").toDouble(), // MzCalibration.C3 mz_calibration_record.value("C4").toDouble(), // MzCalibration.C4 mz_calibration_record.value("T1").toDouble(), mz_calibration_record.value("T2").toDouble(), mz_calibration_record.value("dC1").toDouble(), mz_calibration_record.value("dC2").toDouble()); } else { // qDebug(); throw PappsoException( QObject::tr( "ERROR in MzCalibrationStore::getInstance : MzCalibration " "ModelType \"%1\" not available") .arg(mz_calibration_record.value("ModelType").toInt())); } m_mapMzCalibrationSPtr.insert( std::pair(mz_calibration_key, msp_mzCalibration)); } if(msp_mzCalibration == nullptr) { // qDebug(); throw PappsoException(QObject::tr( "ERROR in MzCalibrationStore::getInstance MzCalibration is NULL")); } // qDebug(); return (msp_mzCalibration); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.h000644 001750 001750 00000003213 14346367014 032257 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/mzcalibration/mzcalibratiostore.h * \date 12/11/2020 * \author Olivier Langella * \brief store a collection of MzCalibration models */ /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "mzcalibrationinterface.h" #include namespace pappso { /** * @todo write docs */ class MzCalibrationStore { public: /** * @todo write docs */ MzCalibrationStore(); /** * @todo write docs */ virtual ~MzCalibrationStore(); MzCalibrationInterfaceSPtr getInstance( double T1_frame, double T2_frame, const QSqlRecord &mzcalibration_record); private: std::map m_mapMzCalibrationSPtr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/xicextractor/000755 001750 001750 00000000000 14533473271 026056 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.cpp000644 001750 001750 00000010771 14526455546 033406 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.cpp * \date 21/09/2019 * \author Olivier Langella * \brief minimum functions to extract XICs from Tims Data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsdirectxicextractor.h" #include "../../../msrun/xiccoord/xiccoordtims.h" #include "../../../exception/exceptioninterrupted.h" #include using namespace pappso; TimsDirectXicExtractor::TimsDirectXicExtractor(MsRunReaderSPtr &msrun_reader) : pappso::TimsXicExtractorInterface(msrun_reader) { } TimsDirectXicExtractor::~TimsDirectXicExtractor() { } void pappso::TimsDirectXicExtractor::protectedExtractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) { qDebug(); std::size_t xic_total_number = std::distance(it_xic_coord_list_begin, it_xic_coord_list_end); if(xic_total_number == 0) return; std::vector xic_coord_tims_list; xic_coord_tims_list.reserve(xic_total_number); for(auto it = it_xic_coord_list_begin; it != it_xic_coord_list_end; it++) { XicCoordTims *p_xic_coord_tims = dynamic_cast(it->get()); if(p_xic_coord_tims == nullptr) { } else { xic_coord_tims_list.push_back(p_xic_coord_tims); } } std::sort(xic_coord_tims_list.begin(), xic_coord_tims_list.end(), [](const XicCoordTims *pa, const XicCoordTims *pb) { return pa->rtTarget < pb->rtTarget; }); std::vector tims_frameid_list = mp_timsData->getTimsMS1FrameIdRange( xic_coord_tims_list[0]->rtTarget - m_retentionTimeAroundTarget, xic_coord_tims_list.back()->rtTarget + m_retentionTimeAroundTarget); monitor.setStatus(QObject::tr("extracting %1 XICs on %2 Tims frames") .arg(xic_total_number) .arg(tims_frameid_list.size())); monitor.setTotalSteps(tims_frameid_list.size()); qDebug() << " tims_frameid_list.size()=" << tims_frameid_list.size(); qDebug() << " rt begin=" << xic_coord_tims_list[0]->rtTarget; qDebug() << " rt end=" << xic_coord_tims_list.back()->rtTarget; for(std::size_t frame_id : tims_frameid_list) { std::vector::iterator itXicListbegin = xic_coord_tims_list.begin(); std::vector::iterator itXicListend = xic_coord_tims_list.end(); qDebug(); TimsFrameCstSPtr frame_sptr = mp_timsData->getTimsFrameCstSPtrCached(frame_id); qDebug(); double rtframe = frame_sptr.get()->getTime(); qDebug(); double rtbeginframe = rtframe - m_retentionTimeAroundTarget; double rtendframe = rtframe + m_retentionTimeAroundTarget; if(rtbeginframe < 0) rtbeginframe = 0; qDebug() << rtbeginframe; while((itXicListbegin != itXicListend) && ((*itXicListbegin)->rtTarget < rtbeginframe)) { itXicListbegin++; } qDebug(); itXicListend = itXicListbegin; while((itXicListend != xic_coord_tims_list.end()) && ((*itXicListend)->rtTarget < rtendframe)) { itXicListend++; } frame_sptr.get()->extractTimsXicListInRtRange( itXicListbegin, itXicListend, m_xicExtractMethod); qDebug() << "" << frame_sptr.get()->getId(); monitor.count(); if(monitor.shouldIstop()) { throw pappso::ExceptionInterrupted( QObject::tr("Xic extraction process interrupted")); } } qDebug(); } libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.h000644 001750 001750 00000003317 14346367014 033041 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.h * \date 21/09/2019 * \author Olivier Langella * \brief minimum functions to extract XICs from Tims Data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "timsxicextractorinterface.h" namespace pappso { /** * @todo write docs */ class TimsDirectXicExtractor : public TimsXicExtractorInterface { public: /** * Default constructor */ TimsDirectXicExtractor(MsRunReaderSPtr &msrun_reader); /** * Destructor */ virtual ~TimsDirectXicExtractor(); protected: void protectedExtractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) override; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.cpp000644 001750 001750 00000003547 14526455546 034077 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.cpp * \date 21/09/2019 * \author Olivier Langella * \brief minimum functions to extract XICs from Tims Data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsxicextractorinterface.h" #include "../../../msrun/private/timsmsrunreaderms2.h" #include "../../../exception/exceptionnotpossible.h" using namespace pappso; TimsXicExtractorInterface::TimsXicExtractorInterface( MsRunReaderSPtr &msrun_reader) : MsRunXicExtractorInterface(msrun_reader) { pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(msrun_reader.get()); if(tims2_reader != nullptr) { mp_timsData = tims2_reader->getTimsDataSPtr().get(); } else { throw pappso::ExceptionNotPossible(QObject::tr( "error: TimsXicExtractorInterface must use a TimsMsRunReaderMs2")); } } TimsXicExtractorInterface::~TimsXicExtractorInterface() { } libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.h000644 001750 001750 00000003217 14346367014 033526 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.h * \date 21/09/2019 * \author Olivier Langella * \brief minimum functions to extract XICs from Tims Data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../../mzrange.h" #include "../../../xic/xic.h" #include "../timsdata.h" #include "../../../xicextractor/msrunxicextractorinterface.h" namespace pappso { /** * @todo set of minimum functions to build XICs using Tims data */ class TimsXicExtractorInterface : public MsRunXicExtractorInterface { friend TimsData; public: TimsXicExtractorInterface(MsRunReaderSPtr &msrun_reader); virtual ~TimsXicExtractorInterface(); protected: TimsData *mp_timsData; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsbindec.cpp000644 001750 001750 00000030403 14526455546 026173 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsbindec.h * \date 23/08/2019 * \author Olivier Langella * \brief binary file handler of Bruker's TimsTof raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsbindec.h" #include "../../../pappsomspp/pappsoexception.h" #include "../../../pappsomspp/exception/exceptionnotimplemented.h" #include "timsframetype1.h" #include #include #include #include "timsframerawdatachunck.h" #include "timsdata.h" using namespace pappso; TimsBinDec::TimsBinDec(const QFileInfo &timsBinFile, int timsCompressionType) : m_timsBinFile(timsBinFile.absoluteFilePath()) { m_timsCompressionType = timsCompressionType; if((timsCompressionType != 1) && (timsCompressionType != 2)) { throw pappso::ExceptionNotImplemented( QObject::tr("compression type %1 not handled by this library") .arg(timsCompressionType)); } if(m_timsBinFile.isEmpty()) { throw pappso::PappsoException( QObject::tr("No TIMS binary file name specified")); } QFile file(m_timsBinFile); if(!file.open(QIODevice::ReadOnly)) { throw PappsoException( QObject::tr("ERROR opening TIMS binary file %1 for read") .arg(timsBinFile.absoluteFilePath())); } } TimsBinDec::TimsBinDec(const TimsBinDec &other) : m_timsBinFile(other.m_timsBinFile) { } TimsBinDec::~TimsBinDec() { if(mpa_decompressMemoryBuffer != nullptr) { delete[] mpa_decompressMemoryBuffer; } if(mp_fileLinear != nullptr) { mp_fileLinear->close(); delete mp_fileLinear; } if(mp_fileRandom != nullptr) { mp_fileRandom->close(); delete mp_fileRandom; } } void pappso::TimsBinDec::closeLinearRead() { // qDebug(); if(mp_fileLinear != nullptr) { mp_fileLinear->close(); delete mp_fileLinear; } mp_fileLinear = nullptr; m_firstFrameId = 0; m_lastFrameId = 0; m_linearAccessRawDataChunckList.resize(0); // qDebug(); } QFile * TimsBinDec::getQfileLinear( std::size_t frameId, const std::vector &frame_record_list) { if(mp_fileLinear == nullptr) { mp_fileLinear = new QFile(m_timsBinFile); if(!mp_fileLinear->open(QIODevice::ReadOnly)) { throw PappsoException( QObject::tr("ERROR opening TIMS binary file %1 for read") .arg(m_timsBinFile)); } startLinearRead( frameId, m_linearAccessRawDataChunckDequeSize, frame_record_list); } return mp_fileLinear; } QFile * pappso::TimsBinDec::getQfileRandom() { if(mp_fileRandom == nullptr) { mp_fileRandom = new QFile(m_timsBinFile); if(!mp_fileRandom->open(QIODevice::ReadOnly)) { throw PappsoException( QObject::tr("ERROR opening TIMS binary file %1 for read") .arg(m_timsBinFile)); } } return mp_fileRandom; } TimsFrameSPtr TimsBinDec::getTimsFrameSPtrByOffset( std::size_t frameId, const std::vector &frame_record_list) { qDebug() << "frameId:" << frameId; // QMutexLocker locker(&m_mutex); QFile *p_file = getQfileLinear(frameId, frame_record_list); if(mp_fileLinear->pos() < (qint64)frame_record_list[m_firstFrameId].tims_offset) { } else { if(frameId > m_lastFrameId) { if(frameId - m_lastFrameId < m_linearForwardThreshold) { // move forward moveLinearReadForward(frame_record_list); } } } auto it = std::find_if(m_linearAccessRawDataChunckList.begin(), m_linearAccessRawDataChunckList.end(), [frameId](const TimsFrameRawDataChunck &chunck) { if(chunck.getFrameId() == frameId) return true; return false; }); if(it != m_linearAccessRawDataChunckList.end()) { try { return getTimsFrameFromRawDataChunck(*it); } catch(PappsoException &error) { throw PappsoException( QObject::tr("ERROR reading TIMS binary file %1 with linear QFile: " "%2") .arg(m_timsBinFile) .arg(error.qwhat())); } } // random access file // qDebug(); p_file = getQfileRandom(); bool seekpos_ok = p_file->seek(frame_record_list[frameId].tims_offset); if(!seekpos_ok) { throw PappsoException( QObject::tr("ERROR reading TIMS frame %1 TIMS binary file %2: " "m_timsBinFile.seek(%3) failed") .arg(frameId) .arg(m_timsBinFile) .arg(frame_record_list[frameId].tims_offset)); } try { m_randemAccessFrameRawDataChunck.readTimsFrame( p_file, frameId, frame_record_list); } catch(PappsoException &error) { throw PappsoException( QObject::tr("ERROR reading TIMS binary file %1 with random QFile: " "%2") .arg(m_timsBinFile) .arg(error.qwhat())); } return getTimsFrameFromRawDataChunck(m_randemAccessFrameRawDataChunck); } void pappso::TimsBinDec::moveLinearReadForward( const std::vector &frame_record_list) { // qDebug(); for(std::size_t i = 0; i < m_linearForwardThreshold; i++) { auto it = std::min_element( m_linearAccessRawDataChunckList.begin(), m_linearAccessRawDataChunckList.end(), [](const TimsFrameRawDataChunck &a, const TimsFrameRawDataChunck &b) { return a.getFrameId() < b.getFrameId(); }); m_lastFrameId++; m_firstFrameId++; if(m_lastFrameId >= frame_record_list.size()) break; it->readTimsFrame(mp_fileLinear, m_lastFrameId, frame_record_list); } // qDebug(); } TimsFrameSPtr TimsBinDec::getTimsFrameFromRawDataChunck( const TimsFrameRawDataChunck &raw_data_chunck) { // qDebug(); TimsFrameSPtr frame_sptr; if(raw_data_chunck.getCompressedSize() > 0) { // qDebug(); if(m_timsCompressionType == 2) { auto decompressed_size2 = ZSTD_getFrameContentSize(raw_data_chunck.getMemoryBuffer(), raw_data_chunck.getCompressedSize()); // qDebug(); if(decompressed_size2 == ZSTD_CONTENTSIZE_UNKNOWN) { throw PappsoException( QObject::tr("ERROR TimsBinDec::getTimsFrameFromRawDataChunck " "reading TIMS frame %1 TIMS binary file %2: " " decompressed_size2 == ZSTD_CONTENTSIZE_UNKNOWN, " "frame_length=%3") .arg(raw_data_chunck.getFrameId()) .arg(m_timsBinFile) .arg(raw_data_chunck.getFrameLength())); } // qDebug(); if(decompressed_size2 == ZSTD_CONTENTSIZE_ERROR) { // qDebug(); throw PappsoException( QObject::tr("ERROR TimsBinDec::getTimsFrameFromRawDataChunck " "reading TIMS frame %1 TIMS binary file %2: " " decompressed_size2 == ZSTD_CONTENTSIZE_ERROR, " "frame_length=%3") .arg(raw_data_chunck.getFrameId()) .arg(m_timsBinFile) .arg(raw_data_chunck.getFrameLength())); } qDebug() << " decompressed_size2=" << decompressed_size2; if(m_decompressMemoryBufferSize < (decompressed_size2 + 10)) { if(mpa_decompressMemoryBuffer != nullptr) { delete[] mpa_decompressMemoryBuffer; } m_decompressMemoryBufferSize = decompressed_size2 + 10; mpa_decompressMemoryBuffer = new char[m_decompressMemoryBufferSize]; } std::size_t decompressed_size = ZSTD_decompress(mpa_decompressMemoryBuffer, m_decompressMemoryBufferSize, raw_data_chunck.getMemoryBuffer(), raw_data_chunck.getCompressedSize()); // qDebug(); if(decompressed_size != decompressed_size2) { throw PappsoException( QObject::tr("ERROR TimsBinDec::getTimsFrameFromRawDataChunck " "reading TIMS frame %1 TIMS binary file %2: " "decompressed_size != decompressed_size2") .arg(raw_data_chunck.getFrameId()) .arg(m_timsBinFile) .arg(decompressed_size) .arg(decompressed_size2)); } // qDebug(); frame_sptr = std::make_shared(raw_data_chunck.getFrameId(), raw_data_chunck.getFrameNumberOfScans(), mpa_decompressMemoryBuffer, decompressed_size); } else { if(m_timsCompressionType == 1) { frame_sptr = std::make_shared( raw_data_chunck.getFrameId(), raw_data_chunck.getFrameNumberOfScans(), raw_data_chunck.getMemoryBuffer(), raw_data_chunck.getCompressedSize()); } } // delete[] mpa_decompressMemoryBuffer; } else { frame_sptr = std::make_shared(raw_data_chunck.getFrameId(), raw_data_chunck.getFrameNumberOfScans(), nullptr, 0); } return frame_sptr; } /* TimsFrameCstSPtr TimsBinDec::getTimsFrameCstSPtr(std::size_t timsId) { return getTimsFrameCstSPtrByOffset(timsId, m_indexArray[timsId]); } */ void pappso::TimsBinDec::startLinearRead( std::size_t start_frame_id, std::size_t chunk_deque_size, const std::vector &frame_record_list) { // qDebug(); m_linearAccessRawDataChunckList.resize(chunk_deque_size); m_firstFrameId = start_frame_id; m_lastFrameId = start_frame_id; QFile *p_file = mp_fileLinear; if(p_file == nullptr) { throw PappsoException(QObject::tr("ERROR mp_fileLinear == nullptr")); } bool seekpos_ok = p_file->seek(frame_record_list[start_frame_id].tims_offset); if(!seekpos_ok) { throw PappsoException( QObject::tr("ERROR reading TIMS frame %1 TIMS binary file %2: " "m_timsBinFile.seek(%3) failed") .arg(start_frame_id) .arg(m_timsBinFile) .arg(frame_record_list[start_frame_id].tims_offset)); } try { for(TimsFrameRawDataChunck &chunck : m_linearAccessRawDataChunckList) { chunck.readTimsFrame(p_file, start_frame_id, frame_record_list); m_lastFrameId = start_frame_id; start_frame_id++; } } catch(PappsoException &error) { throw PappsoException( QObject::tr( "ERROR in TimsBinDec::startLinearRead reading TIMS binary file %1:\n " " start_frame_id=%2 m_firstFrameId=%3 m_lastFrameId=%4 " "%5") .arg(m_timsBinFile) .arg(start_frame_id) .arg(m_firstFrameId) .arg(m_lastFrameId) .arg(error.qwhat())); } // qDebug(); } libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsbindec.h000644 001750 001750 00000006410 14346367014 025631 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsbindec.h * \date 23/08/2019 * \author Olivier Langella * \brief binary file handler of Bruker's TimsTof raw data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include "timsframerecord.h" #include "timsframe.h" #include "timsframerawdatachunck.h" #include namespace pappso { /** * @todo write docs */ class TimsBinDec { public: /** * Default constructor */ TimsBinDec(const QFileInfo &timsBinFile, int timsCompressionType); /** * Copy constructor * * @param other TODO */ TimsBinDec(const TimsBinDec &other); /** * Destructor */ virtual ~TimsBinDec(); // TimsFrameCstSPtr getTimsFrameCstSPtr(std::size_t timsId); TimsFrameSPtr getTimsFrameSPtrByOffset( std::size_t frameId, const std::vector &frame_record_list); /** @brief close file access and flush cache */ void closeLinearRead(); private: /** @brief open one QFile handler for linear read */ QFile * getQfileLinear(std::size_t frameId, const std::vector &frame_record_list); /** @brief open one QFile handler for random read */ QFile *getQfileRandom(); /** @brief populate a fifo buffer with TimsFrameRawDataChunck * accelerates inputs from file */ void startLinearRead( std::size_t start_frame_id, std::size_t chunk_deque_size, const std::vector &frame_record_list); TimsFrameSPtr getTimsFrameFromRawDataChunck(const TimsFrameRawDataChunck &raw_data_chunck); void moveLinearReadForward( const std::vector &frame_record_list); private: int m_timsCompressionType; QString m_timsBinFile; QFile *mp_fileLinear = nullptr; QFile *mp_fileRandom = nullptr; // QMutex m_mutex; // std::vector m_indexArray; char *mpa_decompressMemoryBuffer = nullptr; std::size_t m_decompressMemoryBufferSize = 0; TimsFrameRawDataChunck m_randemAccessFrameRawDataChunck; std::vector m_linearAccessRawDataChunckList; std::size_t m_firstFrameId = 0; std::size_t m_lastFrameId = 0; std::size_t m_linearAccessRawDataChunckDequeSize = 100; std::size_t m_linearForwardThreshold = 30; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsdata.cpp000644 001750 001750 00000234573 14531705061 025660 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsdata.cpp * \date 27/08/2019 * \author Olivier Langella * \brief main Tims data handler */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsdata.h" #include "../../exception/exceptionnotfound.h" #include "../../exception/exceptioninterrupted.h" #include "../../processing/combiners/tracepluscombiner.h" #include "../../processing/filters/filtertriangle.h" #include "../../processing/filters/filtersuitestring.h" #include #include #include #include #include #include #include #include namespace pappso { TimsData::TimsData(QDir timsDataDirectory) : m_timsDataDirectory(timsDataDirectory) { qDebug() << "Start of construction of TimsData"; mpa_mzCalibrationStore = new MzCalibrationStore(); if(!m_timsDataDirectory.exists()) { throw PappsoException( QObject::tr("ERROR TIMS data directory %1 not found") .arg(m_timsDataDirectory.absolutePath())); } if(!QFileInfo(m_timsDataDirectory.absoluteFilePath("analysis.tdf")).exists()) { throw PappsoException( QObject::tr("ERROR TIMS data directory, %1 sqlite file not found") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))); } // Open the database QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q(qdb); if(!q.exec("select Key, Value from GlobalMetadata where " "Key='TimsCompressionType';")) { qDebug(); throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(q.lastError().databaseText()) .arg(q.lastError().driverText()) .arg(q.lastError().nativeErrorCode())); } int compression_type = 0; if(q.next()) { compression_type = q.value(1).toInt(); } qDebug() << " compression_type=" << compression_type; mpa_timsBinDec = new TimsBinDec( QFileInfo(m_timsDataDirectory.absoluteFilePath("analysis.tdf_bin")), compression_type); qDebug(); // get number of precursors m_totalNumberOfPrecursors = 0; if(!q.exec("SELECT COUNT( DISTINCT Id) FROM Precursors;")) { m_hasPrecursorTable = false; } else { m_hasPrecursorTable = true; if(q.next()) { m_totalNumberOfPrecursors = q.value(0).toLongLong(); } } fillFrameIdDescrList(); // get number of scans if(!q.exec("SELECT SUM(NumScans),COUNT(Id) FROM Frames")) { qDebug(); throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } if(q.next()) { m_totalNumberOfScans = q.value(0).toLongLong(); m_totalNumberOfFrames = q.value(1).toLongLong(); } if(!q.exec("select * from MzCalibration;")) { qDebug(); throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(q.lastError().databaseText()) .arg(q.lastError().driverText()) .arg(q.lastError().nativeErrorCode())); } while(q.next()) { QSqlRecord record = q.record(); m_mapMzCalibrationRecord.insert( std::pair(record.value(0).toInt(), record)); } // m_mapTimsCalibrationRecord if(!q.exec("select * from TimsCalibration;")) { qDebug(); throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(q.lastError().databaseText()) .arg(q.lastError().driverText()) .arg(q.lastError().nativeErrorCode())); } while(q.next()) { QSqlRecord record = q.record(); m_mapTimsCalibrationRecord.insert( std::pair(record.value(0).toInt(), record)); } // store frames if(!q.exec("select Frames.TimsId, Frames.AccumulationTime, " // 1 "Frames.MzCalibration, " // 2 "Frames.T1, Frames.T2, " // 4 "Frames.Time, Frames.MsMsType, Frames.TimsCalibration, " // 7 "Frames.Id " // 8 " FROM Frames;")) { qDebug(); throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(q.lastError().databaseText()) .arg(q.lastError().driverText()) .arg(q.lastError().nativeErrorCode())); } m_mapFramesRecord.resize(m_totalNumberOfFrames + 1); while(q.next()) { QSqlRecord record = q.record(); TimsFrameRecord &frame_record = m_mapFramesRecord[record.value(8).toULongLong()]; frame_record.frame_id = record.value(8).toULongLong(); frame_record.tims_offset = record.value(0).toULongLong(); frame_record.accumulation_time = record.value(1).toDouble(); frame_record.mz_calibration_id = record.value(2).toULongLong(); frame_record.frame_t1 = record.value(3).toDouble(); frame_record.frame_t2 = record.value(4).toDouble(); frame_record.frame_time = record.value(5).toDouble(); frame_record.msms_type = record.value(6).toInt(); frame_record.tims_calibration_id = record.value(7).toULongLong(); } mcsp_ms2Filter = std::make_shared( "chargeDeconvolution|0.02dalton mzExclusion|0.01dalton"); std::shared_ptr ms1filter = std::make_shared(); ms1filter.get()->setTriangleSlope(50, 0.01); mcsp_ms1Filter = ms1filter; qDebug(); } void TimsData::setMonoThread(bool is_mono_thread) { m_isMonoThread = is_mono_thread; } QSqlDatabase TimsData::openDatabaseConnection() const { QString database_connection_name = QString("%1_%2") .arg(m_timsDataDirectory.absolutePath()) .arg((quintptr)QThread::currentThread()); // Open the database QSqlDatabase qdb = QSqlDatabase::database(database_connection_name); if(!qdb.isValid()) { qDebug() << database_connection_name; qdb = QSqlDatabase::addDatabase("QSQLITE", database_connection_name); qdb.setDatabaseName(m_timsDataDirectory.absoluteFilePath("analysis.tdf")); } if(!qdb.open()) { qDebug(); throw PappsoException( QObject::tr("ERROR opening TIMS sqlite database file %1, database name " "%2 :\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(database_connection_name) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } return qdb; } TimsData::TimsData([[maybe_unused]] const TimsData &other) { qDebug(); } TimsData::~TimsData() { // m_qdb.close(); if(mpa_timsBinDec != nullptr) { delete mpa_timsBinDec; } if(mpa_mzCalibrationStore != nullptr) { delete mpa_mzCalibrationStore; } } void TimsData::setMs2BuiltinCentroid(bool centroid) { m_builtinMs2Centroid = centroid; } bool TimsData::getMs2BuiltinCentroid() const { return m_builtinMs2Centroid; } void TimsData::fillFrameIdDescrList() { qDebug(); QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec(QString("SELECT Id, NumScans FROM " "Frames ORDER BY Id")); if(q.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } TimsFrameSPtr tims_frame; bool index_found = false; std::size_t timsId; /** @brief number of scans in mobility dimension (number of TOF scans) */ std::size_t numberScans; std::size_t cumulScans = 0; while(q.next() && (!index_found)) { timsId = q.value(0).toULongLong(); numberScans = q.value(1).toULongLong(); // qDebug() << timsId; m_thousandIndexToFrameIdDescrListIndex.insert( std::pair((cumulScans / 1000), m_frameIdDescrList.size())); m_frameIdDescrList.push_back({timsId, numberScans, cumulScans}); cumulScans += numberScans; } qDebug(); } std::pair TimsData::getScanCoordinateFromRawIndex(std::size_t raw_index) const { std::size_t fast_access = raw_index / 1000; qDebug() << " fast_access=" << fast_access; auto map_it = m_thousandIndexToFrameIdDescrListIndex.find(fast_access); if(map_it == m_thousandIndexToFrameIdDescrListIndex.end()) { throw ExceptionNotFound( QObject::tr("ERROR raw index %1 not found (fast_access)") .arg(raw_index)); } std::size_t start_point_index = map_it->second; while((start_point_index > 0) && (m_frameIdDescrList[start_point_index].m_cumulSize > raw_index)) { start_point_index--; } for(std::size_t i = start_point_index; i < m_frameIdDescrList.size(); i++) { if(raw_index < (m_frameIdDescrList[i].m_cumulSize + m_frameIdDescrList[i].m_size)) { return std::pair( m_frameIdDescrList[i].m_frameId, raw_index - m_frameIdDescrList[i].m_cumulSize); } } throw ExceptionNotFound( QObject::tr("ERROR raw index %1 not found").arg(raw_index)); } std::size_t TimsData::getRawIndexFromCoordinate(std::size_t frame_id, std::size_t scan_num) const { for(auto frameDescr : m_frameIdDescrList) { if(frameDescr.m_frameId == frame_id) { return frameDescr.m_cumulSize + scan_num; } } throw ExceptionNotFound( QObject::tr("ERROR raw index with frame=%1 scan=%2 not found") .arg(frame_id) .arg(scan_num)); } /** @brief get a mass spectrum given its spectrum index * @param raw_index a number begining at 0, corresponding to a Tims Scan in * the order they lies in the binary data file */ MassSpectrumCstSPtr TimsData::getMassSpectrumCstSPtrByRawIndex(std::size_t raw_index) { qDebug() << " raw_index=" << raw_index; try { auto coordinate = getScanCoordinateFromRawIndex(raw_index); return getMassSpectrumCstSPtr(coordinate.first, coordinate.second); } catch(PappsoException &error) { throw PappsoException( QObject::tr("Error TimsData::getMassSpectrumCstSPtrByRawIndex " "raw_index=%1 :\n%2") .arg(raw_index) .arg(error.qwhat())); } } TimsFrameBaseCstSPtr TimsData::getTimsFrameBaseCstSPtr(std::size_t timsId) { qDebug() << " timsId=" << timsId; const TimsFrameRecord &frame_record = m_mapFramesRecord[timsId]; if(timsId > m_totalNumberOfScans) { throw ExceptionNotFound( QObject::tr("ERROR Frames database id %1 not found").arg(timsId)); } TimsFrameBaseSPtr tims_frame; tims_frame = std::make_shared( TimsFrameBase(timsId, frame_record.tims_offset)); auto it_map_record = m_mapMzCalibrationRecord.find(frame_record.mz_calibration_id); if(it_map_record != m_mapMzCalibrationRecord.end()) { double T1_frame = frame_record.frame_t1; // Frames.T1 double T2_frame = frame_record.frame_t2; // Frames.T2 tims_frame.get()->setMzCalibrationInterfaceSPtr( mpa_mzCalibrationStore->getInstance( T1_frame, T2_frame, it_map_record->second)); } else { throw ExceptionNotFound( QObject::tr("ERROR MzCalibration database id %1 not found") .arg(frame_record.mz_calibration_id)); } tims_frame.get()->setAccumulationTime(frame_record.accumulation_time); tims_frame.get()->setTime(frame_record.frame_time); tims_frame.get()->setMsMsType(frame_record.msms_type); auto it_map_record_tims_calibration = m_mapTimsCalibrationRecord.find(frame_record.tims_calibration_id); if(it_map_record_tims_calibration != m_mapTimsCalibrationRecord.end()) { tims_frame.get()->setTimsCalibration( it_map_record_tims_calibration->second.value(1).toInt(), it_map_record_tims_calibration->second.value(2).toDouble(), it_map_record_tims_calibration->second.value(3).toDouble(), it_map_record_tims_calibration->second.value(4).toDouble(), it_map_record_tims_calibration->second.value(5).toDouble(), it_map_record_tims_calibration->second.value(6).toDouble(), it_map_record_tims_calibration->second.value(7).toDouble(), it_map_record_tims_calibration->second.value(8).toDouble(), it_map_record_tims_calibration->second.value(9).toDouble(), it_map_record_tims_calibration->second.value(10).toDouble(), it_map_record_tims_calibration->second.value(11).toDouble()); } else { throw ExceptionNotFound( QObject::tr("ERROR TimsCalibration database id %1 not found") .arg(frame_record.tims_calibration_id)); } return tims_frame; } std::vector TimsData::getTimsMS1FrameIdRange(double rt_begin, double rt_end) const { qDebug() << " rt_begin=" << rt_begin << " rt_end=" << rt_end; if(rt_begin < 0) rt_begin = 0; std::vector tims_frameid_list; QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec(QString("SELECT Frames.Id FROM Frames WHERE " "Frames.MsMsType=0 AND (Frames.Time>=%1) AND " "(Frames.Time<=%2) ORDER BY Frames.Time;") .arg(rt_begin) .arg(rt_end)); if(q.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, database name %2, " "executing SQL " "command %3:\n%4\n%5\n%6") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(qdb.databaseName()) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } while(q.next()) { tims_frameid_list.push_back(q.value(0).toULongLong()); } return tims_frameid_list; } TimsFrameCstSPtr TimsData::getTimsFrameCstSPtr(std::size_t timsId) { qDebug() << " timsId=" << timsId << " m_mapFramesRecord.size()=" << m_mapFramesRecord.size(); /* for(auto pair_i : m_mapFramesRecord) { qDebug() << " pair_i=" << pair_i.first; } */ const TimsFrameRecord &frame_record = m_mapFramesRecord[timsId]; if(timsId > m_totalNumberOfScans) { throw ExceptionNotFound( QObject::tr("ERROR Frames database id %1 not found").arg(timsId)); } TimsFrameSPtr tims_frame; // QMutexLocker lock(&m_mutex); tims_frame = mpa_timsBinDec->getTimsFrameSPtrByOffset(timsId, m_mapFramesRecord); // lock.unlock(); qDebug(); auto it_map_record = m_mapMzCalibrationRecord.find(frame_record.mz_calibration_id); if(it_map_record != m_mapMzCalibrationRecord.end()) { double T1_frame = frame_record.frame_t1; // Frames.T1 double T2_frame = frame_record.frame_t2; // Frames.T2 tims_frame.get()->setMzCalibrationInterfaceSPtr( mpa_mzCalibrationStore->getInstance( T1_frame, T2_frame, it_map_record->second)); } else { throw ExceptionNotFound( QObject::tr( "ERROR MzCalibration database id %1 not found for frame_id=%2") .arg(frame_record.mz_calibration_id) .arg(timsId)); } tims_frame.get()->setAccumulationTime(frame_record.accumulation_time); tims_frame.get()->setTime(frame_record.frame_time); tims_frame.get()->setMsMsType(frame_record.msms_type); qDebug(); auto it_map_record_tims_calibration = m_mapTimsCalibrationRecord.find(frame_record.tims_calibration_id); if(it_map_record_tims_calibration != m_mapTimsCalibrationRecord.end()) { tims_frame.get()->setTimsCalibration( it_map_record_tims_calibration->second.value(1).toInt(), it_map_record_tims_calibration->second.value(2).toDouble(), it_map_record_tims_calibration->second.value(3).toDouble(), it_map_record_tims_calibration->second.value(4).toDouble(), it_map_record_tims_calibration->second.value(5).toDouble(), it_map_record_tims_calibration->second.value(6).toDouble(), it_map_record_tims_calibration->second.value(7).toDouble(), it_map_record_tims_calibration->second.value(8).toDouble(), it_map_record_tims_calibration->second.value(9).toDouble(), it_map_record_tims_calibration->second.value(10).toDouble(), it_map_record_tims_calibration->second.value(11).toDouble()); } else { throw ExceptionNotFound( QObject::tr("ERROR TimsCalibration database id %1 not found") .arg(frame_record.tims_calibration_id)); } qDebug(); return tims_frame; } MassSpectrumCstSPtr TimsData::getMassSpectrumCstSPtr(std::size_t timsId, std::size_t scanNum) { qDebug() << " timsId=" << timsId << " scanNum=" << scanNum; TimsFrameCstSPtr frame = getTimsFrameCstSPtrCached(timsId); return frame->getMassSpectrumCstSPtr(scanNum); } std::size_t TimsData::getTotalNumberOfFrames() const { return m_totalNumberOfFrames; } std::size_t TimsData::getTotalNumberOfScans() const { return m_totalNumberOfScans; } std::size_t TimsData::getTotalNumberOfPrecursors() const { return m_totalNumberOfPrecursors; } std::vector TimsData::getPrecursorsFromMzRtCharge(int charge, double mz_val, double rt_sec, double k0) { std::vector precursor_ids; std::vector> ids; QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec( QString( "SELECT Frames.Time, Precursors.MonoisotopicMz, Precursors.Charge, " "Precursors.Id, Frames.Id, PasefFrameMsMsInfo.ScanNumBegin, " "PasefFrameMsMsInfo.scanNumEnd " "FROM Frames " "INNER JOIN PasefFrameMsMsInfo ON Frames.Id = PasefFrameMsMsInfo.Frame " "INNER JOIN Precursors ON PasefFrameMsMsInfo.Precursor = Precursors.Id " "WHERE Precursors.Charge == %1 " "AND Precursors.MonoisotopicMz > %2 -0.01 " "AND Precursors.MonoisotopicMz < %2 +0.01 " "AND Frames.Time >= %3 -1 " "AND Frames.Time < %3 +1; ") .arg(charge) .arg(mz_val) .arg(rt_sec)); if(q.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, database name %2, " "executing SQL " "command %3:\n%4\n%5\n%6") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(qdb.databaseName()) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } while(q.next()) { // qInfo() << q.value(0).toDouble() << q.value(1).toDouble() // << q.value(2).toDouble() << q.value(3).toDouble(); std::vector sql_values; sql_values.push_back(q.value(4).toDouble()); // frame id sql_values.push_back(q.value(3).toDouble()); // precursor id sql_values.push_back(q.value(5).toDouble()); // scan num begin sql_values.push_back(q.value(6).toDouble()); // scan num end sql_values.push_back(q.value(1).toDouble()); // mz_value ids.push_back(sql_values); if(std::find(precursor_ids.begin(), precursor_ids.end(), q.value(3).toDouble()) == precursor_ids.end()) { precursor_ids.push_back(q.value(3).toDouble()); } } if(precursor_ids.size() > 1) { // std::vector precursor_ids_ko = // getMatchPrecursorIdByKo(ids, values[3]); if(precursor_ids.size() > 1) { precursor_ids = getClosestPrecursorIdByMz(ids, k0); } return precursor_ids; } else { return precursor_ids; } } std::vector TimsData::getMatchPrecursorIdByKo(std::vector> ids, double ko_value) { std::vector precursor_id; for(std::vector index : ids) { auto coordinate = getScanCoordinateFromRawIndex(index[0]); TimsFrameBaseCstSPtr tims_frame; tims_frame = getTimsFrameBaseCstSPtrCached(coordinate.first); double bko = tims_frame.get()->getOneOverK0Transformation(index[2]); double eko = tims_frame.get()->getOneOverK0Transformation(index[3]); // qInfo() << "diff" << (bko + eko) / 2; double mean_ko = (bko + eko) / 2; if(mean_ko > ko_value - 0.1 && mean_ko < ko_value + 0.1) { precursor_id.push_back(index[1]); } } return precursor_id; } std::vector TimsData::getClosestPrecursorIdByMz(std::vector> ids, double mz_value) { std::vector best_precursor; double best_value = 1; int count = 1; int best_val_position = 0; for(std::vector values : ids) { double new_val = abs(mz_value - values[4]); if(new_val < best_value) { best_value = new_val; best_val_position = count; } count++; } best_precursor.push_back(ids[best_val_position][1]); return best_precursor; } unsigned int TimsData::getMsLevelBySpectrumIndex(std::size_t spectrum_index) { auto coordinate = getScanCoordinateFromRawIndex(spectrum_index); auto tims_frame = getTimsFrameCstSPtrCached(coordinate.first); return tims_frame.get()->getMsLevel(); } void TimsData::getQualifiedMassSpectrumByRawIndex( const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, std::size_t spectrum_index, bool want_binary_data) { try { auto coordinate = getScanCoordinateFromRawIndex(spectrum_index); TimsFrameBaseCstSPtr tims_frame; if(want_binary_data) { tims_frame = getTimsFrameCstSPtrCached(coordinate.first); } else { tims_frame = getTimsFrameBaseCstSPtrCached(coordinate.first); } MassSpectrumId spectrum_id; spectrum_id.setSpectrumIndex(spectrum_index); spectrum_id.setMsRunId(msrun_id); spectrum_id.setNativeId(QString("frame=%1 scan=%2 index=%3") .arg(coordinate.first) .arg(coordinate.second) .arg(spectrum_index)); mass_spectrum.setMassSpectrumId(spectrum_id); mass_spectrum.setMsLevel(tims_frame.get()->getMsLevel()); mass_spectrum.setRtInSeconds(tims_frame.get()->getTime()); mass_spectrum.setDtInMilliSeconds( tims_frame.get()->getDriftTime(coordinate.second)); // 1/K0 mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::OneOverK0, tims_frame.get()->getOneOverK0Transformation(coordinate.second)); mass_spectrum.setEmptyMassSpectrum(true); if(want_binary_data) { mass_spectrum.setMassSpectrumSPtr( tims_frame.get()->getMassSpectrumSPtr(coordinate.second)); if(mass_spectrum.size() > 0) { mass_spectrum.setEmptyMassSpectrum(false); } } else { // if(tims_frame.get()->getNbrPeaks(coordinate.second) > 0) //{ mass_spectrum.setEmptyMassSpectrum(false); // } } if(tims_frame.get()->getMsLevel() > 1) { auto spectrum_descr = getSpectrumDescrWithScanCoordinate(coordinate); if(spectrum_descr.precursor_id > 0) { mass_spectrum.appendPrecursorIonData( spectrum_descr.precursor_ion_data); MassSpectrumId spectrum_id; std::size_t prec_spectrum_index = getRawIndexFromCoordinate( spectrum_descr.parent_frame, coordinate.second); mass_spectrum.setPrecursorSpectrumIndex(prec_spectrum_index); mass_spectrum.setPrecursorNativeId( QString("frame=%1 scan=%2 index=%3") .arg(spectrum_descr.parent_frame) .arg(coordinate.second) .arg(prec_spectrum_index)); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::IsolationMz, spectrum_descr.isolationMz); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::IsolationWidth, spectrum_descr.isolationWidth); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::CollisionEnergy, spectrum_descr.collisionEnergy); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::BrukerPrecursorIndex, (quint64)spectrum_descr.precursor_id); } } } catch(PappsoException &error) { throw PappsoException( QObject::tr("Error TimsData::getQualifiedMassSpectrumByRawIndex " "spectrum_index=%1 :\n%2") .arg(spectrum_index) .arg(error.qwhat())); } } Trace TimsData::getTicChromatogram() const { // In the Frames table, each frame has a record describing the // SummedIntensities for all the mobility spectra. MapTrace rt_tic_map_trace; using Pair = std::pair; using Map = std::map; using Iterator = Map::iterator; QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec(QString("SELECT Time, SummedIntensities " "FROM Frames WHERE MsMsType = 0 " "ORDER BY Time;")); if(q.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, database name %2, " "executing SQL " "command %3:\n%4\n%5\n%6") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(qdb.databaseName()) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } while(q.next()) { bool ok = false; int cumulated_results = 2; double rt = q.value(0).toDouble(&ok); cumulated_results -= ok; double sumY = q.value(1).toDouble(&ok); cumulated_results -= ok; if(cumulated_results) { throw PappsoException( QObject::tr( "ERROR in TIMS sqlite database file: could not read either the " "retention time or the summed intensities (%1, database name " "%2, " "executing SQL " "command %3:\n%4\n%5\n%6") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(qdb.databaseName()) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } // Try to insert value sumY at key rt. std::pair res = rt_tic_map_trace.insert(Pair(rt, sumY)); if(!res.second) { // One other same rt value was seen already (like in ion mobility // mass spectrometry, for example). Only increment the y value. res.first->second += sumY; } } // qDebug().noquote() << "The TIC chromatogram:\n" //<< rt_tic_map_trace.toTrace().toString(); return rt_tic_map_trace.toTrace(); } void TimsData::getQualifiedMs1MassSpectrumByPrecursorId( const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, const SpectrumDescr &spectrum_descr, bool want_binary_data) { qDebug() << " ms2_index=" << spectrum_descr.ms2_index << " precursor_index=" << spectrum_descr.precursor_id; TracePlusCombiner combiner; MapTrace combiner_result; try { mass_spectrum.setMsLevel(1); mass_spectrum.setPrecursorSpectrumIndex(0); mass_spectrum.setEmptyMassSpectrum(true); MassSpectrumId spectrum_id; spectrum_id.setSpectrumIndex(spectrum_descr.ms1_index); spectrum_id.setNativeId( QString("frame=%1 begin=%2 end=%3 precursor=%4 idxms1=%5") .arg(spectrum_descr.parent_frame) .arg(spectrum_descr.scan_mobility_start) .arg(spectrum_descr.scan_mobility_end) .arg(spectrum_descr.precursor_id) .arg(spectrum_descr.ms1_index)); spectrum_id.setMsRunId(msrun_id); mass_spectrum.setMassSpectrumId(spectrum_id); TimsFrameBaseCstSPtr tims_frame; if(want_binary_data) { qDebug() << "bindec"; tims_frame = getTimsFrameCstSPtrCached(spectrum_descr.parent_frame); } else { tims_frame = getTimsFrameBaseCstSPtrCached(spectrum_descr.parent_frame); } mass_spectrum.setRtInSeconds(tims_frame.get()->getTime()); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::OneOverK0begin, tims_frame.get()->getOneOverK0Transformation( spectrum_descr.scan_mobility_start)); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::OneOverK0end, tims_frame.get()->getOneOverK0Transformation( spectrum_descr.scan_mobility_end)); if(want_binary_data) { combiner.combine(combiner_result, tims_frame.get()->cumulateScansToTrace( spectrum_descr.scan_mobility_start, spectrum_descr.scan_mobility_end)); Trace trace(combiner_result); qDebug(); if(trace.size() > 0) { if(mcsp_ms1Filter != nullptr) { mcsp_ms1Filter->filter(trace); } qDebug(); mass_spectrum.setMassSpectrumSPtr( MassSpectrum(trace).makeMassSpectrumSPtr()); mass_spectrum.setEmptyMassSpectrum(false); } else { mass_spectrum.setMassSpectrumSPtr(nullptr); mass_spectrum.setEmptyMassSpectrum(true); } } qDebug(); } catch(PappsoException &error) { throw error; } catch(std::exception &error) { qDebug() << QString("Failure %1 ").arg(error.what()); } } TimsFrameBaseCstSPtr TimsData::getTimsFrameBaseCstSPtrCached(std::size_t timsId) { QMutexLocker locker(&m_mutex); for(auto &tims_frame : m_timsFrameBaseCache) { if(tims_frame.get()->getId() == timsId) { m_timsFrameBaseCache.push_back(tims_frame); if(m_timsFrameBaseCache.size() > m_cacheSize) m_timsFrameBaseCache.pop_front(); return tims_frame; } } m_timsFrameBaseCache.push_back(getTimsFrameBaseCstSPtr(timsId)); if(m_timsFrameBaseCache.size() > m_cacheSize) m_timsFrameBaseCache.pop_front(); return m_timsFrameBaseCache.back(); } TimsFrameCstSPtr TimsData::getTimsFrameCstSPtrCached(std::size_t timsId) { qDebug(); QMutexLocker locker(&m_mutex); for(auto &tims_frame : m_timsFrameCache) { if(tims_frame.get()->getId() == timsId) { m_timsFrameCache.push_back(tims_frame); if(m_timsFrameCache.size() > m_cacheSize) m_timsFrameCache.pop_front(); return tims_frame; } } TimsFrameCstSPtr frame_sptr = getTimsFrameCstSPtr(timsId); // locker.relock(); qDebug(); m_timsFrameCache.push_back(frame_sptr); if(m_timsFrameCache.size() > m_cacheSize) m_timsFrameCache.pop_front(); qDebug(); return m_timsFrameCache.back(); /* // the frame is not in the cache if(std::find(m_someoneIsLoadingFrameId.begin(), m_someoneIsLoadingFrameId.end(), timsId) == m_someoneIsLoadingFrameId.end()) { // not found, we are alone on this frame m_someoneIsLoadingFrameId.push_back(timsId); qDebug(); //locker.unlock(); TimsFrameCstSPtr frame_sptr = getTimsFrameCstSPtr(timsId); // locker.relock(); qDebug(); m_someoneIsLoadingFrameId.erase( std::find(m_someoneIsLoadingFrameId.begin(), m_someoneIsLoadingFrameId.end(), timsId)); m_timsFrameCache.push_back(frame_sptr); if(m_timsFrameCache.size() > m_cacheSize) m_timsFrameCache.pop_front(); qDebug(); return m_timsFrameCache.back(); } else { // this frame is loading by someone else, we have to wait qDebug(); // locker.unlock(); // std::size_t another_frame_id = timsId; while(true) { QThread::usleep(1); // locker.relock(); for(auto &tims_frame : m_timsFrameCache) { if(tims_frame.get()->getId() == timsId) { m_timsFrameCache.push_back(tims_frame); return tims_frame; } } // locker.unlock(); } } // namespace pappso */ } void TimsData::setMs2FilterCstSPtr(FilterInterfaceCstSPtr &filter) { mcsp_ms2Filter = filter; } void TimsData::setMs1FilterCstSPtr(FilterInterfaceCstSPtr &filter) { mcsp_ms1Filter = filter; } XicCoordTims TimsData::getXicCoordTimsFromPrecursorId(std::size_t precursor_id, PrecisionPtr precision_ptr) { qDebug(); XicCoordTims xic_coord_tims_struct; try { if(m_mapXicCoordRecord.size() == 0) { QMutexLocker lock(&m_mutex); // Go get records! // We proceed in this way: // 1. For each Precursor reference to the Precursors table's ID // found in the PasefFrameMsMsInfo table, store the precursor ID for // step 2. // 2. From the Precursors table's ID from step 1, get the // MonoisotopicMz. // 3. From the PasefFrameMsMsInfo table, for the Precursors table's // ID reference, get a reference to the Frames table's ID. Thanks to // the Frames ID, look for the Time value (acquisition retention // time) for the MS/MS spectrum. The Time value in the Frames tables // always corresponds to a Frame of MsMsType 8 (that is, MS/MS), // which is expected since we are looking into MS/MS data. // 4. From the PasefFrameMsMsInfo table, associate the values // ScanNumBegin and ScanNumEnd, the mobility bins in which the // precursor was found. QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec( QString("SELECT Precursors.id, " "min(Frames.Time), " "min(PasefFrameMsMsInfo.ScanNumBegin), " "max(PasefFrameMsMsInfo.ScanNumEnd), " "Precursors.MonoisotopicMz " "FROM " "PasefFrameMsMsInfo INNER JOIN Precursors ON " "PasefFrameMsMsInfo.Precursor=Precursors.Id INNER JOIN " "Frames ON PasefFrameMsMsInfo.Frame=Frames.Id " "GROUP BY Precursors.id;")); if(q.lastError().isValid()) { qDebug(); throw PappsoException( QObject::tr( "ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } q.last(); // strange bug : get the last sql record and get back, // otherwise it will not retrieve all records. q.first(); // std::size_t i = 0; do { QSqlRecord record = q.record(); m_mapXicCoordRecord.insert(std::pair( (std::size_t)record.value(0).toULongLong(), record)); } while(q.next()); } auto it_map_xiccoord = m_mapXicCoordRecord.find(precursor_id); if(it_map_xiccoord == m_mapXicCoordRecord.end()) { throw ExceptionNotFound( QObject::tr("ERROR Precursors database id %1 not found") .arg(precursor_id)); } auto &q = it_map_xiccoord->second; xic_coord_tims_struct.mzRange = MzRange(q.value(4).toDouble(), precision_ptr); xic_coord_tims_struct.scanNumBegin = q.value(2).toUInt(); xic_coord_tims_struct.scanNumEnd = q.value(3).toUInt(); xic_coord_tims_struct.rtTarget = q.value(1).toDouble(); // xic_structure.charge = q.value(5).toUInt(); xic_coord_tims_struct.xicSptr = std::make_shared(); } catch(PappsoException &error) { throw error; } catch(std::exception &error) { qDebug() << QString("Failure %1 ").arg(error.what()); } return xic_coord_tims_struct; } std::map TimsData::getRawMs2ByPrecursorId(std::size_t precursor_index) { qDebug(); std::map raw_spectrum; try { QSqlDatabase qdb = openDatabaseConnection(); qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec(QString("SELECT PasefFrameMsMsInfo.*, Precursors.* FROM " "PasefFrameMsMsInfo INNER JOIN Precursors ON " "PasefFrameMsMsInfo.Precursor=Precursors.Id where " "Precursors.Id=%1;") .arg(precursor_index)); if(q.lastError().isValid()) { qDebug(); throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } qDebug(); // m_mutex.unlock(); if(q.size() == 0) { throw ExceptionNotFound( QObject::tr( "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor " "id=%1 not found") .arg(precursor_index)); } else { // qDebug() << " q.size()="<< q.size(); qDebug(); bool first = true; std::size_t scan_mobility_start = 0; std::size_t scan_mobility_end = 0; std::vector tims_frame_list; while(q.next()) { tims_frame_list.push_back(q.value(0).toLongLong()); if(first) { scan_mobility_start = q.value(1).toLongLong(); scan_mobility_end = q.value(2).toLongLong(); first = false; } } // QMutexLocker locker(&m_mutex_spectrum); qDebug(); TimsFrameCstSPtr tims_frame, previous_frame; // TracePlusCombiner combiner; // MapTrace combiner_result; for(std::size_t tims_id : tims_frame_list) { tims_frame = getTimsFrameCstSPtrCached(tims_id); qDebug(); /*combiner.combine(combiner_result, tims_frame.get()->cumulateScanToTrace( scan_mobility_start, scan_mobility_end));*/ if(previous_frame.get() != nullptr) { if(previous_frame.get()->hasSameCalibrationData( *tims_frame.get())) { } else { throw ExceptionNotFound( QObject::tr( "ERROR in %1 %2, different calibration data " "between frame id %3 and frame id %4") .arg(__FILE__) .arg(__FUNCTION__) .arg(previous_frame.get()->getId()) .arg(tims_frame.get()->getId())); } } tims_frame.get()->cumulateScansInRawMap( raw_spectrum, scan_mobility_start, scan_mobility_end); qDebug(); previous_frame = tims_frame; } qDebug() << " precursor_index=" << precursor_index << " num_rows=" << tims_frame_list.size() << " sql=" << q.lastQuery() << " " << (std::size_t)QThread::currentThreadId(); if(first == true) { throw ExceptionNotFound( QObject::tr( "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor " "id=%1 not found") .arg(precursor_index)); } qDebug(); } } catch(PappsoException &error) { throw PappsoException(QObject::tr("ERROR in %1 (precursor_index=%2):\n%3") .arg(__FUNCTION__) .arg(precursor_index) .arg(error.qwhat())); } catch(std::exception &error) { qDebug() << QString("Failure %1 ").arg(error.what()); } return raw_spectrum; qDebug(); } void TimsData::getQualifiedMs2MassSpectrumByPrecursorId( const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, const SpectrumDescr &spectrum_descr, bool want_binary_data) { try { qDebug(); MassSpectrumId spectrum_id; spectrum_id.setSpectrumIndex(spectrum_descr.ms2_index); spectrum_id.setNativeId(QString("precursor=%1 idxms2=%2") .arg(spectrum_descr.precursor_id) .arg(spectrum_descr.ms2_index)); spectrum_id.setMsRunId(msrun_id); mass_spectrum.setMassSpectrumId(spectrum_id); mass_spectrum.setMsLevel(2); qDebug() << "spectrum_descr.precursor_id=" << spectrum_descr.precursor_id << " spectrum_descr.ms1_index=" << spectrum_descr.ms1_index << " spectrum_descr.ms2_index=" << spectrum_descr.ms2_index; mass_spectrum.setPrecursorSpectrumIndex(spectrum_descr.ms1_index); mass_spectrum.setEmptyMassSpectrum(true); qDebug(); mass_spectrum.appendPrecursorIonData(spectrum_descr.precursor_ion_data); mass_spectrum.setPrecursorNativeId( QString("frame=%1 begin=%2 end=%3 precursor=%4 idxms1=%5") .arg(spectrum_descr.parent_frame) .arg(spectrum_descr.scan_mobility_start) .arg(spectrum_descr.scan_mobility_end) .arg(spectrum_descr.precursor_id) .arg(spectrum_descr.ms1_index)); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::IsolationMz, spectrum_descr.isolationMz); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::IsolationWidth, spectrum_descr.isolationWidth); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::CollisionEnergy, spectrum_descr.collisionEnergy); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::BrukerPrecursorIndex, (quint64)spectrum_descr.precursor_id); // QMutexLocker locker(&m_mutex_spectrum); qDebug(); TimsFrameBaseCstSPtr tims_frame, previous_frame; // TracePlusCombiner combiner; // MapTrace combiner_result; std::map raw_spectrum; bool first = true; for(std::size_t tims_id : spectrum_descr.tims_frame_list) { qDebug() << " precursor_index=" << spectrum_descr.precursor_id << " tims_id=" << tims_id << (std::size_t)QThread::currentThreadId(); ; if(want_binary_data) { qDebug() << "bindec"; tims_frame = getTimsFrameCstSPtrCached(tims_id); } else { tims_frame = getTimsFrameBaseCstSPtrCached(tims_id); } qDebug() << (std::size_t)QThread::currentThreadId(); ; if(first) { mass_spectrum.setRtInSeconds(tims_frame.get()->getTime()); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::OneOverK0begin, tims_frame.get()->getOneOverK0Transformation( spectrum_descr.scan_mobility_start)); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::OneOverK0end, tims_frame.get()->getOneOverK0Transformation( spectrum_descr.scan_mobility_end)); first = false; } if(want_binary_data) { qDebug(); /*combiner.combine(combiner_result, tims_frame.get()->cumulateScanToTrace( scan_mobility_start, scan_mobility_end));*/ if(previous_frame.get() != nullptr) { if(previous_frame.get()->hasSameCalibrationData( *tims_frame.get())) { } else { throw ExceptionNotFound( QObject::tr( "ERROR in %1 %2, different calibration data " "between frame id %3 and frame id %4") .arg(__FILE__) .arg(__FUNCTION__) .arg(previous_frame.get()->getId()) .arg(tims_frame.get()->getId())); } } qDebug() << (std::size_t)QThread::currentThreadId(); ; tims_frame.get()->cumulateScansInRawMap( raw_spectrum, spectrum_descr.scan_mobility_start, spectrum_descr.scan_mobility_end); qDebug() << (std::size_t)QThread::currentThreadId(); ; } previous_frame = tims_frame; } qDebug() << " precursor_index=" << spectrum_descr.precursor_id << " num_rows=" << spectrum_descr.tims_frame_list.size() << (std::size_t)QThread::currentThreadId(); if(first == true) { throw ExceptionNotFound( QObject::tr( "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor " "id=%1 not found") .arg(spectrum_descr.precursor_id)); } if(want_binary_data) { qDebug() << " precursor_index=" << spectrum_descr.precursor_id; // peak_pick.filter(trace); Trace trace; if(m_builtinMs2Centroid) { trace = tims_frame.get()->getTraceFromCumulatedScansBuiltinCentroid( raw_spectrum); } else { // no builtin centroid: trace = tims_frame.get()->getTraceFromCumulatedScans(raw_spectrum); } if(trace.size() > 0) { qDebug() << " precursor_index=" << spectrum_descr.precursor_id << " " << trace.size() << " " << (std::size_t)QThread::currentThreadId(); if(mcsp_ms2Filter != nullptr) { // FilterTriangle filter; // filter.setTriangleSlope(50, 0.02); // filter.filter(trace); // trace.filter(FilterHighPass(10)); mcsp_ms2Filter->filter(trace); } // FilterScaleFactorY filter_scale((double)1 / // (double)tims_frame_list.size()); // filter_scale.filter(trace); qDebug() << " precursor_index=" << spectrum_descr.precursor_id; mass_spectrum.setMassSpectrumSPtr( MassSpectrum(trace).makeMassSpectrumSPtr()); mass_spectrum.setEmptyMassSpectrum(false); } else { mass_spectrum.setMassSpectrumSPtr(nullptr); mass_spectrum.setEmptyMassSpectrum(true); } qDebug(); } qDebug(); } catch(PappsoException &error) { throw PappsoException( QObject::tr("ERROR in %1 (ms2_index=%2 precursor_index=%3):\n%4") .arg(__FUNCTION__) .arg(spectrum_descr.ms2_index) .arg(spectrum_descr.precursor_id) .arg(error.qwhat())); } catch(std::exception &error) { qDebug() << QString("Failure %1 ").arg(error.what()); } qDebug(); } void TimsData::ms2ReaderSpectrumCollectionByMsLevel( const MsRunIdCstSPtr &msrun_id, SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) { qDebug() << " ms_level=" << ms_level; if(!m_hasPrecursorTable) { throw PappsoException( QObject::tr("unable to read spectrum list : this data file does not " "contain MS2 data, no precursor found.")); } QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery qprecursor_list = qdb.exec(QString( "SELECT PasefFrameMsMsInfo.Frame, " // 0 "PasefFrameMsMsInfo.ScanNumBegin, " // 1 "PasefFrameMsMsInfo.ScanNumEnd, " // 2 "PasefFrameMsMsInfo.IsolationMz, " // 3 "PasefFrameMsMsInfo.IsolationWidth, " // 4 "PasefFrameMsMsInfo.CollisionEnergy, " // 5 "PasefFrameMsMsInfo.Precursor, " // 6 "Precursors.Id, " // 7 "Precursors.LargestPeakMz, " // 8 "Precursors.AverageMz, " // 9 "Precursors.MonoisotopicMz, " // 10 "Precursors.Charge, " // 11 "Precursors.ScanNumber, " // 12 "Precursors.Intensity, " // 13 "Precursors.Parent " // 14 "FROM PasefFrameMsMsInfo " "INNER JOIN Precursors ON " "PasefFrameMsMsInfo.Precursor=Precursors.Id " "ORDER BY PasefFrameMsMsInfo.Precursor, PasefFrameMsMsInfo.Frame ;")); if(qprecursor_list.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(qprecursor_list.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } qDebug() << "qprecursor_list.size()=" << qprecursor_list.size(); qDebug() << QObject::tr( "TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(qprecursor_list.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode()); qDebug() << "qprecursor_list.isActive()=" << qprecursor_list.isActive(); qDebug() << "qprecursor_list.isSelect()=" << qprecursor_list.isSelect(); bool first = true; SpectrumDescr spectrum_descr; /* std::size_t i = 0; while(qprecursor_list.next()) { qDebug() << "i=" << i; i++; }*/ qprecursor_list.last(); // strange bug : get the last sql record and get // back, otherwise it will not retrieve all records. qDebug() << "qprecursor_list.at()=" << qprecursor_list.at(); qprecursor_list.first(); std::vector spectrum_description_list; spectrum_descr.precursor_id = 0; // std::size_t i = 0; do { if(spectrum_descr.precursor_id != (std::size_t)qprecursor_list.value(6).toLongLong()) { // new precursor if(spectrum_descr.precursor_id > 0) { spectrum_description_list.push_back(spectrum_descr); } spectrum_descr.tims_frame_list.clear(); first = true; } qDebug() << " qprecursor_list.value(6).toLongLong() =" << qprecursor_list.value(6).toLongLong(); spectrum_descr.precursor_id = (std::size_t)qprecursor_list.value(6).toLongLong(); qDebug() << " spectrum_descr.precursor_id =" << spectrum_descr.precursor_id; qDebug() << " cumul tims frame:" << qprecursor_list.value(0).toLongLong(); spectrum_descr.tims_frame_list.push_back( qprecursor_list.value(0).toLongLong()); qDebug() << " first =" << first; if(first) { qDebug(); // mass_spectrum.setPrecursorCharge(q.value(11).toInt()); // mass_spectrum.setPrecursorMz(q.value(10).toDouble()); // mass_spectrum.setPrecursorIntensity(q.value(13).toDouble()); spectrum_descr.precursor_ion_data = PrecursorIonData(qprecursor_list.value(10).toDouble(), qprecursor_list.value(11).toInt(), qprecursor_list.value(13).toDouble()); // spectrum_descr.precursor_id = q.value(6).toLongLong(); spectrum_descr.ms2_index = (spectrum_descr.precursor_id * 2) - 1; spectrum_descr.ms1_index = (spectrum_descr.precursor_id * 2) - 2; spectrum_descr.scan_mobility_start = qprecursor_list.value(1).toLongLong(); spectrum_descr.scan_mobility_end = qprecursor_list.value(2).toLongLong(); spectrum_descr.isolationMz = qprecursor_list.value(3).toDouble(); spectrum_descr.isolationWidth = qprecursor_list.value(4).toDouble(); spectrum_descr.collisionEnergy = qprecursor_list.value(5).toFloat(); spectrum_descr.parent_frame = qprecursor_list.value(14).toLongLong(); first = false; } // qDebug() << "qprecursor_list.executedQuery()=" // << qprecursor_list.executedQuery(); // qDebug() << "qprecursor_list.last()=" << qprecursor_list.last(); // i++; } while(qprecursor_list.next()); // last One // new precursor if(spectrum_descr.precursor_id > 0) { spectrum_description_list.push_back(spectrum_descr); } QString local_filepath = m_timsDataDirectory.absoluteFilePath("analysis.tdf"); if(m_isMonoThread) { for(SpectrumDescr &spectrum_descr : spectrum_description_list) { std::vector mass_spectrum_list; ms2ReaderGenerateMS1MS2Spectrum( msrun_id, mass_spectrum_list, handler, spectrum_descr, ms_level); for(auto &qualified_spectrum : mass_spectrum_list) { handler.setQualifiedMassSpectrum(qualified_spectrum); } if(handler.shouldStop()) { qDebug() << "The operation was cancelled. Breaking the loop."; throw ExceptionInterrupted( QObject::tr("reading TimsTOF job cancelled by the user :\n%1") .arg(local_filepath)); } } } else { TimsData *itself = this; SpectrumCollectionHandlerInterface *pointer_handler = &handler; std::function( const TimsData::SpectrumDescr &)> map_function_generate_spectrum = [itself, msrun_id, pointer_handler, ms_level]( const TimsData::SpectrumDescr &spectrum_descr) -> std::vector { std::vector mass_spectrum_list; itself->ms2ReaderGenerateMS1MS2Spectrum(msrun_id, mass_spectrum_list, *pointer_handler, spectrum_descr, ms_level); return mass_spectrum_list; }; std::function &qualified_spectrum_list)> reduce_function_spectrum_list = [pointer_handler, local_filepath]( std::size_t res, const std::vector &qualified_spectrum_list) { for(auto &qualified_spectrum : qualified_spectrum_list) { pointer_handler->setQualifiedMassSpectrum(qualified_spectrum); } if(pointer_handler->shouldStop()) { qDebug() << "The operation was cancelled. Breaking the loop."; throw ExceptionInterrupted( QObject::tr("reading TimsTOF job on %1 cancelled by the user") .arg(local_filepath)); } res++; }; QFuture res; res = QtConcurrent::mappedReduced( spectrum_description_list.begin(), spectrum_description_list.end(), map_function_generate_spectrum, reduce_function_spectrum_list, QtConcurrent::OrderedReduce); res.waitForFinished(); } handler.loadingEnded(); mpa_timsBinDec->closeLinearRead(); } void TimsData::ms2ReaderGenerateMS1MS2Spectrum( const MsRunIdCstSPtr &msrun_id, std::vector &qualified_mass_spectrum_list, SpectrumCollectionHandlerInterface &handler, const TimsData::SpectrumDescr &spectrum_descr, unsigned int ms_level) { qDebug() << " ms_level=" << ms_level; // The handler will receive the index of the mass spectrum in the // current run via the mass spectrum id member datum. if((ms_level == 0) || (ms_level == 1)) { qualified_mass_spectrum_list.push_back(QualifiedMassSpectrum()); getQualifiedMs1MassSpectrumByPrecursorId( msrun_id, qualified_mass_spectrum_list.back(), spectrum_descr, handler.needMsLevelPeakList(1)); } if((ms_level == 0) || (ms_level == 2)) { qualified_mass_spectrum_list.push_back(QualifiedMassSpectrum()); getQualifiedMs2MassSpectrumByPrecursorId( msrun_id, qualified_mass_spectrum_list.back(), spectrum_descr, handler.needMsLevelPeakList(2)); } qDebug(); } TimsData::SpectrumDescr TimsData::getSpectrumDescrWithPrecursorId(std::size_t precursor_id) { SpectrumDescr spectrum_descr; QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec(QString("SELECT PasefFrameMsMsInfo.Frame, " // 0 "PasefFrameMsMsInfo.ScanNumBegin, " // 1 "PasefFrameMsMsInfo.ScanNumEnd, " // 2 "PasefFrameMsMsInfo.IsolationMz, " // 3 "PasefFrameMsMsInfo.IsolationWidth, " // 4 "PasefFrameMsMsInfo.CollisionEnergy, " // 5 "PasefFrameMsMsInfo.Precursor, " // 6 "Precursors.Id, " // 7 "Precursors.LargestPeakMz, " // 8 "Precursors.AverageMz, " // 9 "Precursors.MonoisotopicMz, " // 10 "Precursors.Charge, " // 11 "Precursors.ScanNumber, " // 12 "Precursors.Intensity, " // 13 "Precursors.Parent " // 14 "FROM PasefFrameMsMsInfo " "INNER JOIN Precursors ON " "PasefFrameMsMsInfo.Precursor=Precursors.Id " "WHERE Precursors.Id=%1;") .arg(precursor_id)); if(q.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } bool first = true; while(q.next()) { qDebug() << " cumul tims frame:" << q.value(0).toLongLong(); spectrum_descr.tims_frame_list.push_back(q.value(0).toLongLong()); if(first) { // mass_spectrum.setPrecursorCharge(q.value(11).toInt()); // mass_spectrum.setPrecursorMz(q.value(10).toDouble()); // mass_spectrum.setPrecursorIntensity(q.value(13).toDouble()); spectrum_descr.precursor_ion_data = PrecursorIonData(q.value(10).toDouble(), q.value(11).toInt(), q.value(13).toDouble()); spectrum_descr.precursor_id = q.value(6).toLongLong(); spectrum_descr.ms2_index = (spectrum_descr.precursor_id * 2) - 1; spectrum_descr.ms1_index = (spectrum_descr.precursor_id * 2) - 2; spectrum_descr.scan_mobility_start = q.value(1).toLongLong(); spectrum_descr.scan_mobility_end = q.value(2).toLongLong(); spectrum_descr.isolationMz = q.value(3).toDouble(); spectrum_descr.isolationWidth = q.value(4).toDouble(); spectrum_descr.collisionEnergy = q.value(5).toFloat(); spectrum_descr.parent_frame = q.value(14).toLongLong(); first = false; } } if(spectrum_descr.precursor_id == 0) { throw ExceptionNotFound( QObject::tr("ERROR in %1 %2 : precursor id (%3) NOT FOUND ") .arg(__FILE__) .arg(__FUNCTION__) .arg(precursor_id)); } return spectrum_descr; } std::vector TimsData::getRetentionTimeLine() const { std::vector timeline; timeline.reserve(m_mapFramesRecord.size()); for(const TimsFrameRecord &frame_record : m_mapFramesRecord) { if(frame_record.mz_calibration_id != 0) { timeline.push_back(frame_record.frame_time); } } return timeline; } TimsData::SpectrumDescr TimsData::getSpectrumDescrWithScanCoordinate( const std::pair &scan_coordinate) { SpectrumDescr spectrum_descr; QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery q = qdb.exec(QString("SELECT PasefFrameMsMsInfo.Frame, " // 0 "PasefFrameMsMsInfo.ScanNumBegin, " // 1 "PasefFrameMsMsInfo.ScanNumEnd, " // 2 "PasefFrameMsMsInfo.IsolationMz, " // 3 "PasefFrameMsMsInfo.IsolationWidth, " // 4 "PasefFrameMsMsInfo.CollisionEnergy, " // 5 "PasefFrameMsMsInfo.Precursor, " // 6 "Precursors.Id, " // 7 "Precursors.LargestPeakMz, " // 8 "Precursors.AverageMz, " // 9 "Precursors.MonoisotopicMz, " // 10 "Precursors.Charge, " // 11 "Precursors.ScanNumber, " // 12 "Precursors.Intensity, " // 13 "Precursors.Parent " // 14 "FROM PasefFrameMsMsInfo " "INNER JOIN Precursors ON " "PasefFrameMsMsInfo.Precursor=Precursors.Id " "WHERE " "PasefFrameMsMsInfo.Frame=%1 and " "(PasefFrameMsMsInfo.ScanNumBegin " "<= %2 and PasefFrameMsMsInfo.ScanNumEnd >= %2);") .arg(scan_coordinate.first) .arg(scan_coordinate.second)); if(q.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(q.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } if(q.next()) { qDebug() << " cumul tims frame:" << q.value(0).toLongLong(); spectrum_descr.tims_frame_list.push_back(q.value(0).toLongLong()); // mass_spectrum.setPrecursorCharge(q.value(11).toInt()); // mass_spectrum.setPrecursorMz(q.value(10).toDouble()); // mass_spectrum.setPrecursorIntensity(q.value(13).toDouble()); spectrum_descr.precursor_ion_data = PrecursorIonData( q.value(10).toDouble(), q.value(11).toInt(), q.value(13).toDouble()); spectrum_descr.precursor_id = q.value(6).toLongLong(); spectrum_descr.ms2_index = (spectrum_descr.precursor_id * 2) - 1; spectrum_descr.ms1_index = (spectrum_descr.precursor_id * 2) - 2; spectrum_descr.scan_mobility_start = q.value(1).toLongLong(); spectrum_descr.scan_mobility_end = q.value(2).toLongLong(); spectrum_descr.isolationMz = q.value(3).toDouble(); spectrum_descr.isolationWidth = q.value(4).toDouble(); spectrum_descr.collisionEnergy = q.value(5).toFloat(); spectrum_descr.parent_frame = q.value(14).toLongLong(); } return spectrum_descr; } void TimsData::fillSpectrumDescriptionWithSqlRecord( TimsData::SpectrumDescr &spectrum_descr, QSqlQuery &qprecursor_list) { spectrum_descr.tims_frame_list.clear(); spectrum_descr.tims_frame_list.push_back( qprecursor_list.value(0).toLongLong()); // mass_spectrum.setPrecursorCharge(q.value(11).toInt()); // mass_spectrum.setPrecursorMz(q.value(10).toDouble()); // mass_spectrum.setPrecursorIntensity(q.value(13).toDouble()); spectrum_descr.precursor_ion_data = PrecursorIonData(qprecursor_list.value(10).toDouble(), qprecursor_list.value(11).toInt(), qprecursor_list.value(13).toDouble()); spectrum_descr.precursor_id = qprecursor_list.value(6).toLongLong(); spectrum_descr.ms2_index = (spectrum_descr.precursor_id * 2) - 1; spectrum_descr.ms1_index = (spectrum_descr.precursor_id * 2) - 2; spectrum_descr.scan_mobility_start = qprecursor_list.value(1).toLongLong(); spectrum_descr.scan_mobility_end = qprecursor_list.value(2).toLongLong(); spectrum_descr.isolationMz = qprecursor_list.value(3).toDouble(); spectrum_descr.isolationWidth = qprecursor_list.value(4).toDouble(); spectrum_descr.collisionEnergy = qprecursor_list.value(5).toFloat(); spectrum_descr.parent_frame = qprecursor_list.value(14).toLongLong(); } void TimsData::rawReaderSpectrumCollectionByMsLevel( const MsRunIdCstSPtr &msrun_id, SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) { if(!m_hasPrecursorTable) { throw PappsoException( QObject::tr("unable to read spectrum list : this data file does not " "contain MS2 data, no precursor found.")); } // We'll need it to perform the looping in the spectrum list. std::size_t spectrum_list_size = getTotalNumberOfScans(); // qDebug() << "The spectrum list has size:" << spectrum_list_size; // Inform the handler of the spectrum list so that it can handle feedback to // the user. handler.spectrumListHasSize(spectrum_list_size); QSqlDatabase qdb = openDatabaseConnection(); QSqlQuery qprecursor_list = qdb.exec(QString( "SELECT DISTINCT " "PasefFrameMsMsInfo.Frame, " // 0 "PasefFrameMsMsInfo.ScanNumBegin, " // 1 "PasefFrameMsMsInfo.ScanNumEnd, " // 2 "PasefFrameMsMsInfo.IsolationMz, " // 3 "PasefFrameMsMsInfo.IsolationWidth, " // 4 "PasefFrameMsMsInfo.CollisionEnergy, " // 5 "PasefFrameMsMsInfo.Precursor, " // 6 "Precursors.Id, " // 7 "Precursors.LargestPeakMz, " // 8 "Precursors.AverageMz, " // 9 "Precursors.MonoisotopicMz, " // 10 "Precursors.Charge, " // 11 "Precursors.ScanNumber, " // 12 "Precursors.Intensity, " // 13 "Precursors.Parent " // 14 "FROM PasefFrameMsMsInfo " "INNER JOIN Precursors ON " "PasefFrameMsMsInfo.Precursor=Precursors.Id " "ORDER BY PasefFrameMsMsInfo.Frame, PasefFrameMsMsInfo.ScanNumBegin ;")); if(qprecursor_list.lastError().isValid()) { throw PappsoException( QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL " "command %2:\n%3\n%4\n%5") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")) .arg(qprecursor_list.lastQuery()) .arg(qdb.lastError().databaseText()) .arg(qdb.lastError().driverText()) .arg(qdb.lastError().nativeErrorCode())); } std::size_t i = 0; // iterate on each Spectrum qprecursor_list.last(); // strange bug : get the last sql record and get // back, unless it will not retrieve all records. qDebug() << "qprecursor_list.at()=" << qprecursor_list.at(); qprecursor_list.first(); TimsFrameBaseCstSPtr tims_frame; SpectrumDescr spectrum_descr; for(FrameIdDescr ¤t_frame : m_frameIdDescrList) { // If the user of this reader instance wants to stop reading the // spectra, then break this loop. if(handler.shouldStop()) { qDebug() << "The operation was cancelled. Breaking the loop."; throw ExceptionInterrupted( QObject::tr("reading TimsTOF job cancelled by the user :\n%1") .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))); } tims_frame = getTimsFrameBaseCstSPtrCached(current_frame.m_frameId); unsigned int tims_ms_level = tims_frame.get()->getMsLevel(); if((ms_level != 0) && (ms_level != tims_ms_level)) { // bypass i += current_frame.m_size; } else { bool want_binary_data = handler.needMsLevelPeakList(tims_ms_level); qDebug() << "want_binary_data=" << want_binary_data; if(want_binary_data) { qDebug() << "bindec"; tims_frame = getTimsFrameCstSPtrCached(current_frame.m_frameId); } bool possible_precursor = false; if(tims_ms_level == 2) { // seek the precursor record: while(qprecursor_list.value(0).toULongLong() < current_frame.m_frameId) { qprecursor_list.next(); if(qprecursor_list.value(0).toULongLong() == current_frame.m_frameId) { possible_precursor = true; } fillSpectrumDescriptionWithSqlRecord(spectrum_descr, qprecursor_list); } } for(std::size_t scan_num = 0; scan_num < current_frame.m_size; scan_num++) { bool has_a_precursor = false; if(possible_precursor) { if(spectrum_descr.scan_mobility_end < scan_num) { // seek the precursor record: while(qprecursor_list.value(0).toULongLong() < current_frame.m_frameId) { qprecursor_list.next(); if(qprecursor_list.value(0).toULongLong() != current_frame.m_frameId) { possible_precursor = false; } fillSpectrumDescriptionWithSqlRecord(spectrum_descr, qprecursor_list); } } if(possible_precursor && (spectrum_descr.scan_mobility_start < scan_num)) { // we are in has_a_precursor = true; } } // end to determine if we are in a precursor for this // spectrum QualifiedMassSpectrum mass_spectrum; MassSpectrumId spectrum_id; spectrum_id.setSpectrumIndex(i); spectrum_id.setMsRunId(msrun_id); spectrum_id.setNativeId(QString("frame=%1 scan=%2 index=%3") .arg(current_frame.m_frameId) .arg(scan_num) .arg(i)); mass_spectrum.setMassSpectrumId(spectrum_id); mass_spectrum.setMsLevel(tims_frame.get()->getMsLevel()); mass_spectrum.setRtInSeconds(tims_frame.get()->getTime()); mass_spectrum.setDtInMilliSeconds( tims_frame.get()->getDriftTime(scan_num)); // 1/K0 mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::OneOverK0, tims_frame.get()->getOneOverK0Transformation(scan_num)); mass_spectrum.setEmptyMassSpectrum(true); if(want_binary_data) { try { mass_spectrum.setMassSpectrumSPtr( tims_frame.get()->getMassSpectrumSPtr(scan_num)); } catch(PappsoException &error) { throw PappsoException( QObject::tr( "ERROR in %1 (scan_num=%2 spectrum_index=%3):\n%4") .arg(__FUNCTION__) .arg(scan_num) .arg(spectrum_id.getSpectrumIndex()) .arg(error.qwhat())); } if(mass_spectrum.size() > 0) { mass_spectrum.setEmptyMassSpectrum(false); } } else { // if(tims_frame.get()->getNbrPeaks(coordinate.second) > 0) //{ mass_spectrum.setEmptyMassSpectrum(false); // } } if(has_a_precursor) { if(spectrum_descr.precursor_id > 0) { mass_spectrum.appendPrecursorIonData( spectrum_descr.precursor_ion_data); std::size_t prec_spectrum_index = getRawIndexFromCoordinate(spectrum_descr.parent_frame, scan_num); mass_spectrum.setPrecursorSpectrumIndex( prec_spectrum_index); mass_spectrum.setPrecursorNativeId( QString("frame=%1 scan=%2 index=%3") .arg(spectrum_descr.parent_frame) .arg(scan_num) .arg(prec_spectrum_index)); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::IsolationMz, spectrum_descr.isolationMz); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::IsolationWidth, spectrum_descr.isolationWidth); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::CollisionEnergy, spectrum_descr.collisionEnergy); mass_spectrum.setParameterValue( QualifiedMassSpectrumParameter::BrukerPrecursorIndex, (quint64)spectrum_descr.precursor_id); } } handler.setQualifiedMassSpectrum(mass_spectrum); i++; } } } } std::map TimsData::getRawMsBySpectrumIndex(std::size_t spectrum_index) { qDebug() << " spectrum_index=" << spectrum_index; auto coordinate = getScanCoordinateFromRawIndex(spectrum_index); TimsFrameBaseCstSPtr tims_frame; tims_frame = getTimsFrameCstSPtrCached(coordinate.first); std::map raw_spectrum; tims_frame.get()->cumulateScansInRawMap( raw_spectrum, coordinate.second, coordinate.second); return raw_spectrum; } const std::vector & TimsData::getFrameIdDescrList() const { return m_frameIdDescrList; } const std::vector & TimsData::getTimsFrameRecordList() const { return m_mapFramesRecord; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsdata.h000644 001750 001750 00000026055 14514537341 025324 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsdata.h * \date 27/08/2019 * \author Olivier Langella * \brief main Tims data handler */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include "timsbindec.h" #include "timsframe.h" #include "../../massspectrum/qualifiedmassspectrum.h" #include "../../processing/filters/filterinterface.h" #include "../../msrun/xiccoord/xiccoordtims.h" #include #include #include #include "mzcalibration/mzcalibrationstore.h" #include "../../msrun/spectrumcollectionhandlerinterface.h" namespace pappso { class TimsData; /** \brief shared pointer on a TimsData object */ typedef std::shared_ptr TimsDataSp; struct PMSPP_LIB_DECL FrameIdDescr { std::size_t m_frameId; // frame id std::size_t m_size; // frame size (number of TOF scans in frame) std::size_t m_cumulSize; // cumulative size }; /** * @todo write docs */ class PMSPP_LIB_DECL TimsData { public: /** @brief build using the tims data directory */ TimsData(QDir timsDataDirectory); /** * Copy constructor * * @param other TODO */ TimsData(const TimsData &other); /** * Destructor */ virtual ~TimsData(); /** @brief get a mass spectrum given its spectrum index * @param raw_index a number begining at 0, corresponding to a Tims Scan in * the order they lies in the binary data file */ pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtrByRawIndex(std::size_t raw_index); /** @brief get a mass spectrum given the tims frame database id and scan * number within tims frame */ pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtr(std::size_t timsId, std::size_t scanNum); /** @brief Get total number of frames */ std::size_t getTotalNumberOfFrames() const; /** @brief get the total number of scans */ std::size_t getTotalNumberOfScans() const; /** @brief get the number of precursors analyzed by PASEF */ std::size_t getTotalNumberOfPrecursors() const; /** @brief guess possible precursor ids given a charge, m/z, retention time * and k0 * @return a list of possible precursor ids */ std::vector getPrecursorsFromMzRtCharge(int charge, double mz_val, double rt_sec, double k0); unsigned int getMsLevelBySpectrumIndex(std::size_t spectrum_index); void getQualifiedMassSpectrumByRawIndex(const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, std::size_t spectrum_index, bool want_binary_data); Trace getTicChromatogram() const; struct SpectrumDescr { std::size_t parent_frame = 0; std::size_t precursor_id = 0; std::size_t scan_mobility_start = 0; std::size_t scan_mobility_end = 0; std::size_t ms1_index = 0; std::size_t ms2_index = 0; double isolationMz = 0; double isolationWidth = 0; float collisionEnergy = 0; std::vector tims_frame_list; PrecursorIonData precursor_ion_data; }; void getQualifiedMs2MassSpectrumByPrecursorId(const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, const SpectrumDescr &spectrum_descr, bool want_binary_data); void getQualifiedMs1MassSpectrumByPrecursorId(const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, const SpectrumDescr &spectrum_descr, bool want_binary_data); /** @brief filter interface to apply just after raw MS2 specturm extraction * the filter can be a list of filters inside a FilterSuite object */ void setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter); /** @brief filter interface to apply just after raw MS1 specturm extraction * the filter can be a list of filters inside a FilterSuite object */ void setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter); /** @brief enable or disable simple centroid filter on raw tims data for MS2 */ void setMs2BuiltinCentroid(bool centroid); /** @brief tells if simple centroid filter on raw tims data for MS2 is enabled * or not */ bool getMs2BuiltinCentroid() const; std::vector getTimsMS1FrameIdRange(double rt_begin, double rt_end) const; /** @brief get a Tims frame with his database ID * but look in the cache first * * thread safe */ TimsFrameCstSPtr getTimsFrameCstSPtrCached(std::size_t timsId); /** @brief get a Tims frame with his database ID * * this function is not thread safe */ TimsFrameCstSPtr getTimsFrameCstSPtr(std::size_t timsId); XicCoordTims getXicCoordTimsFromPrecursorId(std::size_t precursor_id, PrecisionPtr precision_ptr); /** @brief function to visit an MsRunReader and get each Spectrum in a * spectrum collection handler by Ms Levels * * this function will retrieve processed qualified spectrum depending on each * Bruker precursors */ void ms2ReaderSpectrumCollectionByMsLevel( const MsRunIdCstSPtr &msrun_id, SpectrumCollectionHandlerInterface &handler, unsigned int ms_level); /** @brief function to visit an MsRunReader and get each raw Spectrum in a * spectrum collection handler by Ms Levels * * this function will retrieve every scans as a qualified mass spectrum */ void rawReaderSpectrumCollectionByMsLevel( const MsRunIdCstSPtr &msrun_id, SpectrumCollectionHandlerInterface &handler, unsigned int ms_level); /** @brief get cumulated raw signal for a given * precursorCMakeLists.txt.userCMakeLists.txt.userCMakeLists.txt.user only to * use to see the raw signal * * @param precursor_index precursor index to extract signal from * @result a map of integers, x=time of flights, y= intensities */ std::map getRawMs2ByPrecursorId(std::size_t precursor_index); /** @brief get raw signal for a spectrum index * only to use to see the raw signal * * @param spectrum_index spcetrum index * @result a map of integers, x=time of flights, y= intensities */ std::map getRawMsBySpectrumIndex(std::size_t spectrum_index); /** @brief retention timeline * get retention times along the MSrun in seconds * @return vector of retention times (seconds) */ virtual std::vector getRetentionTimeLine() const; /** @brief get an intermediate structure describing a spectrum */ SpectrumDescr getSpectrumDescrWithPrecursorId(std::size_t precursor_id); /** @brief set only one is_mono_thread to true * * this avoid to use qtconcurrent */ void setMonoThread(bool is_mono_thread); const std::vector &getFrameIdDescrList() const; const std::vector &getTimsFrameRecordList() const; private: SpectrumDescr getSpectrumDescrWithScanCoordinate( const std::pair &scan_coordinate); std::pair getScanCoordinateFromRawIndex(std::size_t spectrum_index) const; std::size_t getRawIndexFromCoordinate(std::size_t frame_id, std::size_t scan_num) const; QSqlDatabase openDatabaseConnection() const; /** @brief get a Tims frame base (no binary data file access) with his * database ID */ TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtr(std::size_t timsId); TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtrCached(std::size_t timsId); std::vector getMatchPrecursorIdByKo(std::vector> ids, double ko_value); /** @todo documentation */ std::vector getClosestPrecursorIdByMz(std::vector> ids, double mz_value); /** @brief private function to fill m_frameIdDescrList */ void fillFrameIdDescrList(); void ms2ReaderGenerateMS1MS2Spectrum( const MsRunIdCstSPtr &msrun_id, std::vector &qualified_mass_spectrum_list, SpectrumCollectionHandlerInterface &handler, const SpectrumDescr &spectrum_descr, unsigned int ms_level); void fillSpectrumDescriptionWithSqlRecord(SpectrumDescr &spectrum_descr, QSqlQuery &qprecursor_list); QDir m_timsDataDirectory; TimsBinDec *mpa_timsBinDec = nullptr; // QSqlDatabase *mpa_qdb = nullptr; std::size_t m_totalNumberOfScans; std::size_t m_totalNumberOfPrecursors; std::size_t m_totalNumberOfFrames; std::size_t m_cacheSize = 60; std::deque m_timsFrameCache; std::deque m_timsFrameBaseCache; pappso::FilterInterfaceCstSPtr mcsp_ms2Filter = nullptr; pappso::FilterInterfaceCstSPtr mcsp_ms1Filter = nullptr; /** @brief enable builtin centroid on raw tims integers by default */ bool m_builtinMs2Centroid = true; std::map m_mapMzCalibrationRecord; std::map m_mapTimsCalibrationRecord; std::vector m_mapFramesRecord; std::map m_mapXicCoordRecord; MzCalibrationStore *mpa_mzCalibrationStore; /** @brief store every frame id and corresponding sizes */ std::vector m_frameIdDescrList; /** @brief index to find quickly a frameId in the description list with the * raw index of spectrum modulo 1000 * @key thousands of TOF scans * @value corresponding m_frameIdDescrList index */ std::map m_thousandIndexToFrameIdDescrListIndex; /** @brief tells if someone is loading a frame id */ std::vector m_someoneIsLoadingFrameId; bool m_isMonoThread = false; bool m_hasPrecursorTable; QMutex m_mutex; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframe.cpp000644 001750 001750 00000061552 14531705033 026033 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframe.cpp * \date 23/08/2019 * \author Olivier Langella * \brief handle a single Bruker's TimsTof frame */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsframe.h" #include "../../../pappsomspp/pappsoexception.h" #include #include #include #include namespace pappso { TimsFrame::XicComputeStructure::XicComputeStructure( const TimsFrame *fram_p, const XicCoordTims &xic_struct) { xic_ptr = xic_struct.xicSptr.get(); mobilityIndexBegin = xic_struct.scanNumBegin; mobilityIndexEnd = xic_struct.scanNumEnd; mzIndexLowerBound = fram_p->getMzCalibrationInterfaceSPtr().get()->getTofIndexFromMz( xic_struct.mzRange.lower()); // convert mz to raw digitizer value mzIndexUpperBound = fram_p->getMzCalibrationInterfaceSPtr().get()->getTofIndexFromMz( xic_struct.mzRange.upper()); tmpIntensity = 0; } TimsFrame::TimsFrame(std::size_t timsId, quint32 scanNum) : TimsFrameBase(timsId, scanNum) { // m_timsDataFrame.resize(10); } TimsFrame::TimsFrame(std::size_t timsId, quint32 scanNum, char *p_bytes, std::size_t len) : TimsFrameBase(timsId, scanNum) { // langella@themis:~/developpement/git/bruker/cbuild$ // ./src/sample/timsdataSamplePappso // /gorgone/pappso/fichiers_fabricants/Bruker/Demo_TimsTOF_juin2019/Samples/1922001/1922001-1_S-415_Pep_Pur-1ul_Slot1-10_1_2088.d/ qDebug() << timsId; m_timsDataFrame.resize(len); if(p_bytes != nullptr) { unshufflePacket(p_bytes); } else { if(m_scanNumber == 0) { throw pappso::PappsoException( QObject::tr("TimsFrame::TimsFrame(%1,%2,nullptr,%3) FAILED") .arg(m_timsId) .arg(m_scanNumber) .arg(len)); } } } TimsFrame::TimsFrame(const TimsFrame &other) : TimsFrameBase(other) { } TimsFrame::~TimsFrame() { } void TimsFrame::unshufflePacket(const char *src) { qDebug(); quint64 len = m_timsDataFrame.size(); if(len % 4 != 0) { throw pappso::PappsoException( QObject::tr("TimsFrame::unshufflePacket error: len % 4 != 0")); } quint64 nb_uint4 = len / 4; char *dest = m_timsDataFrame.data(); quint64 src_offset = 0; for(quint64 j = 0; j < 4; j++) { for(quint64 i = 0; i < nb_uint4; i++) { dest[(i * 4) + j] = src[src_offset]; src_offset++; } } qDebug(); } std::size_t TimsFrame::getNbrPeaks(std::size_t scanNum) const { if(m_timsDataFrame.size() == 0) return 0; /* if(scanNum == 0) { quint32 res = (*(quint32 *)(m_timsDataFrame.constData() + 4)) - (*(quint32 *)(m_timsDataFrame.constData()-4)); return res / 2; }*/ if(scanNum == (m_scanNumber - 1)) { auto nb_uint4 = m_timsDataFrame.size() / 4; std::size_t cumul = 0; for(quint32 i = 0; i < m_scanNumber; i++) { cumul += (*(quint32 *)(m_timsDataFrame.constData() + (i * 4))); } return (nb_uint4 - cumul) / 2; } checkScanNum(scanNum); // quint32 *res = (quint32 *)(m_timsDataFrame.constData() + (scanNum * 4)); // qDebug() << " res=" << *res; return (*(quint32 *)(m_timsDataFrame.constData() + ((scanNum + 1) * 4))) / 2; } std::size_t TimsFrame::getScanOffset(std::size_t scanNum) const { std::size_t offset = 0; for(std::size_t i = 0; i < (scanNum + 1); i++) { offset += (*(quint32 *)(m_timsDataFrame.constData() + (i * 4))); } return offset; } std::vector TimsFrame::getScanIndexList(std::size_t scanNum) const { qDebug(); checkScanNum(scanNum); std::vector scan_tof; if(m_timsDataFrame.size() == 0) return scan_tof; scan_tof.resize(getNbrPeaks(scanNum)); std::size_t offset = getScanOffset(scanNum); qint32 previous = -1; for(std::size_t i = 0; i < scan_tof.size(); i++) { scan_tof[i] = (*(quint32 *)(m_timsDataFrame.constData() + (offset * 4) + (i * 8))) + previous; previous = scan_tof[i]; } qDebug(); return scan_tof; } std::vector TimsFrame::getScanIntensities(std::size_t scanNum) const { qDebug(); checkScanNum(scanNum); std::vector scan_intensities; if(m_timsDataFrame.size() == 0) return scan_intensities; scan_intensities.resize(getNbrPeaks(scanNum)); std::size_t offset = getScanOffset(scanNum); for(std::size_t i = 0; i < scan_intensities.size(); i++) { scan_intensities[i] = (*(quint32 *)(m_timsDataFrame.constData() + (offset * 4) + (i * 8) + 4)); } qDebug(); return scan_intensities; } quint64 TimsFrame::cumulateSingleScanIntensities(std::size_t scanNum) const { qDebug(); quint64 summed_intensities = 0; if(m_timsDataFrame.size() == 0) return summed_intensities; // checkScanNum(scanNum); std::size_t size = getNbrPeaks(scanNum); std::size_t offset = getScanOffset(scanNum); qint32 previous = -1; for(std::size_t i = 0; i < size; i++) { quint32 x = (*(quint32 *)((m_timsDataFrame.constData() + (offset * 4) + (i * 8))) + previous); quint32 y = (*(quint32 *)(m_timsDataFrame.constData() + (offset * 4) + (i * 8) + 4)); previous = x; summed_intensities += y; } // Normalization over the accumulation time for this frame. summed_intensities *= ((double)100.0 / m_accumulationTime); qDebug(); return summed_intensities; } /** * @brief ... * * @param mobility_scan_begin p_mobility_scan_begin:... * @param mobility_scan_end p_mobility_scan_end:... * @return quint64 */ quint64 TimsFrame::cumulateScansIntensities(std::size_t mobility_scan_begin, std::size_t mobility_scan_end) const { quint64 summed_intensities = 0; // qDebug() << "begin mobility_scan_begin =" << mobility_scan_begin //<< "mobility_scan_end =" << mobility_scan_end; if(m_timsDataFrame.size() == 0) return summed_intensities; try { std::size_t mobility_scan_max = mobility_scan_end + 1; for(std::size_t i = mobility_scan_begin; i < mobility_scan_max; i++) { qDebug() << i; summed_intensities += cumulateSingleScanIntensities(i); qDebug() << i; } } catch(std::exception &error) { qDebug() << QString("Failure in %1 %2 to %3 :\n %4") .arg(__FUNCTION__) .arg(mobility_scan_begin) .arg(mobility_scan_end) .arg(error.what()); } // qDebug() << "end"; return summed_intensities; } void TimsFrame::cumulateScan(std::size_t scanNum, std::map &accumulate_into) const { // qDebug(); if(m_timsDataFrame.size() == 0) return; // checkScanNum(scanNum); std::size_t scan_size = getNbrPeaks(scanNum); std::size_t scan_offset = getScanOffset(scanNum); qint32 previous = -1; for(std::size_t i = 0; i < scan_size; i++) { quint32 x = (*(quint32 *)((m_timsDataFrame.constData() + (scan_offset * 4) + (i * 8))) + previous); quint32 y = (*(quint32 *)(m_timsDataFrame.constData() + (scan_offset * 4) + (i * 8) + 4)); previous = x; auto ret = accumulate_into.insert(std::pair(x, y)); if(ret.second == false) { // already existed : cumulate ret.first->second += y; } } // qDebug(); } // Proof of concept m/z range-conditions for accumulations void TimsFrame::cumulateScan2(std::size_t scanNum, std::map &accumulate_into, double mz_range_begin, double mz_range_end, quint32 accepted_tof_index_range_begin, quint32 accepted_tof_index_range_end) const { // qDebug(); if(m_timsDataFrame.size() == 0) return; // checkScanNum(scanNum); std::size_t scan_size = getNbrPeaks(scanNum); std::size_t scan_offset = getScanOffset(scanNum); qint32 previous = -1; for(std::size_t i = 0; i < scan_size; i++) { quint32 x = (*(quint32 *)((m_timsDataFrame.constData() + (scan_offset * 4) + (i * 8))) + previous); if(x < accepted_tof_index_range_begin) { // qDebug() << "TOF index still not in range, x:" << x; continue; } if(x > accepted_tof_index_range_end) { // qDebug() << "TOF index already out of range, x:" << x; break; } // qDebug() << "TOF index in range, x:" << x; quint32 y = (*(quint32 *)(m_timsDataFrame.constData() + (scan_offset * 4) + (i * 8) + 4)); previous = x; auto ret = accumulate_into.insert(std::pair(x, y)); if(ret.second == false) { // already existed : cumulate ret.first->second += y; } } // qDebug(); } Trace TimsFrame::cumulateScansToTrace(std::size_t mobility_scan_begin, std::size_t mobility_scan_end) const { // qDebug(); Trace new_trace; try { if(m_timsDataFrame.size() == 0) return new_trace; std::map raw_spectrum; // double local_accumulationTime = 0; std::size_t mobility_scan_max = mobility_scan_end + 1; qDebug(); for(std::size_t i = mobility_scan_begin; i < mobility_scan_max; i++) { // qDebug() << i; cumulateScan(i, raw_spectrum); // qDebug() << i; // local_accumulationTime += m_accumulationTime; } // qDebug(); pappso::DataPoint data_point_cumul; MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get(); for(std::pair pair_tof_intensity : raw_spectrum) { data_point_cumul.x = mz_calibration_p->getMzFromTofIndex(pair_tof_intensity.first); // normalization data_point_cumul.y = pair_tof_intensity.second * ((double)100.0 / m_accumulationTime); new_trace.push_back(data_point_cumul); } new_trace.sortX(); // qDebug(); } catch(std::exception &error) { qDebug() << QString( "Failure in TimsFrame::cumulateScanToTrace %1 to %2 :\n %3") .arg(mobility_scan_begin, mobility_scan_end) .arg(error.what()); } return new_trace; } Trace TimsFrame::cumulateScansToTraceMzDownResolution( std::size_t mz_index_merge_window, std::size_t mobility_scan_begin, std::size_t mobility_scan_end, quint32 &mz_minimum_index_out, quint32 &mz_maximum_index_out) const { // qDebug(); Trace new_trace; try { if(m_timsDataFrame.size() == 0) { qDebug() << "The frame is empty, returning empty trace."; return new_trace; } // Allocate a map for (TOF,intensity) pairs to // accumulate ion mobility scans. std::map raw_spectrum; // double local_accumulationTime = 0; std::size_t mobility_scan_max = mobility_scan_end + 1; for(std::size_t i = mobility_scan_begin; i < mobility_scan_max; i++) { // qDebug() << "Going to cumulate currently iterated mobility scan:" // << i; cumulateScan(i, raw_spectrum); // qDebug() << "Done cumulating currently iterated mobility scan:" << // i; // local_accumulationTime += m_accumulationTime; } // qDebug(); pappso::DataPoint data_point_cumul; MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get(); // If the caller asks that m/z values be binned larger than they are, // ask that the m/z raw map be reduced in resolution. if(mz_index_merge_window > 0) raw_spectrum = downsizeMzRawMap(mz_index_merge_window, raw_spectrum); // Store the first mz index and the last mz index of the current spectrum. // The values are set to the out parameters. mz_minimum_index_out = std::numeric_limits::max(); mz_maximum_index_out = 0; for(std::pair pair_tof_intensity : raw_spectrum) { if(pair_tof_intensity.first > mz_maximum_index_out) mz_maximum_index_out = pair_tof_intensity.first; if(pair_tof_intensity.first < mz_minimum_index_out) mz_minimum_index_out = pair_tof_intensity.first; // Convert the TOF index to m/z data_point_cumul.x = mz_calibration_p->getMzFromTofIndex(pair_tof_intensity.first); // Normalization data_point_cumul.y = pair_tof_intensity.second * ((double)100.0 / m_accumulationTime); // Finally make the data point a new Trace point. new_trace.push_back(data_point_cumul); } // qDebug() << "At this point we have mz_minimum_index_out:" // << mz_minimum_index_out // << "and mz_maximum_index_out:" << mz_maximum_index_out; // FIXME: this does not seem to be necessary since raw_spectrum is a map // with auto-sorting on the keys which are quint32. // new_trace.sortX(); // qDebug(); } catch(std::exception &error) { qDebug() << QString( "Failure in TimsFrame::cumulateScanToTrace %1 to %2 :\n %3") .arg(mobility_scan_begin, mobility_scan_end) .arg(error.what()); } // qDebug() << "Returning new trace of size:" << new_trace.size(); return new_trace; } Trace TimsFrame::cumulateScansToTraceMzDownResolution2( std::size_t mz_index_merge_window, double mz_range_begin, double mz_range_end, std::size_t mobility_scan_begin, std::size_t mobility_scan_end, quint32 &mz_minimum_index_out, quint32 &mz_maximum_index_out) const { // qDebug(); Trace new_trace; try { if(m_timsDataFrame.size() == 0) { qDebug() << "The frame is empty, returning empty trace."; return new_trace; } // Allocate a map for (TOF index,intensity) pairs to // accumulate ion mobility scans. std::map raw_spectrum; // double local_accumulationTime = 0; std::size_t mobility_scan_max = mobility_scan_end + 1; quint32 only_in_mz_begin_tof_index_range = getMzCalibrationInterfaceSPtr().get()->getTofIndexFromMz( mz_range_begin); quint32 only_in_mz_end_tof_index_range = getMzCalibrationInterfaceSPtr().get()->getTofIndexFromMz(mz_range_end); // qDebug() << "20231129 TOF index range begin:" // << only_in_mz_begin_tof_index_range; // qDebug() << "20231129 TOF index range end:" // << only_in_mz_end_tof_index_range; for(std::size_t i = mobility_scan_begin; i < mobility_scan_max; i++) { // qDebug() << "Going to cumulate currently iterated mobility scan:" // << i; cumulateScan2(i, raw_spectrum, mz_range_begin, mz_range_end, only_in_mz_begin_tof_index_range, only_in_mz_end_tof_index_range); // qDebug() << "Done cumulating currently iterated mobility scan:" << // i; // local_accumulationTime += m_accumulationTime; } // qDebug(); pappso::DataPoint data_point_cumul; MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get(); // If the caller asks that m/z values be binned larger than they are, // ask that the m/z raw map be reduced in resolution. if(mz_index_merge_window > 0) raw_spectrum = downsizeMzRawMap(mz_index_merge_window, raw_spectrum); // Store the first mz index and the last mz index of the current spectrum. // The values are set to the out parameters. mz_minimum_index_out = std::numeric_limits::max(); mz_maximum_index_out = 0; for(std::pair pair_tof_intensity : raw_spectrum) { if(pair_tof_intensity.first > mz_maximum_index_out) mz_maximum_index_out = pair_tof_intensity.first; if(pair_tof_intensity.first < mz_minimum_index_out) mz_minimum_index_out = pair_tof_intensity.first; // Convert the TOF index to m/z data_point_cumul.x = mz_calibration_p->getMzFromTofIndex(pair_tof_intensity.first); // Normalization data_point_cumul.y = pair_tof_intensity.second * ((double)100.0 / m_accumulationTime); // Finally make the data point a new Trace point. new_trace.push_back(data_point_cumul); } // qDebug() << "At this point we have mz_minimum_index_out:" // << mz_minimum_index_out // << "and mz_maximum_index_out:" << mz_maximum_index_out; // FIXME: this does not seem to be necessary since raw_spectrum is a map // with auto-sorting on the keys which are quint32. // new_trace.sortX(); // qDebug(); } catch(std::exception &error) { qDebug() << QString( "Failure in TimsFrame::cumulateScanToTrace %1 to %2 :\n %3") .arg(mobility_scan_begin, mobility_scan_end) .arg(error.what()); } // qDebug() << "Returning new trace of size:" << new_trace.size(); return new_trace; } void TimsFrame::cumulateScansInRawMap(std::map &rawSpectrum, std::size_t mobility_scan_begin, std::size_t mobility_scan_end) const { // qDebug() << "begin mobility_scan_begin=" << mobility_scan_begin //<< " mobility_scan_end=" << mobility_scan_end; if(m_timsDataFrame.size() == 0) return; try { std::size_t mobility_scan_max = mobility_scan_end + 1; qDebug(); for(std::size_t i = mobility_scan_begin; i < mobility_scan_max; i++) { qDebug() << i; cumulateScan(i, rawSpectrum); qDebug() << i; // local_accumulationTime += m_accumulationTime; } } catch(std::exception &error) { qDebug() << QString("Failure in %1 %2 to %3 :\n %4") .arg(__FUNCTION__) .arg(mobility_scan_begin) .arg(mobility_scan_end) .arg(error.what()); } // qDebug() << "end"; } pappso::MassSpectrumCstSPtr TimsFrame::getMassSpectrumCstSPtr(std::size_t scanNum) const { // qDebug(); return getMassSpectrumSPtr(scanNum); } pappso::MassSpectrumSPtr TimsFrame::getMassSpectrumSPtr(std::size_t scanNum) const { // qDebug() << " scanNum=" << scanNum; checkScanNum(scanNum); // qDebug(); pappso::MassSpectrumSPtr mass_spectrum_sptr = std::make_shared(); // std::vector if(m_timsDataFrame.size() == 0) return mass_spectrum_sptr; // qDebug(); std::size_t size = getNbrPeaks(scanNum); std::size_t offset = getScanOffset(scanNum); MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get(); qint32 previous = -1; qint32 tof_index; // std::vector index_list; DataPoint data_point; for(std::size_t i = 0; i < size; i++) { tof_index = (*(quint32 *)((m_timsDataFrame.constData() + (offset * 4) + (i * 8))) + previous); data_point.y = (*(quint32 *)(m_timsDataFrame.constData() + (offset * 4) + (i * 8) + 4)); // intensity normalization data_point.y *= 100.0 / m_accumulationTime; previous = tof_index; // mz calibration data_point.x = mz_calibration_p->getMzFromTofIndex(tof_index); mass_spectrum_sptr.get()->push_back(data_point); } // qDebug(); return mass_spectrum_sptr; } void TimsFrame::extractTimsXicListInRtRange( std::vector::iterator &itXicListbegin, std::vector::iterator &itXicListend, XicExtractMethod method) const { qDebug() << std::distance(itXicListbegin, itXicListend); std::vector tmp_xic_list; for(auto it = itXicListbegin; it != itXicListend; it++) { tmp_xic_list.push_back(TimsFrame::XicComputeStructure(this, **it)); qDebug() << " tmp_xic_struct.mobilityIndexBegin=" << tmp_xic_list.back().mobilityIndexBegin << " tmp_xic_struct.mobilityIndexEnd=" << tmp_xic_list.back().mobilityIndexEnd; qDebug() << " tmp_xic_struct.mzIndexLowerBound=" << tmp_xic_list.back().mzIndexLowerBound << " tmp_xic_struct.mzIndexUpperBound=" << tmp_xic_list.back().mzIndexUpperBound; } if(tmp_xic_list.size() == 0) return; /* std::sort(tmp_xic_list.begin(), tmp_xic_list.end(), [](const TimsXicStructure &a, const TimsXicStructure &b) { return a.mobilityIndexBegin < b.mobilityIndexBegin; }); */ std::vector unique_scan_num_list; for(auto &&struct_xic : tmp_xic_list) { for(std::size_t scan = struct_xic.mobilityIndexBegin; (scan <= struct_xic.mobilityIndexEnd) && (scan < m_scanNumber); scan++) { unique_scan_num_list.push_back(scan); } } std::sort(unique_scan_num_list.begin(), unique_scan_num_list.end()); auto it_scan_num_end = std::unique(unique_scan_num_list.begin(), unique_scan_num_list.end()); auto it_scan_num = unique_scan_num_list.begin(); while(it_scan_num != it_scan_num_end) { TraceSPtr ms_spectrum = getRawTraceSPtr(*it_scan_num); // qDebug() << ms_spectrum.get()->toString(); for(auto &&tmp_xic_struct : tmp_xic_list) { if(((*it_scan_num) >= tmp_xic_struct.mobilityIndexBegin) && ((*it_scan_num) <= tmp_xic_struct.mobilityIndexEnd)) { if(method == XicExtractMethod::max) { tmp_xic_struct.tmpIntensity += ms_spectrum.get()->maxY(tmp_xic_struct.mzIndexLowerBound, tmp_xic_struct.mzIndexUpperBound); qDebug() << "tmp_xic_struct.tmpIntensity=" << tmp_xic_struct.tmpIntensity; } else { // sum tmp_xic_struct.tmpIntensity += ms_spectrum.get()->sumY(tmp_xic_struct.mzIndexLowerBound, tmp_xic_struct.mzIndexUpperBound); qDebug() << "tmp_xic_struct.tmpIntensity=" << tmp_xic_struct.tmpIntensity; } } } it_scan_num++; } for(auto &&tmp_xic_struct : tmp_xic_list) { if(tmp_xic_struct.tmpIntensity != 0) { qDebug() << tmp_xic_struct.xic_ptr; tmp_xic_struct.xic_ptr->push_back( {m_time, tmp_xic_struct.tmpIntensity}); } } qDebug(); } pappso::TraceSPtr TimsFrame::getRawTraceSPtr(std::size_t scanNum) const { // qDebug(); pappso::TraceSPtr trace_sptr = std::make_shared(); // std::vector if(m_timsDataFrame.size() == 0) return trace_sptr; // qDebug(); std::size_t size = getNbrPeaks(scanNum); std::size_t offset = getScanOffset(scanNum); qint32 previous = -1; std::vector index_list; for(std::size_t i = 0; i < size; i++) { DataPoint data_point( (*(quint32 *)((m_timsDataFrame.constData() + (offset * 4) + (i * 8))) + previous), (*(quint32 *)(m_timsDataFrame.constData() + (offset * 4) + (i * 8) + 4))); // intensity normalization data_point.y *= 100.0 / m_accumulationTime; previous = data_point.x; trace_sptr.get()->push_back(data_point); } // qDebug(); return trace_sptr; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframe.h000644 001750 001750 00000016463 14531704732 025506 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframe.h * \date 23/08/2019 * \author Olivier Langella * \brief handle a single Bruker's TimsTof frame */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include #include "timsframebase.h" #include "../../xic/xic.h" #include "../../msrun/xiccoord/xiccoordtims.h" namespace pappso { class TimsFrame; typedef std::shared_ptr TimsFrameSPtr; typedef std::shared_ptr TimsFrameCstSPtr; class TimsBinDec; class TimsDirectXicExtractor; /** * @todo write docs */ class TimsFrame : public TimsFrameBase { friend TimsDirectXicExtractor; public: /** * @param timsId tims frame id * @param scanNum total number of scans in this frame * @param p_bytes pointer on the decompressed binary buffer * @param len size of the decompressed binary buffer */ TimsFrame(std::size_t timsId, quint32 scanNum, char *p_bytes, std::size_t len); /** * Copy constructor * * @param other TODO */ TimsFrame(const TimsFrame &other); /** * Destructor */ virtual ~TimsFrame(); virtual std::size_t getNbrPeaks(std::size_t scanNum) const override; /** @brief cumulate scan list into a trace * @param scanNumBegin first scan to cumulate * @param scanNumEnd last scan to cumulate * @return Trace mz and intensity values */ virtual Trace cumulateScansToTrace(std::size_t scanNumBegin, std::size_t scanNumEnd) const override; /** @brief cumulate spectrum given a scan number range * need the binary file * The intensities are normalized with respect to the frame accumulation time * to leverage computing performance, this function decreases the mz * resolution * * @param mzindex_merge_window width of the mzindex window used to merge all * intensities into a single point. This results in faster computing. * @param scanNumBegin scan number in the frame in the order it lies in binary * file, from 0 to N-1 * @param scanNumEnd scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ virtual Trace cumulateScansToTraceMzDownResolution(std::size_t mzindex_merge_window, std::size_t scanNumBegin, std::size_t scanNumEnd, quint32 &minimum_index, quint32 &maximum_index) const override; Trace cumulateScansToTraceMzDownResolution2(std::size_t mz_index_merge_window, double mz_range_begin, double mz_range_end, std::size_t mobility_scan_begin, std::size_t mobility_scan_end, quint32 &mz_minimum_index_out, quint32 &mz_maximum_index_out) const; /** @brief cumulate scan list into a trace into a raw spectrum map * @param rawSpectrum simple map of integers to cumulate raw counts * @param scanNumBegin first scan to cumulate * @param scanNumEnd last scan to cumulate */ virtual void cumulateScansInRawMap(std::map &rawSpectrum, std::size_t scanNumBegin, std::size_t scanNumEnd) const override; virtual quint64 cumulateSingleScanIntensities(std::size_t scanNum) const override; virtual quint64 cumulateScansIntensities(std::size_t scanNumBegin, std::size_t scanNumEnd) const override; /** @brief get raw index list for one given scan * index are not TOF nor m/z, just index on digitizer */ virtual std::vector getScanIndexList(std::size_t scanNum) const override; /** @brief get raw intensities without transformation from one scan * it needs intensity normalization */ virtual std::vector getScanIntensities(std::size_t scanNum) const override; /** @brief get the mass spectrum corresponding to a scan number * @param scanNum the scan number to retrieve * */ virtual pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtr(std::size_t scanNum) const; virtual pappso::MassSpectrumSPtr getMassSpectrumSPtr(std::size_t scanNum) const override; protected: /** @brief constructor for binary independant tims frame * @param timsId tims frame identifier in the database * @param scanNum the total number of scans contained in this frame */ TimsFrame(std::size_t timsId, quint32 scanNum); void extractTimsXicListInRtRange( std::vector::iterator &itXicListbegin, std::vector::iterator &itXicListend, XicExtractMethod method) const; /** @brief cumulate a scan into a map * * @param scanNum scan number 0 to (m_scanNumber-1) */ virtual void cumulateScan(std::size_t scanNum, std::map &accumulate_into) const; virtual void cumulateScan2(std::size_t scanNum, std::map &accumulate_into, double mz_range_begin, double mz_range_end, quint32 accepted_tof_index_range_begin, quint32 accepted_tof_index_range_end) const; /** @brief get the raw index tof_index and intensities (normalized) * * @param scanNum the scan number to extract * @return trace vector * */ virtual pappso::TraceSPtr getRawTraceSPtr(std::size_t scanNum) const; private: /** @brief unshuffle data packet of tims compression type 2 * @param src is a zstd decompressed buffer pointer */ void unshufflePacket(const char *src); /** @brief get offset for this spectrum in the binary file * * @param scanNum scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ std::size_t getScanOffset(std::size_t scanNum) const; private: struct XicComputeStructure { XicComputeStructure(const TimsFrame *fram_p, const XicCoordTims &xic_struct); Xic *xic_ptr = nullptr; std::size_t mobilityIndexBegin; std::size_t mobilityIndexEnd; std::size_t mzIndexLowerBound; std::size_t mzIndexUpperBound; double tmpIntensity = 0; }; protected: QByteArray m_timsDataFrame; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp000644 001750 001750 00000014320 14526455546 030601 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframerawdatachunck.cpp * \date 18/6/2022 * \author Olivier Langella * \brief stores raw binary tims frame */ /******************************************************************************* * Copyright (c) 2022 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsframerawdatachunck.h" #include #include "../../pappsoexception.h" using namespace pappso; TimsFrameRawDataChunck::TimsFrameRawDataChunck() { } TimsFrameRawDataChunck::~TimsFrameRawDataChunck() { if(mpa_memoryBuffer != nullptr) delete[] mpa_memoryBuffer; } bool TimsFrameRawDataChunck::readTimsFrame( QFile *p_file, std::size_t frameId, const std::vector &frame_record_list) { m_frameId = frameId; qint64 position = p_file->pos(); const pappso::TimsFrameRecord &frame_record = frame_record_list[frameId]; if(frameId == 1) { bool seekpos_ok = p_file->seek(frame_record.tims_offset); if(!seekpos_ok) { throw PappsoException(QObject::tr("ERROR reading TIMS frame %1 " "m_timsBinFile.seek(%3) failed") .arg(frameId) .arg(frame_record.tims_offset)); } } else { if(position == (qint64)frame_record.tims_offset) { // OK } else { // need to move to frame position : if(position > (qint64)frame_record.tims_offset) { // get back p_file->seek(frame_record.tims_offset); position = p_file->pos(); } else { const pappso::TimsFrameRecord &previous_frame_record = frame_record_list[frameId - 1]; if(position < (qint64)previous_frame_record.tims_offset) { throw PappsoException( QObject::tr("ERROR reading TIMS frame %1 " "file position %2 is before previous frame %3") .arg(frameId) .arg(position) .arg(previous_frame_record.tims_offset)); } else { // catch up current position qint64 move_size = (qint64)frame_record.tims_offset - position; p_file->read(move_size); position = p_file->pos(); } } } } if(position != (qint64)frame_record.tims_offset) { throw PappsoException( QObject::tr("ERROR reading TIMS frame %1 " "file position %2 is different of frame offset %3") .arg(frameId) .arg(position) .arg(frame_record.tims_offset)); } // qDebug(); p_file->read((char *)&m_frameLength, 4); // frame_length = qToBigEndian(frame_length); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " frame_length=" << frame_length; // qDebug(); p_file->read((char *)&m_frameNumberOfScans, 4); // scan_number = qToBigEndian(scan_number); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " pos=" << m_timsBinFile.pos(); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " scan_number=" << scan_number; // m_timsBinFile.seek(m_indexArray.at(timsId) + 8); // qDebug(); // if (m_memoryBufferSize if(mpa_memoryBuffer == nullptr) { qDebug() << "mpa_memoryBuffer == nullptr"; m_memoryBufferSize = (qint64)m_frameLength + 10; mpa_memoryBuffer = new char[m_memoryBufferSize]; } if((m_memoryBufferSize - 10) < m_frameLength) { if(mpa_memoryBuffer != nullptr) { delete[] mpa_memoryBuffer; } m_memoryBufferSize = (qint64)m_frameLength + 10; mpa_memoryBuffer = new char[m_memoryBufferSize]; } // QByteArray frame_byte_array(mpa_memoryBuffer, m_memoryBufferSize); // qDebug(); qint64 read_length = p_file->read(mpa_memoryBuffer, (qint64)m_frameLength - 8); // qDebug(); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " +frame_length-1=" // << (quint8) * (frame_byte_array.constData() + frame_length - 1); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ // << " +frame_length=" // << (quint8) * (frame_byte_array.constData() + frame_length); // m_timsBinFile.seek(m_indexArray.at(timsId) + 8); if(read_length + 8 != (qint64)m_frameLength) { throw PappsoException(QObject::tr("ERROR reading TIMS frame %1: " "read_length=%2 != %3frame_length") .arg(frameId) .arg(read_length) .arg(m_frameLength)); } return true; } char * pappso::TimsFrameRawDataChunck::getMemoryBuffer() const { return mpa_memoryBuffer; } quint32 pappso::TimsFrameRawDataChunck::getCompressedSize() const { return m_frameLength - 8; } quint32 pappso::TimsFrameRawDataChunck::getFrameNumberOfScans() const { return m_frameNumberOfScans; } quint32 pappso::TimsFrameRawDataChunck::getFrameLength() const { return m_frameLength; } std::size_t pappso::TimsFrameRawDataChunck::getFrameId() const { return m_frameId; } libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframerawdatachunck.h000644 001750 001750 00000003760 14346367014 030244 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframerawdatachunck.h * \date 18/6/2022 * \author Olivier Langella * \brief stores raw binary tims frame */ /******************************************************************************* * Copyright (c) 2022 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "timsframerecord.h" #include "../../exportinmportconfig.h" namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL TimsFrameRawDataChunck { public: /** * Default constructor */ TimsFrameRawDataChunck(); /** * Destructor */ virtual ~TimsFrameRawDataChunck(); bool readTimsFrame(QFile *p_file, std::size_t frameId, const std::vector &frame_record_list); quint32 getFrameNumberOfScans() const; quint32 getCompressedSize() const; quint32 getFrameLength() const; char *getMemoryBuffer() const; std::size_t getFrameId() const; private: char *mpa_memoryBuffer = nullptr; qint64 m_memoryBufferSize = 0; std::size_t m_frameId = 0; quint32 m_frameLength = 0; quint32 m_frameNumberOfScans = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframerecord.h000644 001750 001750 00000003065 14510011217 026661 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframerecord.h * \date 19/6/2022 * \author Olivier Langella * \brief simple structure to store SQL lite frame records */ /******************************************************************************* * Copyright (c) 2022 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once namespace pappso { struct TimsFrameRecord { std::size_t frame_id = 0; std::size_t tims_offset = 0; double accumulation_time = 0; std::size_t mz_calibration_id = 0; double frame_t1 = 0; double frame_t2 = 0; double frame_time = 0; int msms_type = 0; std::size_t tims_calibration_id = 0; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframetype1.cpp000644 001750 001750 00000032412 14526455546 027026 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframetype1.cpp * \date 3/10/2021 * \author Olivier Langella * \brief handle a single Bruker's TimsTof frame type 1 compression */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsframetype1.h" #include "../../../pappsomspp/pappsoexception.h" #include "../../../pappsomspp/exception/exceptionoutofrange.h" #include "../../../pappsomspp/exception/exceptionnotimplemented.h" #include #include #include #include namespace pappso { TimsFrameType1::TimsFrameType1(std::size_t timsId, quint32 scanNum, char *p_bytes, std::size_t len) : TimsFrame(timsId, scanNum) { qDebug() << timsId; m_timsDataFrame.resize(len * 2); if(p_bytes != nullptr) { qDebug() << timsId; copyAndLzfDecompress(p_bytes, len); qDebug() << timsId; } else { if(m_scanNumber == 0) { throw pappso::PappsoException( QObject::tr( "TimsFrameType1::TimsFrameType1(%1,%2,nullptr,%3) FAILED") .arg(m_timsId) .arg(m_scanNumber) .arg(len)); } } } TimsFrameType1::TimsFrameType1(const TimsFrameType1 &other) : TimsFrame(other) { } TimsFrameType1::~TimsFrameType1() { } void TimsFrameType1::copyAndLzfDecompress(const char *src, std::size_t len) { qDebug() << " m_scanNumber=" << m_scanNumber << " len=" << len; // the start position offset for each scan and the length of the last scan // copy first m_scanNumber*4 bytes in qbyte array std::size_t count = (m_scanNumber + 2) * 4; qDebug() << " count=" << count; if(m_timsDataFrame.size() < (long)(count + count)) { qDebug() << " m_timsDataFrame.size()=" << m_timsDataFrame.size(); m_timsDataFrame.resize(count + count); } /* std::size_t decompressed_size = lzfDecompressScan(src + 3687 - 8, 9, m_timsDataFrame.data() + 3660, m_timsDataFrame.size() - 3660); qDebug() << "decompressed_size=" << decompressed_size; */ // memcpy(m_timsDataFrame.data(), src, count); qDebug() << "offset begin at last :" << count + 4; // std::vector compressed_len_list; std::size_t offset; std::size_t previous_offset = (*(quint32 *)(src)); qDebug() << "first offset= " << previous_offset; std::size_t cumul_decompressed_size = 0; for(quint32 i = 1; i <= m_scanNumber; i++) { offset = (*(quint32 *)(src + (i * 4))); std::size_t compressed_size = offset - previous_offset; qDebug() << "scan i=" << i << " previous_offset=" << previous_offset << " offset=" << offset << " length=" << compressed_size; // compressed_len_list.push_back(offset - previous_offset); std::size_t remaining_size = m_timsDataFrame.size(); if(cumul_decompressed_size < remaining_size) { remaining_size = remaining_size - cumul_decompressed_size; } else { remaining_size = 0; } qDebug() << " remaining_size=" << remaining_size; std::size_t decompressed_size = lzfDecompressScan(src + previous_offset - 8, compressed_size, m_timsDataFrame.data() + cumul_decompressed_size, remaining_size); m_scanOffsetList.push_back(cumul_decompressed_size); m_scanSizeList.push_back(decompressed_size / 4); cumul_decompressed_size += decompressed_size; qDebug() << " decompressed_size=" << decompressed_size; previous_offset = offset; } /* std::size_t last_offset = (*(quint32 *)(src + (m_scanNumber * 4))); qDebug() << "last scan length :" << last_offset; qDebug() << "last scan length bonus:" << (*(quint32 *)(src + (m_scanNumber + 1 * 4))); qDebug() << " m_scanOffsetList.size()=" << m_scanOffsetList.size() << " m_scanNumber=" << m_scanNumber; */ /* throw PappsoException( QObject::tr("ERROR reading TimsFrameType1 ").arg(m_timsId)); */ } unsigned int TimsFrameType1::lzfDecompressScan(const char *src, unsigned int src_len, char *dest, unsigned int dest_len) { qDebug() << "src=" << src << " src_len=" << src_len << " dest_len=" << dest_len; if(src_len == 0) return 0; unsigned int decompressed_size; unsigned int more_space = src_len * 2; decompressed_size = lzf_decompress(src, src_len, dest, dest_len); while(decompressed_size == 0) { qDebug() << "dest_len=" << dest_len; qDebug() << "decompressed_size=" << decompressed_size; if(errno == EINVAL) { throw PappsoException( QObject::tr("ERROR reading TimsFrameType1 %1 TIMS binary file %2: " "LZF decompression error EINVAL") .arg(m_timsId)); } else if(errno == E2BIG) { qDebug() << " m_timsDataFrame.size()=" << m_timsDataFrame.size() << " more_space=" << more_space; m_timsDataFrame.resize(m_timsDataFrame.size() + more_space); dest_len += more_space; qDebug(); decompressed_size = lzf_decompress(src, src_len, dest, dest_len); } else { break; } } return decompressed_size; } std::size_t TimsFrameType1::getNbrPeaks(std::size_t scanNum) const { pappso::MassSpectrumSPtr mass_spectrum_sptr = getMassSpectrumSPtr(scanNum); return mass_spectrum_sptr.get()->size(); } void TimsFrameType1::cumulateScan(std::size_t scanNum, std::map &accumulate_into) const { if(m_timsDataFrame.size() == 0) return; // checkScanNum(scanNum); std::size_t size = m_scanSizeList[scanNum]; std::size_t offset = m_scanOffsetList[scanNum]; // qDebug() << "begin offset=" << offset << " size=" << size; qint32 value = 0; qint32 tof_index = 0; for(std::size_t i = 0; i < size; i++) { value = (*(qint32 *)(m_timsDataFrame.constData() + offset + (i * 4))); // qDebug() << " i=" << i << " value=" << value; if(value < 0) { tof_index += -1 * value; } else { quint32 x = tof_index; quint32 y = value; auto ret = accumulate_into.insert(std::pair(x, y)); if(ret.second == false) { // already existed : cumulate ret.first->second += y; } tof_index++; } } qDebug() << "end"; } std::vector TimsFrameType1::getScanIndexList(std::size_t scanNum) const { qDebug(); checkScanNum(scanNum); std::vector mzindex_values; try { qDebug(); if(m_timsDataFrame.size() == 0) return mzindex_values; qDebug(); std::size_t size = m_scanSizeList[scanNum]; std::size_t offset = m_scanOffsetList[scanNum]; qDebug() << " offset=" << offset << " size=" << size; if(size == 0) return mzindex_values; qint32 value = 0; qint32 tof_index = 0; // std::vector index_list; for(std::size_t i = 0; i < size; i++) { value = (*(qint32 *)(m_timsDataFrame.constData() + offset + (i * 4))); if(value < 0) { tof_index += -1 * value; } else { mzindex_values.push_back(tof_index); tof_index++; } } qDebug(); return mzindex_values; } catch(PappsoException &error) { throw pappso::PappsoException(QObject::tr("Error %1 frameId=%2 " "scanNum=%3 :\n%4") .arg(__FUNCTION__) .arg(getId()) .arg(scanNum) .arg(error.qwhat())); } qDebug(); } std::vector TimsFrameType1::getScanIntensities(std::size_t scanNum) const { qDebug() << " scanNum=" << scanNum; checkScanNum(scanNum); std::vector int_values; try { qDebug(); if(m_timsDataFrame.size() == 0) return int_values; qDebug(); std::size_t size = m_scanSizeList[scanNum]; std::size_t offset = m_scanOffsetList[scanNum]; qDebug() << " offset=" << offset << " size=" << size; if(size == 0) return int_values; qint32 value = 0; qint32 tof_index = 0; // std::vector index_list; for(std::size_t i = 0; i < size; i++) { value = (*(qint32 *)(m_timsDataFrame.constData() + offset + (i * 4))); if(value < 0) { tof_index += -1 * value; } else { int_values.push_back(value); tof_index++; } } qDebug(); return int_values; } catch(PappsoException &error) { throw pappso::PappsoException(QObject::tr("Error %1 frameId=%2 " "scanNum=%3 :\n%4") .arg(__FUNCTION__) .arg(getId()) .arg(scanNum) .arg(error.qwhat())); } } pappso::MassSpectrumSPtr TimsFrameType1::getMassSpectrumSPtr(std::size_t scanNum) const { qDebug() << " scanNum=" << scanNum; checkScanNum(scanNum); try { qDebug(); pappso::MassSpectrumSPtr mass_spectrum_sptr = std::make_shared(); // std::vector if(m_timsDataFrame.size() == 0) return mass_spectrum_sptr; qDebug(); std::size_t size = m_scanSizeList[scanNum]; std::size_t offset = m_scanOffsetList[scanNum]; qDebug() << " offset=" << offset << " size=" << size; if(size == 0) return mass_spectrum_sptr; MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get(); qint32 value = 0; qint32 tof_index = 0; // std::vector index_list; DataPoint data_point; for(std::size_t i = 0; i < size; i++) { value = (*(qint32 *)(m_timsDataFrame.constData() + offset + (i * 4))); if(value < 0) { tof_index += -1 * value; } else { data_point.y = value; // intensity normalization data_point.y *= 100.0 / m_accumulationTime; // mz calibration data_point.x = mz_calibration_p->getMzFromTofIndex(tof_index); mass_spectrum_sptr.get()->push_back(data_point); tof_index++; } } qDebug() << mass_spectrum_sptr.get()->toString(); return mass_spectrum_sptr; } catch(PappsoException &error) { throw pappso::PappsoException( QObject::tr("Error TimsFrameType1::getMassSpectrumSPtr frameId=%1 " "scanNum=%2 :\n%3") .arg(getId()) .arg(scanNum) .arg(error.qwhat())); } } pappso::TraceSPtr TimsFrameType1::getRawTraceSPtr(std::size_t scanNum) const { // qDebug(); pappso::TraceSPtr trace_sptr = std::make_shared(); // std::vector if(m_timsDataFrame.size() == 0) return trace_sptr; qDebug(); std::size_t size = m_scanSizeList[scanNum]; std::size_t offset = m_scanOffsetList[scanNum]; qDebug() << " offset=" << offset << " size=" << size; if(size == 0) return trace_sptr; // qDebug(); qint32 value = 0; qint32 tof_index = 0; // std::vector index_list; DataPoint data_point; for(std::size_t i = 0; i < size; i++) { value = (*(qint32 *)(m_timsDataFrame.constData() + offset + (i * 4))); if(value < 0) { tof_index += -1 * value; } else { data_point.y = value; // intensity normalization data_point.y *= 100.0 / m_accumulationTime; // mz calibration data_point.x = tof_index; trace_sptr.get()->push_back(data_point); tof_index++; } } // qDebug(); return trace_sptr; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframetype1.h000644 001750 001750 00000007624 14346367014 026472 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframetype1.h * \date 3/10/2021 * \author Olivier Langella * \brief handle a single Bruker's TimsTof frame type 1 compression */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "timsframe.h" namespace pappso { /** * @todo write docs */ class TimsFrameType1 : public TimsFrame { public: /** * @param timsId tims frame id * @param scanNum total number of scans in this frame * @param p_bytes pointer on the decompressed binary buffer * @param len size of the decompressed binary buffer */ TimsFrameType1(std::size_t timsId, quint32 scanNum, char *p_bytes, std::size_t len); /** * Copy constructor * * @param other TODO */ TimsFrameType1(const TimsFrameType1 &other); /** * Destructor */ virtual ~TimsFrameType1(); virtual std::size_t getNbrPeaks(std::size_t scanNum) const override; /** @brief get raw index list for one given scan * index are not TOF nor m/z, just index on digitizer */ virtual std::vector getScanIndexList(std::size_t scanNum) const override; /** @brief get raw intensities without transformation from one scan * it needs intensity normalization */ virtual std::vector getScanIntensities(std::size_t scanNum) const override; /** @brief get the mass spectrum corresponding to a scan number * @param scanNum the scan number to retrieve * */ virtual pappso::MassSpectrumSPtr getMassSpectrumSPtr(std::size_t scanNum) const override; protected: /** @brief cumulate a scan into a map * * @param scanNum scan number 0 to (m_scanNumber-1) */ virtual void cumulateScan(std::size_t scanNum, std::map &accumulate_into) const override; /** @brief get the raw index tof_index and intensities (normalized) * * @param scanNum the scan number to extract * @return trace vector * */ virtual pappso::TraceSPtr getRawTraceSPtr(std::size_t scanNum) const override; private: /** @brief copy buffer header and lzf decompress each scan for tims * compression type 1 * @param src raw data buffer containing scan offsets and LZF compressed scans * @param len length of the data buffer */ void copyAndLzfDecompress(const char *src, std::size_t len); /** @brief decompress a single LZF compressed scan buffer * @param src pointer on the LZF compressed buffer * @param src_len length of the source buffer * @param dest pointer to the destination buffer (in the qbyte array) * @param dest_len length of the destination buffer (max possible in the * qbytearray) * @return scan decompressed size */ unsigned int lzfDecompressScan(const char *src, unsigned int src_len, char *dest, unsigned int dest_len); private: std::vector m_scanOffsetList; std::vector m_scanSizeList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsms2centroidfilter.cpp000644 001750 001750 00000002766 14526455546 030421 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsms2centroidfilter.cpp * \date 27/09/2019 * \author Olivier Langella * \brief special process for tims MS2 spectrum (centroid like) */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsms2centroidfilter.h" using namespace pappso; TimsMs2CentroidFilter::TimsMs2CentroidFilter() { } TimsMs2CentroidFilter::~TimsMs2CentroidFilter() { } TimsMs2CentroidFilter::TimsMs2CentroidFilter( [[maybe_unused]] const TimsMs2CentroidFilter &other) { } MassSpectrum & TimsMs2CentroidFilter::filter(MassSpectrum &data_points) const { return data_points; } libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsms2centroidfilter.h000644 001750 001750 00000003120 14346367014 030037 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsms2centroidfilter.h * \date 27/09/2019 * \author Olivier Langella * \brief special process for tims MS2 spectrum (centroid like) */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../../processing/filters/filterinterface.h" namespace pappso { /** * @todo write docs */ class TimsMs2CentroidFilter : public MassSpectrumFilterInterface { public: /** * Default constructor */ TimsMs2CentroidFilter(); TimsMs2CentroidFilter(const TimsMs2CentroidFilter &other); /** * Destructor */ virtual ~TimsMs2CentroidFilter(); MassSpectrum &filter(MassSpectrum &data_points) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframebase.cpp000644 001750 001750 00000042610 14531705076 026667 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframebase.cpp * \date 16/12/2019 * \author Olivier Langella * \brief handle a single Bruker's TimsTof frame without binary data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "timsframebase.h" #include "../../../pappsomspp/pappsoexception.h" #include "../../../pappsomspp/exception/exceptionoutofrange.h" #include "mzcalibration/mzcalibrationmodel1.h" #include #include #include #include namespace pappso { TimsFrameBase::TimsFrameBase(std::size_t timsId, quint32 scanNum) { qDebug() << timsId; m_timsId = timsId; m_scanNumber = scanNum; } TimsFrameBase::TimsFrameBase([[maybe_unused]] const TimsFrameBase &other) { } TimsFrameBase::~TimsFrameBase() { } void TimsFrameBase::setAccumulationTime(double accumulation_time_ms) { m_accumulationTime = accumulation_time_ms; } void TimsFrameBase::setMzCalibration(double T1_frame, double T2_frame, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3, double C4, double T1_ref, double T2_ref, double dC1, double dC2) { /* MzCalibrationModel1 mzCalibration(temperature_correction, digitizerTimebase, digitizerDelay, C0, C1, C2, C3, C4); */ msp_mzCalibration = std::make_shared(T1_frame, T2_frame, digitizerTimebase, digitizerDelay, C0, C1, C2, C3, C4, T1_ref, T2_ref, dC1, dC2); } bool TimsFrameBase::checkScanNum(std::size_t scanNum) const { if(scanNum >= m_scanNumber) { throw pappso::ExceptionOutOfRange( QObject::tr("Invalid scan number : scanNum %1 > m_scanNumber %2") .arg(scanNum) .arg(m_scanNumber)); } return true; } std::size_t TimsFrameBase::getNbrPeaks(std::size_t scanNum) const { throw PappsoException( QObject::tr( "ERROR unable to get number of peaks in TimsFrameBase for scan number %1") .arg(scanNum)); } std::size_t TimsFrameBase::getTotalNumberOfScans() const { return m_scanNumber; } MassSpectrumSPtr TimsFrameBase::getMassSpectrumSPtr(std::size_t scanNum) const { throw PappsoException( QObject::tr( "ERROR unable to getMassSpectrumSPtr in TimsFrameBase for scan number %1") .arg(scanNum)); } Trace TimsFrameBase::cumulateScansToTrace(std::size_t scanNumBegin, std::size_t scanNumEnd) const { throw PappsoException( QObject::tr("ERROR unable to cumulateScanToTrace in TimsFrameBase for scan " "number begin %1 end %2") .arg(scanNumBegin) .arg(scanNumEnd)); } Trace TimsFrameBase::cumulateScansToTraceMzDownResolution( std::size_t mzindex_merge_window [[maybe_unused]], std::size_t scanNumBegin [[maybe_unused]], std::size_t scanNumEnd [[maybe_unused]], quint32 &minimum_index [[maybe_unused]], quint32 &maximum_index [[maybe_unused]]) const { throw PappsoException(QObject::tr("Non implemented function %1 %2 %3") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } void TimsFrameBase::cumulateScansInRawMap(std::map &rawSpectrum [[maybe_unused]], std::size_t scanNumBegin, std::size_t scanNumEnd) const { throw PappsoException( QObject::tr( "ERROR unable to cumulateScansInRawMap in TimsFrameBase for scan " "number begin %1 end %2") .arg(scanNumBegin) .arg(scanNumEnd)); } quint64 TimsFrameBase::cumulateSingleScanIntensities(std::size_t scanNum) const { throw PappsoException( QObject::tr( "ERROR unable to cumulateSingleScanIntensities in TimsFrameBase for scan " "number %1.") .arg(scanNum)); return 0; } quint64 TimsFrameBase::cumulateScansIntensities(std::size_t scanNumBegin, std::size_t scanNumEnd) const { throw PappsoException( QObject::tr( "ERROR unable to cumulateScansInRawMap in TimsFrameBase for scan " "number begin %1 end %2") .arg(scanNumBegin) .arg(scanNumEnd)); return 0; } void TimsFrameBase::setTime(double time) { m_time = time; } void TimsFrameBase::setMsMsType(quint8 type) { qDebug() << " m_msMsType=" << type; m_msMsType = type; } unsigned int TimsFrameBase::getMsLevel() const { if(m_msMsType == 0) return 1; return 2; } double TimsFrameBase::getTime() const { return m_time; } std::size_t TimsFrameBase::getId() const { return m_timsId; } void TimsFrameBase::setTimsCalibration(int tims_model_type, double C0, double C1, double C2, double C3, double C4, [[maybe_unused]] double C5, double C6, double C7, double C8, double C9) { if(tims_model_type != 2) { throw pappso::PappsoException(QObject::tr( "ERROR in TimsFrame::setTimsCalibration tims_model_type != 2")); } m_timsDvStart = C2; // C2 from TimsCalibration m_timsTtrans = C4; // C4 from TimsCalibration m_timsNdelay = C0; // C0 from TimsCalibration m_timsVmin = C8; // C8 from TimsCalibration m_timsVmax = C9; // C9 from TimsCalibration m_timsC6 = C6; m_timsC7 = C7; m_timsSlope = (C3 - m_timsDvStart) / C1; // //C3 from TimsCalibration // C2 from // TimsCalibration // C1 from TimsCalibration } double TimsFrameBase::getVoltageTransformation(std::size_t scanNum) const { double v = m_timsDvStart + m_timsSlope * ((double)scanNum - m_timsTtrans - m_timsNdelay); if(v < m_timsVmin) { throw pappso::PappsoException( QObject::tr("ERROR in TimsFrame::getVoltageTransformation invalid tims " "calibration, v < m_timsVmin")); } if(v > m_timsVmax) { throw pappso::PappsoException( QObject::tr("ERROR in TimsFrame::getVoltageTransformation invalid tims " "calibration, v > m_timsVmax")); } return v; } double TimsFrameBase::getDriftTime(std::size_t scanNum) const { return (m_accumulationTime / (double)m_scanNumber) * ((double)scanNum); } double TimsFrameBase::getOneOverK0Transformation(std::size_t scanNum) const { return 1 / (m_timsC6 + (m_timsC7 / getVoltageTransformation(scanNum))); } std::size_t TimsFrameBase::getScanNumFromOneOverK0(double one_over_k0) const { double temp = 1 / one_over_k0; temp = temp - m_timsC6; temp = temp / m_timsC7; temp = 1 / temp; temp = temp - m_timsDvStart; temp = temp / m_timsSlope + m_timsTtrans + m_timsNdelay; return (std::size_t)std::round(temp); } bool TimsFrameBase::hasSameCalibrationData(const TimsFrameBase &other) const { if((m_timsDvStart == other.m_timsDvStart) && (m_timsTtrans == other.m_timsTtrans) && (m_timsNdelay == other.m_timsNdelay) && (m_timsVmin == other.m_timsVmin) && (m_timsVmax == other.m_timsVmax) && (m_timsC6 == other.m_timsC6) && (m_timsC7 == other.m_timsC7) && (m_timsSlope == other.m_timsSlope)) { return true; } return false; } pappso::Trace TimsFrameBase::getTraceFromCumulatedScans( std::map &accumulated_scans) const { qDebug(); // qDebug(); // add flanking peaks pappso::Trace local_trace; MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get(); DataPoint element; for(auto &scan_element : accumulated_scans) { // intensity normalization element.y = ((double)scan_element.second) * 100.0 / m_accumulationTime; // mz calibration element.x = mz_calibration_p->getMzFromTofIndex(scan_element.first); local_trace.push_back(element); } local_trace.sortX(); qDebug(); // qDebug(); return local_trace; } pappso::Trace TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid( std::map &accumulated_scans) const { qDebug(); // qDebug(); // add flanking peaks std::vector keys; transform(begin(accumulated_scans), end(accumulated_scans), back_inserter(keys), [](std::map::value_type const &pair) { return pair.first; }); std::sort(keys.begin(), keys.end()); pappso::DataPoint data_point_cumul; data_point_cumul.x = 0; data_point_cumul.y = 0; pappso::Trace local_trace; MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get(); quint32 last_key = 0; for(quint32 key : keys) { if(key == last_key + 1) { // cumulate if(accumulated_scans[key] > accumulated_scans[last_key]) { if(data_point_cumul.x == last_key) { // growing peak data_point_cumul.x = key; data_point_cumul.y += accumulated_scans[key]; } else { // new peak // flush if(data_point_cumul.y > 0) { // intensity normalization data_point_cumul.y *= 100.0 / m_accumulationTime; // mz calibration data_point_cumul.x = mz_calibration_p->getMzFromTofIndex(data_point_cumul.x); local_trace.push_back(data_point_cumul); } // new point data_point_cumul.x = key; data_point_cumul.y = accumulated_scans[key]; } } else { data_point_cumul.y += accumulated_scans[key]; } } else { // flush if(data_point_cumul.y > 0) { // intensity normalization data_point_cumul.y *= 100.0 / m_accumulationTime; // qDebug() << "raw data x=" << data_point_cumul.x; // mz calibration data_point_cumul.x = mz_calibration_p->getMzFromTofIndex(data_point_cumul.x); // qDebug() << "mz=" << data_point_cumul.x; local_trace.push_back(data_point_cumul); } // new point data_point_cumul.x = key; data_point_cumul.y = accumulated_scans[key]; } last_key = key; } // flush if(data_point_cumul.y > 0) { // intensity normalization data_point_cumul.y *= 100.0 / m_accumulationTime; // mz calibration data_point_cumul.x = mz_calibration_p->getMzFromTofIndex(data_point_cumul.x); local_trace.push_back(data_point_cumul); } local_trace.sortX(); qDebug(); // qDebug(); return local_trace; } const MzCalibrationInterfaceSPtr & TimsFrameBase::getMzCalibrationInterfaceSPtr() const { if(msp_mzCalibration == nullptr) { throw pappso::PappsoException( QObject::tr("ERROR in %1, %2, %3 msp_mzCalibration is null") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } return msp_mzCalibration; } void TimsFrameBase::setMzCalibrationInterfaceSPtr( MzCalibrationInterfaceSPtr mzCalibration) { if(mzCalibration == nullptr) { throw pappso::PappsoException( QObject::tr("ERROR in %1, %2, %3 msp_mzCalibration is null") .arg(__FILE__) .arg(__FUNCTION__) .arg(__LINE__)); } msp_mzCalibration = mzCalibration; } quint32 TimsFrameBase::getMaximumRawMassIndex() const { quint32 max_value = 0; for(quint32 i = 0; i < m_scanNumber; i++) { qDebug() << "m_scanNumber=" << m_scanNumber << " i=" << i; std::vector index_list = getScanIndexList(i); auto it = std::max_element(index_list.begin(), index_list.end()); if(it != index_list.end()) { max_value = std::max(max_value, *it); } } return max_value; } std::vector TimsFrameBase::getScanIndexList(std::size_t scanNum) const { throw PappsoException( QObject::tr( "ERROR unable to getScanIndexList in TimsFrameBase for scan number %1") .arg(scanNum)); } std::vector TimsFrameBase::getScanIntensities(std::size_t scanNum) const { throw PappsoException( QObject::tr( "ERROR unable to getScanIntensities in TimsFrameBase for scan number %1") .arg(scanNum)); } Trace TimsFrameBase::getIonMobilityTraceByMzIndexRange( std::size_t mz_index_lower_bound, std::size_t mz_index_upper_bound, XicExtractMethod method) const { Trace im_trace; DataPoint data_point; for(quint32 i = 0; i < m_scanNumber; i++) { data_point.x = i; data_point.y = 0; qDebug() << "m_scanNumber=" << m_scanNumber << " i=" << i; std::vector index_list = getScanIndexList(i); auto it_lower = std::find_if(index_list.begin(), index_list.end(), [mz_index_lower_bound](quint32 to_compare) { if(to_compare < mz_index_lower_bound) { return false; } return true; }); if(it_lower == index_list.end()) { } else { auto it_upper = std::find_if(index_list.begin(), index_list.end(), [mz_index_upper_bound](quint32 to_compare) { if(mz_index_upper_bound >= to_compare) { return false; } return true; }); std::vector intensity_list = getScanIntensities(i); for(int j = std::distance(index_list.begin(), it_lower); j < std::distance(index_list.begin(), it_upper); j++) { if(method == XicExtractMethod::sum) { data_point.y += intensity_list[j]; } else { data_point.y = std::max((double)intensity_list[j], data_point.y); } } } im_trace.push_back(data_point); } qDebug(); return im_trace; } std::map & TimsFrameBase::downsizeMzRawMap(std::size_t mzindex_merge_window, std::map &rawSpectrum) const { std::map new_spectrum; for(auto &pair_mz_intensity : rawSpectrum) { quint32 mzkey = (pair_mz_intensity.first / mzindex_merge_window); mzkey = (mzkey * mzindex_merge_window) + (mzindex_merge_window / 2); auto it = new_spectrum.insert({mzkey, pair_mz_intensity.second}); if(it.second == false) { it.first->second += pair_mz_intensity.second; } } rawSpectrum = new_spectrum; return rawSpectrum; } // namespace pappso } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/vendors/tims/timsframebase.h000644 001750 001750 00000025207 14531711167 026335 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/vendors/tims/timsframebase.h * \date 16/12/2019 * \author Olivier Langella * \brief handle a single Bruker's TimsTof frame without binary data */ /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include #include "../../massspectrum/massspectrum.h" #include "mzcalibration/mzcalibrationinterface.h" namespace pappso { class TimsFrameBase; typedef std::shared_ptr TimsFrameBaseSPtr; typedef std::shared_ptr TimsFrameBaseCstSPtr; /** * @todo write docs */ class TimsFrameBase { public: /** @brief constructor for binary independant tims frame * @param timsId tims frame identifier in the database * @param scanNum the total number of scans contained in this frame */ TimsFrameBase(std::size_t timsId, quint32 scanNum); /** * Copy constructor * * @param other TODO */ TimsFrameBase(const TimsFrameBase &other); /** * Destructor */ virtual ~TimsFrameBase(); /** @brief tells if 2 tims frame has the same calibration data * Usefull to know if raw data can be handled between frames */ virtual bool hasSameCalibrationData(const TimsFrameBase &other) const; /** @brief get the number of peaks in this spectrum * need the binary file * @param scanNum scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ virtual std::size_t getNbrPeaks(std::size_t scanNum) const; /** @brief get the number of scans contained in this frame * each scan represents an ion mobility slice */ virtual std::size_t getTotalNumberOfScans() const; /** @brief get the maximum raw mass index contained in this frame */ virtual quint32 getMaximumRawMassIndex() const; /** @brief get Mass spectrum with peaks for this scan number * need the binary file * @param scanNum scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ virtual MassSpectrumSPtr getMassSpectrumSPtr(std::size_t scanNum) const; /** @brief cumulate spectrum given a scan number range * need the binary file * The intensities are normalized with respect to the frame accumulation time * * @param scanNumBegin scan number in the frame in the order it lies in binary * file, from 0 to N-1 * @param scanNumEnd scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ virtual Trace cumulateScansToTrace(std::size_t scanNumBegin, std::size_t scanNumEnd) const; /** @brief cumulate spectrum given a scan number range * need the binary file * The intensities are normalized with respect to the frame accumulation time * to leverage computing performance, this function decreases the mz * resolution * * @param mzindex_merge_window width of the mzindex window used to merge all * intensities into a single point. This results in faster computing. * @param scanNumBegin scan number in the frame in the order it lies in binary * file, from 0 to N-1 * @param scanNumEnd scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ virtual Trace cumulateScansToTraceMzDownResolution(std::size_t mzindex_merge_window, std::size_t scanNumBegin, std::size_t scanNumEnd, quint32 &minimum_index, quint32 &maximum_index) const; /** @brief downsize mz resolution to lower the number of real mz computations * * @param mzindex_merge_window width of the mzindex window used to merge all * intensities into a single point. This results in faster computing. * @param rawSpectrum the spectrum to shrink */ std::map & downsizeMzRawMap(std::size_t mzindex_merge_window, std::map &rawSpectrum) const; /** @brief cumulate scan list into a trace into a raw spectrum map * The intensities are NOT normalized with respect to the frame accumulation * time * * @param rawSpectrum simple map of integers to cumulate raw counts * @param scanNumBegin scan number in the frame in the order it lies in binary * file, from 0 to N-1 * @param scanNumEnd scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ virtual void cumulateScansInRawMap(std::map &rawSpectrum, std::size_t scanNumBegin, std::size_t scanNumEnd) const; virtual quint64 cumulateSingleScanIntensities(std::size_t scanNum) const; virtual quint64 cumulateScansIntensities(std::size_t scanNumBegin, std::size_t scanNumEnd) const; /** @brief check that this scan number exists * @param scanNum scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ bool checkScanNum(std::size_t scanNum) const; void setAccumulationTime(double accumulation_time_ms); void setMzCalibration(double T1_frame, double T2_frame, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3, double C4, double T1_ref, double T2_ref, double dC1, double dC2); void setTimsCalibration(int tims_model_type, double C0, double C1, double C2, double C3, double C4, double C5, double C6, double C7, double C8, double C9); void setTime(double time); void setMsMsType(quint8 type); unsigned int getMsLevel() const; double getTime() const; std::size_t getId() const; /** @brief get drift time of a scan number in milliseconds * @param scanNum scan number in the frame in the order it lies in binary * file, from 0 to N-1 * @return time in milliseconds of mobility delay (drift time) * */ double getDriftTime(std::size_t scanNum) const; /** @brief get 1/K0 value of a given scan (mobility value) * @param scanNum scan number in the frame in the order it lies in binary * file, from 0 to N-1 * */ double getOneOverK0Transformation(std::size_t scanNum) const; /** @brief get the scan number from a given 1/Ko mobility value * @param one_over_k0 the mobility value to tranform * @return integer the scan number in the frame in the order it lies in binary * file, from 0 to N-1 */ std::size_t getScanNumFromOneOverK0(double one_over_k0) const; /** @brief get voltage for a given scan number * @param scanNum scan number in the frame in the order it lies in binary * file, from 0 to N-1 * @return double volt measure * */ double getVoltageTransformation(std::size_t scanNum) const; /** @brief transform accumulation of raw scans into a real mass spectrum */ pappso::Trace getTraceFromCumulatedScans( std::map &accumulated_scans) const; /** @brief transform accumulation of raw scans into a real mass spectrum with * a simple centroid on raw integers */ pappso::Trace getTraceFromCumulatedScansBuiltinCentroid( std::map &accumulated_scans) const; /** @brief get the MzCalibration model to compute mz and TOF for this frame */ virtual const MzCalibrationInterfaceSPtr & getMzCalibrationInterfaceSPtr() const final; void setMzCalibrationInterfaceSPtr(MzCalibrationInterfaceSPtr mzCalibration); /** @brief get raw index list for one given scan * index are not TOF nor m/z, just index on digitizer */ virtual std::vector getScanIndexList(std::size_t scanNum) const; /** @brief get raw intensities without transformation from one scan * it needs intensity normalization */ virtual std::vector getScanIntensities(std::size_t scanNum) const; /** @brief get a mobility trace cumulating intensities inside the given mass * index range * @param mz_index_lower_bound raw mass index lower bound * @param mz_index_upper_bound raw mass index upper bound * @param method max or sum intensities */ virtual Trace getIonMobilityTraceByMzIndexRange(std::size_t mz_index_lower_bound, std::size_t mz_index_upper_bound, XicExtractMethod method) const; protected: /** @brief total number of scans contained in this frame */ quint32 m_scanNumber; /** @brief Tims frame database id (the SQL identifier of this frame) * @warning in sqlite, there is another field called TimsId : this is not * that, because it is in fact an offset in bytes in the binary file. * */ std::size_t m_timsId; /** @brief accumulation time in milliseconds */ double m_accumulationTime = 0; quint8 m_msMsType = 0; /** @brief retention time */ double m_time = 0; double m_timsDvStart = 0; // C2 from TimsCalibration double m_timsSlope = 0; // (dv_end - dv_start) / ncycles //C3 from TimsCalibration // C2 from // TimsCalibration // C1 from TimsCalibration double m_timsTtrans = 0; // C4 from TimsCalibration double m_timsNdelay = 0; // C0 from TimsCalibration double m_timsVmin = 0; // C8 from TimsCalibration double m_timsVmax = 0; // C9 from TimsCalibration double m_timsC6 = 0; double m_timsC7 = 0; MzCalibrationInterfaceSPtr msp_mzCalibration = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/000755 001750 001750 00000000000 14533473271 022166 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/httpbutton/000755 001750 001750 00000000000 14533473271 024401 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/httpbutton/httpbutton.cpp000644 001750 001750 00000007527 14526455546 027342 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/httpbutton/httpbutton.cpp * \date 20/04/2021 * \author Olivier Langella * \brief push button to trigger web browser on URL */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "httpbutton.h" #include "../../utils.h" #include #include using namespace pappso; HttpButton::HttpButton(QWidget *parent) : QPushButton(parent) { qDebug(); } pappso::HttpButton::~HttpButton() { } void pappso::HttpButton::mousePressEvent(QMouseEvent *e) { if(!text().isEmpty()) { if(text().startsWith("MOD:")) { QDesktopServices::openUrl(getOlsUrl(this->text())); // qDebug() << getOlsUrl(this->text()); } else if(text().startsWith("PubMed:")) { QDesktopServices::openUrl(getPubMedUrl(this->text())); // qDebug() << getPubMedUrl(this->text()); } else if(text().startsWith("RESID:")) { QDesktopServices::openUrl(getRESIDUrl(this->text())); // qDebug() << getPubMedUrl(this->text()); } else if(text().startsWith("ChEBI:")) { QDesktopServices::openUrl(getChEBIUrl(this->text())); // qDebug() << getPubMedUrl(this->text()); } else if(text().startsWith("Unimod:")) { QDesktopServices::openUrl(getUnimodUrl(this->text())); // qDebug() << getPubMedUrl(this->text()); } else { qDebug() << "unknown" << this->text(); } } QPushButton::mousePressEvent(e); } void pappso::HttpButton::setText(const QString &text) { QPushButton::setText(text); } const QUrl HttpButton::getOlsUrl(QString psimod_accession) { QString iri(QString("http://purl.obolibrary.org/obo/%1") .arg(psimod_accession.replace(":", "_"))); QUrl url( QString("http://www.ebi.ac.uk/ols/ontologies/mod/terms?iri=%1").arg(iri)); return url; } const QUrl HttpButton::getPubMedUrl(QString accession) { // https://pubmed.ncbi.nlm.nih.gov/18688235/ QUrl url(QString("https://pubmed.ncbi.nlm.nih.gov/%1/") .arg(accession.replace("PubMed:", ""))); return url; } const QUrl HttpButton::getRESIDUrl(QString accession) { // https://annotation.dbi.udel.edu/cgi-bin/resid?id=AA0470 QUrl url(QString("https://annotation.dbi.udel.edu/cgi-bin/resid?id=%1") .arg(accession.replace("RESID:", ""))); return url; } const QUrl HttpButton::getChEBIUrl(QString accession) { // ChEBI:37629 // https://www.ebi.ac.uk/chebi/searchId.do?chebiId=37628 QUrl url(QString("https://www.ebi.ac.uk/chebi/searchId.do?chebiId=%1") .arg(accession.replace("ChEBI:", ""))); return url; } const QUrl HttpButton::getUnimodUrl(QString accession) { // Unimod:23 // http://www.unimod.org/modifications_view.php?editid1=23 QUrl url(QString("http://www.unimod.org/modifications_view.php?editid1=%1") .arg(accession.replace("Unimod:", ""))); return url; } libpappsomspp-0.9.20/src/pappsomspp/widget/httpbutton/httpbutton.h000644 001750 001750 00000003447 14346367014 026774 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/httpbutton/httpbutton.h * \date 20/04/2021 * \author Olivier Langella * \brief push button to trigger web browser on URL */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include #include "../../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL HttpButton : public QPushButton { Q_OBJECT public: /** * Default constructor */ explicit HttpButton(QWidget *parent = nullptr); /** * Destructor */ ~HttpButton(); void setText(const QString &text); protected: void mousePressEvent(QMouseEvent *e) override; const QUrl getOlsUrl(QString psimod_accession); const QUrl getPubMedUrl(QString accession); const QUrl getRESIDUrl(QString accession); const QUrl getChEBIUrl(QString accession); const QUrl getUnimodUrl(QString accession); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/massspectrumwidget/000755 001750 001750 00000000000 14533473271 026120 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp000644 001750 001750 00000033256 14526455546 032576 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/spectrumwidget/massspectrumwidget.cpp * \date 22/12/2017 * \author Olivier Langella * \brief plot a sectrum and annotate with peptide */ /******************************************************************************* * Copyright (c) 2017 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "massspectrumwidget.h" #include "../../pappsoexception.h" #include "../../peptide/peptidenaturalisotopelist.h" #include #include using namespace pappso; MassSpectrumWidget::MassSpectrumWidget(QWidget *parent) : GraphicDeviceWidget(parent) { qDebug(); _ms_level = 1; _ion_list = PeptideFragmentIonListBase::getCIDionList(); _custom_plot = nullptr; this->setLayout(new QHBoxLayout(this)); this->layout()->setContentsMargins(0, 0, 0, 0); setVisibleMassDelta(false); qDebug(); } MassSpectrumWidget::~MassSpectrumWidget() { } bool MassSpectrumWidget::savePdf(const QString &fileName, int width, int height) { if(_custom_plot != nullptr) { return _custom_plot->savePdf(fileName, width, height); } else { return false; } } void MassSpectrumWidget::toQPaintDevice(QPaintDevice *device, const QSize &size) { if(_custom_plot != nullptr) { QCPPainter painter; painter.begin(device); _custom_plot->toPainter(&painter, size.width(), size.height()); painter.end(); } } void MassSpectrumWidget::setVisibleMassDelta(bool visible) { qDebug(); if(_custom_plot != nullptr) { if(visible == _is_visible_mass_delta) return; delete _custom_plot; } _is_visible_mass_delta = visible; while(auto item = this->layout()->takeAt(0)) { delete item->widget(); } qDebug(); _custom_plot = new QCPSpectrum(this, visible); this->layout()->addWidget(_custom_plot); qDebug(); _custom_plot->xAxis->setLabel("m/z"); _custom_plot->yAxis->setLabel("intensity"); qDebug(); _custom_plot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); _custom_plot->axisRect()->setRangeDrag(Qt::Horizontal); _custom_plot->axisRect()->setRangeZoom(Qt::Horizontal); qDebug(); // legend->setVisible(false); // legend->setFont(QFont("Helvetica",9)); // set locale to english, so we get english decimal separator: // setLocale(QLocale(QLocale::English, QLocale::UnitedKingdom)); qDebug(); } void MassSpectrumWidget::clearData() { qDebug(); _custom_plot->clearData(); qDebug(); _custom_plot->clearItems(); _custom_plot->setSpectrumP(_spectrum_sp.get()); qDebug(); } void MassSpectrumWidget::setPeptideCharge(unsigned int parent_ion_charge) { _peptide_charge = parent_ion_charge; } void MassSpectrumWidget::setIonList(const std::list &ion_list) { _ion_list = ion_list; } void MassSpectrumWidget::setMsLevel(unsigned int ms_level) { qDebug() << "ms_level=" << ms_level; _ms_level = ms_level; if(_ms_level == 1) { setVisibleMassDelta(false); } else { setVisibleMassDelta(true); } //_precision._precision = precision._precision; } void MassSpectrumWidget::setMs1Precision(PrecisionPtr precision) { qDebug() << "precision->toString()=" << precision->toString(); _p_ms1_precision = precision; //_precision._precision = precision._precision; } void MassSpectrumWidget::setMs2Precision(PrecisionPtr precision) { qDebug() << "precision->toString()=" << precision->toString(); _p_ms2_precision = precision; //_precision._precision = precision._precision; } void MassSpectrumWidget::setMaximumIsotopeNumber(unsigned int max_isotope_number) { _max_isotope_number = max_isotope_number; } void MassSpectrumWidget::setMaximumIsotopeRank(unsigned int max_isotope_rank) { _max_isotope_rank = max_isotope_rank; } void MassSpectrumWidget::peptideAnnotate() { qDebug() << " _max_isotope_number=" << _max_isotope_number; clearData(); _peak_ion_isotope_match_list.clear(); if((_spectrum_sp == nullptr) || (_peptide_sp == nullptr)) { } else { if(_ms_level > 1) { qDebug(); PeptideIsotopeSpectrumMatch psm_match(*(_spectrum_sp.get()), _peptide_sp, _peptide_charge, _p_ms2_precision, _ion_list, _max_isotope_number, _max_isotope_rank); _peak_ion_isotope_match_list = psm_match.getPeakIonIsotopeMatchList(); qDebug() << "_peak_ion_isotope_match_list.size()=" << _peak_ion_isotope_match_list.size(); } else { } computeIsotopeMassList(); } qDebug(); } void MassSpectrumWidget::setPeptideSp(const PeptideSp &peptide_sp) { qDebug(); _peptide_sp = peptide_sp; // clearData(); qDebug(); } void MassSpectrumWidget::setMassSpectrumCstSPtr(const MassSpectrumCstSPtr &spectrum) { qDebug(); _spectrum_sp = spectrum; clearData(); qDebug(); } void MassSpectrumWidget::rescale() { qDebug(); _custom_plot->rescale(); /* if (_p_delta_axis_rect != nullptr) { _p_delta_axis_rect->axis(QCPAxis::AxisType::atLeft)->rescale(); } */ _custom_plot->replot(); qDebug(); } void MassSpectrumWidget::setQualifiedMassSpectrum( const QualifiedMassSpectrum &spectrum) { qDebug() << "spectrum.getPrecursorCharge()=" << spectrum.getPrecursorCharge(); setMsLevel(spectrum.getMsLevel()); setMassSpectrumCstSPtr(spectrum.getMassSpectrumCstSPtr()); qDebug(); } void MassSpectrumWidget::plot() { qDebug() << "_ms_level=" << _ms_level; peptideAnnotate(); if(_ms_level == 1) { qDebug(); if(_spectrum_sp != nullptr) { qDebug(); if(_isotope_mass_list.size() > 0) { qDebug() << "_isotope_mass_list.size()=" << _isotope_mass_list.size(); std::sort(_isotope_mass_list.begin(), _isotope_mass_list.end(), [](const PeptideNaturalIsotopeAverageSp &a, const PeptideNaturalIsotopeAverageSp &b) { return a.get()->getMz() < b.get()->getMz(); }); if(_isotope_mass_list.size() > 0) { PeptideNaturalIsotopeAverageSp precursor_peptide = _isotope_mass_list.at(0); qDebug() << "precursor_peptide.get()->getMz()=" << precursor_peptide.get()->getMz(); MzRange precursor_mass(precursor_peptide.get()->getMz(), _p_ms1_precision); DataPoint monoisotope_peak; monoisotope_peak.y = 0; for(const DataPoint &peak : *(_spectrum_sp.get())) { if(precursor_mass.contains(peak.x)) { if(peak.y > monoisotope_peak.y) { qDebug() << "SpectrumWidget::plot " "(peak.intensity > " "monoisotope_peak.intensity) "; monoisotope_peak = peak; } } } if(monoisotope_peak.y > 0) { qDebug() << "addMs1IsotopePattern"; _custom_plot->addMs1IsotopePattern(_isotope_mass_list, monoisotope_peak.y); } } } } } else { qDebug() << "_peak_ion_isotope_match_list.size()=" << _peak_ion_isotope_match_list.size(); _peak_ion_isotope_match_list.sort( [](const PeakIonIsotopeMatch &a, const PeakIonIsotopeMatch &b) { return a.getPeak().y > b.getPeak().y; }); unsigned int i = 0; for(const PeakIonIsotopeMatch &peak_ion_match : _peak_ion_isotope_match_list) { _custom_plot->addPeakIonIsotopeMatch(peak_ion_match); _custom_plot->addMassDelta(peak_ion_match); //_p_delta_graph->addData(peak_ion_match.getPeak().x, // peak_ion_match.getPeak().y); if(i < _tag_nmost_intense) { QCPItemText *text_label = new QCPItemText(_custom_plot); text_label->setVisible(true); //_custom_plot->addItem(text_label); text_label->setPositionAlignment(Qt::AlignBottom | Qt::AlignHCenter); text_label->position->setType(QCPItemPosition::ptPlotCoords); text_label->position->setCoords( peak_ion_match.getPeak().x, peak_ion_match.getPeak() .y); // place position at center/top of axis rect text_label->setFont(QFont(font().family(), 8)); text_label->setText( peak_ion_match.getPeptideFragmentIonSp() .get() ->getCompletePeptideIonName(peak_ion_match.getCharge())); // text_label->setPen(QPen(PeptideFragmentIon::getPeptideIonColor(peak_ion_match.getPeptideIonType()), // 1)); // show black border around text text_label->setColor( QColor(PeptideFragmentIon::getPeptideIonColor( peak_ion_match.getPeptideIonType()))); } i++; } } _custom_plot->replot(); qDebug(); } void MassSpectrumWidget::mzChangeEvent(pappso_double mz) const { emit mzChanged(mz); } void MassSpectrumWidget::peakChangeEvent(const DataPoint *p_peak_match) { qDebug() << "p_peak_match=" << p_peak_match; if(_p_mouse_peak != p_peak_match) { _p_mouse_peak = p_peak_match; DataPointCstSPtr peak_shp; // emit peakChanged(peak_shp); if(_p_mouse_peak != nullptr) { qDebug() << "_p_mouse_peak->x=" << _p_mouse_peak->x; peak_shp = _p_mouse_peak->makeDataPointCstSPtr(); emit peakChanged(peak_shp); // try to find matched ion (if it exists) bool found = false; for(const PeakIonIsotopeMatch &peak_ion_match : _peak_ion_isotope_match_list) { if(peak_ion_match.getPeak().x == _p_mouse_peak->x) { // found emit ionChanged(std::make_shared( PeakIonIsotopeMatch(peak_ion_match))); found = true; } } if(!found) { emit ionChanged(std::shared_ptr()); } } else { qDebug() << "no peak"; emit peakChanged(peak_shp); } } } void MassSpectrumWidget::computeIsotopeMassList() { qDebug() << "_p_ms1_precision->toString()=" << _p_ms1_precision->toString(); _isotope_mass_list.resize(0); // compute isotope masses : if(_peptide_sp != nullptr) { pappso::PeptideNaturalIsotopeList isotope_list(_peptide_sp); std::map map_isotope_number = isotope_list.getIntensityRatioPerIsotopeNumber(); for(unsigned int i = 0; i < map_isotope_number.size(); i++) { unsigned int asked_rank = 0; unsigned int given_rank = 0; bool more_rank = true; while(more_rank) { asked_rank++; pappso::PeptideNaturalIsotopeAverage isotopeAverageMono( isotope_list, asked_rank, i, _peptide_charge, _p_ms1_precision); given_rank = isotopeAverageMono.getIsotopeRank(); if(given_rank < asked_rank) { more_rank = false; } else if(isotopeAverageMono.getIntensityRatio() == 0) { more_rank = false; } else { // isotopeAverageMono.makePeptideNaturalIsotopeAverageSp(); _isotope_mass_list.push_back( isotopeAverageMono.makePeptideNaturalIsotopeAverageSp()); } } } } qDebug() << "_isotope_mass_list.size()=" << _isotope_mass_list.size(); } void pappso::MassSpectrumWidget::highlightPrecursorPeaks() { if(_ms_level > 1) { pappso_double precursor_mz_1 = _peptide_sp->getMz(1); _custom_plot->highlightPrecursorPeaks( precursor_mz_1, 1, _p_ms2_precision); pappso_double precursor_mz_charge = _peptide_sp->getMz(_peptide_charge); _custom_plot->highlightPrecursorPeaks( precursor_mz_charge, _peptide_charge, _p_ms2_precision); } } libpappsomspp-0.9.20/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h000644 001750 001750 00000007524 14346367014 032232 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/spectrumwidget/massspectrumwidget.h * \date 22/12/2017 * \author Olivier Langella * \brief plot a sectrum and annotate with peptide */ /******************************************************************************* * Copyright (c) 2017 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../../massspectrum/qualifiedmassspectrum.h" #include "../../peptide/peptide.h" #include "../../peptide/peptidefragmentionlistbase.h" #include "../../peptide/peptidenaturalisotopeaverage.h" #include "../../psm/peptideisotopespectrummatch.h" #include "../graphicdevicewidget.h" #include "qcpspectrum.h" namespace pappso { class PMSPP_LIB_DECL MassSpectrumWidget : public GraphicDeviceWidget { Q_OBJECT public: MassSpectrumWidget(QWidget *parent = 0); ~MassSpectrumWidget(); void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum); void setMsLevel(unsigned int ms_level); void setMassSpectrumCstSPtr(const MassSpectrumCstSPtr &spectrum); void setPeptideSp(const PeptideSp &peptide_sp); void plot(); void rescale(); void setPeptideCharge(unsigned int parent_ion_charge); void setMaximumIsotopeNumber(unsigned int max_isotope_number); void setMaximumIsotopeRank(unsigned int max_isotope_rank); // void setIsolationWindow(PrecisionPtr precision); void setIonList(const std::list &ion_list); void setMs1Precision(PrecisionPtr precision); void setMs2Precision(PrecisionPtr precision); bool savePdf(const QString &fileName, int width = 0, int height = 0); void toQPaintDevice(QPaintDevice *device, const QSize &size) override; void highlightPrecursorPeaks(); // void setIsotopeMassList(std::vector // & isotope_mass_list); signals: void mzChanged(double mz) const; void peakChanged(pappso::DataPointCstSPtr peak_match) const; void ionChanged(pappso::PeakIonIsotopeMatchCstSPtr ion) const; protected: friend class QCPSpectrum; void mzChangeEvent(pappso_double mz) const; void peakChangeEvent(const DataPoint *p_peak_match); private: void peptideAnnotate(); void setVisibleMassDelta(bool visible); void clearData(); void computeIsotopeMassList(); private: unsigned int _tag_nmost_intense = 10; unsigned int _max_isotope_number = 0; unsigned int _max_isotope_rank = 1; MassSpectrumCstSPtr _spectrum_sp; PrecisionPtr _p_ms1_precision = PrecisionFactory::getDaltonInstance(0.1); PrecisionPtr _p_ms2_precision = PrecisionFactory::getDaltonInstance(0.5); unsigned int _peptide_charge = 3; unsigned int _ms_level; PeptideSp _peptide_sp; std::list _ion_list; std::list _peak_ion_isotope_match_list; /** @brief list of isotope precursors */ std::vector _isotope_mass_list; QCPSpectrum *_custom_plot = nullptr; bool _is_visible_mass_delta; const DataPoint *_p_mouse_peak = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp000644 001750 001750 00000036430 14526455546 031207 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/spectrumwidget/qcpspectrum.cpp * \date 31/12/2017 * \author Olivier Langella * \brief Custom plot derivative to plot a spectrum */ /******************************************************************************* * Copyright (c) 2017 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "qcpspectrum.h" #include "massspectrumwidget.h" using namespace pappso; QCPSpectrum::QCPSpectrum(MassSpectrumWidget *parent, bool visible) : QCustomPlot(parent) { qDebug() << "QCPSpectrum::QCPSpectrum begin"; setFocusPolicy(Qt::ClickFocus); _parent = parent; _mz_range.lower = 0; _mz_range.upper = 0; _intensity_range.lower = 0; _intensity_range.upper = 0; _mass_delta_range.upper = -100; _mass_delta_range.lower = 100; // make axis rects' left side line up: QCPMarginGroup *group = new QCPMarginGroup(this); this->axisRect()->setMarginGroup(QCP::msLeft | QCP::msRight, group); _p_peak_bars = new QCPBars(xAxis, yAxis); _p_peak_bars->setWidthType(QCPBars::WidthType::wtAbsolute); _p_peak_bars->setWidth(_bar_width); _p_peak_bars->setPen(QPen(Qt::black, 1)); _p_peak_bars->setVisible(true); _p_peak_bars_isotope = new QCPBars(xAxis, yAxis); _p_peak_bars_isotope->setWidthType(QCPBars::WidthType::wtAbsolute); _p_peak_bars_isotope->setWidth(_bar_width * 10); QColor red(Qt::red); red.setAlpha(100); _p_peak_bars_isotope->setPen(QPen(red, 1)); _p_peak_bars_isotope->setBrush(QBrush(red)); mp_peak_bars_precursor = new QCPBars(xAxis, yAxis); mp_peak_bars_precursor->setWidthType(QCPBars::WidthType::wtAbsolute); mp_peak_bars_precursor->setWidth(_bar_width * 1.5); mp_peak_bars_precursor->setPen(QPen(Qt::cyan, 1)); mp_peak_bars_precursor->setVisible(true); connect(this->xAxis, SIGNAL(rangeChanged(QCPRange)), this, SLOT(setMzRangeChanged(QCPRange))); std::vector all_ion_list = { PeptideIon::b, PeptideIon::bstar, PeptideIon::bo, PeptideIon::a, PeptideIon::astar, PeptideIon::ao, PeptideIon::bp, PeptideIon::c, PeptideIon::y, ///< Cter amino ions PeptideIon::ystar, ///< Cter amino ions + NH3 loss PeptideIon::yo, ///< Cter amino ions + H2O loss PeptideIon::z, ///< Cter carbocations PeptideIon::yp, PeptideIon::x}; qDebug() << "SpectrumWidget::setVisibleMassDelta 5"; for(PeptideIon ion_type : all_ion_list) { QCPBars *p_peak_bars = new QCPBars(xAxis, yAxis); p_peak_bars->setWidthType(QCPBars::WidthType::wtAbsolute); p_peak_bars->setWidth(_bar_width); p_peak_bars->setPen( QPen(PeptideFragmentIon::getPeptideIonColor(ion_type), 1)); p_peak_bars->setVisible(true); _map_ion_type_bars.insert( std::pair(ion_type, p_peak_bars)); } qDebug() << "SpectrumWidget::setVisibleMassDelta visible ?"; setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); if(visible) { _p_delta_axis_rect = new QCPAxisRect(this); this->plotLayout()->addElement(1, 0, _p_delta_axis_rect); _p_delta_axis_rect->axis(QCPAxis::atBottom)->setLayer("axes"); _p_delta_axis_rect->axis(QCPAxis::atBottom)->grid()->setLayer("grid"); _p_delta_axis_rect->axis(QCPAxis::atLeft)->setLabel("mass delta"); // bring bottom and main axis rect closer together: this->plotLayout()->setRowSpacing(0); _p_delta_axis_rect->setAutoMargins(QCP::msLeft | QCP::msRight | QCP::msBottom); _p_delta_axis_rect->setMargins(QMargins(0, 0, 0, 0)); this->setAutoAddPlottableToLegend(false); _p_delta_graph = new QCPGraph(_p_delta_axis_rect->axis(QCPAxis::atBottom), _p_delta_axis_rect->axis(QCPAxis::atLeft)); _p_delta_graph->setLineStyle(QCPGraph::LineStyle::lsNone); _p_delta_graph->setScatterStyle( QCPScatterStyle(QCPScatterStyle::ssDisc, 4.0)); _p_delta_axis_rect->setMarginGroup(QCP::msLeft | QCP::msRight, group); _p_delta_axis_rect->setMaximumSize(QSize(QWIDGETSIZE_MAX, 100)); //_p_delta_axis_rect->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom ); _p_delta_axis_rect->setRangeDrag(Qt::Horizontal | Qt::Vertical); _p_delta_axis_rect->setRangeZoom(Qt::Vertical); connect(_p_delta_axis_rect->axis(QCPAxis::atBottom), SIGNAL(rangeChanged(QCPRange)), this, SLOT(setMzRangeChanged(QCPRange))); } else { _p_delta_axis_rect = nullptr; } qDebug() << "QCPSpectrum::QCPSpectrum end"; } QCPSpectrum::~QCPSpectrum() { } void QCPSpectrum::setSpectrumP(const MassSpectrum *spectrum) { _mass_delta_range.upper = -100; _mass_delta_range.lower = 100; // generate basic peaks: _p_spectrum = spectrum; if((spectrum != nullptr) && (spectrum->size() != 0)) { // throw PappsoException(QObject::tr("Error in // SpectrumWidget::setSpectrumSp :\n_spectrum_sp.get() == nullptr")); //} _p_peak_bars->setVisible(true); for(const DataPoint &peak : *spectrum) { _p_peak_bars->addData(peak.x, peak.y); } _mz_range.lower = spectrum->front().x - 1; _mz_range.upper = spectrum->back().x + 1; _intensity_range.lower = 0; _intensity_range.upper = spectrum->maxY(); } else { _mz_range.lower = 0; _mz_range.upper = 0; _intensity_range.lower = 0; _intensity_range.upper = 0; } } void QCPSpectrum::rescale() { _p_peak_bars->setVisible(true); //_p_peak_bars->rescaleAxes(false); // this->rescaleAxes(false); if(_mz_range.lower < 0) { _mz_range.lower = 0; } if(_mz_range.upper < 0) { _mz_range.upper = 1000; } else { xAxis->setRange(_mz_range); yAxis->setRange(_intensity_range); if(_p_delta_axis_rect != nullptr) { _p_delta_axis_rect->axis(QCPAxis::AxisType::atLeft) ->setRange(_mass_delta_range); } } } void QCPSpectrum::setMzRangeChanged(QCPRange range) { qDebug() << "QCPSpectrum::setMzRangeChanged _mz_range.lower" << _mz_range.lower; if(_mz_range.lower > 0) { if(range.lower < _mz_range.lower) { range.lower = _mz_range.lower; } if(range.upper > _mz_range.upper) { range.upper = _mz_range.upper; } } xAxis->setRange(range); if(_p_delta_axis_rect != nullptr) { _p_delta_axis_rect->axis(QCPAxis::atBottom)->setRange(range); } } void QCPSpectrum::clearData() { qDebug(); _p_peak_bars->setData(QVector(), QVector()); _p_peak_bars->data().clear(); qDebug(); _p_peak_bars_isotope->setData(QVector(), QVector()); _p_peak_bars_isotope->data().clear(); qDebug(); mp_peak_bars_precursor->setData(QVector(), QVector()); mp_peak_bars_precursor->data().clear(); for(std::pair pair_ion_bar : _map_ion_type_bars) { pair_ion_bar.second->setData(QVector(), QVector()); pair_ion_bar.second->data().clear(); } // this->clearPlottables(); // this->clearItems(); if(_p_delta_axis_rect != nullptr) { _p_delta_graph->setData(QVector(), QVector()); _p_delta_graph->data().clear(); } _mz_range.lower = 0; _mz_range.upper = 0; _mass_delta_range.upper = -100; _mass_delta_range.lower = 100; qDebug(); } void QCPSpectrum::keyPressEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Control) { _control_key = true; } qDebug() << "QCPSpectrum::keyPressEvent end"; } void QCPSpectrum::keyReleaseEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Control) { _control_key = false; } qDebug() << "QCPSpectrum::keyReleaseEvent end"; } void QCPSpectrum::mousePressEvent(QMouseEvent *event) { /*qDebug() << "QCPSpectrum::mousePressEvent begin " << xAxis->pixelToCoord(event->x()) << " " << yAxis->pixelToCoord(event->y());*/ _click = true; #if QT_VERSION < 0x060000 _old_x = event->x(); _old_y = yAxis->pixelToCoord(event->y()); #else _old_x = event->position().x(); _old_y = yAxis->pixelToCoord(event->position().y()); #endif if(_old_y < 0) _old_y = 0; /* qDebug() << "QCPSpectrum::mousePressEvent end";*/ } void QCPSpectrum::mouseReleaseEvent(QMouseEvent *event [[maybe_unused]]) { /*qDebug() << "QCPSpectrum::mouseReleaseEvent begin " << xAxis->pixelToCoord(event->x()) << " " << yAxis->pixelToCoord(event->y());*/ _click = false; // qDebug() << "QCPSpectrum::mouseReleaseEvent end"; } void QCPSpectrum::mouseMoveEvent(QMouseEvent *event) { #if QT_VERSION < 0x060000 pappso::pappso_double x = xAxis->pixelToCoord(event->x()); #else pappso::pappso_double x = xAxis->pixelToCoord(event->position().x()); #endif if(_click) { /* qDebug() << "QCPSpectrum::mouseMoveEvent begin " << xAxis->pixelToCoord(event->x()) << " " << yAxis->pixelToCoord(event->y());*/ #if QT_VERSION < 0x060000 pappso::pappso_double y = yAxis->pixelToCoord(event->y()); #else pappso::pappso_double y = yAxis->pixelToCoord(event->position().y()); #endif if(y < 0) { y = 0; } if(_control_key) { if(y > 0) { this->yAxis->scaleRange(_old_y / y, 0); } } else { #if QT_VERSION < 0x060000 this->xAxis->moveRange(xAxis->pixelToCoord(_old_x) - xAxis->pixelToCoord(event->x())); #else this->xAxis->moveRange(xAxis->pixelToCoord(_old_x) - xAxis->pixelToCoord(event->position().x())); #endif } #if QT_VERSION < 0x060000 _old_x = event->x(); #else _old_x = event->position().x(); #endif _old_y = y; replot(); // qDebug() << "QCPSpectrum::mouseMoveEvent end"; } else { if(_p_spectrum != nullptr) { pappso::pappso_double mouse_mz_range = xAxis->pixelToCoord(10) - xAxis->pixelToCoord(8); getMostIntensePeakBetween(x, mouse_mz_range); _parent->mzChangeEvent(x); } } } void QCPSpectrum::getNearestPeakBetween(pappso_double mz, pappso_double mouse_mz_range) const { /*qDebug() << "QCPSpectrum::getNearestPeakBetween begin " << mz << " " << mouse_mz_range;*/ const DataPoint *p_peak_match; p_peak_match = nullptr; pappso_double min = mz - mouse_mz_range; pappso_double max = mz + mouse_mz_range; for(const DataPoint &peak : *_p_spectrum) { if((peak.x > min) && (peak.x < max)) { if(p_peak_match == nullptr) { p_peak_match = &peak; } else { if(fabs(mz - peak.x) < fabs(mz - p_peak_match->x)) { p_peak_match = &peak; } } } } _parent->peakChangeEvent(p_peak_match); // qDebug() << "QCPSpectrum::getNearestPeakBetween end"; } void QCPSpectrum::getMostIntensePeakBetween(pappso_double mz, pappso_double mouse_mz_range) const { /*qDebug() << "QCPSpectrum::getNearestPeakBetween begin " << mz << " " << mouse_mz_range;*/ const DataPoint *p_peak_match; p_peak_match = nullptr; pappso_double min = mz - mouse_mz_range; pappso_double max = mz + mouse_mz_range; for(const DataPoint &peak : *_p_spectrum) { if((peak.x > min) && (peak.x < max)) { if(p_peak_match == nullptr) { p_peak_match = &peak; } else { if(p_peak_match->y < peak.y) { p_peak_match = &peak; } } } } _parent->peakChangeEvent(p_peak_match); // qDebug() << "QCPSpectrum::getNearestPeakBetween end"; } void QCPSpectrum::addMassDelta(const PeakIonIsotopeMatch &peak_ion_match) { if(_p_delta_axis_rect != nullptr) { // observed - theoretical double diff = peak_ion_match.getPeak().x - peak_ion_match.getPeptideNaturalIsotopeAverageSp().get()->getMz(); _p_delta_graph->addData(peak_ion_match.getPeak().x, diff); if(diff > _mass_delta_range.upper) _mass_delta_range.upper = diff; if(diff < _mass_delta_range.lower) _mass_delta_range.lower = diff; _p_delta_axis_rect->axis(QCPAxis::AxisType::atLeft) ->setRange(_mass_delta_range); } } void QCPSpectrum::addPeakIonIsotopeMatch(const PeakIonIsotopeMatch &peak_ion_match) { _map_ion_type_bars[peak_ion_match.getPeptideIonType()]->addData( peak_ion_match.getPeak().x, peak_ion_match.getPeak().y); } void QCPSpectrum::addMs1IsotopePattern( const std::vector &isotope_mass_list, pappso_double intensity) { pappso_double total_intensity = ((pappso_double)1.0 / isotope_mass_list.at(0).get()->getIntensityRatio()) * intensity; for(PeptideNaturalIsotopeAverageSp peptide : isotope_mass_list) { _p_peak_bars_isotope->addData(peptide.get()->getMz(), peptide.get()->getIntensityRatio() * total_intensity); } } void pappso::QCPSpectrum::highlightPrecursorPeaks(double precursor_mz, int charge, PrecisionPtr ms2_precision) { MzRange range(precursor_mz, ms2_precision); double precursor_mz_c13 = precursor_mz + (DIFFC12C13 / charge); MzRange range_c13(precursor_mz_c13, ms2_precision); for(const DataPoint &peak : *_p_spectrum) { if(((peak.x > range.lower()) && (peak.x < range.upper())) || ((peak.x > range_c13.lower()) && (peak.x < range_c13.upper()))) { mp_peak_bars_precursor->addData(peak.x, peak.y); QCPItemText *text_label = new QCPItemText(this); text_label->setVisible(true); text_label->setPositionAlignment(Qt::AlignBottom | Qt::AlignHCenter); text_label->position->setType(QCPItemPosition::ptPlotCoords); text_label->position->setCoords(peak.x, peak.y); // place position at center/top of axis rect text_label->setFont(QFont(font().family(), 8)); text_label->setText("precursor"); text_label->setColor(Qt::cyan); } } } libpappsomspp-0.9.20/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h000644 001750 001750 00000006360 14346367014 030643 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/spectrumwidget/qcpspectrum.h * \date 31/12/2017 * \author Olivier Langella * \brief Custom plot derivative to plot a spectrum */ /******************************************************************************* * Copyright (c) 2017 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../../psm/peakionisotopematch.h" #include "../../types.h" namespace pappso { class MassSpectrumWidget; class QCPSpectrum : public QCustomPlot { Q_OBJECT protected: friend class MassSpectrumWidget; QCPSpectrum(MassSpectrumWidget *parent, bool visible); ~QCPSpectrum(); protected: void clearData(); void rescale(); void setSpectrumP(const MassSpectrum *spectrum); void addMassDelta(const PeakIonIsotopeMatch &peak_ion_match); void addMs1IsotopePattern(const std::vector &isotope_mass_list, pappso_double intensity); void addPeakIonIsotopeMatch(const PeakIonIsotopeMatch &peak_ion_match); void highlightPrecursorPeaks(double precursor_mz, int charge, PrecisionPtr ms2_precision); virtual void mouseMoveEvent(QMouseEvent *event) override; virtual void mousePressEvent(QMouseEvent *event) override; virtual void mouseReleaseEvent(QMouseEvent *event) override; virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; private: void getNearestPeakBetween(pappso_double mz, pappso_double mouse_mz_range) const; void getMostIntensePeakBetween(pappso_double mz, pappso_double mouse_mz_range) const; private: Q_SLOT void setMzRangeChanged(QCPRange range); private: MassSpectrumWidget *_parent; const MassSpectrum *_p_spectrum = nullptr; QCPRange _mz_range; QCPRange _intensity_range; QCPRange _mass_delta_range; QCPBars *_p_peak_bars; QCPBars *_p_peak_bars_isotope; QCPBars *mp_peak_bars_precursor; std::map _map_ion_type_bars; QCPAxisRect *_p_delta_axis_rect; QCPGraph *_p_delta_graph; double _bar_width = 0.5; bool _click = false; bool _control_key = false; pappso::pappso_double _old_x; pappso::pappso_double _old_y; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/obo/000755 001750 001750 00000000000 14533473271 022745 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obochooserwidget/000755 001750 001750 00000000000 14533473271 026313 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp000644 001750 001750 00000004633 14526455546 032402 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp * \date 19/04/2021 * \author Olivier Langella * \brief display obo term list and choose items */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "obochooserwidget.h" #include "ui_uiobochooserwidget.h" #include "../../../exception/exceptionnotfound.h" #include using namespace pappso; OboChooserWidget::OboChooserWidget(QWidget *parent) : QWidget(parent), ui(new Ui::OboChooserWidgetForm) { qDebug(); ui->setupUi(this); connect(ui->oboListWidget, &OboListWidget::oboTermChanged, ui->oboTermForm, &OboTermForm::displayOboTerm); } pappso::OboChooserWidget::~OboChooserWidget() { delete ui; } bool pappso::OboChooserWidget::isOboTermSelected() const { return ui->oboTermForm->isOboTerm(); } const pappso::OboPsiModTerm & pappso::OboChooserWidget::getOboPsiModTermSelected() const { if(ui->oboTermForm->isOboTerm()) { } else { throw pappso::ExceptionNotFound(tr("OBO term not available")); } return ui->oboTermForm->getOboPsiModTerm(); } void pappso::OboChooserWidget::setMzTarget(double target_mz) { qDebug(); ui->oboListWidget->filterMzPrecision(target_mz, ui->oboListWidget->getPrecisionPtr()); } void pappso::OboChooserWidget::setPrecision(pappso::PrecisionPtr precision) { ui->oboListWidget->filterMzPrecision(ui->oboListWidget->getMzTarget(), precision); } libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.h000644 001750 001750 00000004103 14346367014 032027 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obochooserwidget/obochooserwidget.h * \date 19/04/2021 * \author Olivier Langella * \brief display obo term list and choose items */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "../../../exportinmportconfig.h" #include "../../../obo/obopsimodterm.h" #include "../../../precision.h" namespace Ui { class OboChooserWidgetForm; } namespace pappso { class PMSPP_LIB_DECL OboChooserWidget : public QWidget { Q_OBJECT public: /** * Default constructor */ explicit OboChooserWidget(QWidget *parent = nullptr); /** * Destructor */ ~OboChooserWidget(); /** @brief tells if an OBO term has been selected */ bool isOboTermSelected() const; /** @brief get the selected obo term or an exception */ const OboPsiModTerm &getOboPsiModTermSelected() const; /** @brief set mz target to filter among possible modifications */ void setMzTarget(double target_mz); /** @brief set mz precision to filter among possible modifications */ void setPrecision(PrecisionPtr precision); private: Ui::OboChooserWidgetForm *ui; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obochooserwidget/uiobochooserwidget.ui000644 001750 001750 00000005775 14346367014 032573 0ustar00rusconirusconi000000 000000 OboChooserWidgetForm 0 0 761 458 Form 0 0 0 0 0 Qt::Horizontal 0 0 0 0 0 0 0 0 Qt::Vertical 20 40 pappso::OboListWidget QWidget
obo/obolistwidget/obolistwidget.h
1 onOboTermChanged(pappso::OboPsiModTerm)
pappso::OboTermForm QWidget
obo/obotermform/obotermform.h
1 displayOboTerm(pappso::OboPsiModTerm)
libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/000755 001750 001750 00000000000 14533473271 025624 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp000644 001750 001750 00000007131 14526455546 031035 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obolistwidget/obolistmodel.h * \date 19/04/2021 * \author Olivier Langella * \brief MVC model of OBO term list */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "obolistmodel.h" #include "../../../obo/obopsimod.h" #include "obolistwidget.h" #include "../../../exception/exceptionnotfound.h" #include #include using namespace pappso; OboListModel::OboListModel(QObject *parent) : QStringListModel(parent) { } OboListModel::~OboListModel() { } pappso::OboListModel::OboPsiModHandler::OboPsiModHandler( pappso::OboListModel *parent) { mp_parent = parent; } pappso::OboListModel::OboPsiModHandler::~OboPsiModHandler() { } void pappso::OboListModel::OboPsiModHandler::setOboPsiModTerm( const pappso::OboPsiModTerm &term) { mp_parent->m_oboPsiModTermList.push_back(term); } void OboListModel::loadPsiMod() { OboPsiModHandler handler(this); OboPsiMod reader(handler); qDebug() << m_oboPsiModTermList.size(); } QVariant pappso::OboListModel::data(const QModelIndex &index, int role) const { // generate a log message when this method gets called std::size_t row = index.row(); // int col = index.column(); // qDebug() << QString("row %1, col%2, role %3") // .arg(row).arg(col).arg(role); if(row < m_oboPsiModTermList.size()) { switch(role) { case Qt::CheckStateRole: break; case Qt::BackgroundRole: // return QVariant(QColor("grey")); break; case Qt::SizeHintRole: // qDebug() << "ProteinTableModel::headerData " << // ProteinTableModel::getColumnWidth(section); // return QSize(PeptideTableModel::getColumnWidth(col), 30); break; case Qt::ToolTipRole: break; case Qt::DisplayRole: return QVariant(QString("%1 %2 %3") .arg(m_oboPsiModTermList[row].m_accession) .arg(m_oboPsiModTermList[row].m_diffMono) .arg(m_oboPsiModTermList[row].m_name)); break; case Qt::UserRole: QVariant value; value.setValue(m_oboPsiModTermList[row]); return value; break; } } return QVariant(); } int pappso::OboListModel::rowCount(const QModelIndex &parent [[maybe_unused]]) const { return (int)m_oboPsiModTermList.size(); } const pappso::OboPsiModTerm & pappso::OboListModel::getOboPsiModTerm(int row) const { if(row < (int)m_oboPsiModTermList.size()) { return m_oboPsiModTermList[row]; } else { throw pappso::ExceptionNotFound(tr("OBO term not found")); } } libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h000644 001750 001750 00000004242 14346367014 030472 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obolistwidget/obolistmodel.h * \date 19/04/2021 * \author Olivier Langella * \brief MVC model of OBO term list */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "../../../exportinmportconfig.h" #include "../../../obo/obopsimodterm.h" #include "../../../obo/obopsimodhandlerinterface.h" #include namespace pappso { /** * @todo write docs */ class PMSPP_LIB_DECL OboListModel : public QStringListModel { public: /** * Default constructor */ OboListModel(QObject *parent = nullptr); /** * Destructor */ ~OboListModel(); void loadPsiMod(); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override; const OboPsiModTerm &getOboPsiModTerm(int row) const; protected: class OboPsiModHandler : public OboPsiModHandlerInterface { public: OboPsiModHandler(OboListModel *parent); virtual ~OboPsiModHandler(); void setOboPsiModTerm(const OboPsiModTerm &term) override; private: pappso::OboListModel *mp_parent; }; std::vector m_oboPsiModTermList; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.cpp000644 001750 001750 00000005671 14526455546 032146 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obolistwidget/obolistproxymodel.cpp * \date 19/04/2021 * \author Olivier Langella * \brief MVC proxy model of OBO term list */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "obolistproxymodel.h" #include "../../../obo/obopsimod.h" #include "../../../mzrange.h" #include using namespace pappso; OboListProxyModel::OboListProxyModel(OboListModel *source_model, QObject *parent) : QSortFilterProxyModel(parent) { setFilterRole(Qt::DisplayRole); mp_sourceModel = source_model; } OboListProxyModel::~OboListProxyModel() { } bool pappso::OboListProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const { // qDebug(); QVariant leftData = sourceModel()->data(source_left, Qt::UserRole); QVariant rightData = sourceModel()->data(source_right, Qt::UserRole); return leftData.value().m_diffMono < rightData.value().m_diffMono; } void pappso::OboListProxyModel::filterMzPrecision(double target_mz, pappso::PrecisionPtr precision) { m_precisionPtr = precision; m_mzTarget = target_mz; invalidateFilter(); } bool pappso::OboListProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent [[maybe_unused]]) const { // qDebug(); if(m_precisionPtr != nullptr) { MzRange range(m_mzTarget, m_precisionPtr); OboPsiModTerm term = mp_sourceModel->getOboPsiModTerm(source_row); /* qDebug() << source_row << " " << source_parent.row() << " " << range.toString() << " " << term.m_diffMono << " " << term.m_accession; */ if(range.contains(term.m_diffMono)) { // qDebug(); } else { // qDebug() << "false"; return false; } } return true; } libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h000644 001750 001750 00000003710 14346367014 031573 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h * \date 19/04/2021 * \author Olivier Langella * \brief MVC proxy model of OBO term list */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "obolistwidget.h" #include "obolistmodel.h" namespace pappso { /** * @todo write docs */ class OboListProxyModel : public QSortFilterProxyModel { public: /** * Default constructor */ OboListProxyModel(OboListModel *source_model, QObject *parent = nullptr); /** * Destructor */ ~OboListProxyModel(); void filterMzPrecision(double target_mz, PrecisionPtr precision); protected: bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override; bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; private: PrecisionPtr m_precisionPtr = nullptr; double m_mzTarget = 0; OboListModel *mp_sourceModel; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp000644 001750 001750 00000010463 14526455546 031222 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp * \date 17/04/2021 * \author Olivier Langella * \brief handles a list of obo term, select and click */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "obolistwidget.h" #include "ui_uiobolistwidget.h" #include #include "obolistproxymodel.h" #include "../../../mzrange.h" using namespace pappso; OboListWidget::OboListWidget(QWidget *parent) : QWidget(parent), ui(new Ui::OboListWidgetForm) { qDebug(); ui->setupUi(this); mpa_oboListModel = new OboListModel(this); mpa_oboListModel->loadPsiMod(); mpa_oboListProxyModel = new OboListProxyModel(mpa_oboListModel, this); mpa_oboListProxyModel->setSourceModel(mpa_oboListModel); // mpa_oboListProxyModel->setSortRole(Qt::UserRole); ui->oboTermListView->setModel(mpa_oboListProxyModel); mpa_oboListProxyModel->sort(Qt::AscendingOrder); connect(ui->oboTermListView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &OboListWidget::onSelectionChanged); } OboListWidget::~OboListWidget() { delete ui; if(mpa_oboListProxyModel != nullptr) { delete mpa_oboListProxyModel; } if(mpa_oboListModel != nullptr) { delete mpa_oboListModel; } } void pappso::OboListWidget::onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected [[maybe_unused]]) { QModelIndexList index_list = mpa_oboListProxyModel->mapSelectionToSource(selected).indexes(); if(index_list.size() > 0) { QModelIndex index = index_list.first(); OboPsiModTerm term = mpa_oboListModel->data(index, Qt::UserRole).value(); qDebug() << term.m_accession; emit oboTermChanged(term); } } void pappso::OboListWidget::filterMzPrecision(double target_mz, pappso::PrecisionPtr precision) { qDebug(); mpa_oboListProxyModel->filterMzPrecision(target_mz, precision); if(precision == nullptr) { ui->massFilterGroupBox->setChecked(false); ui->mzSpinBox->setValue(target_mz); } else { ui->massFilterGroupBox->setChecked(true); ui->precisionWidget->setPrecision(precision); ui->mzSpinBox->setValue(target_mz); } } void pappso::OboListWidget::onFilterChanged() { qDebug(); if(ui->massFilterGroupBox->isChecked()) { mpa_oboListProxyModel->filterMzPrecision( ui->mzSpinBox->value(), ui->precisionWidget->getPrecision()); } else { mpa_oboListProxyModel->filterMzPrecision(0, nullptr); } } void pappso::OboListWidget::onFilterChanged(double value [[maybe_unused]]) { qDebug(); if(ui->massFilterGroupBox->isChecked()) { mpa_oboListProxyModel->filterMzPrecision( ui->mzSpinBox->value(), ui->precisionWidget->getPrecision()); } else { mpa_oboListProxyModel->filterMzPrecision(0, nullptr); } } void pappso::OboListWidget::onFilterChanged(pappso::PrecisionPtr precision [[maybe_unused]]) { onFilterChanged(); } double pappso::OboListWidget::getMzTarget() const { return ui->mzSpinBox->value(); } pappso::PrecisionPtr pappso::OboListWidget::getPrecisionPtr() const { if(ui->massFilterGroupBox->isChecked()) { return ui->precisionWidget->getPrecision(); } return nullptr; } libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/obolistwidget.h000644 001750 001750 00000004622 14417445171 030657 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obolistwidget/obolistwidget.h * \date 17/04/2021 * \author Olivier Langella * \brief handles a list of obo term, select and click */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "../../../exportinmportconfig.h" #include "../../../precision.h" #include "obolistmodel.h" #include namespace Ui { class OboListWidgetForm; } namespace pappso { class OboListProxyModel; class PMSPP_LIB_DECL OboListWidget : public QWidget { Q_OBJECT public: /** * Default constructor */ explicit OboListWidget(QWidget *parent = nullptr); /** * Destructor */ ~OboListWidget(); void filterMzPrecision(double target_mz, PrecisionPtr precision); /** @brief get the current mz value used to filter term list */ double getMzTarget() const; /** @brief get the current precision used to filter term list */ PrecisionPtr getPrecisionPtr() const; signals: void oboTermChanged(OboPsiModTerm oboTerm) const; private slots: void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); void onFilterChanged(pappso::PrecisionPtr precision); void onFilterChanged(); void onFilterChanged(double value); private: Ui::OboListWidgetForm *ui; OboListModel *mpa_oboListModel = nullptr; OboListProxyModel *mpa_oboListProxyModel = nullptr; }; } // namespace pappso Q_DECLARE_METATYPE(pappso::OboPsiModTerm); libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obolistwidget/uiobolistwidget.ui000644 001750 001750 00000007236 14417445171 031407 0ustar00rusconirusconi000000 000000 OboListWidgetForm 0 0 400 300 Form 0 0 0 0 &Mass filter true false 4 -500.000000000000000 6000.000000000000000 0.010000000000000 pappso::PrecisionWidget QWidget
precisionwidget/precisionwidget.h
1 precisionChanged(pappso::PrecisionPtr)
massFilterGroupBox clicked() OboListWidgetForm onFilterChanged() 120 22 594 60 mzSpinBox editingFinished() OboListWidgetForm onFilterChanged() 129 53 673 174 precisionWidget precisionChanged(pappso::PrecisionPtr) OboListWidgetForm onFilterChanged(pappso::PrecisionPtr) 254 52 616 139 mzSpinBox valueChanged(double) OboListWidgetForm onFilterChanged(double) 96 50 550 242 onFilterChanged() onFilterChanged(pappso::PrecisionPtr) onFilterChanged(double)
libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obotermform/000755 001750 001750 00000000000 14533473271 025300 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obotermform/obotermform.cpp000644 001750 001750 00000007163 14526455546 030355 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obotermform/obotermform.cpp * \date 20/04/2021 * \author Olivier Langella * \brief display an obo term form */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "obotermform.h" #include "ui_uiobotermform.h" #include #include "../../../exception/exceptionnotfound.h" using namespace pappso; //"Oxidation of methionine to methionine sulfoxide with neutral loss of CH3SOH." //[PubMed:18688235, PubMed:9004526] QRegularExpression OboTermForm::m_findExternalLinks("^(.*)\\s\\[(.*)\\]$"); OboTermForm::OboTermForm(QWidget *parent) : QWidget(parent), ui(new Ui::OboTermForm) { qDebug(); ui->setupUi(this); OboPsiModTerm empty; displayOboTerm(empty); } pappso::OboTermForm::~OboTermForm() { delete ui; } void pappso::OboTermForm::displayOboTerm(pappso::OboPsiModTerm oboTerm) { qDebug() << oboTerm.m_accession; ui->accessionHttpButton->setText(oboTerm.m_accession); ui->nameLabel->setText(oboTerm.m_name); ui->definitionLabel->setText(oboTerm.m_definition); ui->diffFormulaLabel->setText(oboTerm.m_diffFormula); if(oboTerm.isValid()) { ui->diffMonoLabel->setText(QString::number(oboTerm.m_diffMono, 'f', 4)); parseDefinitionLabel(); } else { ui->diffMonoLabel->setText(""); } ui->originLabel->setText(oboTerm.m_origin); ui->psiModLabel->setText(oboTerm.m_psiModLabel); m_oboPsiModTerm = oboTerm; } const pappso::OboPsiModTerm & pappso::OboTermForm::getOboPsiModTerm() const { if(isOboTerm()) { } else { throw pappso::ExceptionNotFound(tr("OBO term not available")); } return m_oboPsiModTerm; } bool pappso::OboTermForm::isOboTerm() const { return m_oboPsiModTerm.isValid(); } void pappso::OboTermForm::parseDefinitionLabel() { QString label = ui->definitionLabel->text(); //"Oxidation of methionine to methionine sulfoxide with neutral loss of // CH3SOH." [PubMed:18688235, PubMed:9004526] QLayoutItem *child; while((child = ui->xrefScrollAreaLayout->takeAt(0)) != 0) { if(child->widget() != NULL) { delete(child->widget()); } delete child; } ui->xrefScrollArea->hide(); QRegularExpressionMatch match = m_findExternalLinks.match(label); if(match.hasMatch()) { QStringList pline = match.capturedTexts(); ui->definitionLabel->setText(pline[1]); QStringList list_xref = pline[2].split(","); ui->xrefScrollArea->show(); for(auto xref : list_xref) { HttpButton *newButton = new HttpButton; newButton->setText(xref.trimmed()); newButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); ui->xrefScrollAreaLayout->addWidget(newButton); } } } libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obotermform/obotermform.h000644 001750 001750 00000003757 14410612073 030005 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/obo/obotermform/obotermform.h * \date 20/04/2021 * \author Olivier Langella * \brief display an obo term form */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include #include "../../../exportinmportconfig.h" #include "../../../obo/obopsimodterm.h" namespace Ui { class OboTermForm; } namespace pappso { class PMSPP_LIB_DECL OboTermForm : public QWidget { Q_OBJECT public: /** * Default constructor */ explicit OboTermForm(QWidget *parent = nullptr); /** * Destructor */ ~OboTermForm(); /** @brief tells if an OBO term is displayed */ bool isOboTerm() const; /** @brief get the obo term or an exception */ const OboPsiModTerm &getOboPsiModTerm() const; public slots: void displayOboTerm(OboPsiModTerm oboTerm); protected: /** @brief parse the definition label to extract external links * */ void parseDefinitionLabel(); private: Ui::OboTermForm *ui; OboPsiModTerm m_oboPsiModTerm; static QRegularExpression m_findExternalLinks; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/obo/obotermform/uiobotermform.ui000644 001750 001750 00000011123 14346367014 030525 0ustar00rusconirusconi000000 000000 OboTermForm 0 0 582 368 Form 0 0 0 0 diffFormulaLabel Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse diffMonoLabel Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse originLabel Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse nameLabel true Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse psiModLabel Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse definitionLabel true Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse 0 0 QFrame::NoFrame true 0 0 582 68 0 0 0 0 0 0 0 0 pappso::HttpButton QWidget
httpbutton/httpbutton.h
1
libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/000755 001750 001750 00000000000 14533473271 024350 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp000644 001750 001750 00000131063 14526455546 031641 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "basecolormapplotwidget.h" #include "../../trace/maptrace.h" #include "../../pappsoexception.h" namespace pappso { BaseColorMapPlotWidget::BaseColorMapPlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BasePlotWidget(parent, x_axis_label, y_axis_label) { // Do not call createAllAncillaryItems() in this base class because all the // items will have been created *before* the addition of plots and then the // rendering order will hide them to the viewer, since the rendering order is // according to the order in which the items have been created. // // The fact that the ancillary items are created before trace plots is not a // problem because the trace plots are sparse and do not effectively hide the // data. // // But, in the color map plot widgets, we cannot afford to create the // ancillary items *before* the plot itself because then, the rendering of the // plot (created after) would screen off the ancillary items (created before). // // So, the createAllAncillaryItems() function needs to be called in the // derived classes at the most appropriate moment in the setting up of the // widget. // // In the present case, the function needs to be called right after addition // of the color map plot. } BaseColorMapPlotWidget::BaseColorMapPlotWidget(QWidget *parent) : BasePlotWidget(parent, "x", "y") { // Do not call createAllAncillaryItems() in this base class because all the // items will have been created *before* the addition of plots and then the // rendering order will hide them to the viewer, since the rendering order is // according to the order in which the items have been created. // // The fact that the ancillary items are created before trace plots is not a // problem because the trace plots are sparse and do not effectively hide the // data. // // But, in the color map plot widgets, we cannot afford to create the // ancillary items *before* the plot itself because then, the rendering of the // plot (created after) would screen off the ancillary items (created before). // // So, the createAllAncillaryItems() function needs to be called in the // derived classes at the most appropriate moment in the setting up of the // widget. // // In the present case, the function needs to be called right after addition // of the color map plot. } //! Destruct \c this BaseColorMapPlotWidget instance. /*! The destruction involves clearing the history, deleting all the axis range history items for x and y axes. */ BaseColorMapPlotWidget::~BaseColorMapPlotWidget() { if(mpa_origColorMapData != nullptr) delete mpa_origColorMapData; if(mpa_origColorMapPlotConfig != nullptr) delete mpa_origColorMapPlotConfig; } void BaseColorMapPlotWidget::setColorMapPlotConfig( const ColorMapPlotConfig &color_map_config) { m_colorMapPlotConfig = color_map_config; } const ColorMapPlotConfig * BaseColorMapPlotWidget::getOrigColorMapPlotConfig() { return mpa_origColorMapPlotConfig; } const ColorMapPlotConfig & BaseColorMapPlotWidget::getColorMapPlotConfig() { return m_colorMapPlotConfig; } QCPColorMap * BaseColorMapPlotWidget::addColorMap( std::shared_ptr> double_map_trace_map_sp, const ColorMapPlotConfig color_map_plot_config, const QColor &color) { // qDebug() << "Adding color map with config:" << // color_map_plot_config.toString(); if(!color.isValid()) throw PappsoException( QString("The color to be used for the plot graph is invalid.")); QCPColorMap *color_map_p = new QCPColorMap(xAxis, yAxis); color_map_p->setLayer("plotsLayer"); // Do not forget to copy the config! m_colorMapPlotConfig = color_map_plot_config; // Immediately create a copy of the original data for backup. mpa_origColorMapPlotConfig = new ColorMapPlotConfig(color_map_plot_config); #if 0 // This is the code on the QCustomPlot documentation and it works fine. QCPColorMap *color_map_p = new QCPColorMap(xAxis, yAxis); color_map_p->data()->setSize(50, 50); color_map_p->data()->setRange(QCPRange(0, 2), QCPRange(0, 2)); for(int x = 0; x < 50; ++x) for(int y = 0; y < 50; ++y) color_map_p->data()->setCell(x, y, qCos(x / 10.0) + qSin(y / 10.0)); color_map_p->setGradient(QCPColorGradient::gpPolar); color_map_p->rescaleDataRange(true); rescaleAxes(); replot(); #endif // Only now can afford to call createAllAncillaryItems() in this derived class // because the color map has been created already. The rendering order will // thus not hide the ancillary items, since they have been created after the // color map plot (since the rendering order is according to the // order in which the items have been created). See contructor note. createAllAncillaryItems(); // Connect the signal of selection change so that we can re-emit it for the // widget that is using *this widget. connect(color_map_p, static_cast( &QCPAbstractPlottable::selectionChanged), [this, color_map_p]() { emit plottableSelectionChangedSignal(color_map_p, color_map_p->selected()); }); // qDebug() << "Configuring the color map with this config:" //<< color_map_plot_config.toString(); color_map_p->data()->setSize(color_map_plot_config.keyCellCount, color_map_plot_config.mzCellCount); color_map_p->data()->setRange(QCPRange(color_map_plot_config.minKeyValue, color_map_plot_config.maxKeyValue), QCPRange(color_map_plot_config.minMzValue, color_map_plot_config.maxMzValue)); color_map_p->data()->fill(0.0); // We have now to fill the color map. for(auto &&pair : *double_map_trace_map_sp) { // The first value is the key and the second value is the MapTrace into // which we need to iterated and for each point (double mz, double // intensity) create a map cell. double dt_or_rt_key = pair.first; MapTrace map_trace = pair.second; for(auto &&data_point_pair : map_trace) { double mz = data_point_pair.first; double intensity = data_point_pair.second; // We are filling dynamically the color map. If a cell had already // something in, then we need to take that into account. This is // because we let QCustomPlot handle the fuzzy transition between // color map plot cells. double prev_intensity = color_map_p->data()->data(dt_or_rt_key, mz); double new_intensity = prev_intensity + intensity; // Record the min/max cell intensity value (origM(in/ax)ZValue). We // will need that later. Also update the lastM(in/ax)ZValue because // when doing this kind of data conversion it is assume that the user // actually changes the data. m_colorMapPlotConfig.setOrigAndLastMinZValue( std::min(m_colorMapPlotConfig.origMinZValue, new_intensity)); m_colorMapPlotConfig.setOrigAndLastMaxZValue( std::max(m_colorMapPlotConfig.origMaxZValue, new_intensity)); // qDebug() << "Setting tri-point:" << dt_or_rt_key << "," << mz << // "," //<< new_intensity; color_map_p->data()->setData(dt_or_rt_key, mz, new_intensity); } } // At this point we have finished filling-up the color map. // The gpThermal is certainly one of the best. color_map_p->setGradient(QCPColorGradient::gpThermal); color_map_p->rescaleDataRange(true); color_map_p->rescaleAxes(); resetAxesRangeHistory(); // The pen of the color map itself is of no use. Instead the user will see the // color of the axes' labels. QPen pen = xAxis->basePen(); pen.setColor(color); xAxis->setBasePen(pen); xAxis->setLabelColor(color); xAxis->setTickLabelColor(color); yAxis->setBasePen(pen); yAxis->setLabelColor(color); yAxis->setTickLabelColor(color); // And now set the color map's pen to the same color, even if we do not use // it, we need it for coloring the plots that might be integrated from this // color map. color_map_p->setPen(pen); // Copy the original color map's data into a backup copy. mpa_origColorMapData = new QCPColorMapData(*(color_map_p->data())); replot(); return color_map_p; } QCPColorMap * BaseColorMapPlotWidget::addColorMap( const TimsFrame &tims_frame, const ColorMapPlotConfig color_map_plot_config, const QColor &color) { qDebug(); if(!color.isValid()) throw PappsoException( QString("The color to be used for the plot graph is invalid.")); QCPColorMap *color_map_p = new QCPColorMap(xAxis, yAxis); color_map_p->setLayer("plotsLayer"); // Do not forget to copy the config! m_colorMapPlotConfig = color_map_plot_config; // Immediately create a copy of the original data for backup. mpa_origColorMapPlotConfig = new ColorMapPlotConfig(color_map_plot_config); qDebug(); #if 0 // This is the code on the QCustomPlot documentation and it works fine. QCPColorMap *color_map_p = new QCPColorMap(xAxis, yAxis); color_map_p->data()->setSize(50, 50); color_map_p->data()->setRange(QCPRange(0, 2), QCPRange(0, 2)); for(int x = 0; x < 50; ++x) for(int y = 0; y < 50; ++y) color_map_p->data()->setCell(x, y, qCos(x / 10.0) + qSin(y / 10.0)); color_map_p->setGradient(QCPColorGradient::gpPolar); color_map_p->rescaleDataRange(true); rescaleAxes(); replot(); #endif // Only now can afford to call createAllAncillaryItems() in this derived class // because the color map has been created already. The rendering order will // thus not hide the ancillary items, since they have been created after the // color map plot (since the rendering order is according to the // order in which the items have been created). See contructor note. createAllAncillaryItems(); qDebug(); // Connect the signal of selection change so that we can re-emit it for the // widget that is using *this widget. connect(color_map_p, static_cast( &QCPAbstractPlottable::selectionChanged), [this, color_map_p]() { emit plottableSelectionChangedSignal(color_map_p, color_map_p->selected()); }); // qDebug() << "Configuring the color map with this config:" //<< color_map_plot_config.toString(); color_map_p->data()->setSize(color_map_plot_config.keyCellCount, color_map_plot_config.mzCellCount); color_map_p->data()->setRange(QCPRange(color_map_plot_config.minKeyValue, color_map_plot_config.maxKeyValue), QCPRange(color_map_plot_config.minMzValue, color_map_plot_config.maxMzValue)); color_map_p->data()->fill(0.0); // double max_intensity = 0; qDebug(); // We have now to fill the color map. std::size_t number_of_scans = tims_frame.getTotalNumberOfScans(); for(std::size_t i = 0; i < number_of_scans; i++) { std::vector mz_index_vector = tims_frame.getScanIndexList(i); std::vector intensity_index_vector = tims_frame.getScanIntensities(i); // The first value is the key and the second value is the MapTrace into // which we need to iterated and for each point (double mz, double // intensity) create a map cell. double dt_or_rt_key = i; std::size_t vector_index = 0; for(quint32 mzindex : mz_index_vector) { double mz = mzindex; double intensity = intensity_index_vector.at(vector_index); // max_intensity = std::max(max_intensity, intensity); // We are filling dynamically the color map. If a cell had already // something in, then we need to take that into account. This is // because we let QCustomPlot handle the fuzzy transition between // color map plot cells. double prev_intensity = color_map_p->data()->data(dt_or_rt_key, mz); double new_intensity = prev_intensity + intensity; // qDebug() << "mz=" << mz << " int=" << intensity; // Record the min/max cell intensity value (origM(in/ax)ZValue). We // will need that later. Also update the lastM(in/ax)ZValue because // when doing this kind of data conversion it is assume that the user // actually changes the data. m_colorMapPlotConfig.setOrigAndLastMinZValue( std::min(m_colorMapPlotConfig.origMinZValue, new_intensity)); m_colorMapPlotConfig.setOrigAndLastMaxZValue( std::max(m_colorMapPlotConfig.origMaxZValue, new_intensity)); // qDebug() << "Setting tri-point:" << dt_or_rt_key << "," << mz << // "," //<< new_intensity; color_map_p->data()->setCell(dt_or_rt_key, mz, new_intensity); // qDebug() << "dt_or_rt_key=" << dt_or_rt_key << " mz=" << mz // << " new_intensity=" << new_intensity; vector_index++; } } // At this point we have finished filling-up the color map. // The gpThermal is certainly one of the best. color_map_p->setGradient(QCPColorGradient::gpThermal); color_map_p->data()->recalculateDataBounds(); color_map_p->rescaleDataRange(true); color_map_p->rescaleAxes(); resetAxesRangeHistory(); // The pen of the color map itself is of no use. Instead the user will see the // color of the axes' labels. qDebug(); QPen pen = xAxis->basePen(); pen.setColor(color); xAxis->setBasePen(pen); xAxis->setLabelColor(color); xAxis->setTickLabelColor(color); yAxis->setBasePen(pen); yAxis->setLabelColor(color); yAxis->setTickLabelColor(color); // And now set the color map's pen to the same color, even if we do not use // it, we need it for coloring the plots that might be integrated from this // color map. color_map_p->setPen(pen); // Copy the original color map's data into a backup copy. mpa_origColorMapData = new QCPColorMapData(*(color_map_p->data())); color_map_p->setInterpolate(false); color_map_p->setTightBoundary(false); replot(); qDebug() << color_map_p->data()->keyRange(); qDebug() << color_map_p->data()->valueRange(); qDebug() << color_map_p->data()->dataBounds(); qDebug(); return color_map_p; } void BaseColorMapPlotWidget::transposeAxes() { // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" ; QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *origData = color_map_p->data(); int keySize = origData->keySize(); int valueSize = origData->valueSize(); // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" //<< "Orig data size:" << keySize << valueSize; QCPRange keyRange = origData->keyRange(); QCPRange valueRange = origData->valueRange(); // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" //<< "Value at cell 80,650:" << origData->cell(80,650); // Transposed map. QCPColorMapData *newData = new QCPColorMapData(valueSize, keySize, valueRange, keyRange); for(int iter = 0; iter < keySize; ++iter) { for(int jter = 0; jter < valueSize; ++jter) { double cellData = origData->cell(iter, jter); newData->setCell(jter, iter, cellData); } } // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" //<< "New data size:" << newData->keySize() << newData->valueSize(); // At this point the transposition has been done. color_map_p->data()->clear(); color_map_p->rescaleDataRange(true); // Now we need to invert the labels and data kinds. DataKind temp_data_kind = m_colorMapPlotConfig.xAxisDataKind; m_colorMapPlotConfig.xAxisDataKind = m_colorMapPlotConfig.yAxisDataKind; m_colorMapPlotConfig.yAxisDataKind = temp_data_kind; QString temp_axis_label = xAxis->label(); xAxis->setLabel(yAxis->label()); yAxis->setLabel(temp_axis_label); // Will take ownership of the newData. color_map_p->setData(newData); // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" //<< "Value at cell 80,650:" << newData->cell(80,650) //<< "Value at cell 650, 80:" << newData->cell(650,80); // QCPAxis *p_keyAxis = mp_colorMap->keyAxis(); // QCPAxis *p_valueAxis = mp_colorMap->valueAxis(); // mp_colorMap->setKeyAxis(p_valueAxis); // mp_colorMap->setValueAxis(p_keyAxis); color_map_p->rescaleAxes(); replot(); } void BaseColorMapPlotWidget::zAxisScaleToLog10() { // The user wants to rescale the intensity values of the color map according // to: new_int = log10(orig_int). // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" ; if(m_colorMapPlotConfig.zAxisScale == AxisScale::log10) { qDebug() << "Asking to change z axis scale to log10 while it is already " "like so."; return; } // qDebug() << "m_colorMapPlotConfig:" << m_colorMapPlotConfig.toString(); QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); int keySize = map_data->keySize(); int valueSize = map_data->valueSize(); QCPRange keyRange = map_data->keyRange(); QCPRange valueRange = map_data->valueRange(); // Make a copy of the current config so that we can modify // the xxxZvalue values. ColorMapPlotConfig new_color_map_plot_config(m_colorMapPlotConfig); // But we need to reset these two values to be able to update them using // std::min() and std::max() below. new_color_map_plot_config.setOrigAndLastMinZValue( std::numeric_limits::max()); new_color_map_plot_config.setOrigAndLastMaxZValue( std::numeric_limits::min()); // qDebug() << "new_color_map_plot_config" //<< new_color_map_plot_config.toString(); // Log-ified heat map. QCPColorMapData *new_map_data = new QCPColorMapData(keySize, valueSize, keyRange, valueRange); // qDebug() << "Starting iteration in the color map."; for(int iter = 0; iter < keySize; ++iter) { for(int jter = 0; jter < valueSize; ++jter) { double cell_data = map_data->cell(iter, jter); double new_cell_data = 0; if(!cell_data) // The log10 would be -inf, but then we'd have a huge data range and // the color map would look totally blue... that is like 0 intensity // all over. new_cell_data = -1; else new_cell_data = std::log10(cell_data); // Store the new values here. Should we change the last or orig or // both ? new_color_map_plot_config.lastMinZValue = //(new_cell_data < new_color_map_plot_config.minZValue //? new_cell_data //: new_color_map_plot_config.minZValue); std::min(new_color_map_plot_config.lastMinZValue, new_cell_data); new_color_map_plot_config.lastMaxZValue = //(new_cell_data > new_color_map_plot_config.maxZValue //? new_cell_data //: new_color_map_plot_config.maxZValue); std::max(new_color_map_plot_config.lastMaxZValue, new_cell_data); // qDebug() << "cell_data:" << cell_data //<< "new_cell_data:" << new_cell_data //<< "new_color_map_plot_config.minZValue:" //<< new_color_map_plot_config.minZValue //<< "new_color_map_plot_config.maxZValue:" //<< new_color_map_plot_config.maxZValue; new_map_data->setCell(iter, jter, new_cell_data); } } // qDebug() << "Finished iteration in the color map."; color_map_p->data()->clear(); // Will take ownership of the new_map_data. color_map_p->setData(new_map_data); color_map_p->data()->recalculateDataBounds(); color_map_p->rescaleDataRange(true); // At this point the new color map data have taken their place, we can update // the config. This, way any new filtering can take advantage of the new // values and compute the threshold correctly. m_colorMapPlotConfig = new_color_map_plot_config; // Now we need to document the change. m_colorMapPlotConfig.zAxisScale = AxisScale::log10; // qDebug() << "new_color_map_plot_config" //<< new_color_map_plot_config.toString(); // qDebug() << "m_colorMapPlotConfig:" << m_colorMapPlotConfig.toString(); // We should not do this, as the user might have zoomed to a region of // interest. // color_map_p->rescaleAxes(); replot(); } void BaseColorMapPlotWidget::zAxisFilterLowPassPercentage( double threshold_percentage) { // This filter allows all the values smaller than a threshold to remain // unchanged. Instead, all the values above the threshold will be reset to // that threshold. // // The effect of this filter is to enhance the high-intensity signal. QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); int keySize = map_data->keySize(); int valueSize = map_data->valueSize(); QCPRange keyRange = map_data->keyRange(); QCPRange valueRange = map_data->valueRange(); double minZValue = m_colorMapPlotConfig.lastMinZValue; double maxZValue = m_colorMapPlotConfig.lastMaxZValue; double amplitude = maxZValue - minZValue; double amplitude_fraction = amplitude * threshold_percentage / 100; double threshold = minZValue + amplitude_fraction; // qDebug() << "Before filtering minZValue:" << minZValue //<< "maxZValue:" << maxZValue << "fraction:" << fraction //<< "threshold:" << threshold //<< "new threshold percentage:" << new_threshold_percentage; // Make a copy of the current config so that we can modify // the xxxZvalue values. ColorMapPlotConfig new_color_map_plot_config(m_colorMapPlotConfig); // But we need to reset these two values to be able to update them using // std::min() and std::max() below. new_color_map_plot_config.lastMinZValue = std::numeric_limits::max(); new_color_map_plot_config.lastMaxZValue = std::numeric_limits::min(); // Filtered QCPColorMapData *new_map_data = new QCPColorMapData(keySize, valueSize, keyRange, valueRange); for(int iter = 0; iter < keySize; ++iter) { for(int jter = 0; jter < valueSize; ++jter) { double cell_data = map_data->cell(iter, jter); double new_cell_data = 0; if(cell_data < threshold) // Keep the value, we are in low-pass new_cell_data = cell_data; else new_cell_data = threshold; // Store the new values here. new_color_map_plot_config.lastMinZValue = //(new_cell_data < new_color_map_plot_config.minZValue //? new_cell_data //: new_color_map_plot_config.minZValue); std::min(new_color_map_plot_config.lastMinZValue, new_cell_data); new_color_map_plot_config.lastMaxZValue = //(new_cell_data > new_color_map_plot_config.maxZValue //? new_cell_data //: new_color_map_plot_config.maxZValue); std::max(new_color_map_plot_config.lastMaxZValue, new_cell_data); // qDebug() << "cell_data:" << cell_data //<< "new_cell_data:" << new_cell_data //<< "new_color_map_plot_config.minZValue:" //<< new_color_map_plot_config.minZValue //<< "new_color_map_plot_config.maxZValue:" //<< new_color_map_plot_config.maxZValue; new_map_data->setCell(iter, jter, new_cell_data); } } color_map_p->data()->clear(); // Will take ownership of the new_map_data. color_map_p->setData(new_map_data); color_map_p->data()->recalculateDataBounds(); color_map_p->rescaleDataRange(true); // At this point the new color map data have taken their place, we can update // the config. This, way any new filtering can take advantage of the new // values and compute the threshold correctly. m_colorMapPlotConfig = new_color_map_plot_config; // qDebug() << "Member colormap plot config is now, after filter was applied:" //<< m_colorMapPlotConfig.toString(); // We should not do this, as the user might have zoomed to a region of // interest. // color_map_p->rescaleAxes(); replot(); } void BaseColorMapPlotWidget::zAxisFilterLowPassThreshold(double threshold) { // This filter allows all the values smaller than a threshold to remain // unchanged. Instead, all the values above the threshold will be reset to // that threshold. QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); int keySize = map_data->keySize(); int valueSize = map_data->valueSize(); QCPRange keyRange = map_data->keyRange(); QCPRange valueRange = map_data->valueRange(); // qDebug() << "Before filtering minZValue:" << minZValue //<< "maxZValue:" << maxZValue << "fraction:" << fraction //<< "threshold:" << threshold //<< "new threshold percentage:" << new_threshold_percentage; // Make a copy of the current config so that we can modify // the xxxZvalue values. ColorMapPlotConfig new_color_map_plot_config(m_colorMapPlotConfig); // But we need to reset these two values to be able to update them using // std::min() and std::max() below. new_color_map_plot_config.lastMinZValue = std::numeric_limits::max(); new_color_map_plot_config.lastMaxZValue = std::numeric_limits::min(); // Filtered QCPColorMapData *new_map_data = new QCPColorMapData(keySize, valueSize, keyRange, valueRange); for(int iter = 0; iter < keySize; ++iter) { for(int jter = 0; jter < valueSize; ++jter) { double cell_data = map_data->cell(iter, jter); double new_cell_data = 0; if(cell_data < threshold) // Keep the value, we are in low-pass new_cell_data = cell_data; else new_cell_data = threshold; // Store the new values here. new_color_map_plot_config.lastMinZValue = //(new_cell_data < new_color_map_plot_config.minZValue //? new_cell_data //: new_color_map_plot_config.minZValue); std::min(new_color_map_plot_config.lastMinZValue, new_cell_data); new_color_map_plot_config.lastMaxZValue = //(new_cell_data > new_color_map_plot_config.maxZValue //? new_cell_data //: new_color_map_plot_config.maxZValue); std::max(new_color_map_plot_config.lastMaxZValue, new_cell_data); // qDebug() << "cell_data:" << cell_data //<< "new_cell_data:" << new_cell_data //<< "new_color_map_plot_config.minZValue:" //<< new_color_map_plot_config.minZValue //<< "new_color_map_plot_config.maxZValue:" //<< new_color_map_plot_config.maxZValue; new_map_data->setCell(iter, jter, new_cell_data); } } color_map_p->data()->clear(); // Will take ownership of the new_map_data. color_map_p->setData(new_map_data); color_map_p->data()->recalculateDataBounds(); color_map_p->rescaleDataRange(true); // At this point the new color map data have taken their place, we can update // the config. This, way any new filtering can take advantage of the new // values and compute the threshold correctly. m_colorMapPlotConfig = new_color_map_plot_config; // qDebug() << "Member colormap plot config is now, after filter was applied:" //<< m_colorMapPlotConfig.toString(); // We should not do this, as the user might have zoomed to a region of // interest. // color_map_p->rescaleAxes(); replot(); } void BaseColorMapPlotWidget::zAxisFilterHighPassPercentage( double threshold_percentage) { // This filter allows all the value greater than a threshold to remain // unchanged. Instead, all the values below the threshold will be reset to // that threshold value. // // The effect of this filter is to reduce the low-intensity signal: reduce // noise. QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); int keySize = map_data->keySize(); int valueSize = map_data->valueSize(); QCPRange keyRange = map_data->keyRange(); QCPRange valueRange = map_data->valueRange(); double minZValue = m_colorMapPlotConfig.lastMinZValue; double maxZValue = m_colorMapPlotConfig.lastMaxZValue; double amplitude = maxZValue - minZValue; double amplitude_fraction = amplitude * threshold_percentage / 100; double threshold = minZValue + amplitude_fraction; // qDebug() << "Before filtering minZValue:" << minZValue //<< "maxZValue:" << maxZValue << "fraction:" << fraction //<< "threshold:" << threshold //<< "new threshold percentage:" << new_threshold_percentage; // Make a copy of the current config so that we can modify // the xxxZvalue values. ColorMapPlotConfig new_color_map_plot_config(m_colorMapPlotConfig); // But we need to reset these two values to be able to update them using // std::min() and std::max() below. new_color_map_plot_config.lastMinZValue = std::numeric_limits::max(); new_color_map_plot_config.lastMaxZValue = std::numeric_limits::min(); // Filtered QCPColorMapData *new_map_data = new QCPColorMapData(keySize, valueSize, keyRange, valueRange); for(int iter = 0; iter < keySize; ++iter) { for(int jter = 0; jter < valueSize; ++jter) { double cell_data = map_data->cell(iter, jter); double new_cell_data = 0; if(cell_data > threshold) // Keep the value, we are in high-pass new_cell_data = cell_data; else new_cell_data = threshold; // Store the new values here. new_color_map_plot_config.lastMinZValue = //(new_cell_data < new_color_map_plot_config.minZValue //? new_cell_data //: new_color_map_plot_config.minZValue); std::min(new_color_map_plot_config.lastMinZValue, new_cell_data); new_color_map_plot_config.lastMaxZValue = //(new_cell_data > new_color_map_plot_config.maxZValue //? new_cell_data //: new_color_map_plot_config.maxZValue); std::max(new_color_map_plot_config.lastMaxZValue, new_cell_data); // qDebug() << "cell_data:" << cell_data //<< "new_cell_data:" << new_cell_data //<< "new_color_map_plot_config.minZValue:" //<< new_color_map_plot_config.minZValue //<< "new_color_map_plot_config.maxZValue:" //<< new_color_map_plot_config.maxZValue; new_map_data->setCell(iter, jter, new_cell_data); } } color_map_p->data()->clear(); // Will take ownership of the new_map_data. color_map_p->setData(new_map_data); color_map_p->data()->recalculateDataBounds(); color_map_p->rescaleDataRange(true); // At this point the new color map data have taken their place, we can update // the config. This, way any new filtering can take advantage of the new // values and compute the threshold correctly. m_colorMapPlotConfig = new_color_map_plot_config; // qDebug() << "Member colormap plot config is now, after filter was applied:" //<< m_colorMapPlotConfig.toString(); // We should not do this, as the user might have zoomed to a region of // interest. // color_map_p->rescaleAxes(); replot(); } void BaseColorMapPlotWidget::zAxisDataResetToOriginal() { // The user might have changed to the axis scale to log10, for example. // While doing this, the original data were still available in // mpa_origColorMapData,with mpa_origColorMapPlotConfig. We need to reset the // current data to the original data. // // Same thing for filters that might have been applied to the data. QCPColorMap *color_map_p = static_cast(plottable(0)); color_map_p->data()->clear(); if(mpa_origColorMapData == nullptr) throw(PappsoException( "Not possible that the mpa_origColorMapData pointer be null.")); // We do no want that the color_map_p takes ownership of the data, because // these must remain there always, so pass true, to say that we want to copy // the data not transfer the pointer. color_map_p->setData(mpa_origColorMapData, true); color_map_p->data()->recalculateDataBounds(); color_map_p->rescaleDataRange(true); // We should not do this, as the user might have zoomed to a region of // interest. // color_map_p->rescaleAxes(); // Reset the current plot config to what it was originally. The member // m_colorMapPlotConfig.zAxisScale is now AxisScale::orig. m_colorMapPlotConfig = *mpa_origColorMapPlotConfig; replot(); } DataKind BaseColorMapPlotWidget::xAxisDataKind() const { return m_colorMapPlotConfig.xAxisDataKind; } DataKind BaseColorMapPlotWidget::yAxisDataKind() const { return m_colorMapPlotConfig.yAxisDataKind; } AxisScale BaseColorMapPlotWidget::axisScale(Axis axis) const { if(axis == Axis::x) return m_colorMapPlotConfig.xAxisScale; else if(axis == Axis::y) return m_colorMapPlotConfig.yAxisScale; else if(axis == Axis::z) return m_colorMapPlotConfig.zAxisScale; else throw PappsoException( QString("basecolormapplotwidget.cpp: The axis cannot be different than " "x, y or z.")); return AxisScale::unset; } AxisScale BaseColorMapPlotWidget::xAxisScale() const { return m_colorMapPlotConfig.xAxisScale; } AxisScale BaseColorMapPlotWidget::yAxisScale() const { return m_colorMapPlotConfig.yAxisScale; } AxisScale BaseColorMapPlotWidget::zAxisScale() const { return m_colorMapPlotConfig.zAxisScale; } void BaseColorMapPlotWidget::setPlottingColor(QCPAbstractPlottable *plottable_p, const QColor &new_color) { Q_UNUSED(plottable_p); // The pen of the color map itself is of no use. Instead the user will see the // color of the axes' labels. QPen pen = xAxis->basePen(); pen.setColor(new_color); xAxis->setBasePen(pen); xAxis->setLabelColor(new_color); xAxis->setTickLabelColor(new_color); yAxis->setBasePen(pen); yAxis->setLabelColor(new_color); yAxis->setTickLabelColor(new_color); // And now set the color map's pen to the same color, even if we do not use // it, we need it for coloring the plots that might be integrated from this // color map. QCPColorMap *color_map_p = static_cast(plottable(0)); color_map_p->setPen(pen); replot(); } QColor BaseColorMapPlotWidget::getPlottingColor(int index) const { Q_UNUSED(index); QPen pen = xAxis->basePen(); return pen.color(); } void BaseColorMapPlotWidget::currentXaxisRangeIndices(int &lower, int &upper) { // We want to limit the ranges to the visible data range in the plot widget. QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); bool found_range = false; // Get the full data set DT values range because if the context contains no // values for the currently displayed ranges, then we fall back to them; QCPRange full_data_range = color_map_p->getKeyRange(found_range); if(!found_range) { qDebug() << "The range was not found"; return; } // qDebug() << "Full key data range:" << full_data_range.lower << "-" //<< full_data_range.upper; // But what we actually want is the currently visible axes ranges. And these // are stored in the context. double visible_data_range_lower = m_context.m_xRange.lower; double visible_data_range_upper = m_context.m_xRange.upper; // qDebug() << "Visible key data range:" << visible_data_range_lower << "-" //<< visible_data_range_upper; // Note that if there has been *no* panning, rescale, nothing, with the color // map, then the context has no idea of the ranges. So we need to check that. // If that is the case, then we use the full key range as the full plot is // displayed full scale upon its first showing. if(!visible_data_range_lower || !visible_data_range_upper) { visible_data_range_lower = full_data_range.lower; visible_data_range_upper = full_data_range.upper; } // qDebug() << "Visible key range:" << visible_data_range_lower << "-" //<< visible_data_range_upper; // And now convert the double value ranges into cell indices, which is what we // are being asked for. map_data->coordToCell(visible_data_range_lower, 0, &lower, nullptr); map_data->coordToCell(visible_data_range_upper, 0, &upper, nullptr); // qDebug() << "Cell indices for currently visible key range:" << lower << "-" //<< upper; } void BaseColorMapPlotWidget::currentYaxisRangeIndices(int &lower, int &upper) { // We want to limit the ranges to the visible data range in the plot widget. QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); bool found_range = false; // Get the full data set MZ values range because if the context contains no // values for the currently displayed ranges, then we fall back to them; QCPRange full_data_range = color_map_p->getValueRange(found_range); if(!found_range) { qDebug() << "The range was not found"; return; } // qDebug() << "Full value data range:" << full_data_range.lower << "-" //<< full_data_range.upper; // But what we actually want is the currently visible axes ranges. And these // are stored in the context. double visible_data_range_lower = m_context.m_yRange.lower; double visible_data_range_upper = m_context.m_yRange.upper; // qDebug() << "Visible value data range:" << visible_data_range_lower << "-" //<< visible_data_range_upper; // Note that if there has been *no* panning, rescale, nothing, with the color // map, then the context has no idea of the ranges. So we need to check that. // If that is the case, then we use the full key range as the full plot is // displayed full scale upon its first showing. if(!visible_data_range_lower || !visible_data_range_upper) { visible_data_range_lower = full_data_range.lower; visible_data_range_upper = full_data_range.upper; } // qDebug() << "Final visible value data range:" << visible_data_range_lower //<< "-" << visible_data_range_upper; // And now convert the double value ranges into cell indices, which is what we // are being asked for. map_data->coordToCell(0, visible_data_range_lower, nullptr, &lower); map_data->coordToCell(0, visible_data_range_upper, nullptr, &upper); // qDebug() << "Cell indices for currently visible value range:" << lower << // "-" //<< upper; } void BaseColorMapPlotWidget::dataTo3ColString(QString &data_string) { // We want to export the data to a string in the x y z format, with // x=key (cell's x coordinate) // y=value (cell's y coordinate) // z=intensity (cell value) QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); int key_index_lower_range; int key_index_upper_range; currentXaxisRangeIndices(key_index_lower_range, key_index_upper_range); // qDebug() << "Cell indices for currently visible key range:" //<< key_index_lower_range << "-" << key_index_upper_range; int value_index_lower_range; int value_index_upper_range; currentYaxisRangeIndices(value_index_lower_range, value_index_upper_range); // qDebug() << "Cell indices for currently visible value range:" //<< value_index_lower_range << "-" << value_index_upper_range; data_string.clear(); QString debug_string; // Iterate in the matrix' key axis (DT, for example) for(int key_iter = key_index_lower_range; key_iter < key_index_upper_range; ++key_iter) { // Iterate in the matrix' value axis (MZ, for example) for(int value_iter = value_index_lower_range; value_iter < value_index_upper_range; ++value_iter) { // This would be the DT value (x axis) double key; // This would be the MZ value (y axis) double value; map_data->cellToCoord(key_iter, value_iter, &key, &value); data_string += QString("%1 %2 %3\n") .arg(key, 0, 'f', 6, ' ') .arg(value, 0, 'f', 6, ' ') // The intensity without decimals .arg(map_data->cell(key_iter, value_iter), 0, 'f', 0, ' '); } } // qDebug() << "The completed data string has size: " << data_string.size(); } void BaseColorMapPlotWidget::dataToMatrixString(QString &data_string, bool detailed) { // We want to export the data in the form of a matrix, exactly as the data // appear within the colormap, unless the color is replaced with the intensity // value. // We want to limit the export to the visible data range in the plot widget. QCPColorMap *color_map_p = static_cast(plottable(0)); QCPColorMapData *map_data = color_map_p->data(); int key_index_lower_range; int key_index_upper_range; currentXaxisRangeIndices(key_index_lower_range, key_index_upper_range); // qDebug() << "Cell indices for currently visible key range:" //<< key_index_lower_range << "-" << key_index_upper_range; int value_index_lower_range; int value_index_upper_range; currentYaxisRangeIndices(value_index_lower_range, value_index_upper_range); // qDebug() << "Cell indices for currently visible value range:" //<< value_index_lower_range << "-" << value_index_upper_range; data_string.clear(); // At this point, we can write the header of the key data (that is the dt // key values). for(int key_iter = key_index_lower_range; key_iter < key_index_upper_range; ++key_iter) { double current_key_value; map_data->cellToCoord(key_iter, 0, ¤t_key_value, nullptr); data_string += QString("%1 ").arg(current_key_value, 0, 'f', 6, ' '); } // Finally call the newline data_string += "\n"; // Now fill in the matrix, from top to down, that is from higher m/z values to // lower values. // The matrix we are exporting looks like this: // | // | // | // | // | // | // m/z | // | // | // | // | // |______________________________ // dt // Because we want the matrix to be presented the same, we need to fill in the // matrix from top to bottom starting from higher m/z values. for(int value_iter = value_index_upper_range; value_iter >= value_index_lower_range; --value_iter) { for(int key_iter = key_index_lower_range; key_iter < key_index_upper_range; ++key_iter) { double intensity = map_data->cell(key_iter, value_iter); // Only to report debug messages double key_double; double value_double; map_data->cellToCoord( key_iter, value_iter, &key_double, &value_double); // qDebug() << "Currently iterated cell: " << key_iter << "," //<< value_iter << "with values:" << key_double << "," //<< value_double << "with intensity:" << intensity; // The intensity without decimals if(detailed) data_string += QString("%1/%2/%3 ") .arg(key_double, 0, 'f', 6, ' ') .arg(value_double, 0, 'f', 6, ' ') .arg(intensity); else data_string += QString("%1 ").arg(intensity, 0, 'f', 0, ' '); } data_string += "\n"; } // qDebug().noquote() << "The matrix: " << data_string; // qDebug() << "The completed data string has size: " << // data_string.size(); data_string += "\n"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h000644 001750 001750 00000007434 14514537341 031301 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "baseplotwidget.h" #include "colormapplotconfig.h" #include "../../trace/trace.h" #include "../../vendors/tims/timsframe.h" namespace pappso { class BaseColorMapPlotWidget; typedef std::shared_ptr BaseColorMapPlotWidgetSPtr; typedef std::shared_ptr BaseColorMapPlotWidgetCstSPtr; class PMSPP_LIB_DECL BaseColorMapPlotWidget : public BasePlotWidget { Q_OBJECT; public: explicit BaseColorMapPlotWidget(QWidget *parent); explicit BaseColorMapPlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~BaseColorMapPlotWidget(); virtual void setColorMapPlotConfig(const ColorMapPlotConfig &color_map_config); virtual const ColorMapPlotConfig &getColorMapPlotConfig(); const ColorMapPlotConfig *getOrigColorMapPlotConfig(); virtual QCPColorMap *addColorMap( std::shared_ptr> double_map_trace_map_sp, const ColorMapPlotConfig color_map_plot_config, const QColor &color); virtual QCPColorMap * addColorMap(const TimsFrame &tims_frame, const ColorMapPlotConfig color_map_plot_config, const QColor &color); virtual void transposeAxes(); // Change the scale of the intensity to log10 (color, z virtual axis) virtual void zAxisScaleToLog10(); virtual void zAxisFilterLowPassPercentage(double threshold_percentage); /** @brief fix maximum value for the intensity */ virtual void zAxisFilterLowPassThreshold(double threshold); virtual void zAxisFilterHighPassPercentage(double threshold_percentage); virtual void zAxisDataResetToOriginal(); DataKind xAxisDataKind() const; DataKind yAxisDataKind() const; AxisScale axisScale(Axis axis) const; AxisScale xAxisScale() const; AxisScale yAxisScale() const; AxisScale zAxisScale() const; virtual void setPlottingColor(QCPAbstractPlottable *plottable_p, const QColor &new_color) override; virtual QColor getPlottingColor(int index = 0) const override; void dataTo3ColString(QString &data_string); void dataToMatrixString(QString &data_string, bool detailed = false); void currentXaxisRangeIndices(int &lower, int &upper); void currentYaxisRangeIndices(int &lower, int &upper); signals: protected: QCPColorMapData *mpa_origColorMapData = nullptr; ColorMapPlotConfig m_colorMapPlotConfig; ColorMapPlotConfig *mpa_origColorMapPlotConfig = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/baseplotcontext.cpp000644 001750 001750 00000021231 14526455546 030300 0ustar00rusconirusconi000000 000000 // Copyright 2021 Filippo Rusconi // GPL3+ #include "baseplotcontext.h" namespace pappso { BasePlotContext::BasePlotContext() { } BasePlotContext::BasePlotContext(const BasePlotContext &other) { // qDebug() << "Constructing BasePlotContext by copy."; m_dataKind = other.m_dataKind; m_isMouseDragging = other.m_isMouseDragging; m_wasMouseDragging = other.m_wasMouseDragging; m_isKeyBoardDragging = other.m_isKeyBoardDragging; m_isLeftPseudoButtonKeyPressed = other.m_isLeftPseudoButtonKeyPressed; m_isRightPseudoButtonKeyPressed = other.m_isRightPseudoButtonKeyPressed; m_wassKeyBoardDragging = other.m_wassKeyBoardDragging; m_startDragPoint = other.m_startDragPoint; m_currentDragPoint = other.m_currentDragPoint; m_lastCursorHoveredPoint = other.m_lastCursorHoveredPoint; m_selectionPolygon = other.m_selectionPolygon; m_selectRectangleWidth = other.m_selectRectangleWidth; // The effective range of the axes. m_xRange = other.m_xRange; m_yRange = other.m_yRange; // Tell if the mouse move was started onto either axis, because that will // condition if some calculations needs to be performed or not (for example, // if the mouse cursor motion was started on an axis, there is no point to // perform deconvolutions). m_wasClickOnXAxis = other.m_wasClickOnXAxis; m_wasClickOnYAxis = other.m_wasClickOnYAxis; m_isMeasuringDistance = other.m_isMeasuringDistance; // The user-selected region over the plot. // Note that we cannot use QCPRange structures because these are normalized by // QCustomPlot in such a manner that lower is actually < upper. But we need // for a number of our calculations (specifically for the deconvolutions) to // actually have the lower value be start drag point.x even if the drag // direction was from right to left. m_xRegionRangeStart = other.m_xRegionRangeStart; m_xRegionRangeEnd = other.m_xRegionRangeEnd; m_yRegionRangeStart = other.m_yRegionRangeStart; m_yRegionRangeEnd = other.m_yRegionRangeEnd; m_xDelta = other.m_xDelta; m_yDelta = other.m_yDelta; m_pressedKeyCode = other.m_pressedKeyCode; m_releasedKeyCode = other.m_releasedKeyCode; m_keyboardModifiers = other.m_keyboardModifiers; m_lastPressedMouseButton = other.m_lastPressedMouseButton; m_lastReleasedMouseButton = other.m_lastReleasedMouseButton; m_pressedMouseButtons = other.m_pressedMouseButtons; m_mouseButtonsAtMousePress = other.m_mouseButtonsAtMousePress; m_mouseButtonsAtMouseRelease = other.m_mouseButtonsAtMouseRelease; } BasePlotContext & BasePlotContext::operator=(const BasePlotContext &other) { if(this == &other) return *this; m_dataKind = other.m_dataKind; m_isMouseDragging = other.m_isMouseDragging; m_wasMouseDragging = other.m_wasMouseDragging; m_isKeyBoardDragging = other.m_isKeyBoardDragging; m_isLeftPseudoButtonKeyPressed = other.m_isLeftPseudoButtonKeyPressed; m_isRightPseudoButtonKeyPressed = other.m_isRightPseudoButtonKeyPressed; m_wassKeyBoardDragging = other.m_wassKeyBoardDragging; m_startDragPoint = other.m_startDragPoint; m_currentDragPoint = other.m_currentDragPoint; m_lastCursorHoveredPoint = other.m_lastCursorHoveredPoint; m_selectionPolygon = other.m_selectionPolygon; m_selectRectangleWidth = other.m_selectRectangleWidth; // The effective range of the axes. m_xRange = other.m_xRange; m_yRange = other.m_yRange; // Tell if the mouse move was started onto either axis, because that will // condition if some calculations needs to be performed or not (for example, // if the mouse cursor motion was started on an axis, there is no point to // perform deconvolutions). m_wasClickOnXAxis = other.m_wasClickOnXAxis; m_wasClickOnYAxis = other.m_wasClickOnYAxis; m_isMeasuringDistance = other.m_isMeasuringDistance; // The user-selected region over the plot. // Note that we cannot use QCPRange structures because these are normalized by // QCustomPlot in such a manner that lower is actually < upper. But we need // for a number of our calculations (specifically for the deconvolutions) to // actually have the lower value be start drag point.x even if the drag // direction was from right to left. m_xRegionRangeStart = other.m_xRegionRangeStart; m_xRegionRangeEnd = other.m_xRegionRangeEnd; m_yRegionRangeStart = other.m_yRegionRangeStart; m_yRegionRangeEnd = other.m_yRegionRangeEnd; m_xDelta = other.m_xDelta; m_yDelta = other.m_yDelta; m_pressedKeyCode = other.m_pressedKeyCode; m_releasedKeyCode = other.m_releasedKeyCode; m_keyboardModifiers = other.m_keyboardModifiers; m_lastPressedMouseButton = other.m_lastPressedMouseButton; m_lastReleasedMouseButton = other.m_lastReleasedMouseButton; m_pressedMouseButtons = other.m_pressedMouseButtons; m_mouseButtonsAtMousePress = other.m_mouseButtonsAtMousePress; m_mouseButtonsAtMouseRelease = other.m_mouseButtonsAtMouseRelease; return *this; } BasePlotContext::~BasePlotContext() { } DragDirections BasePlotContext::recordDragDirections() { int drag_directions = static_cast(DragDirections::NOT_SET); if(m_currentDragPoint.x() > m_startDragPoint.x()) drag_directions |= static_cast(DragDirections::LEFT_TO_RIGHT); else drag_directions |= static_cast(DragDirections::RIGHT_TO_LEFT); if(m_currentDragPoint.y() > m_startDragPoint.y()) drag_directions |= static_cast(DragDirections::BOTTOM_TO_TOP); else drag_directions |= static_cast(DragDirections::TOP_TO_BOTTOM); // qDebug() << "DragDirections:" << drag_directions; m_dragDirections = static_cast(drag_directions); return static_cast(drag_directions); } QString BasePlotContext::toString() const { QString text("Context:"); text += QString("data kind: %1").arg(static_cast(m_dataKind)); text += QString(" isMouseDragging: %1 -- wasMouseDragging: %2") .arg(m_isMouseDragging ? "true" : "false") .arg(m_wasMouseDragging ? "true" : "false"); text += QString(" -- startDragPoint : (%1, %2)") .arg(m_startDragPoint.x()) .arg(m_startDragPoint.y()); text += QString(" -- currentDragPoint : (%1, %2)") .arg(m_currentDragPoint.x()) .arg(m_currentDragPoint.y()); text += QString(" -- lastCursorHoveredPoint : (%1, %2)") .arg(m_lastCursorHoveredPoint.x()) .arg(m_lastCursorHoveredPoint.y()); // Document how the mouse cursor is being dragged. if(m_isMouseDragging) { if(static_cast(m_dragDirections) & static_cast(DragDirections::LEFT_TO_RIGHT)) text += " -- dragging from left to right"; else if(static_cast(m_dragDirections) & static_cast(DragDirections::RIGHT_TO_LEFT)) text += " -- dragging from right to left"; if(static_cast(m_dragDirections) & static_cast(DragDirections::TOP_TO_BOTTOM)) text += " -- dragging from top to bottom"; if(static_cast(m_dragDirections) & static_cast(DragDirections::BOTTOM_TO_TOP)) text += " -- dragging from bottom to top"; } // The selection polygon. text += " -- "; text += m_selectionPolygon.toString(); text += QString(" -- xRange: (%1, %2)").arg(m_xRange.lower).arg(m_xRange.upper); text += QString(" -- yRange: (%1, %2)").arg(m_yRange.lower).arg(m_yRange.upper); text += QString(" -- wasClickOnXAxis: %1") .arg(m_wasClickOnXAxis ? "true" : "false"); text += QString(" -- wasClickOnYAxis: %1") .arg(m_wasClickOnYAxis ? "true" : "false"); text += QString(" -- isMeasuringDistance: %1") .arg(m_isMeasuringDistance ? "true" : "false"); text += QString(" -- xRegionRangeStart: %1 -- xRegionRangeEnd: %2") .arg(m_xRegionRangeStart) .arg(m_xRegionRangeEnd); text += QString(" -- yRegionRangeStart: %1 -- yRegionRangeEnd: %2") .arg(m_yRegionRangeStart) .arg(m_yRegionRangeEnd); text += QString(" -- xDelta: %1 -- yDelta: %2").arg(m_xDelta).arg(m_yDelta); text += QString(" -- pressedKeyCode: %1").arg(m_pressedKeyCode); text += QString(" -- keyboardModifiers: %1").arg(m_keyboardModifiers); text += QString(" -- lastPressedMouseButton: %1").arg(m_lastPressedMouseButton); text += QString(" -- lastReleasedMouseButton: %1").arg(m_lastReleasedMouseButton); text += QString(" -- pressedMouseButtons: %1").arg(m_pressedMouseButtons); text += QString(" -- mouseButtonsAtMousePress: %1").arg(m_mouseButtonsAtMousePress); text += QString(" -- mouseButtonsAtMouseRelease: %1") .arg(m_mouseButtonsAtMouseRelease); return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/baseplotcontext.h000644 001750 001750 00000005551 14346367014 027744 0ustar00rusconirusconi000000 000000 // Copyright 2021 Filippo Rusconi // GPL3+ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include ////////////////////// Other includes #include "qcustomplot.h" /////////////////////// Local includes #include "../../types.h" #include "../../exportinmportconfig.h" #include "../../processing/combiners/selectionpolygon.h" namespace pappso { enum class DragDirections { NOT_SET = 0x0000, LEFT_TO_RIGHT = 1 << 0, RIGHT_TO_LEFT = 1 << 1, TOP_TO_BOTTOM = 1 << 2, BOTTOM_TO_TOP = 1 << 3 }; class PMSPP_LIB_DECL BasePlotContext { public: BasePlotContext(); BasePlotContext(const BasePlotContext &other); virtual ~BasePlotContext(); BasePlotContext &operator=(const BasePlotContext &other); DataKind m_dataKind = DataKind::unset; bool m_isMouseDragging = false; bool m_wasMouseDragging = false; bool m_isKeyBoardDragging = false; bool m_isLeftPseudoButtonKeyPressed = false; bool m_isRightPseudoButtonKeyPressed = false; bool m_wassKeyBoardDragging = false; QPointF m_startDragPoint; QPointF m_currentDragPoint; QPointF m_lastCursorHoveredPoint; DragDirections m_dragDirections = DragDirections::NOT_SET; SelectionPolygon m_selectionPolygon; double m_selectRectangleWidth = 0; // The effective range of the axes. QCPRange m_xRange; QCPRange m_yRange; // Tell if the mouse move was started onto either axis, because that will // condition if some calculations needs to be performed or not (for example, // if the mouse cursor motion was started on an axis, there is no point to // perform deconvolutions). bool m_wasClickOnXAxis = false; bool m_wasClickOnYAxis = false; bool m_isMeasuringDistance = false; // The user-selected region over the plot. // Note that we cannot use QCPRange structures because these are normalized by // QCustomPlot in such a manner that lower is actually < upper. But we need // for a number of our calculations (specifically for the deconvolutions) to // actually have the lower value be start drag point.x even if the drag // direction was from right to left. double m_xRegionRangeStart = std::numeric_limits::min(); double m_xRegionRangeEnd = std::numeric_limits::min(); double m_yRegionRangeStart = std::numeric_limits::min(); double m_yRegionRangeEnd = std::numeric_limits::min(); double m_xDelta = 0; double m_yDelta = 0; int m_pressedKeyCode; int m_releasedKeyCode; Qt::KeyboardModifiers m_keyboardModifiers; Qt::MouseButtons m_lastPressedMouseButton; Qt::MouseButtons m_lastReleasedMouseButton; Qt::MouseButtons m_pressedMouseButtons; Qt::MouseButtons m_mouseButtonsAtMousePress; Qt::MouseButtons m_mouseButtonsAtMouseRelease; DragDirections recordDragDirections(); QString toString() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/baseplotwidget.cpp000644 001750 001750 00000312730 14526455546 030106 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "../../types.h" #include "../../utils.h" #include "baseplotwidget.h" #include "../../pappsoexception.h" #include "../../exception/exceptionnotpossible.h" int basePlotContextMetaTypeId = qRegisterMetaType("pappso::BasePlotContext"); int basePlotContextPtrMetaTypeId = qRegisterMetaType("pappso::BasePlotContext *"); namespace pappso { BasePlotWidget::BasePlotWidget(QWidget *parent) : QCustomPlot(parent) { if(parent == nullptr) qFatal("Programming error."); // Default settings for the pen used to graph the data. m_pen.setStyle(Qt::SolidLine); m_pen.setBrush(Qt::black); m_pen.setWidth(1); // qDebug() << "Created new BasePlotWidget with" << layerCount() //<< "layers before setting up widget."; // qDebug().noquote() << "All layer names:\n" << allLayerNamesToString(); // As of today 20210313, the QCustomPlot is created with the following 6 // layers: // // All layers' name: // // Layer index 0 name: background // Layer index 1 name: grid // Layer index 2 name: main // Layer index 3 name: axes // Layer index 4 name: legend // Layer index 5 name: overlay if(!setupWidget()) qFatal("Programming error."); // Do not call createAllAncillaryItems() in this base class because all the // items will have been created *before* the addition of plots and then the // rendering order will hide them to the viewer, since the rendering order is // according to the order in which the items have been created. // // The fact that the ancillary items are created before trace plots is not a // problem because the trace plots are sparse and do not effectively hide the // data. // // But, in the color map plot widgets, we cannot afford to create the // ancillary items *before* the plot itself because then, the rendering of the // plot (created after) would screen off the ancillary items (created before). // // So, the createAllAncillaryItems() function needs to be called in the // derived classes at the most appropriate moment in the setting up of the // widget. // // All this is only a workaround of a bug in QCustomPlot. See // https://www.qcustomplot.com/index.php/support/forum/2283. // // I initially wanted to have a plots layer on top of the default background // layer and a items layer on top of it. But that setting prevented the // selection of graphs. // qDebug() << "Created new BasePlotWidget with" << layerCount() //<< "layers after setting up widget."; // qDebug().noquote() << "All layer names:\n" << allLayerNamesToString(); show(); } BasePlotWidget::BasePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : QCustomPlot(parent), m_axisLabelX(x_axis_label), m_axisLabelY(y_axis_label) { // qDebug(); if(parent == nullptr) qFatal("Programming error."); // Default settings for the pen used to graph the data. m_pen.setStyle(Qt::SolidLine); m_pen.setBrush(Qt::black); m_pen.setWidth(1); xAxis->setLabel(x_axis_label); yAxis->setLabel(y_axis_label); // qDebug() << "Created new BasePlotWidget with" << layerCount() //<< "layers before setting up widget."; // qDebug().noquote() << "All layer names:\n" << allLayerNamesToString(); // As of today 20210313, the QCustomPlot is created with the following 6 // layers: // // All layers' name: // // Layer index 0 name: background // Layer index 1 name: grid // Layer index 2 name: main // Layer index 3 name: axes // Layer index 4 name: legend // Layer index 5 name: overlay if(!setupWidget()) qFatal("Programming error."); // qDebug() << "Created new BasePlotWidget with" << layerCount() //<< "layers after setting up widget."; // qDebug().noquote() << "All layer names:\n" << allLayerNamesToString(); show(); } //! Destruct \c this BasePlotWidget instance. /*! The destruction involves clearing the history, deleting all the axis range history items for x and y axes. */ BasePlotWidget::~BasePlotWidget() { // qDebug() << "In the destructor of plot widget:" << this; m_xAxisRangeHistory.clear(); m_yAxisRangeHistory.clear(); // Note that the QCustomPlot xxxItem objects are allocated with (this) which // means their destruction is automatically handled upon *this' destruction. } QString BasePlotWidget::allLayerNamesToString() const { QString text; for(int iter = 0; iter < layerCount(); ++iter) { text += QString("Layer index %1: %2\n").arg(iter).arg(layer(iter)->name()); } return text; } QString BasePlotWidget::layerableLayerName(QCPLayerable *layerable_p) const { if(layerable_p == nullptr) qFatal("Programming error."); QCPLayer *layer_p = layerable_p->layer(); return layer_p->name(); } int BasePlotWidget::layerableLayerIndex(QCPLayerable *layerable_p) const { if(layerable_p == nullptr) qFatal("Programming error."); QCPLayer *layer_p = layerable_p->layer(); for(int iter = 0; iter < layerCount(); ++iter) { if(layer(iter) == layer_p) return iter; } return -1; } void BasePlotWidget::createAllAncillaryItems() { // Make a copy of the pen to just change its color and set that color to // the tracer line. QPen pen = m_pen; // Create the lines that will act as tracers for position and selection of // regions. // // We have the cross hair that serves as the cursor. That crosshair cursor is // made of a vertical line (green, because when click-dragging the mouse it // becomes the tracer that is being anchored at the region start. The second // line i horizontal and is always black. pen.setColor(QColor("steelblue")); // The set of tracers (horizontal and vertical) that track the position of the // mouse cursor. mp_vPosTracerItem = new QCPItemLine(this); mp_vPosTracerItem->setLayer("plotsLayer"); mp_vPosTracerItem->setPen(pen); mp_vPosTracerItem->start->setType(QCPItemPosition::ptPlotCoords); mp_vPosTracerItem->end->setType(QCPItemPosition::ptPlotCoords); mp_vPosTracerItem->start->setCoords(0, 0); mp_vPosTracerItem->end->setCoords(0, 0); mp_hPosTracerItem = new QCPItemLine(this); mp_hPosTracerItem->setLayer("plotsLayer"); mp_hPosTracerItem->setPen(pen); mp_hPosTracerItem->start->setType(QCPItemPosition::ptPlotCoords); mp_hPosTracerItem->end->setType(QCPItemPosition::ptPlotCoords); mp_hPosTracerItem->start->setCoords(0, 0); mp_hPosTracerItem->end->setCoords(0, 0); // The set of tracers (horizontal only) that track the region // spanning/selection regions. // // The start vertical tracer is colored in greeen. pen.setColor(QColor("green")); mp_vStartTracerItem = new QCPItemLine(this); mp_vStartTracerItem->setLayer("plotsLayer"); mp_vStartTracerItem->setPen(pen); mp_vStartTracerItem->start->setType(QCPItemPosition::ptPlotCoords); mp_vStartTracerItem->end->setType(QCPItemPosition::ptPlotCoords); mp_vStartTracerItem->start->setCoords(0, 0); mp_vStartTracerItem->end->setCoords(0, 0); // The end vertical tracer is colored in red. pen.setColor(QColor("red")); mp_vEndTracerItem = new QCPItemLine(this); mp_vEndTracerItem->setLayer("plotsLayer"); mp_vEndTracerItem->setPen(pen); mp_vEndTracerItem->start->setType(QCPItemPosition::ptPlotCoords); mp_vEndTracerItem->end->setType(QCPItemPosition::ptPlotCoords); mp_vEndTracerItem->start->setCoords(0, 0); mp_vEndTracerItem->end->setCoords(0, 0); // When the user click-drags the mouse, the X distance between the drag start // point and the drag end point (current point) is the xDelta. mp_xDeltaTextItem = new QCPItemText(this); mp_xDeltaTextItem->setLayer("plotsLayer"); mp_xDeltaTextItem->setColor(QColor("steelblue")); mp_xDeltaTextItem->setPositionAlignment(Qt::AlignBottom | Qt::AlignCenter); mp_xDeltaTextItem->position->setType(QCPItemPosition::ptPlotCoords); mp_xDeltaTextItem->setVisible(false); // Same for the y delta mp_yDeltaTextItem = new QCPItemText(this); mp_yDeltaTextItem->setLayer("plotsLayer"); mp_yDeltaTextItem->setColor(QColor("steelblue")); mp_yDeltaTextItem->setPositionAlignment(Qt::AlignBottom | Qt::AlignCenter); mp_yDeltaTextItem->position->setType(QCPItemPosition::ptPlotCoords); mp_yDeltaTextItem->setVisible(false); // Make sure we prepare the four lines that will be needed to // draw the selection rectangle. pen = m_pen; pen.setColor("steelblue"); mp_selectionRectangeLine1 = new QCPItemLine(this); mp_selectionRectangeLine1->setLayer("plotsLayer"); mp_selectionRectangeLine1->setPen(pen); mp_selectionRectangeLine1->start->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine1->end->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine1->start->setCoords(0, 0); mp_selectionRectangeLine1->end->setCoords(0, 0); mp_selectionRectangeLine1->setVisible(false); mp_selectionRectangeLine2 = new QCPItemLine(this); mp_selectionRectangeLine2->setLayer("plotsLayer"); mp_selectionRectangeLine2->setPen(pen); mp_selectionRectangeLine2->start->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine2->end->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine2->start->setCoords(0, 0); mp_selectionRectangeLine2->end->setCoords(0, 0); mp_selectionRectangeLine2->setVisible(false); mp_selectionRectangeLine3 = new QCPItemLine(this); mp_selectionRectangeLine3->setLayer("plotsLayer"); mp_selectionRectangeLine3->setPen(pen); mp_selectionRectangeLine3->start->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine3->end->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine3->start->setCoords(0, 0); mp_selectionRectangeLine3->end->setCoords(0, 0); mp_selectionRectangeLine3->setVisible(false); mp_selectionRectangeLine4 = new QCPItemLine(this); mp_selectionRectangeLine4->setLayer("plotsLayer"); mp_selectionRectangeLine4->setPen(pen); mp_selectionRectangeLine4->start->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine4->end->setType(QCPItemPosition::ptPlotCoords); mp_selectionRectangeLine4->start->setCoords(0, 0); mp_selectionRectangeLine4->end->setCoords(0, 0); mp_selectionRectangeLine4->setVisible(false); } bool BasePlotWidget::setupWidget() { // qDebug(); // By default the widget comes with a graph. Remove it. if(graphCount()) { // QCPLayer *layer_p = graph(0)->layer(); // qDebug() << "The graph was on layer:" << layer_p->name(); // As of today 20210313, the graph is created on the currentLayer(), that // is "main". removeGraph(0); } // The general idea is that we do want custom layers for the trace|colormap // plots. // qDebug().noquote() << "Right before creating the new layer, layers:\n" //<< allLayerNamesToString(); // Add the layer that will store all the plots and all the ancillary items. addLayer( "plotsLayer", layer("background"), QCustomPlot::LayerInsertMode::limAbove); // qDebug().noquote() << "Added new plotsLayer, layers:\n" //<< allLayerNamesToString(); // This is required so that we get the keyboard events. setFocusPolicy(Qt::StrongFocus); setInteractions(QCP::iRangeZoom | QCP::iSelectPlottables | QCP::iMultiSelect); // We want to capture the signals emitted by the QCustomPlot base class. connect( this, &QCustomPlot::mouseMove, this, &BasePlotWidget::mouseMoveHandler); connect( this, &QCustomPlot::mousePress, this, &BasePlotWidget::mousePressHandler); connect(this, &QCustomPlot::mouseRelease, this, &BasePlotWidget::mouseReleaseHandler); connect( this, &QCustomPlot::mouseWheel, this, &BasePlotWidget::mouseWheelHandler); connect(this, &QCustomPlot::axisDoubleClick, this, &BasePlotWidget::axisDoubleClickHandler); return true; } void BasePlotWidget::setPen(const QPen &pen) { m_pen = pen; } const QPen & BasePlotWidget::getPen() const { return m_pen; } void BasePlotWidget::setPlottingColor(QCPAbstractPlottable *plottable_p, const QColor &new_color) { if(plottable_p == nullptr) qFatal("Pointer cannot be nullptr."); // First this single-graph widget QPen pen; pen = plottable_p->pen(); pen.setColor(new_color); plottable_p->setPen(pen); replot(); } void BasePlotWidget::setPlottingColor(int index, const QColor &new_color) { if(!new_color.isValid()) return; QCPGraph *graph_p = graph(index); if(graph_p == nullptr) qFatal("Programming error."); return setPlottingColor(graph_p, new_color); } QColor BasePlotWidget::getPlottingColor(QCPAbstractPlottable *plottable_p) const { if(plottable_p == nullptr) qFatal("Programming error."); return plottable_p->pen().color(); } QColor BasePlotWidget::getPlottingColor(int index) const { QCPGraph *graph_p = graph(index); if(graph_p == nullptr) qFatal("Programming error."); return getPlottingColor(graph_p); } void BasePlotWidget::setAxisLabelX(const QString &label) { xAxis->setLabel(label); } void BasePlotWidget::setAxisLabelY(const QString &label) { yAxis->setLabel(label); } // AXES RANGE HISTORY-related functions void BasePlotWidget::resetAxesRangeHistory() { m_xAxisRangeHistory.clear(); m_yAxisRangeHistory.clear(); m_xAxisRangeHistory.push_back(new QCPRange(xAxis->range())); m_yAxisRangeHistory.push_back(new QCPRange(yAxis->range())); // qDebug() << "size of history:" << m_xAxisRangeHistory.size() //<< "setting index to 0"; // qDebug() << "resetting axes history to values:" << xAxis->range().lower //<< "--" << xAxis->range().upper << "and" << yAxis->range().lower //<< "--" << yAxis->range().upper; m_lastAxisRangeHistoryIndex = 0; } //! Create new axis range history items and append them to the history. /*! The plot widget is queried to get the current x/y-axis ranges and the current ranges are appended to the history for x-axis and for y-axis. */ void BasePlotWidget::updateAxesRangeHistory() { m_xAxisRangeHistory.push_back(new QCPRange(xAxis->range())); m_yAxisRangeHistory.push_back(new QCPRange(yAxis->range())); m_lastAxisRangeHistoryIndex = m_xAxisRangeHistory.size() - 1; // qDebug() << "axes history size:" << m_xAxisRangeHistory.size() //<< "current index:" << m_lastAxisRangeHistoryIndex //<< xAxis->range().lower << "--" << xAxis->range().upper << "and" //<< yAxis->range().lower << "--" << yAxis->range().upper; } //! Go up one history element in the axis history. /*! If possible, back up one history item in the axis histories and update the plot's x/y-axis ranges to match that history item. */ void BasePlotWidget::restorePreviousAxesRangeHistory() { // qDebug() << "axes history size:" << m_xAxisRangeHistory.size() //<< "current index:" << m_lastAxisRangeHistoryIndex; if(m_lastAxisRangeHistoryIndex == 0) { // qDebug() << "current index is 0 returning doing nothing"; return; } // qDebug() << "Setting index to:" << m_lastAxisRangeHistoryIndex - 1 //<< "and restoring axes history to that index"; restoreAxesRangeHistory(--m_lastAxisRangeHistoryIndex); } //! Get the axis histories at index \p index and update the plot ranges. /*! \param index index at which to select the axis history item. \sa updateAxesRangeHistory(). */ void BasePlotWidget::restoreAxesRangeHistory(std::size_t index) { // qDebug() << "Axes history size:" << m_xAxisRangeHistory.size() //<< "current index:" << m_lastAxisRangeHistoryIndex //<< "asking to restore index:" << index; if(index >= m_xAxisRangeHistory.size()) { // qDebug() << "index >= history size. Returning."; return; } // We want to go back to the range history item at index, which means we want // to pop back all the items between index+1 and size-1. while(m_xAxisRangeHistory.size() > index + 1) m_xAxisRangeHistory.pop_back(); if(m_xAxisRangeHistory.size() - 1 != index) qFatal("Programming error."); xAxis->setRange(*(m_xAxisRangeHistory.at(index))); yAxis->setRange(*(m_yAxisRangeHistory.at(index))); hideAllPlotItems(); mp_vPosTracerItem->setVisible(false); mp_hPosTracerItem->setVisible(false); mp_vStartTracerItem->setVisible(false); mp_vEndTracerItem->setVisible(false); // The start tracer will keep beeing represented at the last position and last // size even if we call this function repetitively. So actually do not show, // it will reappare as soon as the mouse is moved. // if(m_shouldTracersBeVisible) //{ // mp_vStartTracerItem->setVisible(true); //} replot(); updateContextXandYAxisRanges(); // qDebug() << "restored axes history to index:" << index //<< "with values:" << xAxis->range().lower << "--" //<< xAxis->range().upper << "and" << yAxis->range().lower << "--" //<< yAxis->range().upper; emit plotRangesChangedSignal(m_context); } // AXES RANGE HISTORY-related functions /// KEYBOARD-related EVENTS void BasePlotWidget::keyPressEvent(QKeyEvent *event) { // qDebug() << "ENTER"; // We need this because some keys modify our behaviour. m_context.m_pressedKeyCode = event->key(); m_context.m_keyboardModifiers = QGuiApplication::queryKeyboardModifiers(); if(event->key() == Qt::Key_Left || event->key() == Qt::Key_Right || event->key() == Qt::Key_Up || event->key() == Qt::Key_Down) { return directionKeyPressEvent(event); } else if(event->key() == m_leftMousePseudoButtonKey || event->key() == m_rightMousePseudoButtonKey) { return mousePseudoButtonKeyPressEvent(event); } // Do not do anything here, because this function is used by derived classes // that will emit the signal below. Otherwise there are going to be multiple // signals sent. // qDebug() << "Going to emit keyPressEventSignal(m_context);"; // emit keyPressEventSignal(m_context); } //! Handle specific key codes and trigger respective actions. void BasePlotWidget::keyReleaseEvent(QKeyEvent *event) { m_context.m_releasedKeyCode = event->key(); // The keyboard key is being released, set the key code to 0. m_context.m_pressedKeyCode = 0; m_context.m_keyboardModifiers = QGuiApplication::queryKeyboardModifiers(); // Now test if the key that was released is one of the housekeeping keys. if(event->key() == Qt::Key_Backspace) { // qDebug(); // The user wants to iterate back in the x/y axis range history. restorePreviousAxesRangeHistory(); event->accept(); } else if(event->key() == Qt::Key_Space) { return spaceKeyReleaseEvent(event); } else if(event->key() == Qt::Key_Delete) { // The user wants to delete a graph. What graph is to be determined // programmatically: // If there is a single graph, then that is the graph to be removed. // If there are more than one graph, then only the ones that are selected // are to be removed. // Note that the user of this widget might want to provide the user with // the ability to specify if all the children graph needs to be removed // also. This can be coded in key modifiers. So provide the context. int graph_count = plottableCount(); if(!graph_count) { // qDebug() << "Not a single graph in the plot widget. Doing // nothing."; event->accept(); return; } if(graph_count == 1) { // qDebug() << "A single graph is in the plot widget. Emitting a graph // " "destruction requested signal for it:" //<< graph(); emit plottableDestructionRequestedSignal(this, graph(), m_context); } else { // At this point we know there are more than one graph in the plot // widget. We need to get the selected one (if any). QList selected_graph_list; selected_graph_list = selectedGraphs(); if(!selected_graph_list.size()) { event->accept(); return; } // qDebug() << "Number of selected graphs to be destrobyed:" //<< selected_graph_list.size(); for(int iter = 0; iter < selected_graph_list.size(); ++iter) { // qDebug() //<< "Emitting a graph destruction requested signal for graph:" //<< selected_graph_list.at(iter); emit plottableDestructionRequestedSignal( this, selected_graph_list.at(iter), m_context); // We do not do this, because we want the slot called by the // signal above to handle that removal. Remember that it is not // possible to delete graphs manually. // // removeGraph(selected_graph_list.at(iter)); } event->accept(); } } // End of // else if(event->key() == Qt::Key_Delete) else if(event->key() == Qt::Key_T) { // The user wants to toggle the visibiity of the tracers. m_shouldTracersBeVisible = !m_shouldTracersBeVisible; if(!m_shouldTracersBeVisible) hideTracers(); else showTracers(); event->accept(); } else if(event->key() == Qt::Key_Left || event->key() == Qt::Key_Right || event->key() == Qt::Key_Up || event->key() == Qt::Key_Down) { return directionKeyReleaseEvent(event); } else if(event->key() == m_leftMousePseudoButtonKey || event->key() == m_rightMousePseudoButtonKey) { return mousePseudoButtonKeyReleaseEvent(event); } else if(event->key() == Qt::Key_S) { // The user has asked to measure the horizontal size of the rectangle and // to start making a skewed selection rectangle. m_context.m_selectRectangleWidth = abs(m_context.m_currentDragPoint.x() - m_context.m_startDragPoint.x()); // qDebug() << "Set m_context.selectRectangleWidth to" //<< m_context.m_selectRectangleWidth << "upon release of S key"; } // At this point emit the signal, since we did not treat it. Maybe the // consumer widget wants to know that the keyboard key was released. emit keyReleaseEventSignal(m_context); } void BasePlotWidget::spaceKeyReleaseEvent([[maybe_unused]] QKeyEvent *event) { // qDebug(); } void BasePlotWidget::directionKeyPressEvent(QKeyEvent *event) { // qDebug() << "event key:" << event->key(); // The user is trying to move the positional cursor/markers. There are // multiple way they can do that: // // 1.a. Hitting the arrow left/right keys alone will search for next pixel. // 1.b. Hitting the arrow left/right keys with Alt modifier will search for a // multiple of pixels that might be equivalent to one 20th of the pixel width // of the plot widget. // 1.c Hitting the left/right keys with Alt and Shift modifiers will search // for a multiple of pixels that might be the equivalent to half of the pixel // width. // // 2. Hitting the Control modifier will move the cursor to the next data point // of the graph. int pixel_increment = 0; if(m_context.m_keyboardModifiers == Qt::NoModifier) pixel_increment = 1; else if(m_context.m_keyboardModifiers == Qt::AltModifier) pixel_increment = 50; // The user is moving the positional markers. This is equivalent to a // non-dragging cursor movement to the next pixel. Note that the origin is // located at the top left, so key down increments and key up decrements. if(event->key() == Qt::Key_Left) horizontalMoveMouseCursorCountPixels(-pixel_increment); else if(event->key() == Qt::Key_Right) horizontalMoveMouseCursorCountPixels(pixel_increment); else if(event->key() == Qt::Key_Up) verticalMoveMouseCursorCountPixels(-pixel_increment); else if(event->key() == Qt::Key_Down) verticalMoveMouseCursorCountPixels(pixel_increment); event->accept(); } void BasePlotWidget::directionKeyReleaseEvent(QKeyEvent *event) { // qDebug() << "event key:" << event->key(); event->accept(); } void BasePlotWidget::mousePseudoButtonKeyPressEvent( [[maybe_unused]] QKeyEvent *event) { // qDebug(); } void BasePlotWidget::mousePseudoButtonKeyReleaseEvent(QKeyEvent *event) { QPointF pixel_coordinates( xAxis->coordToPixel(m_context.m_lastCursorHoveredPoint.x()), yAxis->coordToPixel(m_context.m_lastCursorHoveredPoint.y())); Qt::MouseButton button = Qt::NoButton; QEvent::Type q_event_type = QEvent::MouseButtonPress; if(event->key() == m_leftMousePseudoButtonKey) { // Toggles the left mouse button on/off button = Qt::LeftButton; m_context.m_isLeftPseudoButtonKeyPressed = !m_context.m_isLeftPseudoButtonKeyPressed; if(m_context.m_isLeftPseudoButtonKeyPressed) q_event_type = QEvent::MouseButtonPress; else q_event_type = QEvent::MouseButtonRelease; } else if(event->key() == m_rightMousePseudoButtonKey) { // Toggles the right mouse button. button = Qt::RightButton; m_context.m_isRightPseudoButtonKeyPressed = !m_context.m_isRightPseudoButtonKeyPressed; if(m_context.m_isRightPseudoButtonKeyPressed) q_event_type = QEvent::MouseButtonPress; else q_event_type = QEvent::MouseButtonRelease; } // qDebug() << "pressed/released pseudo button:" << button //<< "q_event_type:" << q_event_type; // Synthesize a QMouseEvent and use it. QMouseEvent *mouse_event_p = new QMouseEvent(q_event_type, pixel_coordinates, mapToGlobal(pixel_coordinates.toPoint()), mapToGlobal(pixel_coordinates.toPoint()), button, button, m_context.m_keyboardModifiers, Qt::MouseEventSynthesizedByApplication); if(q_event_type == QEvent::MouseButtonPress) mousePressHandler(mouse_event_p); else mouseReleaseHandler(mouse_event_p); // event->accept(); } /// KEYBOARD-related EVENTS /// MOUSE-related EVENTS void BasePlotWidget::mouseMoveHandler(QMouseEvent *event) { // If we have no focus, then get it. See setFocus() to understand why asking // for focus is cosly and thus why we want to make this decision first. if(!hasFocus()) setFocus(); // qDebug() << (graph() != nullptr); // if(graph(0) != nullptr) // { // check if the widget contains some graphs // The event->button() must be by Qt instructions considered to be 0. // Whatever happens, we want to store the plot coordinates of the current // mouse cursor position (will be useful later for countless needs). // Fix from Qt5 to Qt6 #if QT_VERSION < 0x060000 QPointF mousePoint = event->localPos(); #else QPointF mousePoint = event->position(); #endif // qDebug() << "local mousePoint position in pixels:" << mousePoint; m_context.m_lastCursorHoveredPoint.setX(xAxis->pixelToCoord(mousePoint.x())); m_context.m_lastCursorHoveredPoint.setY(yAxis->pixelToCoord(mousePoint.y())); // qDebug() << "lastCursorHoveredPoint coord:" //<< m_context.m_lastCursorHoveredPoint; // Now, depending on the button(s) (if any) that are pressed or not, we // have a different processing. // qDebug(); if(m_context.m_pressedMouseButtons & Qt::LeftButton || m_context.m_pressedMouseButtons & Qt::RightButton) mouseMoveHandlerDraggingCursor(); else mouseMoveHandlerNotDraggingCursor(); // } // qDebug(); event->accept(); } void BasePlotWidget::mouseMoveHandlerNotDraggingCursor() { // qDebug(); m_context.m_isMouseDragging = false; // qDebug(); // We are not dragging the mouse (no button pressed), simply let this // widget's consumer know the position of the cursor and update the markers. // The consumer of this widget will update mouse cursor position at // m_context.m_lastCursorHoveredPoint if so needed. emit lastCursorHoveredPointSignal(m_context.m_lastCursorHoveredPoint); // qDebug(); // We are not dragging, so we do not show the region end tracer we only // show the anchoring start trace that might be of use if the user starts // using the arrow keys to move the cursor. if(mp_vEndTracerItem != nullptr) mp_vEndTracerItem->setVisible(false); // qDebug(); // Only bother with the tracers if the user wants them to be visible. // Their crossing point must be exactly at the last cursor-hovered point. if(m_shouldTracersBeVisible) { // We are not dragging, so only show the position markers (v and h); // qDebug(); if(mp_hPosTracerItem != nullptr) { // Horizontal position tracer. mp_hPosTracerItem->setVisible(true); mp_hPosTracerItem->start->setCoords( xAxis->range().lower, m_context.m_lastCursorHoveredPoint.y()); mp_hPosTracerItem->end->setCoords( xAxis->range().upper, m_context.m_lastCursorHoveredPoint.y()); } // qDebug(); // Vertical position tracer. if(mp_vPosTracerItem != nullptr) { mp_vPosTracerItem->setVisible(true); mp_vPosTracerItem->setVisible(true); mp_vPosTracerItem->start->setCoords( m_context.m_lastCursorHoveredPoint.x(), yAxis->range().upper); mp_vPosTracerItem->end->setCoords( m_context.m_lastCursorHoveredPoint.x(), yAxis->range().lower); } // qDebug(); replot(); } return; } void BasePlotWidget::mouseMoveHandlerDraggingCursor() { // qDebug(); m_context.m_isMouseDragging = true; // Now store the mouse position data into the the current drag point // member datum, that will be used in countless occasions later. m_context.m_currentDragPoint = m_context.m_lastCursorHoveredPoint; m_context.m_keyboardModifiers = QGuiApplication::queryKeyboardModifiers(); // When we drag (either keyboard or mouse), we hide the position markers // (black) and we show the start and end vertical markers for the region. // Then, we draw the horizontal region range marker that delimits // horizontally the dragged-over region. if(mp_hPosTracerItem != nullptr) mp_hPosTracerItem->setVisible(false); if(mp_vPosTracerItem != nullptr) mp_vPosTracerItem->setVisible(false); // Only bother with the tracers if the user wants them to be visible. if(m_shouldTracersBeVisible && (mp_vEndTracerItem != nullptr)) { // The vertical end tracer position must be refreshed. mp_vEndTracerItem->start->setCoords(m_context.m_currentDragPoint.x(), yAxis->range().upper); mp_vEndTracerItem->end->setCoords(m_context.m_currentDragPoint.x(), yAxis->range().lower); mp_vEndTracerItem->setVisible(true); } // Whatever the button, when we are dealing with the axes, we do not // want to show any of the tracers. if(m_context.m_wasClickOnXAxis || m_context.m_wasClickOnYAxis) { if(mp_hPosTracerItem != nullptr) mp_hPosTracerItem->setVisible(false); if(mp_vPosTracerItem != nullptr) mp_vPosTracerItem->setVisible(false); if(mp_vStartTracerItem != nullptr) mp_vStartTracerItem->setVisible(false); if(mp_vEndTracerItem != nullptr) mp_vEndTracerItem->setVisible(false); } else { // Since we are not dragging the mouse cursor over the axes, make sure // we store the drag directions in the context, as this might be // useful for later operations. m_context.recordDragDirections(); // qDebug() << m_context.toString(); } // Because when we drag the mouse button (whatever the button) we need to // know what is the drag delta (distance between start point and current // point of the drag operation) on both axes, ask that these x|y deltas be // computed. calculateDragDeltas(); // Now deal with the BUTTON-SPECIFIC CODE. if(m_context.m_mouseButtonsAtMousePress & Qt::LeftButton) { return mouseMoveHandlerLeftButtonDraggingCursor(); } else if(m_context.m_mouseButtonsAtMousePress & Qt::RightButton) { return mouseMoveHandlerRightButtonDraggingCursor(); } } void BasePlotWidget::mouseMoveHandlerLeftButtonDraggingCursor() { // qDebug() << "The left button is dragging."; // Set the context.m_isMeasuringDistance to false, which later might be set to // true if effectively we are measuring a distance. This is required because // the derived widget classes might want to know if they have to perform // some action on the basis that context is measuring a distance, for // example the mass spectrum-specific widget might want to compute // deconvolutions. m_context.m_isMeasuringDistance = false; // Let's first check if the mouse drag operation originated on either // axis. In that case, the user is performing axis reframing or rescaling. if(m_context.m_wasClickOnXAxis || m_context.m_wasClickOnYAxis) { // qDebug() << "Click was on one of the axes."; if(m_context.m_keyboardModifiers & Qt::ControlModifier) { // The user is asking a rescale of the plot. // We know that we do not want the tracers when we perform axis // rescaling operations. if(mp_hPosTracerItem != nullptr) mp_hPosTracerItem->setVisible(false); if(mp_vPosTracerItem != nullptr) mp_vPosTracerItem->setVisible(false); if(mp_vStartTracerItem != nullptr) mp_vStartTracerItem->setVisible(false); if(mp_vEndTracerItem != nullptr) mp_vEndTracerItem->setVisible(false); // This operation is particularly intensive, thus we want to // reduce the number of calculations by skipping this calculation // a number of times. The user can ask for this feature by // clicking the 'Q' letter. if(m_context.m_pressedKeyCode == Qt::Key_Q) { if(m_mouseMoveHandlerSkipCount < m_mouseMoveHandlerSkipAmount) { m_mouseMoveHandlerSkipCount++; return; } else { m_mouseMoveHandlerSkipCount = 0; } } // qDebug() << "Asking that the axes be rescaled."; axisRescale(); } else { // The user was simply dragging the axis. Just pan, that is slide // the plot in the same direction as the mouse movement and with the // same amplitude. // qDebug() << "Asking that the axes be panned."; axisPan(); } return; } // At this point we understand that the user was not performing any // panning/rescaling operation by clicking on any one of the axes.. Go on // with other possibilities. // Let's check if the user is actually drawing a rectangle (covering a // real area) or is drawing a line. // qDebug() << "The mouse dragging did not originate on an axis."; if(isVerticalDisplacementAboveThreshold()) { // qDebug() << "Apparently the selection is a real rectangle."; // When we draw a rectangle the tracers are of no use. if(mp_hPosTracerItem != nullptr) mp_hPosTracerItem->setVisible(false); if(mp_vPosTracerItem != nullptr) mp_vPosTracerItem->setVisible(false); if(mp_vStartTracerItem != nullptr) mp_vStartTracerItem->setVisible(false); if(mp_vEndTracerItem != nullptr) mp_vEndTracerItem->setVisible(false); // Draw the rectangle, false, not as line segment and // false, not for integration drawSelectionRectangleAndPrepareZoom(false, false); // Draw the selection width/height text drawXDeltaFeatures(); drawYDeltaFeatures(); // qDebug() << "The selection polygon:" //<< m_context.m_selectionPolygon.toString(); } else { // qDebug() << "Apparently we are measuring a delta."; // Draw the rectangle, true, as line segment and // false, not for integration drawSelectionRectangleAndPrepareZoom(true, false); // qDebug() << "The selection polygon:" //<< m_context.m_selectionPolygon.toString(); // The pure position tracers should be hidden. if(mp_hPosTracerItem != nullptr) mp_hPosTracerItem->setVisible(true); if(mp_vPosTracerItem != nullptr) mp_vPosTracerItem->setVisible(true); // Then, make sure the region range vertical tracers are visible. if(mp_vStartTracerItem != nullptr) mp_vStartTracerItem->setVisible(true); if(mp_vEndTracerItem != nullptr) mp_vEndTracerItem->setVisible(true); // Draw the selection width text drawXDeltaFeatures(); } } void BasePlotWidget::mouseMoveHandlerRightButtonDraggingCursor() { // qDebug() << "The right button is dragging."; // Set the context.m_isMeasuringDistance to false, which later might be set to // true if effectively we are measuring a distance. This is required because // the derived widgets might want to know if they have to perform some // action on the basis that context is measuring a distance, for example the // mass spectrum-specific widget might want to compute deconvolutions. m_context.m_isMeasuringDistance = false; if(isVerticalDisplacementAboveThreshold()) { // qDebug() << "Apparently the selection is a real rectangle."; // When we draw a rectangle the tracers are of no use. if(mp_hPosTracerItem != nullptr) mp_hPosTracerItem->setVisible(false); if(mp_vPosTracerItem != nullptr) mp_vPosTracerItem->setVisible(false); if(mp_vStartTracerItem != nullptr) mp_vStartTracerItem->setVisible(false); if(mp_vEndTracerItem != nullptr) mp_vEndTracerItem->setVisible(false); // Draw the rectangle, false for as_line_segment and true, for // integration. drawSelectionRectangleAndPrepareZoom(false, true); // Draw the selection width/height text drawXDeltaFeatures(); drawYDeltaFeatures(); } else { // qDebug() << "Apparently the selection is a not a rectangle."; // Draw the rectangle, true, as line segment and // false, true for integration drawSelectionRectangleAndPrepareZoom(true, true); // Draw the selection width text drawXDeltaFeatures(); } // Draw the selection width text drawXDeltaFeatures(); } void BasePlotWidget::mousePressHandler(QMouseEvent *event) { // When the user clicks this widget it has to take focus. setFocus(); // Fix from Qt5 to Qt6 // QPointF mousePoint = event->localPos(); #if QT_VERSION < 0x060000 QPointF mousePoint = event->localPos(); #else QPointF mousePoint = event->position(); #endif m_context.m_lastPressedMouseButton = event->button(); m_context.m_mouseButtonsAtMousePress = event->buttons(); // The pressedMouseButtons must continually inform on the status of // pressed buttons so add the pressed button. m_context.m_pressedMouseButtons |= event->button(); // qDebug().noquote() << m_context.toString(); // In all the processing of the events, we need to know if the user is // clicking somewhere with the intent to change the plot ranges (reframing // or rescaling the plot). // // Reframing the plot means that the new x and y axes ranges are modified // so that they match the region that the user has encompassed by left // clicking the mouse and dragging it over the plot. That is we reframe // the plot so that it contains only the "selected" region. // // Rescaling the plot means the the new x|y axis range is modified such // that the lower axis range is constant and the upper axis range is moved // either left or right by the same amont as the x|y delta encompassed by // the user moving the mouse. The axis is thus either compressed (mouse // movement is leftwards) or un-compressed (mouse movement is rightwards). // There are two ways to perform axis range modifications: // // 1. By clicking on any of the axes // 2. By clicking on the plot region but using keyboard key modifiers, // like Alt and Ctrl. // // We need to know both cases separately which is why we need to perform a // number of tests below. // Let's check if the click is on the axes, either X or Y, because that // will allow us to take proper actions. if(isClickOntoXAxis(mousePoint)) { // The X axis was clicked upon, we need to document that: // qDebug() << __FILE__ << __LINE__ //<< "Layout element is axisRect and actually on an X axis part."; m_context.m_wasClickOnXAxis = true; // int currentInteractions = interactions(); // currentInteractions |= QCP::iRangeDrag; // setInteractions((QCP::Interaction)currentInteractions); // axisRect()->setRangeDrag(xAxis->orientation()); } else m_context.m_wasClickOnXAxis = false; if(isClickOntoYAxis(mousePoint)) { // The Y axis was clicked upon, we need to document that: // qDebug() << __FILE__ << __LINE__ //<< "Layout element is axisRect and actually on an Y axis part."; m_context.m_wasClickOnYAxis = true; // int currentInteractions = interactions(); // currentInteractions |= QCP::iRangeDrag; // setInteractions((QCP::Interaction)currentInteractions); // axisRect()->setRangeDrag(yAxis->orientation()); } else m_context.m_wasClickOnYAxis = false; // At this point, let's see if we need to remove the QCP::iRangeDrag bit: if(!m_context.m_wasClickOnXAxis && !m_context.m_wasClickOnYAxis) { // qDebug() << __FILE__ << __LINE__ // << "Click outside of axes."; // int currentInteractions = interactions(); // currentInteractions = currentInteractions & ~QCP::iRangeDrag; // setInteractions((QCP::Interaction)currentInteractions); } m_context.m_startDragPoint.setX(xAxis->pixelToCoord(mousePoint.x())); m_context.m_startDragPoint.setY(yAxis->pixelToCoord(mousePoint.y())); // Now install the vertical start tracer at the last cursor hovered // position. if((m_shouldTracersBeVisible) && (mp_vStartTracerItem != nullptr)) mp_vStartTracerItem->setVisible(true); if(mp_vStartTracerItem != nullptr) { mp_vStartTracerItem->start->setCoords( m_context.m_lastCursorHoveredPoint.x(), yAxis->range().upper); mp_vStartTracerItem->end->setCoords( m_context.m_lastCursorHoveredPoint.x(), yAxis->range().lower); } replot(); } void BasePlotWidget::mouseReleaseHandler(QMouseEvent *event) { // Now the real code of this function. m_context.m_lastReleasedMouseButton = event->button(); // The event->buttons() is the description of the buttons that are pressed at // the moment the handler is invoked, that is now. If left and right were // pressed, and left was released, event->buttons() would be right. m_context.m_mouseButtonsAtMouseRelease = event->buttons(); // The pressedMouseButtons must continually inform on the status of pressed // buttons so remove the released button. m_context.m_pressedMouseButtons ^= event->button(); // qDebug().noquote() << m_context.toString(); // We'll need to know if modifiers were pressed a the moment the user // released the mouse button. m_context.m_keyboardModifiers = QGuiApplication::keyboardModifiers(); if(!m_context.m_isMouseDragging) { // Let the user know that the mouse was *not* being dragged. m_context.m_wasMouseDragging = false; event->accept(); return; } // Let the user know that the mouse was being dragged. m_context.m_wasMouseDragging = true; // We cannot hide all items in one go because we rely on their visibility // to know what kind of dragging operation we need to perform (line-only // X-based zoom or rectangle-based X- and Y-based zoom, for example). The // only thing we know is that we can make the text invisible. // Same for the x delta text item mp_xDeltaTextItem->setVisible(false); mp_yDeltaTextItem->setVisible(false); // We do not show the end vertical region range marker. mp_vEndTracerItem->setVisible(false); // Horizontal position tracer. mp_hPosTracerItem->setVisible(true); mp_hPosTracerItem->start->setCoords(xAxis->range().lower, m_context.m_lastCursorHoveredPoint.y()); mp_hPosTracerItem->end->setCoords(xAxis->range().upper, m_context.m_lastCursorHoveredPoint.y()); // Vertical position tracer. mp_vPosTracerItem->setVisible(true); mp_vPosTracerItem->setVisible(true); mp_vPosTracerItem->start->setCoords(m_context.m_lastCursorHoveredPoint.x(), yAxis->range().upper); mp_vPosTracerItem->end->setCoords(m_context.m_lastCursorHoveredPoint.x(), yAxis->range().lower); // Force replot now because later that call might not be performed. replot(); // If we were using the "quantum" display for the rescale of the axes // using the Ctrl-modified left button click drag in the axes, then reset // the count to 0. m_mouseMoveHandlerSkipCount = 0; // Now that we have computed the useful ranges, we need to check what to do // depending on the button that was pressed. if(m_context.m_lastReleasedMouseButton == Qt::LeftButton) { return mouseReleaseHandlerLeftButton(); } else if(m_context.m_lastReleasedMouseButton == Qt::RightButton) { return mouseReleaseHandlerRightButton(); } // By definition we are stopping the drag operation by releasing the mouse // button. Whatever that mouse button was pressed before and if there was // one pressed before. We cannot set that boolean value to false before // this place, because we call a number of routines above that need to know // that dragging was occurring. Like mouseReleaseHandledEvent(event) for // example. m_context.m_isMouseDragging = false; event->accept(); return; } void BasePlotWidget::mouseReleaseHandlerLeftButton() { if(m_context.m_wasClickOnXAxis || m_context.m_wasClickOnYAxis) { // When the mouse move handler pans the plot, we cannot store each axes // range history element that would mean store a huge amount of such // elements, as many element as there are mouse move event handled by // the Qt event queue. But we can store an axis range history element // for the last situation of the mouse move: when the button is // released: updateAxesRangeHistory(); emit plotRangesChangedSignal(m_context); replot(); // Nothing else to do. return; } // There are two possibilities: // // 1. The full selection polygon (four lines) were currently drawn, which // means the user was willing to perform a zoom operation // // 2. Only the first top line was drawn, which means the user was dragging // the cursor horizontally. That might have two ends, as shown below. // So, first check what is drawn of the selection polygon. PolygonType current_selection_polygon_type = whatIsVisibleOfTheSelectionRectangle(); // Now that we know what was currently drawn of the selection polygon, we can // remove it. true to reset the values to 0. hideSelectionRectangle(true); // Force replot now because later that call might not be performed. replot(); if(current_selection_polygon_type == PolygonType::FULL_POLYGON) { // qDebug() << "Yes, the full polygon was visible"; // If we were dragging with the left button pressed and could draw a // rectangle, then we were preparing a zoom operation. Let's bring that // operation to its accomplishment. axisZoom(); // qDebug() << "The selection polygon:" //<< m_context.m_selectionPolygon.toString(); return; } else if(current_selection_polygon_type == PolygonType::TOP_LINE) { // qDebug() << "No, only the top line of the full polygon was visible"; // The user was dragging the left mouse cursor and that may mean they were // measuring a distance or willing to perform a special zoom operation if // the Ctrl key was down. // If the user started by clicking in the plot region, dragged the mouse // cursor with the left button and pressed the Ctrl modifier, then that // means that they wanted to do a rescale over the x-axis in the form of a // reframing. if(m_context.m_keyboardModifiers & Qt::ControlModifier) { return axisReframe(); // qDebug() << "The selection polygon:" //<< m_context.m_selectionPolygon.toString(); } } // else // qDebug() << "Another possibility."; } void BasePlotWidget::mouseReleaseHandlerRightButton() { // qDebug(); // The right button is used for the integrations. Not for axis range // operations. So all we have to do is remove the various graphics items and // send a signal with the context that contains all the data required by the // user to perform the integrations over the right plot regions. // Whatever we were doing we need to make the selection line invisible: if(mp_xDeltaTextItem->visible()) mp_xDeltaTextItem->setVisible(false); if(mp_yDeltaTextItem->visible()) mp_yDeltaTextItem->setVisible(false); // Also make the vertical end tracer invisible. mp_vEndTracerItem->setVisible(false); // Once the integration is asked for, then the selection rectangle if of no // more use. hideSelectionRectangle(); // Force replot now because later that call might not be performed. replot(); // Note that we only request an integration if the x-axis delta is enough. double x_delta_pixel = fabs(xAxis->coordToPixel(m_context.m_currentDragPoint.x()) - xAxis->coordToPixel(m_context.m_startDragPoint.x())); if(x_delta_pixel > 3) emit integrationRequestedSignal(m_context); // else // qDebug() << "Not asking for integration."; } void BasePlotWidget::mouseWheelHandler([[maybe_unused]] QWheelEvent *event) { // We should record the new range values each time the wheel is used to // zoom/unzoom. m_context.m_xRange = QCPRange(xAxis->range()); m_context.m_yRange = QCPRange(yAxis->range()); // qDebug() << "New x range: " << m_context.m_xRange; // qDebug() << "New y range: " << m_context.m_yRange; updateAxesRangeHistory(); emit plotRangesChangedSignal(m_context); emit mouseWheelEventSignal(m_context); event->accept(); } void BasePlotWidget::axisDoubleClickHandler( QCPAxis *axis, [[maybe_unused]] QCPAxis::SelectablePart part, QMouseEvent *event) { // qDebug(); m_context.m_keyboardModifiers = QGuiApplication::queryKeyboardModifiers(); if(m_context.m_keyboardModifiers & Qt::ControlModifier) { // qDebug(); // If the Ctrl modifiers is active, then both axes are to be reset. Also // the histories are reset also. rescaleAxes(); resetAxesRangeHistory(); } else { // qDebug(); // Only the axis passed as parameter is to be rescaled. // Reset the range of that axis to the max view possible. axis->rescale(); updateAxesRangeHistory(); event->accept(); } // The double-click event does not cancel the mouse press event. That is, if // left-double-clicking, at the end of the operation the button still // "pressed". We need to remove manually the button from the pressed buttons // context member. m_context.m_pressedMouseButtons ^= event->button(); updateContextXandYAxisRanges(); emit plotRangesChangedSignal(m_context); replot(); } bool BasePlotWidget::isClickOntoXAxis(const QPointF &mousePoint) { QCPLayoutElement *layoutElement = layoutElementAt(mousePoint); if(layoutElement && layoutElement == dynamic_cast(axisRect())) { // The graph is *inside* the axisRect that is the outermost envelope of // the graph. Thus, if we want to know if the click was indeed on an // axis, we need to check what selectable part of the the axisRect we // were // clicking: QCPAxis::SelectablePart selectablePart; selectablePart = xAxis->getPartAt(mousePoint); if(selectablePart == QCPAxis::spAxisLabel || selectablePart == QCPAxis::spAxis || selectablePart == QCPAxis::spTickLabels) return true; } return false; } bool BasePlotWidget::isClickOntoYAxis(const QPointF &mousePoint) { QCPLayoutElement *layoutElement = layoutElementAt(mousePoint); if(layoutElement && layoutElement == dynamic_cast(axisRect())) { // The graph is *inside* the axisRect that is the outermost envelope of // the graph. Thus, if we want to know if the click was indeed on an // axis, we need to check what selectable part of the the axisRect we // were // clicking: QCPAxis::SelectablePart selectablePart; selectablePart = yAxis->getPartAt(mousePoint); if(selectablePart == QCPAxis::spAxisLabel || selectablePart == QCPAxis::spAxis || selectablePart == QCPAxis::spTickLabels) return true; } return false; } /// MOUSE-related EVENTS /// MOUSE MOVEMENTS mouse/keyboard-triggered int BasePlotWidget::dragDirection() { // The user is dragging the mouse, probably to rescale the axes, but we need // to sort out in which direction the drag is happening. // This function should be called after calculateDragDeltas, so that // m_context has the proper x/y delta values that we'll compare. // Note that we cannot compare simply x or y deltas because the y axis might // have a different scale that the x axis. So we first need to convert the // positions to pixels. double x_delta_pixel = fabs(xAxis->coordToPixel(m_context.m_currentDragPoint.x()) - xAxis->coordToPixel(m_context.m_startDragPoint.x())); double y_delta_pixel = fabs(yAxis->coordToPixel(m_context.m_currentDragPoint.y()) - yAxis->coordToPixel(m_context.m_startDragPoint.y())); if(x_delta_pixel > y_delta_pixel) return Qt::Horizontal; return Qt::Vertical; } void BasePlotWidget::moveMouseCursorGraphCoordToGlobal(QPointF graph_coordinates) { // First convert the graph coordinates to pixel coordinates. QPointF pixels_coordinates(xAxis->coordToPixel(graph_coordinates.x()), yAxis->coordToPixel(graph_coordinates.y())); moveMouseCursorPixelCoordToGlobal(pixels_coordinates.toPoint()); } void BasePlotWidget::moveMouseCursorPixelCoordToGlobal(QPointF pixel_coordinates) { // qDebug() << "Calling set pos with new cursor position."; QCursor::setPos(mapToGlobal(pixel_coordinates.toPoint())); } void BasePlotWidget::horizontalMoveMouseCursorCountPixels(int pixel_count) { QPointF graph_coord = horizontalGetGraphCoordNewPointCountPixels(pixel_count); QPointF pixel_coord(xAxis->coordToPixel(graph_coord.x()), yAxis->coordToPixel(graph_coord.y())); // Now we need ton convert the new coordinates to the global position system // and to move the cursor to that new position. That will create an event to // move the mouse cursor. moveMouseCursorPixelCoordToGlobal(pixel_coord.toPoint()); } QPointF BasePlotWidget::horizontalGetGraphCoordNewPointCountPixels(int pixel_count) { QPointF pixel_coordinates( xAxis->coordToPixel(m_context.m_lastCursorHoveredPoint.x()) + pixel_count, yAxis->coordToPixel(m_context.m_lastCursorHoveredPoint.y())); // Now convert back to local coordinates. QPointF graph_coordinates(xAxis->pixelToCoord(pixel_coordinates.x()), yAxis->pixelToCoord(pixel_coordinates.y())); return graph_coordinates; } void BasePlotWidget::verticalMoveMouseCursorCountPixels(int pixel_count) { QPointF graph_coord = verticalGetGraphCoordNewPointCountPixels(pixel_count); QPointF pixel_coord(xAxis->coordToPixel(graph_coord.x()), yAxis->coordToPixel(graph_coord.y())); // Now we need ton convert the new coordinates to the global position system // and to move the cursor to that new position. That will create an event to // move the mouse cursor. moveMouseCursorPixelCoordToGlobal(pixel_coord.toPoint()); } QPointF BasePlotWidget::verticalGetGraphCoordNewPointCountPixels(int pixel_count) { QPointF pixel_coordinates( xAxis->coordToPixel(m_context.m_lastCursorHoveredPoint.x()), yAxis->coordToPixel(m_context.m_lastCursorHoveredPoint.y()) + pixel_count); // Now convert back to local coordinates. QPointF graph_coordinates(xAxis->pixelToCoord(pixel_coordinates.x()), yAxis->pixelToCoord(pixel_coordinates.y())); return graph_coordinates; } /// MOUSE MOVEMENTS mouse/keyboard-triggered /// RANGE-related functions QCPRange BasePlotWidget::getRangeX(bool &found_range, int index) const { QCPGraph *graph_p = graph(index); if(graph_p == nullptr) qFatal("Programming error."); return graph_p->getKeyRange(found_range); } QCPRange BasePlotWidget::getRangeY(bool &found_range, int index) const { QCPGraph *graph_p = graph(index); if(graph_p == nullptr) qFatal("Programming error."); return graph_p->getValueRange(found_range); } QCPRange BasePlotWidget::getRange(Axis axis, RangeType range_type, bool &found_range) const { // Iterate in all the graphs in this widget and return a QCPRange that has // its lower member as the greatest lower value of all // its upper member as the smallest upper value of all if(!graphCount()) { found_range = false; return QCPRange(0, 1); } if(graphCount() == 1) return graph()->getKeyRange(found_range); bool found_at_least_one_range = false; // Create an invalid range. QCPRange result_range(QCPRange::minRange + 1, QCPRange::maxRange + 1); for(int iter = 0; iter < graphCount(); ++iter) { QCPRange temp_range; bool found_range_for_iter = false; QCPGraph *graph_p = graph(iter); // Depending on the axis param, select the key or value range. if(axis == Axis::x) temp_range = graph_p->getKeyRange(found_range_for_iter); else if(axis == Axis::y) temp_range = graph_p->getValueRange(found_range_for_iter); else qFatal("Cannot reach this point. Programming error."); // Was a range found for the iterated graph ? If not skip this // iteration. if(!found_range_for_iter) continue; // While the innermost_range is invalid, we need to seed it with a good // one. So check this. if(!QCPRange::validRange(result_range)) qFatal("The obtained range is invalid !"); // At this point we know the obtained range is OK. result_range = temp_range; // We found at least one valid range! found_at_least_one_range = true; // At this point we have two valid ranges to compare. Depending on // range_type, we need to perform distinct comparisons. if(range_type == RangeType::innermost) { if(temp_range.lower > result_range.lower) result_range.lower = temp_range.lower; if(temp_range.upper < result_range.upper) result_range.upper = temp_range.upper; } else if(range_type == RangeType::outermost) { if(temp_range.lower < result_range.lower) result_range.lower = temp_range.lower; if(temp_range.upper > result_range.upper) result_range.upper = temp_range.upper; } else qFatal("Cannot reach this point. Programming error."); // Continue to next graph, if any. } // End of // for(int iter = 0; iter < graphCount(); ++iter) // Let the caller know if we found at least one range. found_range = found_at_least_one_range; return result_range; } QCPRange BasePlotWidget::getInnermostRangeX(bool &found_range) const { return getRange(Axis::x, RangeType::innermost, found_range); } QCPRange BasePlotWidget::getOutermostRangeX(bool &found_range) const { return getRange(Axis::x, RangeType::outermost, found_range); } QCPRange BasePlotWidget::getInnermostRangeY(bool &found_range) const { return getRange(Axis::y, RangeType::innermost, found_range); } QCPRange BasePlotWidget::getOutermostRangeY(bool &found_range) const { return getRange(Axis::y, RangeType::outermost, found_range); } /// RANGE-related functions /// PLOTTING / REPLOTTING functions void BasePlotWidget::axisRescale() { // Get the current x lower/upper range, that is, leftmost/rightmost x // coordinate. double xLower = xAxis->range().lower; double xUpper = xAxis->range().upper; // Get the current y lower/upper range, that is, bottommost/topmost y // coordinate. double yLower = yAxis->range().lower; double yUpper = yAxis->range().upper; // This function is called only when the user has clicked on the x/y axis or // when the user has dragged the left mouse button with the Ctrl key // modifier. The m_context.m_wasClickOnXAxis is then simulated in the mouse // move handler. So we need to test which axis was clicked-on. if(m_context.m_wasClickOnXAxis) { // We are changing the range of the X axis. // What is the x delta ? double xDelta = m_context.m_currentDragPoint.x() - m_context.m_startDragPoint.x(); // If xDelta is < 0, the we were dragging from right to left, we are // compressing the view on the x axis, by adding new data to the right // hand size of the graph. So we add xDelta to the upper bound of the // range. Otherwise we are uncompressing the view on the x axis and // remove the xDelta from the upper bound of the range. This is why we // have the // '-' // and not '+' below; // qDebug() << "Setting xaxis:" << xLower << "--" << xUpper - xDelta; xAxis->setRange(xLower, xUpper - xDelta); } // End of // if(m_context.m_wasClickOnXAxis) else // that is, if(m_context.m_wasClickOnYAxis) { // We are changing the range of the Y axis. // What is the y delta ? double yDelta = m_context.m_currentDragPoint.y() - m_context.m_startDragPoint.y(); // See above for an explanation of the computation. yAxis->setRange(yLower, yUpper - yDelta); // Old version // if(yDelta < 0) //{ //// The dragging operation was from top to bottom, we are enlarging //// the range (thus, we are unzooming the view, since the widget //// always has the same size). // yAxis->setRange(yLower, yUpper + fabs(yDelta)); //} // else //{ //// The dragging operation was from bottom to top, we are reducing //// the range (thus, we are zooming the view, since the widget //// always has the same size). // yAxis->setRange(yLower, yUpper - fabs(yDelta)); //} } // End of // else // that is, if(m_context.m_wasClickOnYAxis) // Update the context with the current axes ranges updateContextXandYAxisRanges(); emit plotRangesChangedSignal(m_context); replot(); } void BasePlotWidget::axisReframe() { // double sorted_start_drag_point_x = // std::min(m_context.m_startDragPoint.x(), m_context.m_currentDragPoint.x()); // xAxis->setRange(sorted_start_drag_point_x, // sorted_start_drag_point_x + fabs(m_context.m_xDelta)); xAxis->setRange( QCPRange(m_context.m_xRegionRangeStart, m_context.m_xRegionRangeEnd)); // Note that the y axis should be rescaled from current lower value to new // upper value matching the y-axis position of the cursor when the mouse // button was released. yAxis->setRange(xAxis->range().lower, std::max(m_context.m_yRegionRangeStart, m_context.m_yRegionRangeEnd)); // qDebug() << "xaxis:" << xAxis->range().lower << "-" << // xAxis->range().upper //<< "yaxis:" << yAxis->range().lower << "-" << yAxis->range().upper; updateContextXandYAxisRanges(); updateAxesRangeHistory(); emit plotRangesChangedSignal(m_context); replot(); } void BasePlotWidget::axisZoom() { // Use the m_context.m_xRegionRangeStart/End values, but we need to sort the // values before using them, because now we want to really have the lower x // value. Simply craft a QCPRange that will swap the values if lower is not // < than upper QCustomPlot calls this normalization). xAxis->setRange( QCPRange(m_context.m_xRegionRangeStart, m_context.m_xRegionRangeEnd)); yAxis->setRange( QCPRange(m_context.m_yRegionRangeStart, m_context.m_yRegionRangeEnd)); updateContextXandYAxisRanges(); updateAxesRangeHistory(); emit plotRangesChangedSignal(m_context); replot(); } void BasePlotWidget::axisPan() { // Sanity check if(!m_context.m_wasClickOnXAxis && !m_context.m_wasClickOnYAxis) qFatal( "This function can only be called if the mouse click was on one of the " "axes"); if(m_context.m_wasClickOnXAxis) { xAxis->setRange(m_context.m_xRange.lower - m_context.m_xDelta, m_context.m_xRange.upper - m_context.m_xDelta); } if(m_context.m_wasClickOnYAxis) { yAxis->setRange(m_context.m_yRange.lower - m_context.m_yDelta, m_context.m_yRange.upper - m_context.m_yDelta); } updateContextXandYAxisRanges(); // qDebug() << "The updated context:" << m_context.toString(); // We cannot store the new ranges in the history, because the pan operation // involved a huge quantity of micro-movements elicited upon each mouse move // cursor event so we would have a huge history. // updateAxesRangeHistory(); // Now that the context has the right range values, we can emit the // signal that will be used by this plot widget users, typically to // abide by the x/y range lock required by the user. emit plotRangesChangedSignal(m_context); replot(); } void BasePlotWidget::replotWithAxesRanges(QCPRange xAxisRange, QCPRange yAxisRange, Axis axis) { // qDebug() << "With axis:" << (int)axis; if(static_cast(axis) & static_cast(Axis::x)) { xAxis->setRange(xAxisRange.lower, xAxisRange.upper); } if(static_cast(axis) & static_cast(Axis::y)) { yAxis->setRange(yAxisRange.lower, yAxisRange.upper); } // We do not want to update the history, because there would be way too // much history items, since this function is called upon mouse moving // handling and not only during mouse release events. // updateAxesRangeHistory(); replot(); } void BasePlotWidget::replotWithAxisRangeX(double lower, double upper) { // qDebug(); xAxis->setRange(lower, upper); replot(); } void BasePlotWidget::replotWithAxisRangeY(double lower, double upper) { // qDebug(); yAxis->setRange(lower, upper); replot(); } /// PLOTTING / REPLOTTING functions /// PLOT ITEMS : TRACER TEXT ITEMS... //! Hide the selection line, the xDelta text and the zoom rectangle items. void BasePlotWidget::hideAllPlotItems() { mp_xDeltaTextItem->setVisible(false); mp_yDeltaTextItem->setVisible(false); // mp_zoomRectItem->setVisible(false); hideSelectionRectangle(); // Force a replot to make sure the action is immediately visible by the // user, even without moving the mouse. replot(); } //! Show the traces (vertical and horizontal). void BasePlotWidget::showTracers() { m_shouldTracersBeVisible = true; mp_vPosTracerItem->setVisible(true); mp_hPosTracerItem->setVisible(true); mp_vStartTracerItem->setVisible(true); mp_vEndTracerItem->setVisible(true); // Force a replot to make sure the action is immediately visible by the // user, even without moving the mouse. replot(); } //! Hide the traces (vertical and horizontal). void BasePlotWidget::hideTracers() { m_shouldTracersBeVisible = false; mp_hPosTracerItem->setVisible(false); mp_vPosTracerItem->setVisible(false); mp_vStartTracerItem->setVisible(false); mp_vEndTracerItem->setVisible(false); // Force a replot to make sure the action is immediately visible by the // user, even without moving the mouse. replot(); } void BasePlotWidget::drawSelectionRectangleAndPrepareZoom(bool as_line_segment, bool for_integration) { // The user has dragged the mouse left button on the graph, which means he // is willing to draw a selection rectangle, either for zooming-in or for // integration. if(mp_xDeltaTextItem != nullptr) mp_xDeltaTextItem->setVisible(false); if(mp_yDeltaTextItem != nullptr) mp_yDeltaTextItem->setVisible(false); // Ensure the right selection rectangle is drawn. updateSelectionRectangle(as_line_segment, for_integration); // Note that if we draw a zoom rectangle, then we are certainly not // measuring anything. So set the boolean value to false so that the user of // this widget or derived classes know that there is nothing to perform upon // (like deconvolution, for example). m_context.m_isMeasuringDistance = false; // Also remove the delta value from the pipeline by sending a simple // distance without measurement signal. emit xAxisMeasurementSignal(m_context, false); replot(); } void BasePlotWidget::drawXDeltaFeatures() { // The user is dragging the mouse over the graph and we want them to know what // is the x delta value, that is the span between the point at the start of // the drag and the current drag position. // FIXME: is this still true? // // We do not want to show the position markers because the only horiontal // line to be visible must be contained between the start and end vertiacal // tracer items. if(mp_hPosTracerItem != nullptr) mp_hPosTracerItem->setVisible(false); if(mp_vPosTracerItem != nullptr) mp_vPosTracerItem->setVisible(false); // We want to draw the text in the middle position of the leftmost-rightmost // point, even with skewed rectangle selection. QPointF leftmost_point = m_context.m_selectionPolygon.getLeftMostPoint(); // qDebug() << "leftmost_point:" << leftmost_point; QPointF rightmost_point = m_context.m_selectionPolygon.getRightMostPoint(); // qDebug() << "rightmost_point:" << rightmost_point; double x_axis_center_position = leftmost_point.x() + (rightmost_point.x() - leftmost_point.x()) / 2; // qDebug() << "x_axis_center_position:" << x_axis_center_position; // We want the text to print inside the rectangle, always at the current drag // point so the eye can follow the delta value while looking where to drag the // mouse. To position the text inside the rectangle, we need to know what is // the drag direction. // Set aside a point instance to store the pixel coordinates of the text. QPointF pixel_coordinates; // What is the distance between the rectangle line at current drag point and // the text itself. int pixels_away_from_line = 15; // ATTENTION: the pixel coordinates for the vertical direction go in reverse // order with respect to the y axis values !!! That is pixel(0,0) is top left // of the graph. if(static_cast(m_context.m_dragDirections) & static_cast(DragDirections::TOP_TO_BOTTOM)) { // We need to print inside the rectangle, that is pixels_above_line pixels // to the bottom, so with pixel y value decremented of that // pixels_above_line value (one would have expected to increment that // value, along the y axis, but the coordinates in pixel go in reverse // order). pixels_away_from_line *= -1; } double y_axis_pixel_coordinate = yAxis->coordToPixel(m_context.m_currentDragPoint.y()); double y_axis_modified_pixel_coordinate = y_axis_pixel_coordinate + pixels_away_from_line; pixel_coordinates.setX(x_axis_center_position); pixel_coordinates.setY(y_axis_modified_pixel_coordinate); // Now convert back to graph coordinates. QPointF graph_coordinates(xAxis->pixelToCoord(pixel_coordinates.x()), yAxis->pixelToCoord(pixel_coordinates.y())); if(mp_xDeltaTextItem != nullptr) { mp_xDeltaTextItem->position->setCoords(x_axis_center_position, graph_coordinates.y()); // Dynamically set the number of decimals to ensure we can read // a meaning full delta value even if it is very very very small. // That is, allow one to read 0.00333, 0.000333, 1.333 and so on. // Unbelievable: doing the line below provides a proper decimals value // later on, while using the commented value (not fabs()) does not when // dragging the cursor from right to left, that is, having a m_xDelta that // is negative (destination - origin on the x axis with destination's // value lower than origin's value). double x_delta = fabs(m_context.m_xDelta); // When m_context.m_xDelta is negative (not using fabs()), then the // decimals computation below does not work! // double x_delta = m_context.m_xDelta; // qDebug() << "xDelta in context:" << m_context.m_xDelta; int decimals = Utils::zeroDecimalsInValue(x_delta) + 3; // qDebug() << "decimals required:" << decimals; QString label_text = QString("%1").arg(m_context.m_xDelta, 0, 'f', decimals); // qDebug() << "label_text:" << label_text; mp_xDeltaTextItem->setText(label_text); mp_xDeltaTextItem->setFont(QFont(font().family(), 9)); mp_xDeltaTextItem->setVisible(true); } // Set the boolean to true so that derived widgets know that something is // being measured, and they can act accordingly, for example by computing // deconvolutions in a mass spectrum. m_context.m_isMeasuringDistance = true; replot(); // Let the caller know that we were measuring something. emit xAxisMeasurementSignal(m_context, true); return; } void BasePlotWidget::drawYDeltaFeatures() { if(m_context.m_selectionPolygon.is1D()) return; // The user is dragging the mouse over the graph and we want them to know what // is the y delta value, that is the span between the point at the top of // the selection polygon and the point at its bottom. // FIXME: is this still true? // // We do not want to show the position markers because the only horiontal // line to be visible must be contained between the start and end vertiacal // tracer items. mp_hPosTracerItem->setVisible(false); mp_vPosTracerItem->setVisible(false); // We want to draw the text in the middle position of the leftmost-rightmost // point, even with skewed rectangle selection. QPointF leftmost_point = m_context.m_selectionPolygon.getLeftMostPoint(); QPointF topmost_point = m_context.m_selectionPolygon.getTopMostPoint(); // qDebug() << "leftmost_point:" << leftmost_point; QPointF rightmost_point = m_context.m_selectionPolygon.getRightMostPoint(); QPointF bottommost_point = m_context.m_selectionPolygon.getBottomMostPoint(); // qDebug() << "rightmost_point:" << rightmost_point; double x_axis_center_position = leftmost_point.x() + (rightmost_point.x() - leftmost_point.x()) / 2; double y_axis_center_position = bottommost_point.y() + (topmost_point.y() - bottommost_point.y()) / 2; // qDebug() << "x_axis_center_position:" << x_axis_center_position; mp_yDeltaTextItem->position->setCoords(x_axis_center_position, y_axis_center_position); mp_yDeltaTextItem->setText(QString("%1").arg(m_context.m_yDelta, 0, 'f', 2)); mp_yDeltaTextItem->setFont(QFont(font().family(), 9)); mp_yDeltaTextItem->setVisible(true); mp_yDeltaTextItem->setRotation(90); // Set the boolean to true so that derived widgets know that something is // being measured, and they can act accordingly, for example by computing // deconvolutions in a mass spectrum. m_context.m_isMeasuringDistance = true; replot(); // Let the caller know that we were measuring something. emit xAxisMeasurementSignal(m_context, true); } void BasePlotWidget::calculateDragDeltas() { // We compute signed differentials. If the user does not want the sign, // fabs(double) is their friend. // Compute the xAxis differential: m_context.m_xDelta = m_context.m_currentDragPoint.x() - m_context.m_startDragPoint.x(); // Same with the Y-axis range: m_context.m_yDelta = m_context.m_currentDragPoint.y() - m_context.m_startDragPoint.y(); // qDebug() << "xDelta:" << m_context.m_xDelta //<< "and yDelta:" << m_context.m_yDelta; return; } bool BasePlotWidget::isVerticalDisplacementAboveThreshold() { // First get the height of the plot. double plotHeight = yAxis->range().upper - yAxis->range().lower; double heightDiff = fabs(m_context.m_startDragPoint.y() - m_context.m_currentDragPoint.y()); double heightDiffRatio = (heightDiff / plotHeight) * 100; if(heightDiffRatio > 10) { // qDebug() << "isVerticalDisplacementAboveThreshold: true"; return true; } // qDebug() << "isVerticalDisplacementAboveThreshold: false"; return false; } void BasePlotWidget::update1DSelectionRectangle(bool for_integration) { // if(for_integration) // qDebug() << "for_integration:" << for_integration; // When we make a linear selection, the selection polygon is a polygon that // has the following characteristics: // // the x range is the linear selection span // // the y range is the widest std::min -> std::max possible. // This is how the selection polygon logic knows if its is mono- // two-dimensional. // We want the top left point to effectively be the top left point, so check // the direction of the mouse cursor drag. double x_range_start = std::min(m_context.m_currentDragPoint.x(), m_context.m_startDragPoint.x()); double x_range_end = std::max(m_context.m_currentDragPoint.x(), m_context.m_startDragPoint.x()); double y_position = m_context.m_startDragPoint.y(); m_context.m_selectionPolygon.set1D(x_range_start, x_range_end); // Top line mp_selectionRectangeLine1->start->setCoords( QPointF(x_range_start, y_position)); mp_selectionRectangeLine1->end->setCoords(QPointF(x_range_end, y_position)); // Only if we are drawing a selection rectangle for integration, do we set // arrow heads to the line. if(for_integration) { mp_selectionRectangeLine1->setHead(QCPLineEnding::esSpikeArrow); mp_selectionRectangeLine1->setTail(QCPLineEnding::esSpikeArrow); } else { mp_selectionRectangeLine1->setHead(QCPLineEnding::esNone); mp_selectionRectangeLine1->setTail(QCPLineEnding::esNone); } mp_selectionRectangeLine1->setVisible(true); // Right line: does not exist, start and end are the same end point of the top // line. mp_selectionRectangeLine2->start->setCoords(QPointF(x_range_end, y_position)); mp_selectionRectangeLine2->end->setCoords(QPointF(x_range_end, y_position)); mp_selectionRectangeLine2->setVisible(false); // Bottom line: identical to the top line, but invisible mp_selectionRectangeLine3->start->setCoords( QPointF(x_range_start, y_position)); mp_selectionRectangeLine3->end->setCoords(QPointF(x_range_end, y_position)); mp_selectionRectangeLine3->setVisible(false); // Left line: does not exist: start and end are the same end point of the top // line. mp_selectionRectangeLine4->start->setCoords(QPointF(x_range_end, y_position)); mp_selectionRectangeLine4->end->setCoords(QPointF(x_range_end, y_position)); mp_selectionRectangeLine4->setVisible(false); } void BasePlotWidget::update2DSelectionRectangleSquare(bool for_integration) { // if(for_integration) // qDebug() << "for_integration:" << for_integration; // We are handling a conventional rectangle. Just create four points // from top left to bottom right. But we want the top left point to be // effectively the top left point and the bottom point to be the bottom point. // So we need to try all four direction combinations, left to right or // converse versus top to bottom or converse. m_context.m_selectionPolygon.resetPoints(); if(m_context.m_currentDragPoint.x() < m_context.m_startDragPoint.x()) { // qDebug() << "Dragging from right to left"; if(m_context.m_currentDragPoint.y() < m_context.m_startDragPoint.y()) { // qDebug() << "Dragging from top to bottom"; // TOP_LEFT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_LEFT_POINT, m_context.m_currentDragPoint.x(), m_context.m_startDragPoint.y()); // TOP_RIGHT_POINT m_context.m_selectionPolygon.setPoint(PointSpecs::TOP_RIGHT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); // BOTTOM_RIGHT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_startDragPoint.x(), m_context.m_currentDragPoint.y()); // BOTTOM_LEFT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_LEFT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); } // End of // if(m_context.m_currentDragPoint.y() < m_context.m_startDragPoint.y()) else { // qDebug() << "Dragging from bottom to top"; // TOP_LEFT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_LEFT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); // TOP_RIGHT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_RIGHT_POINT, m_context.m_startDragPoint.x(), m_context.m_currentDragPoint.y()); // BOTTOM_RIGHT_POINT m_context.m_selectionPolygon.setPoint(PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); // BOTTOM_LEFT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_LEFT_POINT, m_context.m_currentDragPoint.x(), m_context.m_startDragPoint.y()); } } // End of // if(m_context.m_currentDragPoint.x() < m_context.m_startDragPoint.x()) else { // qDebug() << "Dragging from left to right"; if(m_context.m_currentDragPoint.y() < m_context.m_startDragPoint.y()) { // qDebug() << "Dragging from top to bottom"; // TOP_LEFT_POINT m_context.m_selectionPolygon.setPoint(PointSpecs::TOP_LEFT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); // TOP_RIGHT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_RIGHT_POINT, m_context.m_currentDragPoint.x(), m_context.m_startDragPoint.y()); // BOTTOM_RIGHT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); // BOTTOM_LEFT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_LEFT_POINT, m_context.m_startDragPoint.x(), m_context.m_currentDragPoint.y()); } else { // qDebug() << "Dragging from bottom to top"; // TOP_LEFT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_LEFT_POINT, m_context.m_startDragPoint.x(), m_context.m_currentDragPoint.y()); // TOP_RIGHT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_RIGHT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); // BOTTOM_RIGHT_POINT m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_currentDragPoint.x(), m_context.m_startDragPoint.y()); // BOTTOM_LEFT_POINT m_context.m_selectionPolygon.setPoint(PointSpecs::BOTTOM_LEFT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); } } // qDebug() << "Now draw the lines with points:" //<< m_context.m_selectionPolygon.toString(); // Top line mp_selectionRectangeLine1->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_LEFT_POINT)); mp_selectionRectangeLine1->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_RIGHT_POINT)); // Only if we are drawing a selection rectangle for integration, do we // set arrow heads to the line. if(for_integration) { mp_selectionRectangeLine1->setHead(QCPLineEnding::esSpikeArrow); mp_selectionRectangeLine1->setTail(QCPLineEnding::esSpikeArrow); } else { mp_selectionRectangeLine1->setHead(QCPLineEnding::esNone); mp_selectionRectangeLine1->setTail(QCPLineEnding::esNone); } mp_selectionRectangeLine1->setVisible(true); // Right line mp_selectionRectangeLine2->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_RIGHT_POINT)); mp_selectionRectangeLine2->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_RIGHT_POINT)); mp_selectionRectangeLine2->setVisible(true); // Bottom line mp_selectionRectangeLine3->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_RIGHT_POINT)); mp_selectionRectangeLine3->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_LEFT_POINT)); mp_selectionRectangeLine3->setVisible(true); // Left line mp_selectionRectangeLine4->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_LEFT_POINT)); mp_selectionRectangeLine4->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_LEFT_POINT)); mp_selectionRectangeLine4->setVisible(true); } void BasePlotWidget::update2DSelectionRectangleSkewed(bool for_integration) { // if(for_integration) // qDebug() << "for_integration:" << for_integration; // We are handling a skewed rectangle, that is a rectangle that is // tilted either to the left or to the right. // qDebug() << "m_context.m_selectRectangleWidth: " //<< m_context.m_selectRectangleWidth; // Top line // start // qDebug() << "m_context.m_startDragPoint: " << // m_context.m_startDragPoint.x() //<< "-" << m_context.m_startDragPoint.y(); // qDebug() << "m_context.m_currentDragPoint: " //<< m_context.m_currentDragPoint.x() << "-" //<< m_context.m_currentDragPoint.y(); m_context.m_selectionPolygon.resetPoints(); if(m_context.m_currentDragPoint.x() < m_context.m_startDragPoint.x()) { // qDebug() << "Dragging from right to left"; if(m_context.m_currentDragPoint.y() < m_context.m_startDragPoint.y()) { // qDebug() << "Dragging from top to bottom"; m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_LEFT_POINT, m_context.m_startDragPoint.x() - m_context.m_selectRectangleWidth, m_context.m_startDragPoint.y()); // m_context.m_selRectTopLeftPoint.setX( // m_context.m_startDragPoint.x() - // m_context.m_selectRectangleWidth); // m_context.m_selRectTopLeftPoint.setY(m_context.m_startDragPoint.y()); m_context.m_selectionPolygon.setPoint(PointSpecs::TOP_RIGHT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); // m_context.m_selRectTopRightPoint.setX(m_context.m_startDragPoint.x()); // m_context.m_selRectTopRightPoint.setY(m_context.m_startDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_currentDragPoint.x() + m_context.m_selectRectangleWidth, m_context.m_currentDragPoint.y()); // m_context.m_selRectBottomRightPoint.setX( // m_context.m_currentDragPoint.x() + // m_context.m_selectRectangleWidth); // m_context.m_selRectBottomRightPoint.setY( // m_context.m_currentDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_LEFT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); // m_context.m_selRectBottomLeftPoint.setX( // m_context.m_currentDragPoint.x()); // m_context.m_selRectBottomLeftPoint.setY( // m_context.m_currentDragPoint.y()); } else { // qDebug() << "Dragging from bottom to top"; m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_LEFT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); // m_context.m_selRectTopLeftPoint.setX( // m_context.m_currentDragPoint.x()); // m_context.m_selRectTopLeftPoint.setY( // m_context.m_currentDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_RIGHT_POINT, m_context.m_currentDragPoint.x() + m_context.m_selectRectangleWidth, m_context.m_currentDragPoint.y()); // m_context.m_selRectTopRightPoint.setX( // m_context.m_currentDragPoint.x() + // m_context.m_selectRectangleWidth); // m_context.m_selRectTopRightPoint.setY( // m_context.m_currentDragPoint.y()); m_context.m_selectionPolygon.setPoint(PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); // m_context.m_selRectBottomRightPoint.setX( // m_context.m_startDragPoint.x()); // m_context.m_selRectBottomRightPoint.setY( // m_context.m_startDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_LEFT_POINT, m_context.m_startDragPoint.x() - m_context.m_selectRectangleWidth, m_context.m_startDragPoint.y()); // m_context.m_selRectBottomLeftPoint.setX( // m_context.m_startDragPoint.x() - // m_context.m_selectRectangleWidth); // m_context.m_selRectBottomLeftPoint.setY( // m_context.m_startDragPoint.y()); } } // End of // Dragging from right to left. else { // qDebug() << "Dragging from left to right"; if(m_context.m_currentDragPoint.y() < m_context.m_startDragPoint.y()) { // qDebug() << "Dragging from top to bottom"; m_context.m_selectionPolygon.setPoint(PointSpecs::TOP_LEFT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); // m_context.m_selRectTopLeftPoint.setX(m_context.m_startDragPoint.x()); // m_context.m_selRectTopLeftPoint.setY(m_context.m_startDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_RIGHT_POINT, m_context.m_startDragPoint.x() + m_context.m_selectRectangleWidth, m_context.m_startDragPoint.y()); // m_context.m_selRectTopRightPoint.setX( // m_context.m_startDragPoint.x() + // m_context.m_selectRectangleWidth); // m_context.m_selRectTopRightPoint.setY(m_context.m_startDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); // m_context.m_selRectBottomRightPoint.setX( // m_context.m_currentDragPoint.x()); // m_context.m_selRectBottomRightPoint.setY( // m_context.m_currentDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_LEFT_POINT, m_context.m_currentDragPoint.x() - m_context.m_selectRectangleWidth, m_context.m_currentDragPoint.y()); // m_context.m_selRectBottomLeftPoint.setX( // m_context.m_currentDragPoint.x() - // m_context.m_selectRectangleWidth); // m_context.m_selRectBottomLeftPoint.setY( // m_context.m_currentDragPoint.y()); } else { // qDebug() << "Dragging from bottom to top"; m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_LEFT_POINT, m_context.m_currentDragPoint.x() - m_context.m_selectRectangleWidth, m_context.m_currentDragPoint.y()); // m_context.m_selRectTopLeftPoint.setX( // m_context.m_currentDragPoint.x() - // m_context.m_selectRectangleWidth); // m_context.m_selRectTopLeftPoint.setY( // m_context.m_currentDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::TOP_RIGHT_POINT, m_context.m_currentDragPoint.x(), m_context.m_currentDragPoint.y()); // m_context.m_selRectTopRightPoint.setX( // m_context.m_currentDragPoint.x()); // m_context.m_selRectTopRightPoint.setY( // m_context.m_currentDragPoint.y()); m_context.m_selectionPolygon.setPoint( PointSpecs::BOTTOM_RIGHT_POINT, m_context.m_startDragPoint.x() + m_context.m_selectRectangleWidth, m_context.m_startDragPoint.y()); // m_context.m_selRectBottomRightPoint.setX( // m_context.m_startDragPoint.x() + // m_context.m_selectRectangleWidth); // m_context.m_selRectBottomRightPoint.setY( // m_context.m_startDragPoint.y()); m_context.m_selectionPolygon.setPoint(PointSpecs::BOTTOM_LEFT_POINT, m_context.m_startDragPoint.x(), m_context.m_startDragPoint.y()); // m_context.m_selRectBottomLeftPoint.setX( // m_context.m_startDragPoint.x()); // m_context.m_selRectBottomLeftPoint.setY( // m_context.m_startDragPoint.y()); } } // End of Dragging from left to right. // qDebug() << "Now draw the lines with points:" //<< m_context.m_selectionPolygon.toString(); // Top line mp_selectionRectangeLine1->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_LEFT_POINT)); mp_selectionRectangeLine1->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_RIGHT_POINT)); // Only if we are drawing a selection rectangle for integration, do we set // arrow heads to the line. if(for_integration) { mp_selectionRectangeLine1->setHead(QCPLineEnding::esSpikeArrow); mp_selectionRectangeLine1->setTail(QCPLineEnding::esSpikeArrow); } else { mp_selectionRectangeLine1->setHead(QCPLineEnding::esNone); mp_selectionRectangeLine1->setTail(QCPLineEnding::esNone); } mp_selectionRectangeLine1->setVisible(true); // Right line mp_selectionRectangeLine2->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_RIGHT_POINT)); mp_selectionRectangeLine2->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_RIGHT_POINT)); mp_selectionRectangeLine2->setVisible(true); // Bottom line mp_selectionRectangeLine3->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_RIGHT_POINT)); mp_selectionRectangeLine3->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_LEFT_POINT)); mp_selectionRectangeLine3->setVisible(true); // Left line mp_selectionRectangeLine4->end->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::BOTTOM_LEFT_POINT)); mp_selectionRectangeLine4->start->setCoords( m_context.m_selectionPolygon.getPoint(PointSpecs::TOP_LEFT_POINT)); mp_selectionRectangeLine4->setVisible(true); } void BasePlotWidget::updateSelectionRectangle(bool as_line_segment, bool for_integration) { // qDebug() << "as_line_segment:" << as_line_segment; // qDebug() << "for_integration:" << for_integration; // We now need to construct the selection rectangle, either for zoom or for // integration. // There are two situations : // // 1. if the rectangle should look like a line segment // // 2. if the rectangle should actually look like a rectangle. In this case, // there are two sub-situations: // // a. if the S key is down, then the rectangle is // skewed, that is its vertical sides are not parallel to the y axis. // // b. otherwise the rectangle is conventional. if(as_line_segment) { update1DSelectionRectangle(for_integration); } else { if(!(m_context.m_keyboardModifiers & Qt::AltModifier)) { update2DSelectionRectangleSquare(for_integration); } else if(m_context.m_keyboardModifiers & Qt::AltModifier) { update2DSelectionRectangleSkewed(for_integration); } } // This code automatically sorts the ranges (range start is always less than // range end) even if the user actually selects from high to low (right to // left or bottom to top). This has implications in code that uses the // m_context data to perform some computations. This is why it is important // that m_dragDirections be set correctly to establish where the current drag // point is actually located (at which point). m_context.m_xRegionRangeStart = m_context.m_selectionPolygon.getLeftMostPoint().x(); m_context.m_xRegionRangeEnd = m_context.m_selectionPolygon.getRightMostPoint().x(); m_context.m_yRegionRangeStart = m_context.m_selectionPolygon.getBottomMostPoint().y(); m_context.m_yRegionRangeEnd = m_context.m_selectionPolygon.getTopMostPoint().y(); // At this point, draw the text describing the widths. // We want the x-delta on the bottom of the rectangle, inside it // and the y-delta on the vertical side of the rectangle, inside it. // Draw the selection width text drawXDeltaFeatures(); } void BasePlotWidget::hideSelectionRectangle(bool reset_values) { mp_selectionRectangeLine1->setVisible(false); mp_selectionRectangeLine2->setVisible(false); mp_selectionRectangeLine3->setVisible(false); mp_selectionRectangeLine4->setVisible(false); if(reset_values) { resetSelectionRectangle(); } } void BasePlotWidget::resetSelectionRectangle() { m_context.m_selectionPolygon.resetPoints(); } PolygonType BasePlotWidget::whatIsVisibleOfTheSelectionRectangle() { // There are four lines that make the selection polygon. We want to know // which lines are visible. int current_selection_polygon = static_cast(PolygonType::NOT_SET); if(mp_selectionRectangeLine1->visible()) { current_selection_polygon |= static_cast(PolygonType::TOP_LINE); // qDebug() << "current_selection_polygon:" << current_selection_polygon; } if(mp_selectionRectangeLine2->visible()) { current_selection_polygon |= static_cast(PolygonType::RIGHT_LINE); // qDebug() << "current_selection_polygon:" << current_selection_polygon; } if(mp_selectionRectangeLine3->visible()) { current_selection_polygon |= static_cast(PolygonType::BOTTOM_LINE); // qDebug() << "current_selection_polygon:" << current_selection_polygon; } if(mp_selectionRectangeLine4->visible()) { current_selection_polygon |= static_cast(PolygonType::LEFT_LINE); // qDebug() << "current_selection_polygon:" << current_selection_polygon; } // qDebug() << "returning visibility:" << current_selection_polygon; return static_cast(current_selection_polygon); } bool BasePlotWidget::isSelectionRectangleVisible() { // Sanity check int check = 0; check += mp_selectionRectangeLine1->visible(); check += mp_selectionRectangeLine2->visible(); check += mp_selectionRectangeLine3->visible(); check += mp_selectionRectangeLine4->visible(); if(check > 0) return true; return false; } void BasePlotWidget::setFocus() { // qDebug() << "Setting focus to the QCustomPlot:" << this; QCustomPlot::setFocus(); // qDebug() << "Emitting setFocusSignal()."; emit setFocusSignal(); } //! Redraw the background of the \p focusedPlotWidget plot widget. void BasePlotWidget::redrawPlotBackground(QWidget *focusedPlotWidget) { if(focusedPlotWidget == nullptr) throw ExceptionNotPossible( "baseplotwidget.cpp @ redrawPlotBackground(QWidget *focusedPlotWidget " "-- " "ERROR focusedPlotWidget cannot be nullptr."); if(dynamic_cast(this) != focusedPlotWidget) { // The focused widget is not *this widget. We should make sure that // we were not the one that had the focus, because in this case we // need to redraw an unfocused background. axisRect()->setBackground(m_unfocusedBrush); } else { axisRect()->setBackground(m_focusedBrush); } replot(); } void BasePlotWidget::updateContextXandYAxisRanges() { m_context.m_xRange = QCPRange(xAxis->range().lower, xAxis->range().upper); m_context.m_yRange = QCPRange(yAxis->range().lower, yAxis->range().upper); // qDebug() << "The new updated context: " << m_context.toString(); } const BasePlotContext & BasePlotWidget::getContext() const { return m_context; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/baseplotwidget.h000644 001750 001750 00000026756 14514537341 027554 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes #include /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "../../types.h" #include "../../processing/combiners/selectionpolygon.h" #include "baseplotcontext.h" namespace pappso { enum class RangeType { outermost = 1, innermost = 2, }; class BasePlotWidget; typedef std::shared_ptr BasePlotWidgetSPtr; typedef std::shared_ptr BasePlotWidgetCstSPtr; class PMSPP_LIB_DECL BasePlotWidget : public QCustomPlot { Q_OBJECT public: explicit BasePlotWidget(QWidget *parent); explicit BasePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~BasePlotWidget(); virtual bool setupWidget(); virtual void setPen(const QPen &pen); virtual const QPen &getPen() const; virtual void setPlottingColor(QCPAbstractPlottable *plottable_p, const QColor &new_color); virtual void setPlottingColor(int index, const QColor &new_color); virtual QColor getPlottingColor(QCPAbstractPlottable *plottable_p) const; virtual QColor getPlottingColor(int index = 0) const; virtual void setAxisLabelX(const QString &label); virtual void setAxisLabelY(const QString &label); // AXES RANGE HISTORY-related functions virtual void resetAxesRangeHistory(); virtual void updateAxesRangeHistory(); virtual void restorePreviousAxesRangeHistory(); virtual void restoreAxesRangeHistory(std::size_t index); // AXES RANGE HISTORY-related functions /// KEYBOARD-related EVENTS virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void spaceKeyReleaseEvent(QKeyEvent *event); virtual void directionKeyPressEvent(QKeyEvent *event); virtual void directionKeyReleaseEvent(QKeyEvent *event); virtual void mousePseudoButtonKeyPressEvent(QKeyEvent *event); virtual void mousePseudoButtonKeyReleaseEvent(QKeyEvent *event); /// KEYBOARD-related EVENTS /// MOUSE-related EVENTS virtual void mousePressHandler(QMouseEvent *event); virtual void mouseReleaseHandler(QMouseEvent *event); virtual void mouseReleaseHandlerLeftButton(); virtual void mouseReleaseHandlerRightButton(); virtual void mouseWheelHandler(QWheelEvent *event); virtual void mouseMoveHandler(QMouseEvent *event); virtual void mouseMoveHandlerNotDraggingCursor(); virtual void mouseMoveHandlerDraggingCursor(); virtual void mouseMoveHandlerLeftButtonDraggingCursor(); virtual void mouseMoveHandlerRightButtonDraggingCursor(); virtual void axisDoubleClickHandler(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); bool isClickOntoXAxis(const QPointF &mousePoint); bool isClickOntoYAxis(const QPointF &mousePoint); /// MOUSE-related EVENTS /// MOUSE MOVEMENTS mouse/keyboard-triggered int dragDirection(); virtual void moveMouseCursorGraphCoordToGlobal(QPointF plot_coordinates); virtual void moveMouseCursorPixelCoordToGlobal(QPointF local_coordinates); virtual void horizontalMoveMouseCursorCountPixels(int pixel_count); virtual QPointF horizontalGetGraphCoordNewPointCountPixels(int pixel_count); virtual void verticalMoveMouseCursorCountPixels(int pixel_count); virtual QPointF verticalGetGraphCoordNewPointCountPixels(int pixel_count); /// MOUSE MOVEMENTS mouse/keyboard-triggered /// RANGE-related functions virtual QCPRange getRangeX(bool &found_range, int index) const; virtual QCPRange getRangeY(bool &found_range, int index) const; QCPRange getRange(Axis axis, RangeType range_type, bool &found_range) const; virtual QCPRange getInnermostRangeX(bool &found_range) const; virtual QCPRange getOutermostRangeX(bool &found_range) const; virtual QCPRange getInnermostRangeY(bool &found_range) const; virtual QCPRange getOutermostRangeY(bool &found_range) const; void yMinMaxOnXAxisCurrentRange(double &min, double &max, QCPAbstractPlottable *plottable_p = nullptr); void yMinMaxOnXAxisCurrentRange(double &min, double &max, int index); /// RANGE-related functions /// PLOTTING / REPLOTTING functions virtual void axisRescale(); virtual void axisReframe(); virtual void axisZoom(); virtual void axisPan(); virtual void replotWithAxesRanges(QCPRange xAxisRange, QCPRange yAxisRange, Axis axis); virtual void replotWithAxisRangeX(double lower, double upper); virtual void replotWithAxisRangeY(double lower, double upper); /// PLOTTING / REPLOTTING functions /// PLOT ITEMS : TRACER TEXT ITEMS... virtual void hideAllPlotItems(); virtual void showTracers(); virtual void hideTracers(); virtual void drawXDeltaFeatures(); virtual void drawYDeltaFeatures(); virtual void calculateDragDeltas(); virtual bool isVerticalDisplacementAboveThreshold(); virtual void drawSelectionRectangleAndPrepareZoom(bool as_line_segment = false, bool for_integration = false); virtual void updateSelectionRectangle(bool as_line_segment = false, bool for_integration = false); virtual void resetSelectionRectangle(); virtual void hideSelectionRectangle(bool reset_values = false); virtual bool isSelectionRectangleVisible(); virtual PolygonType whatIsVisibleOfTheSelectionRectangle(); /// PLOT ITEMS : TRACER TEXT ITEMS... virtual void setFocus(); virtual void redrawPlotBackground(QWidget *focusedPlotWidget); virtual void updateContextXandYAxisRanges(); virtual const BasePlotContext &getContext() const; signals: void setFocusSignal(); void lastCursorHoveredPointSignal(const QPointF &pointf); void plotRangesChangedSignal(const BasePlotContext &context); void xAxisMeasurementSignal(const BasePlotContext &context, bool with_delta); void keyPressEventSignal(const BasePlotContext &context); void keyReleaseEventSignal(const BasePlotContext &context); void mouseReleaseEventSignal(const BasePlotContext &context); void mouseWheelEventSignal(const BasePlotContext &context); void plottableSelectionChangedSignal(QCPAbstractPlottable *plottable_p, bool selected); void integrationRequestedSignal(const BasePlotContext &context); void plottableDestructionRequestedSignal(BasePlotWidget *base_plot_widget_p, QCPAbstractPlottable *plottable_p, const BasePlotContext &context); protected: //! Name of the plot widget. QString m_name = "NOT_SET"; //! Description of the plot widget. QString m_desc = "NOT_SET"; //! The name of the data file from which the mass data were read. QString m_fileName; QString m_axisLabelX; QString m_axisLabelY; BasePlotContext m_context; int m_leftMousePseudoButtonKey = Qt::Key_Less; int m_rightMousePseudoButtonKey = Qt::Key_Greater; //! Rectangle defining the borders of zoomed-in/out data. // QCPItemRect *mp_zoomRectItem = nullptr; // The four lines that are needed to craft the selection rectangle. QCPItemLine *mp_selectionRectangeLine1 = nullptr; QCPItemLine *mp_selectionRectangeLine2 = nullptr; QCPItemLine *mp_selectionRectangeLine3 = nullptr; QCPItemLine *mp_selectionRectangeLine4 = nullptr; //! Text describing the x-axis delta value during a drag operation. QCPItemText *mp_xDeltaTextItem = nullptr; QCPItemText *mp_yDeltaTextItem = nullptr; //! Tells if the tracers should be visible. bool m_shouldTracersBeVisible = true; //! Horizontal position tracer QCPItemLine *mp_hPosTracerItem = nullptr; //! Vertical position tracer QCPItemLine *mp_vPosTracerItem = nullptr; //! Vertical selection start tracer (typically in green). QCPItemLine *mp_vStartTracerItem = nullptr; //! Vertical selection end tracer (typically in red). QCPItemLine *mp_vEndTracerItem = nullptr /*only vertical*/; //! Index of the last axis range history item. /*! Each time the user modifies the ranges (x/y axis) during panning or zooming of the graph, the new axis ranges are stored in a axis ranges history list. This index allows to point to the last range of that history. */ std::size_t m_lastAxisRangeHistoryIndex = 0; //! List of x axis ranges occurring during the panning zooming actions. std::vector m_xAxisRangeHistory; //! List of y axis ranges occurring during the panning zooming actions. std::vector m_yAxisRangeHistory; //! How many mouse move events must be skipped */ /*! when the data are so massive that the graph panning becomes sluggish. By default, the value is 10 events to be skipped before accounting one. The "fat data" mouse movement handler mechanism is actuated by using a keyboard key combination. There is no automatic shift between normal processing and "fat data" processing. */ int m_mouseMoveHandlerSkipAmount = 10; //! Counter to handle the "fat data" mouse move event handling. /*! \sa m_mouseMoveHandlerSkipAmount. */ int m_mouseMoveHandlerSkipCount = 0; // QColor m_unfocusedColor = QColor(Qt::lightGray); // QColor m_unfocusedColor = QColor(230, 230, 230, 255); //! Color used for the background of unfocused plot. QColor m_unfocusedColor = QColor("lightgray"); //! Color used for the background of unfocused plot. QBrush m_unfocusedBrush = QBrush(m_unfocusedColor); //! Color used for the background of focused plot. QColor m_focusedColor = QColor(Qt::transparent); //! Color used for the background of focused plot. QBrush m_focusedBrush = QBrush(m_focusedColor); //! Pen used to draw the graph and textual elements in the plot widget. QPen m_pen; virtual void createAllAncillaryItems(); virtual void update1DSelectionRectangle(bool for_integration = false); virtual void update2DSelectionRectangleSquare(bool for_integration = false); virtual void update2DSelectionRectangleSkewed(bool for_integration = false); virtual QString allLayerNamesToString() const; virtual QString layerableLayerName(QCPLayerable *layerable_p) const; virtual int layerableLayerIndex(QCPLayerable *layerable_p) const; }; } // namespace pappso Q_DECLARE_METATYPE(pappso::BasePlotContext); extern int basePlotContextMetaTypeId; Q_DECLARE_METATYPE(pappso::BasePlotContext *); extern int basePlotContextPtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp000644 001750 001750 00000063361 14526455546 031130 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "basetraceplotwidget.h" #include "../../exception/exceptionnotpossible.h" #include "../../pappsoexception.h" namespace pappso { BaseTracePlotWidget::BaseTracePlotWidget(QWidget *parent) : BasePlotWidget(parent) { // We can afford to call createAllAncillaryItems() in this derived class // because all the items will have been created *before* the addition of plots // and then the rendering order will hide them to the viewer, since the // rendering order is according to the order in which the items have been // created. // // The fact that the ancillary items are created before trace plots is not a // problem because the trace plots are sparse and do not effectively hide the // data. // // But, in the color map plot widgets, we cannot afford to create the // ancillary items *before* the plot itself because then, the rendering of the // plot (created after) would screen off the ancillary items (created before). // // So, the createAllAncillaryItems() function needs to be called in the // derived classes at the most appropriate moment in the setting up of the // widget. createAllAncillaryItems(); } BaseTracePlotWidget::BaseTracePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BasePlotWidget(parent, x_axis_label, y_axis_label) { // We can afford to call createAllAncillaryItems() in this derived class // because all the items will have been created *before* the addition of plots // and then the rendering order will hide them to the viewer, since the // rendering order is according to the order in which the items have been // created. // // The fact that the ancillary items are created before trace plots is not a // problem because the trace plots are sparse and do not effectively hide the // data. // // But, in the color map plot widgets, we cannot afford to create the // ancillary items *before* the plot itself because then, the rendering of the // plot (created after) would screen off the ancillary items (created before). // // So, the createAllAncillaryItems() function needs to be called in the // derived classes at the most appropriate moment in the setting up of the // widget. createAllAncillaryItems(); } //! Destruct \c this BaseTracePlotWidget instance. /*! The destruction involves clearing the history, deleting all the axis range history items for x and y axes. */ BaseTracePlotWidget::~BaseTracePlotWidget() { } void BaseTracePlotWidget::setGraphData(int graph_index, const std::vector &keys, const std::vector &values) { QCPGraph *graph_p = graph(graph_index); if(graph_p == nullptr) qFatal("Programming error."); return setGraphData(graph_p, keys, values); } void BaseTracePlotWidget::setGraphData(QCPGraph *graph_p, const std::vector &keys, const std::vector &values) { if(graph_p == nullptr) qFatal("Pointer cannot be nullptr."); // Version that is now deprecated (20200924) // graph_p->setData(QVector::fromStdVector(keys), // QVector::fromStdVector(values)); QVector key_qvector; QVector value_qvector; #if 0 // Now replace the graph's data. Note that the data are // inherently sorted (true below). // The begin() -- end() ranges constructor did not work as of // Qt 5.14.2 this day: 20200721 key_qvector = QVector(keys.begin(), keys.end()); value_qvector = QVector(values.begin(), values.end()); #endif for(auto &value : keys) key_qvector.push_back(value); for(auto &value : values) value_qvector.push_back(value); graph_p->setData(key_qvector, value_qvector, true); graph_p->setPen(m_pen); rescaleAxes(); resetAxesRangeHistory(); replot(); } void BaseTracePlotWidget::clearGraphData(int graph_index) { QCPGraph *graph_p = graph(graph_index); if(graph_p == nullptr) qFatal("Programming error."); graph_p->data().clear(); rescaleAxes(); resetAxesRangeHistory(); replot(); } QCPGraph * BaseTracePlotWidget::addTrace(const pappso::Trace &trace, const QColor &color) { // qDebug(); if(!color.isValid()) throw PappsoException( QString("The color to be used for the plot graph is invalid.")); // This seems to be unpleasant. // setFocus(); QCPGraph *graph_p = addGraph(); graph_p->setLayer("plotsLayer"); // Now depracated as of 20200924 // graph_p->setData(QVector::fromStdVector(trace.xValues()), // QVector::fromStdVector(trace.yValues())); QVector key_qvector; QVector value_qvector; #if 0 // Now replace the graph's data. Note that the data are // inherently sorted (true below). // The begin() -- end() ranges constructor did not work as of // Qt 5.14.2 this day: 20200721 key_qvector = QVector(trace.xValues().begin(), .trace.xValues()end()); value_qvector = QVector(trace.yValues().begin(), trace.yValues().end()); #endif for(auto &value : trace.xValues()) { key_qvector.push_back(value); } for(auto &value : trace.yValues()) { value_qvector.push_back(value); } #if 0 qDebug() << "The size of the x values for trace is:" << key_qvector.size() << "and for y values is:" << value_qvector.size(); QString text; for(qsizetype iter = 0; iter < key_qvector.size(); ++iter) text += QString("(%1,%2)\n") .arg(key_qvector.at(iter), 0, 'f', 6) .arg(value_qvector.at(iter), 0, 'f', 6); qDebug().noquote() << text; #endif graph_p->setData(key_qvector, value_qvector, true); QPen pen = graph()->pen(); pen.setColor(color); graph()->setPen(pen); // Connect the signal of selection change so that we can re-emit it for the // widget that is using *this widget. connect(graph_p, static_cast( &QCPAbstractPlottable::selectionChanged), [this, graph_p]() { emit plottableSelectionChangedSignal(graph_p, graph_p->selected()); }); // Rescaling the axes is actually unpleasant if there are more than one // graph in the plot widget and that we are adding one. So only, rescale if // the number of graphs is == 1, that is we are adding the first one. if(graphCount() == 1) { rescaleAxes(); resetAxesRangeHistory(); } replot(); return graph_p; } //! Find a minimal integration range starting at an existing data point /*! If the user clicks onto a plot at a location that is not a true data point, get a data range that begins at the preceding data point and that ends at the clicked location point. */ bool BaseTracePlotWidget::findIntegrationLowerRangeForKey(int index, double key, QCPRange &range) { // Given a key double value, we want to know what is the range that will // frame correctly the key double value if that key value is not exactly // the one of a point of the trace. // First of all get the keys of the graph. QCPGraph *theGraph = graph(index); if(theGraph == nullptr) throw ExceptionNotPossible( "basetraceplotwidget.cpp @ indIntegrationLowerRangeForKey() -- ERROR " "theGraph cannot be nullptr."); // QCPGraphDataContainer is a typedef QCPDataContainer and // QCPDataContainer< DataType > is a Class Template. So in this context, // DataType is QCPGraphData. // QCPGraphData is the data point, that is the (key,value) pair. QSharedPointer graph_data_container_p = theGraph->data(); QCPDataRange dataRange = graph_data_container_p->dataRange(); if(!dataRange.isValid()) return false; if(!dataRange.size()) return false; if(dataRange.size() > 1) { double firstKey = graph_data_container_p->at(dataRange.begin())->key; double lastKey = graph_data_container_p->at(dataRange.end())->key; // There is one check to be done: the user might erroneously set the mouse // cursor beyond the last point of the graph. If that is the case, then // upper key needs to be that very point. All we need to do is return the // lower key, that is the pre-last key of the keys list. No need to // iterate in the keys list. if(key > lastKey) { // No need to search for the key in the keys, just get the lower key // immediately, that is, the key that is one slot left the last key. range.lower = graph_data_container_p->at(dataRange.end() - 2)->key; range.upper = graph_data_container_p->at(dataRange.end() - 1)->key; return true; } // Likewise, if the cursor is set left of the first plot point, then that // will be the lower range point. All we need is to provide the upper // range point as the second point of the plot. if(key < firstKey) { range.lower = firstKey; range.upper = graph_data_container_p->at(dataRange.begin() + 1)->key; return true; } // Finally the generic case where the user point to any point *in* the // graph. range.lower = graph_data_container_p->findBegin(key, /*expandedRange*/ true)->key; range.upper = std::prev(graph_data_container_p->findEnd(key, /*expandedRange*/ true)) ->key; return true; } return false; } std::vector BaseTracePlotWidget::getValuesX(int graph_index) const { std::vector keys; QCPGraph *graph_p = graph(graph_index); if(graph_p == nullptr) qFatal("Programming error."); QSharedPointer graph_data_container_p = graph_p->data(); // Iterate in the keys auto beginIt = graph_data_container_p->begin(); auto endIt = graph_data_container_p->end(); for(auto iter = beginIt; iter != endIt; ++iter) keys.push_back(iter->key); return keys; } std::vector BaseTracePlotWidget::getValuesY(int graph_index) const { std::vector values; QCPGraph *graph_p = graph(graph_index); if(graph_p == nullptr) qFatal("Programming error."); QSharedPointer graph_data_container_p = graph_p->data(); // Iterate in the values auto beginIt = graph_data_container_p->begin(); auto endIt = graph_data_container_p->end(); for(auto iter = beginIt; iter != endIt; ++iter) values.push_back(iter->key); return values; } QCPRange BaseTracePlotWidget::getValueRangeOnKeyRange(QCPAbstractPlottable *plottable_p, bool &ok) { // The X axis range is set. But we want to find for that X axis range the // min and max Y values. This function is useful when the user asks that // while changing the X axis range, the trace be always in full scale on the // Y axis. QCPRange key_range(xAxis->range().lower, xAxis->range().upper); if(plottable_p != nullptr) { return plottable_p->getValueRange(ok, QCP::SignDomain::sdBoth, key_range); } else { // How many graphs are currently plotted in this plot widget ? int graph_count = graphCount(); // Iterate in each graph and get the y max value. Then compare with the // largest one and update if necessary. Store the pointer to the graph // that has a larger y value. At the end of the iteration, it will be // the winner. double temp_min_value = std::numeric_limits::max(); double temp_max_value = std::numeric_limits::min(); bool found_range = false; for(int iter = 0; iter < graph_count; ++iter) { QCPGraph *plottable_p = graph(iter); QCPRange value_range = plottable_p->getValueRange(ok, QCP::SignDomain::sdBoth, key_range); if(ok) found_range = true; if(value_range.lower < temp_min_value) temp_min_value = value_range.lower; if(value_range.upper > temp_max_value) temp_max_value = value_range.upper; } // At this point return the range. ok = found_range; return QCPRange(temp_min_value, temp_max_value); } } QCPRange BaseTracePlotWidget::getValueRangeOnKeyRange(int index, bool &ok) { // The X axis range is set. But we want to find for that X axis range the // min and max Y values. This function is useful when the user asks that // while changing the X axis range, the trace be always in full scale on the // Y axis. QCPAbstractPlottable *plottable_p = plottable(index); if(plottable_p == nullptr) qFatal("Programming error."); return getValueRangeOnKeyRange(plottable_p, ok); } double BaseTracePlotWidget::getYatX(double x, QCPGraph *graph_p) { if(graph_p == nullptr) qFatal("Programming error."); QCPItemTracer tracer(this); tracer.setGraph(graph_p); tracer.setInterpolating(true); tracer.setGraphKey(x); tracer.updatePosition(); return tracer.position->value(); } double BaseTracePlotWidget::getYatX(double x, int index) { QCPGraph *graph_p = graph(index); if(graph_p == nullptr) qFatal("Programming error."); return getYatX(x, graph_p); } void BaseTracePlotWidget::axisDoubleClickHandler( QCPAxis *axis, [[maybe_unused]] QCPAxis::SelectablePart part, QMouseEvent *event) { // qDebug(); m_context.m_keyboardModifiers = QGuiApplication::queryKeyboardModifiers(); if(m_context.m_keyboardModifiers & Qt::ControlModifier) { // qDebug(); // If the Ctrl modifiers is active, then both axes are to be reset. Also // the histories are reset also. rescaleAxes(); resetAxesRangeHistory(); } else { // qDebug(); // Only the axis passed as parameter is to be rescaled. // Reset the range of that axis to the max view possible, but for the y // axis check if the Shift keyboard key is pressed. If so the full scale // should be calculated only on the data in the current x range. if(axis->orientation() == Qt::Vertical) { if(m_context.m_keyboardModifiers & Qt::ShiftModifier) { // In this case, we want to make a rescale of the Y axis such // that it displays full scale the data in the current X axis // range only. bool ok = false; QCPRange value_range = getValueRangeOnKeyRange(nullptr, ok); yAxis->setRange(value_range); } else axis->rescale(); } else axis->rescale(); updateAxesRangeHistory(); event->accept(); } // The double-click event does not cancel the mouse press event. That is, if // left-double-clicking, at the end of the operation the button still // "pressed". We need to remove manually the button from the pressed buttons // context member. m_context.m_pressedMouseButtons ^= event->button(); updateContextXandYAxisRanges(); emit plotRangesChangedSignal(m_context); replot(); } void BaseTracePlotWidget::axisRescale() { double xLower = xAxis->range().lower; double xUpper = xAxis->range().upper; // Get the current y lower/upper range. double yLower = yAxis->range().lower; double yUpper = yAxis->range().upper; // This function is called only when the user has clicked on the x/y axis or // when the user has dragged the left mouse button with the Ctrl key // modifier. The m_context.m_wasClickOnXAxis is then simulated in the mouse // move handler. So we need to test which axis was clicked-on. if(m_context.m_wasClickOnXAxis) { // We are changing the range of the X axis. // What is the x delta ? double xDelta = m_context.m_currentDragPoint.x() - m_context.m_startDragPoint.x(); // If xDelta is < 0, the we were dragging from right to left, we are // compressing the view on the x axis, by adding new data to the right // hand size of the graph. So we add xDelta to the upper bound of the // range. Otherwise we are uncompressing the view on the x axis and // remove the xDelta from the upper bound of the range. This is why we // have the // '-' // and not '+' below; // qDebug() << "Setting xaxis:" << xLower << "--" << xUpper - xDelta; xAxis->setRange(xLower, xUpper - xDelta); // Old version // if(xDelta < 0) //{ //// The dragging operation was from right to left, we are enlarging //// the range (thus, we are unzooming the view, since the widget //// always has the same size). // xAxis->setRange(xLower, xUpper + fabs(xDelta)); //} // else //{ //// The dragging operation was from left to right, we are reducing //// the range (thus, we are zooming the view, since the widget //// always has the same size). // xAxis->setRange(xLower, xUpper - fabs(xDelta)); //} // We may either leave the scale of the Y axis as is (default) or // the user may want an automatic scale of the Y axis such that the // data displayed in the new X axis range are full scale on the Y // axis. For this, the Shift modifier key should be pressed. if(m_context.m_keyboardModifiers & Qt::ShiftModifier) { // In this case, we want to make a rescale of the Y axis such that // it displays full scale the data in the current X axis range only. bool ok = false; QCPRange value_range = getValueRangeOnKeyRange(nullptr, ok); yAxis->setRange(value_range); } // else, do leave the Y axis range unchanged. } // End of // if(m_context.m_wasClickOnXAxis) else // that is, if(m_context.m_wasClickOnYAxis) { // We are changing the range of the Y axis. // What is the y delta ? double yDelta = m_context.m_currentDragPoint.y() - m_context.m_startDragPoint.y(); // See above for an explanation of the computation. yAxis->setRange(yLower, yUpper - yDelta); // Old version // if(yDelta < 0) //{ //// The dragging operation was from top to bottom, we are enlarging //// the range (thus, we are unzooming the view, since the widget //// always has the same size). // yAxis->setRange(yLower, yUpper + fabs(yDelta)); //} // else //{ //// The dragging operation was from bottom to top, we are reducing //// the range (thus, we are zooming the view, since the widget //// always has the same size). // yAxis->setRange(yLower, yUpper - fabs(yDelta)); //} } // End of // else // that is, if(m_context.m_wasClickOnYAxis) // Update the context with the current axes ranges updateContextXandYAxisRanges(); emit plotRangesChangedSignal(m_context); replot(); } void BaseTracePlotWidget::axisReframe() { // qDebug(); // double sorted_start_drag_point_x = // std::min(m_context.m_startDragPoint.x(), m_context.m_currentDragPoint.x()); // xAxis->setRange(sorted_start_drag_point_x, // sorted_start_drag_point_x + fabs(m_context.m_xDelta)); xAxis->setRange( QCPRange(m_context.m_xRegionRangeStart, m_context.m_xRegionRangeEnd)); // Note that the y axis should be rescaled from current lower value to new // upper value matching the y-axis position of the cursor when the mouse // button was released. yAxis->setRange(xAxis->range().lower, std::max(m_context.m_yRegionRangeStart, m_context.m_yRegionRangeEnd)); // qDebug() << "xaxis:" << xAxis->range().lower << "-" << // xAxis->range().upper //<< "yaxis:" << yAxis->range().lower << "-" << yAxis->range().upper; // If the shift modifier key is pressed, then the user want the y axis // to be full scale. if(m_context.m_keyboardModifiers & Qt::ShiftModifier) { bool ok = false; QCPRange value_range = getValueRangeOnKeyRange(nullptr, ok); yAxis->setRange(value_range); } // else do nothing, let the y axis range as is. updateContextXandYAxisRanges(); updateAxesRangeHistory(); emit plotRangesChangedSignal(m_context); replot(); } void BaseTracePlotWidget::axisZoom() { // Use the m_context.m_xRegionRangeStart/End values, but we need to sort the // values before using them, because now we want to really have the lower x // value. Simply craft a QCPRange that will swap the values if lower is not // < than upper QCustomPlot calls this normalization). xAxis->setRange( QCPRange(m_context.m_xRegionRangeStart, m_context.m_xRegionRangeEnd)); // If the shift modifier key is pressed, then the user want the y axis // to be full scale. if(m_context.m_keyboardModifiers & Qt::ShiftModifier) { bool ok = false; QCPRange value_range = getValueRangeOnKeyRange(nullptr, ok); yAxis->setRange(value_range); } else yAxis->setRange( QCPRange(m_context.m_yRegionRangeStart, m_context.m_yRegionRangeEnd)); updateContextXandYAxisRanges(); updateAxesRangeHistory(); emit plotRangesChangedSignal(m_context); replot(); } void BaseTracePlotWidget::axisPan() { // qDebug(); // Sanity check if(!m_context.m_wasClickOnXAxis && !m_context.m_wasClickOnYAxis) qFatal( "This function can only be called if the mouse click was on one of the " "axes"); if(m_context.m_wasClickOnXAxis) { xAxis->setRange(m_context.m_xRange.lower - m_context.m_xDelta, m_context.m_xRange.upper - m_context.m_xDelta); // If the shift modifier key is pressed, then the user want the y axis // to be full scale. if(m_context.m_keyboardModifiers & Qt::ShiftModifier) { bool ok = false; QCPRange value_range = getValueRangeOnKeyRange(nullptr, ok); yAxis->setRange(value_range); } // else nothing to do we do not change the y axis scale. } if(m_context.m_wasClickOnYAxis) { yAxis->setRange(m_context.m_yRange.lower - m_context.m_yDelta, m_context.m_yRange.upper - m_context.m_yDelta); } updateContextXandYAxisRanges(); // qDebug() << "The updated context:" << m_context.toString(); // We cannot store the new ranges in the history, because the pan operation // involved a huge quantity of micro-movements elicited upon each mouse move // cursor event so we would have a huge history. // updateAxesRangeHistory(); // Now that the contex has the right range values, we can emit the // signal that will be used by this plot widget users, typically to // abide by the x/y range lock required by the user. emit plotRangesChangedSignal(m_context); replot(); } pappso::Trace BaseTracePlotWidget::toTrace(int index) const { QCPGraph *graph_p = graph(index); return toTrace(graph_p); } pappso::Trace BaseTracePlotWidget::toTrace(const QCPGraph *graph_p) const { if(graph_p == nullptr) qFatal("Programming error. Pointer cannot be nullptr."); pappso::Trace trace; QSharedPointer graph_data_container_p = graph_p->data(); // Iterate in the keys auto beginIt = graph_data_container_p->begin(); auto endIt = graph_data_container_p->end(); for(auto iter = beginIt; iter != endIt; ++iter) trace.push_back(pappso::DataPoint(iter->key, iter->value)); return trace; } pappso::Trace BaseTracePlotWidget::toTrace(const QCPRange &x_axis_range, int index) const { QCPGraph *graph_p = graph(index); if(graph_p == nullptr) qFatal("Programming error."); return toTrace(x_axis_range, graph_p); } pappso::Trace BaseTracePlotWidget::toTrace(const QCPRange &x_axis_range, const QCPGraph *graph_p) const { // Make a Trace with the data in the range. Trace data_trace; QSharedPointer graph_data_container_sp; graph_data_container_sp = graph_p->data(); // Grab the iterator to the start to the x axis range auto beginIt = graph_data_container_sp->findBegin(x_axis_range.lower, /*expandedRange*/ true); // Grab the iterator to the end of the axis range auto endIt = graph_data_container_sp->findEnd(x_axis_range.upper, /*expandedRange*/ true); for(auto iter = beginIt; iter != endIt; ++iter) data_trace.push_back(DataPoint(iter->key, iter->value)); return data_trace; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/basetraceplotwidget.h000644 001750 001750 00000007145 14346367014 030563 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "baseplotwidget.h" #include "../../trace/trace.h" namespace pappso { class BaseTracePlotWidget; typedef std::shared_ptr BaseTracePlotWidgetSPtr; typedef std::shared_ptr BaseTracePlotWidgetCstSPtr; class PMSPP_LIB_DECL BaseTracePlotWidget : public BasePlotWidget { Q_OBJECT public: explicit BaseTracePlotWidget(QWidget *parent = 0); explicit BaseTracePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~BaseTracePlotWidget(); virtual void setGraphData(int graph_index, const std::vector &keys, const std::vector &values); virtual void setGraphData(QCPGraph *graph_p, const std::vector &keys, const std::vector &values); virtual void clearGraphData(int graph_index); virtual void axisDoubleClickHandler(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event) override; // All these need to be overridden because of some special treatment in case // of Trace plots (graphs, specifically, and not color maps, for example). virtual void axisRescale() override; virtual void axisReframe() override; virtual void axisZoom() override; virtual void axisPan() override; virtual QCPGraph *addTrace(const pappso::Trace &trace, const QColor &color); virtual bool findIntegrationLowerRangeForKey(int index, double key, QCPRange &range); std::vector getValuesX(int index) const; std::vector getValuesY(int index) const; QCPRange getValueRangeOnKeyRange(QCPAbstractPlottable *plottable_p, bool &ok); QCPRange getValueRangeOnKeyRange(int index, bool &ok); double getYatX(double x, QCPGraph *graph_p); // index is 0 by default, which means that if there is a single graph, then, // that will be it. double getYatX(double x, int index = 0); pappso::Trace toTrace(int index) const; pappso::Trace toTrace(const QCPGraph *graph_p) const; pappso::Trace toTrace(const QCPRange &x_axis_range, int index) const; pappso::Trace toTrace(const QCPRange &x_axis_range, const QCPGraph *graph_p) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp000644 001750 001750 00000010452 14526455546 030766 0ustar00rusconirusconi000000 000000 // Copyright Filippo Rusconi, GPLv3+ /////////////////////// StdLib includes /////////////////////// Qt includes /////////////////////// Local includes #include "colormapplotconfig.h" namespace pappso { ColorMapPlotConfig::ColorMapPlotConfig() { } ColorMapPlotConfig::ColorMapPlotConfig(DataKind x_axis_data_kind, DataKind y_axis_data_kind, AxisScale x_axis_scale, AxisScale y_axis_scale, AxisScale z_axis_scale, std::size_t key_cell_count, std::size_t mz_cell_count, double min_key_value, double max_key_value, double min_mz_value, double max_mz_value, double orig_min_z_value, double orig_max_z_value) : xAxisDataKind(x_axis_data_kind), yAxisDataKind(y_axis_data_kind), xAxisScale(x_axis_scale), yAxisScale(y_axis_scale), zAxisScale(z_axis_scale), keyCellCount(key_cell_count), mzCellCount(mz_cell_count), minKeyValue(min_key_value), maxKeyValue(max_key_value), minMzValue(min_mz_value), maxMzValue(max_mz_value), // Initialize both orig and last to the same value. origMinZValue(orig_min_z_value), lastMinZValue(orig_min_z_value), // Initialize both orig and last to the same value. origMaxZValue(orig_max_z_value), lastMaxZValue(orig_max_z_value) { } ColorMapPlotConfig::ColorMapPlotConfig(const ColorMapPlotConfig &other) { xAxisDataKind = other.xAxisDataKind; yAxisDataKind = other.yAxisDataKind; xAxisScale = other.xAxisScale; yAxisScale = other.yAxisScale; zAxisScale = other.zAxisScale; keyCellCount = other.keyCellCount; mzCellCount = other.mzCellCount; minKeyValue = other.minKeyValue; maxKeyValue = other.maxKeyValue; minMzValue = other.minMzValue; maxMzValue = other.maxMzValue; origMinZValue = other.origMinZValue; lastMinZValue = other.lastMinZValue; origMaxZValue = other.origMaxZValue; lastMaxZValue = other.lastMaxZValue; } ColorMapPlotConfig & ColorMapPlotConfig::operator=(const ColorMapPlotConfig &other) { if(this == &other) return *this; xAxisDataKind = other.xAxisDataKind; yAxisDataKind = other.yAxisDataKind; xAxisScale = other.xAxisScale; yAxisScale = other.yAxisScale; zAxisScale = other.zAxisScale; keyCellCount = other.keyCellCount; mzCellCount = other.mzCellCount; minKeyValue = other.minKeyValue; maxKeyValue = other.maxKeyValue; minMzValue = other.minMzValue; maxMzValue = other.maxMzValue; origMinZValue = other.origMinZValue; lastMinZValue = other.lastMinZValue; origMaxZValue = other.origMaxZValue; lastMaxZValue = other.lastMaxZValue; return *this; } void ColorMapPlotConfig::setOrigMinZValue(double value) { origMinZValue = value; } void ColorMapPlotConfig::setOrigAndLastMinZValue(double value) { origMinZValue = value; lastMinZValue = value; } void ColorMapPlotConfig::setOrigMaxZValue(double value) { origMaxZValue = value; } void ColorMapPlotConfig::setOrigAndLastMaxZValue(double value) { origMaxZValue = value; lastMaxZValue = value; } QString ColorMapPlotConfig::toString() const { QString text = QString("xAxisDataKind: %1 - yAxisDataKind: %2") .arg(static_cast(xAxisDataKind)) .arg(static_cast(yAxisDataKind)); text += QString("xAxisScale: %1 - yAxisScale: %2 - zAxisScale: %3 - ") .arg(static_cast(xAxisScale)) .arg(static_cast(yAxisScale)) .arg(static_cast(zAxisScale)); text += QString("keyCellCount: %1 - mzCellCount: %2 - ") .arg(mzCellCount) .arg(minKeyValue); text += QString( "minKeyValue: %8 - maxKeyValue: %9 - minMzValue: %10 - maxMzValue: " "%11 - lastMinZValue: %12 - lastMaxZValue: %13") .arg(keyCellCount) .arg(maxKeyValue) .arg(minMzValue) .arg(maxMzValue) .arg(lastMinZValue) .arg(lastMaxZValue); return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/colormapplotconfig.h000644 001750 001750 00000004226 14514537341 030424 0ustar00rusconirusconi000000 000000 // Copyright Filippo Rusconi, GPLv3+ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "../../types.h" #include "../../utils.h" #include "../../exportinmportconfig.h" #pragma once namespace pappso { struct PMSPP_LIB_DECL ColorMapPlotConfig { DataKind xAxisDataKind = DataKind::unset; DataKind yAxisDataKind = DataKind::unset; AxisScale xAxisScale = AxisScale::orig; AxisScale yAxisScale = AxisScale::orig; AxisScale zAxisScale = AxisScale::orig; std::size_t keyCellCount = 0; std::size_t mzCellCount = 0; double lastMinZFilterThresholdPercentage = 0.0; double lastMaxZFilterThresholdPercentage = 0.0; double minKeyValue = std::numeric_limits::max(); double maxKeyValue = std::numeric_limits::min(); double minMzValue = std::numeric_limits::max(); double maxMzValue = std::numeric_limits::max(); double origMinZValue = std::numeric_limits::max(); double lastMinZValue = std::numeric_limits::max(); double origMaxZValue = std::numeric_limits::min(); double lastMaxZValue = std::numeric_limits::min(); ColorMapPlotConfig(); ColorMapPlotConfig(const ColorMapPlotConfig &other); ColorMapPlotConfig(DataKind x_axis_data_kind, DataKind y_axis_data_kind, AxisScale x_axis_scale, AxisScale y_axis_scale, AxisScale z_axis_scale, std::size_t key_cell_count, std::size_t mz_cell_count, double min_key_value, double max_key_value, double min_mz_value, double max_mz_value, double orig_min_z_value, double orig_max_z_value); ColorMapPlotConfig &operator=(const ColorMapPlotConfig &other); void setOrigMinZValue(double value); void setOrigAndLastMinZValue(double value); void setOrigMaxZValue(double value); void setOrigAndLastMaxZValue(double value); QString toString() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp000644 001750 001750 00000006061 14526455546 034450 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "driftspecmassspeccolormapplotwidget.h" #include "../../pappsoexception.h" namespace pappso { DriftSpecMassSpecColorMapPlotWidget::DriftSpecMassSpecColorMapPlotWidget( QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BaseColorMapPlotWidget(parent, x_axis_label, y_axis_label) { } DriftSpecMassSpecColorMapPlotWidget::~DriftSpecMassSpecColorMapPlotWidget() { } //! Set the \c m_pressedKeyCode to the key code in \p event. void DriftSpecMassSpecColorMapPlotWidget::keyPressEvent(QKeyEvent *event) { BasePlotWidget::keyPressEvent(event); } //! Handle specific key codes and trigger respective actions. void DriftSpecMassSpecColorMapPlotWidget::keyReleaseEvent(QKeyEvent *event) { BasePlotWidget::keyReleaseEvent(event); } //! Handle mouse movements, in particular record all the last visited points. /*! This function is reponsible for storing at each time the last visited point in the graph. Here, point is intended as any x/y coordinate in the plot widget viewport, not a graph point. The stored values are then the basis for a large set of calculations throughout all the plot widget. \param pointer to QMouseEvent from which to retrieve the coordinates of the visited viewport points. */ void DriftSpecMassSpecColorMapPlotWidget::mouseMoveHandler(QMouseEvent *event) { BasePlotWidget::mouseMoveHandler(event); } void DriftSpecMassSpecColorMapPlotWidget::mouseMoveHandlerNotDraggingCursor() { BasePlotWidget::mouseMoveHandlerNotDraggingCursor(); } void DriftSpecMassSpecColorMapPlotWidget::mouseMoveHandlerDraggingCursor() { BasePlotWidget::mouseMoveHandlerDraggingCursor(); } //! Record the clicks of the mouse. void DriftSpecMassSpecColorMapPlotWidget::mousePressHandler(QMouseEvent *event) { BasePlotWidget::mousePressHandler(event); } //! React to the release of the mouse buttons. void DriftSpecMassSpecColorMapPlotWidget::mouseReleaseHandler(QMouseEvent *event) { BasePlotWidget::mouseReleaseHandler(event); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h000644 001750 001750 00000004406 14346367014 034106 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "basecolormapplotwidget.h" namespace pappso { class PMSPP_LIB_DECL DriftSpecMassSpecColorMapPlotWidget : public BaseColorMapPlotWidget { Q_OBJECT; public: explicit DriftSpecMassSpecColorMapPlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~DriftSpecMassSpecColorMapPlotWidget(); virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; virtual void mouseMoveHandler(QMouseEvent *event) override; virtual void mousePressHandler(QMouseEvent *event) override; virtual void mouseReleaseHandler(QMouseEvent *event) override; virtual void mouseMoveHandlerNotDraggingCursor() override; virtual void mouseMoveHandlerDraggingCursor() override; signals: // Here we have signals that are specific of the mass spectrum-oriented // version of the plot widget. protected: }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp000644 001750 001750 00000006465 14526455546 032203 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "driftspectraceplotwidget.h" #include "../../pappsoexception.h" namespace pappso { DriftSpecTracePlotWidget::DriftSpecTracePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BaseTracePlotWidget(parent, x_axis_label, y_axis_label) { // Set the context to be of kind DataKind::dt m_context.m_dataKind = DataKind::dt; // qDebug() << "Data kind:" << static_cast(m_context.m_dataKind); } DriftSpecTracePlotWidget::~DriftSpecTracePlotWidget() { } //! Set the \c m_pressedKeyCode to the key code in \p event. void DriftSpecTracePlotWidget::keyPressEvent(QKeyEvent *event) { // qDebug() << "ENTER"; BasePlotWidget::keyPressEvent(event); // qDebug() << "Going to emit keyPressEventSignal(m_context);"; emit keyPressEventSignal(m_context); } //! Handle specific key codes and trigger respective actions. void DriftSpecTracePlotWidget::keyReleaseEvent(QKeyEvent *event) { BasePlotWidget::keyReleaseEvent(event); } //! Handle mouse movements, in particular record all the last visited points. /*! This function is reponsible for storing at each time the last visited point in the graph. Here, point is intended as any x/y coordinate in the plot widget viewport, not a graph point. The stored values are then the basis for a large set of calculations throughout all the plot widget. \param pointer to QMouseEvent from which to retrieve the coordinates of the visited viewport points. */ void DriftSpecTracePlotWidget::mouseMoveHandler(QMouseEvent *event) { BasePlotWidget::mouseMoveHandler(event); } void DriftSpecTracePlotWidget::mouseMoveHandlerNotDraggingCursor() { BasePlotWidget::mouseMoveHandlerNotDraggingCursor(); } void DriftSpecTracePlotWidget::mouseMoveHandlerDraggingCursor() { BasePlotWidget::mouseMoveHandlerDraggingCursor(); } //! Record the clicks of the mouse. void DriftSpecTracePlotWidget::mousePressHandler(QMouseEvent *event) { BasePlotWidget::mousePressHandler(event); } //! React to the release of the mouse buttons. void DriftSpecTracePlotWidget::mouseReleaseHandler(QMouseEvent *event) { BasePlotWidget::mouseReleaseHandler(event); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h000644 001750 001750 00000004550 14346367014 031631 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "basetraceplotwidget.h" namespace pappso { class PMSPP_LIB_DECL DriftSpecTracePlotWidget : public BaseTracePlotWidget { Q_OBJECT; public: explicit DriftSpecTracePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~DriftSpecTracePlotWidget(); /******* Mouse and keyboard event handlers *******/ /******* Mouse and keyboard event handlers *******/ virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; virtual void mouseMoveHandler(QMouseEvent *event) override; virtual void mousePressHandler(QMouseEvent *event) override; virtual void mouseReleaseHandler(QMouseEvent *event) override; virtual void mouseMoveHandlerNotDraggingCursor() override; virtual void mouseMoveHandlerDraggingCursor() override; /******* Mouse and keyboard event handlers *******/ signals: // Here we have signals that are specific of the mass spectrum-oriented // version of the plot widget. protected: }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/massspectraceplotcontext.cpp000644 001750 001750 00000015010 14526455546 032221 0ustar00rusconirusconi000000 000000 // Copyright 2021 Filippo Rusconi // GPLv3+ /////////////////////// StdLib includes /////////////////////// Qt includes #include /////////////////////// Local includes #include "massspectraceplotcontext.h" namespace pappso { MassSpecTracePlotContext::MassSpecTracePlotContext() { } MassSpecTracePlotContext::MassSpecTracePlotContext( const MassSpecTracePlotContext &other) : BasePlotContext(other), m_lastZ(other.m_lastZ), m_lastMz(other.m_lastMz), m_lastTicIntensity(other.m_lastTicIntensity), m_lastMr(other.m_lastMr), m_lastResolvingPower(other.m_lastResolvingPower) { // qDebug() << "Constructing MassSpecTracePlotContext by copy."; } MassSpecTracePlotContext::~MassSpecTracePlotContext() { } MassSpecTracePlotContext & MassSpecTracePlotContext::operator=(const BasePlotContext &other) { if(this == &other) return *this; // First the BasePlotContext members m_dataKind = other.m_dataKind; m_isMouseDragging = other.m_isMouseDragging; m_wasMouseDragging = other.m_wasMouseDragging; m_isKeyBoardDragging = other.m_isKeyBoardDragging; m_isLeftPseudoButtonKeyPressed = other.m_isLeftPseudoButtonKeyPressed; m_isRightPseudoButtonKeyPressed = other.m_isRightPseudoButtonKeyPressed; m_wassKeyBoardDragging = other.m_wassKeyBoardDragging; m_startDragPoint = other.m_startDragPoint; m_currentDragPoint = other.m_currentDragPoint; m_lastCursorHoveredPoint = other.m_lastCursorHoveredPoint; m_selectionPolygon = other.m_selectionPolygon; m_selectRectangleWidth = other.m_selectRectangleWidth; // The effective range of the axes. m_xRange = other.m_xRange; m_yRange = other.m_yRange; // Tell if the mouse move was started onto either axis, because that will // condition if some calculations needs to be performed or not (for example, // if the mouse cursor motion was started on an axis, there is no point to // perform deconvolutions). m_wasClickOnXAxis = other.m_wasClickOnXAxis; m_wasClickOnYAxis = other.m_wasClickOnYAxis; m_isMeasuringDistance = other.m_isMeasuringDistance; // The user-selected region over the plot. // Note that we cannot use QCPRange structures because these are normalized by // QCustomPlot in such a manner that lower is actually < upper. But we need // for a number of our calculations (specifically for the deconvolutions) to // actually have the lower value be start drag point.x even if the drag // direction was from right to left. m_xRegionRangeStart = other.m_xRegionRangeStart; m_xRegionRangeEnd = other.m_xRegionRangeEnd; m_yRegionRangeStart = other.m_yRegionRangeStart; m_yRegionRangeEnd = other.m_yRegionRangeEnd; m_xDelta = other.m_xDelta; m_yDelta = other.m_yDelta; m_pressedKeyCode = other.m_pressedKeyCode; m_releasedKeyCode = other.m_releasedKeyCode; m_keyboardModifiers = other.m_keyboardModifiers; m_lastPressedMouseButton = other.m_lastPressedMouseButton; m_lastReleasedMouseButton = other.m_lastReleasedMouseButton; m_pressedMouseButtons = other.m_pressedMouseButtons; m_mouseButtonsAtMousePress = other.m_mouseButtonsAtMousePress; m_mouseButtonsAtMouseRelease = other.m_mouseButtonsAtMouseRelease; return *this; } MassSpecTracePlotContext & MassSpecTracePlotContext::operator=(const MassSpecTracePlotContext &other) { if(this == &other) return *this; // First the BasePlotContext members m_dataKind = other.m_dataKind; m_isMouseDragging = other.m_isMouseDragging; m_wasMouseDragging = other.m_wasMouseDragging; m_isKeyBoardDragging = other.m_isKeyBoardDragging; m_isLeftPseudoButtonKeyPressed = other.m_isLeftPseudoButtonKeyPressed; m_isRightPseudoButtonKeyPressed = other.m_isRightPseudoButtonKeyPressed; m_wassKeyBoardDragging = other.m_wassKeyBoardDragging; m_startDragPoint = other.m_startDragPoint; m_currentDragPoint = other.m_currentDragPoint; m_lastCursorHoveredPoint = other.m_lastCursorHoveredPoint; m_selectionPolygon = other.m_selectionPolygon; m_selectRectangleWidth = other.m_selectRectangleWidth; // The effective range of the axes. m_xRange = other.m_xRange; m_yRange = other.m_yRange; // Tell if the mouse move was started onto either axis, because that will // condition if some calculations needs to be performed or not (for example, // if the mouse cursor motion was started on an axis, there is no point to // perform deconvolutions). m_wasClickOnXAxis = other.m_wasClickOnXAxis; m_wasClickOnYAxis = other.m_wasClickOnYAxis; m_isMeasuringDistance = other.m_isMeasuringDistance; // The user-selected region over the plot. // Note that we cannot use QCPRange structures because these are normalized by // QCustomPlot in such a manner that lower is actually < upper. But we need // for a number of our calculations (specifically for the deconvolutions) to // actually have the lower value be start drag point.x even if the drag // direction was from right to left. m_xRegionRangeStart = other.m_xRegionRangeStart; m_xRegionRangeEnd = other.m_xRegionRangeEnd; m_yRegionRangeStart = other.m_yRegionRangeStart; m_yRegionRangeEnd = other.m_yRegionRangeEnd; m_xDelta = other.m_xDelta; m_yDelta = other.m_yDelta; m_pressedKeyCode = other.m_pressedKeyCode; m_releasedKeyCode = other.m_releasedKeyCode; m_keyboardModifiers = other.m_keyboardModifiers; m_lastPressedMouseButton = other.m_lastPressedMouseButton; m_lastReleasedMouseButton = other.m_lastReleasedMouseButton; m_pressedMouseButtons = other.m_pressedMouseButtons; m_mouseButtonsAtMousePress = other.m_mouseButtonsAtMousePress; m_mouseButtonsAtMouseRelease = other.m_mouseButtonsAtMouseRelease; // Second the mass spec trace plot-specific members m_lastZ = other.m_lastZ; m_lastMz = other.m_lastMz; m_lastTicIntensity = other.m_lastTicIntensity; m_lastMr = other.m_lastMr; m_lastResolvingPower = other.m_lastResolvingPower; return *this; } QString MassSpecTracePlotContext::toString() const { QString text("Base context:\n"); text += BasePlotContext::toString(); text += "\n"; text += "Mass spectrum trace plot context\n"; text += QString("last z: %1").arg(m_lastZ); text += QString("last m/z: %1").arg(m_lastMz, 0, 'f', 6); text += QString("last TIC intensity: %1").arg(m_lastTicIntensity, 0, 'g', 0); text += QString("last Mr: %1").arg(m_lastMr, 0, 'f', 6); text += QString("last resolving power: %1").arg(m_lastResolvingPower, 0, 'g', 0); text += "\n"; return text; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h000644 001750 001750 00000001773 14514537341 031670 0ustar00rusconirusconi000000 000000 // Copyright 2021 Filippo Rusconi // GPLv3+ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "baseplotcontext.h" namespace pappso { class PMSPP_LIB_DECL MassSpecTracePlotContext : public BasePlotContext { public: MassSpecTracePlotContext(); MassSpecTracePlotContext(const MassSpecTracePlotContext &other); virtual ~MassSpecTracePlotContext(); MassSpecTracePlotContext &operator=(const BasePlotContext &other); MassSpecTracePlotContext &operator=(const MassSpecTracePlotContext &other); int m_lastZ = -1; double m_lastMz = std::numeric_limits::min(); double m_lastTicIntensity = std::numeric_limits::min(); double m_lastMr = std::numeric_limits::min(); double m_lastResolvingPower = std::numeric_limits::min(); QString toString() const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp000644 001750 001750 00000044232 14526455546 032030 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes // For the proton mass #include "../../types.h" #include "massspectraceplotwidget.h" #include "massspectraceplotcontext.h" int massSpecTracePlotContextMetaTypeId = qRegisterMetaType( "pappso::MassSpecTracePlotContext"); int massSpecTracePlotContextPtrMetaTypeId = qRegisterMetaType( "pappso::MassSpecTracePlotContext *"); namespace pappso { MassSpecTracePlotWidget::MassSpecTracePlotWidget(QWidget *parent) : BaseTracePlotWidget(parent) { m_context.m_dataKind = DataKind::mz; // qDebug() << "Data kind:" << // static_cast(m_context.m_baseContext.m_dataKind); } MassSpecTracePlotWidget::MassSpecTracePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BaseTracePlotWidget(parent, x_axis_label, y_axis_label) { // Set the base context to be of kind DataKind::mz; m_context.m_dataKind = DataKind::mz; // qDebug() << "Data kind:" << // static_cast(m_context.m_baseContext.m_dataKind); } MassSpecTracePlotWidget::~MassSpecTracePlotWidget() { } //! Set the \c m_pressedKeyCode to the key code in \p event. void MassSpecTracePlotWidget::keyPressEvent(QKeyEvent *event) { // qDebug() << "ENTER"; BasePlotWidget::keyPressEvent(event); // Before working on the various data belonging to the base context, we need // to get it from the base class and refresh our local context with it. refreshBaseContext(); // qDebug() << "Going to emit keyPressEventSignal(m_context);"; emit keyPressEventSignal(m_context); } //! Handle specific key codes and trigger respective actions. void MassSpecTracePlotWidget::keyReleaseEvent(QKeyEvent *event) { BasePlotWidget::keyReleaseEvent(event); // Before working on the various data belonging to the base context, we need // to get it from the base class and refresh our local context with it. refreshBaseContext(); } //! Handle mouse movements, in particular record all the last visited points. /*! This function is reponsible for storing at each time the last visited point in the graph. Here, point is intended as any x/y coordinate in the plot widget viewport, not a graph point. The stored values are then the basis for a large set of calculations throughout all the plot widget. \param pointer to QMouseEvent from which to retrieve the coordinates of the visited viewport points. */ void MassSpecTracePlotWidget::mouseMoveHandler(QMouseEvent *event) { BasePlotWidget::mouseMoveHandler(event); // Before working on the various data belonging to the base context, we need // to get it from the base class and refresh our local context with it. refreshBaseContext(); } void MassSpecTracePlotWidget::mouseMoveHandlerNotDraggingCursor() { BasePlotWidget::mouseMoveHandlerNotDraggingCursor(); // Before working on the various data belonging to the base context, we need // to get it from the base class and refresh our local context with it. refreshBaseContext(); } void MassSpecTracePlotWidget::mouseMoveHandlerDraggingCursor() { BasePlotWidget::mouseMoveHandlerDraggingCursor(); // Before working on the various data belonging to the base context, we need // to get it from the base class and refresh our local context with it. refreshBaseContext(); if(m_context.m_mouseButtonsAtMousePress & Qt::LeftButton) { if(!m_context.m_isMeasuringDistance) return; // qDebug() << "lastMovingMouseButtons:" //<< m_context.m_baseContext.m_lastMovingMouseButtons; deconvolute(); computeResolvingPower(); } } //! Record the clicks of the mouse. void MassSpecTracePlotWidget::mousePressHandler(QMouseEvent *event) { BasePlotWidget::mousePressHandler(event); // Before working on the various data belonging to the base context, we need // to get it from the base class and refresh our local context with it. refreshBaseContext(); } //! React to the release of the mouse buttons. void MassSpecTracePlotWidget::mouseReleaseHandler(QMouseEvent *event) { BasePlotWidget::mouseReleaseHandler(event); // Before working on the various data belonging to the base context, we need // to get it from the base class and refresh our local context with it. refreshBaseContext(); } const MassSpecTracePlotContext & MassSpecTracePlotWidget::refreshBaseContext() const { // BasePlotWidget has a member m_context of type BasePlotContext. // Here we also have a m_context *distinct* member that is of type // MassSpecTracePlotContext. // While MassSpecTracePlotContext is derived from BasePlotContext, the two // m_context members are distinct and there are lots of housekeeping data that // are managed by the parent BasePlotWidget class in its m_context member // *independently* of what we have in the ::BasePlotContext part of our // m_context member that is of type MassSpecTracePlotContext. We thus need to // resynchronize the data from BasePlotWidget::m_context to our m_context. m_context = BasePlotWidget::m_context; return m_context; } void MassSpecTracePlotWidget::setChargeMinimalFractionalPart( double charge_fractional_part) { m_chargeMinimalFractionalPart = charge_fractional_part; } double MassSpecTracePlotWidget::getChargeMinimalFractionalPart() const { return m_chargeMinimalFractionalPart; } void MassSpecTracePlotWidget::setChargeStateEnvelopePeakSpan(int interval) { m_chargeStateEnvelopePeakSpan = interval; } int MassSpecTracePlotWidget::getChargeStateEnvelopePeakSpan() const { return m_chargeStateEnvelopePeakSpan; } //! Deconvolute the mass peaks into charge and molecular mass. bool MassSpecTracePlotWidget::deconvolute() { // There are two situations: when the user is deconvoluting on the // basis of the distance between two consecutive peaks of a same // isotopic cluster or when the user deconvolutes on the basis of two // different charged-stated peaks that belong to the same envelope. // We can tell the difference because in the first case the xDelta // should be less than 1. In the other case, of course the difference // is much greater than 1. // In order to do the deconvolutions, we need to know what is the tolerance // on the fractional part of the deconvoluted charge value. This value is set // in the parent window's double spin box. if(fabs(m_context.m_xDelta) >= 0 && fabs(m_context.m_xDelta) <= 1.1) { // qDebug() << "m_xDelta:" << m_context.m_xDelta //<< "trying isotope-based deconvolution."; return deconvoluteIsotopicCluster(); } // If not deconvoluting on the basis of the isotopic cluster, then: return deconvoluteChargedState(m_chargeStateEnvelopePeakSpan); } //! Deconvolute the mass peaks into charge and molecular mass. /*! This is one of two methods to deconvolute mass data into a charge value and a Mr value. The method implemented in this function is based on the charge state envelope offered by the mass spectrum (most often for polymers of a reasonable size). \param span value representing the number of peaks of the charge state envelope that are spanned by the user selection. Defaults to 1, that is, the span encompasses two \e consecutive mass peaks of a given charge state envelope. Set m_lastMz, m_lastZ and m_lastMass. \return true if the deconvolution could be performed, false otherwise. */ bool MassSpecTracePlotWidget::deconvoluteChargedState(int span) { // We assume that we are dealing with two successive (if span is 1) mass // peaks belonging to a given charge state family. // We call span the number of intervals in a given charge state envelope // that separate the initial peak (lowerMz) from the last peak (upperMz). // That parameter defaults to 1, that is the two peaks are immediately // consecutive, that is, there is only one interval. // We use the m_contex.basecontext.m_xRegionRange structure that is unsorted. // That is, lower is the start drag point.x and upper is the current drag // point.x. If dragging occurs from left to right, start.x < cur.x. // We use the unsorted values, because we need to know in which direction // the user has drug the mouse, because we want to provide the Mr value // for the peak currently under the mouse cursor, that is under // currentDragPoint, that is the value in // m_context.m_baseContext.m_xRegionRange.upper. double startMz = m_context.m_xRegionRangeStart; double curMz = m_context.m_xRegionRangeEnd; // qDebug() << "startMz:" << startMz << "curMz:" << curMz; if(startMz == curMz) { m_context.m_lastZ = -1; m_context.m_lastMz = std::numeric_limits::min(); m_context.m_lastTicIntensity = std::numeric_limits::min(); m_context.m_lastMr = std::numeric_limits::min(); return false; } // We need to be aware that the status bar of the window that contains // this plot widget shows the cursor position realtime, and that cursor // position is the m_currentDragPoint.x value, that is, curMz. Thus, we need // to make the calculations with the charge being the one of the polymer under // the cursor position. This is tricky because it changes when the user // switches drag senses: from left to right and right to left. // The way z is calculated always makes it the charge of the highest mz // value. So knowing this, depending on the drag direction we'll have to take // curMz and apply to it either z charge (left to right drag) or (z+span) // charge (right to left). // Make sure lower is actually lower, even if drag is from right to left. // This is only to have a single charge calculation. double lowerMz; double upperMz; if(startMz < curMz) { lowerMz = startMz; upperMz = curMz; } else { lowerMz = curMz; upperMz = startMz; } double chargeTemp = ((lowerMz * span) - span) / (upperMz - lowerMz); // Make a judicious roundup. double chargeIntPart; double chargeFracPart = modf(chargeTemp, &chargeIntPart); // When calculating the charge of the ion, very rarely does it provide a // perfect integer value. Most often (if deconvolution is for bona fide // peaks belonging to the same charge state envelope) that value is with // either a large fractional part or a very small fractional part. What we // test here, it that fractional part. If it is greater than // m_chargeMinimalFractionalPart, then we simply round up to the next integer // value (that is, chargeIntPart = 27 and chargeFracPart 0.995, then we // set charge to 28). If it is lesser or equal to (1 - // m_chargeMinimalFractionalPart /* that is >= 0.01 */, then we let // chargeIntPart unmodified (that is, chargeIntPart = 29 and // chargeFracPart 0.01, then we set charge to 29). If chargeFracPart is in // between (1 - m_chargeMinimalFractionalPart) and // m_chargeMinimalFractionalPart, then we consider that the peaks do not // belong to the same charge state envelope. // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ //<< "Charge:" << chargeIntPart //<< "Charge fractional part: " << chargeFracPart; if(chargeFracPart >= (1 - m_chargeMinimalFractionalPart /* that is >= 0.01 */) && chargeFracPart <= m_chargeMinimalFractionalPart /* that is <= 0.99 */) { m_context.m_lastZ = -1; m_context.m_lastMz = std::numeric_limits::min(); m_context.m_lastTicIntensity = std::numeric_limits::min(); m_context.m_lastMr = std::numeric_limits::min(); // qDebug() << "Not a charge state family peak," //<< "returning from deconvoluteChargeState"; return false; } if(chargeFracPart > m_chargeMinimalFractionalPart) m_context.m_lastZ = chargeIntPart + 1; else m_context.m_lastZ = chargeIntPart; // Now, to actually compute the molecular mass based on the charge and on // the currently displayed m/z value, we need to have some thinking: if(startMz < curMz) { // The drag was from left to right, that is curMz is greater than // startMz. Fine, the z value is effectively the charge of the ion at // curMz. Easy, no charge value modification here. } else { // The drag was from right to left, that is curMz is less than startMz. // So we want to show the charge of the curMz, that is, z + span. m_context.m_lastZ = m_context.m_lastZ + span; } m_context.m_lastMz = curMz; m_context.m_lastMr = (m_context.m_lastMz * m_context.m_lastZ) - (m_context.m_lastZ * MPROTON); // qDebug() << "startMz:" << QString("%1").arg(startMz, 0, 'f', 6) //<< "m_lastMz (curMz):" //<< QString("%1").arg(m_context.m_lastMz, 0, 'f', 6) //<< "m_lastMass:" << QString("%1").arg(m_context.m_lastMr, 0, 'f', 6) //<< "m_lastZ:" << QString("%1").arg(m_context.m_lastZ); // qDebug() << "returning true"; // The m_context was refreshed with the base class context in the calling // chain. emit massDeconvolutionSignal(m_context); return true; } //! Deconvolute the mass peaks into charge and molecular mass. /*! This is one of two methods to deconvolute mass data into a charge value and a Mr value. The method implemented in this function is based on the distance that separates two immediately consecutive peaks of an isotopic cluster. This method can be used as long as the instrument produced data with a resolution sufficient to separate reasonably well the different peaks of an isotopic cluster. Set m_lastMz, m_lastZ and m_lastMass. \return true if the deconvolution could be performed, false otherwise. */ bool MassSpecTracePlotWidget::deconvoluteIsotopicCluster() { if(m_context.m_xRegionRangeStart == m_context.m_xRegionRangeEnd) { // qDebug() << __FILE__ << __LINE__ //<< "Same xRegionRange.upper and xRegionRange.lower:" //<< "returning from deconvoluteIsotopicCluster"; return false; } double chargeTemp = 1 / fabs(m_context.m_xDelta); // Make a judicious roundup. double chargeIntPart; double chargeFracPart = modf(chargeTemp, &chargeIntPart); // qDebug() << "m_xDelta:" << m_context.m_baseContext.m_xDelta //<< "chargeTemp:" << QString("%1").arg(chargeTemp, 0, 'f', 6) //<< "chargeIntPart:" << chargeIntPart //<< "chargeFracPart:" << QString("%1").arg(chargeFracPart, 0, 'f', 6) //<< "m_chargeMinimalFractionalPart:" << m_chargeMinimalFractionalPart; if(chargeFracPart >= (1 - m_chargeMinimalFractionalPart) && chargeFracPart <= m_chargeMinimalFractionalPart) { m_context.m_lastZ = -1; m_context.m_lastMz = std::numeric_limits::min(); m_context.m_lastTicIntensity = std::numeric_limits::min(); m_context.m_lastMr = std::numeric_limits::min(); // qDebug() << "Not in a isotopic cluster peak:" //<< "returning from deconvoluteIsotopicCluster"; return false; } if(chargeFracPart > m_chargeMinimalFractionalPart) { m_context.m_lastZ = chargeIntPart + 1; // qDebug() << "chargeFracPart > m_chargeMinimalFractionalPart -> m_lastZ // = " //<< m_context.m_lastZ; } else { m_context.m_lastZ = chargeIntPart; // qDebug() //<< "chargeFracPart <= m_chargeMinimalFractionalPart -> m_lastZ = " //<< m_context.m_lastZ; } // Now that we have the charge in the form of an int, we can compute the // Mr of the lightest isotopic cluster peak (the one that has the lowest x // value). That value is stored in m_xRangeLower. // We need to sort the xRegionRange before being certain that lower is indeed // the left value of the drag span. m_context.m_lastMz = std::min(m_context.m_xRegionRangeStart, m_context.m_xRegionRangeEnd); m_context.m_lastMr = (m_context.m_lastMz * m_context.m_lastZ) - (m_context.m_lastZ * MPROTON); // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ << "()" //<< "returning true"; // The m_context was refreshed with the base class context in the calling // chain. emit massDeconvolutionSignal(m_context); return true; } bool MassSpecTracePlotWidget::computeResolvingPower() { // m_xRangeLower and m_xRangeUpper and m_xDelta (in fabs() form) have been set // during mouve movement handling. Note that the range values *are // sorted*. if(!m_context.m_xDelta || m_context.m_xDelta > 1) { m_context.m_lastResolvingPower = std::numeric_limits::min(); return false; } // Resolving power is m/z / Delta(m/z), for singly-charged species. // qDebug() << "Calculating the resolving power with these data:" //<< "m_context.m_xRegionRangeStart: " << m_context.m_xRegionRangeStart //<< "m_context.m_xRegionRangeEnd: " << m_context.m_xRegionRangeEnd //<< "m_context.m_xDelta / 2: " << m_context.m_xDelta / 2; m_context.m_lastResolvingPower = (std::min(m_context.m_xRegionRangeStart, m_context.m_xRegionRangeEnd) + (m_context.m_xDelta / 2)) / m_context.m_xDelta; // The m_context was refreshed with the base class context in the calling // chain. emit resolvingPowerComputationSignal(m_context); return true; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h000644 001750 001750 00000010556 14371726065 031472 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// pappsomspp includes /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "basetraceplotwidget.h" #include "massspectraceplotcontext.h" namespace pappso { class PMSPP_LIB_DECL MassSpecTracePlotWidget : public BaseTracePlotWidget { Q_OBJECT public: explicit MassSpecTracePlotWidget(QWidget *parent = 0); explicit MassSpecTracePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~MassSpecTracePlotWidget(); /******* Mass spectrum-specific calculations *******/ /******* Mass spectrum-specific calculations *******/ void setChargeMinimalFractionalPart(double charge_fractional_part); double getChargeMinimalFractionalPart() const; void setChargeStateEnvelopePeakSpan(int interval); int getChargeStateEnvelopePeakSpan() const; bool deconvolute(); bool deconvoluteIsotopicCluster(); bool deconvoluteChargedState(int span = 1); bool computeResolvingPower(); /******* Mass spectrum-specific calculations *******/ /******* Mouse and keyboard event handlers *******/ /******* Mouse and keyboard event handlers *******/ virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; virtual void mouseMoveHandler(QMouseEvent *event) override; virtual void mousePressHandler(QMouseEvent *event) override; virtual void mouseReleaseHandler(QMouseEvent *event) override; virtual void mouseMoveHandlerNotDraggingCursor() override; virtual void mouseMoveHandlerDraggingCursor() override; /******* Mouse and keyboard event handlers *******/ const MassSpecTracePlotContext &refreshBaseContext() const; signals: // Here we have signals that are specific of the mass spectrum-oriented // version of the plot widget. void keyPressEventSignal(const MassSpecTracePlotContext &context); void massDeconvolutionSignal(const MassSpecTracePlotContext &context); void resolvingPowerComputationSignal(const MassSpecTracePlotContext &context); void mouseReleaseEventSignal(const MassSpecTracePlotContext &context); protected: mutable MassSpecTracePlotContext m_context; // This value is the tolerance on the fractional part of the charge value that // is computed by the deconvolution. If the z value that is deconvoluted is, // for example, 2.980, and m_chargeFractionalPartTolerance = 0.990, then no z // value will be displayed: we are not reaching an integer near enough for the // z value to be considered valid. double m_chargeMinimalFractionalPart = 0.990; // When performing deconvolutions based on the distance between peaks belong // to the same charge state envelope, this value indicates the distance // between the peaks that are used for the calculation. When the peaks are // consecutive, the distance is 1. If there is one peak in between, the // distance is 2. int m_chargeStateEnvelopePeakSpan = 1; }; } // namespace pappso Q_DECLARE_METATYPE(pappso::MassSpecTracePlotContext); extern int massSpecTracePlotContextMetaTypeId; Q_DECLARE_METATYPE(pappso::MassSpecTracePlotContext *); extern int massSpecTracePlotContextPtrMetaTypeId; libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp000644 001750 001750 00000006130 14526455546 035143 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "ticxicchromdriftspeccolormapplotwidget.h" #include "../../pappsoexception.h" namespace pappso { TicXicChromDriftSpecColorMapPlotWidget::TicXicChromDriftSpecColorMapPlotWidget( QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BaseColorMapPlotWidget(parent, x_axis_label, y_axis_label) { } TicXicChromDriftSpecColorMapPlotWidget:: ~TicXicChromDriftSpecColorMapPlotWidget() { } //! Set the \c m_pressedKeyCode to the key code in \p event. void TicXicChromDriftSpecColorMapPlotWidget::keyPressEvent(QKeyEvent *event) { BasePlotWidget::keyPressEvent(event); } //! Handle specific key codes and trigger respective actions. void TicXicChromDriftSpecColorMapPlotWidget::keyReleaseEvent(QKeyEvent *event) { BasePlotWidget::keyReleaseEvent(event); } //! Handle mouse movements, in particular record all the last visited points. /*! This function is reponsible for storing at each time the last visited point in the graph. Here, point is intended as any x/y coordinate in the plot widget viewport, not a graph point. The stored values are then the basis for a large set of calculations throughout all the plot widget. \param pointer to QMouseEvent from which to retrieve the coordinates of the visited viewport points. */ void TicXicChromDriftSpecColorMapPlotWidget::mouseMoveHandler(QMouseEvent *event) { BasePlotWidget::mouseMoveHandler(event); } void TicXicChromDriftSpecColorMapPlotWidget::mouseMoveHandlerNotDraggingCursor() { BasePlotWidget::mouseMoveHandlerNotDraggingCursor(); } void TicXicChromDriftSpecColorMapPlotWidget::mouseMoveHandlerDraggingCursor() { BasePlotWidget::mouseMoveHandlerDraggingCursor(); } //! Record the clicks of the mouse. void TicXicChromDriftSpecColorMapPlotWidget::mousePressHandler(QMouseEvent *event) { BasePlotWidget::mousePressHandler(event); } //! React to the release of the mouse buttons. void TicXicChromDriftSpecColorMapPlotWidget::mouseReleaseHandler(QMouseEvent *event) { BasePlotWidget::mouseReleaseHandler(event); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h000644 001750 001750 00000004425 14346367014 034605 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "basecolormapplotwidget.h" namespace pappso { class PMSPP_LIB_DECL TicXicChromDriftSpecColorMapPlotWidget : public BaseColorMapPlotWidget { Q_OBJECT; public: explicit TicXicChromDriftSpecColorMapPlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~TicXicChromDriftSpecColorMapPlotWidget(); virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; virtual void mouseMoveHandler(QMouseEvent *event) override; virtual void mousePressHandler(QMouseEvent *event) override; virtual void mouseReleaseHandler(QMouseEvent *event) override; virtual void mouseMoveHandlerNotDraggingCursor() override; virtual void mouseMoveHandlerDraggingCursor() override; signals: // Here we have signals that are specific of the mass spectrum-oriented // version of the plot widget. protected: }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp000644 001750 001750 00000006111 14526455546 034775 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "ticxicchrommassspeccolormapplotwidget.h" #include "../../pappsoexception.h" namespace pappso { TicXicChromMassSpecColorMapPlotWidget::TicXicChromMassSpecColorMapPlotWidget( QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BaseColorMapPlotWidget(parent, x_axis_label, y_axis_label) { } TicXicChromMassSpecColorMapPlotWidget::~TicXicChromMassSpecColorMapPlotWidget() { } //! Set the \c m_pressedKeyCode to the key code in \p event. void TicXicChromMassSpecColorMapPlotWidget::keyPressEvent(QKeyEvent *event) { BasePlotWidget::keyPressEvent(event); } //! Handle specific key codes and trigger respective actions. void TicXicChromMassSpecColorMapPlotWidget::keyReleaseEvent(QKeyEvent *event) { BasePlotWidget::keyReleaseEvent(event); } //! Handle mouse movements, in particular record all the last visited points. /*! This function is reponsible for storing at each time the last visited point in the graph. Here, point is intended as any x/y coordinate in the plot widget viewport, not a graph point. The stored values are then the basis for a large set of calculations throughout all the plot widget. \param pointer to QMouseEvent from which to retrieve the coordinates of the visited viewport points. */ void TicXicChromMassSpecColorMapPlotWidget::mouseMoveHandler(QMouseEvent *event) { BasePlotWidget::mouseMoveHandler(event); } void TicXicChromMassSpecColorMapPlotWidget::mouseMoveHandlerNotDraggingCursor() { BasePlotWidget::mouseMoveHandlerNotDraggingCursor(); } void TicXicChromMassSpecColorMapPlotWidget::mouseMoveHandlerDraggingCursor() { BasePlotWidget::mouseMoveHandlerDraggingCursor(); } //! Record the clicks of the mouse. void TicXicChromMassSpecColorMapPlotWidget::mousePressHandler(QMouseEvent *event) { BasePlotWidget::mousePressHandler(event); } //! React to the release of the mouse buttons. void TicXicChromMassSpecColorMapPlotWidget::mouseReleaseHandler(QMouseEvent *event) { BasePlotWidget::mouseReleaseHandler(event); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h000644 001750 001750 00000004420 14346367014 034433 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "basecolormapplotwidget.h" namespace pappso { class PMSPP_LIB_DECL TicXicChromMassSpecColorMapPlotWidget : public BaseColorMapPlotWidget { Q_OBJECT; public: explicit TicXicChromMassSpecColorMapPlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~TicXicChromMassSpecColorMapPlotWidget(); virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; virtual void mouseMoveHandler(QMouseEvent *event) override; virtual void mousePressHandler(QMouseEvent *event) override; virtual void mouseReleaseHandler(QMouseEvent *event) override; virtual void mouseMoveHandlerNotDraggingCursor() override; virtual void mouseMoveHandlerDraggingCursor() override; signals: // Here we have signals that are specific of the mass spectrum-oriented // version of the plot widget. protected: }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp000644 001750 001750 00000006352 14526455546 032527 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ /////////////////////// StdLib includes #include /////////////////////// Qt includes #include /////////////////////// Local includes #include "ticxicchromtraceplotwidget.h" #include "../../pappsoexception.h" namespace pappso { TicXicChromTracePlotWidget::TicXicChromTracePlotWidget( QWidget *parent, const QString &x_axis_label, const QString &y_axis_label) : BaseTracePlotWidget(parent, x_axis_label, y_axis_label) { // Set the context to be of kind DataKind::rt m_context.m_dataKind = DataKind::rt; // qDebug() << "Data kind:" << static_cast(m_context.m_dataKind); } TicXicChromTracePlotWidget::~TicXicChromTracePlotWidget() { } //! Set the \c m_pressedKeyCode to the key code in \p event. void TicXicChromTracePlotWidget::keyPressEvent(QKeyEvent *event) { // qDebug() << "ENTER"; BasePlotWidget::keyPressEvent(event); // qDebug() << "Going to emit keyPressEventSignal(m_context);"; emit keyPressEventSignal(m_context); } //! Handle specific key codes and trigger respective actions. void TicXicChromTracePlotWidget::keyReleaseEvent(QKeyEvent *event) { BasePlotWidget::keyReleaseEvent(event); } //! Handle mouse movements, in particular record all the last visited points. /*! This function is reponsible for storing at each time the last visited point in the graph. Here, point is intended as any x/y coordinate in the plot widget viewport, not a graph point. The stored values are then the basis for a large set of calculations throughout all the plot widget. \param pointer to QMouseEvent from which to retrieve the coordinates of the visited viewport points. */ void TicXicChromTracePlotWidget::mouseMoveHandler(QMouseEvent *event) { BasePlotWidget::mouseMoveHandler(event); } void TicXicChromTracePlotWidget::mouseMoveHandlerNotDraggingCursor() { BasePlotWidget::mouseMoveHandlerNotDraggingCursor(); } void TicXicChromTracePlotWidget::mouseMoveHandlerDraggingCursor() { BasePlotWidget::mouseMoveHandlerDraggingCursor(); } //! Record the clicks of the mouse. void TicXicChromTracePlotWidget::mousePressHandler(QMouseEvent *event) { BasePlotWidget::mousePressHandler(event); } //! React to the release of the mouse buttons. void TicXicChromTracePlotWidget::mouseReleaseHandler(QMouseEvent *event) { BasePlotWidget::mouseReleaseHandler(event); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h000644 001750 001750 00000004407 14452262756 032170 0ustar00rusconirusconi000000 000000 /* This code comes right from the msXpertSuite software project. * * msXpertSuite - mass spectrometry software suite * ----------------------------------------------- * Copyright(C) 2009,...,2018 Filippo Rusconi * * http://www.msxpertsuite.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * END software license */ #pragma once /////////////////////// StdLib includes /////////////////////// Qt includes #include #include #include #include #include #include /////////////////////// QCustomPlot #include /////////////////////// Local includes #include "../../exportinmportconfig.h" #include "basetraceplotwidget.h" namespace pappso { class PMSPP_LIB_DECL TicXicChromTracePlotWidget : public BaseTracePlotWidget { Q_OBJECT; public: explicit TicXicChromTracePlotWidget(QWidget *parent, const QString &x_axis_label, const QString &y_axis_label); virtual ~TicXicChromTracePlotWidget(); /******* Mouse and keyboard event handlers *******/ /******* Mouse and keyboard event handlers *******/ virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; virtual void mouseMoveHandler(QMouseEvent *event) override; virtual void mousePressHandler(QMouseEvent *event) override; virtual void mouseReleaseHandler(QMouseEvent *event) override; virtual void mouseMoveHandlerNotDraggingCursor() override; virtual void mouseMoveHandlerDraggingCursor() override; /******* Mouse and keyboard event handlers *******/ signals: protected: }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/precisionwidget/000755 001750 001750 00000000000 14533473271 025365 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/precisionwidget/precisionwidget.cpp000644 001750 001750 00000017427 14526455546 031312 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/precisionwidget/precisionwidget.cpp * \date 5/1/2018 * \author Olivier Langella * \brief edit presicion in ppm or dalton */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "../../exception/exceptionnotpossible.h" #include "precisionwidget.h" #include #include namespace pappso { PrecisionWidget::PrecisionWidget(QWidget *parent) : QWidget(parent) { // qDebug() << __FILE__ << __LINE__ << __FUNCTION__ //<< "PrecisionWidget::PrecisionWidget begin"; setLayout(new QHBoxLayout(this)); this->layout()->setContentsMargins(0, 0, 0, 0); // Each precision type has its own double spin box. mp_daltonValueSpinBox = new QDoubleSpinBox(); this->layout()->addWidget(mp_daltonValueSpinBox); mp_ppmValueSpinBox = new QDoubleSpinBox(); this->layout()->addWidget(mp_ppmValueSpinBox); mp_resValueSpinBox = new QDoubleSpinBox(); this->layout()->addWidget(mp_resValueSpinBox); mp_unitComboBox = new QComboBox(); this->layout()->addWidget(mp_unitComboBox); mp_unitComboBox->addItem("dalton", QString("dalton")); mp_unitComboBox->addItem("ppm", QString("ppm")); mp_unitComboBox->addItem("res", QString("res")); mp_precisionDalton = PrecisionFactory::getDaltonInstance(0.02); mp_precisionPpm = PrecisionFactory::getPpmInstance(10); mp_precisionRes = PrecisionFactory::getResInstance(20000); mp_daltonValueSpinBox->setDecimals(6); mp_daltonValueSpinBox->setSingleStep(0.01); mp_daltonValueSpinBox->setRange(0, 30); mp_ppmValueSpinBox->setDecimals(4); mp_ppmValueSpinBox->setSingleStep(10); mp_ppmValueSpinBox->setRange(0.0001, 300); mp_resValueSpinBox->setDecimals(0); mp_resValueSpinBox->setSingleStep(1000); mp_resValueSpinBox->setRange(1, 2000000); // By default set precision to be of the Dalton type. setPrecision(mp_precisionDalton); connect(mp_unitComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setCurrentIndex(int))); connect(mp_daltonValueSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setDaltonValueChanged(double))); connect(mp_ppmValueSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setPpmValueChanged(double))); connect(mp_resValueSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setResValueChanged(double))); m_oldIndex = -1; // qDebug() << "PrecisionWidget::PrecisionWidget end"; } PrecisionWidget::~PrecisionWidget() { } void PrecisionWidget::setCurrentIndex(int index) { // qDebug() << "PrecisionWidget::setCurrentIndex index=" << index; if(m_oldIndex != index) { m_oldIndex = index; if(mp_unitComboBox->itemData(index) == "dalton") { mp_daltonValueSpinBox->setValue(mp_precisionDalton->getNominal()); mp_daltonValueSpinBox->setVisible(true); mp_ppmValueSpinBox->setVisible(false); mp_resValueSpinBox->setVisible(false); emit precisionChanged(mp_precisionDalton); } else if(mp_unitComboBox->itemData(index) == "ppm") { mp_ppmValueSpinBox->setValue(mp_precisionPpm->getNominal()); mp_ppmValueSpinBox->setVisible(true); mp_daltonValueSpinBox->setVisible(false); mp_resValueSpinBox->setVisible(false); emit precisionChanged(mp_precisionPpm); } else if(mp_unitComboBox->itemData(index) == "res") { mp_resValueSpinBox->setValue(mp_precisionRes->getNominal()); mp_resValueSpinBox->setVisible(true); mp_daltonValueSpinBox->setVisible(false); mp_ppmValueSpinBox->setVisible(false); emit precisionChanged(mp_precisionRes); } else { throw ExceptionNotPossible( "precisionwidget.cpp @ setCurrentIndex(int index) -- ERROR " "programming error."); } } } void PrecisionWidget::setDaltonValueChanged(double value) { // qDebug() << "dalton PrecisionWidget::setValueChanged value=" << value; PrecisionPtr precision = PrecisionFactory::getDaltonInstance(value); if(mp_precisionDalton != precision) { mp_precisionDalton = precision; emit precisionChanged(mp_precisionDalton); } } void PrecisionWidget::setPpmValueChanged(double value) { // qDebug() << "ppm PrecisionWidget::setValueChanged value=" << value; PrecisionPtr precision = PrecisionFactory::getPpmInstance(value); if(mp_precisionPpm != precision) { mp_precisionPpm = precision; emit precisionChanged(mp_precisionPpm); } } void PrecisionWidget::setResValueChanged(double value) { // qDebug() << "res PrecisionWidget::setValueChanged value=" << value; PrecisionPtr precision = PrecisionFactory::getResInstance(value); if(mp_precisionRes != precision) { mp_precisionRes = precision; emit precisionChanged(mp_precisionRes); } } const PrecisionPtr & PrecisionWidget::getPrecision() const { if(mp_unitComboBox->itemData(mp_unitComboBox->currentIndex()) == "dalton") { return mp_precisionDalton; } else if(mp_unitComboBox->itemData(mp_unitComboBox->currentIndex()) == "ppm") { return mp_precisionPpm; } else if(mp_unitComboBox->itemData(mp_unitComboBox->currentIndex()) == "res") { return mp_precisionRes; } else { throw ExceptionNotPossible( "precisionwidget.cpp @ getPrecision()-- ERROR programming error."); } } void PrecisionWidget::setPrecision(PrecisionPtr precision) { if(precision->unit() == PrecisionUnit::dalton) { mp_precisionDalton = precision; mp_unitComboBox->setCurrentIndex( mp_unitComboBox->findData(QString("dalton"))); mp_daltonValueSpinBox->setValue(precision->getNominal()); mp_daltonValueSpinBox->setVisible(true); mp_ppmValueSpinBox->setVisible(false); mp_resValueSpinBox->setVisible(false); } else if(precision->unit() == PrecisionUnit::ppm) { mp_precisionPpm = precision; mp_unitComboBox->setCurrentIndex( mp_unitComboBox->findData(QString("ppm"))); mp_ppmValueSpinBox->setValue(precision->getNominal()); mp_ppmValueSpinBox->setVisible(true); mp_daltonValueSpinBox->setVisible(false); mp_resValueSpinBox->setVisible(false); } else if(precision->unit() == PrecisionUnit::res) { mp_precisionRes = precision; mp_unitComboBox->setCurrentIndex( mp_unitComboBox->findData(QString("res"))); mp_resValueSpinBox->setValue(precision->getNominal()); mp_resValueSpinBox->setVisible(true); mp_daltonValueSpinBox->setVisible(false); mp_ppmValueSpinBox->setVisible(false); } else { throw ExceptionNotPossible( "precisionwidget.cpp @ setPrecision(PrecisionPtr precision)-- ERROR " "programming error."); } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/precisionwidget/precisionwidget.h000644 001750 001750 00000004203 14346367014 030733 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/precisionwidget/precisionwidget.h * \date 5/1/2018 * \author Olivier Langella * \brief edit presicion in ppm or dalton */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include #include "../../exportinmportconfig.h" #include "../../mzrange.h" namespace pappso { class PMSPP_LIB_DECL PrecisionWidget : public QWidget { Q_OBJECT private: QComboBox *mp_unitComboBox; QDoubleSpinBox *mp_ppmValueSpinBox; QDoubleSpinBox *mp_resValueSpinBox; QDoubleSpinBox *mp_daltonValueSpinBox; PrecisionPtr mp_precisionDalton; PrecisionPtr mp_precisionPpm; PrecisionPtr mp_precisionRes; int m_oldIndex; Q_SLOT void setCurrentIndex(int); Q_SLOT void setPpmValueChanged(double); Q_SLOT void setResValueChanged(double); Q_SLOT void setDaltonValueChanged(double); public: PrecisionWidget(QWidget *parent = 0); ~PrecisionWidget(); void setPrecision(PrecisionPtr precision); const PrecisionPtr &getPrecision() const; signals: void precisionChanged(pappso::PrecisionPtr precision) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/switchbuttonwidget/000755 001750 001750 00000000000 14533473271 026127 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.cpp000644 001750 001750 00000003762 14526455546 032613 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.cpp * \date 26/07/2021 * \author Thomas Renne * \brief widget to transform a push button to a switch button */ /******************************************************************************* * Copyright (c) 2021 Thomas Renne . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Thomas Renne - initial API and *implementation ******************************************************************************/ #include "switchbuttonwidget.h" pappso::SwitchWidget::SwitchWidget(QWidget *parent) : QPushButton(parent) { setSwitchValue(false); setIconSize(QSize(40, 16)); setFlat(true); setMaximumSize(40, 16); connect(this, &SwitchWidget::clicked, this, &SwitchWidget::updateSwitchValue); } pappso::SwitchWidget::~SwitchWidget() { } void pappso::SwitchWidget::setSwitchValue(bool switch_value) { m_switchButtonValue = switch_value; if(m_switchButtonValue) { setIcon(QIcon(":/icons/resources/icons/switch_on.svg")); } else { setIcon(QIcon(":/icons/resources/icons/switch_off.svg")); } } bool pappso::SwitchWidget::getSwitchValue() { return m_switchButtonValue; } void pappso::SwitchWidget::updateSwitchValue() { setSwitchValue(!m_switchButtonValue); } libpappsomspp-0.9.20/src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.h000644 001750 001750 00000003515 14346367014 032244 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.h * \date 26/07/2021 * \author Thomas Renne * \brief widget to transform a push button to a switch button */ /******************************************************************************* * Copyright (c) 2021 Thomas Renne . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Thomas Renne - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../../exportinmportconfig.h" namespace pappso { class PMSPP_LIB_DECL SwitchWidget : public QPushButton { Q_OBJECT public: SwitchWidget(QWidget *parent = 0); ~SwitchWidget(); /** @brief get the state of the switch button (on/off) * @return boolean true or false * */ bool getSwitchValue(); /** @brief set the state of the switch button (on/off) * @param switch_value boolean true or false * */ void setSwitchValue(bool switch_value); private slots: void updateSwitchValue(); private: bool m_switchButtonValue = false; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/xicwidget/000755 001750 001750 00000000000 14533473271 024155 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/widget/xicwidget/qcpxic.cpp000644 001750 001750 00000027223 14526455546 026165 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/xicwidget/qcpxic.cpp * \date 12/1/2018 * \author Olivier Langella * \brief custom plot XIC */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "qcpxic.h" #include "../../processing/detection/tracepeak.h" using namespace pappso; QCPXic::QCPXic(XicWidget *parent) : QCustomPlot(parent) { qDebug() << "QCPXic::QCPXic begin"; _parent = parent; setFocusPolicy(Qt::ClickFocus); if(_parent->_rt_in_seconds) { xAxis->setLabel("retention time (sec)"); } else { xAxis->setLabel("retention time (min)"); } yAxis->setLabel("intensity"); setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); axisRect()->setRangeDrag(Qt::Horizontal); axisRect()->setRangeZoom(Qt::Horizontal); connect(this->xAxis, SIGNAL(rangeChanged(QCPRange)), this, SLOT(setRtRangeChanged(QCPRange))); // // http://tools.medialab.sciences-po.fr/iwanthue/ _colours = {QColor(197, 89, 110), QColor(94, 185, 86), QColor(132, 95, 203), QColor(176, 175, 69), QColor(202, 72, 160), QColor(91, 126, 59), QColor(193, 126, 189), QColor(81, 183, 159), QColor(210, 77, 58), QColor(99, 137, 203), QColor(223, 147, 71), QColor(156, 105, 52)}; qDebug() << "QCPXic::QCPXic end"; } QCPXic::~QCPXic() { } void QCPXic::keyPressEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Control) { _control_key = true; } qDebug() << "QCPXic::keyPressEvent end"; } void QCPXic::keyReleaseEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Control) { _control_key = false; } qDebug() << "QCPXic::keyReleaseEvent end"; } void QCPXic::mousePressEvent(QMouseEvent *event) { qDebug() << " begin "; _mouse_move = false; _click = true; #if QT_VERSION < 0x060000 _old_x = event->x(); _old_y = yAxis->pixelToCoord(event->y()); #else _old_x = event->position().x(); _old_y = yAxis->pixelToCoord(event->position().y()); #endif if(_old_y < 0) { _old_y = 0; } else { } qDebug() << "QCPXic::mousePressEvent end"; } void QCPXic::mouseReleaseEvent(QMouseEvent *event) { #if QT_VERSION < 0x060000 qDebug() << "QCPXic::mouseReleaseEvent begin " << xAxis->pixelToCoord(event->x()) << " " << yAxis->pixelToCoord(event->y()); #else qDebug() << "QCPXic::mouseReleaseEvent begin " << xAxis->pixelToCoord(event->position().x()) << " " << yAxis->pixelToCoord(event->position().y()); #endif _click = false; if(_mouse_move) { _mouse_move = false; } else { _parent->xicClickEvent(xAxisToSeconds(_old_x), _old_y); } qDebug() << "QCPXic::mouseReleaseEvent end"; } void QCPXic::mouseMoveEvent(QMouseEvent *event) { _mouse_move = true; #if QT_VERSION < 0x060000 pappso::pappso_double x = xAxis->pixelToCoord(event->x()); #else pappso::pappso_double x = xAxis->pixelToCoord(event->position().x()); #endif if(_click) { #if QT_VERSION < 0x060000 qDebug() << "QCPXic::mouseMoveEvent begin " << xAxis->pixelToCoord(event->x()) << " " << yAxis->pixelToCoord(event->y()); pappso::pappso_double y = yAxis->pixelToCoord(event->y()); #else qDebug() << "QCPXic::mouseMoveEvent begin " << xAxis->pixelToCoord(event->position().x()) << " " << yAxis->pixelToCoord(event->position().y()); pappso::pappso_double y = yAxis->pixelToCoord(event->position().y()); #endif if(y < 0) { y = 0; } if(_control_key) { if(y > 0) { this->yAxis->scaleRange(_old_y / y, 0); } } else { #if QT_VERSION < 0x060000 this->xAxis->moveRange(xAxis->pixelToCoord(_old_x) - xAxis->pixelToCoord(event->x())); #else this->xAxis->moveRange(xAxis->pixelToCoord(_old_x) - xAxis->pixelToCoord(event->position().x())); #endif } #if QT_VERSION < 0x060000 _old_x = event->x(); #else _old_x = event->position().x(); #endif _old_y = y; replot(); qDebug() << "QCPXic::mouseMoveEvent end"; } else { if(_map_xic_graph.size() > 0) { // pappso::pappso_double mouse_mz_range = xAxis->pixelToCoord(10) - // xAxis->pixelToCoord(5); getNearestPeakBetween(x, mouse_mz_range); _parent->rtChangeEvent(xAxisToSeconds(x)); } } } QCPGraph * QCPXic::addXicP(const Xic *xic_p) { _graph_color = _colours[(int)(_map_xic_graph.size() % _colours.size())]; QCPGraph *graph_xic = addGraph(); graph_xic->setPen(QPen(_graph_color)); _map_xic_graph.insert(std::pair(xic_p, graph_xic)); graph_xic->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 2.0)); if(xic_p->size() > 0) { for(const DataPoint &element : *xic_p) { graph_xic->addData(getRetentionTimeFromSecondsToLocal(element.x), element.y); } if(_rt_range.lower > getRetentionTimeFromSecondsToLocal(xic_p->front().x)) _rt_range.lower = getRetentionTimeFromSecondsToLocal(xic_p->front().x) - 1; if(_rt_range.upper < getRetentionTimeFromSecondsToLocal(xic_p->back().x)) _rt_range.upper = getRetentionTimeFromSecondsToLocal(xic_p->back().x) + 1; _intensity_range.lower = 0; if(_intensity_range.upper < xic_p->maxYDataPoint().y) _intensity_range.upper = xic_p->maxYDataPoint().y; } return graph_xic; } void QCPXic::rescale() { } void QCPXic::setRtRangeChanged(QCPRange range) { qDebug() << "QCPXic::setMzRangeChanged _rt_range.lower" << _rt_range.lower; if(range.lower < _rt_range.lower) { range.lower = _rt_range.lower; } if(range.upper > _rt_range.upper) { range.upper = _rt_range.upper; } xAxis->setRange(range); } void QCPXic::addMsMsEvent(const Xic *xic_p, pappso::pappso_double rt) { _current_ms2_event = new QCPItemTracer(this); // itemDemoPhaseTracer = phaseTracer; // so we can access it later in the // bracketDataSlot for animation _current_ms2_event->setGraph(_map_xic_graph.at(xic_p)); _current_ms2_event->setGraphKey(getRetentionTimeFromSecondsToLocal(rt)); _current_ms2_event->setInterpolating(true); _current_ms2_event->setStyle(QCPItemTracer::tsCircle); _current_ms2_event->setPen(QPen(Qt::red)); _current_ms2_event->setBrush(Qt::red); _current_ms2_event->setSize(7); // addItem(_current_ms2_event); } void QCPXic::setName(const Xic *xic_p, const QString &name) { _map_xic_graph.at(xic_p)->addToLegend(); _map_xic_graph.at(xic_p)->setName(name); } void QCPXic::clear() { legend->clearItems(); _map_xic_graph.clear(); this->clearGraphs(); this->clearItems(); this->clearPlottables(); } void QCPXic::addXicPeakList( const Xic *xic_p, const std::vector &xic_peak_list) { for(const pappso::TracePeakCstSPtr &peak : xic_peak_list) { _graph_peak_surface_list.push_back(addGraph()); for(auto &xic_element : *(xic_p)) { if(peak.get()->containsRt(xic_element.x)) { _graph_peak_surface_list.back()->addData( getRetentionTimeFromSecondsToLocal(xic_element.x), xic_element.y); } } // graph()->setData(rt_peak, intensity_peak); _graph_peak_surface_list.back()->removeFromLegend(); _graph_peak_surface_list.back()->setChannelFillGraph(0); _graph_peak_surface_list.back()->setLineStyle( QCPGraph::LineStyle::lsLine); QColor color = _colours[_graph_peak_surface_list.size() % 12]; color.setAlpha(0); // QColor(0, 110, 110, 30) _graph_peak_surface_list.back()->setPen(QPen(color)); color.setAlpha(40); //_graph_peak_surface_list.back()->setScatterStyle(QCPScatterStyle::ssDot); _graph_peak_surface_list.back()->setBrush(QBrush(color)); } } pappso::pappso_double QCPXic::getRetentionTimeFromSecondsToLocal(pappso::pappso_double rt) const { if(_parent->_rt_in_seconds) { return rt; } else { return (rt / (pappso::pappso_double)60); } } pappso::pappso_double QCPXic::xAxisToSeconds(pappso::pappso_double rt) const { if(_parent->_rt_in_seconds) { return rt; } else { return (rt * (pappso::pappso_double)60); } } void QCPXic::drawXicPeakBorders(unsigned int i, const Xic *xic_p, const pappso::TracePeak *p_xic_peak) { QCPGraph *p_graph = _map_xic_graph.at(xic_p); QColor color = _colours[i % 12]; // color.setAlpha(95); QCPItemTracer *p_peak_border_left = new QCPItemTracer(this); // itemDemoPhaseTracer = phaseTracer; // so we can access it later in the // bracketDataSlot for animation QPen border_pen(color); border_pen.setWidth(3); p_peak_border_left->setGraph(p_graph); p_peak_border_left->setGraphKey( getRetentionTimeFromSecondsToLocal(p_xic_peak->getLeftBoundary().x)); p_peak_border_left->setInterpolating(true); p_peak_border_left->setStyle(QCPItemTracer::tsPlus); p_peak_border_left->setPen(border_pen); p_peak_border_left->setBrush(color); p_peak_border_left->setSize(30); _graph_peak_border_list.push_back(p_peak_border_left); // addItem(p_peak_border_left); QPen apex_pen(color); apex_pen.setWidth(2); p_peak_border_left = new QCPItemTracer(this); p_peak_border_left->setGraph(_map_xic_graph.at(xic_p)); p_peak_border_left->setGraphKey( getRetentionTimeFromSecondsToLocal(p_xic_peak->getMaxXicElement().x)); p_peak_border_left->setInterpolating(true); p_peak_border_left->setStyle(QCPItemTracer::tsPlus); p_peak_border_left->setPen(apex_pen); p_peak_border_left->setBrush(color); p_peak_border_left->setSize(8); _graph_peak_border_list.push_back(p_peak_border_left); // addItem(p_peak_border_left); p_peak_border_left = new QCPItemTracer(this); p_peak_border_left->setGraph(_map_xic_graph.at(xic_p)); p_peak_border_left->setGraphKey( getRetentionTimeFromSecondsToLocal(p_xic_peak->getRightBoundary().x)); p_peak_border_left->setInterpolating(true); p_peak_border_left->setStyle(QCPItemTracer::tsPlus); p_peak_border_left->setPen(border_pen); p_peak_border_left->setBrush(color); p_peak_border_left->setSize(30); _graph_peak_border_list.push_back(p_peak_border_left); // addItem(p_peak_border_left); replot(); } void QCPXic::clearXicPeakBorders() { for(QCPItemTracer *p_tracer : _graph_peak_border_list) { removeItem(p_tracer); // delete p_tracer; } _graph_peak_border_list.clear(); replot(); } libpappsomspp-0.9.20/src/pappsomspp/widget/xicwidget/qcpxic.h000644 001750 001750 00000005705 14346367014 025623 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/xicwidget/qcpxic.h * \date 12/1/2018 * \author Olivier Langella * \brief custom plot XIC */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #ifndef QCPXIC_H #define QCPXIC_H #include #include "xicwidget.h" namespace pappso { class QCPXic : public QCustomPlot { Q_OBJECT protected: friend class XicWidget; QCPXic(XicWidget *parent); ~QCPXic(); protected: void clear(); void rescale(); QCPGraph *addXicP(const Xic *xic_p); void addMsMsEvent(const Xic *xic_p, pappso::pappso_double rt); void addXicPeakList(const Xic *xic_p, const std::vector &xic_peak_list); void setName(const Xic *xic_p, const QString &name); void drawXicPeakBorders(unsigned int i, const Xic *xic_p, const pappso::TracePeak *p_xic_peak); void clearXicPeakBorders(); virtual void mouseMoveEvent(QMouseEvent *event) override; virtual void mousePressEvent(QMouseEvent *event) override; virtual void mouseReleaseEvent(QMouseEvent *event) override; virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyReleaseEvent(QKeyEvent *event) override; private: Q_SLOT void setRtRangeChanged(QCPRange range); pappso::pappso_double getRetentionTimeFromSecondsToLocal(pappso::pappso_double rt) const; pappso::pappso_double xAxisToSeconds(pappso::pappso_double rt) const; private: XicWidget *_parent; QCPRange _rt_range; QCPRange _intensity_range; bool _click = false; bool _mouse_move = false; bool _control_key = false; pappso::pappso_double _old_x; pappso::pappso_double _old_y; QCPItemTracer *_current_ms2_event = nullptr; std::map _map_xic_graph; QColor _graph_color; std::vector _colours; std::vector _graph_peak_surface_list; std::vector _graph_peak_border_list; }; } // namespace pappso #endif // QCPXIC_H libpappsomspp-0.9.20/src/pappsomspp/widget/xicwidget/xicwidget.cpp000644 001750 001750 00000014632 14526455546 026665 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/xicwidget/xicwidget.h * \date 12/1/2018 * \author Olivier Langella * \brief plot a XIC */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "xicwidget.h" #include #include #include "qcpxic.h" #include "../../exception/exceptionnotfound.h" using namespace pappso; XicWidget::XicWidget(QWidget *parent) : GraphicDeviceWidget(parent) { qDebug() << "XicWidget::XicWidget begin"; this->setLayout(new QHBoxLayout(this)); setMinimumSize(200, 160); this->layout()->setContentsMargins(0, 0, 0, 0); _qcp_xic = new QCPXic(this); this->layout()->addWidget(_qcp_xic); qDebug() << "XicWidget::XicWidget end"; } XicWidget::~XicWidget() { } void XicWidget::addMsMsEvent(const Xic *xic_p, pappso::pappso_double rt) { XicCstSPtr xic_sp = getXicCstSPtr(xic_p); _qcp_xic->addMsMsEvent(xic_p, rt); _map_xic_msms_event[xic_p] = rt; } QCPGraph * XicWidget::addXicSp(XicCstSPtr xic_sp) { _xic_sp_list.push_back(xic_sp); return _qcp_xic->addXicP(xic_sp.get()); } const QString & XicWidget::getName(const Xic *xic_p) const { XicCstSPtr xic_sp = getXicCstSPtr(xic_p); return _map_xic_name.at(xic_p); } void XicWidget::setName(const Xic *xic_p, const QString &name) { XicCstSPtr xic_sp = getXicCstSPtr(xic_p); _qcp_xic->legend->setVisible(true); _qcp_xic->setName(xic_p, name); _map_xic_name[xic_p] = name; } void XicWidget::plot() { _qcp_xic->replot(); } void XicWidget::rescale() { _qcp_xic->xAxis->rescale(true); _qcp_xic->yAxis->rescale(true); _qcp_xic->rescale(); } QCPAxis * XicWidget::getRtAxisP() { return _qcp_xic->xAxis; } QCPAxis * XicWidget::getIntensityAxisP() { return _qcp_xic->yAxis; } void XicWidget::rescaleOneRange(QString axis_name, QCPRange new_range) { if(axis_name == "xAxis") { _qcp_xic->xAxis->setRange(new_range); } else // axis_name == "yAxis" { _qcp_xic->yAxis->setRange(new_range); } _qcp_xic->replot(); } void XicWidget::clear() { _map_xic_name.clear(); _xic_sp_list.clear(); _xic_peak_sp_list.clear(); _qcp_xic->clear(); _map_xic_msms_event.clear(); } XicCstSPtr XicWidget::getXicCstSPtr(const Xic *xic_p) const { std::vector::const_iterator it = std::find_if(_xic_sp_list.begin(), _xic_sp_list.end(), [xic_p](XicCstSPtr xic_sp) { return xic_sp.get() == xic_p; }); if(it == _xic_sp_list.end()) { throw pappso::ExceptionNotFound(tr("ERROR : xic pointer not found")); } return *it; } void XicWidget::addXicPeakList( const Xic *xic_p, const std::vector &xic_peak_list) { XicCstSPtr xic_sp = getXicCstSPtr(xic_p); _qcp_xic->addXicPeakList(xic_p, xic_peak_list); for(const pappso::TracePeakCstSPtr &xic_peak : xic_peak_list) { _xic_peak_sp_list.push_back( std::pair(xic_sp, xic_peak)); } } void XicWidget::rtChangeEvent(pappso::pappso_double rt) const { emit rtChanged(rt); std::vector> over_xic_peak_list; for(std::pair pair_xic_peak : _xic_peak_sp_list) { if(pair_xic_peak.second.get()->containsRt(rt)) { over_xic_peak_list.push_back(pair_xic_peak); } } // if (over_xic_peak_list.size() > 0) { emit xicPeakListChanged(over_xic_peak_list); //} } void XicWidget::toQPaintDevice(QPaintDevice *device, const QSize &size) { if(_qcp_xic != nullptr) { QCPPainter painter; painter.begin(device); _qcp_xic->toPainter(&painter, size.width(), size.height()); painter.end(); } } void XicWidget::setRetentionTimeInSeconds() { _rt_in_seconds = true; _qcp_xic->xAxis->setLabel("retention time (sec)"); replotAll(); } void XicWidget::setRetentionTimeInMinutes() { _rt_in_seconds = false; _qcp_xic->xAxis->setLabel("retention time (min)"); replotAll(); } void XicWidget::replotAll() { _qcp_xic->clear(); for(XicCstSPtr xic_sp : _xic_sp_list) { _qcp_xic->addXicP(xic_sp.get()); std::vector xic_peak_list; for(auto xic_map_peak_list : _xic_peak_sp_list) { if(xic_map_peak_list.first.get() == xic_sp.get()) xic_peak_list.push_back(xic_map_peak_list.second); } _qcp_xic->addXicPeakList(xic_sp.get(), xic_peak_list); } for(auto xic_name : _map_xic_name) { setName(xic_name.first, xic_name.second); } for(auto xic_msms : _map_xic_msms_event) { _qcp_xic->addMsMsEvent(xic_msms.first, xic_msms.second); } rescale(); _qcp_xic->replot(); } void XicWidget::xicClickEvent(pappso::pappso_double rt, pappso::pappso_double intensity) const { emit clicked(rt, intensity); } void XicWidget::drawXicPeakBorders(pappso::TracePeakCstSPtr xic_peak) { XicCstSPtr xic_sp; for(std::pair pair_xic_peak : _xic_peak_sp_list) { if(pair_xic_peak.second.get() == xic_peak.get()) { xic_sp = pair_xic_peak.first; break; } } if(xic_sp.get() != nullptr) { unsigned int i = 0; for(XicCstSPtr xic_in_list : _xic_sp_list) { if(xic_in_list.get() == xic_sp.get()) { break; } i++; } _qcp_xic->drawXicPeakBorders(i, xic_sp.get(), xic_peak.get()); } } void XicWidget::clearXicPeakBorders() { _qcp_xic->clearXicPeakBorders(); } libpappsomspp-0.9.20/src/pappsomspp/widget/xicwidget/xicwidget.h000644 001750 001750 00000006557 14346367014 026331 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/xicwidget/xicwidget.h * \date 12/1/2018 * \author Olivier Langella * \brief plot a XIC */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../../xic/xic.h" #include "../../processing/detection/tracepeak.h" #include "../graphicdevicewidget.h" #include namespace pappso { class QCPXic; typedef std::vector> XicXicPeakPairList; class PMSPP_LIB_DECL XicWidget : public GraphicDeviceWidget { Q_OBJECT public: XicWidget(QWidget *parent = 0); ~XicWidget(); QCPGraph *addXicSp(XicCstSPtr xic_sp); void addMsMsEvent(const Xic *xic_p, pappso::pappso_double rt); void addXicPeakList(const Xic *xic_p, const std::vector &xic_peak_list); void setName(const Xic *xic_p, const QString &name); const QString &getName(const Xic *xic_p) const; void clear(); void plot(); void rescale(); void toQPaintDevice(QPaintDevice *device, const QSize &size) override; void setRetentionTimeInSeconds(); void setRetentionTimeInMinutes(); void drawXicPeakBorders(pappso::TracePeakCstSPtr xic_peak); void clearXicPeakBorders(); /** @brief get the plots axis and rescale one axis with the given range */ QCPAxis *getRtAxisP(); QCPAxis *getIntensityAxisP(); void rescaleOneRange(QString axis_name, QCPRange new_range); signals: /** @brief announce the current retention time (under mouse) in seconds */ void rtChanged(double rt) const; void xicPeakListChanged(pappso::XicXicPeakPairList xic_peak_list) const; /** @brief announce mouse position on click (rt in seconds, intensity) */ void clicked(double rt, double intensity) const; /** @brief get the new Range when its change */ void operateNewRange(QCPRange new_range); protected: friend class QCPXic; void rtChangeEvent(pappso::pappso_double rt) const; void xicClickEvent(pappso::pappso_double rt, pappso::pappso_double intensity) const; void replotAll(); XicCstSPtr getXicCstSPtr(const Xic *xic_p) const; protected: bool _rt_in_seconds = true; private: std::map _map_xic_name; std::map _map_xic_msms_event; std::vector _xic_sp_list; XicXicPeakPairList _xic_peak_sp_list; QCPXic *_qcp_xic; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/widget/CMakeLists.txt000644 001750 001750 00000010136 14410637604 024723 0ustar00rusconirusconi000000 000000 # CMake script for PAPPSOms++ library # Author: Olivier Langella # Created: 22/12/2017 # Rework: April 2020 (Coronavirus confinement) message(\n${BoldRed}"Now configuring src/widget for ${PROJECT_NAME}"${ColourReset}\n) # Find includes in corresponding build directories set(CMAKE_INCLUDE_CURRENT_DIR ON) if(NOT QCustomPlotQt6_FOUND) message("Still searching for QCustomPlotQt6") endif() ######################################################## # Files SET(PAPPSOWIDGET_CPP_FILES graphicdevicewidget.cpp httpbutton/httpbutton.cpp precisionwidget/precisionwidget.cpp massspectrumwidget/qcpspectrum.cpp massspectrumwidget/massspectrumwidget.cpp obo/obochooserwidget/obochooserwidget.cpp obo/obolistwidget/obolistmodel.cpp obo/obolistwidget/obolistproxymodel.cpp obo/obolistwidget/obolistwidget.cpp obo/obotermform/obotermform.cpp xicwidget/qcpxic.cpp xicwidget/xicwidget.cpp plotwidget/baseplotcontext.cpp plotwidget/massspectraceplotcontext.cpp plotwidget/colormapplotconfig.cpp plotwidget/baseplotwidget.cpp plotwidget/basetraceplotwidget.cpp plotwidget/ticxicchromtraceplotwidget.cpp plotwidget/massspectraceplotwidget.cpp plotwidget/driftspectraceplotwidget.cpp plotwidget/basecolormapplotwidget.cpp plotwidget/ticxicchrommassspeccolormapplotwidget.cpp plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp plotwidget/driftspecmassspeccolormapplotwidget.cpp switchbuttonwidget/switchbuttonwidget.cpp ) set(GUI_UIS ./obo/obochooserwidget/uiobochooserwidget.ui ./obo/obolistwidget/uiobolistwidget.ui ./obo/obotermform/uiobotermform.ui ) # this will run uic on .ui files: qt6_wrap_ui( GUI_UI_HDRS ${GUI_UIS} ) ############################################################# # Build the static lib add_library(pappsomspp-widget-static STATIC ${PAPPSOWIDGET_CPP_FILES} ${GUI_UI_HDRS}) set_target_properties(pappsomspp-widget-static PROPERTIES OUTPUT_NAME pappsomspp-widget CLEAN_DIRECT_OUTPUT 1 ) message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}") target_compile_definitions(pappsomspp-widget-static PRIVATE -DPMSPP_LIBRARY) target_link_libraries(pappsomspp-widget-static Qt6::Core Qt6::Widgets Qt6::Svg Qt6::PrintSupport Boost::iostreams Boost::filesystem Boost::thread Boost::chrono PwizLite::PwizLite liblzf::liblzf QCustomPlotQt6::QCustomPlotQt6 ) # FIXME: should check that this still required. It was years ago. if(WIN32 OR _WIN32) target_link_libraries(pappsomspp-widget-static stdc++ ) endif() ############################################################# # Build the shared lib add_library(pappsomspp-widget-shared SHARED ${PAPPSOWIDGET_CPP_FILES} ${GUI_UI_HDRS}) set_target_properties(pappsomspp-widget-shared PROPERTIES OUTPUT_NAME pappsomspp-widget CLEAN_DIRECT_OUTPUT 1 VERSION ${PAPPSOMSPP_VERSION} SOVERSION ${PAPPSOMSPP_VERSION_MAJOR} #COMPILE_DEFINITIONS " ${QT_DEFINITIONS}" #INCLUDE_DIRECTORIES "${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}" ) message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}") target_compile_definitions(pappsomspp-widget-shared PRIVATE -DPMSPP_LIBRARY) target_link_libraries(pappsomspp-widget-shared PwizLite::PwizLite Boost::iostreams Boost::filesystem Boost::thread Boost::chrono SQLite::SQLite3 QCustomPlotQt6::QCustomPlotQt6 Qt6::PrintSupport Qt6::Gui Qt6::Widgets Qt6::Svg Qt6::Sql Qt6::Concurrent Qt6::Xml Qt6::Core5Compat Qt6::Core ZLIB::ZLIB Zstd::Zstd liblzf::liblzf pappsomspp-shared ) # Should check that this still required. It was years ago. if(WIN32 OR _WIN32) target_link_libraries(pappsomspp-widget-shared stdc++ ) endif() # Install libs install(TARGETS pappsomspp-widget-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # This one is for WIN32 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(TARGETS pappsomspp-widget-static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) # Install headers install(DIRECTORY pappsomspp/widget DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/pappsomspp/widget FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp") libpappsomspp-0.9.20/src/pappsomspp/widget/graphicdevicewidget.cpp000644 001750 001750 00000003625 14526455546 026710 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/graphicdevicewidget.cpp * \date 01/02/2018 * \author Olivier Langella * \brief common graphic functions */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "graphicdevicewidget.h" #include GraphicDeviceWidget::GraphicDeviceWidget(QWidget *parent) : QWidget(parent) { } GraphicDeviceWidget::~GraphicDeviceWidget() { } void GraphicDeviceWidget::toSvgFile(const QString &filename, const QString &title, const QString &description, const QSize &size) { QSvgGenerator generator; // generator.setOutputDevice(&buffer); generator.setFileName(filename); generator.setSize(size); generator.setViewBox(QRect(0, 0, size.width(), size.height())); generator.setTitle(title); generator.setDescription(description); this->toQPaintDevice(&generator, size); } libpappsomspp-0.9.20/src/pappsomspp/widget/graphicdevicewidget.h000644 001750 001750 00000003255 14346367014 026344 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/widget/graphicdevicewidget.h * \date 01/02/2018 * \author Olivier Langella * \brief common graphic functions */ /******************************************************************************* * Copyright (c) 2017 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include "../exportinmportconfig.h" class PMSPP_LIB_DECL GraphicDeviceWidget : public QWidget { public: GraphicDeviceWidget(QWidget *parent); virtual ~GraphicDeviceWidget(); virtual void toSvgFile(const QString &filename, const QString &title, const QString &description, const QSize &size) final; virtual void toQPaintDevice(QPaintDevice *device, const QSize &size) = 0; }; libpappsomspp-0.9.20/src/pappsomspp/xic/000755 001750 001750 00000000000 14533473271 021466 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/xic/qualifiedxic.cpp000644 001750 001750 00000003422 14526455546 024651 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #include #include "qualifiedxic.h" #include namespace pappso { QualifiedXic::QualifiedXic(const MsRunId &msrun_id, pappso_double mz, PrecisionPtr precision) : m_msRunId(msrun_id), m_mz(mz), mp_precision(precision), msp_xic(Xic().makeXicSPtr()) { qDebug() << "QualifiedXic::QualifiedXic begin"; } QualifiedXic::~QualifiedXic() { } QualifiedXic::QualifiedXic(const QualifiedXic &toCopy) : m_msRunId(toCopy.m_msRunId), m_mz(toCopy.m_mz), mp_precision(toCopy.mp_precision), msp_xic(toCopy.msp_xic) { qDebug() << "QualifiedXic::QualifiedXic copy begin"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/qualifiedxic.h000644 001750 001750 00000003637 14346367014 024316 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #pragma once #include #include #include "xic.h" #include "../msrun/msrunid.h" #include "../mzrange.h" #include "../peptide/peptide.h" #include "../psm/peakionmatch.h" namespace pappso { class QualifiedXic; typedef std::shared_ptr QualifiedXicSp; class QualifiedXic { private: const MsRunId m_msRunId; pappso_double m_mz; PrecisionPtr mp_precision; XicSPtr msp_xic; public: QualifiedXic(const MsRunId &msrun_id, pappso_double mz, PrecisionPtr precision); virtual ~QualifiedXic(); QualifiedXic(const QualifiedXic &toCopy); pappso_double getMz() const { return m_mz; }; const XicCstSPtr getXicCstSPtr() const { return msp_xic; } const XicSPtr & getXicSPtr() const { return msp_xic; } }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xic.cpp000644 001750 001750 00000005126 14526455546 022770 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #include #include #include "xic.h" #include #include #include "../exception/exceptionoutofrange.h" namespace pappso { Xic::Xic() { qDebug() << "Xic::Xic begin"; qDebug() << "Xic::Xic end"; } Xic::Xic(const Trace &other) : Trace(other) { } Xic::~Xic() { } XicCstSPtr Xic::makeXicCstSPtr() const { return std::make_shared(*this); } XicSPtr Xic::makeXicSPtr() const { return std::make_shared(*this); } void Xic::debugPrintValues() const { for(auto &&peak : *this) { qDebug() << "rt = " << peak.x << ", int = " << peak.y; } } const DataPoint & Xic::atRetentionTime(pappso_double rt) const { for(auto &&peak : *this) { if(peak.y == rt) return peak; } throw ExceptionOutOfRange( QObject::tr("no intensity for this retention time")); } unsigned int Xic::getMsPointDistance(pappso_double rt_first, pappso_double rt_second) const { if(rt_first > rt_second) { std::swap(rt_first, rt_second); } unsigned int distance = 0; auto it = this->begin(); auto itend = this->end(); while((it->x < rt_first) && (it != itend)) { it++; } while((rt_second > it->x) && (it != itend)) { qDebug() << "Xic::getMsPointDistance " << rt_first << " it->rt " << it->x << " rt_second " << rt_second << distance; distance++; it++; } return distance; } void Xic::sortByRetentionTime() { sortX(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xic.h000644 001750 001750 00000003752 14514537342 022430 0ustar00rusconirusconi000000 000000 /******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #pragma once #include #include #include "../trace/trace.h" #include "../mzrange.h" namespace pappso { class XicPeak; class Xic; typedef std::shared_ptr XicCstSPtr; typedef std::shared_ptr XicSPtr; class MsRunXic; class PMSPP_LIB_DECL Xic : public Trace { public: Xic(); Xic(const Trace &other); virtual ~Xic(); XicCstSPtr makeXicCstSPtr() const; XicSPtr makeXicSPtr() const; /** \brief get the number of MS measurement between 2 retention times on this * xic */ unsigned int getMsPointDistance(pappso_double rt, pappso_double rt_other) const; void debugPrintValues() const; /** @brief sort peaks by retention time */ void sortByRetentionTime(); /** @brief get the DataPoint at the given retention time */ const DataPoint &atRetentionTime(pappso_double rt) const; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xicpeptidefragmention.cpp000644 001750 001750 00000003224 14526455546 026572 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "xicpeptidefragmention.h" namespace pappso { XicPeptideFragmentIon::XicPeptideFragmentIon( const MsRunId &msrun_id, const PeptideFragmentIonSp &peptideFragmentIonSp, unsigned int z, PrecisionPtr precision) : XicPeptideInterface(msrun_id, peptideFragmentIonSp, precision, z), msp_peptideFragmentIon(peptideFragmentIonSp) { } XicPeptideFragmentIon::~XicPeptideFragmentIon() { } XicPeptideFragmentIon::XicPeptideFragmentIon(const XicPeptideFragmentIon &other) : XicPeptideInterface(other), msp_peptideFragmentIon(other.msp_peptideFragmentIon) { } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xicpeptidefragmention.h000644 001750 001750 00000003274 14346367014 026234 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "xicpeptideinterface.h" namespace pappso { class XicPeptideFragmentIon : public XicPeptideInterface { private: const PeptideFragmentIonSp msp_peptideFragmentIon; public: XicPeptideFragmentIon(const MsRunId &msrun_id, const PeptideFragmentIonSp &peptideFragmentIonSp, unsigned int z, PrecisionPtr precision); XicPeptideFragmentIon(const XicPeptideFragmentIon &other); ~XicPeptideFragmentIon(); const PeptideFragmentIonSp & getPeptideFragmentIonSp() const { return msp_peptideFragmentIon; }; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.cpp000644 001750 001750 00000005226 14526455546 031570 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #include "xicpeptidefragmentionnaturalisotope.h" namespace pappso { XicPeptideFragmentIonNaturalIsotope::XicPeptideFragmentIonNaturalIsotope( const MsRunId &msrun_id, const PeptideNaturalIsotopeAverageSp &naturalIsotopeAverageSp, const PeptideFragmentIonSp &peptideFragmentIonSp) : QualifiedXic(msrun_id, naturalIsotopeAverageSp.get()->getMz(), naturalIsotopeAverageSp.get()->getPrecision()), msp_naturalIsotopeAverage(naturalIsotopeAverageSp), msp_peptideFragmentIon(peptideFragmentIonSp) { qDebug() << "XicPeptideFragmentIonNaturalIsotope::" "XicPeptideFragmentIonNaturalIsotope begin"; qDebug() << "XicPeptideFragmentIonNaturalIsotope::" "XicPeptideFragmentIonNaturalIsotope 1 " << msp_naturalIsotopeAverage.get(); qDebug() << "XicPeptideFragmentIonNaturalIsotope::" "XicPeptideFragmentIonNaturalIsotope 2 " << msp_peptideFragmentIon.get(); } XicPeptideFragmentIonNaturalIsotope::~XicPeptideFragmentIonNaturalIsotope() { } XicPeptideFragmentIonNaturalIsotope::XicPeptideFragmentIonNaturalIsotope( const XicPeptideFragmentIonNaturalIsotope &other) : QualifiedXic(other) { qDebug() << "XicPeptideFragmentIonNaturalIsotope::" "XicPeptideFragmentIonNaturalIsotope copy begin"; msp_naturalIsotopeAverage = other.msp_naturalIsotopeAverage; msp_peptideFragmentIon = other.msp_peptideFragmentIon; qDebug() << "XicPeptideFragmentIonNaturalIsotope::" "XicPeptideFragmentIonNaturalIsotope copy end"; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h000644 001750 001750 00000004141 14346367014 031220 0ustar00rusconirusconi000000 000000 /* * ******************************************************************************* * * Copyright (c) 2015 Olivier Langella . * * * * This file is part of MassChroqPRM. * * * * MassChroqPRM is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * MassChroqPRM is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with MassChroqPRM. If not, see . * * * * Contributors: * * Olivier Langella - initial API and * implementation * ******************************************************************************/ #pragma once #include "xicpeptidefragmention.h" #include "../peptide/peptidenaturalisotopeaverage.h" namespace pappso { class XicPeptideFragmentIonNaturalIsotope : public QualifiedXic { private: PeptideNaturalIsotopeAverageSp msp_naturalIsotopeAverage; PeptideFragmentIonSp msp_peptideFragmentIon; public: XicPeptideFragmentIonNaturalIsotope( const MsRunId &msrun_id, const PeptideNaturalIsotopeAverageSp &naturalIsotopeAverageSp, const PeptideFragmentIonSp &peptideFragmentIonSp); XicPeptideFragmentIonNaturalIsotope( const XicPeptideFragmentIonNaturalIsotope &other); unsigned int getCharge() const { return msp_naturalIsotopeAverage.get()->getCharge(); }; const PeptideNaturalIsotopeAverageSp & getPeptideNaturalIsotopeAverageSp() const { return msp_naturalIsotopeAverage; }; const PeptideFragmentIonSp & getPeptideFragmentIonSp() const { return msp_peptideFragmentIon; }; ~XicPeptideFragmentIonNaturalIsotope(); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xicpeptideinterface.cpp000644 001750 001750 00000002762 14526455546 026227 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "xicpeptideinterface.h" namespace pappso { XicPeptideInterface::XicPeptideInterface( const MsRunId &msrun_id, const PeptideInterfaceSp &peptideInterfaceSp, PrecisionPtr precision, unsigned int charge) : QualifiedXic(msrun_id, peptideInterfaceSp.get()->getMz(charge), precision), m_z(charge), msp_peptideInterface(peptideInterfaceSp) { } XicPeptideInterface::~XicPeptideInterface() { } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xic/xicpeptideinterface.h000644 001750 001750 00000003212 14346367014 025653 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "qualifiedxic.h" #include "../peptide/peptideinterface.h" namespace pappso { class XicPeptideInterface : public QualifiedXic { private: const unsigned int m_z; const PeptideInterfaceSp msp_peptideInterface; protected: XicPeptideInterface(const MsRunId &msrun_id, const PeptideInterfaceSp &peptideInterfaceSp, PrecisionPtr precision, unsigned int charge); public: ~XicPeptideInterface(); virtual unsigned int getCharge() const { return m_z; }; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/000755 001750 001750 00000000000 14533473271 023422 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/000755 001750 001750 00000000000 14533473271 025074 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunslice.cpp000644 001750 001750 00000012376 14526455546 030004 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunslice.cpp * \date 12/05/2018 * \author Olivier Langella * \brief one mz slice (1 dalton) of an MsRun */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include #include "msrunslice.h" #include "../../trace/datapoint.h" #include "../../pappsoexception.h" #include "../../exception/exceptionoutofrange.h" #include namespace pappso { MsRunSlice::MsRunSlice() { m_sliceNumber = 0; } MsRunSlice::MsRunSlice(const MsRunSlice &other) { m_sliceNumber = other.m_sliceNumber; m_spectrumList = other.m_spectrumList; } MsRunSlice::~MsRunSlice() { } MsRunSliceSPtr MsRunSlice::makeMsRunSliceSp() const { return std::make_shared(*this); } void MsRunSlice::setSliceNumber(unsigned int slice_number) { m_sliceNumber = slice_number; } unsigned int MsRunSlice::getSliceNumber() const { return m_sliceNumber; } std::size_t MsRunSlice::size() const { return m_spectrumList.size(); } void MsRunSlice::setSize(std::size_t size) { m_spectrumList.resize(size); } void MsRunSlice::clear() { m_spectrumList.clear(); m_sliceNumber = 0; } void MsRunSlice::setSpectrum(std::size_t i, const MassSpectrum &spectrum) { try { m_spectrumList[i] = spectrum; } catch(std::exception &error) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; throw pappso::ExceptionOutOfRange( QObject::tr("unable to access spectrum %1 (size=%2) %3") .arg(i) .arg(m_spectrumList.size()) .arg(error.what())); } } MassSpectrum & MsRunSlice::getSpectrum(std::size_t i) { try { return m_spectrumList.at(i); } catch(std::exception &error) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; throw pappso::ExceptionOutOfRange( QObject::tr("unable to get spectrum %1 (size=%2) %3") .arg(i) .arg(m_spectrumList.size()) .arg(error.what())); } } const MassSpectrum & MsRunSlice::getSpectrum(std::size_t i) const { try { return m_spectrumList.at(i); } catch(std::exception &error) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; throw pappso::ExceptionOutOfRange( QObject::tr("unable to get spectrum %1 (size=%2) %3") .arg(i) .arg(m_spectrumList.size()) .arg(error.what())); } } void MsRunSlice::appendToStream(QDataStream &outstream, std::size_t ipos) const { for(auto &&spectrum : m_spectrumList) { outstream << (quint32)ipos; outstream << spectrum; ipos++; } } QDataStream & operator>>(QDataStream &instream, MsRunSlice &slice) { quint32 vector_size = 0; quint32 slice_number = 0; quint32 spectrum_position = 0; DataPoint peak; if(!instream.atEnd()) { instream >> slice_number; instream >> vector_size; qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " vector_size=" << vector_size; slice.setSize(vector_size); slice.setSliceNumber(slice_number); while(!instream.atEnd()) { instream >> spectrum_position; MassSpectrum spectrum; try { instream >> spectrum; } catch(PappsoException &error) { throw PappsoException( QString("error in QDataStream unserialize operator>> of " "MsRunSlice %2 on %3:\n%1") .arg(error.qwhat()) .arg(spectrum_position) .arg(vector_size)); } slice.setSpectrum(spectrum_position, spectrum); if(instream.status() != QDataStream::Ok) { throw PappsoException( QString("error in QDataStream unserialize operator>> of " "MsRunSlice :\nread datastream failed status=%1") .arg(instream.status())); } } } if(slice.size() != vector_size) { throw PappsoException( QString("error in QDataStream unserialize operator>> of MsRunSlice " "slice.size() != vector_size :\n %1 %2:") .arg(slice.size()) .arg(vector_size)); } return instream; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunslice.h000644 001750 001750 00000004407 14346367014 027435 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunslice.h * \date 12/05/2018 * \author Olivier Langella * \brief one mz slice (1 dalton) of an MsRun */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../../massspectrum/massspectrum.h" #include namespace pappso { class MsRunSlice; typedef std::shared_ptr MsRunSliceSPtr; class MsRunSlice { public: MsRunSlice(); MsRunSlice(const MsRunSlice &other); virtual ~MsRunSlice(); MsRunSliceSPtr makeMsRunSliceSp() const; void setSliceNumber(unsigned int slice_number); unsigned int getSliceNumber() const; void clear(); std::size_t size() const; /** @brief set number of spectrum (mz/intensity) stored in this slice */ void setSize(std::size_t size); void appendToStream(QDataStream &stream, std::size_t ipos) const; const MassSpectrum &getSpectrum(std::size_t i) const; MassSpectrum &getSpectrum(std::size_t i); /** @brief set the mass spectrum for a given index (retention time) */ void setSpectrum(std::size_t i, const MassSpectrum &spectrum); private: unsigned int m_sliceNumber = 0; std::vector m_spectrumList; }; QDataStream &operator>>(QDataStream &instream, MsRunSlice &slice); } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunxicextractor.cpp000644 001750 001750 00000015245 14526455546 031422 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunxicextractorpwiz.cpp * \date 07/05/2018 * \author Olivier Langella * \brief simple proteowizard based XIC extractor */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "msrunxicextractor.h" #include #include #include "../../pappsoexception.h" #include "../../exception/exceptioninterrupted.h" #include "../../processing/filters/filterresample.h" namespace pappso { MsRunXicExtractor::MsRunXicExtractor(MsRunReaderSPtr &msrun_reader) : pappso::MsRunXicExtractorInterface(msrun_reader) { MsRunXicExtractorReadPoints get_msrun_points(m_msrun_points); msp_msrun_reader.get()->readSpectrumCollection(get_msrun_points); std::sort(m_msrun_points.begin(), m_msrun_points.end(), [](const MsRunXicExtractorPoints &a, const MsRunXicExtractorPoints &b) { return a.rt < b.rt; }); if(m_msrun_points.size() == 0) { throw pappso::PappsoException( QObject::tr("error extracting XIC: no MS level 1 in data file")); } } MsRunXicExtractor::~MsRunXicExtractor() { } MsRunXicExtractor::MsRunXicExtractor(const MsRunXicExtractor &other) : MsRunXicExtractorInterface(other) { m_msrun_points = other.m_msrun_points; } void MsRunXicExtractor::protectedExtractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) { // sort xic by mz: std::sort(it_xic_coord_list_begin, it_xic_coord_list_end, [](XicCoordSPtr &a, XicCoordSPtr &b) { return a.get()->rtTarget < b.get()->rtTarget; }); for(auto it = it_xic_coord_list_begin; it != it_xic_coord_list_end; it++) { // XicCoord *p_xic_coord = sp_xic_coord.get(); extractOneXicCoord(*(it->get())); monitor.count(); if(monitor.shouldIstop()) { throw pappso::ExceptionInterrupted( QObject::tr("Xic extraction process interrupted")); } } } void MsRunXicExtractor::extractOneXicCoord(XicCoord &xic_coord) { FilterResampleKeepXRange keep_range(xic_coord.mzRange.lower(), xic_coord.mzRange.upper()); std::shared_ptr msrunxic_sp = xic_coord.xicSptr; double rt_begin = xic_coord.rtTarget - m_retentionTimeAroundTarget; double rt_end = xic_coord.rtTarget + m_retentionTimeAroundTarget; auto itpoints = m_msrun_points.begin(); // find startint retention time : while((itpoints != m_msrun_points.end()) && (itpoints->rt < rt_begin)) { itpoints++; } MassSpectrumSPtr spectrum; DataPoint peak; while((itpoints != m_msrun_points.end()) && (itpoints->rt <= rt_end)) { spectrum = msp_msrun_reader.get()->massSpectrumSPtr(itpoints->spectrum_index); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " // << spectrum->size(); spectrum->debugPrintValues(); qDebug() << " spectrum->size()=" << spectrum->size(); keep_range.filter(*(spectrum.get())); qDebug() << " spectrum->size()=" << spectrum->size(); peak.x = itpoints->rt; if(m_xicExtractMethod == XicExtractMethod::max) { peak.y = 0; if(spectrum->size() > 0) { peak.y = maxYDataPoint(spectrum->begin(), spectrum->end())->y; qDebug() << " peak.y=" << peak.y << " spectrum->size()=" << spectrum->size(); } } else { peak.y = sumYTrace(spectrum->begin(), spectrum->end(), 0); } msrunxic_sp->push_back(peak); itpoints++; } } void MsRunXicExtractor::getXicFromPwizMSDataFile( std::vector &xic_list, const std::vector &mass_range_list, pappso::pappso_double rt_begin, pappso::pappso_double rt_end) { qDebug(); std::vector peak_for_mass; for(const MzRange &mass_range : mass_range_list) { peak_for_mass.push_back(DataPoint()); qDebug() << " mass_range=" << mass_range.getMz(); } qDebug(); auto itpoints = m_msrun_points.begin(); while((itpoints != m_msrun_points.end()) && (itpoints->rt < rt_begin)) { itpoints++; } MassSpectrumCstSPtr spectrum; while((itpoints != m_msrun_points.end()) && (itpoints->rt <= rt_end)) { spectrum = msp_msrun_reader.get()->massSpectrumCstSPtr(itpoints->spectrum_index); for(DataPoint &peak : peak_for_mass) { peak.x = itpoints->rt; peak.y = 0; } // iterate through the m/z-intensity pairs for(auto &&spectrum_point : *(spectrum.get())) { // qDebug() << "getXicFromPwizMSDataFile it->mz " << it->mz << // " it->intensity" << it->intensity; for(std::size_t i = 0; i < mass_range_list.size(); i++) { if(mass_range_list[i].contains(spectrum_point.x)) { if(m_xicExtractMethod == XicExtractMethod::max) { if(peak_for_mass[i].y < spectrum_point.y) { peak_for_mass[i].y = spectrum_point.y; } } else { peak_for_mass[i].y += spectrum_point.y; } } } } for(std::size_t i = 0; i < mass_range_list.size(); i++) { // qDebug() << "getXicFromPwizMSDataFile push_back " << // peak_for_mass[i].rt; xic_list[i]->push_back(peak_for_mass[i]); } itpoints++; } qDebug(); } // namespace pappso } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunxicextractor.h000644 001750 001750 00000006146 14346367014 031057 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunxicextractorpwiz.h * \date 07/05/2018 * \author Olivier Langella * \brief simple proteowizard based XIC extractor */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "../msrunxicextractorinterface.h" class MsRunXicExtractorFactory; namespace pappso { class MsRunXicExtractor : public MsRunXicExtractorInterface { friend MsRunXicExtractorFactory; public: MsRunXicExtractor(const MsRunXicExtractor &other); virtual ~MsRunXicExtractor(); protected: MsRunXicExtractor(MsRunReaderSPtr &msrun_reader); virtual void getXicFromPwizMSDataFile(std::vector &xic_list, const std::vector &mass_range_list, pappso::pappso_double rt_begin, pappso::pappso_double rt_end); virtual void protectedExtractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) override; protected: struct MsRunXicExtractorPoints { std::size_t spectrum_index; double rt; }; /** @brief class to read retention time points of MsRun */ class MsRunXicExtractorReadPoints : public SpectrumCollectionHandlerInterface { private: std::vector &m_msrun_points; public: MsRunXicExtractorReadPoints( std::vector &msrun_points) : m_msrun_points(msrun_points){}; virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override { if(spectrum.getMsLevel() == 1) { m_msrun_points.push_back( {spectrum.getMassSpectrumId().getSpectrumIndex(), spectrum.getRtInSeconds()}); } } virtual bool needPeakList() const override { return false; } virtual void loadingEnded() override { } }; protected: std::vector m_msrun_points; private: void extractOneXicCoord(XicCoord &xic_coord); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp000644 001750 001750 00000024112 14526455546 032266 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunxicextractordisk.cpp * \date 12/05/2018 * \author Olivier Langella * \brief proteowizard based XIC extractor featuring disk cache */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "msrunxicextractordisk.h" #include #include "../../pappsoexception.h" #include "../../massspectrum/massspectrum.h" namespace pappso { MsRunXicExtractorDisk::MsRunXicExtractorDisk(MsRunReaderSPtr &msrun_reader, const QDir &temporary_dir) : pappso::MsRunXicExtractor(msrun_reader) { mpa_temporaryDirectory = nullptr; m_temporaryDirectory = temporary_dir.absolutePath(); } MsRunXicExtractorDisk::MsRunXicExtractorDisk(const MsRunXicExtractorDisk &other) : pappso::MsRunXicExtractor(other) { m_temporaryDirectory = other.m_temporaryDirectory; mpa_temporaryDirectory = new QTemporaryDir( QString("%1/msrun_%2_") .arg(m_temporaryDirectory) .arg(msp_msrun_reader.get()->getMsRunId().get()->getXmlId())); } MsRunXicExtractorDisk::~MsRunXicExtractorDisk() { if(mpa_temporaryDirectory != nullptr) { delete mpa_temporaryDirectory; } } void MsRunXicExtractorDisk::prepareExtractor() { qDebug(); try { serializeMsRun(); // msp_msrun_reader = nullptr; } catch(pappso::PappsoException &errora) { qDebug(); throw pappso::PappsoException( QObject::tr("Error reading file (%1) : %2") .arg(msp_msrun_reader.get()->getMsRunId().get()->toString()) .arg(errora.qwhat())); } catch(std::exception &error) { qDebug(); throw pappso::PappsoException( QObject::tr("Error reading file (%1) using : %2") .arg(msp_msrun_reader.get()->getMsRunId().get()->toString()) .arg(error.what())); } } void MsRunXicExtractorDisk::protectedExtractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) { // sort xic by mz: std::sort(it_xic_coord_list_begin, it_xic_coord_list_end, [](XicCoordSPtr &a, XicCoordSPtr &b) { return a.get()->mzRange.getMz() < b.get()->mzRange.getMz(); }); for(auto it = it_xic_coord_list_begin; it != it_xic_coord_list_end; it++) { extractOneXicCoord(*(it->get())); monitor.count(); } } void MsRunXicExtractorDisk::extractOneXicCoord(XicCoord &xic_coord) { std::shared_ptr msrunxic_sp = xic_coord.xicSptr; double rt_begin = xic_coord.rtTarget - m_retentionTimeAroundTarget; double rt_end = xic_coord.rtTarget + m_retentionTimeAroundTarget; std::vector slice_list; slice_list = acquireSlices(xic_coord.mzRange); if(slice_list.size() == 0) { throw pappso::PappsoException( QObject::tr("Error getMsRunXicSp slice_list.size() == 0")); } for(std::size_t i = 0; i < m_retentionTimeList.size(); i++) { DataPoint xic_element; xic_element.x = m_retentionTimeList[i]; xic_element.y = 0; if((xic_element.x < rt_begin) || (xic_element.x > rt_end)) continue; for(auto &&msrun_slice : slice_list) { const MassSpectrum &spectrum = msrun_slice.get()->getSpectrum(i); for(auto &&peak : spectrum) { if(xic_coord.mzRange.contains(peak.x)) { if(m_xicExtractMethod == XicExtractMethod::sum) { xic_element.y += peak.y; } else { if(xic_element.y < peak.y) { xic_element.y = peak.y; } } } } } msrunxic_sp.get()->push_back(xic_element); } } void MsRunXicExtractorDisk::serializeMsRun() { qDebug(); m_minMz = 5000; m_maxMz = 0; unsigned int slice_number; std::map spectrum_map; /* const pwiz::msdata::SpectrumList *p_spectrum_list = p_msdatafile->run.spectrumListPtr.get(); std::size_t spectrum_list_size = p_spectrum_list->size(); pwiz::msdata::SpectrumPtr pwiz_spectrum; */ m_rtSize = m_msrun_points.size(); MassSpectrumCstSPtr spectrum; for(auto &&msrun_point : m_msrun_points) { spectrum_map.clear(); m_retentionTimeList.push_back(msrun_point.rt); spectrum = msp_msrun_reader.get()->massSpectrumCstSPtr(msrun_point.spectrum_index); const MassSpectrum *p_spectrum = spectrum.get(); if(p_spectrum->size() > 0) { if(p_spectrum->begin()->x < m_minMz) { m_minMz = p_spectrum->begin()->x; } // iterate through the m/z-intensity pairs if(p_spectrum->back().x > m_maxMz) { m_maxMz = p_spectrum->back().x; } for(auto &peak : *p_spectrum) { slice_number = peak.x; std::pair::iterator, bool> ret = spectrum_map.insert(std::pair( slice_number, MassSpectrum())); ret.first->second.push_back(peak); // auto ret = spectrum_map.insert(std::pair(slice_number,MassSpectrum())); // ret.first->second.push_back(peak); } // slices are ready for this retention time storeSlices(spectrum_map, m_retentionTimeList.size() - 1); } } endPwizRead(); qDebug(); } void MsRunXicExtractorDisk::storeSlices( std::map &spectrum_map, std::size_t ipos) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; for(auto &&spectrum_pair : spectrum_map) { appendSliceOnDisk(spectrum_pair.first, spectrum_pair.second, ipos); } // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } void MsRunXicExtractorDisk::appendSliceOnDisk(unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos) { // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; QFile slice_file( QString("%1/%2").arg(mpa_temporaryDirectory->path()).arg(slice_number)); bool new_file = false; if(!slice_file.exists()) { new_file = true; } if(!slice_file.open(QIODevice::WriteOnly | QIODevice::Append)) { throw pappso::PappsoException( QObject::tr("unable to open file %1").arg(slice_file.fileName())); } QDataStream stream(&slice_file); if(new_file) { stream << (quint32)slice_number; stream << (quint32)m_rtSize; } stream << (quint32)ipos; stream << spectrum; slice_file.flush(); slice_file.close(); // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } MsRunSliceSPtr MsRunXicExtractorDisk::unserializeSlice(unsigned int slice_number) { qDebug(); try { std::shared_ptr msrun_slice_sp = std::make_shared(MsRunSlice()); QFile slice_file( QString("%1/%2").arg(mpa_temporaryDirectory->path()).arg(slice_number)); if(!slice_file.exists()) { msrun_slice_sp.get()->setSize(m_rtSize); msrun_slice_sp.get()->setSliceNumber(slice_number); return msrun_slice_sp; } if(!slice_file.open(QIODevice::ReadOnly)) { throw pappso::PappsoException( QObject::tr("unable to open file %1 in readonly") .arg(slice_file.fileName())); } QDataStream stream(&slice_file); stream >> *(msrun_slice_sp.get()); slice_file.close(); return msrun_slice_sp; } catch(pappso::PappsoException &error) { throw pappso::PappsoException( QObject::tr("error unserializing slice %1:\n%2") .arg(slice_number) .arg(error.qwhat())); } qDebug(); } std::vector MsRunXicExtractorDisk::acquireSlices(const MzRange &mz_range) { QMutexLocker lock(&m_mutex); std::vector slice_list; for(unsigned int i = mz_range.lower(); i <= mz_range.upper(); i++) { auto it = std::find_if(m_msRunSliceListCache.begin(), m_msRunSliceListCache.end(), [i](const MsRunSliceSPtr &slice_sp) { return slice_sp.get()->getSliceNumber() == i; }); if(it != m_msRunSliceListCache.end()) { slice_list.push_back(*it); m_msRunSliceListCache.push_back(*it); } else { MsRunSliceSPtr slice_sp = unserializeSlice(i); slice_list.push_back(slice_sp); m_msRunSliceListCache.push_back(slice_sp); } } if(m_msRunSliceListCache.size() > 20) { m_msRunSliceListCache.pop_front(); } return slice_list; } void MsRunXicExtractorDisk::endPwizRead() { msp_msrun_reader.get()->releaseDevice(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunxicextractordisk.h000644 001750 001750 00000006775 14346367014 031742 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunxicextractordisk.h * \date 12/05/2018 * \author Olivier Langella * \brief MsRunReader based XIC extractor featuring disk cache */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "msrunxicextractor.h" #include "msrunslice.h" #include #include #include class MsRunXicExtractorFactory; namespace pappso { class MsRunXicExtractorDisk : public MsRunXicExtractor { friend MsRunXicExtractorFactory; public: MsRunXicExtractorDisk(MsRunReaderSPtr &msrun_reader); MsRunXicExtractorDisk(const MsRunXicExtractorDisk &other); virtual ~MsRunXicExtractorDisk(); protected: MsRunXicExtractorDisk(MsRunReaderSPtr &msrun_reader, const QDir &temporary_dir); virtual void protectedExtractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) override; void prepareExtractor(); void serializeMsRun(); /** @brief store MassSpectrum slices (by daltons) for a given retention time * @param slice_vector mass spectrum chunks (by daltons) * @param ipos the position in the retention time vector */ virtual void storeSlices(std::map &slice_vector, std::size_t ipos); /** @brief append a slice on disk (in a file) * @param slice_number the slice number == dalton integer * @param spectrum the part of the mass spectrum (mz/intensity) in the range * of the slice number * @param ipos the position in the retention time vector */ void appendSliceOnDisk(unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos); /** @brief retrieve all the slices corresponding to a given mz_range * @param mz_range desired mz range */ std::vector acquireSlices(const MzRange &mz_range); /** @brief get one slice from disk by her slice number (dalton) * @param slice_number the slice number == dalton integer */ MsRunSliceSPtr unserializeSlice(unsigned int slice_number); virtual void endPwizRead(); protected: QString m_temporaryDirectory; QTemporaryDir *mpa_temporaryDirectory = nullptr; std::vector m_retentionTimeList; pappso::pappso_double m_maxMz = 0; pappso::pappso_double m_minMz = 5000; std::size_t m_rtSize = 0; std::deque m_msRunSliceListCache; QMutex m_mutex; private: void extractOneXicCoord(XicCoord &xic_coord); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp000644 001750 001750 00000013741 14526455546 033466 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp * \date 18/05/2018 * \author Olivier Langella * \brief proteowizard based XIC extractor featuring disk cache + write buffer */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "msrunxicextractordiskbuffer.h" #include #include "../../pappsoexception.h" #include "../../massspectrum/massspectrum.h" namespace pappso { MsRunXicExtractorDiskBuffer::MsRunXicExtractorDiskBuffer( MsRunReaderSPtr &msrun_reader, const QDir &temporary_dir) : MsRunXicExtractorDisk(msrun_reader, temporary_dir) { m_sliceBufferMap.clear(); } MsRunXicExtractorDiskBuffer::MsRunXicExtractorDiskBuffer( const MsRunXicExtractorDiskBuffer &other) : MsRunXicExtractorDisk(other) { m_sliceBufferMap.clear(); } MsRunXicExtractorDiskBuffer::~MsRunXicExtractorDiskBuffer() { } void MsRunXicExtractorDiskBuffer::storeSlices( std::map &slice_vector, std::size_t ipos) { m_bufferSize++; for(auto &&msrun_slice : slice_vector) { appendSliceInBuffer(msrun_slice.first, msrun_slice.second, ipos); } if(m_bufferSize == m_bufferMaxSize) { flushBufferOnDisk(); } } void MsRunXicExtractorDiskBuffer::appendSliceInBuffer(unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos) { qDebug(); std::size_t spectrum_size = spectrum.size(); if(spectrum_size == 0) return; try { std::pair::iterator, bool> ret = m_sliceBufferMap.insert( std::pair(slice_number, QByteArray())); if(ret.second) { // new buffer ret.first->second.resize(0); QDataStream outstream(&ret.first->second, QIODevice::WriteOnly); outstream << (quint32)ipos; outstream << spectrum; } else { QDataStream outstream(&ret.first->second, QIODevice::WriteOnly | QIODevice::Append); outstream << (quint32)ipos; outstream << spectrum; } } catch(PappsoException &error_pappso) { throw pappso::PappsoException( QObject::tr("appendSliceInBuffer : error ipos=%1 :\n%2") .arg(ipos) .arg(error_pappso.qwhat())); } catch(std::exception &error) { throw pappso::PappsoException( QObject::tr("appendSliceInBuffer slice_number=%1 ipos=%2 error :\n%3") .arg(slice_number) .arg(ipos) .arg(error.what())); } qDebug(); } void MsRunXicExtractorDiskBuffer::flushBufferOnDisk() { qDebug(); try { for(auto &buffer_pair : m_sliceBufferMap) { if(buffer_pair.second.size() > 0) { QFile slice_file(QString("%1/%2") .arg(mpa_temporaryDirectory->path()) .arg(buffer_pair.first)); bool new_file = false; if(!slice_file.exists()) { new_file = true; if(!slice_file.open(QIODevice::WriteOnly)) { throw pappso::PappsoException( QObject::tr("unable to open file %1") .arg(slice_file.fileName())); } } else { if(!slice_file.open(QIODevice::WriteOnly | QIODevice::Append)) { throw pappso::PappsoException( QObject::tr("unable to open file %1") .arg(slice_file.fileName())); } } QDataStream stream(&slice_file); if(new_file) { stream << (quint32)buffer_pair.first; stream << (quint32)m_rtSize; stream.writeRawData(buffer_pair.second.constData(), buffer_pair.second.size()); } else { stream.writeRawData(buffer_pair.second.constData(), buffer_pair.second.size()); } slice_file.flush(); slice_file.close(); } // buffer_pair.second = std::vector(); } m_bufferSize = 0; m_sliceBufferMap.clear(); } catch(PappsoException &error_pappso) { throw pappso::PappsoException( QObject::tr("flushBufferOnDisk error :\n%1").arg(error_pappso.qwhat())); } catch(std::exception &error) { throw pappso::PappsoException( QObject::tr("flushBufferOnDisk error :\n%1").arg(error.what())); } qDebug(); } void MsRunXicExtractorDiskBuffer::endPwizRead() { flushBufferOnDisk(); m_sliceBufferMap.clear(); msp_msrun_reader.get()->releaseDevice(); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h000644 001750 001750 00000004340 14346367014 033116 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h * \date 18/05/2018 * \author Olivier Langella * \brief proteowizard based XIC extractor featuring disk cache + write buffer */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "msrunxicextractordisk.h" class MsRunXicExtractorFactory; namespace pappso { class MsRunXicExtractorDiskBuffer : public MsRunXicExtractorDisk { friend MsRunXicExtractorFactory; public: MsRunXicExtractorDiskBuffer(const MsRunXicExtractorDiskBuffer &other); virtual ~MsRunXicExtractorDiskBuffer(); protected: MsRunXicExtractorDiskBuffer(MsRunReaderSPtr &msrun_reader, const QDir &temporary_dir); virtual void storeSlices(std::map &slice_vector, std::size_t ipos) override; void appendSliceInBuffer(unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos); void flushBufferOnDisk(); virtual void endPwizRead() override; protected: std::map m_sliceBufferMap; std::size_t m_bufferSize = 0; std::size_t m_bufferMaxSize = 150; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp000644 001750 001750 00000007276 14526455546 031345 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/msrunxicextractorfactory.cpp * \date 07/05/2018 * \author Olivier Langella * \brief factory to build XIC extractor on an MsRun file */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "msrunxicextractorfactory.h" #include "private/msrunxicextractor.h" #include "private/msrunxicextractordisk.h" #include "private/msrunxicextractordiskbuffer.h" #include "../vendors/tims/xicextractor/timsdirectxicextractor.h" #include "../msrun/private/timsmsrunreaderms2.h" namespace pappso { MsRunXicExtractorFactory MsRunXicExtractorFactory::m_instance = MsRunXicExtractorFactory(); MsRunXicExtractorFactory & MsRunXicExtractorFactory::getInstance() { return m_instance; } MsRunXicExtractorFactory::MsRunXicExtractorFactory() { } MsRunXicExtractorFactory::~MsRunXicExtractorFactory() { } void MsRunXicExtractorFactory::setTmpDir(const QString &dir_name) { m_tmpDirName = dir_name; } void MsRunXicExtractorFactory::setMsRunXicExtractorFactoryType( pappso::MsRunXicExtractorFactoryType type) { m_type = type; } MsRunXicExtractorInterfaceSp MsRunXicExtractorFactory::buildMsRunXicExtractorSp( MsRunReaderSPtr &msrun_reader) const { pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(msrun_reader.get()); if(tims2_reader == nullptr) { // NO TIMS if((m_type == MsRunXicExtractorFactoryType::nose) || (m_type == MsRunXicExtractorFactoryType::direct)) { std::shared_ptr msrun_xic_extractor_sp = std::make_shared( MsRunXicExtractor(msrun_reader)); return (msrun_xic_extractor_sp); } else if(m_type == MsRunXicExtractorFactoryType::disk) { std::shared_ptr msrun_xic_extractor_sp = std::make_shared( MsRunXicExtractorDisk(msrun_reader, QDir(m_tmpDirName))); msrun_xic_extractor_sp.get()->prepareExtractor(); return (msrun_xic_extractor_sp); } else if(m_type == MsRunXicExtractorFactoryType::diskbuffer) { std::shared_ptr msrun_xic_extractor_sp = std::make_shared( MsRunXicExtractorDiskBuffer(msrun_reader, QDir(m_tmpDirName))); msrun_xic_extractor_sp.get()->prepareExtractor(); return (msrun_xic_extractor_sp); } } else { // TIMS std::shared_ptr msrun_xic_extractor_sp = std::make_shared(msrun_reader); return (msrun_xic_extractor_sp); } return nullptr; } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/msrunxicextractorfactory.h000644 001750 001750 00000007275 14346367014 031001 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/msrunxicextractorfactory.h * \date 07/05/2018 * \author Olivier Langella * \brief factory to build XIC extractor on an MsRun file */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "msrunxicextractorinterface.h" namespace pappso { /** \def MsRunXicExtractorFactoryType the kind of xic extractor you want * this may be usefull to choose if you want a direct extraction (no buffer, no * temporary file) or an optimized xic extraction to save memory or cpu * */ enum class MsRunXicExtractorFactoryType : std::int8_t { nose = 0, ///< default factory direct = 1, ///< build a simple XIC extractor that directly uses Proeowizard ///< library to read and extract XICs building the xic extractor ///< is fast, but extracting each XIC is slow disk = 2, ///< build Xic extractor that first read the whole MsRun, put it on ///< disk and extract XICs more quickly This needs some space on ///< disk to store slices (1 dalton each) building the XIC extractor ///< is slow extracting XIC from slices is a very quick operation diskbuffer = 3, ///< build Xic extractor that first read the whole MsRun, put it on disk ///< using a write cache and extract XICs more quickly This needs some ///< space on disk to store slices (1 dalton each) building the XIC ///< extractor is slower than buildMsRunXicExtractorPwizSp, but faster ///< than buildMsRunXicExtractorDiskSp extracting XIC from slices is a ///< very quick operation }; /** @brief factory to build different kinds of XIC extractors */ class PMSPP_LIB_DECL MsRunXicExtractorFactory { public: /** @brief singleton to get the only instance of the factory */ static MsRunXicExtractorFactory &getInstance(); /** @brief build a simple XIC extractor that directly uses Proeowizard library * to read and extract XICs building the xic extractor is fast, but extracting * each XIC is slow * @param msrun_reader the MsRun reader on which the XIC extractor will run */ MsRunXicExtractorInterfaceSp buildMsRunXicExtractorSp(MsRunReaderSPtr &msrun_reader) const; /// set the temporary working directory void setTmpDir(const QString &dir_name); /** @brief sets the xic extractor type * @param type see the documentation of enumerations */ void setMsRunXicExtractorFactoryType(pappso::MsRunXicExtractorFactoryType type); private: MsRunXicExtractorFactory(); virtual ~MsRunXicExtractorFactory(); private: static MsRunXicExtractorFactory m_instance; QString m_tmpDirName; MsRunXicExtractorFactoryType m_type = MsRunXicExtractorFactoryType::nose; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp000644 001750 001750 00000014747 14526455546 031637 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/msrunxicextractor.cpp * \date 07/05/2018 * \author Olivier Langella * \brief base interface to build XICs on an MsRun file */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "msrunxicextractorinterface.h" #include #include #include "../processing/uimonitor/uimonitorvoid.h" namespace pappso { MsRunXicExtractorInterface::MsRunXicExtractorInterface( MsRunReaderSPtr &msrun_reader) : msp_msrun_reader(msrun_reader) { } MsRunXicExtractorInterface::MsRunXicExtractorInterface( const MsRunXicExtractorInterface &other) : msp_msrun_reader(other.msp_msrun_reader) { m_xicExtractMethod = other.m_xicExtractMethod; } MsRunXicExtractorInterface::~MsRunXicExtractorInterface() { } void MsRunXicExtractorInterface::setXicExtractMethod(XicExtractMethod method) { m_xicExtractMethod = method; } void MsRunXicExtractorInterface::setRetentionTimeAroundTarget( double range_in_seconds) { m_retentionTimeAroundTarget = range_in_seconds; } const MsRunIdCstSPtr & MsRunXicExtractorInterface::getMsRunId() const { return msp_msrun_reader.get()->getMsRunId(); } const MsRunReaderSPtr & MsRunXicExtractorInterface::getMsRunReaderSPtr() const { return msp_msrun_reader; } void MsRunXicExtractorInterface::setPostExtractionTraceFilterCstSPtr( pappso::FilterInterfaceCstSPtr &filter) { mcsp_postExtractionTraceFilter = filter; } void MsRunXicExtractorInterface::extractXicCoordSPtrListParallelized( UiMonitorInterface &monitor, std::vector &xic_coord_list) { qDebug(); // get the number of available threads : int number_of_threads = QThreadPool::globalInstance()->maxThreadCount(); if(number_of_threads == 1) { extractXicCoordSPtrList(monitor, xic_coord_list); } else { monitor.setStatus(QObject::tr("parallelized extraction of %1 XICs") .arg(xic_coord_list.size())); std::size_t chunck_size = xic_coord_list.size() / number_of_threads; chunck_size += 1; if(chunck_size < 1000) chunck_size = 1000; struct parallelExtractChunck { std::vector::iterator it_xic_coord_begin; std::vector::iterator it_xic_coord_end; }; std::vector chunck_list; qDebug(); for(auto it = xic_coord_list.begin(); it != xic_coord_list.end();) { qDebug() << "chunck_size=" << chunck_size; parallelExtractChunck chunck; chunck.it_xic_coord_begin = it; for(std::size_t i = 0; i < chunck_size && it != xic_coord_list.end(); i++) { it++; } chunck.it_xic_coord_end = it; chunck_list.push_back(chunck); } qDebug(); auto self = this; qDebug(); std::function extractChunck = [self](const parallelExtractChunck &extract_chunck) { qDebug(); UiMonitorVoid monitor; self->protectedExtractXicCoordSPtrList( monitor, extract_chunck.it_xic_coord_begin, extract_chunck.it_xic_coord_end); self->postExtractionProcess(monitor, extract_chunck.it_xic_coord_begin, extract_chunck.it_xic_coord_end); qDebug(); return 1; }; qDebug(); monitor.setTotalSteps(chunck_list.size()); UiMonitorInterface *monitorRef = &monitor; std::function monitorExtract2 = [monitorRef](std::size_t &result [[maybe_unused]], const std::size_t &value [[maybe_unused]]) { monitorRef->count(); }; qDebug(); QFuture res = QtConcurrent::mappedReduced(chunck_list.begin(), chunck_list.end(), extractChunck, monitorExtract2, QtConcurrent::UnorderedReduce); qDebug(); /* QFuture res = QtConcurrent::mapped(chunck_list.begin(), chunck_list.end(), extractChunck); */ res.waitForFinished(); monitor.setTotalSteps(0); } } void MsRunXicExtractorInterface::extractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector &xic_coord_list) { monitor.setStatus( QObject::tr("extracting %1 XICs").arg(xic_coord_list.size())); monitor.setTotalSteps(xic_coord_list.size()); protectedExtractXicCoordSPtrList( monitor, xic_coord_list.begin(), xic_coord_list.end()); monitor.setTotalSteps(0); postExtractionProcess(monitor, xic_coord_list.begin(), xic_coord_list.end()); } void MsRunXicExtractorInterface::postExtractionProcess( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) { if(mcsp_postExtractionTraceFilter != nullptr) { monitor.setStatus( QObject::tr("filtering %1 XICs") .arg(std::distance(it_xic_coord_list_begin, it_xic_coord_list_end))); for(auto it = it_xic_coord_list_begin; it != it_xic_coord_list_end; it++) { mcsp_postExtractionTraceFilter.get()->filter( *(it->get()->xicSptr.get())); } } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/xicextractor/msrunxicextractorinterface.h000644 001750 001750 00000010425 14514537342 031261 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/xicextractor/msrunxicextractor.h * \date 07/05/2018 * \author Olivier Langella * \brief base interface to build XICs on an MsRun file */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include "../msrun/msrunreader.h" #include #include #include #include #include "../mzrange.h" #include "../xic/xic.h" #include "../processing/uimonitor/uimonitorinterface.h" namespace pappso { class MsRunXicExtractorInterface; typedef std::shared_ptr MsRunXicExtractorInterfaceSp; class PMSPP_LIB_DECL MsRunXicExtractorInterface { public: /** @brief set the XIC extraction method */ void setXicExtractMethod(XicExtractMethod method); // sum or max /** @brief set the retention time range in seconds around the target rt * * only the interesting part of the xic will be extracted, form the rt target * - range_in_seconds to rt target + range in seconds by default, all the LC * run time is extracted * * @param range_in_seconds range in seconds */ void setRetentionTimeAroundTarget(double range_in_seconds); /** @brief extract a list of XIC given a list of xic coordinates to extract * * XicCoord is a vessel containing the xic to fill and coordinates of this XIC * in the MS run * * @param monitor process monitoring * @param xic_coord_list list of xic coordinates to extract. The order of xic * coordinates may change. */ virtual void extractXicCoordSPtrList(UiMonitorInterface &monitor, std::vector &xic_coord_list) final; /** @brief multithreaded XIC extraction * * divide xic_coord_list and run extractXicCoordSPtrList separated threads * * @param monitor process monitoring * @param xic_coord_list list of xic coordinates to extract. The order of xic * coordinates may change. */ virtual void extractXicCoordSPtrListParallelized( UiMonitorInterface &monitor, std::vector &xic_coord_list) final; const MsRunIdCstSPtr &getMsRunId() const; /** @brief get the msrunreader currently used for XIC extraction */ const MsRunReaderSPtr &getMsRunReaderSPtr() const; /** @brief filter interface to apply just after XIC extration on each trace */ void setPostExtractionTraceFilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter); protected: /** @brief constructor is private, use the MsRunXicExtractorFactory */ MsRunXicExtractorInterface(MsRunReaderSPtr &msrun_reader); MsRunXicExtractorInterface(const MsRunXicExtractorInterface &other); virtual ~MsRunXicExtractorInterface(); /** @brief possible post extraction process, eventually trace filters */ virtual void postExtractionProcess( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end); virtual void protectedExtractXicCoordSPtrList( UiMonitorInterface &monitor, std::vector::iterator it_xic_coord_list_begin, std::vector::iterator it_xic_coord_list_end) = 0; protected: MsRunReaderSPtr msp_msrun_reader; XicExtractMethod m_xicExtractMethod = XicExtractMethod::max; double m_retentionTimeAroundTarget = std::numeric_limits::max(); pappso::FilterInterfaceCstSPtr mcsp_postExtractionTraceFilter = nullptr; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/config.h.cmake000644 001750 001750 00000000157 14346367014 023402 0ustar00rusconirusconi000000 000000 #pragma once #define PAPPSOMSPP_NAME "libpappsomspp" #cmakedefine PAPPSOMSPP_VERSION "@PAPPSOMSPP_VERSION@" libpappsomspp-0.9.20/src/pappsomspp/exportinmportconfig.h000644 001750 001750 00000000576 14514537342 025203 0ustar00rusconirusconi000000 000000 #pragma once #include namespace pappso { #if defined(PMSPP_LIBRARY) // #pragma message("PMSPP_LIBRARY is defined: defining PMSPP_LIB_DECL // Q_DECL_EXPORT") #define PMSPP_LIB_DECL Q_DECL_EXPORT #else // #pragma message("PMSPP_LIBRARY is not defined: defining PMSPP_LIB_DECL // Q_DECL_IMPORT") #define PMSPP_LIB_DECL Q_DECL_IMPORT #endif } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/mzrange.cpp000644 001750 001750 00000006422 14526455546 023065 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/mass_range.cpp * \date 4/3/2015 * \author Olivier Langella * \brief object to handle a mass range (an mz value + or - some delta) */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "mzrange.h" #include "exception/exceptionnotpossible.h" #include #include #include namespace pappso { /// Constructs MzRange object using 1 precision (the same for lower or upper /// range). MzRange::MzRange(pappso_double mz, PrecisionPtr precision) : m_mz(mz), m_delta(precision->delta(m_mz)) { } //! Construct a MzRange object with \p mz and \p delta /*! * * \p delta should be construed as the whole tolerance such that \c lower() * returns \c m_mz - \c m_delta and \c upper() returns \c m_mz + \c m_delta. * */ MzRange::MzRange(pappso_double mz, pappso_double delta) : m_mz(mz), m_delta(delta) { } /// Constructs MzRange object using 2 different precisions: lower and upper. MzRange::MzRange(pappso_double mz, PrecisionPtr precision_lower, PrecisionPtr precision_upper) { m_delta = (precision_lower->delta(mz) + precision_upper->delta(mz)) / 2; m_mz = mz - precision_lower->delta(mz) + m_delta; } MzRange::MzRange(const MzRange &other) : m_mz(other.m_mz), m_delta(other.m_delta) { // std::cout << "MzRange::MzRange (const MzRange & other)" << std::endl; } MzRange::~MzRange() { } MzRange & MzRange::operator=(const MzRange &other) { m_mz = other.m_mz; m_delta = other.m_delta; return *this; } MzRange & MzRange::operator+=(const MzRange &other) { m_mz += other.m_mz; m_delta += other.m_delta; return *this; } MzRange & MzRange::operator*=(double number) { m_mz *= number; m_delta *= number; return *this; } pappso_double MzRange::getMz() const { return m_mz; } bool MzRange::contains(pappso_double mz) const { // qDebug() << " " << std::abs(mz - m_mz) << " m_delta:" << m_delta; if(std::abs(mz - m_mz) <= m_delta) { return true; } return false; } QString MzRange::toString() const { // QString s = "mz=" + QString::number(m_mz) + " delta=" + // QString::number(m_delta); return QString("mz=%1 delta=%2 : %3 < %4 < %5") .arg(m_mz) .arg(m_delta) .arg(lower()) .arg(m_mz) .arg(upper()); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/mzrange.h000644 001750 001750 00000004157 14346367014 022525 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/mass_range.h * \date 4/3/2015 * \author Olivier Langella * \brief object to handle a mass range (an mz value + or - some delta) */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include "types.h" #include "precision.h" #include "exportinmportconfig.h" #include #include namespace pappso { class PMSPP_LIB_DECL MzRange { public: MzRange(pappso_double mz, PrecisionPtr precision); MzRange(pappso_double mz, pappso_double delta); MzRange(pappso_double mz, PrecisionPtr precision_lower, PrecisionPtr precision_upper); MzRange(const MzRange &other); virtual ~MzRange(); MzRange &operator=(const MzRange &other); MzRange &operator+=(const MzRange &other); MzRange &operator*=(double number); pappso_double getMz() const; bool contains(pappso_double) const; QString toString() const; pappso_double lower() const { return (m_mz - m_delta); }; pappso_double upper() const { return (m_mz + m_delta); }; private: pappso_double m_mz; pappso_double m_delta; }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/pappsoexception.h000644 001750 001750 00000004166 14346367014 024303 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/pappsoexception.cpp * \date 10/3/2015 * \author Olivier Langella * \brief exception handler */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include #include namespace pappso { class PappsoException : public QException { public: PappsoException(const QString &message) throw() { qDebug() << message; m_message = message; m_stdMessage.assign(m_message.toStdString()); } PappsoException(const PappsoException &other) throw() { m_message = other.m_message; m_stdMessage.assign(m_message.toStdString()); } void raise() const override { throw *this; } virtual QException * clone() const override { return new PappsoException(*this); } virtual const QString & qwhat() const throw() { return m_message; } const char * what() const noexcept override { return m_stdMessage.c_str(); } virtual ~PappsoException() throw() { } private: std::string m_stdMessage; QString m_message; // Description of the error }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/precision.cpp000644 001750 001750 00000016632 14526455546 023421 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/mass_range.cpp * \date 4/3/2015 * \author Olivier Langella * \brief object to handle a mass range (an mz value + or - some delta) */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #include "precision.h" #include "mzrange.h" #include "exception/exceptionnotpossible.h" #include #include #include #include namespace pappso { PrecisionFactory::MapDaltonPrecision PrecisionFactory::m_mapDalton = [] { MapDaltonPrecision ret; return ret; }(); PrecisionFactory::MapPpmPrecision PrecisionFactory::m_mapPpm = [] { MapPpmPrecision ret; return ret; }(); PrecisionFactory::MapResPrecision PrecisionFactory::m_mapRes = [] { MapResPrecision ret; return ret; }(); pappso_double PrecisionBase::getNominal() const { return m_nominal; } PrecisionPtr PrecisionFactory::fromString(const QString &str) { // The format of the string is with string either // "ppm" or "dalton" or "res". // // If there only once component, that is, is omitted and charge is // not provided, then "dalton" is considered. QStringList list = str.split(QRegularExpression("\\s+"), Qt::SkipEmptyParts); if(list.size() > 0) { bool ok; pappso_double value = list[0].toDouble(&ok); if(!ok) { throw ExceptionNotPossible( QObject::tr("ERROR getting precision from string :\nunable to " "convert %1 to number in %2") .arg(value) .arg(str)); } if(list.size() == 1) { return PrecisionFactory::getDaltonInstance(value); } else if(list.size() == 2) { if(list[1].toLower() == "dalton") { return PrecisionFactory::getDaltonInstance(value); } if(list[1].toLower() == "ppm") { return PrecisionFactory::getPpmInstance(value); } if(list[1].toLower() == "res") { return PrecisionFactory::getResInstance(value); } throw ExceptionNotPossible( QObject::tr("ERROR getting precision from string :\nprecision " "unit %1 to not known in %2") .arg(list[1]) .arg(str)); } } throw ExceptionNotPossible(QObject::tr("ERROR getting precision from string " ":\nunable to convert %1 to precision") .arg(str)); } PrecisionPtr PrecisionFactory::getDaltonInstance(pappso_double value) { MapDaltonPrecision::iterator it = m_mapDalton.find(value); if(it == m_mapDalton.end()) { // not found std::pair insert_res = m_mapDalton.insert(std::pair( value, new DaltonPrecision(value))); it = insert_res.first; } else { // found } return it->second; } PrecisionPtr PrecisionFactory::getPpmInstance(pappso_double value) { if(!value) throw ExceptionNotPossible( QObject::tr("Fatal error at precision.cpp " "-- ERROR trying to set a Resolution precision value of 0. " "Program aborted.")); MapPpmPrecision::iterator it = m_mapPpm.find(value); if(it == m_mapPpm.end()) { // Not found. std::pair insert_res = m_mapPpm.insert(std::pair( value, new PpmPrecision(value))); it = insert_res.first; } else { // found } return it->second; } PrecisionPtr PrecisionFactory::getResInstance(pappso_double value) { // qDebug() << "Requested a Resolution precision instance for value:" << // value; if(!value) throw ExceptionNotPossible( QObject::tr("Fatal error at precision.cpp " "-- ERROR trying to set a Resolution precision value of 0. " "Program aborted.")); MapResPrecision::iterator it = m_mapRes.find(value); if(it == m_mapRes.end()) { // not found std::pair insert_res = m_mapRes.insert(std::pair( value, new ResPrecision(value))); it = insert_res.first; } else { // found } return it->second; } PrecisionPtr PrecisionFactory::getPrecisionPtrFractionInstance(PrecisionPtr origin, double fraction) { PrecisionUnit unit = origin->unit(); double value = origin->getNominal() * fraction; return getPrecisionPtrInstance(unit, value); } PrecisionPtr PrecisionFactory::getPrecisionPtrInstance(PrecisionUnit unit, double value) { switch(unit) { case PrecisionUnit::dalton: return getDaltonInstance(value); case PrecisionUnit::ppm: return getPpmInstance(value); case PrecisionUnit::res: return getResInstance(value); case PrecisionUnit::mz: return getDaltonInstance(value); case PrecisionUnit::none: throw ExceptionNotPossible(QObject::tr("Unknown precision unit")); default: throw ExceptionNotPossible(QObject::tr("Unknown precision unit")); break; } return nullptr; } DaltonPrecision::DaltonPrecision(pappso_double x) : PrecisionBase(x) { } DaltonPrecision::~DaltonPrecision() { } PrecisionUnit DaltonPrecision::unit() const { return PrecisionUnit::dalton; } pappso_double DaltonPrecision::delta([[maybe_unused]] pappso_double value) const { return m_nominal; } QString DaltonPrecision::toString() const { return (QString("%1 dalton").arg(m_nominal)); } PpmPrecision::PpmPrecision(pappso_double x) : PrecisionBase(x) { } PpmPrecision::~PpmPrecision() { } PrecisionUnit PpmPrecision::unit() const { return PrecisionUnit::ppm; } pappso_double PpmPrecision::delta(pappso_double value) const { return ((value / ONEMILLION) * m_nominal); } QString PpmPrecision::toString() const { return (QString("%1 ppm").arg(m_nominal)); } ResPrecision::ResPrecision(pappso_double x) : PrecisionBase(x) { } ResPrecision::~ResPrecision() { } PrecisionUnit ResPrecision::unit() const { return PrecisionUnit::res; } pappso_double ResPrecision::delta(pappso_double value) const { return (value / m_nominal); } QString ResPrecision::toString() const { return (QString("%1 res").arg(m_nominal)); } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/precision.h000644 001750 001750 00000011041 14346367014 023043 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/mass_range.h * \date 4/3/2015 * \author Olivier Langella * \brief object to handle a mass range (an mz value + or - some delta) */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include #include "exportinmportconfig.h" #include "types.h" namespace pappso { class PMSPP_LIB_DECL PrecisionBase { protected: const pappso_double m_nominal; PrecisionBase(pappso_double nominal) : m_nominal(nominal) { } public: virtual PrecisionUnit unit() const = 0; virtual pappso_double getNominal() const final; virtual pappso_double delta(pappso_double value) const = 0; virtual QString toString() const = 0; }; /** \def specific type for a dalton precision * */ class PMSPP_LIB_DECL DaltonPrecision : public PrecisionBase { friend class PrecisionFactory; protected: DaltonPrecision(pappso_double x); public: virtual ~DaltonPrecision(); virtual PrecisionUnit unit() const override; virtual pappso_double delta(pappso_double value) const override; virtual QString toString() const override; }; /** \def specific type for a ppm precision * */ class PMSPP_LIB_DECL PpmPrecision : public PrecisionBase { friend class PrecisionFactory; protected: PpmPrecision(pappso_double x); public: virtual ~PpmPrecision(); virtual PrecisionUnit unit() const override; virtual pappso_double delta(pappso_double value) const override; virtual QString toString() const override; }; /** \def specific type for a res precision * */ class PMSPP_LIB_DECL ResPrecision : public PrecisionBase { friend class PrecisionFactory; protected: ResPrecision(pappso_double x); public: virtual ~ResPrecision(); virtual PrecisionUnit unit() const override; virtual pappso_double delta(pappso_double value) const override; virtual QString toString() const override; }; typedef const PrecisionBase *PrecisionPtr; // was class Precision class PMSPP_LIB_DECL PrecisionFactory { using MapDaltonPrecision = std::map; using MapPpmPrecision = std::map; using MapResPrecision = std::map; private: static MapDaltonPrecision m_mapDalton; static MapPpmPrecision m_mapPpm; static MapResPrecision m_mapRes; public: /** @brief get a precision pointer from a string * @param str is of the form : "nominal_value unit", example : "0.02 dalton" */ static PrecisionPtr fromString(const QString &str); /** @brief get a Dalton precision pointer * @param value the precision value in dalton */ static PrecisionPtr getDaltonInstance(pappso_double value); /** @brief get a ppm precision pointer * @param value the precision value in ppm */ static PrecisionPtr getPpmInstance(pappso_double value); /** @brief get a resolution precision pointer * @param value the precision value in resolution */ static PrecisionPtr getResInstance(pappso_double value); /** @brief get the fraction of an existing precision pointer * @param origin the original precision pointer * @param fraction the fraction to apply on the original precision */ static PrecisionPtr getPrecisionPtrFractionInstance(PrecisionPtr origin, double fraction); /** @brief get a precision pointer instance * @param unit the precision unit * @param value the precision value */ static PrecisionPtr getPrecisionPtrInstance(PrecisionUnit unit, double value); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/types.h000644 001750 001750 00000025367 14514537342 022234 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/types.h * \date 4/3/2015 * \author Olivier Langella * \brief This header contains all the type re-definitions and all * the global variables definitions used in the PAPPSOms++ library. */ /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once #include #include namespace pappso { /************ Typedefs **************************************************/ /** \var typedef QString PeptideStr \brief A type definition for PeptideStr */ typedef QString PeptideStr; /** \var typedef double pappso_double \brief A type definition for doubles */ typedef double pappso_double; /** \var typedef float mcq_float \brief A type definition for floats */ typedef float pappso_float; typedef unsigned int uint; /*********** enumerations *********************************/ /** \def TimeUnit (s, min, h) */ enum class TimeUnit { none, s, min, h, }; /** \def PrecisionUnit ppm or dalton * */ enum class PrecisionUnit { none, dalton, ppm, res, mz, last }; /** \def AtomIsotopeSurvey list of atoms on which isotopes may occurs * */ enum class AtomIsotopeSurvey : std::int8_t { C, H, O, N, S, last }; /** \def Isotope list of isotopes taken into account for peptide abundance * calculation * */ enum class Isotope { C13, H2, O17, O18, N15, S33, S34, S36 }; /** \def MzFormat mz data file format types * */ enum class MzFormat : std::int8_t { unknown = 0, ///< unknown format mzML = 1, ///< mzML mzXML = 2, ///< mzXML MGF = 3, ///< Mascot format SQLite3 = 4, ///< SQLite3 format xy = 5, ///< (x,y) format mz5 = 6, //< MZ5 format msn = 7, //< MS_MS2 format abSciexWiff = 8, abSciexT2D = 9, agilentMassHunter = 10, thermoRaw = 11, watersRaw = 12, brukerFid = 13, brukerYep = 14, brukerBaf = 15, brukerTims = 16, last = 17 }; /** \def FileReaderType mass data file reader types * */ enum class FileReaderType { pwiz, xy, tims, tims_frames, tims_ms2, }; /** \def AminoAcidChar Amino-acid full name and code correspondence * */ enum class AminoAcidChar : char { alanine = 'A', cysteine = 'C', aspartic_acid = 'D', glutamic_acid = 'E', phenylalanine = 'F', glycine = 'G', histidine = 'H', isoleucine = 'I', lysine = 'K', leucine = 'L', methionine = 'M', asparagine = 'N', proline = 'P', glutamine = 'Q', arginine = 'R', serine = 'S', threonine = 'T', valine = 'V', tryptophan = 'W', tyrosine = 'Y', selenocysteine = 'U', pyrrolysine = 'O', }; enum class SortType : std::int8_t { no_sort = 0, x = 1, y = 2, }; enum class SortOrder : std::int8_t { ascending = 0, descending = 1, }; /** \def Data compression types * */ enum class DataCompression : std::int8_t { unset = -1, ///< not net none = 0, ///< no compression zlib = 1, ///< zlib compresssion }; enum class DataKind : std::int8_t { unset = -1, ///< not set rt = 0, ///< Retention time dt = 1, ///< Drift time mz = 2, ///< m/z }; enum class Axis : std::int8_t { unset = 0x000, x = 1 << 0, y = 1 << 1, z = 1 << 2, }; enum class AxisScale : std::int8_t { unset = 0, orig = 1, log10 = 2, }; /** \def XixExtactMethod method to extract Xic * */ enum class XicExtractMethod : std::int8_t { sum = 1, ///< sum of intensities max = 2 ///< maximum of intensities }; /*********** Global variables definitions*********************************/ /** \def MHPLUS 1.007276466879 \brief The (monoisotopic) mass of the H+ ion https://en.wikipedia.org/wiki/Proton (One Proton alone) 1.007276466879 */ const pappso_double MHPLUS(1.007276466879); const pappso_double MPROTON(1.007276466879); /** \def MPROTIUM 1.00782503207 \brief The (monoisotopic) mass of the H atom https://en.wikipedia.org/wiki/Isotopes_of_hydrogen (One proton + One electron) 1.00782503207 Note that as of 20191028, that same page says: 1.007825032241 */ const pappso_double MPROTIUM(1.007825032241); /** \def ONEMILLION 1000000 \brief One million integer, why not. */ const pappso_double ONEMILLION(1000000); /** @file * https://forgemia.inra.fr/pappso/massxpert/-/blob/be60e53480f68d36afa95c809cffd68d4fb46c79/data/polChemDefs/protein-1-letter-libisospec-atomic-data/protein-1-letter-libisospec-atomic-data.xml * abundance of sulfur extracted from 'massXpert' polymer definitions */ // Sulfur // S // // 31.9720711741 // 94.985001199904004920426814351230859756469726562500000000000000 // // // 32.9714589101 // 0.751939844812414937003097747947322204709053039550781250000000 // // // 33.9678670300 // 4.252059835213182203972337447339668869972229003906250000000000 // // // 35.9670812000 // 0.010999120070394368536836893213148869108408689498901367187500 // const pappso_double MASSOXYGEN(15.99491461956); const pappso_double MASSCARBON(12); const pappso_double MASSH2O((MPROTIUM * 2) + MASSOXYGEN); const pappso_double MASSNITROGEN(14.0030740048); const pappso_double MASSNH3((MPROTIUM * 3) + MASSNITROGEN); const pappso_double MASSCO(MASSCARBON + MASSOXYGEN); const pappso_double MASSPHOSPHORUS(30.973761998); const pappso_double MASSSULFUR(31.9720711741); // id: MOD:00696 name: phosphorylated residue H 1 O 3 P 1 const pappso_double MASSPHOSPHORYLATEDR(MPROTIUM + (MASSOXYGEN * 3) + MASSPHOSPHORUS); // Selenium : warning lot of isotopes const pappso_double MASSSELENIUM(79.916520); // 79.916520 //78.971 // CHNOS /** \def DIFFC12C13 1.0033548378 \brief The (monoisotopic) mass difference between C12 (12u) and C13 stable isotope of carbon */ const pappso_double DIFFC12C13(1.0033548378); /** \def DIFFS32S33 0.99938776 \brief The (monoisotopic) mass difference between S32 (31.97207100u) and S33 (32.97145876u) stable isotope of sulfur https://en.wikipedia.org/wiki/Isotopes_of_sulfur */ const pappso_double DIFFS32S33(32.9714589101 - MASSSULFUR); /** \def DIFFS32S34 1.9957959 \brief The (monoisotopic) mass difference between S32 (31.97207100u) and S34 (33.96786690u) stable isotope of sulfur */ const pappso_double DIFFS32S34(33.9678670300 - MASSSULFUR); /** \def DIFFS32S36 3.99500976 \brief The (monoisotopic) mass difference between S32 (31.97207100u) and S36 (35.96708076u) stable isotope of sulfur */ const pappso_double DIFFS32S36(35.9670812000 - MASSSULFUR); /** \def DIFFH1H2 \brief The (monoisotopic) mass difference between H1 and H2 stable isotope of hydrogen */ const pappso_double DIFFH1H2(2.0141017778 - MPROTIUM); /** \def DIFFO16O18 \brief The (monoisotopic) mass difference between O16 and O18 stable isotope of oxygen */ const pappso_double DIFFO16O18(17.9991610 - MASSOXYGEN); /** \def DIFFO16O17 \brief The (monoisotopic) mass difference between O16 and O17 stable isotope of oxygen */ const pappso_double DIFFO16O17(16.99913150 - MASSOXYGEN); /** \def DIFFN14N15 \brief The (monoisotopic) mass difference between N14 and N15 stable isotope of nitrogen */ const pappso_double DIFFN14N15(15.0001088982 - MASSNITROGEN); // http://education.expasy.org/student_projects/isotopident/htdocs/motza.html /** \def ABUNDANCEH2 0.0156% \brief H2 isotope abundance */ const pappso_double ABUNDANCEH2(0.00011570983569203332000374651045149221317842602729797363281250); /** \def ABUNDANCEN15 0.00364 \brief N15 isotope abundance */ const pappso_double ABUNDANCEN15( 0.00364198543205827118818262988497735932469367980957031250000000); /** \def ABUNDANCEO17 \brief O17 isotope abundance */ const pappso_double ABUNDANCEO17( 0.00038099847600609595965615028489992255344986915588378906250000); /** \def ABUNDANCEO18 0.2% \brief O18 isotope abundance */ const pappso_double ABUNDANCEO18( 0.00205139179443282221315669744399201590567827224731445312500000); /** \def ABUNDANCEC13 1.109% \brief C13 isotope abundance */ const pappso_double ABUNDANCEC13( 0.01078805814953308406245469086570665240287780761718750000000000); /** \def ABUNDANCEC12 98.89% \brief C12 abundance */ const pappso_double ABUNDANCEC12( 0.98921194185046687152862432412803173065185546875000000000000000); /** \def ABUNDANCES33 0.00750 \brief S33 abundance */ const pappso_double ABUNDANCES33( 0.00751939844812414937003097747947322204709053039550781250000000); /** \def ABUNDANCES34 0.0429 \brief S34 abundance */ const pappso_double ABUNDANCES34( 0.04252059835213182203972337447339668869972229003906250000000000); /** \def ABUNDANCES36 0.00020 \brief S36 abundance */ const pappso_double ABUNDANCES36( 0.00010999120070394368536836893213148869108408689498901367187500); /** \brief PeptideIon enum defines all types of ions (Nter or Cter) */ enum class PeptideIon : std::int8_t { b = 0, ///< Nter acylium ions bstar = 1, ///< Nter acylium ions + NH3 loss bo = 2, ///< Nter acylium ions + H2O loss a = 3, ///< Nter aldimine ions astar = 4, ///< Nter aldimine ions + NH3 loss ao = 5, ///< Nter aldimine ions + H2O loss bp = 6, c = 7, ///< Nter amino ions y = 8, ///< Cter amino ions ystar = 9, ///< Cter amino ions + NH3 loss yo = 10, ///< Cter amino ions + H2O loss z = 11, ///< Cter carbocations yp = 12, x = 13 ///< Cter acylium ions }; /** \brief only useful for internal use * DO not change this value : it is used to define static array size */ #define PEPTIDE_ION_TYPE_COUNT 14 } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/utils.cpp000644 001750 001750 00000031151 14531114113 022531 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ /////////////////////// StdLib includes #include #include /////////////////////// Qt includes #include #include #include /////////////////////// Local includes #include "utils.h" #include "types.h" #include "exception/exceptionnotfound.h" #include "trace/trace.h" namespace pappso { QRegularExpression Utils::xyMassDataFormatRegExp = QRegularExpression("^(\\d*\\.?\\d+)([^\\d^\\.^-]+)(-?\\d*\\.?\\d*[e-]?\\d*)"); QRegularExpression Utils::endOfLineRegExp = QRegularExpression("^\\s+$"); const QString Utils::getLexicalOrderedString(unsigned int num) { int size = log10(num); size += 97; QLatin1Char latin1_char(size); QString base(latin1_char); base.append(QString().setNum(num)); return (base); } void Utils::writeLexicalOrderedString(QTextStream *p_out, unsigned int num) { *p_out << (char)(log10(num) + 97) << num; } //! Determine the number of zero decimals between the decimal point and the //! first non-zero decimal. /*! * 0.11 would return 0 (no empty decimal) * 2.001 would return 2 * 1000.0001254 would return 3 * * \param value the value to be analyzed * \return the number of '0' decimals between the decimal separator '.' and * the first non-0 decimal */ int Utils::zeroDecimalsInValue(pappso_double value) { // qDebug() << qSetRealNumberPrecision(10) << "Double value: " << value; int intPart = static_cast(value); // qDebug() << "int part:" << intPart; double decimalPart = value - intPart; // qDebug() << qSetRealNumberPrecision(10) << "decimal part: " << decimalPart; int count = 0; while(decimalPart > 0) { ++count; decimalPart *= 10; // qDebug() << "Iteration " << count << "decimal part:" << decimalPart; if(decimalPart >= 1) { // qDebug() << "Because decimal part " << decimalPart //<< "is >= 1, breaking loop while count is " << count << "."; break; } } // qDebug() << "Returning count:" << count - 1; return count - 1; } pappso_double Utils::roundToDecimals(pappso_double value, int decimal_places) { if(decimal_places < 0) return value; return ceil((value * pow(10, decimal_places)) - 0.49) / pow(10, decimal_places); } long long int Utils::roundToDecimal32bitsAsLongLongInt(pappso::pappso_double input) { pappso::pappso_double test_decimal = 100000000000; if(sizeof(int *) == 4) { // 32bits test_decimal = 100000000; } return (floor(input * test_decimal)); } std::string Utils::toUtf8StandardString(const QString &text) { std::string env_backup = setlocale(LC_ALL, ""); // struct lconv *lc_backup = localeconv(); // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()" //<< "env_backup=" << env_backup.c_str() << "lc_backup->decimal_point" //<< lc_backup->decimal_point; // Force locale to be "C". setlocale(LC_ALL, "C"); // Now perform the conversion. QByteArray byte_array = text.toUtf8(); std::string stdText = ""; for(char c : byte_array) { stdText += c; } // Set back the locale to the backed-up one. setlocale(LC_ALL, env_backup.c_str()); return stdText; } bool Utils::writeToFile(const QString &text, const QString &file_name) { QFile file(file_name); if(file.open(QFile::WriteOnly | QFile::Truncate)) { QTextStream out(&file); out << text; out.flush(); file.close(); return true; } return false; } bool Utils::appendToFile(const QString &text, const QString &file_name) { QFile file(file_name); if(file.open(QFile::WriteOnly | QFile::Append)) { QTextStream out(&file); out << text; out.flush(); file.close(); return true; } return false; } std::size_t Utils::extractScanNumberFromMzmlNativeId(const QString &spectrum_native_id) { qDebug() << " " << spectrum_native_id; QStringList native_id_list = spectrum_native_id.split("="); if(native_id_list.size() < 2) { throw ExceptionNotFound( QObject::tr("scan number not found in mzML native id %1") .arg(spectrum_native_id)); } else { /** TODO activate this in a future release to ensure scan number for(auto i = 0; i < native_id_list.size(); i += 2) { if(native_id_list[i] == "scan") { return native_id_list[i + 1].toULong(); } } throw ExceptionNotFound( QObject::tr("scan number not found in mzML native id %1") .arg(spectrum_native_id)); */ return native_id_list.back().toULong(); } return 0; } QString Utils::pointerToString(const void *const pointer) { return QString("%1").arg( (quintptr)pointer, QT_POINTER_SIZE * 2, 16, QChar('0')); } //! Tell if both double values, are equal within the double representation //! capabilities of the platform. bool Utils::almostEqual(double value1, double value2, int decimalPlaces) { // QString value1String = QString("%1").arg(value1, // 0, 'f', 60); // QString value2String = QString("%1").arg(value2, // 0, 'f', 60); // qWarning() << __FILE__ << __LINE__ << __FUNCTION__ //<< "value1:" << value1String << "value2:" << value2String; // The machine epsilon has to be scaled to the magnitude of the values used // and multiplied by the desired precision in ULPs (units in the last place) // (decimal places). double valueSum = std::abs(value1 + value2); // QString valueSumString = QString("%1").arg(valueSum, // 0, 'f', 60); double valueDiff = std::abs(value1 - value2); // QString valueDiffString = QString("%1").arg(valueDiff, // 0, 'f', 60); double epsilon = std::numeric_limits::epsilon(); // QString epsilonString = QString("%1").arg(epsilon, // 0, 'f', 60); double scaleFactor = epsilon * valueSum * decimalPlaces; // QString scaleFactorString = QString("%1").arg(scaleFactor, // 0, 'f', 60); // qWarning() << "valueDiff:" << valueDiffString << "valueSum:" << // valueSumString << //"epsilon:" << epsilonString << "scaleFactor:" << scaleFactorString; bool res = valueDiff < scaleFactor // unless the result is subnormal: || valueDiff < std::numeric_limits::min(); // qWarning() << __FILE__ << __LINE__ << __FUNCTION__ //<< "returning res:" << res; return res; } double Utils::nearestGreater(double value) { return std::nextafter(value, value + 1); } QString Utils::chronoTimePointDebugString( const QString &msg, std::chrono::system_clock::time_point chrono_time) { time_t tt; tt = std::chrono::system_clock::to_time_t(chrono_time); QString debug_text = QString("%1 - %2\n").arg(msg).arg(QString::fromLatin1(ctime(&tt))); return debug_text; } QString Utils::chronoIntervalDebugString( const QString &msg, std::chrono::system_clock::time_point chrono_start, std::chrono::system_clock::time_point chrono_finish) { QString debug_text = QString( "%1 %2 min = %3 s = %4 ms = %5 " "µs\n") .arg(msg) .arg(std::chrono::duration_cast(chrono_finish - chrono_start) .count()) .arg(std::chrono::duration_cast(chrono_finish - chrono_start) .count()) .arg(std::chrono::duration_cast(chrono_finish - chrono_start) .count()) .arg(std::chrono::duration_cast(chrono_finish - chrono_start) .count()); return debug_text; } std::vector Utils::splitMzStringToDoubleVectorWithSpaces(const QString &text, std::size_t &error_count) { QStringList string_list = text.split(QRegularExpression("[\\s]+"), Qt::SkipEmptyParts); // qDebug() << "string list:" << string_list; std::vector double_vector; for(int iter = 0; iter < string_list.size(); ++iter) { QString current_string = string_list.at(iter); bool ok = false; double current_double = current_string.toDouble(&ok); if(!current_double && !ok) { ++error_count; continue; } double_vector.push_back(current_double); } return double_vector; } std::vector Utils::splitSizetStringToSizetVectorWithSpaces(const QString &text, std::size_t &error_count) { // qDebug() << "Parsing text:" << text; QStringList string_list = text.split(QRegularExpression("[\\s]+"), Qt::SkipEmptyParts); // qDebug() << "string list size:" << string_list.size() //<< "values:" << string_list; std::vector sizet_vector; for(int iter = 0; iter < string_list.size(); ++iter) { QString current_string = string_list.at(iter); bool ok = false; std::size_t current_sizet = current_string.toUInt(&ok); if(!current_sizet && !ok) { ++error_count; continue; } sizet_vector.push_back(current_sizet); } return sizet_vector; } QString Utils::booleanToString(bool value) { if(value) return "TRUE"; return "FALSE"; } QString Utils::mzFormatAsString(MzFormat mz_format) { if(mz_format == MzFormat::mzML) return "mzML"; else if(mz_format == MzFormat::mzXML) return "mzXML"; else if(mz_format == MzFormat::MGF) return "MGF"; else if(mz_format == MzFormat::SQLite3) return "SQLite3"; else if(mz_format == MzFormat::xy) return "xy"; else if(mz_format == MzFormat::mz5) return "mz5"; else if(mz_format == MzFormat::msn) return "msn"; else if(mz_format == MzFormat::abSciexWiff) return "abSciexWiff"; else if(mz_format == MzFormat::abSciexT2D) return "abSciexT2D"; else if(mz_format == MzFormat::agilentMassHunter) return "agilentMassHunter"; else if(mz_format == MzFormat::thermoRaw) return "thermoRaw"; else if(mz_format == MzFormat::watersRaw) return "watersRaw"; else if(mz_format == MzFormat::brukerFid) return "brukerFid"; else if(mz_format == MzFormat::brukerYep) return "brukerYep"; else if(mz_format == MzFormat::brukerBaf) return "brukerBaf"; else if(mz_format == MzFormat::brukerTims) return "brukerTims"; else return "unknown"; } QString Utils::fileReaderTypeAsString(FileReaderType file_reader_type) { if(file_reader_type == FileReaderType::pwiz) return "pwiz"; else if(file_reader_type == FileReaderType::xy) return "xy"; else if(file_reader_type == FileReaderType::tims) return "tims"; else if(file_reader_type == FileReaderType::tims_frames) return "tims_frames"; else return "unknown"; } QString Utils::toString(specglob::SpectralAlignmentType type) { switch(type) { case specglob::SpectralAlignmentType::align: return "AL"; break; case specglob::SpectralAlignmentType::nonAlign: return "NA"; break; case specglob::SpectralAlignmentType::reAlign: return "RA"; break; default: return "ER"; } } QString Utils::toString(specglob::ExperimentalSpectrumDataPointType type) { switch(type) { case specglob::ExperimentalSpectrumDataPointType::both: return "both"; break; case specglob::ExperimentalSpectrumDataPointType::native: return "native"; break; case specglob::ExperimentalSpectrumDataPointType::symetric: return "symetric"; break; default: return "synthetic"; } } } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/utils.h000644 001750 001750 00000010733 14531114113 022201 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ #pragma once /////////////////////// StdLib includes #include /////////////////////// Qt includes #include #include #include #include /////////////////////// Local includes #include "types.h" #include "processing/specglob/types.h" #include "exportinmportconfig.h" namespace pappso { class Trace; class PMSPP_LIB_DECL Utils { public: //! Regular expression matching static QRegularExpression xyMassDataFormatRegExp; //! Regular expression matching static QRegularExpression mzListDataFormatRegExp; //! Regular expression matching static QRegularExpression sizetListDataFormatRegExp; //! Regular expression that tracks the end of line in text files. static QRegularExpression endOfLineRegExp; static const QString getLexicalOrderedString(unsigned int num); static void writeLexicalOrderedString(QTextStream *p_out, unsigned int num); static int zeroDecimalsInValue(pappso_double value); static pappso_double roundToDecimals(pappso_double value, int decimal_places); static long long int roundToDecimal32bitsAsLongLongInt(pappso::pappso_double input); static std::string toUtf8StandardString(const QString &text); static bool writeToFile(const QString &text, const QString &file_name); static bool appendToFile(const QString &text, const QString &file_name); static std::size_t extractScanNumberFromMzmlNativeId(const QString &spectrum_native_id); static QString pointerToString(const void *const pointer); static bool almostEqual(double value1, double value2, int decimalPlaces = 10); static double nearestGreater(double value); static QString chronoTimePointDebugString(const QString &msg, std::chrono::system_clock::time_point chrono_time = std::chrono::system_clock::now()); static QString chronoIntervalDebugString( const QString &msg, std::chrono::system_clock::time_point chrono_start, std::chrono::system_clock::time_point chrono_finish = std::chrono::system_clock::now()); static std::vector splitMzStringToDoubleVectorWithSpaces(const QString &text, std::size_t &error_count); static std::vector splitSizetStringToSizetVectorWithSpaces(const QString &text, std::size_t &error_count); /** @brief convenient function to transform a boolean to QString "TRUE" or * "FALSE" QString returned is readable by R * @return QString "TRUE" or "FALSE" */ static QString booleanToString(bool value); /** @brief Convenience function to return a string describing the MzFormat of * a file * @return QString like "brukerTims" for enum value MzFormat::brukerTims. */ static QString mzFormatAsString(MzFormat mz_format); static QString fileReaderTypeAsString(FileReaderType file_reader_type); /** @brief Convenience function to return a string describing the specglob alingment type * @return QString */ static QString toString(specglob::SpectralAlignmentType type); /** @brief Convenience function to return a string describing the specglob * experimental spectrum data point * @return QString */ static QString toString(specglob::ExperimentalSpectrumDataPointType type); }; } // namespace pappso libpappsomspp-0.9.20/src/pappsomspp/config.h000644 001750 001750 00000000134 14533441731 022313 0ustar00rusconirusconi000000 000000 #pragma once #define PAPPSOMSPP_NAME "libpappsomspp" #define PAPPSOMSPP_VERSION "0.9.20" libpappsomspp-0.9.20/src/resources/000755 001750 001750 00000000000 14533473271 020513 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/resources/icons/000755 001750 001750 00000000000 14533473271 021626 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/resources/icons/switch_off.svg000644 001750 001750 00000006404 14346367014 024505 0ustar00rusconirusconi000000 000000 image/svg+xml OFF libpappsomspp-0.9.20/src/resources/icons/switch_on.svg000644 001750 001750 00000006371 14346367014 024352 0ustar00rusconirusconi000000 000000 image/svg+xml ON libpappsomspp-0.9.20/src/resources/PSI-MOD.obo000644 001750 001750 00006766620 14447024610 022304 0ustar00rusconirusconi000000 000000 format-version: 1.2 ontology: mod date: 10:03:2021 14:36 saved-by: Paul M. Thomas subsetdef: PSI-MOD-slim "subset of protein modifications" synonymtypedef: DeltaMass-label "Label from MS DeltaMass" EXACT synonymtypedef: OMSSA-label "Short label from OMSSA" EXACT synonymtypedef: PSI-MOD-alternate "Alternate name curated by PSI-MOD" EXACT synonymtypedef: PSI-MOD-label "Short label curated by PSI-MOD" EXACT synonymtypedef: PSI-MS-label "Agreed label from MS community" RELATED synonymtypedef: RESID-alternate "Alternate name from RESID" EXACT synonymtypedef: RESID-misnomer "Misnomer tagged alternate name from RESID" RELATED synonymtypedef: RESID-name "Name from RESID" EXACT synonymtypedef: RESID-systematic "Systematic name from RESID" EXACT synonymtypedef: Unimod-alternate "Alternate name from Unimod" RELATED synonymtypedef: Unimod-description "Description (full_name) from Unimod" RELATED synonymtypedef: Unimod-interim "Interim label from Unimod" RELATED synonymtypedef: UniProt-feature "Protein feature description from UniProtKB" EXACT default-namespace: PSI-MOD remark: PSI-MOD version: 1.031.2 remark: RESID release: 75.00 remark: ISO-8601 date: 2021-03-10 14:36Z remark: Annotation note 01 - "[PSI-MOD:ref]" has been replaced by PubMed:18688235. remark: Annotation note 02 - When an entry in the RESID Database is annotated with different sources because the same modification can arise from different encoded amino acids, then the PSI-MOD definition for each different source instance carries the RESID cross-reference followed by a hash symbol "#" and a 3 or 4 character label. When an entry in the RESID Database is annotated as a general modification with the same enzymatic activity producing different chemical structures depending on natural variation in the nonproteinaceous substrate, on secondary modifications that do not change the nature of the primary modification, or on a combination of a primary and one or more secondary modifications on the same residue, then the PSI-MOD definition for each different instance carries the RESID cross-reference followed by the special tag "#var". remark: Annotation note 03 - When an entry in the Unimod database is annotated as a general modification, and one or more instance sites are listed, then the PSI-MOD definition for each different site instance carries the Unimod cross-reference followed by a hash symbol and an amino acid code, "N-term" or "C-term". remark: Annotation note 04 - The elemental formulas are in strict alphabetical order, not in CAS ("C" and "H" first) order. Isotope numbers are in parentheses before the element symbol, and an element should not occur in a formula both with and without an isotope number. In difference formulas, counts can be zero or negative. remark: Annotation note 05 - In entries with an isotope indicator in the formula, average masses are meaningless and are assigned the value equal to the monoisotopic mass, but rounded to a lower precision; monoisotopic masses are calculated by using the masses for the indicated isotopes and the most common isotopes for other elements without isotope indicators in the formulas. remark: Annotation note 06 - For cross-link modifications, the number following "Cross-link" in the comment record indicates the number of amino acid residues that appear in the origin record, used to check the difference formula and masses. This usage differs from RESID, where the cross-link number indicates the maximum number of peptide chains that can be cross-linked. remark: Annotation note 07 - The synonym cross-reference "MOD:old name" has been replaced by "MOD:alternate name". remark: Annotation note 08 - The DeltaMass listings for free amino acids have been removed. Most Unimod entries that have not been "approved" have by general agreement not been incorporated unless there has been a request for a specific term by a PRIDE submitter. remark: Annotation note 09 - The Open Mass Spectrometry Search Algorithm, OMSSA, enumerated list of modifications are being incorporated. The string values are synonyms with the synonymtypedef "OMSSA-label", and their integer values (which are supposed to be stable) are definition cross-references. remark: Annotation note 10 - GNOme is the Glycan Naming and Subsumption Ontology (https://gnome.glyomics.org/), an ontology for the support of glycomics. PSI-MOD does not have all possible glycans in its entries, just the ones that are noted to be on proteins and have been requested for addition. GNOme uses GlyTouCan (http://glytoucan.org/) to provide stable accessions for glycans described at varyious degrees of characterization, including compositions (no linkage) and topologies (no carbon bond positions or anomeric configurations). [Term] id: MOD:00000 name: protein modification def: "Covalent modification of, or a change resulting in an alteration of the measured molecular mass of, a peptide or protein amino acid residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModRes" EXACT PSI-MOD-label [] [Term] id: MOD:00001 name: alkylated residue def: "A protein modification that effectively replaces a hydrogen atom with an alkyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "AlkylRes" EXACT PSI-MOD-label [] xref: Source: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00002 name: O-glycosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-glycosylserine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OGlycoSer" EXACT PSI-MOD-label [] xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00396 ! O-glycosylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00003 name: Unimod def: "Entry from Unimod." [PubMed:18688235] comment: This term is for organizational use only and should not be assigned. [JSG] xref: Source: "none" is_a: MOD:00032 ! uncategorized protein modification [Term] id: MOD:00004 name: artifact def: "Artifact entry from Unimod - OBSOLETE because organizational use is no longer required." [PubMed:18688235] is_obsolete: true [Term] id: MOD:00005 name: O-glycosyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O3-glycosylthreonine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OGlycoThr" EXACT PSI-MOD-label [] xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00396 ! O-glycosylated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00006 name: N-glycosylated residue def: "A protein modification that effectively replaces a residue hydrogen atom on a nitrogen with a carbohydrate-like group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NGlycoRes" EXACT PSI-MOD-label [] xref: Source: "none" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00007 name: selenium substitution for sulfur def: "A protein modification that effectively substitutes a selenium atom for a sulfur atom." [PubMed:12148805, Unimod:162] synonym: "Delta:S(-1)Se(1)" RELATED PSI-MS-label [] synonym: "Se(S)Res" EXACT PSI-MOD-label [] synonym: "Selenium replaces sulphur" RELATED Unimod-description [] xref: DiffAvg: "46.91" xref: DiffFormula: "C 0 H 0 N 0 O 0 S -1 Se 1" xref: DiffMono: "47.944450" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:162" is_a: MOD:00745 ! selenium containing residue [Term] id: MOD:00008 name: common def: "Entry from Unimod representing one or more entries in RESID. OBSOLETE because organizational use is no longer required." [PubMed:18688235] is_obsolete: true [Term] id: MOD:00009 name: natural residue def: "A protein modification that removes a residue, or inserts or replaces a residue with a natural, standard or nonstandard, encoded residue." [PubMed:6692818, RESID:AA0000] subset: PSI-MOD-slim synonym: "alpha-amino acid" EXACT RESID-name [] synonym: "Res" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "natural" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00010 name: L-alanine residue def: "A protein modification that effectively converts a source amino acid residue to an L-alanine." [ChEBI:29948, DeltaMass:0, PubMed:6692818, RESID:AA0001] subset: PSI-MOD-slim synonym: "(2S)-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "2-aminopropionic acid" EXACT RESID-alternate [] synonym: "2-azanylpropanoic acid" EXACT RESID-alternate [] synonym: "Ala" EXACT PSI-MOD-label [] synonym: "alpha-alanine" EXACT RESID-alternate [] synonym: "alpha-aminopropionic acid" EXACT RESID-alternate [] synonym: "L-alanine" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 3 H 5 N 1 O 1" xref: MassAvg: "71.08" xref: MassMono: "71.037114" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00570 ! residues isobaric at 71.037114 Da is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00011 name: L-arginine residue def: "A protein modification that effectively converts a source amino acid residue to an L-arginine." [ChEBI:29952, DeltaMass:0, PubMed:518876, PubMed:6692818, RESID:AA0002] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-[(diaminomethylidene)amino]pentanoic acid" EXACT RESID-systematic [] synonym: "2-amino-5-(carbamimidamido)pentanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-5-[(aminoiminomethyl)amino]pentanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-5-guanidinopentanoic acid" EXACT RESID-alternate [] synonym: "2-amino-5-guanidinovaleric acid" EXACT RESID-alternate [] synonym: "2-azanyl-5-[bis(azanyl)methylideneazanyl]pentanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-delta-guanidinovaleric acid" EXACT RESID-alternate [] synonym: "Arg" EXACT PSI-MOD-label [] synonym: "L-arginine" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 12 N 4 O 1" xref: MassAvg: "156.19" xref: MassMono: "156.101111" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00012 name: L-asparagine residue def: "A protein modification that effectively converts a source amino acid residue to an L-asparagine." [ChEBI:29956, DeltaMass:0, PubMed:15736973, PubMed:5681232, PubMed:6692818, PubMed:9789001, RESID:AA0003] subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-butanediamic acid" EXACT RESID-systematic [] synonym: "2,4-bis(azanyl)-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "2,4-diamino-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-carbamoylpropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-4-butanediamic acid" EXACT RESID-alternate [] synonym: "2-aminosuccinamic acid" EXACT RESID-alternate [] synonym: "2-aminosuccinic acid 4-amide" EXACT RESID-alternate [] synonym: "alpha-amino-beta-carbamylpropionic acid" EXACT RESID-alternate [] synonym: "alpha-aminosuccinamic acid" EXACT RESID-alternate [] synonym: "Asn" EXACT PSI-MOD-label [] synonym: "aspartic acid 4-amide" EXACT RESID-alternate [] synonym: "aspartic acid beta-amide" EXACT RESID-alternate [] synonym: "beta-asparagine" EXACT RESID-alternate [] synonym: "L-asparagine" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 4 H 6 N 2 O 2" xref: MassAvg: "114.10" xref: MassMono: "114.042927" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00013 name: L-aspartic acid residue def: "A protein modification that effectively converts a source amino acid residue to an L-aspartic acid." [ChEBI:29958, DeltaMass:0, PubMed:1097438, PubMed:339692, PubMed:4399050, PubMed:5764436, PubMed:6692818, PubMed:8089117, PubMed:9521123, PubMed:9582379, RESID:AA0004] subset: PSI-MOD-slim synonym: "(2S)-2-aminobutanedioic acid" EXACT RESID-systematic [] synonym: "2-azanylbutanedioic acid" EXACT RESID-alternate [] synonym: "aminosuccinic acid" EXACT RESID-alternate [] synonym: "Asp" EXACT PSI-MOD-label [] synonym: "L-aspartic acid" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00014 name: L-cysteine residue def: "A protein modification that effectively converts a source amino acid residue to an L-cysteine." [ChEBI:29950, DeltaMass:0, PubMed:1310545, PubMed:15790858, PubMed:3447159, PubMed:6692818, PubMed:7338899, RESID:AA0005] comment: From DeltaMass: Average Mass: 121. subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "(R)-cysteine" EXACT RESID-alternate [] synonym: "2-amino-3-mercaptopropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-mercaptopropionic acid" EXACT RESID-alternate [] synonym: "2-azanyl-3-sulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "3-mercapto-L-alanine" EXACT RESID-alternate [] synonym: "alpha-amino-beta-mercaptopropanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-mercaptopropionic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-thiolpropionic acid" EXACT RESID-alternate [] synonym: "beta-mercaptoalanine" EXACT RESID-alternate [] synonym: "Cys" EXACT PSI-MOD-label [] synonym: "Cysteine (C, Cys)" EXACT DeltaMass-label [] synonym: "half-cystine" EXACT RESID-alternate [] synonym: "L-(+)-cysteine" EXACT RESID-alternate [] synonym: "L-cysteine" EXACT RESID-name [] synonym: "thioserine" EXACT RESID-alternate [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0 S 0" xref: DiffMono: "0.000000" xref: Formula: "C 3 H 5 N 1 O 1 S 1" xref: MassAvg: "103.14" xref: MassMono: "103.009185" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00015 name: L-glutamic acid residue def: "A protein modification that effectively converts a source amino acid residue to an L-glutamic acid." [ChEBI:29972, DeltaMass:0, PubMed:1881881, PubMed:4565668, PubMed:4922541, PubMed:6692818, PubMed:9326660, PubMed:957425, RESID:AA0006] subset: PSI-MOD-slim synonym: "(2S)-2-aminopentanedioic acid" EXACT RESID-systematic [] synonym: "1-aminopropane-1,3-dicarboxylic acid" EXACT RESID-alternate [] synonym: "2-aminoglutaric acid" EXACT RESID-alternate [] synonym: "2-azanylpentanedioic acid" EXACT RESID-alternate [] synonym: "alpha-aminoglutaric acid" EXACT RESID-alternate [] synonym: "Glu" EXACT PSI-MOD-label [] synonym: "glutaminic acid" EXACT RESID-alternate [] synonym: "L-glutamic acid" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00016 name: L-glutamine residue def: "A protein modification that effectively converts a source amino acid residue to an L-glutamine." [ChEBI:30011, DeltaMass:0, PubMed:3340166, PubMed:6692818, PubMed:9342308, RESID:AA0007] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-pentanediamic acid" EXACT RESID-systematic [] synonym: "2,5-bis(azanyl)-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "2,5-diamino-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "2-amino-4-carbamoylbutanoic acid" EXACT RESID-alternate [] synonym: "2-aminoglutaramic acid" EXACT RESID-alternate [] synonym: "alpha-amino-gamma-carbamylbutyric acid" EXACT RESID-alternate [] synonym: "Gln" EXACT PSI-MOD-label [] synonym: "glutamic acid 5-amide" EXACT RESID-alternate [] synonym: "glutamic acid gamma-amide" EXACT RESID-alternate [] synonym: "glutamide" EXACT RESID-alternate [] synonym: "L-glutamine" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 5 H 8 N 2 O 2" xref: MassAvg: "128.13" xref: MassMono: "128.058578" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00894 ! residues isobaric at 128.058578 Da is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00017 name: glycine residue def: "A protein modification that effectively converts a source amino acid residue to a glycine." [ChEBI:29947, DeltaMass:0, PubMed:1310545, PubMed:6692818, RESID:AA0008] subset: PSI-MOD-slim synonym: "aminoacetic acid" EXACT RESID-alternate [] synonym: "aminoethanoic acid" EXACT RESID-systematic [] synonym: "azanylethanoic acid" EXACT RESID-alternate [] synonym: "Gly" EXACT PSI-MOD-label [] synonym: "glycine" EXACT RESID-name [] synonym: "glycocoll" EXACT RESID-alternate [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 2 H 3 N 1 O 1" xref: MassAvg: "57.05" xref: MassMono: "57.021464" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00018 name: L-histidine residue def: "A protein modification that effectively converts a source amino acid residue to an L-histidine." [ChEBI:29979, DeltaMass:0, PubMed:14342316, PubMed:2722967, PubMed:512, PubMed:5460889, PubMed:6129252, PubMed:6692818, PubMed:6876174, RESID:AA0009] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(1H-imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-amino-3-(1H-imidazol-5-yl)propanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-azanyl-3-(1H-imidazol-4-yl)propanoic acid" EXACT RESID-alternate [] synonym: "2-azanyl-3-(1H-imidazol-5-yl)propanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "4-(2-amino-2-carboxyethyl)imidazole" EXACT RESID-alternate [] synonym: "alpha-amino-beta-(4-imidazole)propionic acid" EXACT RESID-alternate [] synonym: "glyoxaline-5-alanine" EXACT RESID-alternate [] synonym: "His" EXACT PSI-MOD-label [] synonym: "L-histidine" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 7 N 3 O 1" xref: MassAvg: "137.14" xref: MassMono: "137.058912" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00019 name: L-isoleucine residue def: "A protein modification that effectively converts a source amino acid residue to an L-isoleucine." [ChEBI:30009, DeltaMass:0, PubMed:6692818, RESID:AA0010] subset: PSI-MOD-slim synonym: "(2S,3S)-2-amino-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-methylpentanoic acid" EXACT RESID-alternate [] synonym: "3-methyl-norvaline" EXACT RESID-alternate [] synonym: "alpha-amino-beta-methylvaleric acid" EXACT RESID-alternate [] synonym: "Ile" EXACT PSI-MOD-label [] synonym: "Isoleucyl" EXACT DeltaMass-label [] synonym: "L-erythro-isoleucine" EXACT RESID-alternate [] synonym: "L-isoleucine" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00306 ! residues isobaric at 113.084064 Da is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00020 name: L-leucine residue def: "A protein modification that effectively converts a source amino acid residue to an L-leucine." [ChEBI:30006, DeltaMass:0, PubMed:11478885, PubMed:6692818, RESID:AA0011] subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-4-methylpentanoic acid" EXACT RESID-alternate [] synonym: "4-methyl-norvaline" EXACT RESID-alternate [] synonym: "alpha-amino-gamma-methylvaleric acid" EXACT RESID-alternate [] synonym: "alpha-aminoisocaproic acid" EXACT RESID-alternate [] synonym: "L-leucine" EXACT RESID-name [] synonym: "Leu" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00306 ! residues isobaric at 113.084064 Da is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00021 name: L-lysine residue def: "A protein modification that effectively converts a source amino acid residue to L-lysine." [ChEBI:29967, DeltaMass:0, PubMed:3106962, PubMed:6120171, PubMed:6692818, RESID:AA0012] subset: PSI-MOD-slim synonym: "(2S)-2,6-diaminohexanoic acid" EXACT RESID-systematic [] synonym: "2,6-bis(azanyl)hexanoic acid" EXACT RESID-alternate [] synonym: "6-amino-L-norleucine" EXACT RESID-alternate [] synonym: "ACT_SITE Schiff-base intermediate with substrate" EXACT UniProt-feature [] synonym: "alpha,epsilon-diaminocaproic acid" EXACT RESID-alternate [] synonym: "L-lysine" EXACT RESID-name [] synonym: "Lys" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 12 N 2 O 1" xref: MassAvg: "128.18" xref: MassMono: "128.094963" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00893 ! residues isobaric at 128.0-128.1 is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00022 name: L-methionine residue def: "A protein modification that effectively converts a source amino acid residue to L-methionine." [ChEBI:29983, DeltaMass:0, PubMed:6411710, PubMed:6692818, RESID:AA0013] comment: From DeltaMass: Average Mass: 149 subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-amino-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "2-amino-4-(methylthio)butyric acid" EXACT RESID-alternate [] synonym: "2-azanyl-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-gamma-methylmercaptobutyric acid" EXACT RESID-alternate [] synonym: "alpha-amino-gamma-methylthiobutyric acid" EXACT RESID-alternate [] synonym: "gamma-methylthio-alpha-aminobutyric acid" EXACT RESID-alternate [] synonym: "L-(-)-methionine" EXACT RESID-alternate [] synonym: "L-methionine" EXACT RESID-name [] synonym: "Met" EXACT PSI-MOD-label [] synonym: "S-methyl-L-homocysteine" EXACT RESID-alternate [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0 S 0" xref: DiffMono: "0.000000" xref: Formula: "C 5 H 9 N 1 O 1 S 1" xref: MassAvg: "131.19" xref: MassMono: "131.040485" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00023 name: L-phenylalanine residue def: "A protein modification that effectively converts a source amino acid residue to L-phenylalanine." [ChEBI:29997, DeltaMass:0, PubMed:6692818, RESID:AA0014] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-phenylpropanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-phenylpropionic acid" EXACT RESID-alternate [] synonym: "L-phenylalanine" EXACT RESID-name [] synonym: "Phe" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 9 H 9 N 1 O 1" xref: MassAvg: "147.18" xref: MassMono: "147.068414" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00024 name: L-proline residue def: "A protein modification that effectively converts a source amino acid residue to L-proline." [ChEBI:30017, DeltaMass:0, PubMed:6692818, PubMed:8547259, RESID:AA0015] subset: PSI-MOD-slim synonym: "(2S)-2-pyrrolidinecarboxylic acid" EXACT RESID-systematic [] synonym: "L-proline" EXACT RESID-name [] synonym: "Pro" EXACT PSI-MOD-label [] synonym: "pyrrolidine-2-carboxylic acid" EXACT RESID-alternate [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 5 H 7 N 1 O 1" xref: MassAvg: "97.12" xref: MassMono: "97.052764" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00025 name: L-serine residue def: "A protein modification that effectively converts a source amino acid residue to L-serine." [ChEBI:29999, DeltaMass:0, PubMed:4399050, PubMed:6692818, RESID:AA0016] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-hydroxypropanoic acid" EXACT RESID-alternate [] synonym: "3-hydroxy-L-alanine" EXACT RESID-alternate [] synonym: "alpha-amino-beta-hydroxypropionic acid" EXACT RESID-alternate [] synonym: "beta-hydroxyalanine" EXACT RESID-alternate [] synonym: "L-serine" EXACT RESID-name [] synonym: "Ser" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 3 H 5 N 1 O 2" xref: MassAvg: "87.08" xref: MassMono: "87.032028" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00026 name: L-threonine residue def: "A protein modification that effectively converts a source amino acid residue to L-threonine." [ChEBI:30013, DeltaMass:0, PubMed:2989287, PubMed:6692818, RESID:AA0017] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-hydroxybutanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-hydroxybutanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-hydroxybutyric acid" EXACT RESID-alternate [] synonym: "beta-methylserine" EXACT RESID-alternate [] synonym: "L-threo-threonine" EXACT RESID-alternate [] synonym: "L-threonine" EXACT RESID-name [] synonym: "Thr" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 4 H 7 N 1 O 2" xref: MassAvg: "101.10" xref: MassMono: "101.047678" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00027 name: L-tryptophan residue def: "A protein modification that effectively converts a source amino acid residue to L-tryptophan." [ChEBI:29954, DeltaMass:0, PubMed:2059637, PubMed:6692818, PubMed:9324768, RESID:AA0018] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-(1H-indol-3-yl)propanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-(3-indolyl)propionoic acid" EXACT RESID-alternate [] synonym: "beta(3-indolyl)alanine" EXACT RESID-alternate [] synonym: "L-tryptophan" EXACT RESID-name [] synonym: "Trp" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 11 H 10 N 2 O 1" xref: MassAvg: "186.21" xref: MassMono: "186.079313" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00028 name: L-tyrosine residue def: "A protein modification that effectively converts a source amino acid residue to L-tyrosine." [ChEBI:29975, DeltaMass:0, PubMed:2190093, PubMed:2542938, PubMed:5550972, PubMed:6061414, PubMed:6120171, PubMed:6692818, RESID:AA0019] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(4-hydoxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-(4-hydoxyphenyl)propanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-(para-hydroxyphenyl)propionic acid" EXACT RESID-alternate [] synonym: "L-tyrosine" EXACT RESID-name [] synonym: "p-tyrosine" EXACT RESID-alternate [] synonym: "para-hydroxyphenylalanine" EXACT RESID-alternate [] synonym: "Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 9 H 9 N 1 O 2" xref: MassAvg: "163.18" xref: MassMono: "163.063329" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00029 name: L-valine residue def: "A protein modification that effectively converts a source amino acid residue to an L-valine." [ChEBI:30015, DeltaMass:0, PubMed:6692818, RESID:AA0020] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-methylbutanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-methylbutyric acid" EXACT RESID-alternate [] synonym: "alpha-aminoisovaleric acid" EXACT RESID-alternate [] synonym: "L-valine" EXACT RESID-name [] synonym: "Val" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 5 H 9 N 1 O 1" xref: MassAvg: "99.13" xref: MassMono: "99.068414" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01441 ! natural, standard, encoded residue [Term] id: MOD:00030 name: N-formyl-L-methionine residue def: "A protein modification that effectively converts a source amino acid residue to an N-formyl-L-methionine, a natural pretranslational modification." [ChEBI:33718, OMSSA:22, PubMed:10825024, PubMed:11152118, PubMed:2165784, PubMed:3042771, PubMed:8758896, RESID:AA0021#FMET] subset: PSI-MOD-slim synonym: "(2S)-2-formylamino-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-formamido-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "2-formylamino-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "2-formylazanyl-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "fMet" EXACT PSI-MOD-label [] synonym: "FormylMet" RELATED PSI-MS-label [] synonym: "MOD_RES N-formylmethionine" EXACT UniProt-feature [] synonym: "N-formyl-L-methionine" EXACT RESID-name [] synonym: "N-formylated L-methionine" EXACT PSI-MOD-alternate [] synonym: "nformylmet" EXACT OMSSA-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0 S 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 10 N 1 O 2 S 1" xref: MassAvg: "160.21" xref: MassMono: "160.043225" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00868 ! natural, non-standard encoded residue [Term] id: MOD:00031 name: L-selenocysteine residue def: "A protein modification that effectively converts a source amino acid residue to an L-selenocysteine, a natural pretranslational modification." [ChEBI:30000, PubMed:10523135, PubMed:1066676, PubMed:2037562, PubMed:2963330, PubMed:4734725, PubMed:6076213, PubMed:6217842, PubMed:6714945, RESID:AA0022] subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-selanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-selanylpropanoic acid" EXACT RESID-alternate [] synonym: "3-selenylalanine" EXACT RESID-alternate [] synonym: "L-selenocysteine" EXACT RESID-name [] synonym: "NON_STD Selenocysteine" EXACT UniProt-feature [] synonym: "Sec" EXACT PSI-MOD-label [] synonym: "SeCys" EXACT RESID-alternate [] synonym: "selenium cysteine" EXACT RESID-alternate [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0 Se 0" xref: DiffMono: "0.000000" xref: Formula: "C 3 H 5 N 1 O 1 Se 1" xref: MassAvg: "150.05" xref: MassMono: "150.953635" xref: Origin: "U" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00745 ! selenium containing residue is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:00868 ! natural, non-standard encoded residue [Term] id: MOD:00032 name: uncategorized protein modification def: "A protein modification that is not chemically categorized." [PubMed:18688235] comment: This term is for organizational use only and should not be assigned. [JSG] xref: Source: "none" is_a: MOD:00000 ! protein modification [Term] id: MOD:00033 name: crosslinked residues def: "A protein modification that crosslinks two or more amino acid residues with covalent bonds." [PubMed:18688235] comment: The covalent bond is formed directly between sidechain atoms. If non-aminoacid atoms are involved in connecting two or more peptide chain residues peptide chain, the connection is classified as a multivalent binding site. subset: PSI-MOD-slim synonym: "XLNK-Res-Res" EXACT PSI-MOD-label [] xref: Source: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00034 name: L-cystine (cross-link) def: "A protein modification that effectively cross-links two L-cysteine residues to form L-cystine." [ChEBI:16283, DeltaMass:0, PubMed:1988019, PubMed:2001356, PubMed:2076469, PubMed:3083866, PubMed:366603, PubMed:7918467, PubMed:8344916, RESID:AA0025#CYS2] comment: Cross-link 2; for formation of a disulfide bond between a peptide cysteine and a free cysteine, see MOD:00765. subset: PSI-MOD-slim synonym: "(2R,2'R)-3,3'-disulfane-1,2-diylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "2-amino-3-(2-amino-2-carboxy-ethyl)disulfanyl-propanoic acid" RELATED RESID-misnomer [] synonym: "3,3'-disulfane-1,2-diylbis(2-azanylpropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-dithiobis(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-dithiobisalanine" EXACT RESID-alternate [] synonym: "3,3'-dithiodialanine" EXACT RESID-alternate [] synonym: "beta,beta'-diamino-beta,beta'-dicarboxydiethyldisulfide" EXACT RESID-alternate [] synonym: "beta,beta'-dithiodialanine" EXACT RESID-alternate [] synonym: "bis(alpha-aminopropionic acid)-beta-disulfide" EXACT RESID-alternate [] synonym: "bis(beta-amino-beta-carboxyethyl)disulfide" EXACT RESID-alternate [] synonym: "Cys2" EXACT PSI-MOD-label [] synonym: "Cystine ((Cys)2)" EXACT DeltaMass-label [] synonym: "dicysteine" EXACT RESID-alternate [] synonym: "DISULFID" EXACT UniProt-feature [] synonym: "DISULFID Interchain" EXACT UniProt-feature [] synonym: "L-cystine" EXACT RESID-name [] synonym: "XLNK-SCys-SCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 2 S 2" xref: MassAvg: "204.26" xref: MassMono: "204.002720" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00689 ! disulfide crosslinked residues [Term] id: MOD:00035 name: (2S,3R)-3-hydroxyasparagine def: "A protein modification that effectively converts an L-asparagine residue to (2S,3R)-3-hydroxyasparagine." [PubMed:11823643, PubMed:2820791, RESID:AA0026, ChEBI:141853] subset: PSI-MOD-slim synonym: "(2S,3R)-2,4-diamino-3-hydroxy-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "(2S,3R)-2-amino-3-hydroxy-4-butanediamic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-3-hydroxyasparagine" EXACT RESID-name [] synonym: "(3R)3HyAsn" EXACT PSI-MOD-label [] synonym: "2-azanyl-3-hydroxy-4-butanediamic acid" EXACT RESID-alternate [] synonym: "erythro-beta-hydroxylated L-asparagine" EXACT PSI-MOD-alternate [] synonym: "L-erythro-beta-hydroxyasparagine" EXACT RESID-alternate [] synonym: "MOD_RES (3R)-3-hydroxyasparagine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 4 H 6 N 2 O 3" xref: MassAvg: "130.10" xref: MassMono: "130.037842" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0369" is_a: MOD:01688 ! 3-hydroxy-L-asparagine [Term] id: MOD:00036 name: (2S,3R)-3-hydroxyaspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to (2S,3R)-3-hydroxyaspartic acid." [OMSSA:59, PubMed:6572939, PubMed:6871167, PubMed:8355279, RESID:AA0027, Unimod:35#D, ChEBI:141848] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-hydroxybutanedioic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-3-hydroxyaspartic acid" EXACT RESID-name [] synonym: "(3R)3HyAsp" EXACT PSI-MOD-label [] synonym: "2-amino-3-hydroxysuccinic acid" EXACT RESID-alternate [] synonym: "2-azanyl-3-hydroxybutanedioic acid" EXACT RESID-alternate [] synonym: "3-hydroxyaspartic acid" EXACT RESID-alternate [] synonym: "erythro-beta-hydroxylated L-aspartic acid" EXACT PSI-MOD-alternate [] synonym: "hydroxylationd" EXACT OMSSA-label [] synonym: "L-erythro-beta-hydroxyaspartic acid" EXACT RESID-alternate [] synonym: "MOD_RES (3R)-3-hydroxyaspartate" EXACT UniProt-feature [] synonym: "Oxidation" RELATED PSI-MS-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 4 H 5 N 1 O 4" xref: MassAvg: "131.09" xref: MassMono: "131.021858" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" xref: UniProt: "PTM-0371" is_a: MOD:01926 ! 3-hydroxy-L-aspartic acid [Term] id: MOD:00037 name: 5-hydroxy-L-lysine def: "A protein modification that effectively converts an L-lysine residue to one of the diastereomeric 5-hydroxy-L-lysine residues." [ChEBI:60175, PubMed:18688235] subset: PSI-MOD-slim synonym: "5-hydroxylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "5HyLys" EXACT PSI-MOD-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 12 N 2 O 2" xref: MassAvg: "144.17" xref: MassMono: "144.089878" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0044" is_a: MOD:01047 ! monohydroxylated lysine [Term] id: MOD:00038 name: 3-hydroxy-L-proline def: "A protein modification that effectively converts an L-proline residue to 3-hydroxy-L-proline." [ChEBI:16889, PubMed:2400108, PubMed:3734192, PubMed:4343807, RESID:AA0029] subset: PSI-MOD-slim synonym: "(2S,3S)-3-hydroxypyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "3-hydroxy-L-proline" EXACT RESID-name [] synonym: "3-hydroxylated L-proline" EXACT PSI-MOD-alternate [] synonym: "3-trans-hydroxy-L-proline" EXACT RESID-alternate [] synonym: "3HyPro" EXACT PSI-MOD-label [] synonym: "beta-hydroxypyrrolidine-alpha-carboxylic acid" EXACT RESID-alternate [] synonym: "L-threo-3-hydroxyproline" EXACT RESID-alternate [] synonym: "MOD_RES 3-hydroxyproline" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0030" is_a: MOD:01024 ! monohydroxylated proline [Term] id: MOD:00039 name: 4-hydroxy-L-proline def: "A protein modification that effectively converts an L-proline residue to 4-hydroxy-L-proline" [ChEBI:18095, PubMed:11292863, PubMed:2400108, PubMed:3734192, RESID:AA0030] subset: PSI-MOD-slim synonym: "(2S,4R)-4-hydroxypyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "4-hydroxy-L-proline" EXACT RESID-name [] synonym: "4-hydroxylated L-proline" EXACT PSI-MOD-alternate [] synonym: "4-hydroxyproline" EXACT RESID-alternate [] synonym: "4-trans-hydroxy-L-proline" EXACT RESID-alternate [] synonym: "4HyPro" EXACT PSI-MOD-label [] synonym: "gamma-hydroxypyrrolidine-alpha-carboxylic acid" EXACT RESID-alternate [] synonym: "L-threo-4-hydroxyproline" EXACT RESID-alternate [] synonym: "MOD_RES 4-hydroxyproline" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0043" is_a: MOD:01024 ! monohydroxylated proline [Term] id: MOD:00040 name: 2-pyrrolidone-5-carboxylic acid (Gln) def: "A protein modification that effectively converts an L-glutamine residue to 2-pyrrolidone-5-carboxylic acid." [ChEBI:30652, DeltaMass:123, OMSSA:110, PubMed:10214721, PubMed:1836357, PubMed:26343, PubMed:3473473, RESID:AA0031#GLN, Unimod:28#Q] comment: DeltaMass gives a formula C 5 H 5 N 1 O 2 with mass 111.1 subset: PSI-MOD-slim synonym: "(2S)-5-oxo-2-pyrrolidinecarboxylic acid" EXACT RESID-systematic [] synonym: "2-oxopyrrolidine-5-carboxylic acid" EXACT RESID-alternate [] synonym: "2-pyrrolidone-5-carboxylic acid" EXACT RESID-name [] synonym: "5-oxoproline" EXACT RESID-alternate [] synonym: "5-oxopyrrolidine-2-carboxylic acid" EXACT RESID-alternate [] synonym: "5-pyrrolidone-2-carboxylic acid" EXACT RESID-alternate [] synonym: "Gln->pyro-Glu" RELATED PSI-MS-label [] synonym: "MOD_RES Pyrrolidone carboxylic acid" EXACT UniProt-feature [] synonym: "N-pyrrolidone carboxyl (N terminus)" EXACT DeltaMass-label [] synonym: "ntermpeppyroq" EXACT OMSSA-label [] synonym: "PCA" EXACT RESID-alternate [] synonym: "PyrGlu(Gln)" EXACT PSI-MOD-label [] synonym: "Pyro-glu from Q" RELATED Unimod-description [] synonym: "pyroglutamic acid" EXACT RESID-alternate [] synonym: "Pyroglutamic Acid formed from Gln" EXACT DeltaMass-label [] synonym: "Pyroglutamyl" EXACT DeltaMass-label [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 5 H 6 N 1 O 2" xref: MassAvg: "112.11" xref: MassMono: "112.039853" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:28" xref: UniProt: "PTM-0261" is_a: MOD:00907 ! modified L-glutamine residue is_a: MOD:01048 ! 2-pyrrolidone-5-carboxylic acid is_a: MOD:01160 ! deaminated residue [Term] id: MOD:00041 name: L-gamma-carboxyglutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to L-gamma-carboxyglutamic acid." [DeltaMass:217, OMSSA:48, PubMed:10517147, PubMed:1807167, PubMed:3263814, PubMed:4528109, PubMed:7457858, PubMed:8135347, PubMed:8868490, PubMed:9188685, RESID:AA0032, Unimod:299#E] comment: DeltaMass has an incorrect formula C 6 H 7 N 5 O 1 (N and O reversed) with mass 173. subset: PSI-MOD-slim synonym: "(3S)-3-aminopropane-1,1,3-tricarboxylic acid" EXACT RESID-systematic [] synonym: "(3S)-3-azanylpropane-1,1,3-tricarboxylic acid" EXACT RESID-alternate [] synonym: "1-carboxyglutamic acid" RELATED RESID-misnomer [] synonym: "3-amino-1,1,3-propanetricarboxylic acid" EXACT RESID-alternate [] synonym: "3-azanylpropane-1,1,3-tricarboxylic acid" EXACT RESID-alternate [] synonym: "4-carboxyglutamic acid" EXACT RESID-alternate [] synonym: "4CbxGlu" EXACT PSI-MOD-label [] synonym: "Carboxy" RELATED PSI-MS-label [] synonym: "Carboxy" RELATED Unimod-interim [] synonym: "Carboxy Glutamyl" EXACT DeltaMass-label [] synonym: "Carboxylation" RELATED Unimod-description [] synonym: "gamma-carboxylated L-glutamic acid" EXACT PSI-MOD-alternate [] synonym: "gammacarboxyle" EXACT OMSSA-label [] synonym: "L-gamma-carboxyglutamic acid" EXACT RESID-name [] synonym: "MOD_RES 4-carboxyglutamate" EXACT UniProt-feature [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 H 0 N 0 O 2" xref: DiffMono: "43.989829" xref: Formula: "C 6 H 7 N 1 O 5" xref: MassAvg: "173.12" xref: MassMono: "173.032422" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:299" xref: UniProt: "PTM-0039" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01152 ! carboxylated residue [Term] id: MOD:00042 name: L-aspartic 4-phosphoric anhydride def: "A protein modification that effectively converts an L-aspartic acid residue to L-aspartic 4-phosphoric anhydride." [ChEBI:15836, PubMed:4357737, RESID:AA0033, Unimod:21#D] synonym: "(2S)-2-amino-4-oxo-4-(phosphonooxy)butanoic acid" EXACT RESID-systematic [] synonym: "2-aminobutanedioic 4-phosphoric anhydride" EXACT RESID-alternate [] synonym: "2-azanyl-4-oxo-4-(phosphonooxy)butanoic acid" EXACT RESID-alternate [] synonym: "4-oxo-O-phosphono-L-homoserine" EXACT RESID-alternate [] synonym: "4-phosphoaspartic acid" EXACT RESID-alternate [] synonym: "4-phosphorylated L-aspartatic acid" EXACT PSI-MOD-alternate [] synonym: "ACT_SITE 4-aspartylphosphate intermediate" EXACT UniProt-feature [] synonym: "beta-aspartyl phosphate" EXACT RESID-alternate [] synonym: "L-aspartic 4-phosphoric anhydride" EXACT RESID-name [] synonym: "MOD_RES 4-aspartylphosphate" EXACT UniProt-feature [] synonym: "PAsp" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phosphorylation" RELATED Unimod-description [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 4 H 6 N 1 O 6 P 1" xref: MassAvg: "195.07" xref: MassMono: "194.993274" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:21" xref: UniProt: "PTM-0038" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01455 ! O-phosphorylated residue [Term] id: MOD:00043 name: S-phospho-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-phospho-L-cysteine." [PubMed:3142516, PubMed:7961745, PubMed:8128219, RESID:AA0034, Unimod:21#C] synonym: "(2R)-2-amino-3-(phosphonosulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-(phosphonosulfanyl)propanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE Phosphocysteine intermediate" EXACT UniProt-feature [] synonym: "cysteine phosphate thioester" EXACT RESID-alternate [] synonym: "MOD_RES Phosphocysteine" EXACT UniProt-feature [] synonym: "PCys" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phosphorylation" RELATED Unimod-description [] synonym: "S-phospho-L-cysteine" EXACT RESID-name [] synonym: "S-phosphonocysteine" EXACT RESID-alternate [] synonym: "S-phosphorylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S3-phosphocysteine" EXACT RESID-alternate [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1 S 0" xref: DiffMono: "79.966331" xref: Formula: "C 3 H 6 N 1 O 4 P 1 S 1" xref: MassAvg: "183.12" xref: MassMono: "182.975515" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:21" xref: UniProt: "PTM-0251" is_a: MOD:00696 ! phosphorylated residue is_a: MOD:00777 ! residues isobaric at 182.96-182.98 Da is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00044 name: 1'-phospho-L-histidine def: "A protein modification that effectively converts an L-histidine residue to tele-phospho-L-histidine (N-tau-phospho-L-histidine, 1'-phospho-L-histidine)." [PubMed:11038361, PubMed:5642389, PubMed:6692818, RESID:AA0035] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(1-phosphono-1H-imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "1'-phospho-L-histidine" EXACT RESID-name [] synonym: "2-azanyl-3-(1-phosphono-1H-imidazol-4-yl)propanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE Tele-phosphohistidine intermediate" EXACT UniProt-feature [] synonym: "histidine-3-phosphate" RELATED RESID-misnomer [] synonym: "histidine-N(epsilon)-phosphate" EXACT RESID-alternate [] synonym: "histidine-N1'-phosphate" EXACT RESID-alternate [] synonym: "MOD_RES Tele-phosphohistidine" EXACT UniProt-feature [] synonym: "N(tau)-phosphohistidine" EXACT RESID-alternate [] synonym: "N1-phosphonohistidine" EXACT RESID-alternate [] synonym: "NE2-phosphonohistidine" EXACT RESID-alternate [] synonym: "Ntau-phosphorylated L-histidine" EXACT PSI-MOD-alternate [] synonym: "NtPHis" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phosphorylation" RELATED Unimod-description [] synonym: "tele-phosphohistidine" EXACT RESID-alternate [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 6 H 8 N 3 O 4 P 1" xref: MassAvg: "217.12" xref: MassMono: "217.025242" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0325" is_a: MOD:00890 ! phosphorylated L-histidine [Term] id: MOD:00045 name: 3'-phospho-L-histidine def: "A protein modification that effectively converts an L-histidine residue to pros-phospho-L-histidine (N-pi-phospho-L-histidine, 3'-phospho-L-histidine)." [PubMed:1549615, PubMed:5642389, PubMed:6692818, PubMed:7669763, PubMed:7803390, RESID:AA0036] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(3-phosphono-3H-imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-(3-phosphono-3H-imidazol-4-yl)propanoic acid" EXACT RESID-alternate [] synonym: "3'-phospho-L-histidine" EXACT RESID-name [] synonym: "ACT_SITE Pros-phosphohistidine intermediate" EXACT UniProt-feature [] synonym: "histidine-1-phosphate" RELATED RESID-misnomer [] synonym: "histidine-N(delta)-phosphate" EXACT RESID-alternate [] synonym: "histidine-N3'-phosphate" EXACT RESID-alternate [] synonym: "MOD_RES Pros-phosphohistidine" EXACT UniProt-feature [] synonym: "N(pi)-phosphohistidine" EXACT RESID-alternate [] synonym: "N3-phosphonohistidine" EXACT RESID-alternate [] synonym: "ND1-phosphonohistidine" EXACT RESID-alternate [] synonym: "Npi-phosphorylated L-histidine" EXACT PSI-MOD-alternate [] synonym: "NpPHis" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phosphorylation" RELATED Unimod-description [] synonym: "pros-phosphohistidine" EXACT RESID-alternate [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 6 H 8 N 3 O 4 P 1" xref: MassAvg: "217.12" xref: MassMono: "217.025242" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0260" is_a: MOD:00890 ! phosphorylated L-histidine [Term] id: MOD:00046 name: O-phospho-L-serine def: "A protein modification that effectively converts an L-serine residue to O-phospho-L-serine." [ChEBI:15811, DeltaMass:0, OMSSA:6, PubMed:12923550, PubMed:4065410, PubMed:8061611, RESID:AA0037, Unimod:21#S] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(phosphonooxy)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-hydroxypropanoic acid 3-phosphate" EXACT RESID-alternate [] synonym: "2-azanyl-3-(phosphonooxy)propanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE Phosphoserine intermediate" EXACT UniProt-feature [] synonym: "MOD_RES Phosphoserine" EXACT UniProt-feature [] synonym: "O-phospho-L-serine" EXACT RESID-name [] synonym: "O-phosphonoserine" EXACT RESID-alternate [] synonym: "O-phosphorylated L-serine" EXACT PSI-MOD-alternate [] synonym: "O3-phosphoserine" EXACT RESID-alternate [] synonym: "OPSer" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phospho Seryl" EXACT DeltaMass-label [] synonym: "Phosphorylation" RELATED Unimod-description [] synonym: "phosphorylations" EXACT OMSSA-label [] synonym: "serine phosphate ester" EXACT RESID-alternate [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 3 H 6 N 1 O 5 P 1" xref: MassAvg: "167.06" xref: MassMono: "166.998359" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:21" xref: UniProt: "PTM-0253" is_a: MOD:00771 ! residues isobaric at 166.98-167.00 Da is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01455 ! O-phosphorylated residue [Term] id: MOD:00047 name: O-phospho-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-phospho-L-threonine." [ChEBI:21967, DeltaMass:0, OMSSA:7, PubMed:12923550, PubMed:7678926, RESID:AA0038, Unimod:21#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(phosphonooxy)butanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-hydroxybutanoic acid 3-phosphate" EXACT RESID-alternate [] synonym: "2-azanyl-3-(phosphonooxy)butanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES Phosphothreonine" EXACT UniProt-feature [] synonym: "O-phospho-L-threonine" EXACT RESID-name [] synonym: "O-phosphorylated L-threonine" EXACT PSI-MOD-alternate [] synonym: "O3-phosphothreonine" EXACT RESID-alternate [] synonym: "OPThr" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phospho Threonyl" EXACT DeltaMass-label [] synonym: "Phosphorylation" RELATED Unimod-description [] synonym: "phosphorylationt" EXACT OMSSA-label [] synonym: "threonine phosphate ester" EXACT RESID-alternate [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 4 H 8 N 1 O 5 P 1" xref: MassAvg: "181.08" xref: MassMono: "181.014009" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:21" xref: UniProt: "PTM-0254" is_a: MOD:00773 ! residues isobaric at 181.00-181.02 Da is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01455 ! O-phosphorylated residue [Term] id: MOD:00048 name: O4'-phospho-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to O4'-phospho-L-tyrosine." [DeltaMass:0, OMSSA:8, PubMed:10226369, PubMed:1725475, RESID:AA0039, Unimod:21#Y] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(4-phosphonooxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(4-hydroxyphenyl)propanoic acid 4'-phosphate" EXACT RESID-alternate [] synonym: "2-azanyl-3-(4-phosphonooxyphenyl)propanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES Phosphotyrosine" EXACT UniProt-feature [] synonym: "O4'-phospho-L-tyrosine" EXACT RESID-name [] synonym: "O4'-phosphorylated L-tyrosine" EXACT PSI-MOD-alternate [] synonym: "O4-phosphotyrosine" EXACT RESID-alternate [] synonym: "OPTyr" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phospho Tyrosinyl" EXACT DeltaMass-label [] synonym: "Phosphorylation" RELATED Unimod-description [] synonym: "phosphorylationy" EXACT OMSSA-label [] synonym: "tyrosine phosphate" EXACT RESID-alternate [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 9 H 10 N 1 O 5 P 1" xref: MassAvg: "243.15" xref: MassMono: "243.029659" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:21" xref: UniProt: "PTM-0255" is_a: MOD:00774 ! residues isobaric at 243.02-243.03 Da is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01455 ! O-phosphorylated residue [Term] id: MOD:00049 name: 2'-[3-carboxamido-3-(trimethylammonio)propyl]-L-histidine def: "A protein modification that effectively converts an L-histidine residue to diphthamide." [ChEBI:16692, DeltaMass:122, PubMed:15316019, PubMed:7430147, RESID:AA0040, Unimod:375#H] synonym: "(2R)-1-amino-4-(4-[(2S)-2-amino-2-carboxyethyl]-1H-imidazol-2-yl)-N,N,N-trimethyl-1-oxobutan-2-aminium" EXACT RESID-systematic [] synonym: "(3-[4-(2-amino-2-carboxy-ethyl)-1H-imidazol-2-yl]-1-carbamoyl-propyl)-trimethylammonium" EXACT RESID-alternate [] synonym: "1-azanyl-4-(4-[2-azanyl-2-carboxyethyl]-1H-imidazol-2-yl)-N,N,N-trimethyl-1-oxobutan-2-azanium" EXACT RESID-alternate [] synonym: "2'-[3-carboxamido-3-(trimethylammonio)propyl]-L-histidine" EXACT RESID-name [] synonym: "2-[(R)-3-carboxamido-3-(trimethylammonio)propyl]-4-((S)-2-amino-2-carboxyethyl)-1H-imidazole" EXACT RESID-alternate [] synonym: "2-[3-carboxamido-3-(trimethylammonio)propyl]histidine" EXACT RESID-alternate [] synonym: "2-amino-3-[[2-(3-amino-3-carbamoyl-prop-1-enyl)-1,1,3-trimethyl-2,3-dihydroimidazol-5-yl]]propanoic acid" EXACT RESID-alternate [] synonym: "2-amino-4-[[5-(2-amino-2-carboxylato-ethyl)-1,1,3-trimethyl-2,3-dihydroimidazol-2-yl]]but-3-enamide" EXACT RESID-alternate [] synonym: "alpha-(aminocarbonyl)-4-(2-amino-2-carboxyethyl)-N,N,N-trimethyl-1H-imidazole-2-propanaminium" EXACT RESID-alternate [] synonym: "Diphth" EXACT PSI-MOD-label [] synonym: "Diphthamide" RELATED PSI-MS-label [] synonym: "Diphthamide" RELATED Unimod-description [] synonym: "diphthamide" EXACT RESID-alternate [] synonym: "diphthamide (from histidine)" EXACT DeltaMass-label [] synonym: "MOD_RES Diphthamide" EXACT UniProt-feature [] xref: DiffAvg: "143.21" xref: DiffFormula: "C 7 H 15 N 2 O 1" xref: DiffMono: "143.117890" xref: FormalCharge: "1+" xref: Formula: "C 13 H 22 N 5 O 2" xref: MassAvg: "280.35" xref: MassMono: "280.176801" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:375" xref: UniProt: "PTM-0118" is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:00050 name: N-acetyl-L-alanine def: "A protein modification that effectively converts an L-alanine residue to N-acetyl-L-alanine." [PubMed:363452, PubMed:4700463, RESID:AA0041] subset: PSI-MOD-slim synonym: "(2S)-2-(acetamido)propanoic acid" EXACT RESID-systematic [] synonym: "2-(acetylamino)propanoic acid" EXACT RESID-alternate [] synonym: "2-(acetylazanyl)propanoic acid" EXACT RESID-alternate [] synonym: "AcAla" EXACT PSI-MOD-label [] synonym: "acetylalanine" EXACT RESID-alternate [] synonym: "MOD_RES N-acetylalanine" EXACT UniProt-feature [] synonym: "N-acetyl-L-alanine" EXACT RESID-name [] synonym: "N-acetylated L-alanine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 5 H 8 N 1 O 2" xref: MassAvg: "114.12" xref: MassMono: "114.055504" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0199" is_a: MOD:00901 ! modified L-alanine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00051 name: N-acetyl-L-aspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to N-acetyl-L-aspartic acid." [ChEBI:21547, PubMed:1560020, PubMed:2395459, RESID:AA0042] subset: PSI-MOD-slim synonym: "(2S)-2-(acetamido)butanedioic acid" EXACT RESID-systematic [] synonym: "2-(acetylamino)butanedioic acid" EXACT RESID-alternate [] synonym: "2-(acetylazanyl)butanedioic acid" EXACT RESID-alternate [] synonym: "AcAsp" EXACT PSI-MOD-label [] synonym: "acetylaspartic acid" EXACT RESID-alternate [] synonym: "MOD_RES N-acetylaspartate" EXACT UniProt-feature [] synonym: "N-acetyl-L-aspartic acid" EXACT RESID-name [] synonym: "N-acetylated L-aspartic acid" EXACT PSI-MOD-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 6 H 8 N 1 O 4" xref: MassAvg: "158.13" xref: MassMono: "158.045333" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0200" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00052 name: N-acetyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-acetyl-L-cysteine." [ChEBI:28939, PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:1500421, PubMed:15350136, PubMed:6725286, RESID:AA0043] comment: incidental to RESID:AA0223 subset: PSI-MOD-slim synonym: "(2R)-2-acetamido-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-3-mercaptopropanoic acid" EXACT RESID-alternate [] synonym: "2-acetylamino-3-sulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-3-sulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "MOD_RES N-acetylcysteine" EXACT UniProt-feature [] synonym: "N-acetyl-L-cysteine" EXACT RESID-name [] synonym: "N-acetylated cysteine" EXACT PSI-MOD-alternate [] synonym: "N-acetylcysteine" EXACT RESID-alternate [] synonym: "NAcCys" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1 S 0" xref: DiffMono: "42.010565" xref: Formula: "C 5 H 8 N 1 O 2 S 1" xref: MassAvg: "146.18" xref: MassMono: "146.027574" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0201" is_a: MOD:00646 ! acetylated L-cysteine is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00053 name: N-acetyl-L-glutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to N-acetyl-L-glutamic acid." [ChEBI:17533, PubMed:6725286, RESID:AA0044] subset: PSI-MOD-slim synonym: "(2S)-2-(acetamido)pentanedioic acid" EXACT RESID-systematic [] synonym: "2-(acetylamino)pentanedioic acid" EXACT RESID-alternate [] synonym: "2-(acetylazanyl)pentanedioic acid" EXACT RESID-alternate [] synonym: "acetylglutamic acid" EXACT RESID-alternate [] synonym: "AcGlu" EXACT PSI-MOD-label [] synonym: "MOD_RES N-acetylglutamate" EXACT UniProt-feature [] synonym: "N-acetyl-L-glutamic acid" EXACT RESID-name [] synonym: "N-acetylated L-glutamic acid" EXACT PSI-MOD-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 7 H 10 N 1 O 4" xref: MassAvg: "172.16" xref: MassMono: "172.060983" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0202" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00054 name: N-acetyl-L-glutamine def: "A protein modification that effectively converts an L-glutamine residue to N-acetyl-L-glutamine." [RESID:AA0045] comment: This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2S)-2-acetamido-5-pentanediamic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-5-amino-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "2-acetylamino-5-pentanediamic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-5-azanyl-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "acetylglutamine" EXACT RESID-alternate [] synonym: "AcGln" EXACT PSI-MOD-label [] synonym: "N-acetyl-L-glutamine" EXACT RESID-name [] synonym: "N-acetylated L-glutamine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 7 H 11 N 2 O 3" xref: MassAvg: "171.18" xref: MassMono: "171.076967" xref: Origin: "Q" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00907 ! modified L-glutamine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00055 name: N-acetylglycine def: "A protein modification that effectively converts a glycine residue to N-acetylglycine." [PubMed:272676, PubMed:5545094, PubMed:6754709, RESID:AA0046] subset: PSI-MOD-slim synonym: "(acetylamino)acetic acid" EXACT RESID-alternate [] synonym: "(acetylazanyl)ethanoic acid" EXACT RESID-alternate [] synonym: "2-(acetamido)ethanoic acid" EXACT RESID-systematic [] synonym: "2-(acetylamino)ethanoic acid" EXACT RESID-alternate [] synonym: "aceturic acid" EXACT RESID-alternate [] synonym: "AcGly" EXACT PSI-MOD-label [] synonym: "MOD_RES N-acetylglycine" EXACT UniProt-feature [] synonym: "N-acetylated glycine" EXACT PSI-MOD-alternate [] synonym: "N-acetylglycine" EXACT RESID-name [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 4 H 6 N 1 O 2" xref: MassAvg: "100.10" xref: MassMono: "100.039853" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0203" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00056 name: N-acetyl-L-isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to N-acetyl-L-isoleucine." [PubMed:8034631, RESID:AA0047] comment: This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2S,3S)-2-acetamido-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-3-methylpentanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-3-methylpentanoic acid" EXACT RESID-alternate [] synonym: "acetylisoleucine" EXACT RESID-alternate [] synonym: "AcIle" EXACT PSI-MOD-label [] synonym: "N-acetyl-L-isoleucine" EXACT RESID-name [] synonym: "N-acetylated L-isoleucine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 8 H 14 N 1 O 2" xref: MassAvg: "156.20" xref: MassMono: "156.102454" xref: Origin: "I" xref: Source: "artifact" xref: TermSpec: "N-term" xref: UniProt: "PTM-0204" is_a: MOD:00910 ! modified L-isoleucine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00057 name: N2-acetyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N2-acetyl-L-lysine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, RESID:AA0048] comment: This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2S)-2-acetamido-6-aminohexanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-6-aminohexanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-6-azanylhexanoic acid" EXACT RESID-alternate [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "N2-acetyl-L-lysine" EXACT RESID-name [] synonym: "N2-acetylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N2-acetyllysine" EXACT RESID-alternate [] synonym: "N2AcLys" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 8 H 15 N 2 O 2" xref: MassAvg: "171.22" xref: MassMono: "171.113353" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00723 ! N-acetylated L-lysine is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00058 name: N-acetyl-L-methionine def: "A protein modification that effectively converts an L-methionine to N-acetyl-L-methionine." [PubMed:7944406, RESID:AA0049] subset: PSI-MOD-slim synonym: "(2S)-2-acetamido-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "2-acetylamino-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "acetylmethionine" EXACT RESID-alternate [] synonym: "AcMet" EXACT PSI-MOD-label [] synonym: "methionamine" EXACT RESID-alternate [] synonym: "MOD_RES N-acetylmethionine" EXACT UniProt-feature [] synonym: "N-acetyl-L-methionine" EXACT RESID-name [] synonym: "N-acetylated L-methionine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1 S 0" xref: DiffMono: "42.010565" xref: Formula: "C 7 H 12 N 1 O 2 S 1" xref: MassAvg: "174.24" xref: MassMono: "174.058875" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0205" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00059 name: N-acetyl-L-proline def: "A protein modification that effectively converts an L-proline residue to N-acetyl-L-proline." [PubMed:2928307, RESID:AA0050] subset: PSI-MOD-slim synonym: "(2S)-1-acetyl-2-pyrrolidinecarboxylic acid" EXACT RESID-systematic [] synonym: "1-acetylproline" EXACT RESID-alternate [] synonym: "acetylproline" EXACT RESID-alternate [] synonym: "MOD_RES N-acetylproline" EXACT UniProt-feature [] synonym: "N-acetyl-L-proline" EXACT RESID-name [] synonym: "N-acetylated L-proline" EXACT PSI-MOD-alternate [] synonym: "N-acetylproline" EXACT RESID-alternate [] synonym: "NAcPro" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 7 H 10 N 1 O 2" xref: MassAvg: "140.16" xref: MassMono: "140.071154" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0206" is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00060 name: N-acetyl-L-serine def: "A protein modification that effectively converts an L-serine residue to N-acetyl-L-serine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, PubMed:1880797, PubMed:2106685, PubMed:6997045, RESID:AA0051] subset: PSI-MOD-slim synonym: "(2S)-2-acetamido-3-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-3-hydroxypropanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-3-hydroxypropanoic acid" EXACT RESID-alternate [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "MOD_RES N-acetylserine" EXACT UniProt-feature [] synonym: "N-acetyl-L-serine" EXACT RESID-name [] synonym: "N-acetylated L-serine" EXACT PSI-MOD-alternate [] synonym: "N-acetylserine" EXACT RESID-alternate [] synonym: "NAcSer" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 5 H 8 N 1 O 3" xref: MassAvg: "130.12" xref: MassMono: "130.050418" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0207" is_a: MOD:00647 ! acetylated L-serine is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00061 name: N-acetyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to N-acetyl-L-threonine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, PubMed:2106685, PubMed:6997045, RESID:AA0052] subset: PSI-MOD-slim synonym: "(2S,3R)-2-acetamido-3-hydroxybutanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-3-hydroxybutanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-3-hydroxybutanoic acid" EXACT RESID-alternate [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "Acetylation" RELATED Unimod-description [] synonym: "MOD_RES N-acetylthreonine" EXACT UniProt-feature [] synonym: "N-acetyl-L-threonine" EXACT RESID-name [] synonym: "N-acetylated L-threonine" EXACT PSI-MOD-alternate [] synonym: "N-acetylthreonine" EXACT RESID-alternate [] synonym: "N-methylcarbonylthreonine" EXACT RESID-alternate [] synonym: "NAcThr" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 6 H 10 N 1 O 3" xref: MassAvg: "144.15" xref: MassMono: "144.066068" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0208" is_a: MOD:01186 ! acetylated L-threonine is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00062 name: N-acetyl-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to N-acetyl-L-tyrosine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, PubMed:2506074, PubMed:475783, RESID:AA0053] synonym: "(2S)-2-acetamido-3-(4-hydoxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-3-(4-hydoxyphenyl)propanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-3-(4-hydoxyphenyl)propanoic acid" EXACT RESID-alternate [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "AcTyr" EXACT PSI-MOD-label [] synonym: "MOD_RES N-acetyltyrosine" EXACT UniProt-feature [] synonym: "N-acetyl-L-tyrosine" EXACT RESID-name [] synonym: "N-acetylated L-tyrosine" EXACT PSI-MOD-alternate [] synonym: "N-acetyltyrosine" EXACT RESID-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 11 H 12 N 1 O 3" xref: MassAvg: "206.22" xref: MassMono: "206.081718" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0209" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00063 name: N-acetyl-L-valine def: "A protein modification that effectively converts an L-valine residue to N-acetyl-L-valine." [PubMed:1735421, RESID:AA0054] subset: PSI-MOD-slim synonym: "(2S)-2-acetamido-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "2-acetylamino-3-methylbutanoic acid" EXACT RESID-alternate [] synonym: "2-acetylazanyl-3-methylbutanoic acid" EXACT RESID-alternate [] synonym: "AcVal" EXACT PSI-MOD-label [] synonym: "MOD_RES N-acetylvaline" EXACT UniProt-feature [] synonym: "N-acetyl-L-valine" EXACT RESID-name [] synonym: "N-acetylated L-valine" EXACT PSI-MOD-alternate [] synonym: "N-acetylvaline" EXACT RESID-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 7 H 12 N 1 O 2" xref: MassAvg: "142.18" xref: MassMono: "142.086804" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0210" is_a: MOD:00920 ! modified L-valine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00064 name: N6-acetyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-acetyl-L-lysine." [ChEBI:17752, DeltaMass:214, OMSSA:24, PubMed:11369851, PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, PubMed:1680872, PubMed:670159, RESID:AA0055, Unimod:1#K] subset: PSI-MOD-slim synonym: "(2S)-6-acetamido-2-aminohexanoic acid" EXACT RESID-systematic [] synonym: "6-acetylamino-2-aminohexanoic acid" EXACT RESID-alternate [] synonym: "6-acetylazanyl-2-aminohexanoic acid" EXACT RESID-alternate [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "Acetylation" RELATED Unimod-description [] synonym: "acetylk" EXACT OMSSA-label [] synonym: "epsilon-acetyllysine" EXACT RESID-alternate [] synonym: "MOD_RES N6-acetyllysine" EXACT UniProt-feature [] synonym: "N(zeta)-acetyllysine" EXACT RESID-alternate [] synonym: "N6-acetyl-L-lysine" EXACT RESID-name [] synonym: "N6-acetylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6AcLys" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 8 H 14 N 2 O 2" xref: MassAvg: "170.21" xref: MassMono: "170.105528" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1" xref: UniProt: "PTM-0190" is_a: MOD:00723 ! N-acetylated L-lysine is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00065 name: S-acetyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-acetyl-L-cysteine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:1310545, PubMed:14730666, PubMed:15350136, RESID:AA0056, Unimod:1#C] subset: PSI-MOD-slim synonym: "(2R)-3-acetylsulfanyl-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(acetylthio)propanoic acid" EXACT RESID-alternate [] synonym: "2-azanyl-3-(acetylsulfanyl)propanoic acid" EXACT RESID-alternate [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "Acetylation" RELATED Unimod-description [] synonym: "ACT_SITE S-acetylcysteine intermediate" EXACT UniProt-feature [] synonym: "cysteine acetate thioester" EXACT RESID-alternate [] synonym: "S-acetyl-L-cysteine" EXACT RESID-name [] synonym: "S-acetylcysteine" EXACT RESID-alternate [] synonym: "SAcCys" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1 S 0" xref: DiffMono: "42.010565" xref: Formula: "C 5 H 7 N 1 O 2 S 1" xref: MassAvg: "145.18" xref: MassMono: "145.019749" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1" is_a: MOD:00645 ! mono S-acetylated residue is_a: MOD:00646 ! monoacetylated L-cysteine [Term] id: MOD:00066 name: N-formylglycine def: "A protein modification that effectively converts a glycine residue to N-formylglycine." [PubMed:5139483, RESID:AA0057] synonym: "(formylamino)acetic acid" EXACT RESID-alternate [] synonym: "(formylamino)ethanoic acid" EXACT RESID-systematic [] synonym: "(formylazanyl)ethanoic acid" EXACT RESID-alternate [] synonym: "2-formamidoacetic acid" EXACT RESID-alternate [] synonym: "2-formamidoethanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N-formylglycine" EXACT UniProt-feature [] synonym: "N(alpha)-formylglycine" EXACT RESID-alternate [] synonym: "N-formylated glycine" EXACT PSI-MOD-alternate [] synonym: "N-formylglycine" EXACT RESID-name [] synonym: "NFoGly" EXACT PSI-MOD-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 3 H 4 N 1 O 2" xref: MassAvg: "86.07" xref: MassMono: "86.024203" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0211" is_a: MOD:00409 ! N-formylated residue is_a: MOD:00908 ! modified glycine residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:00067 name: N-D-glucuronoylglycine def: "A protein modification that effectively converts a glycine residue to N-D-glucuronoylglycine." [OMSSA:50, PubMed:10858503, PubMed:12716131, PubMed:6493057, PubMed:7398618, RESID:AA0058] synonym: "2-(glucuronoylamino)ethanoic acid" EXACT RESID-systematic [] synonym: "Glucuronyl" RELATED PSI-MS-label [] synonym: "MOD_RES N-D-glucuronoyl glycine" EXACT UniProt-feature [] synonym: "N-D-glucuronoyl-glycine" EXACT RESID-name [] synonym: "N-D-glucuronyl-glycine" EXACT RESID-alternate [] synonym: "NGlcAGly" EXACT PSI-MOD-label [] synonym: "ntermpepglucuronylg" EXACT OMSSA-label [] xref: DiffAvg: "176.12" xref: DiffFormula: "C 6 H 8 N 0 O 6" xref: DiffMono: "176.032088" xref: Formula: "C 8 H 12 N 1 O 7" xref: MassAvg: "234.18" xref: MassMono: "234.061377" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0331" is_a: MOD:00447 ! N-glucuronylated residue is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:00068 name: N-myristoylglycine def: "A protein modification that effectively converts a glycine residue to N-myristoylglycine." [OMSSA:80, PubMed:11955007, PubMed:11955008, PubMed:1326520, PubMed:1386601, PubMed:6436247, PubMed:7543369, RESID:AA0059, Unimod:45#G] subset: PSI-MOD-slim synonym: "(tetradecanoylamino)ethanoic acid" EXACT RESID-systematic [] synonym: "LIPID N-myristoyl glycine" EXACT UniProt-feature [] synonym: "Myristoyl" RELATED PSI-MS-label [] synonym: "Myristoylation" RELATED Unimod-description [] synonym: "N-(1-oxotetradecyl)glycine" EXACT RESID-alternate [] synonym: "N-(C14:0 aliphatic acyl)glycine" EXACT PSI-MOD-alternate [] synonym: "N-myristoyl-glycine" EXACT RESID-name [] synonym: "N-myristoylated glycine" EXACT PSI-MOD-alternate [] synonym: "N-myristylglycine" EXACT RESID-alternate [] synonym: "N-tetradecanoylglycine" EXACT RESID-alternate [] synonym: "NMyrGly" EXACT PSI-MOD-label [] synonym: "ntermpepmyristoylationg" EXACT OMSSA-label [] xref: DiffAvg: "210.36" xref: DiffFormula: "C 14 H 26 N 0 O 1" xref: DiffMono: "210.198365" xref: Formula: "C 16 H 30 N 1 O 2" xref: MassAvg: "268.42" xref: MassMono: "268.227654" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:45" xref: UniProt: "PTM-0221" is_a: MOD:00650 ! N-myristoylated residue is_a: MOD:00908 ! modified glycine residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:00069 name: N-palmitoyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-palmitoyl-L-cysteine." [PubMed:10896212, PubMed:4575979, PubMed:9056182, PubMed:9593755, RESID:AA0060] comment: incidental to RESID:AA0107 incidental to RESID:AA0309 subset: PSI-MOD-slim synonym: "(2R)-2-hexadecanoylamino-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-hexadecanamido-3-sulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "2-hexadecanoylamino-3-mercaptopropanoic acid" EXACT RESID-alternate [] synonym: "LIPID N-palmitoyl cysteine" EXACT UniProt-feature [] synonym: "N-(1-oxahexadecyl)-L-cysteine" EXACT RESID-alternate [] synonym: "N-palmitoyl-L-cysteine" EXACT RESID-name [] synonym: "N-palmitoylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "N-hexadecanoylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "NPamCys" EXACT PSI-MOD-label [] synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" RELATED Unimod-description [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1 S 0" xref: DiffMono: "238.229666" xref: Formula: "C 19 H 36 N 1 O 2 S 1" xref: MassAvg: "342.56" xref: MassMono: "342.246675" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0222" is_a: MOD:01684 ! palmitoylated-L-cysteine is_a: MOD:01685 ! alpha-amino palmitoylated residue [Term] id: MOD:00070 name: N-methyl-L-alanine def: "A protein modification that effectively converts an L-alanine residue to N-methyl-L-alanine." [ChEBI:17519, PubMed:323502, PubMed:337304, PubMed:7007074, RESID:AA0061] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. subset: PSI-MOD-slim synonym: "(2S)-2-methylaminopropanoic acid" EXACT RESID-systematic [] synonym: "2-methylazanylpropanoic acid" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N-methylalanine" EXACT UniProt-feature [] synonym: "N-methyl-L-alanine" EXACT RESID-name [] synonym: "N-methylalanine" EXACT RESID-alternate [] synonym: "N-methylated L-alanine" EXACT PSI-MOD-alternate [] synonym: "NMe1Ala" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 4 H 7 N 1 O 1" xref: MassAvg: "85.11" xref: MassMono: "85.052764" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0214" is_a: MOD:01461 ! N-methylated alanine is_a: MOD:01680 ! alpha-amino monomethylated residue [Term] id: MOD:00071 name: N,N,N-trimethyl-L-alanine def: "A protein modification that effectively converts an L-alanine residue to N,N,N-trimethyl-L-alanine." [PubMed:12590383, PubMed:332162, PubMed:3979397, PubMed:6778808, PubMed:7715456, RESID:AA0062] subset: PSI-MOD-slim synonym: "(1S)-1-carboxy-N,N,N-trimethylethanaminium" EXACT RESID-systematic [] synonym: "(1S)-1-carboxy-N,N,N-trimethylethanazanium" EXACT RESID-alternate [] synonym: "(2S)-2-(trimethylammonio)propanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N,N,N-trimethylalanine" EXACT UniProt-feature [] synonym: "N,N,N-trimethyl-L-alanine" EXACT RESID-name [] synonym: "N,N,N-trimethylalanine cation" EXACT RESID-alternate [] synonym: "N,N,N-trimethylalaninium" EXACT RESID-alternate [] synonym: "N,N,N-trimethylated L-alanine" EXACT PSI-MOD-alternate [] synonym: "N2Me3+Ala" EXACT PSI-MOD-label [] synonym: "NMe3Ala" EXACT PSI-MOD-label [] synonym: "tri-Methylation" RELATED Unimod-description [] synonym: "Trimethyl" RELATED PSI-MS-label [] xref: DiffAvg: "43.09" xref: DiffFormula: "C 3 H 7 N 0 O 0" xref: DiffMono: "43.054227" xref: FormalCharge: "1+" xref: Formula: "C 6 H 13 N 1 O 1" xref: MassAvg: "115.18" xref: MassMono: "115.099165" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0177" is_a: MOD:01461 ! N-methylated alanine is_a: MOD:01698 ! alpha-amino trimethylated protonated-residue [Term] id: MOD:00072 name: N-methylglycine def: "A protein modification that effectively converts a glycine residue to N-methylglycine." [ChEBI:15611, DeltaMass:0, PubMed:1593629, RESID:AA0063] comment: DeltaMass also has an entry for the free amino acid. Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. synonym: "L-sarcosine" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methylaminoacetic acid" EXACT RESID-alternate [] synonym: "methylaminoethanoic acid" EXACT RESID-systematic [] synonym: "Methylation" RELATED Unimod-description [] synonym: "N-methylated glycine" EXACT PSI-MOD-alternate [] synonym: "N-methylglycine" EXACT RESID-name [] synonym: "NMe1Gly" EXACT PSI-MOD-label [] synonym: "Sar" EXACT DeltaMass-label [] synonym: "Sarcosine" EXACT DeltaMass-label [] synonym: "Sarcosyl" EXACT DeltaMass-label [] synonym: "MOD_RES N-methylglycine" EXACT UniProt-feature [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 3 H 5 N 1 O 1" xref: MassAvg: "71.08" xref: MassMono: "71.037114" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0483" is_a: MOD:00570 ! residues isobaric at 71.037114 Da is_a: MOD:00714 ! methylated glycine is_a: MOD:01680 ! alpha-amino monomethylated residue [Term] id: MOD:00073 name: N-methyl-L-methionine def: "A protein modification that effectively converts an L-methionine residue to N-methyl-L-methionine." [DeltaMass:169, PubMed:323502, PubMed:3298225, RESID:AA0064] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. subset: PSI-MOD-slim synonym: "(2S)-2-methylamino-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-methylamino-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methyl Methionyl" EXACT DeltaMass-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N-methylmethionine" EXACT UniProt-feature [] synonym: "N-methyl-L-methionine" EXACT RESID-name [] synonym: "N-methylated L-methionine" EXACT PSI-MOD-alternate [] synonym: "N-methylmethionine" EXACT RESID-alternate [] synonym: "NMe1Met" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 0" xref: DiffMono: "14.015650" xref: Formula: "C 6 H 11 N 1 O 1 S 1" xref: MassAvg: "145.22" xref: MassMono: "145.056135" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0217" is_a: MOD:01463 ! N-methylated methionine is_a: MOD:01680 ! alpha-amino monomethylated residue [Term] id: MOD:00074 name: N-methyl-L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to N-methyl-L-phenylalanine." [PubMed:2577730, PubMed:413571, RESID:AA0065] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. subset: PSI-MOD-slim synonym: "(2S)-2-methylamino-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N-methylphenylalanine" EXACT UniProt-feature [] synonym: "N-methyl-L-phenylalanine" EXACT RESID-name [] synonym: "N-methylated L-phenylalanine" EXACT PSI-MOD-alternate [] synonym: "N-methylphenylalanine" EXACT RESID-alternate [] synonym: "NMe1Phe" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 10 H 11 N 1 O 1" xref: MassAvg: "161.20" xref: MassMono: "161.084064" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0218" is_a: MOD:01063 ! monomethylated phenylalanine is_a: MOD:01680 ! alpha-amino monomethylated residue [Term] id: MOD:00075 name: N,N-dimethyl-L-proline def: "A protein modification that effectively converts an L-proline residue to N,N-dimethyl-L-proline." [ChEBI:21451, PubMed:12964758, PubMed:14570711, PubMed:193025, PubMed:3882426, PubMed:6254758, RESID:AA0066, Unimod:529] comment: Unimod terminal specification corrected [JSG]. subset: PSI-MOD-slim synonym: "(2S)-2-carboxy-1,1-dimethylpyrrolidinium" EXACT RESID-systematic [] synonym: "1,1-dimethyl-L-prolinium" EXACT RESID-alternate [] synonym: "Delta:H(5)C(2)" RELATED Unimod-interim [] synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "Dimethylation of proline residue" RELATED Unimod-description [] synonym: "MOD_RES N,N-dimethylproline" EXACT UniProt-feature [] synonym: "N,N-dimethyl-L-proline" EXACT RESID-name [] synonym: "N,N-dimethyl-L-prolinium" EXACT RESID-alternate [] synonym: "N,N-dimethylated L-proline" EXACT PSI-MOD-alternate [] synonym: "NMe2Pro" EXACT PSI-MOD-label [] synonym: "stachydrin" EXACT RESID-alternate [] xref: DiffAvg: "29.06" xref: DiffFormula: "C 2 H 5 N 0 O 0" xref: DiffMono: "29.038577" xref: FormalCharge: "1+" xref: Formula: "C 7 H 13 N 1 O 1" xref: MassAvg: "127.19" xref: MassMono: "127.099165" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:529" xref: UniProt: "PTM-0179" is_a: MOD:00710 ! protonated-dimethylated residue is_a: MOD:01462 ! N-methylated proline [Term] id: MOD:00076 name: symmetric dimethyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to symmetric dimethylarginine, N(omega),N'(omega)-dimethyl-L-arginine." [PubMed:12964758, PubMed:14570711, PubMed:15835918, PubMed:2426402, PubMed:5128665, RESID:AA0067, Unimod:36#R] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-[((methylamino)(methylimino)methyl)amino]pentanoic acid" EXACT RESID-systematic [] synonym: "di-Methylation" RELATED Unimod-description [] synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "MOD_RES Omega-N-methylated arginine" EXACT UniProt-feature [] synonym: "MOD_RES Symmetric dimethylarginine" EXACT UniProt-feature [] synonym: "N3,N4-dimethylarginine" EXACT RESID-alternate [] synonym: "N5-[(methylamino)(methylimino)methyl]ornithine" EXACT RESID-alternate [] synonym: "NG,N'G-dimethylarginine" EXACT RESID-alternate [] synonym: "NoNo'Me2Arg" EXACT PSI-MOD-label [] synonym: "omega-N,omega-N'-dimethyl-L-arginine" EXACT RESID-name [] synonym: "omega-N,omega-N'-dimethylated L-arginine" EXACT PSI-MOD-alternate [] synonym: "symmetric dimethylarginine" EXACT RESID-alternate [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 16 N 4 O 1" xref: MassAvg: "184.24" xref: MassMono: "184.132411" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:36" xref: UniProt: "PTM-0287" is_a: MOD:00602 ! N-methylated residue is_a: MOD:00783 ! dimethylated L-arginine [Term] id: MOD:00077 name: asymmetric dimethyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to asymmetric dimethylarginine, N(omega),N(omega)-dimethyl-L-arginine." [ChEBI:17929, PubMed:11152131, PubMed:12964758, PubMed:14570711, PubMed:15835918, PubMed:3032834, RESID:AA0068, Unimod:36#R] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-([(dimethylamino)(imino)methyl]amino)pentanoic acid" EXACT RESID-systematic [] synonym: "asymmetric dimethylarginine" EXACT RESID-alternate [] synonym: "di-Methylation" RELATED Unimod-description [] synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "MOD_RES Asymmetric dimethylarginine" EXACT UniProt-feature [] synonym: "MOD_RES Omega-N-methylated arginine" EXACT UniProt-feature [] synonym: "N5-[(dimethylamino)(imino)methyl]ornithine" EXACT RESID-alternate [] synonym: "NG,NG-dimethylarginine" EXACT RESID-alternate [] synonym: "NoNoMe2Arg" EXACT PSI-MOD-label [] synonym: "omega-N,omega-N-dimethlyated L-arginine" EXACT PSI-MOD-alternate [] synonym: "omega-N,omega-N-dimethyl-L-arginine" EXACT RESID-name [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 16 N 4 O 1" xref: MassAvg: "184.24" xref: MassMono: "184.132411" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:36" xref: UniProt: "PTM-0066" is_a: MOD:00602 ! N-methylated residue is_a: MOD:00783 ! dimethylated L-arginine [Term] id: MOD:00078 name: omega-N-methyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to N(omega)-methyl-L-arginine." [PubMed:11875433, PubMed:15835918, PubMed:2426402, PubMed:5128665, RESID:AA0069] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-[(imino(methylamino)methyl)amino]pentanoic acid" EXACT RESID-systematic [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES Omega-N-methylarginine" EXACT UniProt-feature [] synonym: "MOD_RES Omega-N-methylated arginine" EXACT UniProt-feature [] synonym: "NG-methylarginine" EXACT RESID-alternate [] synonym: "NoMeArg" EXACT PSI-MOD-label [] synonym: "omega-N-methyl-L-arginine" EXACT RESID-name [] synonym: "omega-N-methylated L-arginine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 14 N 4 O 1" xref: MassAvg: "170.22" xref: MassMono: "170.116761" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0237" is_a: MOD:00414 ! monomethylated L-arginine is_a: MOD:00602 ! N-methylated residue [Term] id: MOD:00079 name: N4-methyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-methyl-L-asparagine." [OMSSA:75, PubMed:11875433, PubMed:2356973, PubMed:3782095, RESID:AA0070, Unimod:34#N] subset: PSI-MOD-slim synonym: "(2S)-2-amino-N4-methylbutanediamic acid" EXACT RESID-systematic [] synonym: "beta-aspartyl methylamide" EXACT RESID-alternate [] synonym: "beta-methylasparagine" RELATED RESID-misnomer [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "methyln" EXACT OMSSA-label [] synonym: "MOD_RES N4-methylasparagine" EXACT UniProt-feature [] synonym: "N(gamma)-methylasparagine" EXACT RESID-alternate [] synonym: "N-methylasparagine" EXACT RESID-alternate [] synonym: "N4-methyl-L-asparagine" EXACT RESID-name [] synonym: "N4-methylated L-asparagine" EXACT PSI-MOD-alternate [] synonym: "N4Me1Asn" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 5 H 8 N 2 O 2" xref: MassAvg: "128.13" xref: MassMono: "128.058578" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0183" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00602 ! N-methylated residue is_a: MOD:00673 ! methylated asparagine is_a: MOD:00894 ! residues isobaric at 128.058578 Da [Term] id: MOD:00080 name: N5-methyl-L-glutamine def: "A protein modification that effectively converts an L-glutamine residue to N5-methyl-L-glutamine." [ChEBI:17592, DeltaMass:166, PubMed:11118225, PubMed:11875433, PubMed:365579, RESID:AA0071] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-methylamino-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "2-amino-N5-methylpentanediamic acid" EXACT RESID-alternate [] synonym: "gamma-methylglutamine" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N5-methylglutamine" EXACT UniProt-feature [] synonym: "N(delta)-methylglutamine" EXACT RESID-alternate [] synonym: "N-methylglutamine" EXACT RESID-alternate [] synonym: "N5-methyl-L-glutamine" EXACT RESID-name [] synonym: "N5-methylated L-glutamine" EXACT PSI-MOD-alternate [] synonym: "N5Me1Gln" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 6 H 10 N 2 O 2" xref: MassAvg: "142.16" xref: MassMono: "142.074228" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0185" is_a: MOD:00602 ! N-methylated residue is_a: MOD:00722 ! monomethylated L-glutamine [Term] id: MOD:00081 name: L-glutamic acid 5-methyl ester (Glu) def: "A protein modification that effectively converts an L-glutamic acid residue to L-glutamate 5-methyl ester." [DeltaMass:167, OMSSA:17, OMSSA:70, PubMed:16888, PubMed:6300110, RESID:AA0072#GLU, Unimod:34#E] comment: DeltaMass gives the formula "C 6 H 9 O 1 N 3" with mass 143 (formula incorrect, N and O reversed) [JSG]. subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-methoxy-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(5)-methyl L-hydrogen glutamate" EXACT RESID-alternate [] synonym: "2-aminopentanedioic acid 5-methyl ester" EXACT RESID-alternate [] synonym: "5-methyl esterified L-glutamic acid" EXACT PSI-MOD-alternate [] synonym: "5-methyl L-2-aminoglutarate" EXACT RESID-alternate [] synonym: "5-methyl L-glutamate" EXACT RESID-alternate [] synonym: "glutamic acid 5-methyl ester" EXACT RESID-alternate [] synonym: "glutamic acid gamma-methyl ester" EXACT RESID-alternate [] synonym: "L-glutamic acid 5-methyl ester" EXACT RESID-name [] synonym: "meestere" EXACT OMSSA-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methyl ester" RELATED Unimod-alternate [] synonym: "Methylation" RELATED Unimod-description [] synonym: "methyle" EXACT OMSSA-label [] synonym: "MOD_RES Glutamate methyl ester (Glu)" EXACT UniProt-feature [] synonym: "O-methyl Glutamyl" EXACT DeltaMass-label [] synonym: "O5MeGlu" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 6 H 9 N 1 O 3" xref: MassAvg: "143.14" xref: MassMono: "143.058243" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0128" is_a: MOD:01453 ! L-glutamic acid 5-methyl ester [Term] id: MOD:00082 name: 3'-methyl-L-histidine def: "A protein modification that effectively converts an L-histidine residue to pros-methyl-L-histidine (N-pi-methyl-L-histidine, 3'-methyl-L-histidine)." [PubMed:10660523, PubMed:11875433, PubMed:3467365, PubMed:6692818, PubMed:8076, PubMed:8645219, RESID:AA0073] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(3-methyl-3H-imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "1-methylhistidine" RELATED RESID-misnomer [] synonym: "3'-methyl-L-histidine" EXACT RESID-name [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES Pros-methylhistidine" EXACT UniProt-feature [] synonym: "N(delta)-methylhistidine" EXACT RESID-alternate [] synonym: "N(pi)-methylhistidine" EXACT RESID-alternate [] synonym: "NpMeHis" EXACT PSI-MOD-label [] synonym: "pros-methylated L-histidine" EXACT PSI-MOD-alternate [] synonym: "pros-methylhistidine" EXACT RESID-alternate [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 9 N 3 O 1" xref: MassAvg: "151.17" xref: MassMono: "151.074562" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0259" is_a: MOD:02038 ! monomethylated L-histidine is_a: MOD:00724 ! N-methylated L-histidine [Term] id: MOD:00083 name: N6,N6,N6-trimethyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6,N6,N6-trimethyl-L-lysine." [ChEBI:17311, PubMed:12590383, PubMed:3145979, PubMed:4304194, PubMed:6778808, PubMed:7093227, PubMed:8453381, RESID:AA0074] comment: DeltaMass calculates the mass difference from protonated lysine rather than neutral lysine; for trimethylated lysine starting from protonated lysine see MOD:00855 subset: PSI-MOD-slim synonym: "(5S)-5-amino-5-carboxy-N,N,N-trimethylpentan-1-aminium" EXACT RESID-systematic [] synonym: "2-amino-6-(trimethylammonio)hexanoic acid" EXACT RESID-alternate [] synonym: "5-azanyl-5-carboxy-N,N,N-trimethylpentanazanium" EXACT RESID-alternate [] synonym: "epsilon-trimethyllysine" EXACT RESID-alternate [] synonym: "MOD_RES N6,N6,N6-trimethyllysine" EXACT UniProt-feature [] synonym: "N(zeta)-trimethyllysine" EXACT RESID-alternate [] synonym: "N-trimethylation (of lysine)" EXACT DeltaMass-label [] synonym: "N6,N6,N6-trimethyl-L-lysine" EXACT RESID-name [] synonym: "N6,N6,N6-trimethylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6,N6,N6-trimethyllysin-N6-ium" EXACT RESID-alternate [] synonym: "N6,N6,N6-trimethyllysine cation" EXACT RESID-alternate [] synonym: "N6Me3+Lys" EXACT PSI-MOD-label [] synonym: "tri-Methylation" RELATED Unimod-description [] synonym: "Trimethyl" RELATED PSI-MS-label [] xref: DiffAvg: "43.09" xref: DiffFormula: "C 3 H 7 N 0 O 0" xref: DiffMono: "43.054227" xref: FormalCharge: "1+" xref: Formula: "C 9 H 19 N 2 O 1" xref: MassAvg: "171.26" xref: MassMono: "171.149190" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0187" is_a: MOD:00602 ! N-methylated residue is_a: MOD:00663 ! methylated lysine is_a: MOD:00711 ! trimethylated protonated-residue [Term] id: MOD:00084 name: N6,N6-dimethyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6,N6-dimethyl-L-lysine." [OMSSA:36, PubMed:10550045, PubMed:12964758, PubMed:14570711, PubMed:3100523, PubMed:8453381, RESID:AA0075, Unimod:36#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(dimethylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "di-Methylation" RELATED Unimod-description [] synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "dimethylk" EXACT OMSSA-label [] synonym: "epsilon-dimethyllysine" EXACT RESID-alternate [] synonym: "lysine derivative Lys(y)" EXACT RESID-alternate [] synonym: "MOD_RES N6,N6-dimethyllysine" EXACT UniProt-feature [] synonym: "N(zeta)-dimethyllysine" EXACT RESID-alternate [] synonym: "N6,N6-dimethyl-L-lysine" EXACT RESID-name [] synonym: "N6,N6-dimethylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6Me2Lys" EXACT PSI-MOD-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 16 N 2 O 1" xref: MassAvg: "156.23" xref: MassMono: "156.126263" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:36" xref: UniProt: "PTM-0188" is_a: MOD:00429 ! dimethylated residue is_a: MOD:00602 ! N-methylated residue is_a: MOD:00663 ! methylated lysine [Term] id: MOD:00085 name: N6-methyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-methyl-L-lysine." [ChEBI:17604, DeltaMass:165, PubMed:11875433, PubMed:3926756, RESID:AA0076, Unimod:34#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-methylaminohexanoic acid" EXACT RESID-systematic [] synonym: "epsilon-methyllysine" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N6-methyllysine" EXACT UniProt-feature [] synonym: "N(zeta)-methyllysine" EXACT RESID-alternate [] synonym: "N-methyl Lysyl" EXACT DeltaMass-label [] synonym: "N6-methyl-L-lysine" EXACT RESID-name [] synonym: "N6-methylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6Me1Lys" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 14 N 2 O 1" xref: MassAvg: "142.20" xref: MassMono: "142.110613" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0194" is_a: MOD:00602 ! N-methylated residue is_a: MOD:01683 ! monomethylated L-lysine [Term] id: MOD:00086 name: N6-palmitoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-palmitoyl-L-lysine." [OMSSA:93, PubMed:2498336, PubMed:7801126, PubMed:7939682, RESID:AA0077, Unimod:47#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(hexadecanoylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-amino-6-(hexadecanamido)hexanoic acid" EXACT RESID-alternate [] synonym: "epsilon-palmitoyllysine" EXACT RESID-alternate [] synonym: "LIPID N6-palmitoyl lysine" EXACT UniProt-feature [] synonym: "N(zeta)-palmitoyllysine" EXACT RESID-alternate [] synonym: "N6-(1-oxohexadecyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-palmitoyl-L-lysine" EXACT RESID-name [] synonym: "N6-palmitoylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6-hexadecanoylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6PamLys" EXACT PSI-MOD-label [] synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" RELATED Unimod-description [] synonym: "palmitoylationk" EXACT OMSSA-label [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1" xref: DiffMono: "238.229666" xref: Formula: "C 22 H 42 N 2 O 2" xref: MassAvg: "366.59" xref: MassMono: "366.324629" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:47" xref: UniProt: "PTM-0197" is_a: MOD:00651 ! N-palmitoylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00087 name: N6-myristoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-myristoyl-L-lysine." [OMSSA:81, PubMed:1402651, PubMed:8346241, RESID:AA0078, Unimod:45#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(tetradecanoylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-amino-6-(tetradecanamido)hexanoic acid" EXACT RESID-alternate [] synonym: "epsilon-myristoyllysine" EXACT RESID-alternate [] synonym: "LIPID N6-myristoyl lysine" EXACT UniProt-feature [] synonym: "Myristoyl" RELATED PSI-MS-label [] synonym: "Myristoylation" RELATED Unimod-description [] synonym: "myristoylationk" EXACT OMSSA-label [] synonym: "N(zeta)-myristoyllysine" EXACT RESID-alternate [] synonym: "N6-(1-oxotetradecyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-(C14:0 aliphatic acyl)lysine" EXACT PSI-MOD-alternate [] synonym: "N6-myristoyl-L-lysine" EXACT RESID-name [] synonym: "N6-myristoylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6MyrLys" EXACT PSI-MOD-label [] xref: DiffAvg: "210.36" xref: DiffFormula: "C 14 H 26 N 0 O 1" xref: DiffMono: "210.198365" xref: Formula: "C 20 H 38 N 2 O 2" xref: MassAvg: "338.54" xref: MassMono: "338.293328" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:45" xref: UniProt: "PTM-0196" is_a: MOD:00650 ! N-myristoylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00088 name: O-palmitoyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-palmitoyl-L-threonine." [OMSSA:95, PubMed:6642431, PubMed:8413602, RESID:AA0079, Unimod:47#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(hexadecanoyloxy)butanoic acid" EXACT RESID-systematic [] synonym: "L-threonine hexadecanoate ester" EXACT RESID-alternate [] synonym: "LIPID O-palmitoyl threonine" EXACT UniProt-feature [] synonym: "O-palmitoyl-L-threonine" EXACT RESID-name [] synonym: "O-palmitoylated L-threonine" EXACT PSI-MOD-alternate [] synonym: "O-hexadecanoylated L-threonine" EXACT PSI-MOD-alternate [] synonym: "O3-palmitoyl-threonine" EXACT RESID-alternate [] synonym: "OPamThr" EXACT PSI-MOD-label [] synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" RELATED Unimod-description [] synonym: "palmitoylationt" EXACT OMSSA-label [] synonym: "threonine palmitate ester" EXACT RESID-alternate [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1" xref: DiffMono: "238.229666" xref: Formula: "C 20 H 37 N 1 O 3" xref: MassAvg: "339.52" xref: MassMono: "339.277344" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:47" xref: UniProt: "PTM-0242" is_a: MOD:00652 ! O-palmitoylated residue is_a: MOD:02004 ! O3-acylated L-threonine [Term] id: MOD:00089 name: O-palmitoyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-palmitoyl-L-serine." [OMSSA:94, PubMed:3467339, RESID:AA0080, Unimod:47#S] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(hexadecanoyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE O-palmitoyl serine intermediate" EXACT UniProt-feature [] synonym: "L-serine hexadecanoate ester" EXACT RESID-alternate [] synonym: "LIPID O-palmitoyl serine" EXACT UniProt-feature [] synonym: "O-palmitoyl-L-serine" EXACT RESID-name [] synonym: "O-palmitoylated L-serine" EXACT PSI-MOD-alternate [] synonym: "O-hexadecanoylated L-serine" EXACT PSI-MOD-alternate [] synonym: "O3-palmitoyl-serine" EXACT RESID-alternate [] synonym: "OPamSer" EXACT PSI-MOD-label [] synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" RELATED Unimod-description [] synonym: "palmitoylations" EXACT OMSSA-label [] synonym: "serine palmitate ester" EXACT RESID-alternate [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1" xref: DiffMono: "238.229666" xref: Formula: "C 19 H 35 N 1 O 3" xref: MassAvg: "325.49" xref: MassMono: "325.261694" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:47" xref: UniProt: "PTM-0241" is_a: MOD:00652 ! O-palmitoylated residue is_a: MOD:02003 ! O3-acylated L-serine [Term] id: MOD:00090 name: L-alanine amide def: "A protein modification that effectively converts an L-alanine residue to L-alanine amide." [PubMed:1377792, PubMed:2069951, PubMed:8472537, PubMed:952951, RESID:AA0081] subset: PSI-MOD-slim synonym: "(2S)-2-aminopropanamide" EXACT RESID-systematic [] synonym: "AlaN" EXACT PSI-MOD-label [] synonym: "alaninamide" EXACT RESID-alternate [] synonym: "amidated L-alanine" EXACT PSI-MOD-alternate [] synonym: "L-alanine amide" EXACT RESID-name [] synonym: "MOD_RES Alanine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 3 H 7 N 2 O 1" xref: MassAvg: "87.10" xref: MassMono: "87.055838" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0057" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:00091 name: L-arginine amide def: "A protein modification that effectively converts an L-arginine residue to L-arginine amide." [PubMed:2229025, PubMed:2753890, PubMed:743209, RESID:AA0082, ChEBI:145897] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-[(diaminomethylidene)amino]pentanamide" EXACT RESID-systematic [] synonym: "2-amino-5-carbamimidamidopentanamide" EXACT RESID-alternate [] synonym: "2-amino-5-guanidinopentanamide" EXACT RESID-alternate [] synonym: "amidated L-arginine" EXACT PSI-MOD-alternate [] synonym: "argininamide" EXACT RESID-alternate [] synonym: "ArgN" EXACT PSI-MOD-label [] synonym: "L-arginine amide" EXACT RESID-name [] synonym: "MOD_RES Arginine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 6 H 14 N 5 O 1" xref: MassAvg: "172.21" xref: MassMono: "172.119835" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0060" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00092 name: L-asparagine amide def: "A protein modification that effectively converts an L-asparagine residue to L-asparagine amide." [PubMed:2753132, PubMed:279902, PubMed:3415690, RESID:AA0083, ChEBI:145898] subset: PSI-MOD-slim synonym: "(2S)-2-aminobutanediamide" EXACT RESID-systematic [] synonym: "amidated L-asparagine" EXACT PSI-MOD-alternate [] synonym: "AsnN" EXACT PSI-MOD-label [] synonym: "asparaginamide" EXACT RESID-alternate [] synonym: "L-asparagine amide" EXACT RESID-name [] synonym: "MOD_RES Asparagine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 4 H 8 N 3 O 2" xref: MassAvg: "130.13" xref: MassMono: "130.061652" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0062" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00093 name: L-aspartic acid 1-amide def: "A protein modification that effectively converts an L-aspartic acid residue to L-aspartic acid 1-amide." [PubMed:2542051, RESID:AA0084] subset: PSI-MOD-slim synonym: "(2S)-2-amino-1-butanediamic acid" EXACT RESID-systematic [] synonym: "1-amidated L-aspartic acid" EXACT PSI-MOD-alternate [] synonym: "3,4-diamino-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "3-amino-succinamic acid" EXACT RESID-alternate [] synonym: "alpha-asparagine" EXACT RESID-alternate [] synonym: "AspN" EXACT PSI-MOD-label [] synonym: "isoasparagine" EXACT RESID-alternate [] synonym: "L-aspartic acid 1-amide" EXACT RESID-name [] synonym: "MOD_RES Aspartic acid 1-amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 4 H 7 N 2 O 3" xref: MassAvg: "131.11" xref: MassMono: "131.045667" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0063" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:00094 name: L-cysteine amide def: "A protein modification that effectively converts an L-cysteine residue to L-cysteine amide." [PubMed:1892838, PubMed:7149738, RESID:AA0085] subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-sulfanylpropanamide" EXACT RESID-systematic [] synonym: "2-amino-3-mercaptopropanamide" EXACT RESID-alternate [] synonym: "amidated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "CysN" EXACT PSI-MOD-label [] synonym: "cysteinamide" EXACT RESID-alternate [] synonym: "L-cysteine amide" EXACT RESID-name [] synonym: "MOD_RES Cysteine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1 S 0" xref: DiffMono: "-0.984016" xref: Formula: "C 3 H 7 N 2 O 1 S 1" xref: MassAvg: "119.16" xref: MassMono: "119.027909" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0102" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00095 name: L-glutamine amide def: "A protein modification that effectively converts an L-glutamine residue to L-glutamine amide." [PubMed:7673220, PubMed:9048550, RESID:AA0086] subset: PSI-MOD-slim synonym: "(2S)-2-aminopentanediamide" EXACT RESID-systematic [] synonym: "amidated L-glutamine" EXACT PSI-MOD-alternate [] synonym: "GlnN" EXACT PSI-MOD-label [] synonym: "glutaminamide" EXACT RESID-alternate [] synonym: "L-glutamine amide" EXACT RESID-name [] synonym: "MOD_RES Glutamine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 5 H 10 N 3 O 2" xref: MassAvg: "144.15" xref: MassMono: "144.077302" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0130" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:00096 name: L-glutamic acid 1-amide def: "A protein modification that effectively converts an L-glutamic acid residue to L-glutamic acid 1-amide." [PubMed:1093875, PubMed:14550575, RESID:AA0087] subset: PSI-MOD-slim synonym: "(2S)-2-amino-1-pentanediamic acid" EXACT RESID-systematic [] synonym: "1-amidated L-glutamic acid" EXACT PSI-MOD-alternate [] synonym: "4,5-diamino-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "GluN" EXACT PSI-MOD-label [] synonym: "isoglutamine" EXACT RESID-alternate [] synonym: "L-glutamic acid 1-amide" EXACT RESID-name [] synonym: "MOD_RES Glutamic acid 1-amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 5 H 9 N 2 O 3" xref: MassAvg: "145.14" xref: MassMono: "145.061317" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0129" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00097 name: glycine amide def: "A protein modification that effectively converts a glycine residue to glycine amide." [PubMed:13591312, RESID:AA0088] subset: PSI-MOD-slim synonym: "2-aminoacetamide" EXACT RESID-alternate [] synonym: "2-aminoethanamide" EXACT RESID-systematic [] synonym: "2-azanylethanamide" EXACT RESID-alternate [] synonym: "amidated glycine" EXACT PSI-MOD-alternate [] synonym: "glycinamide" EXACT RESID-alternate [] synonym: "glycine amide" EXACT RESID-name [] synonym: "GlyN" EXACT PSI-MOD-label [] synonym: "MOD_RES Glycine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 2 H 5 N 2 O 1" xref: MassAvg: "73.07" xref: MassMono: "73.040188" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0132" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:00098 name: L-histidine amide def: "A protein modification that effectively converts an L-histidine residue to L-histidine amide." [PubMed:2153586, PubMed:2307683, PubMed:2839478, RESID:AA0089] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(1H-imidazol-4-yl)propanamide" EXACT RESID-systematic [] synonym: "amidated L-histidine" EXACT PSI-MOD-alternate [] synonym: "HisN" EXACT PSI-MOD-label [] synonym: "histidinamide" EXACT RESID-alternate [] synonym: "L-histidine amide" EXACT RESID-name [] synonym: "MOD_RES Histidine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 6 H 9 N 4 O 1" xref: MassAvg: "153.16" xref: MassMono: "153.077636" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0148" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:00099 name: L-isoleucine amide def: "A protein modification that effectively converts an L-isoleucine residue to L-isoleucine amide." [RESID:AA0090] subset: PSI-MOD-slim synonym: "(2S,3S)-2-amino-3-methylpentanamide" EXACT RESID-systematic [] synonym: "amidated L-isoleucine" EXACT PSI-MOD-alternate [] synonym: "IleN" EXACT PSI-MOD-label [] synonym: "isoleucinamide" EXACT RESID-alternate [] synonym: "L-isoleucine amide" EXACT RESID-name [] synonym: "MOD_RES Isoleucine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 6 H 13 N 2 O 1" xref: MassAvg: "129.18" xref: MassMono: "129.102788" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0161" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00910 ! modified L-isoleucine residue [Term] id: MOD:00100 name: L-leucine amide def: "A protein modification that effectively converts an L-leucine residue to L-leucine amide." [PubMed:2578459, RESID:AA0091] subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-methylpentanamide" EXACT RESID-systematic [] synonym: "2-amino-4-methylvaleramide" EXACT RESID-alternate [] synonym: "2-azanyl-4-methylpentanamide" EXACT RESID-alternate [] synonym: "alpha-aminoisocaproamide" EXACT RESID-alternate [] synonym: "amidated L-leucine" EXACT PSI-MOD-alternate [] synonym: "L-leucine amide" EXACT RESID-name [] synonym: "leucinamide" EXACT RESID-alternate [] synonym: "LeuN" EXACT PSI-MOD-label [] synonym: "MOD_RES Leucine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 6 H 13 N 2 O 1" xref: MassAvg: "129.18" xref: MassMono: "129.102788" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0166" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00911 ! modified L-leucine residue [Term] id: MOD:00101 name: L-lysine amide def: "A protein modification that effectively converts an L-lysine residue to L-lysine amide." [PubMed:6579533, RESID:AA0092] subset: PSI-MOD-slim synonym: "(2S)-2,6-diaminohexanamide" EXACT RESID-systematic [] synonym: "amidated L-lysine" EXACT PSI-MOD-alternate [] synonym: "L-lysine amide" EXACT RESID-name [] synonym: "lysinamide" EXACT RESID-alternate [] synonym: "LysN" EXACT PSI-MOD-label [] synonym: "MOD_RES Lysine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 6 H 14 N 3 O 1" xref: MassAvg: "144.20" xref: MassMono: "144.113687" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0168" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00102 name: L-methionine amide def: "A protein modification that effectively converts an L-methionine residue to L-methionine amide." [PubMed:4375977, RESID:AA0093] subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-(methylsulfanyl)butanamide" EXACT RESID-systematic [] synonym: "2-amino-4-(methylthio)butanamide" EXACT RESID-alternate [] synonym: "amidated L-methionine" EXACT PSI-MOD-alternate [] synonym: "L-methionine amide" EXACT RESID-name [] synonym: "methioninamide" EXACT RESID-alternate [] synonym: "MetN" EXACT PSI-MOD-label [] synonym: "MOD_RES Methionine amide" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1 S 0" xref: DiffMono: "-0.984016" xref: Formula: "C 5 H 11 N 2 O 1 S 1" xref: MassAvg: "147.22" xref: MassMono: "147.059209" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0164" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00103 name: L-phenylalanine amide def: "A protein modification that effectively converts an L-phenylalanine residue to L-phenylalanine amide." [PubMed:2905621, PubMed:8868490, RESID:AA0094] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-phenylpropanamide" EXACT RESID-systematic [] synonym: "amidated L-phenylalanine" EXACT PSI-MOD-alternate [] synonym: "L-phenylalanine amide" EXACT RESID-name [] synonym: "MOD_RES Phenylalanine amide" EXACT UniProt-feature [] synonym: "PheN" EXACT PSI-MOD-label [] synonym: "phenylalaninamide" EXACT RESID-alternate [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 9 H 11 N 2 O 1" xref: MassAvg: "163.20" xref: MassMono: "163.087138" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0248" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:00104 name: L-proline amide def: "A protein modification that effectively converts an L-proline residue to L-proline amide." [PubMed:4982117, PubMed:5760861, RESID:AA0095] subset: PSI-MOD-slim synonym: "(2S)-pyrrolidine-2-carboxamide" EXACT RESID-systematic [] synonym: "amidated L-proline" EXACT PSI-MOD-alternate [] synonym: "L-proline amide" EXACT RESID-name [] synonym: "MOD_RES Proline amide" EXACT UniProt-feature [] synonym: "prolinamide" EXACT RESID-alternate [] synonym: "ProN" EXACT PSI-MOD-label [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 5 H 9 N 2 O 1" xref: MassAvg: "113.14" xref: MassMono: "113.071488" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0257" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00105 name: L-serine amide def: "A protein modification that effectively converts an L-serine residue to L-serine amide." [PubMed:743209, RESID:AA0096] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-hydroxypropanamide" EXACT RESID-systematic [] synonym: "amidated L-serine" EXACT PSI-MOD-alternate [] synonym: "L-serine amide" EXACT RESID-name [] synonym: "MOD_RES Serine amide" EXACT UniProt-feature [] synonym: "serinamide" EXACT RESID-alternate [] synonym: "SerN" EXACT PSI-MOD-label [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 3 H 7 N 2 O 2" xref: MassAvg: "103.10" xref: MassMono: "103.050752" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0275" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00106 name: L-threonine amide def: "A protein modification that effectively converts an L-threonine residue to L-threonine amide." [PubMed:1390774, RESID:AA0097] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-hydroxybutanamide" EXACT RESID-systematic [] synonym: "amidated L-threonine" EXACT PSI-MOD-alternate [] synonym: "L-threonine amide" EXACT RESID-name [] synonym: "MOD_RES Threonine amide" EXACT UniProt-feature [] synonym: "threoninamide" EXACT RESID-alternate [] synonym: "ThrN" EXACT PSI-MOD-label [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 4 H 9 N 2 O 2" xref: MassAvg: "117.13" xref: MassMono: "117.066403" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0293" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00107 name: L-tryptophan amide def: "A protein modification that effectively converts an L-tryptophan residue to L-tryptophan amide." [PubMed:3947348, RESID:AA0098] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(1H-indol-3-yl)propanamide" EXACT RESID-systematic [] synonym: "amidated L-tryptophan" EXACT PSI-MOD-alternate [] synonym: "L-tryptophan amide" EXACT RESID-name [] synonym: "MOD_RES Tryptophan amide" EXACT UniProt-feature [] synonym: "TrpN" EXACT PSI-MOD-label [] synonym: "tryptophanamide" EXACT RESID-alternate [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 11 H 12 N 3 O 1" xref: MassAvg: "202.24" xref: MassMono: "202.098037" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0296" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00108 name: L-tyrosine amide def: "A protein modification that effectively converts an L-tyrosine residue to L-tyrosine amide." [PubMed:1377792, PubMed:3562898, PubMed:6509012, RESID:AA0099] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(4-hydoxyphenyl)propanamide" EXACT RESID-systematic [] synonym: "amidated L-tyrosine" EXACT PSI-MOD-alternate [] synonym: "L-tyrosine amide" EXACT RESID-name [] synonym: "MOD_RES Tyrosine amide" EXACT UniProt-feature [] synonym: "TyrN" EXACT PSI-MOD-label [] synonym: "tyrosinamide" EXACT RESID-alternate [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 9 H 11 N 2 O 2" xref: MassAvg: "179.20" xref: MassMono: "179.082053" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0302" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00109 name: L-valine amide def: "A protein modification that effectively converts an L-valine residue to L-valine amide." [PubMed:2578459, PubMed:5465996, RESID:AA0100] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-methylbutanamide" EXACT RESID-systematic [] synonym: "L-valine amide" EXACT RESID-name [] synonym: "MOD_RES Valine amide" EXACT UniProt-feature [] synonym: "valinamide" EXACT RESID-alternate [] synonym: "ValN" EXACT PSI-MOD-label [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 5 H 11 N 2 O 1" xref: MassAvg: "115.16" xref: MassMono: "115.087138" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0303" is_a: MOD:00883 ! C1-amidated residue is_a: MOD:00920 ! modified L-valine residue [Term] id: MOD:00110 name: L-cysteine methyl disulfide def: "A protein modification that effectively converts an L-cysteine residue to L-cysteine methyl disulfide." [OMSSA:179, PubMed:10555576, PubMed:163643, PubMed:2056535, PubMed:6381494, RESID:AA0101, Unimod:39#C] comment: Produced artifactually by reaction of cysteine residues with methyl methanethiosulfonate (MMTS) [JSG], but also naturally in bacteria [PMT]. synonym: "(2R)-2-amino-3-(methyldisulfanediyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(methyldisulfanediyl)propanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-(methyldithio)propanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-methyldisulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "2-azanyl-3-(methyldisulfanediyl)-propanoic acid" EXACT RESID-alternate [] synonym: "Beta-methylthiolation" RELATED Unimod-description [] synonym: "L-3-(methyldithio)alanine" EXACT RESID-alternate [] synonym: "L-cysteine methyl disulfide" EXACT RESID-name [] synonym: "methyl methanethiolsulfonate derivatized cysteine" EXACT PSI-MOD-alternate [] synonym: "methyl methanethiosulfonate derivatized cysteine" EXACT PSI-MOD-alternate [] synonym: "Methylthio" RELATED PSI-MS-label [] synonym: "Methylthio" RELATED Unimod-interim [] synonym: "mmts" EXACT OMSSA-label [] synonym: "MOD_RES Cysteine methyl disulfide" EXACT UniProt-feature [] synonym: "S-methylthio-L-cysteine" EXACT RESID-alternate [] synonym: "S-methylthiocysteine" EXACT RESID-alternate [] xref: DiffAvg: "46.09" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 1" xref: DiffMono: "45.987721" xref: Formula: "C 4 H 7 N 1 O 1 S 2" xref: MassAvg: "149.23" xref: MassMono: "148.996906" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:39" xref: UniProt: "PTM-0104" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01153 ! methylthiolated residue is_a: MOD:01862 ! disulfide conjugated residue [Term] id: MOD:00111 name: S-farnesyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-farnesyl-L-cysteine." [DeltaMass:293, OMSSA:42, PubMed:1409665, PubMed:15609361, PubMed:1872463, PubMed:2684976, RESID:AA0102, Unimod:44#C] comment: From DeltaMass: (name misspelled "S-farnesyl cystenyl") subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-([(2E,6E)-3,7,11-trimethyldodeca-2,6,10-trien-1-yl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(3,7,11-trimethyl-2,6,10-dodecatrienylthio)propanoic acid" EXACT RESID-alternate [] synonym: "Farnesyl" RELATED PSI-MS-label [] synonym: "Farnesylation" RELATED Unimod-description [] synonym: "farnesylationc" EXACT OMSSA-label [] synonym: "LIPID S-farnesyl cysteine" EXACT UniProt-feature [] synonym: "S-farnesyl Cystenyl" EXACT DeltaMass-label [] synonym: "S-farnesyl-L-cysteine" EXACT RESID-name [] synonym: "SFarnCys" EXACT PSI-MOD-label [] xref: DiffAvg: "204.36" xref: DiffFormula: "C 15 H 24 N 0 O 0 S 0" xref: DiffMono: "204.187801" xref: Formula: "C 18 H 29 N 1 O 1 S 1" xref: MassAvg: "307.50" xref: MassMono: "307.196986" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:44" xref: UniProt: "PTM-0277" is_a: MOD:00437 ! farnesylated residue is_a: MOD:01110 ! isoprenylated cysteine [Term] id: MOD:00112 name: S-12-hydroxyfarnesyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-12-hydroxyfarnesyl-L-cysteine." [PubMed:17790543, RESID:AA0103, Unimod:376] synonym: "(2R)-2-amino-3-([(2E,6E,10Z)-12-hydroxy-3,7,11-trimethyldodeca-2,6,10-trien-1-yl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(12-hydroxy-3,7,11-trimethyl-3,6,10-dodecatrienylthio)propanoic acid" EXACT RESID-alternate [] synonym: "Hydroxyfarnesyl" RELATED PSI-MS-label [] synonym: "hydroxyfarnesyl" RELATED Unimod-description [] synonym: "LIPID S-12-hydroxyfarnesyl cysteine" EXACT UniProt-feature [] synonym: "S-12-hydroxyfarnesyl-L-cysteine" EXACT RESID-name [] synonym: "S12HyFarnCys" EXACT PSI-MOD-label [] xref: DiffAvg: "220.36" xref: DiffFormula: "C 15 H 24 N 0 O 1 S 0" xref: DiffMono: "220.182715" xref: Formula: "C 18 H 29 N 1 O 2 S 1" xref: MassAvg: "323.50" xref: MassMono: "323.191900" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:376" xref: UniProt: "PTM-0269" is_a: MOD:01110 ! isoprenylated cysteine [Term] id: MOD:00113 name: S-geranylgeranyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-geranylgeranyl-L-cysteine." [DeltaMass:0, OMSSA:49, PubMed:1483450, PubMed:15609361, RESID:AA0104, Unimod:48#C] comment: DeltaMass calculates the mass with two double bonds rather than four subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-([(2E,6E,10Z)-12-hydroxy-3,7,11-trimethyldodeca-2,6,10-trien-1-yl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(3,7,11,15-tetramethyl-2,6,10,14-hexadecatetraenylthio)propanoic acid" EXACT RESID-alternate [] synonym: "Geranyl-geranyl" RELATED Unimod-description [] synonym: "GeranylGeranyl" RELATED PSI-MS-label [] synonym: "geranylgeranylc" EXACT OMSSA-label [] synonym: "LIPID S-geranylgeranyl cysteine" EXACT UniProt-feature [] synonym: "S-geranylgeranyl" EXACT DeltaMass-label [] synonym: "S-geranylgeranyl-L-cysteine" EXACT RESID-name [] synonym: "SGergerCys" EXACT PSI-MOD-label [] xref: DiffAvg: "272.48" xref: DiffFormula: "C 20 H 32 N 0 O 0 S 0" xref: DiffMono: "272.250401" xref: Formula: "C 23 H 37 N 1 O 1 S 1" xref: MassAvg: "375.62" xref: MassMono: "375.259586" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:48" xref: UniProt: "PTM-0278" is_a: MOD:00441 ! geranylgeranylated residue is_a: MOD:01110 ! isoprenylated cysteine [Term] id: MOD:00114 name: L-cysteine methyl ester def: "A protein modification that effectively converts an L-cysteine residue to L-cysteine methyl ester." [PubMed:11875433, PubMed:1872463, RESID:AA0105, Unimod:34#C-term] comment: Secondary to RESID:AA0102; secondary to RESID:AA0103; secondary to RESID:AA0104. subset: PSI-MOD-slim synonym: "2-amino-3-mercaptopropanoic methyl ester" EXACT RESID-alternate [] synonym: "2-amino-3-sulfanylpropanoic methyl ester" EXACT RESID-alternate [] synonym: "L-cysteine methyl ester" EXACT RESID-name [] synonym: "mecysteine" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methyl (2R)-2-amino-3-sulfanylpropanoate" EXACT RESID-systematic [] synonym: "methyl esterified L-cysteine" EXACT PSI-MOD-alternate [] synonym: "methyl L-cysteinate" EXACT RESID-alternate [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES Cysteine methyl ester" EXACT UniProt-feature [] synonym: "OMeCys" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 0" xref: DiffMono: "14.015650" xref: Formula: "C 4 H 8 N 1 O 2 S 1" xref: MassAvg: "134.17" xref: MassMono: "134.027574" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0105" is_a: MOD:01682 ! monomethylated L-cysteine is_a: MOD:01689 ! alpha-carboxyl methylated residue [Term] id: MOD:00115 name: S-palmitoyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-palmitoyl-L-cysteine." [DeltaMass:303, PubMed:1872406, PubMed:3166978, PubMed:8180229, PubMed:8824274, RESID:AA0106, Unimod:47#C] comment: From DeltaMass: (name misspelled "S-palmityl Cystenyl" and formula incorrect, N and O reversed) Formula: C19H35O1N2S1 Monoisotopic Mass Change: 341.239 Average Mass Change: 341.556 subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-(hexadecanoylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(hexadecanoylthio)propanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE S-palmitoyl cysteine intermediate" EXACT UniProt-feature [] synonym: "cysteine hexadecanoate thioester" EXACT RESID-alternate [] synonym: "cysteine palmitate thioester" EXACT RESID-alternate [] synonym: "LIPID S-palmitoyl cysteine" EXACT UniProt-feature [] synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" RELATED Unimod-description [] synonym: "S-palmitoyl-L-cysteine" EXACT RESID-name [] synonym: "S-palmitoylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-hexadecanoylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-palmityl Cystenyl" EXACT DeltaMass-label [] synonym: "SPamCys" EXACT PSI-MOD-label [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1 S 0" xref: DiffMono: "238.229666" xref: Formula: "C 19 H 35 N 1 O 2 S 1" xref: MassAvg: "341.55" xref: MassMono: "341.238850" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:47" xref: UniProt: "PTM-0281" is_a: MOD:00653 ! S-palmitoylated residue is_a: MOD:01684 ! palmitoylated-L-cysteine [Term] id: MOD:00116 name: S-diacylglycerol-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-diacylglycerol-L-cysteine." [PubMed:10896212, PubMed:4575979, PubMed:9056182, RESID:AA0107, Unimod:377#C] comment: Incidental to RESID:AA0060. subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-[(2S)-2-((9Z)-9-octadecenoyloxy)-3-(hexadecanoyloxy)propyl]sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-[(S)-2-((Z)-9-octadecenoyloxy)-3-(hexadecanoyloxy)propyl]thiopropanoic acid" EXACT RESID-alternate [] synonym: "Diacylglycerol" RELATED PSI-MS-label [] synonym: "diacylglycerol" RELATED Unimod-description [] synonym: "LIPID S-diacylglycerol cysteine" EXACT UniProt-feature [] synonym: "S-(1-2'-oleoyl-3'-palmitoyl-glycerol)cysteine" EXACT RESID-alternate [] synonym: "S-(2',3'-diacylglycerol)-L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-diacylglycerol-L-cysteine" EXACT RESID-name [] synonym: "SAcyl2GlyceroCys" EXACT PSI-MOD-label [] xref: UniProt: "PTM-0274" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00117 name: S-(L-isoglutamyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-glutamine residue by a thioester bond with the formation of S-(L-isoglutamyl)-L-cysteine and the release of ammonia." [ChEBI:22021, DeltaMass:0, PubMed:6838833, RESID:AA0108] comment: Cross-link 2; DeltaMass calculates the mass difference from glutamic acid rather than glutamine. subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-[(2R)-2-amino-2-carboxyethyl]sulfanyl-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(S,R)-2-amino-4-[S-(2-amino-2-carboxyethyl)thiocarboxy]butanoic acid" EXACT RESID-alternate [] synonym: "2-amino-5-(2-amino-2-carboxyethyl)thio-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoglutamyl cysteine thioester (Cys-Gln)" EXACT UniProt-feature [] synonym: "gamma-(S-cysteinyl)glutamic acid" EXACT RESID-alternate [] synonym: "S-(L-isoglutamyl)-L-cysteine" EXACT RESID-name [] synonym: "S-gamma-glutamyl (crosslinked to cysteine)" EXACT DeltaMass-label [] synonym: "XLNK-SCys-5Glu(Gln)" EXACT PSI-MOD-label [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0 S 0" xref: DiffMono: "-17.026549" xref: Formula: "C 8 H 10 N 2 O 3 S 1" xref: MassAvg: "214.24" xref: MassMono: "214.041213" xref: Origin: "C, Q" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0156" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02046 ! crosslinked L-glutamine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia [Term] id: MOD:00118 name: 2'-(S-L-cysteinyl)-L-histidine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-histidine residue by a thioether bond to form 2'-(S-L-cysteinyl)-L-histidine." [DeltaMass:0, PubMed:6210696, RESID:AA0109] comment: Cross-link 2. synonym: "(2R)-2-amino-3-[(4-[(2S)-2-amino-2-carboxyethyl]-1H-imidazol-2-yl)sulfanyl]propanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-amino-3-[2-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-1H-imidazol-4-yl]propanoic acid" EXACT RESID-alternate [] synonym: "2'-(L-cystein-S-yl)-L-histidine" EXACT RESID-name [] synonym: "CROSSLNK 2'-(S-cysteinyl)-histidine (Cys-His)" EXACT UniProt-feature [] synonym: "S-(2'-histidyl)cysteine" EXACT RESID-alternate [] synonym: "S-(2-histidyl)- (crosslinked to cysteine)" EXACT DeltaMass-label [] synonym: "XLNK-SCys-2'His" EXACT PSI-MOD-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 9 H 10 N 4 O 2 S 1" xref: MassAvg: "238.26" xref: MassMono: "238.052447" xref: Origin: "C, H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0005" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:02048 ! crosslinked L-histidine residue [Term] id: MOD:00119 name: L-lanthionine (Cys-Ser) def: "A protein modification that effectively cross-links an L-cysteine residue and an L-serine residue by a thioether bond to form L-lanthionine." [ChEBI:21347, DeltaMass:7, RESID:AA0110#CSX] comment: Cross-link 2. The natural occurrence of this modification is rare. For the more common modification see MOD:00120 meso-lanthionine [JSG]. synonym: "(2R,2'R)-3,3'-sulfanediylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "(R)-S-(2-amino-2-carboxyethyl)-L-cysteine" EXACT RESID-alternate [] synonym: "(R,R)-2,6-diamino-4-thiaheptanedioic acid" EXACT RESID-alternate [] synonym: "(R,R)-3,3'-thiobis-(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "(R,R)-bis(2-amino-2-carboxyethyl)sulfide" EXACT RESID-alternate [] synonym: "2-amino-3-(2-amino-2-carboxyethyl)sulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "3,3'-thiobis-L-alanine" EXACT RESID-alternate [] synonym: "L-lanthionine" EXACT RESID-name [] synonym: "XLNK-SCys-(L)3Dha" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 8 N 2 O 2 S 1" xref: MassAvg: "172.20" xref: MassMono: "172.030649" xref: Origin: "C, S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01839 ! L-lanthionine [Term] id: MOD:00120 name: meso-lanthionine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-serine residue by a thioether bond to form meso-lanthionine." [PubMed:15023056, PubMed:3769923, RESID:AA0111] comment: Cross-link 2. synonym: "(2R,2'S)-3,3'-sulfanediylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "(2R,2'S)-3,3'-thiobis-(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "(2R,6S)-2,6-diamino-4-thiaheptanedioic acid" EXACT RESID-alternate [] synonym: "(2R,6S)-meso-lanthionine" EXACT RESID-alternate [] synonym: "(2S)-2-amino-3-[[(2R)-2-amino-2-carboxyethyl]sulfanyl]propanoic acid" EXACT RESID-alternate [] synonym: "(2S,6R)-meso-lanthionine" RELATED RESID-misnomer [] synonym: "(R)-S-(2-amino-2-carboxyethyl)-D-cysteine" EXACT RESID-alternate [] synonym: "(R,S)-bis(2-amino-2-carboxyethyl)sulfide" EXACT RESID-alternate [] synonym: "3,3'-thiobis-meso-alanine" EXACT RESID-alternate [] synonym: "CROSSLNK Lanthionine (Cys-Ser)" EXACT UniProt-feature [] synonym: "CROSSLNK Lanthionine (Ser-Cys)" EXACT UniProt-feature [] synonym: "cysteine-3-D-alanine thioether" EXACT RESID-alternate [] synonym: "meso-lanthionine" EXACT RESID-name [] synonym: "XLNK-SCys-(D)3Dha" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565"C 0 H -2 N 0 O 0 S 0 xref: Formula: "C 6 H 8 N 2 O 2 S 1" xref: MassAvg: "172.20" xref: MassMono: "172.030649" xref: Origin: "C, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0164" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01841 ! lanthionine [Term] id: MOD:00121 name: (2S,3S,2'R)-3-methyllanthionine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-threonine residue by a thioether bond to form (2S,3S,2'R)-3-methyllanthionine." [PubMed:3769923, RESID:AA0112] comment: Cross-link 2. synonym: "(2S,3S)-2-amino-3-([(2R)-2-amino-2-carboxyethyl]sulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "(2S,3S,2'R)-2-amino-3-[(2-amino-2-carboxyethyl)thio]butanoic acid" EXACT RESID-alternate [] synonym: "(2S,3S,2'R)-3-methyllanthionine" EXACT RESID-name [] synonym: "(2S,3S,6R)-2,6-diamino-3-methyl-4-thiaheptanedioic acid" EXACT RESID-alternate [] synonym: "(2S,3S,6R)-3-methyllanthionine" EXACT RESID-alternate [] synonym: "(2S-[2R*,3R*(S*)])-2-amino-3-[(2-amino-2-carboxyethyl)thio]butanoic acid" EXACT RESID-alternate [] synonym: "3-methyl-D,L-lanthionine" EXACT RESID-alternate [] synonym: "CROSSLNK Beta-methyllanthionine (Cys-Thr)" EXACT UniProt-feature [] synonym: "CROSSLNK Beta-methyllanthionine (Thr-Cys)" EXACT UniProt-feature [] synonym: "cysteine-3-D-butyrine thioether" EXACT RESID-alternate [] synonym: "XLNK-SCys-3Dhb" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 10 N 2 O 2 S 1" xref: MassAvg: "186.23" xref: MassMono: "186.046299" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0067" is_a: MOD:01981 ! 3-methyllanthionine [Term] id: MOD:00122 name: 3'-(S-L-cysteinyl)-L-tyrosine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-tyrosine residue by a thioether bond to form 2-(S-L-cysteinyl)-L-tyrosine." [DeltaMass:0, PubMed:15917234, PubMed:2002850, RESID:AA0113] comment: Cross-link 2. synonym: "(2S)-2-amino-3-(3-[(2R)2-amino-2-carboxyethylsulfanyl]-4-hydroxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-[3-(2-amino-2-carboxyethylthio)-4-hydroxyphenyl]propanoic acid" EXACT RESID-alternate [] synonym: "3'-(cystein-S-yl)tyrosine" EXACT RESID-alternate [] synonym: "3'-(L-cystein-S-yl)-L-tyrosine" EXACT RESID-name [] synonym: "CROSSLNK 3'-(S-cysteinyl)-tyrosine (Cys-Tyr)" EXACT UniProt-feature [] synonym: "CROSSLNK 3'-(S-cysteinyl)-tyrosine (Tyr-Cys)" EXACT UniProt-feature [] synonym: "S-(3-Tyr) (Crosslinked to Cysteine)" EXACT DeltaMass-label [] synonym: "S-(tyros-3'-yl)cysteine" EXACT RESID-alternate [] synonym: "XLNK-SCys-3'Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 12 H 12 N 2 O 3 S 1" xref: MassAvg: "264.30" xref: MassMono: "264.056863" xref: Origin: "C, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0019" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00123 name: N6-carboxy-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-carboxy-L-lysine." [PubMed:11369851, PubMed:4436319, PubMed:637859, PubMed:7754395, RESID:AA0114, Unimod:299#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(carboxyamino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-amino-6-carbamic hexanoic acid" EXACT RESID-alternate [] synonym: "Carboxy" RELATED Unimod-interim [] synonym: "Carboxylation" RELATED Unimod-description [] synonym: "lysine NZ-carboxylic acid" EXACT RESID-alternate [] synonym: "MOD_RES N6-carboxylysine" EXACT UniProt-feature [] synonym: "N6-carbamyllysine" RELATED RESID-misnomer [] synonym: "N6-carboxy-L-lysine" EXACT RESID-name [] synonym: "N6-carboxylysine" EXACT RESID-alternate [] synonym: "N6CbxLys" EXACT PSI-MOD-label [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 H 0 N 0 O 2" xref: DiffMono: "43.989829" xref: Formula: "C 7 H 12 N 2 O 3" xref: MassAvg: "172.18" xref: MassMono: "172.084792" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:299" xref: UniProt: "PTM-0191" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01152 ! carboxylated residue [Term] id: MOD:00124 name: N6-1-carboxyethyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-1-carboxyethyl-L-lysine." [PubMed:3123486, PubMed:8253186, PubMed:8421682, RESID:AA0115, Unimod:378#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-([(1S)-1-carboxyethyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "Carboxyethyl" RELATED PSI-MS-label [] synonym: "carboxyethyl" RELATED Unimod-description [] synonym: "MOD_RES N6-1-carboxyethyl lysine" EXACT UniProt-feature [] synonym: "N6-(1-carboxyethyl)-L-lysine" EXACT RESID-name [] synonym: "N6-(1-carboxyethyl)lysine" EXACT RESID-alternate [] synonym: "N6CbzEtLys" EXACT PSI-MOD-label [] synonym: "NZ-(1-carboxyethyl)lysine" EXACT RESID-alternate [] xref: DiffAvg: "72.06" xref: DiffFormula: "C 3 H 4 N 0 O 2" xref: DiffMono: "72.021129" xref: Formula: "C 9 H 16 N 2 O 3" xref: MassAvg: "200.24" xref: MassMono: "200.116092" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:378" xref: UniProt: "PTM-0189" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00125 name: hypusine def: "A protein modification that effectively converts an L-lysine residue to hypusine, N6-(4-amino-2-hydroxybutyl)-L-lysine." [DeltaMass:0, PubMed:6806267, PubMed:8108861, RESID:AA0116, Unimod:379#K] comment: This modification occurs uniquely in translation initiation factor eIF-5A [JSG]. subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-([(2R)-4-amino-2-hydroxybutyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "(2S,9R)-2,11-diazanyl-9-hydroxy-7-azaundecanoic acid" EXACT RESID-alternate [] synonym: "(2S,9R)-hypusine" EXACT RESID-alternate [] synonym: "2-azanyl-6-[(4-azanyl-2-hydroxybutyl)azanyl]hexanoic acid" EXACT RESID-alternate [] synonym: "Hypu" EXACT PSI-MOD-label [] synonym: "Hypusine" RELATED PSI-MS-label [] synonym: "hypusine" RELATED Unimod-description [] synonym: "L-hypusine" EXACT RESID-name [] synonym: "MOD_RES Hypusine" EXACT UniProt-feature [] synonym: "N-(4-NH2-2-OH-butyl)- (of Lysine)" EXACT DeltaMass-label [] synonym: "N6-(4-amino-2-hydroxybutyl)-L-lysine" EXACT RESID-alternate [] xref: DiffAvg: "87.12" xref: DiffFormula: "C 4 H 9 N 1 O 1" xref: DiffMono: "87.068414" xref: Formula: "C 10 H 21 N 3 O 2" xref: MassAvg: "215.30" xref: MassMono: "215.163377" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:379" xref: UniProt: "PTM-0150" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01884 ! 4-aminobutylated residue relationship: derives_from MOD:01880 ! L-deoxyhypusine [Term] id: MOD:00126 name: N6-biotinyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-biotinyl-L-lysine." [DeltaMass:305, PubMed:16109483, PubMed:3178228, PubMed:7948875, PubMed:8747466, RESID:AA0117, Unimod:3#K] comment: From DeltaMass: Average Mass: 354 Formula:C 16 H 26 O 4 N 3 S 1 (formula incorrect, N and O reversed) Monoisotopic Mass Change:354.172 Average Mass Change:354.471 References:PE Sciex. subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(5-[(3aS,4S,6aR)-2-oxohexahydro-1H-thieno[3,4-d]imidazol-4-yl]pentanoylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "(3aS-(3aalpha,4beta,6aalpha))-N6-(5-(hexahydro-2-oxo-1H-thieno(3,4-d)imidazol-4-yl)-1-oxopentyl)-L-lysine" EXACT RESID-alternate [] synonym: "biocytin" EXACT RESID-alternate [] synonym: "Biotin" RELATED PSI-MS-label [] synonym: "biotinyl lysyl" EXACT DeltaMass-label [] synonym: "Biotinylation" RELATED Unimod-description [] synonym: "epsilon-N-biotinyllysine" EXACT RESID-alternate [] synonym: "MOD_RES N6-biotinyllysine" EXACT UniProt-feature [] synonym: "N6-[5-((3aS,4S,6aR)-hexahydro-2-oxo-1H-thieno[3,4-d]imidazol-4-yl)-1-oxopentyl]-L-lysine" EXACT RESID-alternate [] synonym: "N6-biotinyl-L-lysine" EXACT RESID-name [] synonym: "N6-biotinyllysine" EXACT RESID-alternate [] synonym: "N6BtnLys" EXACT PSI-MOD-label [] xref: DiffAvg: "226.29" xref: DiffFormula: "C 10 H 14 N 2 O 2 S 1" xref: DiffMono: "226.077599" xref: Formula: "C 16 H 26 N 4 O 3 S 1" xref: MassAvg: "354.47" xref: MassMono: "354.172562" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:3" xref: UniProt: "PTM-0382" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:01885 ! biotinylated residue [Term] id: MOD:00127 name: N6-lipoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-lipoyl-L-lysine." [DeltaMass:0, OMSSA:67, PubMed:3421911, PubMed:3522581, PubMed:7719855, RESID:AA0118, Unimod:42#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(5-[(3R)-1,2-dithiolan-3-yl]pentanamido)hexanoic acid" EXACT RESID-alternate [] synonym: "(2S)-2-amino-6-[(5-[(3R)-1,2-dithiolan-3-yl]pentanoyl)amino]hexanoic acid" EXACT RESID-systematic [] synonym: "(2S,6'R)-2-amino-6-(6,8-dithiooctanamido)hexanoic acid" EXACT RESID-alternate [] synonym: "2-amino-6-(5-[1,2-dithiolan-3-yl]-1-oxopentyl)aminohexanoic acid" EXACT RESID-alternate [] synonym: "Lipoyl" RELATED PSI-MS-label [] synonym: "Lipoyl" RELATED Unimod-description [] synonym: "lipoylk" EXACT OMSSA-label [] synonym: "MOD_RES N6-lipoyllysine" EXACT UniProt-feature [] synonym: "N-Lipoyl- (on Lysine)" EXACT DeltaMass-label [] synonym: "N6-6,8-dithiooctanoyllysine" EXACT RESID-alternate [] synonym: "N6-lipoyl-L-lysine" EXACT RESID-name [] synonym: "N6-lipoyllysine" EXACT RESID-alternate [] synonym: "N6LipLys" EXACT PSI-MOD-label [] xref: DiffAvg: "188.30" xref: DiffFormula: "C 8 H 12 N 0 O 1 S 2" xref: DiffMono: "188.032957" xref: Formula: "C 14 H 24 N 2 O 2 S 2" xref: MassAvg: "316.48" xref: MassMono: "316.127920" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:42" xref: UniProt: "PTM-0383" is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00128 name: N6-pyridoxal phosphate-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-pyridoxal phosphate-L-lysine." [DeltaMass:0, PubMed:1544460, RESID:AA0119, Unimod:46#K] comment: From DeltaMass: Average Mass: 231 subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-[([3-hydroxy-2-methyl-5-phosphonooxymethylpyridin-4-yl]methylidene)amino]hexanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES N6-(pyridoxal phosphate)lysine" EXACT UniProt-feature [] synonym: "N6-pyridoxal phosphate-L-lysine" EXACT RESID-name [] synonym: "N6PydoxLys" EXACT PSI-MOD-label [] synonym: "Pyridoxal phosphate" RELATED Unimod-description [] synonym: "Pyridoxal phosphate (Schiff Base formed to lysine)" EXACT DeltaMass-label [] synonym: "PyridoxalPhosphate" RELATED PSI-MS-label [] xref: DiffAvg: "229.13" xref: DiffFormula: "C 8 H 8 N 1 O 5 P 1" xref: DiffMono: "229.014009" xref: Formula: "C 14 H 20 N 3 O 6 P 1" xref: MassAvg: "357.30" xref: MassMono: "357.108972" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:46" xref: UniProt: "PTM-0387" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00129 name: N6-retinylidene-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-retinylidene-L-lysine, the adduct of retinal." [PubMed:6794028, PubMed:6870827, RESID:AA0120, Unimod:380#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-[(2E,4E,6E,8E)-3,7-dimethyl-9-(2,6,6-trimethylcyclohex-1-en-1-yl)-2,4,6,8-nonatetraenylidene]aminohexanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES N6-(retinylidene)lysine" EXACT UniProt-feature [] synonym: "N6-retinal-L-lysine" EXACT RESID-alternate [] synonym: "N6-retinyl-lysine" EXACT RESID-alternate [] synonym: "N6-retinylidene-L-lysine" EXACT RESID-name [] synonym: "N6RetalLys" EXACT PSI-MOD-label [] synonym: "retinal" RELATED Unimod-description [] synonym: "Retinylidene" RELATED PSI-MS-label [] xref: DiffAvg: "266.43" xref: DiffFormula: "C 20 H 26 N 0 O 0" xref: DiffMono: "266.203451" xref: Formula: "C 26 H 38 N 2 O 1" xref: MassAvg: "394.60" xref: MassMono: "394.298414" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:380" xref: UniProt: "PTM-0388" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00130 name: L-allysine def: "A protein modification that effectively converts an L-lysine residue to L-allysine." [ChEBI:17917, DeltaMass:0, PubMed:11120890, PubMed:11332453, PubMed:358196, PubMed:5337886, PubMed:5529814, RESID:AA0121, Unimod:352#K] comment: From DeltaMass: Average Mass: -1 subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-oxohexanoic acid" EXACT RESID-systematic [] synonym: "2-amino-5-formylvaleric acid" EXACT RESID-alternate [] synonym: "2-amino-adipic acid semialdahyde" EXACT RESID-alternate [] synonym: "2-aminoadipate 6-semialdehyde" EXACT RESID-alternate [] synonym: "5-formyl-norvaline" EXACT RESID-alternate [] synonym: "6-oxonorleucine" EXACT RESID-alternate [] synonym: "AASA" EXACT RESID-alternate [] synonym: "Allysine (from Lysine)" EXACT DeltaMass-label [] synonym: "alpha-amino-adipic acid delta-semialdahyde" EXACT RESID-alternate [] synonym: "L-allysine" EXACT RESID-name [] synonym: "Lys->Allysine" RELATED PSI-MS-label [] synonym: "Lysal" EXACT PSI-MOD-label [] synonym: "Lysine oxidation to aminoadipic semialdehyde" RELATED Unimod-description [] synonym: "MOD_RES Allysine" EXACT UniProt-feature [] synonym: "Oxidation of lysine (to aminoadipic semialdehyde)" EXACT DeltaMass-label [] xref: DiffAvg: "-1.03" xref: DiffFormula: "C 0 H -3 N -1 O 1" xref: DiffMono: "-1.031634" xref: Formula: "C 6 H 9 N 1 O 2" xref: MassAvg: "127.14" xref: MassMono: "127.063329" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:352" xref: UniProt: "PTM-0059" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00131 name: L-2-aminoadipic acid def: "A protein modification that effectively converts an L-lysine residue to L-2-aminoadipic acid." [DeltaMass:353, PubMed:336041, PubMed:358196, PubMed:7419498, RESID:AA0122, Unimod:381#K] comment: From DeltaMass: References:Amici A, Levine, RL, Tsai, L, and Stadtman, ER: Conversion of amino acid residues in proteins and amino acid homopolymers to carbonyl derivatives by metal-catalyzed oxidation reactions. Journal of Biological Chemistry 264: 3341-3346 1989.Requena JR, Chao CC, Levine RL, and Stadtman ER: Glutamic and aminoadipic semialdehydes are the main carbonyl products of metal-catalyzed oxidation of proteins. Proceedings of the National Academy of Sciences USA 98: 69-74 2001. Notes:Expected reaction following oxidation of lysine to aminoadipic semialdehyde. Not proven experimentally but deduced by reference to the similar known reaction of oxidation of Arg to Glu via the semialdehyde. [This has been observed as a natural modification, see RESID:AA0122. JSG] subset: PSI-MOD-slim synonym: "(2S)-2-aminohexanedioic acid" EXACT RESID-systematic [] synonym: "2-amino-1,4-butanedicarboxylic acid" EXACT RESID-alternate [] synonym: "alpha-amino adipic acid" RELATED Unimod-description [] synonym: "L-2-aminoadipic acid" EXACT RESID-name [] synonym: "L-alpha-aminoadipic acid" EXACT RESID-alternate [] synonym: "Lys->AminoadipicAcid" RELATED PSI-MS-label [] synonym: "Lysoic" EXACT PSI-MOD-label [] synonym: "Oxidation of lysine (to aminoadipic acid)" EXACT DeltaMass-label [] xref: DiffAvg: "14.97" xref: DiffFormula: "C 0 H -3 N -1 O 2" xref: DiffMono: "14.963280" xref: Formula: "C 6 H 9 N 1 O 3" xref: MassAvg: "143.14" xref: MassMono: "143.058243" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:381" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00132 name: L-lysinoalanine (Lys-Ser) def: "A protein modification that effectively crosslinks an L-serine residue and an L-lysine residue to release water and form 2-amino-6-(2-amino-2-carboxyethylamino)hexanoic acid." [DeltaMass:0, PubMed:2544544, RESID:AA0123#KSX] comment: Cross-link 2. This entry is for the crosslink of peptidyl serine and peptidyl lysine. For the modification of peptidyl lysine by a free serine see MOD:01838. From DeltaMass: Average Mass: -34. synonym: "(2R,9S)-lysinoalanine" EXACT RESID-alternate [] synonym: "(2S)-2-amino-6-([(2R)-2-amino-2-carboxyethyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "alaninolysine" EXACT RESID-alternate [] synonym: "CROSSLNK Lysinoalanine (Ser-Lys)" EXACT UniProt-feature [] synonym: "L-lysinoalanine" EXACT RESID-name [] synonym: "LAL" EXACT RESID-alternate [] synonym: "Lysinoalanine (from Cysteine)" EXACT DeltaMass-label [] synonym: "N-epsilon-(2-amino-2-carboxyethyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-(2-amino-2-carboxyethyl)-L-lysine" EXACT RESID-alternate [] synonym: "XLNK-N6Lys-3Dha(Ser)" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 9 H 15 N 3 O 2" xref: MassAvg: "197.24" xref: MassMono: "197.116427" xref: Origin: "K, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0172" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01853 ! L-lysinoalanine [Term] id: MOD:00133 name: N6-(L-isoglutamyl)-L-lysine (Gln) def: "A protein modification that effectively crosslinks an L-glutamine residue and an L-lysine residue by an isopeptide bond with the formation of N6-(L-isoglutamyl)-L-lysine and the release of ammonia." [ChEBI:21863, DeltaMass:0, PubMed:2461365, PubMed:5637041, PubMed:5656070, PubMed:8598899, RESID:AA0124#GLN] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-([(4S)-4-amino-4-carboxybutanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-6-([4-azanyl-4-carboxybutanoyl]azanyl)hexanoic acid" EXACT RESID-alternate [] synonym: "5-glutamyl N6-lysine" EXACT RESID-alternate [] synonym: "CROSSLNK Isoglutamyl lysine isopeptide (Lys-Gln)" EXACT UniProt-feature [] synonym: "N alpha -(gamma-Glutamyl)-lysine" EXACT DeltaMass-label [] synonym: "N(epsilon)-(gamma-glutamyl)lysine" EXACT RESID-alternate [] synonym: "N6-(L-isoglutamyl)-L-lysine" EXACT RESID-name [] synonym: "XLNK-N6Lys-5Glu(Gln)" EXACT PSI-MOD-label [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 11 H 17 N 3 O 3" xref: MassAvg: "239.27" xref: MassMono: "239.126991" xref: Origin: "K, Q" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0158" is_a: MOD:02046 ! crosslinked L-glutamine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia is_a: MOD:01630 ! N6-(L-isoglutamyl)-L-lysine [Term] id: MOD:00134 name: N6-glycyl-L-lysine def: "A protein modification that effectively crosslinks an L-lysine residue and a glycine residue by an isopeptide bond to form N6-glycyl-L-lysine." [ChEBI:21885, RESID:AA0125] comment: Cross-link 2; this is the common crosslink structure formed by ubiquitin, SUMO, and similar proteins. subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-[(aminoacetyl)amino]hexanoic acid" EXACT RESID-systematic [] synonym: "N6-(glycyl)-L-lysine" EXACT RESID-name [] synonym: "N6-glycyllysine" EXACT RESID-alternate [] synonym: "XLNK-N6Lys-1Gly" EXACT PSI-MOD-label [] synonym: "CROSSLNK Glycyl lysine isopeptide (Gly-Lys) (interchain with K-...)" EXACT UniProt-feature [] synonym: "CROSSLNK Glycyl lysine isopeptide (Lys-Gly) (interchain with G-...)" EXACT UniProt-feature [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 8 H 14 N 3 O 2" xref: MassAvg: "184.22" xref: MassMono: "184.108602" xref: Origin: "G, K" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0134" is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00135 name: N-(L-isoaspartyl)-glycine (Asn) def: "A protein modification that effectively crosslinks an L-asparagine residue and a glycine residue by an isopeptide bond with formation of N-(L-isoaspartyl)glycine and the release of ammonia." [ChEBI:21479, PubMed:1826288, RESID:AA0126] comment: Cross-link 2. synonym: "(2S)-2-amino-4-(carboxymethyl)amino-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-amino-N4-(carboxymethyl)-butanediamic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoaspartyl glycine isopeptide (Asn-Gly)" EXACT UniProt-feature [] synonym: "CROSSLNK Isoaspartyl glycine isopeptide (Gly-Asn)" EXACT UniProt-feature [] synonym: "isoaspartyl glycine" EXACT RESID-alternate [] synonym: "N-(L-isoaspartyl)-glycine" EXACT RESID-name [] synonym: "N-beta-aspartylglycine" EXACT RESID-alternate [] synonym: "N4-(carboxymethyl)-asparagine" EXACT RESID-alternate [] synonym: "XLNK-4Asp-NGly(Asn)" EXACT PSI-MOD-label [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 6 H 7 N 2 O 3" xref: MassAvg: "155.13" xref: MassMono: "155.045667" xref: Origin: "G, N" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0489" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia is_a: MOD:01928 ! N-(L-isoaspartyl)-glycine [Term] id: MOD:00136 name: pyruvic acid (Cys) def: "A protein modification that effectively converts an L-cysteine residue to pyruvic acid." [PubMed:10085076, PubMed:3042771, PubMed:8464063, RESID:AA0127#CYS, Unimod:382] subset: PSI-MOD-slim synonym: "2-oxopropanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES Pyruvic acid (Cys)" EXACT UniProt-feature [] synonym: "Pyruv(Cys)" EXACT PSI-MOD-label [] synonym: "pyruvic acid" EXACT RESID-name [] xref: DiffAvg: "-33.09" xref: DiffFormula: "C 0 H -3 N -1 O 1 S -1" xref: DiffMono: "-33.003705" xref: Formula: "C 3 H 3 O 2" xref: MassAvg: "71.06" xref: MassMono: "71.013304" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:382" xref: UniProt: "PTM-0265" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01154 ! pyruvic acid [Term] id: MOD:00137 name: L-3-phenyllactic acid def: "A protein modification that effectively converts an L-phenylalanine residue into L-3-phenyllactic acid." [PubMed:1973541, RESID:AA0128, Unimod:7#F] comment: This modification is not the result of deamidation, instead the alpha amino group is replaced with an hydroxyl group. synonym: "(2S)-2-hydroxy-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "Deamidated" RELATED Unimod-interim [] synonym: "Deamidation" RELATED Unimod-description [] synonym: "L-3-phenyllactic acid" EXACT RESID-name [] synonym: "MOD_RES 3-phenyllactic acid" EXACT UniProt-feature [] xref: DiffAvg: "0.98" xref: DiffFormula: "C 0 H -1 N -1 O 1" xref: DiffMono: "0.984016" xref: Formula: "C 9 H 9 O 2" xref: MassAvg: "149.17" xref: MassMono: "149.060255" xref: Origin: "F" xref: TermSpec: "N-term" xref: Unimod: "Unimod:7" xref: UniProt: "PTM-0035" is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:00138 name: 2-oxobutanoic acid def: "A protein modification that effectively converts an L-threonine residue into 2-oxobutanoic acid." [PubMed:15023056, PubMed:1680314, PubMed:2253617, PubMed:2764678, RESID:AA0129, Unimod:385#T, ChEBI:149508] synonym: "2-ketobutyric acid" EXACT RESID-alternate [] synonym: "2-oxobutanoic acid" EXACT RESID-name [] synonym: "2-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-oxobutyric acid" EXACT RESID-alternate [] synonym: "Ammonia-loss" RELATED Unimod-interim [] synonym: "Loss of ammonia" RELATED Unimod-description [] synonym: "MOD_RES 2-oxobutanoic acid" EXACT UniProt-feature [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 4 H 5 O 2" xref: MassAvg: "85.08" xref: MassMono: "85.028954" xref: Origin: "T" xref: TermSpec: "N-term" xref: Unimod: "Unimod:385" xref: UniProt: "PTM-0017" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01160 ! deaminated residue [Term] id: MOD:00139 name: N2-succinyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to N2-succinyl-L-tryptophan." [PubMed:11857757, PubMed:12175151, PubMed:8471040, RESID:AA0130, Unimod:64#N-term] synonym: "(2S)-2-(3-carboxypropanoyl)amino-3-(1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-amino-(6,7-dihydro-6,7-dioxo-1H-indole)-3-propanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N2-succinyltryptophan" EXACT UniProt-feature [] synonym: "N2-succinyl-L-tryptophan" EXACT RESID-name [] synonym: "Succinic anhydride labeling reagent light form (N-term)" RELATED Unimod-description [] synonym: "Succinyl" RELATED PSI-MS-label [] xref: DiffAvg: "100.07" xref: DiffFormula: "C 4 H 4 N 0 O 3" xref: DiffMono: "100.016044" xref: Formula: "C 15 H 15 N 2 O 4" xref: MassAvg: "287.29" xref: MassMono: "287.103182" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:64" xref: UniProt: "PTM-0181" is_a: MOD:02081 ! alpha-amino succinylated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00140 name: S-phycocyanobilin-L-cysteine def: "A protein modification that effectively results from forming an adduct between a cysteine residue and the tetrapyrrole compound phycocyanobilin." [ChEBI:15617, DeltaMass:0, PubMed:16644722, PubMed:3208761, PubMed:3838747, PubMed:7918400, RESID:AA0131, Unimod:387#C] comment: From DeltaMass: Average Mass: 587. synonym: "(2R,3R)-3-[(1R)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-18-ethyl-1,2,3,19,21,22,24-heptahydro-2,7,13,17-tetramethyl-1,19-dioxo-(21H,22H,24H)-bilin-8,12-dipropanoic acid" EXACT RESID-alternate [] synonym: "(2R,3R)-3-[(1R)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-8,12-bis(2-carboxyethyl)-18-ethyl-2,7,13,17-tetramethyl-1,2,3,19,21,22,24-heptahydrobilin-1,19(21H,22H,24H)-dione" EXACT RESID-systematic [] synonym: "BINDING Phycocyanobilin chromophore (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "PCB" EXACT RESID-alternate [] synonym: "phycobilin cysteine" EXACT RESID-alternate [] synonym: "Phycocyanobilin" RELATED PSI-MS-label [] synonym: "phycocyanobilin" RELATED Unimod-description [] synonym: "phycocyanobilin cysteine adduct" EXACT RESID-alternate [] synonym: "S-Phycocyanobilin (on Cysteine)" EXACT DeltaMass-label [] synonym: "S-phycocyanobilin-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "586.69" xref: DiffFormula: "C 33 H 38 N 4 O 6 S 0" xref: DiffMono: "586.279135" xref: Formula: "C 36 H 43 N 5 O 7 S 1" xref: MassAvg: "689.83" xref: MassMono: "689.288320" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:387" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00141 name: S-phycoerythrobilin-L-cysteine def: "A protein modification that effectively results from forming an adduct between a cysteine residue and the tetrapyrrole compound phycoerythrobilin." [ChEBI:15618, PubMed:14588022, PubMed:3208761, PubMed:3838747, PubMed:8876649, RESID:AA0132, Unimod:388#C] synonym: "(2S,3R,16R)-18-ethenyl-3-[(1R)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-8,12-bis(2-carboxyethyl)-2,7,13,17-tetramethyl-2,3,15,16-tetrahydrobilin-1,19(21H,22H,24H)-dione" EXACT RESID-systematic [] synonym: "18-ethenyl-3-[1-((2-amino-2-carboxy)ethylsulfanyl)ethyl]-2,3,15,16-tetrahydro-2,7,13,17-tetramethyl-1,19-dioxo-(21H,22H,24H)-bilin-8,12-dipropanoic acid" EXACT RESID-alternate [] synonym: "BINDING Phycoerythrobilin chromophore (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "PEB" EXACT RESID-alternate [] synonym: "Phycoerythrobilin" RELATED PSI-MS-label [] synonym: "phycoerythrobilin" RELATED Unimod-description [] synonym: "phycoerythrobilin cysteine adduct" EXACT RESID-alternate [] synonym: "S-phycoerythrobilin-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "588.70" xref: DiffFormula: "C 33 H 40 N 4 O 6 S 0" xref: DiffMono: "588.294785" xref: Formula: "C 36 H 45 N 5 O 7 S 1" xref: MassAvg: "691.84" xref: MassMono: "691.303970" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:388" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00142 name: S-phytochromobilin-L-cysteine def: "A protein modification that effectively results from forming an adduct between a cysteine residue and the tetrapyrrole compound phytochromobilin." [ChEBI:15619, PubMed:1634523, PubMed:16593380, PubMed:3208761, PubMed:7918400, RESID:AA0133, Unimod:389#C] synonym: "(2R,3R)-3-[(1R)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-8,12-bis(2-carboxyethyl)-18-ethyl-2,7,13,17-tetramethyl-1,2,3,19,21,22,24-heptahydrobilin-1,19(21H,22H,24H)-dione" EXACT RESID-systematic [] synonym: "18-ethenyl-3-[1-((2-amino-2-carboxy)ethylsulfanyl)ethyl]-1,2,3,19,22,24-hexahydro-2,7,13,17-tetramethyl-1,19-dioxo-21H-biline-8,12-dipropanoic acid" EXACT RESID-alternate [] synonym: "BINDING Phytochromobilin chromophore (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "phytochrome chromophore" EXACT RESID-alternate [] synonym: "Phytochromobilin" RELATED PSI-MS-label [] synonym: "phytochromobilin" RELATED Unimod-description [] synonym: "phytochromobilin cysteine adduct" EXACT RESID-alternate [] synonym: "S-phytochromobilin-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "584.67" xref: DiffFormula: "C 33 H 36 N 4 O 6 S 0" xref: DiffMono: "584.263485" xref: Formula: "C 36 H 41 N 5 O 7 S 1" xref: MassAvg: "687.81" xref: MassMono: "687.272670" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:389" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00143 name: heme-bis-L-cysteine def: "A protein modification that effectively results from forming an adduct between two cysteine residues and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [ChEBI:17627, PubMed:5545094, PubMed:8827449, RESID:AA0134] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "(7,12-bis[(1S)-1-([(2R)-2-amino-2-carboxyethyl]sulfanyl)ethyl]-3,8,13,17-tetramethyl-21H,23H-porphine-2,18-bis[2-carboxyethyl]-N21,N22,N23,N24)-ferrate" EXACT RESID-systematic [] synonym: "2,4-bis[1-(S-cysteinyl)ethyl]protoporphyrin IX" EXACT RESID-alternate [] synonym: "BINDING Heme (covalent)" EXACT UniProt-feature [] synonym: "biscysteinyl heme" EXACT RESID-alternate [] synonym: "heme-bis-L-cysteine" EXACT RESID-name [] synonym: "HemeCys2" EXACT PSI-MOD-label [] xref: DiffAvg: "616.50" xref: DiffFormula: "C 34 Fe 1 H 32 N 4 O 4 S 0" xref: DiffMono: "616.177293" xref: Formula: "C 40 Fe 1 H 42 N 6 O 6 S 2" xref: MassAvg: "822.78" xref: MassMono: "822.195663" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00144 name: heme-L-cysteine def: "A protein modification that effectively results from forming an adduct between a cysteine residue and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [ChEBI:17627, DeltaMass:0, PubMed:170910, PubMed:192772, PubMed:2536325, PubMed:9535866, RESID:AA0135, Unimod:390#C] comment: From DeltaMass: Average Mass: 617. subset: PSI-MOD-slim synonym: "(12-ethenyl-7-[(1S)-1-([(2R)-2-amino-2-carboxyethyl]sulfanyl)ethyl]-3,8,13,17-tetramethyl-21H,23H-porphine-2,18-bis[2-carboxyethyl]-N21,N22,N23,N24)-ferrate" EXACT RESID-systematic [] synonym: "4-[1-(S-cysteinyl)ethyl]protoporphyrin IX" EXACT RESID-alternate [] synonym: "BINDING Heme (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "cysteinyl heme" EXACT RESID-alternate [] synonym: "Heme" RELATED PSI-MS-label [] synonym: "heme" RELATED Unimod-description [] synonym: "heme-L-cysteine" EXACT RESID-name [] synonym: "HemeCys1" EXACT PSI-MOD-label [] synonym: "S-Heme (on Cysteine)" EXACT DeltaMass-label [] xref: DiffAvg: "616.50" xref: DiffFormula: "C 34 Fe 1 H 32 N 4 O 4 S 0" xref: DiffMono: "616.177293" xref: Formula: "C 37 Fe 1 H 37 N 5 O 5 S 1" xref: MassAvg: "719.64" xref: MassMono: "719.186478" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:390" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00145 name: tetrakis-L-cysteinyl iron def: "A protein modification that effectively converts four L-cysteine residues iron atom to tetrakis-L-cysteinyl iron." [PubMed:1303768, PubMed:2244884, RESID:AA0136] comment: Cross-link 4. synonym: "METAL Iron" EXACT UniProt-feature [] synonym: "tetrakis(cysteinato-kappaS)-iron" EXACT RESID-systematic [] synonym: "tetrakis-L-cysteinyl iron" EXACT RESID-name [] xref: DiffAvg: "51.81" xref: DiffFormula: "C 0 Fe 1 H -4 N 0 O 0 S 0" xref: DiffMono: "51.904735" xref: FormalCharge: "2-" xref: Formula: "C 12 Fe 1 H 16 N 4 O 4 S 4" xref: MassAvg: "464.37" xref: MassMono: "463.941474" xref: Origin: "C, C, C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00738 ! iron containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00146 name: tetrakis-L-cysteinyl diiron disulfide def: "A protein modification that effectively converts four L-cysteine residues and a two-iron two-sulfur cluster to tetrakis-L-cysteinyl diiron disulfide." [PubMed:2123937, PubMed:6801028, PubMed:7763242, PubMed:8688437, RESID:AA0137] comment: Cross-link 4. synonym: "METAL Iron-sulfur (2Fe-2S)" EXACT UniProt-feature [] synonym: "METAL Iron-sulfur (2Fe-2S); shared with dimeric partner" EXACT UniProt-feature [] synonym: "tetrakis-L-cysteinyl diiron disulfide" EXACT RESID-name [] synonym: "tetrakiscysteinato-1kappa(2)S,2kappa(2)S-di-mu-sulfido-diiron" EXACT RESID-systematic [] xref: DiffAvg: "171.78" xref: DiffFormula: "C 0 Fe 2 H -4 N 0 O 0 S 2" xref: DiffMono: "171.783814" xref: FormalCharge: "2-" xref: Formula: "C 12 Fe 2 H 16 N 4 O 4 S 6" xref: MassAvg: "584.34" xref: MassMono: "583.820553" xref: Origin: "C, C, C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00147 name: hexakis-L-cysteinyl triiron trisulfide def: "A protein modification that effectively converts six L-cysteine residues and a three-iron three-sulfur cluster to hexakis-L-cysteinyl triiron trisulfide." [PubMed:3379067, PubMed:3932661, PubMed:7354058, RESID:AA0138] comment: Cross-link 6. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "hexakis-L-cysteinyl triiron trisulfide" EXACT RESID-name [] synonym: "tri-mu-sulfido-hexakiscysteinato-1kappa(2)S,2kappa(2)S,3kappa(2)S-triiron" EXACT RESID-systematic [] synonym: "tri-mu-sulfidotris(biscysteinato-kappaS-iron)" EXACT RESID-alternate [] xref: DiffAvg: "257.67" xref: DiffFormula: "C 0 Fe 3 H -6 N 0 O 0 S 3" xref: DiffMono: "257.675721" xref: FormalCharge: "3-" xref: Formula: "C 18 Fe 3 H 24 N 6 O 6 S 9" xref: MassAvg: "876.50" xref: MassMono: "875.730830" xref: Origin: "C, C, C, C, C, C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00148 name: tris-L-cysteinyl triiron tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues and a three-iron four-sulfur cluster to tris-L-cysteinyl triiron tetrasulfide." [PubMed:10555576, PubMed:2056535, PubMed:3422475, PubMed:6848518, PubMed:7819255, PubMed:9063899, RESID:AA0139] comment: Cross-link 3. synonym: "METAL Iron-sulfur (3Fe-4S)" EXACT UniProt-feature [] synonym: "mu3-sulfido tri-mu-sulfido tris-S-L-cysteinyl triiron" EXACT RESID-alternate [] synonym: "mu3-sulfido-tri-mu-sulfido-triscysteinato-1kappaS,2kappaS,3kappaS-triiron" EXACT RESID-systematic [] synonym: "tris-L-cysteinyl triiron tetrasulfide" EXACT RESID-name [] synonym: "tris-L-cysteinyl triiron tetrasulfide C3 cluster" EXACT RESID-alternate [] synonym: "tris-L-cysteinyl triiron tetrasulfide cubane form" EXACT RESID-alternate [] synonym: "tris-L-cysteinyl triiron tetrasulfide cuboid cluster" EXACT RESID-alternate [] synonym: "tris-L-cysteinyl triiron tetrasulfide trigonal cluster" EXACT RESID-alternate [] xref: DiffAvg: "292.75" xref: DiffFormula: "C 0 Fe 3 H -3 N 0 O 0 S 4" xref: DiffMono: "292.671267" xref: FormalCharge: "3-" xref: Formula: "C 9 Fe 3 H 12 N 3 O 3 S 7" xref: MassAvg: "602.17" xref: MassMono: "601.698821" xref: Origin: "C, C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00149 name: tetrakis-L-cysteinyl tetrairon tetrasulfide def: "A protein modification that effectively converts four L-cysteine residues and a four-iron four-sulfur cluster to tetrakis-L-cysteinyl tetrairon tetrasulfide." [PubMed:3351918, PubMed:7803404, PubMed:7819196, PubMed:932007, RESID:AA0140] comment: Cross-link 4. synonym: "METAL Iron-sulfur (4Fe-4S)" EXACT UniProt-feature [] synonym: "METAL Iron-sulfur (4Fe-4S); shared with dimeric partner" EXACT UniProt-feature [] synonym: "tetra-mu3-sulfido-tetrakis(cysteinato)-1kappaS,2kappaS,3kappaS,4kappaS-tetrahedro-tetrairon" EXACT RESID-systematic [] synonym: "tetra-mu3-sulfidotetrakis(S-cysteinyliron)" EXACT RESID-alternate [] synonym: "tetrakis-L-cysteinyl tetrairon tetrasulfide" EXACT RESID-name [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.597831" xref: FormalCharge: "2-" xref: Formula: "C 12 Fe 4 H 16 N 4 O 4 S 8" xref: MassAvg: "760.15" xref: MassMono: "759.634570" xref: Origin: "C, C, C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00150 name: L-cysteinyl-L-histidino-homocitryl molybdenum heptairon nonasulfide def: "A protein modification that effectively converts an L-cysteine residue, an L-histidine residue, homocitric acid and a one-molybdenum seven-iron nine-sulfur cluster to L-cysteinyl-L-histidino-homocitryl molybdenum heptairon nonasulfide." [PubMed:10525412, PubMed:12215645, PubMed:12733878, PubMed:1529354, PubMed:8027059, RESID:AA0141] comment: Cross-link 2; incidental to RESID:AA0300. synonym: "cysteinato-8kappaS-histidino-1kappaN(tau)-[(2R)-4-carboxy-2-(carboxymethyl)-2-oxidobutanoate-1kappaO(1),1kappaO(2)]-mu6-carbido-2:3:4:5:6:7kappa(6)C-hexa-mu3-sulfido-1:2:3kappa(3)S;1:2:4kappa(3)S;1:3:4kappa(3)S;5:6:8kappa(3)S;5:7:8kappa(3)S;6:7:8kappa(3)S-tri-mu2-sulfido-2:5kappa(2)S;3:6kappa(2)S;4:7kappa(2)S molybdenum heptairon" EXACT RESID-systematic [] synonym: "L-cysteinyl-L-histidino-homocitryl molybdenum heptairon nonasulfide carbide" EXACT RESID-name [] synonym: "nitrogenase iron-molybdenum cofactor" EXACT RESID-alternate [] xref: DiffAvg: "991.53" xref: DiffFormula: "C 7 Fe 7 H 6 Mo 1 N 1 O 7 S 9" xref: DiffMono: "993.213036" xref: Formula: "C 16 Fe 7 H 18 Mo 1 N 5 O 9 S 10" xref: MassAvg: "1231.81" xref: MassMono: "1233.281133" xref: Origin: "C, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:00743 ! molybdenum containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00151 name: L-cysteinyl molybdopterin def: "A protein modification that effectively converts an L-cysteine residue to L-cysteinyl molybdopterin." [PubMed:14527393, PubMed:7878465, PubMed:9428520, RESID:AA0142, Unimod:391#C] subset: PSI-MOD-slim synonym: "(4R,5aR,11aR)-8-amino-2-[(2R)-2-amino-2-carboxyethyl]sulfanyl-4,5a,6,9,10,11,11a-heptahydro-4-(phosphoric acid)methyl-2,2,10-trioxo-pteridino[6,7-5,6]pyrano[3,4-4,3][1,2,5]molybdadithiolene" EXACT RESID-systematic [] synonym: "cysteinyl Mo-molybdopterin" EXACT RESID-alternate [] synonym: "cysteinyl Mo-pterin" EXACT RESID-alternate [] synonym: "L-cysteinyl molybdopterin" EXACT RESID-name [] synonym: "METAL Molybdenum-pterin" EXACT UniProt-feature [] synonym: "molybdoenzyme molybdenum cofactor" EXACT RESID-alternate [] synonym: "Molybdopterin" RELATED PSI-MS-label [] synonym: "molybdopterin" RELATED Unimod-description [] synonym: "MoPterCys" EXACT PSI-MOD-label [] xref: DiffAvg: "520.27" xref: DiffFormula: "C 10 H 11 Mo 1 N 5 O 8 P 1 S 2" xref: DiffMono: "521.884074" xref: Formula: "C 13 H 16 Mo 1 N 6 O 9 P 1 S 3" xref: MassAvg: "623.41" xref: MassMono: "624.893259" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:391" is_a: MOD:00744 ! molybdenum pterin containing modification is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00152 name: S-(8alpha-FAD)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S'-(8alpha-FAD)-L-cystine." [PubMed:10220347, RESID:AA0143, Unimod:50#C] subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-[8alpha-riboflavin 5'-(trihydrogen diphosphate) 5'->5'-ester with adenosine]sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "8alpha-(S-cysteinyl)FAD" EXACT RESID-alternate [] synonym: "FAD" RELATED PSI-MS-label [] synonym: "Flavin adenine dinucleotide" RELATED Unimod-description [] synonym: "MOD_RES S-8alpha-FAD cysteine" EXACT UniProt-feature [] synonym: "S-(8alpha-FAD)-L-cysteine" EXACT RESID-name [] synonym: "S8aFADCys" EXACT PSI-MOD-label [] xref: DiffAvg: "783.54" xref: DiffFormula: "C 27 H 31 N 9 O 15 P 2 S 0" xref: DiffMono: "783.141485" xref: Formula: "C 30 H 36 N 10 O 16 P 2 S 1" xref: MassAvg: "886.68" xref: MassMono: "886.150669" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:50" xref: UniProt: "PTM-0272" is_a: MOD:00895 ! FAD modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00153 name: 3'-(8alpha-FAD)-L-histidine def: "A protein modification that effectively converts an L-histidine residue to 3'-(8alpha-FAD)-L-histidine." [PubMed:241294, PubMed:8076, RESID:AA0144, Unimod:50#H] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(3-[8alpha-riboflavin 5'-(trihydrogen diphosphate) 5'->5'-ester with adenosine]imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "3'-(8alpha-FAD)-L-histidine" EXACT RESID-name [] synonym: "8alpha-(N(delta)-histidyl)FAD" EXACT RESID-alternate [] synonym: "8alpha-(N3'-histidyl)FAD" EXACT RESID-alternate [] synonym: "8alpha-N1-histidyl FAD" RELATED RESID-misnomer [] synonym: "FAD" RELATED PSI-MS-label [] synonym: "Flavin adenine dinucleotide" RELATED Unimod-description [] synonym: "MOD_RES Pros-8alpha-FAD histidine" EXACT UniProt-feature [] synonym: "N(pi)-(8alpha-FAD)-histidine" EXACT RESID-alternate [] synonym: "Np8aFADHis" EXACT PSI-MOD-label [] synonym: "pros-(8alpha-FAD)-histidine" EXACT RESID-alternate [] xref: DiffAvg: "783.54" xref: DiffFormula: "C 27 H 31 N 9 O 15 P 2" xref: DiffMono: "783.141485" xref: Formula: "C 33 H 38 N 12 O 16 P 2" xref: MassAvg: "920.68" xref: MassMono: "920.200396" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:50" xref: UniProt: "PTM-0258" is_a: MOD:00895 ! FAD modified residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:00154 name: O4'-(8alpha-FAD)-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to O4'-(8alpha-FAD)-L-tyrosine." [DeltaMass:0, PubMed:7391034, RESID:AA0145, Unimod:50#Y] comment: From DeltaMass: Average Mass: 783 subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(4-[8alpha-riboflavin 5'-(trihydrogen diphosphate) 5'->5'-ester with adenosine]oxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "8alpha-(O4'-tyrosyl)FAD" EXACT RESID-alternate [] synonym: "FAD" RELATED PSI-MS-label [] synonym: "Flavin adenine dinucleotide" RELATED Unimod-description [] synonym: "MOD_RES O-8alpha-FAD tyrosine" EXACT UniProt-feature [] synonym: "O-8 alpha-Flavin [FAD])- (of Tyrosine)" EXACT DeltaMass-label [] synonym: "O4'-(8alpha-FAD)-L-tyrosine" EXACT RESID-name [] synonym: "O8aFADTyr" EXACT PSI-MOD-label [] xref: DiffAvg: "783.54" xref: DiffFormula: "C 27 H 31 N 9 O 15 P 2" xref: DiffMono: "783.141485" xref: Formula: "C 36 H 40 N 10 O 17 P 2" xref: MassAvg: "946.72" xref: MassMono: "946.204813" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:50" xref: UniProt: "PTM-0231" is_a: MOD:00895 ! FAD modified residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00155 name: L-3',4'-dihydroxyphenylalanine def: "A protein modification that effectively converts an L-tyrosine residue to L-3',4'-dihydroxyphenylalanine." [DeltaMass:0, OMSSA:194, OMSSA:64, PubMed:1610822, PubMed:1903612, PubMed:3734192, RESID:AA0146, Unimod:35#Y, ChEBI:141815] comment: incidental to RESID:AA0368 From DeltaMass: Average Mass: 16 subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(3,4-dihydroxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "3,4-Dihydroxy-Phenylalanine (from Tyrosine) (DOPA)" EXACT DeltaMass-label [] synonym: "3HyTyr" EXACT PSI-MOD-label [] synonym: "hydroxylationy" EXACT OMSSA-label [] synonym: "L-3',4'-dihydroxyphenylalanine" EXACT RESID-name [] synonym: "L-3'-hydroxytyrosine" EXACT RESID-alternate [] synonym: "L-DOPA" EXACT RESID-alternate [] synonym: "levodopa" EXACT RESID-alternate [] synonym: "mod194" EXACT OMSSA-label [] synonym: "MOD_RES 3',4'-dihydroxyphenylalanine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 9 H 9 N 1 O 3" xref: MassAvg: "179.18" xref: MassMono: "179.058243" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" xref: UniProt: "PTM-0023" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00707 ! hydroxylated tyrosine [Term] id: MOD:00156 name: L-2',4',5'-topaquinone def: "A protein modification that effectively converts an L-tyrosine residue to an L-2',4',5'-topaquinone." [ChEBI:21187, PubMed:10387067, PubMed:1457410, PubMed:1569055, PubMed:2111581, RESID:AA0147, Unimod:392#Y] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(5-hydroxy-2,5-cyclohexadien-1,4-dion-2-yl)propanoic acid" EXACT RESID-systematic [] synonym: "2,4,5-trihydroxyphenylalanine quinone" EXACT RESID-alternate [] synonym: "5-(2-carboxy-2-aminoethyl)-2-hydroxy-1,4-benzoquinone" EXACT RESID-alternate [] synonym: "L-2',4',5'-topaquinone" EXACT RESID-name [] synonym: "L-2,4,5-TOPAquinone" EXACT RESID-alternate [] synonym: "MOD_RES 2',4',5'-topaquinone" EXACT UniProt-feature [] synonym: "Quinone" RELATED PSI-MS-label [] synonym: "quinone" RELATED Unimod-description [] synonym: "TopaQ" EXACT PSI-MOD-label [] synonym: "TPQ" EXACT RESID-alternate [] xref: DiffAvg: "29.98" xref: DiffFormula: "C 0 H -2 N 0 O 2" xref: DiffMono: "29.974179" xref: Formula: "C 9 H 7 N 1 O 4" xref: MassAvg: "193.16" xref: MassMono: "193.037508" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:392" xref: UniProt: "PTM-0009" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00157 name: L-tryptophyl quinone def: "A protein modification that effectively converts an L-tryptophan residue to an L-tryptophan quinone." [DeltaMass:0, PubMed:2028257, RESID:AA0148, Unimod:392#W] comment: incidental to RESID:AA0149; incidental to RESID:AA0313; From DeltaMass: Average Mass: 30. subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(6,7-dioxo-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(6,7-dioxo-6,7-dihydro-1H-indol-3-yl)-propionic acid" EXACT RESID-alternate [] synonym: "3-[(2S)-2-amino-2-carboxyethyl]-6,7-indolinedione" EXACT RESID-alternate [] synonym: "6,7 Dione (from Tryptophan)" EXACT DeltaMass-label [] synonym: "L-tryptophyl quinone" EXACT RESID-name [] synonym: "MOD_RES Tryptophylquinone" EXACT UniProt-feature [] synonym: "N-(3-carboxy-1-oxopropyl)-L-tryptophan" EXACT RESID-alternate [] synonym: "Quinone" RELATED PSI-MS-label [] synonym: "quinone" RELATED Unimod-description [] synonym: "TrpQ" EXACT PSI-MOD-label [] xref: DiffAvg: "29.98" xref: DiffFormula: "C 0 H -2 N 0 O 2" xref: DiffMono: "29.974179" xref: Formula: "C 11 H 8 N 2 O 3" xref: MassAvg: "216.20" xref: MassMono: "216.053492" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:392" xref: UniProt: "PTM-0299" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00158 name: 4'-(L-tryptophan)-L-tryptophyl quinone def: "A protein modification that effectively cross-links two L-tryptophan residues by a carbon-carbon bond to form 4'-(L-tryptophan)-L-tryptophyl quinone." [ChEBI:20251, DeltaMass:0, PubMed:2028257, RESID:AA0149] comment: Cross-link 2; secondary to RESID:AA0148; From DeltaMass: Average Mass: 28. subset: PSI-MOD-slim synonym: "2,4-BisTrp-6,7-dione (from Tryptophan)" EXACT DeltaMass-label [] synonym: "2-amino-3-[2-[2-amino-3-(2-carboxyethyl)-6,7-dioxo-1H-indol-4-yl]-1H-indol-3-yl]propanoic acid" EXACT RESID-alternate [] synonym: "3-[(2S)-2-amino-2-carboxyethyl]-4-(3-[(2S)-2-amino-2-carboxyethyl]-1H-indol-2-yl)-6,7-indolinedione" EXACT RESID-systematic [] synonym: "4'-tryptophan-tryptophylquinone" EXACT RESID-alternate [] synonym: "4-(2'-tryptophyl)tryptophan-6,7-dione" EXACT RESID-alternate [] synonym: "4-(L-tryptophan-2-yl)-L-tryptophyl quinone" EXACT RESID-name [] synonym: "alpha,alpha'-diamino-6',7'-dihydro-6',7'-dioxo-(2,4'-bi-1H-indole)-3,3'-dipropanoic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Tryptophan tryptophylquinone (Trp-Trp)" EXACT UniProt-feature [] synonym: "TTQ" EXACT RESID-alternate [] synonym: "XLNK-4'Trp-TrpQ" EXACT PSI-MOD-label [] xref: DiffAvg: "27.97" xref: DiffFormula: "C 0 H -4 N 0 O 2" xref: DiffMono: "27.958529" xref: Formula: "C 22 H 16 N 4 O 4" xref: MassAvg: "400.39" xref: MassMono: "400.117155" xref: Origin: "W, W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0298" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02057 ! crosslinked L-tryptophan residue [Term] id: MOD:00159 name: O-phosphopantetheine-L-serine def: "A protein modification that effectively converts an L-serine residue to O-phosphopantetheine-L-serine." [DeltaMass:0, PubMed:10320345, PubMed:10997907, PubMed:12057197, PubMed:12869567, PubMed:4568609, RESID:AA0150, Unimod:49#S] comment: Unimod has DiffFormula C 11 H 20 N 2 O 6 P 1 S 1 From DeltaMass: Average Mass: 339 subset: PSI-MOD-slim synonym: "(2R)-2-hydroxy-3,3-dimethyl-4-[(2S)-2-amino-2-carboxyethyl]phosphonato-N-(3-oxo-3-[(2-sulfanylethyl)amino]propyl)butanamide" EXACT RESID-systematic [] synonym: "4'-Phosphopantetheine" EXACT DeltaMass-label [] synonym: "MOD_RES O-(pantetheine 4'-phosphoryl)serine" EXACT UniProt-feature [] synonym: "O-phosphopantetheine-L-serine" EXACT RESID-name [] synonym: "OPpantSer" EXACT PSI-MOD-label [] synonym: "Phosphopantetheine" RELATED PSI-MS-label [] synonym: "Phosphopantetheine" RELATED Unimod-description [] xref: DiffAvg: "340.33" xref: DiffFormula: "C 11 H 21 N 2 O 6 P 1 S 1" xref: DiffMono: "340.085794" xref: Formula: "C 14 H 26 N 3 O 8 P 1 S 1" xref: MassAvg: "427.41" xref: MassMono: "427.117822" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:49" xref: UniProt: "PTM-0391" is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00160 name: N4-glycosyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to an N4-glycosyl-L-asparagine." [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var] subset: PSI-MOD-slim synonym: "N4GlycoAsn" EXACT PSI-MOD-label [] xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00006 ! N-glycosylated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00161 name: S-glucosyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-glucosylated L-cysteine." [PubMed:1145128, PubMed:15279557, PubMed:5286858, RESID:AA0152, Unimod:41#C] synonym: "(2R)-2-amino-3-[(beta-D-glucopyranosyl)sulfanyl]propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD S-linked (Glc) cysteine" EXACT UniProt-feature [] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] synonym: "S-(beta-D-glucopyranosyl)cysteine" EXACT RESID-alternate [] synonym: "S-glucosyl-L-cysteine" EXACT RESID-name [] synonym: "S-glycosyl-cysteine" EXACT RESID-alternate [] synonym: "SGlcCys" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5 S 0" xref: DiffMono: "162.052823" xref: Formula: "C 9 H 15 N 1 O 6 S 1" xref: MassAvg: "265.28" xref: MassMono: "265.062008" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" xref: UniProt: "PTM-0626" is_a: MOD:00426 ! S-glycosylated residue is_a: MOD:00433 ! monoglucosylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00162 name: O5-glucosylgalactosyl-L-hydroxylysine def: "A protein modification that effectively converts an L-lysine residue to O5-glucosylgalactosyl-L-hydroxylysine." [PubMed:15149698, PubMed:4288358, PubMed:4319110, RESID:AA0153, Unimod:393] comment: Secondary to RESID:AA0028. subset: PSI-MOD-slim synonym: "(2S,5R)-2,6-diamino-5-[2-O-(alpha-D-glucopyranosyl)-beta-D-galactopyranosyloxy]hexanoic acid" EXACT RESID-systematic [] synonym: "5-(2-O-alpha-D-glucopyranosyl-beta-D-galactopyranosyl)oxy-L-lysine" EXACT RESID-alternate [] synonym: "Glucosylgalactosyl" RELATED PSI-MS-label [] synonym: "glucosylgalactosyl hydroxylysine" RELATED Unimod-description [] synonym: "O5-glucosylgalactosyl-L-hydroxylysine" EXACT RESID-name [] synonym: "OGlcGal5HyLys" EXACT PSI-MOD-label [] xref: DiffAvg: "340.28" xref: DiffFormula: "C 12 H 20 N 0 O 11" xref: DiffMono: "340.100561" xref: Formula: "C 18 H 32 N 2 O 12" xref: MassAvg: "468.46" xref: MassMono: "468.195524" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:393" relationship: derives_from MOD:00037 ! 5-hydroxy-L-lysine is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:00396 ! O-glycosylated residue [Term] id: MOD:00163 name: O-(N-acetylamino)galactosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(N-acetylaminogalactosyl)-L-serine." [PubMed:115869, PubMed:16005634, PubMed:3086323, PubMed:8948436, PubMed:9092502, RESID:AA0154] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(2-acetamido-2-deoxy-alpha-D-galactopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (GalNAc) serine" EXACT UniProt-feature [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "mucin type O-glycosylserine" EXACT RESID-alternate [] synonym: "O-(N-acetylamino)galactosyl-L-serine" EXACT RESID-name [] synonym: "O3-(N-acetylgalactosaminyl)serine" EXACT RESID-alternate [] synonym: "OGalNAcSer" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 11 H 18 N 2 O 7" xref: MassAvg: "290.27" xref: MassMono: "290.111401" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0564" is_a: MOD:00563 ! mono-N-acetylaminogalactosylated residue is_a: MOD:01675 ! O-(N-acetylamino)hexosyl-L-serine [Term] id: MOD:00164 name: O-(N-acetylamino)galactosyl-L-threonine def: "A protein modification that effectively converts an L-asparagine residue to O-(N-acetylaminogalactosyl)-L-threonine." [PubMed:16005634, PubMed:1997327, PubMed:3086323, PubMed:8948436, PubMed:9092502, RESID:AA0155] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(2-acetamido-2-deoxy-alpha-D-galactopyranosyloxy)butanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (GalNAc) threonine" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (HexNAc)" EXACT UniProt-feature [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "mucin type O-glycosylthreonine" EXACT RESID-alternate [] synonym: "O-(N-acetylamino)galactosyl-L-threonine" EXACT RESID-name [] synonym: "O3-(N-acetylgalactosaminyl)threonine" EXACT RESID-alternate [] synonym: "OGalNAcThr" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 12 H 20 N 2 O 7" xref: MassAvg: "304.30" xref: MassMono: "304.127051" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0567" is_a: MOD:00563 ! mono-N-acetylaminogalactosylated residue is_a: MOD:01676 ! O-(N-acetylamino)hexosyl-L-threonine [Term] id: MOD:00165 name: 1'-mannosyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 1'-mannosyl-L-tryptophan." [PubMed:1482345, PubMed:16150691, RESID:AA0156] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(1-D-mannopyranosyloxy-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "1'-glycosyl-L-tryptophan" EXACT RESID-alternate [] synonym: "1'-mannosyl-L-tryptophan" EXACT RESID-name [] synonym: "CARBOHYD N-linked (Man) tryptophan" EXACT UniProt-feature [] synonym: "N-mannosyl-tryptophan" EXACT RESID-alternate [] synonym: "N1'ManTrp" EXACT PSI-MOD-label [] synonym: "N1-mannosyl-tryptophan" EXACT RESID-alternate [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 17 H 20 N 2 O 6" xref: MassAvg: "348.36" xref: MassMono: "348.132136" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0535" is_a: MOD:00006 ! N-glycosylated residue is_a: MOD:00595 ! monomannosylated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00166 name: O4'-glucosyl-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to O4'-glucosyl-tyrosine." [PubMed:15279557, PubMed:3181138, RESID:AA0157, Unimod:41#Y] synonym: "(2S)-2-amino-3-(4-alpha-D-glucopyranosyloxy)phenylpropanoic acid" EXACT RESID-systematic [] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] synonym: "O4'-glucosyl-L-tyrosine" EXACT RESID-name [] synonym: "O4'-glycosyl-L-tyrosine" EXACT RESID-alternate [] synonym: "O4GlcTyr" EXACT PSI-MOD-label [] synonym: "CARBOHYD O-linked (Glc) tyrosine" EXACT UniProt-feature [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 15 H 19 N 1 O 7" xref: MassAvg: "325.32" xref: MassMono: "325.116152" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" xref: UniProt: "PTM-0575" is_a: MOD:00433 ! monoglucosylated residue is_a: MOD:01927 ! O-glycosyl-L-tyrosine [Term] id: MOD:00167 name: N-asparaginyl-glycosylphosphatidylinositolethanolamine def: "A protein modification that effectively converts an L-asparagine residue to N-asparaginyl-glycosylphosphatidylinositolethanolamine." [PubMed:1824714, PubMed:8276756, RESID:AA0158] synonym: "GPIAsn" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated asparagine" EXACT UniProt-feature [] synonym: "N-asparaginyl-glycosylphosphatidylinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 6 H 13 N 3 O 6 P 1" xref: MassAvg: "254.16" xref: MassMono: "254.054197" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0137" is_a: MOD:00818 ! glycosylphosphatidylinositolated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00168 name: N-aspartyl-glycosylphosphatidylinositolethanolamine def: "A protein modification that effectively converts an L-aspartic acid residue to N-(aspart-1-yl)-glycosylphosphatidylinositolethanolamine." [PubMed:7120400, RESID:AA0159] synonym: "GPIAsp" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated aspartate" EXACT UniProt-feature [] synonym: "N-aspartyl-glycosylphosphatidylinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 6 H 12 N 2 O 7 P 1" xref: MassAvg: "255.14" xref: MassMono: "255.038212" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0138" is_a: MOD:00818 ! glycosylphosphatidylinositolated residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:00169 name: N-cysteinyl-glycosylphosphatidylinositolethanolamine def: "A protein modification that effectively converts an L-cysteine residue to N-cysteinyl-glycosylphosphatidylinositolethanolamine." [PubMed:2897081, RESID:AA0160] synonym: "GPICys" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated cysteine" EXACT UniProt-feature [] synonym: "N-cysteinyl-glycosylphosphatidylinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1 S 0" xref: DiffMono: "123.008530" xref: Formula: "C 5 H 12 N 2 O 5 P 1 S 1" xref: MassAvg: "243.19" xref: MassMono: "243.020454" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0140" is_a: MOD:00818 ! glycosylphosphatidylinositolated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00170 name: N-glycyl-glycosylphosphatidylinositolethanolamine def: "A protein modification that effectively converts a glycine residue to N-glycyl-glycosylphosphatidylinositolethanolamine." [PubMed:2341397, RESID:AA0161] synonym: "GPIGly" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated glycine" EXACT UniProt-feature [] synonym: "N-glycyl-glycosylphosphatidylinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 4 H 10 N 2 O 5 P 1" xref: MassAvg: "197.11" xref: MassMono: "197.032733" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0141" is_a: MOD:00818 ! glycosylphosphatidylinositolated residue is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:00171 name: N-seryl-glycosylphosphatidylinositolethanolamine def: "A protein modification that effectively converts an L-serine residue to N-seryl-glycosylphosphatidylinositolethanolamine." [PubMed:2111324, PubMed:8448158, RESID:AA0162] synonym: "GPISer" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated serine" EXACT UniProt-feature [] synonym: "N-seryl-glycosylphosphatidylinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 5 H 12 N 2 O 6 P 1" xref: MassAvg: "227.13" xref: MassMono: "227.043298" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0142" is_a: MOD:00818 ! glycosylphosphatidylinositolated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00172 name: N-alanyl-glycosylphosphatidylinositolethanolamine def: "A protein modification that effectively converts an L-alanine residue to N-alanyl-glycosylphosphatidylinositolethanolamine." [PubMed:7682556, PubMed:7744038, RESID:AA0163] synonym: "GPIAla" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated alanine" EXACT UniProt-feature [] synonym: "N-alanyl-glycosylphosphatidylinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 5 H 12 N 2 O 5 P 1" xref: MassAvg: "211.13" xref: MassMono: "211.048383" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0136" is_a: MOD:00818 ! glycosylphosphatidylinositolated residue is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:00173 name: N-threonyl-glycosylphosphatidylinositolethanolamine def: "A protein modification that effectively converts an L-threonine residue to N-threonyl-glycosylphosphatidylinositolethanolamine." [RESID:AA0164] synonym: "GPIThr" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated threonine" EXACT UniProt-feature [] synonym: "N-threonyl-glycosylphosphatidylinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 6 H 14 N 2 O 6 P 1" xref: MassAvg: "241.16" xref: MassMono: "241.058948" xref: Origin: "T" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0143" is_a: MOD:00818 ! glycosylphosphatidylinositolated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00174 name: N-glycyl-glycosylsphingolipidinositolethanolamine def: "A protein modification that effectively converts a glycine residue to N-glycyl-glycosylsphingolipidinositolethanolamine." [PubMed:12626404, PubMed:8404891, RESID:AA0165] synonym: "GSIGly" EXACT PSI-MOD-label [] synonym: "LIPID GPI-like-anchor amidated glycine" EXACT UniProt-feature [] synonym: "N-glycyl-glycosylsphingolipidinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 4 H 10 N 2 O 5 P 1" xref: MassAvg: "197.11" xref: MassMono: "197.032733" xref: Origin: "G" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0146" is_a: MOD:00466 ! glycosylsphingolipidinositolated residue is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:00175 name: N-seryl-glycosylsphingolipidinositolethanolamine def: "A protein modification that effectively converts an L-serine residue to N-seryl-glycosylsphingolipidinositolethanolamine." [PubMed:12626404, PubMed:2721485, PubMed:8269952, RESID:AA0166] synonym: "GSISer" EXACT PSI-MOD-label [] synonym: "LIPID GPI-like-anchor amidated serine" EXACT UniProt-feature [] synonym: "N-seryl-glycosylsphingolipidinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 5 H 12 N 2 O 6 P 1" xref: MassAvg: "227.13" xref: MassMono: "227.043298" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0147" is_a: MOD:00466 ! glycosylsphingolipidinositolated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00176 name: O-(phosphoribosyl dephospho-coenzyme A)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(phosphoribosyl dephospho-coenzyme A)-L-serine." [PubMed:10924139, PubMed:11052675, PubMed:179809, PubMed:180526, PubMed:368065, RESID:AA0167, Unimod:395#S] comment: pRibodePcoA subset: PSI-MOD-slim synonym: "MOD_RES O-(phosphoribosyl dephospho-coenzyme A)serine" EXACT UniProt-feature [] synonym: "O-(phosphoribosyl dephospho-coenzyme A)-L-serine" EXACT RESID-name [] synonym: "O3-(phosphate-5-ribosyl-alpha-2-adenosine-5-diphosphate pantetheine)-L-serine" EXACT RESID-alternate [] synonym: "O3-(phosphoribosyl dephospho-coenzyme A)-L-serine" EXACT RESID-alternate [] synonym: "O3-2'-(5''-phosphoribosyl-3'-dephosphocoenzyme A)-L-serine" EXACT RESID-alternate [] synonym: "OPRibdPCoASer" EXACT PSI-MOD-label [] synonym: "phosphoribosyl dephospho-coenzyme A" RELATED Unimod-description [] synonym: "PhosphoribosyldephosphoCoA" RELATED PSI-MS-label [] xref: DiffAvg: "881.63" xref: DiffFormula: "C 26 H 42 N 7 O 19 P 3 S 1" xref: DiffMono: "881.146903" xref: Formula: "C 29 H 47 N 8 O 21 P 3 S 1" xref: MassAvg: "968.71" xref: MassMono: "968.178931" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:395" xref: UniProt: "PTM-0389" is_a: MOD:00860 ! sulfur containing modified residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00177 name: omega-N-(ADP-ribosyl)-L-arginine def: "A protein modification that effectively converts an L-argininine residue to omega-N-(ADP-ribosyl)-L-arginine." [DeltaMass:0, PubMed:15842200, PubMed:209022, PubMed:3090031, PubMed:3923473, PubMed:6582062, RESID:AA0168, Unimod:213#R] comment: From DeltaMass: Average Mass: 541. subset: PSI-MOD-slim synonym: "(S)-2-amino-5-([imino([adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with alpha-D-ribofuranosyl]amino)methyl]amino)pentanoic acid" EXACT RESID-systematic [] synonym: "ADP Ribose addition" RELATED Unimod-description [] synonym: "ADP-Ribosyl" RELATED PSI-MS-label [] synonym: "ADPRibArg" EXACT PSI-MOD-label [] synonym: "MOD_RES ADP-ribosylarginine" EXACT UniProt-feature [] synonym: "N(omega)-[alpha-D-ribofuranoside 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)]-L-arginine" EXACT RESID-alternate [] synonym: "N(omega)-alpha-D-ribofuranosyl-L-arginine 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] synonym: "N-(ADP-ribosyl)- (on Arginine)" EXACT DeltaMass-label [] synonym: "omega-N-(ADP-ribosyl)-L-arginine" EXACT RESID-name [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2" xref: DiffMono: "541.061109" xref: Formula: "C 21 H 33 N 9 O 14 P 2" xref: MassAvg: "697.49" xref: MassMono: "697.162220" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:213" xref: UniProt: "PTM-0053" is_a: MOD:00752 ! monoadenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00178 name: S-(ADP-ribosyl)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(ADP-ribosyl)-L-cysteine." [DeltaMass:0, PubMed:15842200, PubMed:3863818, RESID:AA0169, Unimod:213#C] comment: From DeltaMass: Average Mass: 541. subset: PSI-MOD-slim synonym: "(R)-2-amino-3-([adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with alpha-D-ribofuranosyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "ADP Ribose addition" RELATED Unimod-description [] synonym: "ADP-Ribosyl" RELATED PSI-MS-label [] synonym: "ADPRibCys" EXACT PSI-MOD-label [] synonym: "MOD_RES ADP-ribosylcysteine" EXACT UniProt-feature [] synonym: "S-(ADP-ribosyl)- (on Cysteine)" EXACT DeltaMass-label [] synonym: "S-(ADP-ribosyl)-L-cysteine" EXACT RESID-name [] synonym: "S-alpha-D-ribofuranosyl-L-cysteine 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] synonym: "S-L-cysteine alpha-D-ribofuranoside 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2 S 0" xref: DiffMono: "541.061109" xref: Formula: "C 18 H 26 N 6 O 14 P 2 S 1" xref: MassAvg: "644.44" xref: MassMono: "644.070294" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:213" xref: UniProt: "PTM-0055" is_a: MOD:00752 ! monoadenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00179 name: L-glutamyl 5-glycerylphosphorylethanolamine def: "A protein modification that effectively converts an L-glutamic acid residue to L-glutamyl 5-glycerylphosphorylethanolamine." [PubMed:2511205, PubMed:2569467, PubMed:9662537, RESID:AA0170, Unimod:396#E] comment: glycerylPE subset: PSI-MOD-slim synonym: "(S)-2-amino-5-[2-([([2,3-dihydroxypropyl]oxy)(hydroxy)phosphoryl]oxy)ethyl]amino-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "5-L-glutamyl glycerylphosphorylethanolamine" EXACT RESID-name [] synonym: "5GlyceroPEtAGlu" EXACT PSI-MOD-label [] synonym: "GlycerylPE" RELATED PSI-MS-label [] synonym: "glycerylphosphorylethanolamine" RELATED Unimod-description [] synonym: "L-glutamyl 5-glycerophosphoethanolamine" EXACT RESID-alternate [] synonym: "L-glutamyl 5-glycerophosphorylethanolamine" EXACT RESID-alternate [] synonym: "L-glutamyl 5-glycerylphosphorylethanolamine" EXACT RESID-alternate [] synonym: "MOD_RES 5-glutamyl glycerylphosphorylethanolamine" EXACT UniProt-feature [] xref: DiffAvg: "197.13" xref: DiffFormula: "C 5 H 12 N 1 O 5 P 1" xref: DiffMono: "197.045309" xref: Formula: "C 10 H 19 N 2 O 8 P 1" xref: MassAvg: "326.24" xref: MassMono: "326.087902" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:396" xref: UniProt: "PTM-0403" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00180 name: S-sulfo-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-sulfo-L-cysteine." [PubMed:12876326, PubMed:14752058, PubMed:643076, RESID:AA0171, Unimod:40#C] synonym: "(2R)-2-amino-3-(sulfosulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(sulfothio)propanoic acid" EXACT RESID-alternate [] synonym: "3-(sulfosulfanyl)-L-alanine" EXACT RESID-alternate [] synonym: "cysteine sulfate thioester" EXACT RESID-alternate [] synonym: "cysteine-S-sulfonic acid" EXACT RESID-alternate [] synonym: "O-Sulfonation" RELATED Unimod-description [] synonym: "S-sulfo-L-cysteine" EXACT RESID-name [] synonym: "S-sulfocysteine" EXACT PSI-MOD-alternate [] synonym: "S-sulfocysteine" EXACT RESID-alternate [] synonym: "SSulfCys" EXACT PSI-MOD-label [] synonym: "Sulfo" RELATED PSI-MS-label [] xref: DiffAvg: "80.06" xref: DiffFormula: "C 0 H 0 N 0 O 3 S 1" xref: DiffMono: "79.956815" xref: Formula: "C 3 H 5 N 1 O 4 S 2" xref: MassAvg: "183.20" xref: MassMono: "182.966000" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:40" is_a: MOD:00695 ! sulfated residue is_a: MOD:00777 ! residues isobaric at 182.96-182.98 Da is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00181 name: O4'-sulfo-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to O4'-sulfo-L-tyrosine." [DeltaMass:88, OMSSA:114, PubMed:10226369, PubMed:14752058, PubMed:2303439, PubMed:3778455, PubMed:3801003, RESID:AA0172, Unimod:40#Y] comment: From DeltaMass: Average Mass: 80 Average Mass Change:80 PubMed:9624161. subset: PSI-MOD-slim synonym: "(S)-2-amino-3-(4-sulfooxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(4-hydroxyphenyl)propanoic acid 4'-sulfate" EXACT RESID-alternate [] synonym: "MOD_RES Sulfotyrosine" EXACT UniProt-feature [] synonym: "O-Sulfonation" RELATED Unimod-description [] synonym: "O4'-sulfo-L-tyrosine" EXACT RESID-name [] synonym: "O4-sulfotyrosine" EXACT RESID-alternate [] synonym: "OSulfTyr" EXACT PSI-MOD-label [] synonym: "sulfationy" EXACT OMSSA-label [] synonym: "Sulfo" RELATED PSI-MS-label [] synonym: "Sulphation (of O of Tyrosine)" EXACT DeltaMass-label [] synonym: "tyrosine sulfate" EXACT RESID-alternate [] synonym: "tyrosine-O-sulfonic acid" EXACT RESID-alternate [] synonym: "tyrosine-O-sulphonic acid" EXACT RESID-alternate [] synonym: "Tyrosinyl Sulphate" EXACT DeltaMass-label [] xref: DiffAvg: "80.06" xref: DiffFormula: "C 0 H 0 N 0 O 3 S 1" xref: DiffMono: "79.956815" xref: Formula: "C 9 H 9 N 1 O 5 S 1" xref: MassAvg: "243.23" xref: MassMono: "243.020143" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:40" xref: UniProt: "PTM-0286" is_a: MOD:00695 ! sulfated residue is_a: MOD:00774 ! residues isobaric at 243.02-243.03 Da is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00182 name: L-bromohistidine def: "A protein modification that effectively converts an L-histidine residue to L-bromohistidine." [PubMed:2076468, PubMed:9033387, RESID:AA0173, Unimod:340#H] synonym: "Br1His" EXACT PSI-MOD-label [] synonym: "bromination" RELATED Unimod-description [] synonym: "Bromo" RELATED PSI-MS-label [] synonym: "L-bromohistidine" EXACT RESID-name [] synonym: "MOD_RES Bromohistidine" EXACT UniProt-feature [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 C 0 H -1 N 0 O 0" xref: DiffMono: "77.910512" xref: Formula: "Br 1 C 6 H 6 N 3 O 1" xref: MassAvg: "216.04" xref: MassMono: "214.969424" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:340" xref: UniProt: "PTM-0089" is_a: MOD:01049 ! halogenated histidine is_a: MOD:01912 ! monobrominated residue [Term] id: MOD:00183 name: L-2'-bromophenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to L-2'-bromophenylalanine." [DeltaMass:83, PubMed:2059627, PubMed:2076468, PubMed:9033387, RESID:AA0174] comment: From DeltaMass: Average Mass: 78 Average Mass Change:78 References:Yoshino,K et.al. Biochemistry Vol. 30 pg 6203-9 (1991) Identifidation of a novel amino acid, o-bromo-L-phenylananine, in egg-associated peptides that activate spermatozoa. synonym: "(S)-2-amino-3-(2-bromophenyl)propanoic acid" EXACT RESID-systematic [] synonym: "2'BrPhe" EXACT PSI-MOD-label [] synonym: "bromination" RELATED Unimod-description [] synonym: "Bromo" RELATED PSI-MS-label [] synonym: "L-2'-bromophenylalanine" EXACT RESID-name [] synonym: "L-o-bromination of Phe with 79Br" EXACT DeltaMass-label [] synonym: "o-bromophenylalanine" EXACT RESID-alternate [] synonym: "ortho-bromophenylalanine" EXACT RESID-alternate [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 C 0 H -1 N 0 O 0" xref: DiffMono: "77.910512" xref: Formula: "Br 1 C 9 H 8 N 1 O 1" xref: MassAvg: "226.07" xref: MassMono: "224.978926" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00972 ! monobrominated L-phenylalanine [Term] id: MOD:00184 name: L-3'-bromophenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to L-3'-bromophenylalanine." [PubMed:2076468, PubMed:9033387, RESID:AA0175] synonym: "(S)-2-amino-3-(3-bromophenyl)propanoic acid" EXACT RESID-systematic [] synonym: "3'BrPhe" EXACT PSI-MOD-label [] synonym: "bromination" RELATED Unimod-description [] synonym: "Bromo" RELATED PSI-MS-label [] synonym: "L-3'-bromophenylalanine" EXACT RESID-name [] synonym: "m-bromophenylalanine" EXACT RESID-alternate [] synonym: "meta-bromophenylalanine" EXACT RESID-alternate [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 C 0 H -1 N 0 O 0" xref: DiffMono: "77.910512" xref: Formula: "Br 1 C 9 H 8 N 1 O 1" xref: MassAvg: "226.07" xref: MassMono: "224.978926" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00972 ! monobrominated L-phenylalanine [Term] id: MOD:00185 name: L-4'-bromophenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to L-4'-bromophenylalanine." [PubMed:2076468, PubMed:9033387, RESID:AA0176] synonym: "(2S)-2-amino-3-(4-bromophenyl)propanoic acid" EXACT RESID-systematic [] synonym: "4'BrPhe" EXACT PSI-MOD-label [] synonym: "bromination" RELATED Unimod-description [] synonym: "Bromo" RELATED PSI-MS-label [] synonym: "L-4'-bromophenylalanine" EXACT RESID-name [] synonym: "p-bromophenylalanine" EXACT RESID-alternate [] synonym: "para-bromophenylalanine" EXACT RESID-alternate [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 C 0 H -1 N 0 O 0" xref: DiffMono: "77.910512" xref: Formula: "Br 1 C 9 H 8 N 1 O 1" xref: MassAvg: "226.07" xref: MassMono: "224.978926" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00972 ! monobrominated L-phenylalanine [Term] id: MOD:00186 name: 3,3',5-triiodo-L-thyronine def: "A protein modification that effectively substitutes an L-tyrosine residue with 3,3',5-triiodo-L-thyronine." [ChEBI:18258, DeltaMass:0, RESID:AA0177, Unimod:397] comment: From DeltaMass: Average Mass: 470. subset: PSI-MOD-slim synonym: "(S)-2-amino-3-[4-(4-hydroxy-3-iodophenoxy)-3,5-diiodophenyl]propanoic acid" EXACT RESID-systematic [] synonym: "3',3'',5'-triiodo-L-thyronine" EXACT RESID-name [] synonym: "3,3',5-triiodo-L-thyronine" EXACT RESID-alternate [] synonym: "3,5,3'-triiodo-L-thyronine" EXACT RESID-alternate [] synonym: "3,5,3'-Triiodothyronine (from Tyrosine)" EXACT DeltaMass-label [] synonym: "4-(4-hydroxy-3-iodophenoxy)-3,5-diiodo-L-phenylalanine" EXACT RESID-alternate [] synonym: "I3Thy" EXACT PSI-MOD-label [] synonym: "liothyronine" EXACT RESID-alternate [] synonym: "MOD_RES Triiodothyronine" EXACT UniProt-feature [] synonym: "O-(4-hydroxy-3-iodophenyl)-3,5-diiodo-L-tyrosine" EXACT RESID-alternate [] synonym: "T3" EXACT RESID-alternate [] synonym: "triiodo" RELATED Unimod-description [] synonym: "Triiodothyronine" RELATED PSI-MS-label [] xref: DiffAvg: "469.79" xref: DiffFormula: "C 6 H 1 I 3 N 0 O 1" xref: DiffMono: "469.716158" xref: Formula: "C 15 H 10 I 3 N 1 O 3" xref: MassAvg: "632.96" xref: MassMono: "632.779486" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:397" xref: UniProt: "PTM-0295" is_a: MOD:00998 ! iodinated tyrosine [Term] id: MOD:00187 name: L-thyroxine def: "A protein modification that effectively substitutes an L-tyrosine residue with L-thyroxine." [ChEBI:18332, PubMed:6704086, RESID:AA0178, Unimod:398] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-[4-(4-hydroxy-3,5-diiodophenoxy)-3,5-diiodophenyl]propanoic acid" EXACT RESID-systematic [] synonym: "3',3'',5',5''-tetraiodo-L-thyronine" EXACT RESID-alternate [] synonym: "3,3',5,5'-tetraiodo-L-thyronine" EXACT RESID-alternate [] synonym: "3,5,3',5'-tetraiodo-L-thyronine" EXACT RESID-alternate [] synonym: "4-(4-hydroxy-3,5-diiodophenoxy)-3,5-diiodo-L-phenylalanine" EXACT RESID-alternate [] synonym: "I4Thy" EXACT PSI-MOD-label [] synonym: "L-thyroxine" EXACT RESID-name [] synonym: "MOD_RES Thyroxine" EXACT UniProt-feature [] synonym: "O-(4-hydroxy-3,5-diiodophenyl)-3,5-diiodo-L-tyrosine" EXACT RESID-alternate [] synonym: "T4" EXACT RESID-alternate [] synonym: "tetraiodo" RELATED Unimod-description [] synonym: "Thyroxine" RELATED PSI-MS-label [] xref: DiffAvg: "595.68" xref: DiffFormula: "C 6 H 0 I 4 N 0 O 1" xref: DiffMono: "595.612805" xref: Formula: "C 15 H 9 I 4 N 1 O 3" xref: MassAvg: "758.86" xref: MassMono: "758.676134" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:398" xref: UniProt: "PTM-0294" is_a: MOD:00998 ! iodinated tyrosine [Term] id: MOD:00188 name: 6'-bromo-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 6'-bromo-L-tryptophan." [PubMed:12118011, PubMed:9030520, PubMed:9033387, PubMed:9434739, RESID:AA0179, Unimod:340#W] synonym: "(2S)-2-amino-3-(6-bromo-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "6'-bromo-L-tryptophan" EXACT RESID-name [] synonym: "6'-BrTrp" EXACT PSI-MOD-label [] synonym: "bromination" RELATED Unimod-description [] synonym: "Bromo" RELATED PSI-MS-label [] synonym: "MOD_RES 6'-bromotryptophan" EXACT UniProt-feature [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 C 0 H -1 N 0 O 0" xref: DiffMono: "77.910512" xref: Formula: "Br 1 C 11 H 9 N 2 O 1" xref: MassAvg: "265.11" xref: MassMono: "263.989825" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:398" xref: UniProt: "PTM-0051" is_a: MOD:01068 ! halogenated tryptophan is_a: MOD:01912 ! monobrominated residue [Term] id: MOD:00189 name: dehydroalanine (Ser) def: "A protein modification that effectively converts an L-serine residue to dehydroalanine." [DeltaMass:0, OMSSA:140, OMSSA:164, OMSSA:96, PubMed:10220322, PubMed:1547888, PubMed:1815586, PubMed:2914619, PubMed:7947813, PubMed:8239649, RESID:AA0181#SER, Unimod:23#S] subset: PSI-MOD-slim synonym: "2,3-didehydroalanine" EXACT RESID-alternate [] synonym: "2-aminoacrylic acid" EXACT RESID-alternate [] synonym: "2-aminopropenoic acid" EXACT RESID-systematic [] synonym: "4-methylidene-imidazole-5-one (MIO) active site" EXACT RESID-alternate [] synonym: "anhydroserine" EXACT RESID-alternate [] synonym: "beta-elim-s" EXACT OMSSA-label [] synonym: "Dehydrated" RELATED PSI-MS-label [] synonym: "dehydro" EXACT OMSSA-label [] synonym: "dehydroalanine" EXACT RESID-name [] synonym: "Dha" EXACT RESID-alternate [] synonym: "Dha(Ser)" EXACT PSI-MOD-label [] synonym: "MOD_RES 2,3-didehydroalanine (Ser)" EXACT UniProt-feature [] synonym: "phospholosss" EXACT OMSSA-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 3 H 3 N 1 O 1" xref: MassAvg: "69.06" xref: MassMono: "69.021464" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:23" xref: UniProt: "PTM-0006" is_a: MOD:00416 ! phosphorylation of an hydroxyl amino acid with prompt loss of phosphate is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01168 ! dehydroalanine [Term] id: MOD:00190 name: dehydrobutyrine (Thr) def: "A protein modification that effectively converts an L-threonine residue to dehydrobutyrine." [DeltaMass:0, OMSSA:141, OMSSA:164, OMSSA:97, PubMed:1547888, PubMed:3769923, RESID:AA0182, Unimod:23#T] subset: PSI-MOD-slim synonym: "(2Z)-2-aminobut-2-enoic acid" EXACT RESID-systematic [] synonym: "(Z)-2-amino-2-butenoic acid" EXACT RESID-alternate [] synonym: "(Z)-2-aminobutenoic acid" EXACT RESID-alternate [] synonym: "(Z)-dehydrobutyrine" EXACT RESID-name [] synonym: "2,3-didehydrobutyrine" EXACT RESID-alternate [] synonym: "3-methyldehydroalanine" EXACT RESID-alternate [] synonym: "alpha,beta-dehydroaminobutyric acid" EXACT RESID-alternate [] synonym: "anhydrothreonine" EXACT RESID-alternate [] synonym: "beta-elim-t" EXACT OMSSA-label [] synonym: "Dehydrated" RELATED PSI-MS-label [] synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] synonym: "dehydro" EXACT OMSSA-label [] synonym: "Dehydroamino butyric acid" EXACT DeltaMass-label [] synonym: "Dhb" EXACT RESID-alternate [] synonym: "Dhb(Thr)" EXACT PSI-MOD-label [] synonym: "methyl-dehydroalanine" EXACT RESID-alternate [] synonym: "MOD_RES (Z)-2,3-didehydrobutyrine" EXACT UniProt-feature [] synonym: "phospholosst" EXACT OMSSA-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 4 H 5 N 1 O 1" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:23" xref: UniProt: "PTM-0007" is_a: MOD:00416 ! phosphorylation of an hydroxyl amino acid with prompt loss of phosphate is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01703 ! dehydrobutyrine [Term] id: MOD:00191 name: (Z)-2,3-didehydrotyrosine def: "A protein modification that effectively converts L-tyrosine to (Z)-2,3-didehydrotyrosine." [PubMed:1347277, PubMed:9631087, RESID:AA0183] comment: incidental to RESID:AA0184; incidental to RESID:AA0187; incidental to RESID:AA0188; incidental to RESID:AA0189; incidental to RESID:AA0378; incidental to RESID:AA0379; incidental to RESID:AA0380; incidental to RESID:AA0381 subset: PSI-MOD-slim synonym: "(2Z)-2-amino-3-(4-hydroxyphenyl)prop-2-enoic acid" EXACT RESID-systematic [] synonym: "(Z)-2,3-didehydrogenated tyrosine" EXACT PSI-MOD-alternate [] synonym: "(Z)-2,3-didehydrotyrosine" EXACT RESID-name [] synonym: "2-amino-3-oxo-butanoic_acid" RELATED Unimod-description [] synonym: "amino-(para-hydroxybenzylidenyl)acetic acid" EXACT RESID-alternate [] synonym: "cis-dehydrotyrosine" EXACT RESID-alternate [] synonym: "Didehydro" RELATED PSI-MS-label [] synonym: "green fluorescent protein chromophore" EXACT RESID-alternate [] synonym: "MOD_RES (Z)-2,3-didehydrotyrosine" EXACT UniProt-feature [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "red fluorescent protein chromophore" EXACT RESID-alternate [] synonym: "Z-dHTyr" EXACT PSI-MOD-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 9 H 7 N 1 O 2" xref: MassAvg: "161.16" xref: MassMono: "161.047678" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0002" is_a: MOD:00706 ! dehydrogenated tyrosine [Term] id: MOD:00192 name: L-serine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-serine residue and a glycine residue to form L-serine 5-imidazolinone glycine." [ChEBI:21393, PubMed:1347277, PubMed:9631087, RESID:AA0184] comment: Cross-link 2; carboxamidine; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "(2-[(1R)-1-amino-2-hydroxyethyl]-5-oxo-4,5-dihydro-1H-imidazol-1-yl)acetic acid" EXACT RESID-systematic [] synonym: "2-[1-amino-2-hydroxyethyl]-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "4-methylidene-imidazole-5-one (MIO) active site" EXACT RESID-alternate [] synonym: "CROSSLNK 5-imidazolinone (Ser-Gly)" EXACT UniProt-feature [] synonym: "green fluorescent protein chromophore" EXACT RESID-alternate [] synonym: "L-serine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "seryl-5-imidazolinone glycine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 6 N 2 O 2" xref: MassAvg: "126.11" xref: MassMono: "126.042927" xref: Origin: "G, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0049" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00193 name: L-3-oxoalanine (Cys) def: "A protein modification that effectively converts an L-cysteine residue to L-oxoalanine." [DeltaMass:350, PubMed:14563551, PubMed:7628016, PubMed:8681943, PubMed:9478923, RESID:AA0185#CYS, Unimod:402#C] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-oxopropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-oxopropionic acid" EXACT RESID-alternate [] synonym: "C(alpha)-formylglycine" RELATED RESID-misnomer [] synonym: "L-3-oxoalanine" EXACT RESID-name [] synonym: "L-amino-malonic acid semialdehyde" EXACT RESID-alternate [] synonym: "L-aminomalonaldehydic acid" EXACT RESID-alternate [] synonym: "L-serinesemialdehyde" RELATED RESID-misnomer [] synonym: "MOD_RES 3-oxoalanine (Cys)" EXACT UniProt-feature [] synonym: "Oxala(Cys)" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.08" xref: DiffFormula: "C 0 H -2 N 0 O 1 S -1" xref: DiffMono: "-17.992806" xref: Formula: "C 3 H 3 N 1 O 2" xref: MassAvg: "85.06" xref: MassMono: "85.016378" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:402" xref: UniProt: "PTM-0034" is_a: MOD:01169 ! L-3-oxoalanine [Term] id: MOD:00194 name: lactic acid def: "A protein modification that effectively converts an L-serine residue to an amino-terminal lactic acid." [PubMed:7607233, RESID:AA0186, Unimod:403#S] synonym: "(2R)-2-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "2-hydroxypropionic acid" EXACT RESID-alternate [] synonym: "alpha-hydroxypropionic acid" EXACT RESID-alternate [] synonym: "Lac(Ser)" EXACT PSI-MOD-label [] synonym: "lactic acid" EXACT RESID-name [] synonym: "lactic acid from N-term Ser" RELATED Unimod-description [] synonym: "MOD_RES Lactic acid" EXACT UniProt-feature [] synonym: "Ser->LacticAcid" RELATED PSI-MS-label [] xref: DiffAvg: "-15.02" xref: DiffFormula: "C 0 H -1 N -1 O 0" xref: DiffMono: "-15.010899" xref: Formula: "C 3 H 5 O 2" xref: MassAvg: "73.07" xref: MassMono: "73.028954" xref: Origin: "S" xref: TermSpec: "N-term" xref: Unimod: "Unimod:403" xref: UniProt: "PTM-0163" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00195 name: L-alanine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-alanine residue and a glycine residue to form L-alanine 5-imidazolinone glycine." [PubMed:10220322, RESID:AA0187] comment: Cross-link 2; carboxamidine; incidental to RESID:AA0181; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "(2-[(1S)-1-aminoethyl]-5-oxo-4,5-dihydro-1H-imidazol-1-yl)acetic acid" EXACT RESID-systematic [] synonym: "2-[1-aminoethyl]-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "4-methylidene-imidazole-5-one active site" EXACT RESID-alternate [] synonym: "alanyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "CROSSLNK 5-imidazolinone (Ala-Gly)" EXACT UniProt-feature [] synonym: "L-alanine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "XLNK-1Ala-NGly(Imidazole)" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 6 N 2 O 1" xref: MassAvg: "110.12" xref: MassMono: "110.048013" xref: Origin: "A, G" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0045" is_a: MOD:02040 ! crosslinked L-alanine residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00196 name: L-cysteine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-cysteine residue and a glycine residue to form L-cysteine 5-imidazolinone glycine." [PubMed:1537807, RESID:AA0188] comment: Cross-link 2; carboxamidine; incidental to RESID:AA0181; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "(2-[(1R)-1-amino-2-sulfanylethyl]-5-oxo-4,5-dihydro-1H-imidazol-1-yl)acetic acid" EXACT RESID-systematic [] synonym: "2-[1-amino-2-sulfanylethyl]-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "4-methylidene-imidazole-5-one (MIO) active site" EXACT RESID-alternate [] synonym: "CROSSLNK 5-imidazolinone (Cys-Gly)" EXACT UniProt-feature [] synonym: "cysteinyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "L-cysteine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "XLNK-1Cys-NGly(Imidazole)" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 6 N 2 O 1 S 1" xref: MassAvg: "142.18" xref: MassMono: "142.020084" xref: Origin: "C, G" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0047" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00197 name: 2-imino-glutamine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-glutamine residue and a glycine residue to form 2-imino-glutamine 5-imidazolinone glycine." [PubMed:11050230, PubMed:11209050, RESID:AA0189] comment: Cross-link 2; carboxamidine; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "2,N-didehydroglutaminyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "2-(3-carbamoyl-1-imino-propyl)-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "2-imino-glutamine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "[2-(3-carbamoyl-1-imino-propyl)-5-oxo-4,5-dihydro-imidazol-1-yl]-acetic acid" EXACT RESID-alternate [] synonym: "[2-(4-amino-4-oxobutanimidoyl)-5-oxo-4,5-dihydro-1H-imidazol-1-yl]acetic acid" EXACT RESID-systematic [] synonym: "CROSSLNK 2-iminomethyl-5-imidazolinone (Gln-Gly)" EXACT UniProt-feature [] synonym: "fluorescent protein FP583 chromophore" EXACT RESID-alternate [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "red fluorescent protein chromophore" EXACT RESID-alternate [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "C 7 H 7 N 3 O 2" xref: MassAvg: "165.15" xref: MassMono: "165.053826" xref: Origin: "G, Q" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0013" is_a: MOD:02046 ! crosslinked L-glutamine residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) [Term] id: MOD:00198 name: D-alanine (Ala) def: "A protein modification that effectively converts an L-alanine residue to D-alanine." [PubMed:15023056, PubMed:7287302, PubMed:7961627, RESID:AA0191#ALA] synonym: "(R)-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "D-Ala(Ala)" EXACT PSI-MOD-label [] synonym: "D-alanine" EXACT RESID-name [] synonym: "MOD_RES D-alanine (Ala)" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 3 H 5 N 1 O 1" xref: MassAvg: "71.08" xref: MassMono: "71.037114" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0112" is_a: MOD:00570 ! residues isobaric at 71.037114 Da is_a: MOD:00862 ! D-alanine is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:00199 name: D-allo-isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to a D-allo-isoleucine." [ChEBI:30007, PubMed:8223491, RESID:AA0192] synonym: "(2R,3S)-2-amino-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-methylpentanoic acid" EXACT RESID-alternate [] synonym: "3-methyl-norvaline" EXACT RESID-alternate [] synonym: "allo-D-isoleucine" EXACT RESID-alternate [] synonym: "alpha-amino-beta-methylvaleric acid" EXACT RESID-alternate [] synonym: "D-allo-isoleucine" EXACT RESID-name [] synonym: "D-Ile" EXACT PSI-MOD-label [] synonym: "D-threo-isoleucine" EXACT RESID-alternate [] synonym: "MOD_RES D-allo-isoleucine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0114" is_a: MOD:00306 ! residues isobaric at 113.084064 Da is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00910 ! modified L-isoleucine residue [Term] id: MOD:00200 name: D-methionine def: "A protein modification that effectively converts an L-methionine residue to D-methionine." [ChEBI:29984, PubMed:16033333, PubMed:2542051, RESID:AA0193] synonym: "(2R)-2-amino-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-amino-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "2-amino-4-(methylthio)butyric acid" EXACT RESID-alternate [] synonym: "D-Met" EXACT PSI-MOD-label [] synonym: "D-methionine" EXACT RESID-name [] synonym: "MOD_RES D-methionine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0 S 0" xref: DiffMono: "0.000000" xref: Formula: "C 5 H 9 N 1 O 1 S 1" xref: MassAvg: "131.19" xref: MassMono: "131.040485" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0120" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00201 name: D-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to D-phenylalanine." [ChEBI:29996, PubMed:1548227, PubMed:1644179, PubMed:2597281, RESID:AA0194] synonym: "(R)-2-amino-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "D-Phe" EXACT PSI-MOD-label [] synonym: "D-phenylalanine" EXACT RESID-name [] synonym: "MOD_RES D-phenylalanine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 9 H 9 N 1 O 1" xref: MassAvg: "147.18" xref: MassMono: "147.068414" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0121" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:00202 name: D-serine (Ser) def: "A protein modification that effectively converts an L-serine residue to D-serine." [PubMed:7973665, RESID:AA0195#SER] synonym: "(R)-2-amino-3-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "D-Ser(Ser)" EXACT PSI-MOD-label [] synonym: "D-serine" EXACT RESID-name [] synonym: "MOD_RES D-serine (Ser)" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 3 H 5 N 1 O 2" xref: MassAvg: "87.08" xref: MassMono: "87.032028" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0308" is_a: MOD:00891 ! D-serine is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00203 name: D-asparagine def: "A protein modification that effectively converts an L-asparagine residue to D-asparagine." [ChEBI:29957, PubMed:1859408, RESID:AA0196] synonym: "(R)-2-amino-4-butanediamic acid" EXACT RESID-systematic [] synonym: "D-alpha-aminosuccinamic acid" EXACT RESID-alternate [] synonym: "D-Asn" EXACT PSI-MOD-label [] synonym: "D-asparagine" EXACT RESID-name [] synonym: "D-aspartic acid beta-amide" EXACT RESID-alternate [] synonym: "MOD_RES D-asparagine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 4 H 6 N 2 O 2" xref: MassAvg: "114.10" xref: MassMono: "114.042927" xref: Origin: "N" xref: Source: "natural" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0115" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00204 name: D-leucine def: "A protein modification that effectively converts an L-leucine residue to D-leucine." [ChEBI:30005, PubMed:10461743, PubMed:12135762, PubMed:1358533, PubMed:1548227, RESID:AA0197] synonym: "(2R)-2-amino-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "alpha-aminoisocaproic acid" EXACT RESID-alternate [] synonym: "D-Leu" EXACT PSI-MOD-label [] synonym: "D-leucine" EXACT RESID-name [] synonym: "MOD_RES D-leucine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0119" is_a: MOD:00306 ! residues isobaric at 113.084064 Da is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00911 ! modified L-leucine residue [Term] id: MOD:00205 name: D-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to D-tryptophan." [ChEBI:29955, PubMed:8910408, RESID:AA0198] synonym: "(R)-2-amino-3-(1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "alpha-amino-beta-(3-indolyl)propionoic acid" EXACT RESID-alternate [] synonym: "D-Trp" EXACT PSI-MOD-label [] synonym: "D-tryptophan" EXACT RESID-name [] synonym: "MOD_RES D-tryptophan" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 11 H 10 N 2 O 1" xref: MassAvg: "186.21" xref: MassMono: "186.079313" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0123" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00206 name: L-isoglutamyl-polyglycine def: "A protein modification that effectively converts an L-glutamic acid residue to L-isoglutamyl-polyglycine." [ChEBI:21343, PubMed:10074368, PubMed:16368691, PubMed:7992051, RESID:AA0201] synonym: "gamma-glutamylpolyglycine" EXACT RESID-alternate [] synonym: "L-isoglutamyl-polyglycine" EXACT RESID-name [] synonym: "MOD_RES 5-glutamyl polyglycine" EXACT UniProt-feature [] xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0394" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00207 name: L-isoglutamyl-polyglutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to isoglutamyl-polyglutamic acid, forming an isopeptide bond with a polyglutamic acid." [PubMed:10747868, PubMed:1680872, RESID:AA0202] synonym: "gamma-glutamylpolyglutamic acid" EXACT RESID-alternate [] synonym: "L-isoglutamyl-polyglutamic acid" EXACT RESID-name [] xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0395" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00208 name: O4'-(phospho-5'-adenosine)-L-tyrosine def: "A protein modification that effectively crosslinks an L-tyrosine residue and 5'-phosphoadenosine through a phosphodiester bond to form O4'-(phospho-5'-adenosine)-L-tyrosine." [DeltaMass:0, PubMed:5543675, RESID:AA0203, Unimod:405#Y] comment: From DeltaMass: Average Mass: 329. subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-[4-(5'-adenosine phosphonoxy)phenyl]propanoic acid" EXACT RESID-systematic [] synonym: "5'-adenylic-O-tyrosine" EXACT RESID-alternate [] synonym: "AMP binding site" RELATED Unimod-description [] synonym: "hydrogen 5'-adenylate tyrosine ester" EXACT RESID-alternate [] synonym: "MOD_RES O-AMP-tyrosine" EXACT UniProt-feature [] synonym: "O-5'-Adenosylation ( of Tyrosine)" EXACT DeltaMass-label [] synonym: "O4'-(phospho-5'-adenosine)-L-tyrosine" EXACT RESID-name [] synonym: "O4'-L-tyrosine 5'-adenosine phosphodiester" EXACT RESID-alternate [] synonym: "OAMPTyr" EXACT PSI-MOD-label [] synonym: "Phosphoadenosine" RELATED PSI-MS-label [] xref: DiffAvg: "329.21" xref: DiffFormula: "C 10 H 12 N 5 O 6 P 1" xref: DiffMono: "329.052520" xref: Formula: "C 19 H 21 N 6 O 8 P 1" xref: MassAvg: "492.38" xref: MassMono: "492.115848" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:405" xref: UniProt: "PTM-0332" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01165 ! adenylated residue [Term] id: MOD:00209 name: S-(2-aminovinyl)-D-cysteine (Cys-Ser) def: "A protein modification that effectively cross-links an L-cysteine residue and an L-serine residue by a thioether bond to form S-(2-aminovinyl)-D-cysteine." [PubMed:3181159, PubMed:3769923, RESID:AA0204#SER] comment: Cross-link 2. synonym: "(2S)-2-amino-3-([(Z)-2-aminoethenyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "(S,Z)-S-(2-aminovinyl)cysteine" EXACT RESID-alternate [] synonym: "CROSSLNK S-(2-aminovinyl)-D-cysteine (Ser-Cys)" EXACT UniProt-feature [] synonym: "S-(2-aminovinyl)-D-cysteine" EXACT RESID-name [] synonym: "XLNK-(D)SCys-VinAm" EXACT PSI-MOD-label [] xref: DiffAvg: "-64.04" xref: DiffFormula: "C -1 H -4 N 0 O -3 S 0" xref: DiffMono: "-64.016044" xref: Formula: "C 5 H 7 N 2 O 1 S 1" xref: MassAvg: "143.18" xref: MassMono: "143.027909" xref: Origin: "C, S" xref: TermSpec: "C-term" xref: UniProt: "PTM-0268" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01850 ! S-(2-aminovinyl)-D-cysteine [Term] id: MOD:00210 name: L-cysteine sulfenic acid def: "A protein modification that effectively monooxygenates an L-cysteine residue to L-cysteine sulfenic acid." [DeltaMass:41, OMSSA:193, PubMed:10964927, PubMed:2501303, PubMed:8756456, PubMed:9214307, PubMed:9586994, PubMed:9587003, RESID:AA0205, Unimod:35#C] comment: From DeltaMass: Average Mass: 16 Average Mass Change:16 Notes:Green et al. in J. B. C. 270, 18209-18211 (1995) quote Kim and Raines in Eur. J. Biochem. 224, 109-114 (1994). Kim and Raines using ESI-MS and sulfhydryl group titration found that bovine seminal ribonuclease contains a single oxidized sulfhydryl group, which cannot participate in a disulfide bond. This form of cysteine is called sulfenic acid (-SOH). subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-(hydroxysulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "(2R)-2-amino-3-(oxido-lambda(4)-sulfanyl)propanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-2-carboxyethanesulfenic acid" EXACT RESID-alternate [] synonym: "2-amino-3-sulfinylpropanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "3-sulfenoalanine" EXACT RESID-alternate [] synonym: "ACT_SITE Cysteine sulfenic acid (-SOH) intermediate" EXACT UniProt-feature [] synonym: "CysOH" EXACT PSI-MOD-label [] synonym: "cysteine S-oxide [tautomer]" EXACT RESID-alternate [] synonym: "cysteine sulfoxide [tautomer]" EXACT RESID-alternate [] synonym: "cysteine sulphenic acid" EXACT RESID-alternate [] synonym: "L-cysteine sulfenic acid" EXACT RESID-name [] synonym: "mod193" EXACT OMSSA-label [] synonym: "MOD_RES Cysteine sulfenic acid (-SOH)" EXACT UniProt-feature [] synonym: "Oxidation" RELATED PSI-MS-label [] synonym: "S-hydroxycysteine" EXACT RESID-alternate [] synonym: "S-oxocysteine [tautomer]" EXACT RESID-alternate [] synonym: "S-oxycysteine [tautomer]" EXACT RESID-alternate [] synonym: "Sulfenic Acid (from Cysteine)" EXACT DeltaMass-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0" xref: DiffMono: "15.994915" xref: Formula: "C 3 H 5 N 1 O 2 S 1" xref: MassAvg: "119.14" xref: MassMono: "119.004099" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" xref: UniProt: "PTM-0107" is_a: MOD:00708 ! sulfur oxygenated L-cysteine is_a: MOD:01854 ! sulfur monooxygenated residue [Term] id: MOD:00211 name: S-(glycyl)-L-cysteine (Cys-Gly) def: "A protein modification that effectively crosslinks an L-cysteine residue and a glycine residue by a thioester bond to form S-glycyl-L-cysteine." [ChEBI:22050, PubMed:3306404, RESID:AA0206] comment: Cross-link 2. For the modification of a C-terminal glycine by formation of a thioester bond with free L-cysteine see MOD:01777 [JSG]. subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-[(aminoacetyl)sulfanyl]propanoic acid" EXACT RESID-systematic [] synonym: "1-(cystein-S-yl)-glycinate" EXACT RESID-alternate [] synonym: "ACT_SITE Glycyl thioester intermediate" EXACT UniProt-feature [] synonym: "glycine cysteine thioester" EXACT RESID-alternate [] synonym: "S-(2-amino-1-oxoethyl)cysteine" EXACT RESID-alternate [] synonym: "S-(glycyl)-L-cysteine" EXACT RESID-name [] synonym: "XLNK-SCys-1Gly" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 7 N 2 O 2 S 1" xref: MassAvg: "159.18" xref: MassMono: "159.022823" xref: Origin: "C, G" xref: TermSpec: "C-term" xref: UniProt: "PTM-0429" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00212 name: S-4-hydroxycinnamyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-4-hydroxycinnamyl-L-cysteine." [PubMed:7947803, PubMed:7981196, RESID:AA0207, Unimod:407] synonym: "(2R)-2-amino-3-([(2E)-3-(4-hydroxyphenyl)prop-2-enoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "cinnamate cysteine thioester" EXACT RESID-alternate [] synonym: "Hydroxycinnamyl" RELATED PSI-MS-label [] synonym: "hydroxycinnamyl" RELATED Unimod-description [] synonym: "MOD_RES S-(4-hydroxycinnamyl)cysteine" EXACT UniProt-feature [] synonym: "S-4-hydroxycinnamyl-L-cysteine" EXACT RESID-name [] synonym: "S-para-coumaryl-L-cysteine" EXACT RESID-alternate [] xref: DiffAvg: "146.14" xref: DiffFormula: "C 9 H 6 N 0 O 2 S 0" xref: DiffMono: "146.036779" xref: Formula: "C 12 H 11 N 1 O 3 S 1" xref: MassAvg: "249.28" xref: MassMono: "249.045964" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:407" xref: UniProt: "PTM-0414" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00213 name: chondroitin sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-serine def: "A protein modification that effectively cross-links an L-serine residue to the polymer chondroitin sulfate by a D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl tetrasaccharide." [PubMed:1794445, PubMed:1898736, PubMed:3472204, RESID:AA0208] synonym: "chondroitin 4-sulfate (chondroitin sulfate A)" EXACT RESID-alternate [] synonym: "chondroitin 6-sulfate (chondroitin sulfate C)" EXACT RESID-alternate [] synonym: "chondroitin sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-serine" EXACT RESID-name [] synonym: "poly[beta-1,4-D-glucopyranuronosyl-beta-1,3-(2-acetamido-2-deoxy-4-sulfate-D-galactosyl)]-beta-1,4-D-glucopyranuronosyl-beta-1,3-D-galactosyl-beta-1,3-D-galactosyl-beta-1,4-D-xylosyl-beta-1,3-L-serine; poly[beta-1,4-D-glucopyranuronosyl-beta-1,3-(2-acetamido-2-deoxy-6-sulfate D-galactosyl)]-beta-1,4-D-glucopyranuronosyl-beta-1,3-D-galactosyl-beta-1,3-D-galactosyl-beta-1,4-D-xylosyl-beta-1,3-L-serine" EXACT RESID-systematic [] xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:00214 name: dermatan 4-sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-serine def: "A protein modification that effectively cross-links an L-serine residue to the polymer dermatan 4-sulfate by a D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl tetrasaccharide." [PubMed:2914936, PubMed:3472204, RESID:AA0209] synonym: "beta-heparin" EXACT RESID-alternate [] synonym: "chondroitin sulfate B" EXACT RESID-alternate [] synonym: "dermatan 4-sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-serine" EXACT RESID-name [] synonym: "poly[beta-1,4-L-idopyranuronosyl-alpha-1,3-(2-acetamido-2-deoxy-4-sulfate D-galactosyl)]-beta-1,4-D-glucopyranuronosyl-beta-1,3-D-galactosyl-beta-1,3-D-galactosyl-beta-1,4-D-xylosyl-beta-1,3-L-serine" EXACT RESID-systematic [] xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:00215 name: heparan sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-serine def: "A protein modification that effectively cross-links an L-serine residue to the polymer heparan sulfate by a D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl tetrasaccharide." [PubMed:3472204, RESID:AA0210] synonym: "heparan sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-serine" EXACT RESID-name [] synonym: "heparin" EXACT RESID-alternate [] synonym: "heparitin sulfate" EXACT RESID-alternate [] synonym: "poly[alpha-1,4-(2-sulfate D-glucopyranuronosyl)-beta-1,4-(2-sulfamino-2-deoxy-6-sulfate D-glucosyl)]-beta-1,4-D-glucopyranuronosyl-beta-1,3-D-galactosyl-beta-1,3-D-galactosyl-beta-1,4-D-xylosyl-beta-1,3-L-serine" EXACT RESID-systematic [] xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:00216 name: N6-formyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-formyl-L-lysine." [OMSSA:43, PubMed:15799070, RESID:AA0211, Unimod:122#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(formylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "epsilon-formyllysine" EXACT RESID-alternate [] synonym: "Formyl" RELATED PSI-MS-label [] synonym: "Formylation" RELATED Unimod-description [] synonym: "formylk" EXACT OMSSA-label [] synonym: "MOD_RES N6-formyllysine" EXACT UniProt-feature [] synonym: "N(zeta)-formyllysine" EXACT RESID-alternate [] synonym: "N6-formyl-L-lysine" EXACT RESID-name [] synonym: "N6-formylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6FoLys" EXACT PSI-MOD-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 7 H 12 N 2 O 2" xref: MassAvg: "156.19" xref: MassMono: "156.089878" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:122" xref: UniProt: "PTM-0192" is_a: MOD:00409 ! N-formylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00217 name: O4-arabinosyl-L-hydroxyproline def: "A protein modification that effectively converts an L-proline residue to O4-arabinosyl-L-hydroxyproline." [DeltaMass:0, PubMed:666730, PubMed:7852316, RESID:AA0212, Unimod:408] comment: secondary to RESID:AA0030; From DeltaMass: Average Mass: 147. subset: PSI-MOD-slim synonym: "(2S,4R)-4-(beta-L-arabinofuranosyloxy)pyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "4-(beta-L-arabinofuranosyloxy)proline" EXACT RESID-alternate [] synonym: "4-Glycosyloxy- (pentosyl,C5) (of Proline)" EXACT DeltaMass-label [] synonym: "beta-arabinofuranosyl-4-hydroxyproline" EXACT RESID-alternate [] synonym: "Glycosyl" RELATED PSI-MS-label [] synonym: "glycosyl-L-hydroxyproline" RELATED Unimod-description [] synonym: "O4-arabinosyl-L-hydroxyproline" EXACT RESID-name [] synonym: "O4-glycosyl-hydroxyproline" EXACT RESID-alternate [] synonym: "OAra4HyPro" EXACT PSI-MOD-label [] xref: DiffAvg: "148.11" xref: DiffFormula: "C 5 H 8 N 0 O 5" xref: DiffMono: "148.037173" xref: Formula: "C 10 H 15 N 1 O 6" xref: MassAvg: "245.23" xref: MassMono: "245.089937" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:408" xref: UniProt: "PTM-0545" is_a: MOD:00396 ! O-glycosylated residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00218 name: O-(phospho-5'-RNA)-L-serine def: "A protein modification that effectively crosslinks an L-serine residue and the 5'-end of RNA through a phosphodiester to form O4'-(phospho-5'-RNA)-L-serine." [PubMed:1705009, RESID:AA0213] synonym: "(S)-2-amino-3-(5'-ribonucleic acid phosphonoxy)propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES O-(5'-phospho-RNA)-serine" EXACT UniProt-feature [] synonym: "O-(phospho-5'-RNA)-L-serine" EXACT RESID-name [] synonym: "O3-(phospho-5'-RNA)-L-serine" EXACT RESID-alternate [] synonym: "O3-L-serine 5'-RNA phosphodiester" EXACT RESID-alternate [] xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0227" is_a: MOD:00751 ! ribonucleic acid linked residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00219 name: L-citrulline def: "A protein modification that effectively converts an L-arginine residue to L-citrulline." [DeltaMass:0, OMSSA:33, PubMed:2466844, RESID:AA0214, Unimod:7#R] comment: This modification is not the result of deamidation, instead the guanidino group is replaced with an ureido group. subset: PSI-MOD-slim synonym: "(S)-2-amino-5-(carbamoylamino)pentanoic acid" EXACT RESID-systematic [] synonym: "2-amino-5-(aminocarbonyl)aminopentanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-delta-ureidovaleric acid" EXACT RESID-alternate [] synonym: "Cit" EXACT PSI-MOD-label [] synonym: "citrullinationr" EXACT OMSSA-label [] synonym: "Citrulline" EXACT DeltaMass-label [] synonym: "Deamidated" RELATED PSI-MS-label [] synonym: "Deamidated" RELATED Unimod-interim [] synonym: "Deamidation" RELATED Unimod-description [] synonym: "delta-ureidonorvaline" EXACT RESID-alternate [] synonym: "L-citrulline" EXACT RESID-name [] synonym: "MOD_RES Citrulline" EXACT UniProt-feature [] synonym: "N5-(aminocarbonyl)ornithine" EXACT RESID-alternate [] synonym: "N5-carbamoylornithine" EXACT RESID-alternate [] synonym: "N5-carbamylornithine" EXACT RESID-alternate [] xref: DiffAvg: "0.98" xref: DiffFormula: "C 0 H -1 N -1 O 1" xref: DiffMono: "0.984016" xref: Formula: "C 6 H 11 N 3 O 2" xref: MassAvg: "157.17" xref: MassMono: "157.085127" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:7" xref: UniProt: "PTM-0092" is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00220 name: 4-hydroxy-L-arginine def: "A protein modification that effectively converts an L-arginine residue to a 4-hydroxy-L-arginine." [PubMed:10966817, PubMed:7650037, RESID:AA0215] synonym: "(2S,4Xi)-2-amino-5-[(diaminomethylidene)amino]-4-hydroxypentanoic acid" EXACT RESID-systematic [] synonym: "2-amino-5-(carbamimidamido)-4-hydroxypentanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-5-[(aminoiminomethyl)amino]-4-hydroxypentanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-5-guanidino-4-hydroxypentanoic acid" EXACT RESID-alternate [] synonym: "4-hydroxy-L-arginine" EXACT RESID-name [] synonym: "4-hydroxylated L-arginine" EXACT PSI-MOD-alternate [] synonym: "4HyArg" EXACT PSI-MOD-label [] synonym: "C(gamma)-hydroxyarginine" EXACT RESID-alternate [] synonym: "gamma-hydroxyarginine" EXACT RESID-alternate [] synonym: "MOD_RES 4-hydroxyarginine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 12 N 4 O 2" xref: MassAvg: "172.19" xref: MassMono: "172.096026" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0042" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00682 ! hydroxylated arginine [Term] id: MOD:00221 name: N-(L-isoaspartyl)-L-cysteine def: "A protein modification that effectively crosslinks L-aspartic acid and L-cysteine residues via an isopeptide bond to form N-(L-isoaspartyl)-L-cysteine." [PubMed:8286361, RESID:AA0216] comment: Cross-link 2. synonym: "(S)-2-amino-4-((R)-1-carboxy-2-sulfanylethyl)amino-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-(3-amino-3-carboxypropanoyl)amino-3-mercaptopropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-N4-(1-carboxy-2-mercaptoethyl)butanediamic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoaspartyl cysteine isopeptide (Cys-Asn)" EXACT UniProt-feature [] synonym: "N-(L-isoaspartyl)-L-cysteine" EXACT RESID-name [] synonym: "N-beta-aspartylcysteine" EXACT RESID-alternate [] synonym: "N-isoaspartyl cysteine" EXACT RESID-alternate [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0 S 0" xref: DiffMono: "-17.026549" xref: Formula: "C 7 H 9 N 2 O 3 S 1" xref: MassAvg: "201.22" xref: MassMono: "201.033388" xref: Origin: "C, N" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0151" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia is_a: MOD:00688 ! isopeptide crosslinked residues [Term] id: MOD:00222 name: 2'-alpha-mannosyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 2'-alpha-mannosyl-L-tryptophan." [PubMed:15279557, PubMed:7547911, PubMed:7947762, RESID:AA0217, Unimod:41#W] synonym: "(2S)-2-amino-3-(2-beta-D-mannopyranosyl-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "2'-mannosyl-L-tryptophan" EXACT RESID-name [] synonym: "2'-tryptophan C-mannoside" EXACT RESID-alternate [] synonym: "C2'ManTrp" EXACT PSI-MOD-label [] synonym: "CARBOHYD C-linked (Man) tryptophan" EXACT UniProt-feature [] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 17 H 20 N 2 O 6" xref: MassAvg: "348.36" xref: MassMono: "348.132136" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" xref: UniProt: "PTM-0505" is_a: MOD:00421 ! C-glycosylated residue is_a: MOD:00595 ! monomannosylated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00223 name: N6-mureinyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-mureinyl-L-lysine." [PubMed:4261992, RESID:AA0218] synonym: "MOD_RES N6-murein peptidoglycan lysine" EXACT UniProt-feature [] synonym: "N6-[(2R,6S)-2-(N-(N-mureinyl-(R)-alanyl)-(S)-glutamyl)amino-6-amino-6-carboxy-1-oxohex-1-yl]lysine" EXACT RESID-alternate [] synonym: "N6-mureinyl-L-lysine" EXACT RESID-name [] xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0195" is_a: MOD:01159 ! peptidoglycanated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00224 name: 1-chondroitin sulfate-L-aspartic acid ester def: "A protein modification that effectively converts an L-aspartic acid residue to 1-chondroitin sulfate-L-aspartic acid ester" [PubMed:1898736, RESID:AA0219] synonym: "1-aspartic acid ester with 6-chondroitin 4-sulfate" EXACT RESID-alternate [] synonym: "1-chondroitin sulfate-L-aspartic acid ester" EXACT RESID-name [] synonym: "MOD_RES Aspartate 1-(chondroitin 4-sulfate)-ester" EXACT UniProt-feature [] synonym: "poly[beta-1,4-D-glucopyranuronosyl-beta-1,3-(2-acetamido-2-deoxy-4-sulfate D-galactosyl)]beta-1,4-D-glucopyranuronosyl-beta-1,3-(2-acetamido-2-deoxy-4-sulfate-6-(1-L-aspartyl)-D-galactose)" EXACT RESID-alternate [] synonym: "protein-glycosaminoglycan-protein cross-link" EXACT RESID-alternate [] xref: Origin: "D" xref: TermSpec: "C-term" xref: UniProt: "PTM-0334" is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:00225 name: S-(6-FMN)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(6-FMN)-L-cysteine." [PubMed:10869173, PubMed:1551870, PubMed:620783, RESID:AA0220, Unimod:409#C] subset: PSI-MOD-slim synonym: "(R)-2-amino-3-[6-riboflavin 5'-dihydrogen phosphate]sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "6-[S-cysteinyl]flavin mononucleotide" EXACT RESID-alternate [] synonym: "6-[S-cysteinyl]FMN" EXACT RESID-alternate [] synonym: "flavin mononucleotide" RELATED Unimod-description [] synonym: "FMNH" RELATED PSI-MS-label [] synonym: "MOD_RES S-6-FMN cysteine" EXACT UniProt-feature [] synonym: "S-(6-FMN)-L-cysteine" EXACT RESID-name [] synonym: "S6FMNCys" EXACT PSI-MOD-label [] xref: DiffAvg: "454.33" xref: DiffFormula: "C 17 H 19 N 4 O 9 P 1 S 0" xref: DiffMono: "454.088965" xref: Formula: "C 20 H 24 N 5 O 10 P 1 S 1" xref: MassAvg: "557.47" xref: MassMono: "557.098150" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:409" xref: UniProt: "PTM-0271" is_a: MOD:02084 ! 6-FMN modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00226 name: 1'-(8alpha-FAD)-L-histidine def: "A protein modification that effectively converts an L-histidine residue to 1'-(8alpha-FAD)-L-histidine." [DeltaMass:0, PubMed:10585424, PubMed:1396672, PubMed:4339951, PubMed:9261083, RESID:AA0221, Unimod:50#H] comment: From DeltaMass: Average Mass: 784 subset: PSI-MOD-slim synonym: "(S)-2-amino-3-(1-[8alpha riboflavin 5'-(trihydrogen diphosphate) 5'->5'-ester with adenosine]imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "1'-(8alpha-FAD)-L-histidine" EXACT RESID-name [] synonym: "8alpha-(N(epsilon)-histidyl)FAD" EXACT RESID-alternate [] synonym: "8alpha-(N1'-histidyl)FAD" EXACT RESID-alternate [] synonym: "8alpha-N3-histidyl FAD" RELATED RESID-misnomer [] synonym: "FAD" RELATED PSI-MS-label [] synonym: "Flavin adenine dinucleotide" RELATED Unimod-description [] synonym: "MOD_RES Tele-8alpha-FAD histidine" EXACT UniProt-feature [] synonym: "N theta and N pi-(8alpha-Flavin) (on Histidine)" EXACT DeltaMass-label [] synonym: "N(tau)-(8alpha-FAD)-histidine" EXACT RESID-alternate [] synonym: "Nt8aFADHis" EXACT PSI-MOD-label [] synonym: "tele-(8alpha-FAD)-histidine" EXACT RESID-alternate [] xref: DiffAvg: "783.54" xref: DiffFormula: "C 27 H 31 N 9 O 15 P 2" xref: DiffMono: "783.141485" xref: Formula: "C 33 H 38 N 12 O 16 P 2" xref: MassAvg: "920.68" xref: MassMono: "920.200396" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:50" xref: UniProt: "PTM-0288" is_a: MOD:00895 ! FAD modified residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:00227 name: omega-N-phospho-L-arginine def: "A protein modification that effectively converts an L-arginine residue to omega-N-phospho-L-arginine." [PubMed:8300603, RESID:AA0222, Unimod:21#R] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-([amino(phosphonoamino)methylidene]amino)pentanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-amino-5-(N'-phosphonocarbamimidamido)pentanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-delta-phosphonoguanidinovaleric acid" EXACT RESID-alternate [] synonym: "MOD_RES Phosphoarginine" EXACT UniProt-feature [] synonym: "N(gamma)-phosphoarginine" EXACT RESID-alternate [] synonym: "N(omega)-phosphono-L-arginine" EXACT RESID-alternate [] synonym: "N5-[imino(phosphonoamino)methyl]-L-ornithine" EXACT RESID-alternate [] synonym: "omega-N-phospho-L-arginine" EXACT RESID-name [] synonym: "PArg" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "phosphoarginine" EXACT RESID-alternate [] synonym: "Phosphorylation" RELATED Unimod-description [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 6 H 13 N 4 O 4 P 1" xref: MassAvg: "236.17" xref: MassMono: "236.067442" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:21" xref: UniProt: "PTM-0250" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:01456 ! N-phosphorylated residue [Term] id: MOD:00228 name: S-diphytanylglycerol diether-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-diphytanylglycerol diether-L-cysteine." [PubMed:7797461, PubMed:8195126, RESID:AA0223, Unimod:410] comment: incidental to RESID:AA0043. subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-([(2S)-2,3-bis(3,7,11,15-tetramethylhexadecanyloxy)propyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "Archaeol" RELATED PSI-MS-label [] synonym: "LIPID S-archaeol cysteine" EXACT UniProt-feature [] synonym: "S-(diphytanylglyceryl)-L-cysteine" EXACT RESID-name [] synonym: "S-[2',3'-bis(phytanyloxy)propyl]cysteine" EXACT RESID-alternate [] synonym: "S-archaeol cysteine" EXACT RESID-alternate [] synonym: "S-diphytanylglycerol diether" RELATED Unimod-description [] synonym: "SPhyt2GlyceroCys" EXACT PSI-MOD-label [] xref: DiffAvg: "635.16" xref: DiffFormula: "C 43 H 86 N 0 O 2 S 0" xref: DiffMono: "634.662782" xref: Formula: "C 46 H 91 N 1 O 3 S 1" xref: MassAvg: "738.30" xref: MassMono: "737.671967" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:410" xref: UniProt: "PTM-0273" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00229 name: alpha-1-microglobulin-Ig alpha complex chromophore def: "A protein modification that effectively converts two L-cysteine residues to form alpha-1-microglobulin-Ig alpha complex chromophore." [PubMed:11058759, PubMed:11877257, PubMed:7506257, PubMed:7535251, RESID:AA0224] comment: Cross-link 2. synonym: "alpha-1-microglobulin-Ig alpha complex chromophore" EXACT RESID-name [] synonym: "BINDING Multimeric 3-hydroxykynurenine chromophore (covalent)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 2 S 2" xref: MassAvg: "204.26" xref: MassMono: "204.002720" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:00230 name: bis-L-cysteinyl bis-L-histidino diiron disulfide def: "A protein modification that effectively converts two L-cysteine residues, two L-histidine residues and a two-iron two-sulfur cluster to bis-L-cysteinyl bis-L-histidino diiron disulfide." [PubMed:2765515, PubMed:9651245, RESID:AA0225] comment: Cross-link 4. synonym: "bis-L-cysteinyl bis-L-histidino diiron disulfide" EXACT RESID-name [] synonym: "di-mu-sulfido(bis-S-cysteinyliron)(bis-N3'-histidinoiron)" EXACT RESID-systematic [] synonym: "METAL Iron-sulfur (2Fe-2S)" EXACT UniProt-feature [] synonym: "METAL Iron-sulfur (2Fe-2S); via pros nitrogen" EXACT UniProt-feature [] synonym: "Rieske iron-sulfur cofactor" EXACT RESID-alternate [] xref: DiffAvg: "171.78" xref: DiffFormula: "C 0 Fe 2 H -4 N 0 O 0 S 2" xref: DiffMono: "171.783814" xref: FormalCharge: "2-" xref: Formula: "C 18 Fe 2 H 20 N 8 O 4 S 4" xref: MassAvg: "652.34" xref: MassMono: "651.920007" xref: Origin: "C, C, H, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00231 name: hexakis-L-cysteinyl hexairon hexasulfide def: "A protein modification that effectively converts six L-cysteine residues and a six-iron six-sulfur cluster to hexakis-L-cysteinyl hexairon hexasulfide." [PubMed:1311311, PubMed:1318833, RESID:AA0226] comment: Cross-link 6. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "hexa-mu3-sulfido-hexakis(cysteinato-kappaS)-hexairon" EXACT RESID-systematic [] synonym: "hexa-mu3-sulfido-hexakis(S-cysteinyliron)" EXACT RESID-alternate [] synonym: "hexakis-L-cysteinyl hexairon hexasulfide" EXACT RESID-name [] synonym: "prismane iron-sulfur cofactor" EXACT RESID-alternate [] xref: DiffAvg: "521.38" xref: DiffFormula: "C 0 Fe 6 H -6 N 0 O 0 S 6" xref: DiffMono: "521.395649" xref: FormalCharge: "1-" xref: Formula: "C 18 Fe 6 H 24 N 6 O 6 S 12" xref: MassAvg: "1140.22" xref: MassMono: "1139.450758" xref: Origin: "C, C, C, C, C, C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00232 name: N6-(phospho-5'-adenosine)-L-lysine def: "A protein modification that effectively crosslinks an L-lysine residue and 5'-phosphoadenosine through a phosphoramide ester bond to form N6-(phospho-5'-adenosine)-L-lysine." [DeltaMass:316, PubMed:3882425, PubMed:4944632, RESID:AA0227, Unimod:405#K] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(5'-adenosine phosphonamino)hexanoic acid" EXACT RESID-systematic [] synonym: "5'-adenylic-N6-L-lysine" EXACT RESID-alternate [] synonym: "ACT_SITE N6-AMP-lysine intermediate" EXACT UniProt-feature [] synonym: "AMP binding site" RELATED Unimod-description [] synonym: "AMP Lysyl" EXACT DeltaMass-label [] synonym: "epsilon-5'-adenylic-L-lysine" EXACT RESID-alternate [] synonym: "L-lysine monoanhydride with 5'-adenylic acid" EXACT RESID-alternate [] synonym: "N(zeta)-5'-adenylic-L-lysine" EXACT RESID-alternate [] synonym: "N6-(phospho-5'-adenosine)-L-lysine" EXACT RESID-name [] synonym: "N6-L-lysine 5'-adenosine phosphoramidester" EXACT RESID-alternate [] synonym: "N6AMPLys" EXACT PSI-MOD-label [] synonym: "Phosphoadenosine" RELATED PSI-MS-label [] xref: DiffAvg: "329.21" xref: DiffFormula: "C 10 H 12 N 5 O 6 P 1" xref: DiffMono: "329.052520" xref: Formula: "C 16 H 24 N 7 O 7 P 1" xref: MassAvg: "457.38" xref: MassMono: "457.147483" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:405" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01165 ! adenylated residue [Term] id: MOD:00233 name: N6-(phospho-5'-guanosine)-L-lysine def: "A protein modification that effectively crosslinks an L-lysine residue and 5'-phosphoguanosine through a phosphoramide ester bond to form N6-(phospho-5'-guanosine)-L-lysine." [DeltaMass:304, PubMed:6092377, PubMed:6264433, RESID:AA0228, Unimod:413#K] comment: From DeltaMass: Average Mass: 345 Formula:C10H12O5N7P1 Monoisotopic Mass Change:345.047 Average Mass Change:345.209 References:PE Sciex subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(5'-guanosine phosphonamino)hexanoic acid" EXACT RESID-systematic [] synonym: "5'-guanylic-N6-L-lysine" EXACT RESID-alternate [] synonym: "5'phos Guanosyl" EXACT DeltaMass-label [] synonym: "ACT_SITE N6-GMP-lysine intermediate" EXACT UniProt-feature [] synonym: "epsilon-5'-guanylic-L-lysine" EXACT RESID-alternate [] synonym: "L-lysine monoanhydride with 5'-guanylic acid" EXACT RESID-alternate [] synonym: "lysine guanosine-5'-monophosphate" EXACT RESID-alternate [] synonym: "N(zeta)-5'-guanylic-lysine" EXACT RESID-alternate [] synonym: "N6-(5'-guanylyl)-lysine" EXACT RESID-alternate [] synonym: "N6-(phospho-5'-guanosine)-L-lysine" EXACT RESID-name [] synonym: "N6-L-lysine 5'-guanosine phosphoramidester" EXACT RESID-alternate [] synonym: "N6GMPLys" EXACT PSI-MOD-label [] synonym: "phospho-guanosine" RELATED Unimod-description [] synonym: "Phosphoguanosine" RELATED PSI-MS-label [] xref: DiffAvg: "345.21" xref: DiffFormula: "C 10 H 12 N 5 O 7 P 1" xref: DiffMono: "345.047434" xref: Formula: "C 16 H 24 N 7 O 8 P 1" xref: MassAvg: "473.38" xref: MassMono: "473.142397" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:413" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01163 ! guanylated residue [Term] id: MOD:00234 name: L-cysteine glutathione disulfide def: "A protein modification that effectively converts an L-cysteine residue to S-glutathionyl-L-cysteine." [ChEBI:21264, DeltaMass:0, OMSSA:51, PubMed:3083866, PubMed:8344916, RESID:AA0229, Unimod:55] comment: From DeltaMass: Average Mass: 305 comment: Glutamyl-transpeptidase cleaves glutathione into cysteinylglycine (Cys-Gly) and a Glu residue. [PubMed: 28537416] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-((2S)-2-((4R)-4-amino-4-carboxyl-1-oxobutyl)amino-3-(carboxylmethyl)amino-3-oxo-propyl)dithio-propanoic acid" EXACT RESID-systematic [] synonym: "cysteinyl glutathione" EXACT RESID-alternate [] synonym: "Glutathionation" EXACT DeltaMass-label [] synonym: "Glutathione" RELATED PSI-MS-label [] synonym: "glutathione disulfide" RELATED Unimod-description [] synonym: "glutathionec" EXACT OMSSA-label [] synonym: "L-cysteine glutathione disulfide" EXACT RESID-name [] synonym: "L-gamma-glutamyl-L-cysteinyl-glycine (2-1')-disulfide with L-cysteine" EXACT RESID-alternate [] synonym: "MOD_RES S-glutathionyl cysteine" EXACT UniProt-feature [] synonym: "N-(N-gamma-glutamyl-cystinyl)-glycine" EXACT RESID-alternate [] synonym: "SGltCys" EXACT PSI-MOD-label [] xref: DiffAvg: "305.30" xref: DiffFormula: "C 10 H 15 N 3 O 6 S 1" xref: DiffMono: "305.068156" xref: Formula: "C 13 H 20 N 4 O 7 S 2" xref: MassAvg: "408.44" xref: MassMono: "408.077341" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:55" xref: UniProt: "PTM-0311" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01862 ! disulfide conjugated residue relationship: contains MOD:02026 ! S-(cysteinyl-glycyl)-L-cysteine [Term] id: MOD:00235 name: S-nitrosyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-nitrosyl-L-cysteine." [PubMed:10442087, PubMed:11562475, PubMed:15688001, PubMed:8626764, PubMed:8637569, RESID:AA0230, Unimod:275] subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-nitrososulfanyl-propanoic acid" EXACT RESID-systematic [] synonym: "L-cysteine nitrite ester" EXACT RESID-alternate [] synonym: "MOD_RES S-nitrosocysteine" EXACT UniProt-feature [] synonym: "Nitrosyl" RELATED PSI-MS-label [] synonym: "S-nitrosocysteine" EXACT RESID-alternate [] synonym: "S-nitrosyl-L-cysteine" EXACT RESID-name [] synonym: "S-nitrosylation" RELATED Unimod-description [] synonym: "SNOCys" EXACT PSI-MOD-label [] xref: DiffAvg: "29.00" xref: DiffFormula: "C 0 H -1 N 1 O 1 S 0" xref: DiffMono: "28.990164" xref: Formula: "C 3 H 4 N 2 O 2 S 1" xref: MassAvg: "132.14" xref: MassMono: "131.999348" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:275" xref: UniProt: "PTM-0280" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:02077 ! nitrosylated residue [Term] id: MOD:00236 name: N4-(ADP-ribosyl)-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-(ADP-ribosyl)-L-asparagine." [PubMed:15842200, PubMed:2498316, RESID:AA0231, Unimod:213#N] synonym: "(S)-2-amino-4-([adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with alpha-D-ribofuranosyl]amino)-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "ADP Ribose addition" RELATED Unimod-description [] synonym: "ADP-Ribosyl" RELATED PSI-MS-label [] synonym: "MOD_RES ADP-ribosylasparagine" EXACT UniProt-feature [] synonym: "N4-(ADP-ribosyl)-L-asparagine" EXACT RESID-name [] synonym: "N4-[alpha-D-ribofuranoside 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)]-L-asparagine" EXACT RESID-alternate [] synonym: "N4-alpha-D-ribofuranosyl-L-asparagine 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2" xref: DiffMono: "541.061109" xref: Formula: "C 19 H 27 N 7 O 15 P 2" xref: MassAvg: "655.41" xref: MassMono: "655.104036" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:213" xref: UniProt: "PTM-0054" is_a: MOD:00752 ! monoadenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00237 name: L-beta-methylthioaspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to L-beta-methylthioaspartic acid." [DeltaMass:61, OMSSA:13, OMSSA:26, PubMed:15473684, PubMed:8844851, RESID:AA0232, Unimod:39#D, ChEBI:73599] subset: PSI-MOD-slim synonym: "(2R,3Xi)-2-amino-3-(methylsulfanyl)butanedioic acid" EXACT RESID-systematic [] synonym: "3-(methylthio)-L-aspartic acid" EXACT RESID-name [] synonym: "3-carboxy-S-methyl-cysteine" EXACT RESID-alternate [] synonym: "3-methylthio-aspartic acid" EXACT RESID-alternate [] synonym: "3MeSAsp" EXACT PSI-MOD-label [] synonym: "beta-Methylthio-aspartic acid" EXACT DeltaMass-label [] synonym: "beta-methylthio-aspartic acid" EXACT RESID-alternate [] synonym: "Beta-methylthiolation" RELATED Unimod-description [] synonym: "bmethylthiold" EXACT OMSSA-label [] synonym: "Methylthio" RELATED Unimod-interim [] synonym: "methythiold" EXACT OMSSA-label [] synonym: "MOD_RES 3-methylthioaspartic acid" EXACT UniProt-feature [] xref: DiffAvg: "46.09" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 1" xref: DiffMono: "45.987721" xref: Formula: "C 5 H 7 N 1 O 3 S 1" xref: MassAvg: "161.18" xref: MassMono: "161.014664" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:39" xref: UniProt: "PTM-0032" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01153 ! methylthiolated residue [Term] id: MOD:00238 name: 5'-(N6-L-lysine)-L-topaquinone def: "A protein modification that effectively cross-links an L-lysine residue and an L-tyrosine residue by a carbon-nitrogen bond to form 5'-(N6-L-lysine)-L-topaquinone." [PubMed:8688089, RESID:AA0233] comment: Cross-link 2; secondary to RESID:AA0147. synonym: "1-[(S)-5-amino-5-carboxypentyl]amino-2-[(S)-2-amino-2-carboxyethyl]-2,6-cyclohexadien-4,5-dione" EXACT RESID-systematic [] synonym: "2'-(L-lys-N6-yl)-L-4',5'-topaquinone" EXACT RESID-name [] synonym: "2'-(L-lysine)-L-tyrosyl-4',5'-quinone" EXACT RESID-alternate [] synonym: "CROSSLNK Lysine tyrosylquinone (Lys-Tyr)" EXACT UniProt-feature [] synonym: "CROSSLNK Lysine tyrosylquinone (Tyr-Lys)" EXACT UniProt-feature [] synonym: "LTQ" EXACT RESID-alternate [] synonym: "lysyl oxidase cofactor" EXACT RESID-alternate [] xref: DiffAvg: "11.97" xref: DiffFormula: "C 0 H -4 N 0 O 1" xref: DiffMono: "11.963614" xref: Formula: "C 15 H 17 N 3 O 4" xref: MassAvg: "303.32" xref: MassMono: "303.121906" xref: Origin: "K, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0171" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00239 name: S-methyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-methyl-L-cysteine." [PubMed:10660523, PubMed:11875433, PubMed:1339288, RESID:AA0234, Unimod:34#C] subset: PSI-MOD-slim synonym: "(R)-2-amino-3-(methylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE S-methylcysteine intermediate" EXACT UniProt-feature [] synonym: "L-3-(methylthio)alanine" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES S-methylcysteine" EXACT UniProt-feature [] synonym: "S-methyl-L-cysteine" EXACT RESID-name [] synonym: "S-methylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "SMeCys" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 0" xref: DiffMono: "14.015650" xref: Formula: "C 4 H 7 N 1 O 1 S 1" xref: MassAvg: "117.17" xref: MassMono: "117.024835" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0636" is_a: MOD:00654 ! S-methylated residue is_a: MOD:01682 ! monomethylated L-cysteine [Term] id: MOD:00240 name: 4-hydroxy-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 4-hydroxy-L-lysine." [PubMed:4005040, RESID:AA0235, ChEBI:141495] comment: This modification was not structurally confirmed. Later 5-hydroxy-L-lysine was found at a homologous position in the same protein from closely related species. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2S,4R)-2,6-diamino-4-hydroxyhexanoic acid" EXACT RESID-systematic [] synonym: "4-hydroxy-L-lysine" EXACT RESID-name [] synonym: "4-hydroxylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "4HyLys" EXACT PSI-MOD-label [] synonym: "alpha,epsilon-diamino-gamma-hydroxycaproic acid" EXACT RESID-alternate [] synonym: "L-threo-gamma-hydroxylysine" EXACT RESID-alternate [] synonym: "MOD_RES 4-hydroxylysine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 12 N 2 O 2" xref: MassAvg: "144.17" xref: MassMono: "144.089878" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: UniProt: "PTM-0664" is_a: MOD:01047 ! monohydroxylated lysine [Term] id: MOD:00241 name: N4-hydroxymethyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-hydroxymethyl-L-asparagine." [RESID:AA0236, Unimod:414] comment: N4-methyl-L-asparagine, see MOD:0079, was found at a homologous position of the same protein in a closely related species. Since the peptide containing this modification was obtained by enzymatic cleavage, not cyanogen bromide cleavage, it could have experienced oxidation of the following methionine residue, leading to the erroneous attribution of a mass of 29 for the modification rather than 14. comment: This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2S)-2-amino-4-[(hydroxymethyl)amino]-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-amino-N4-hydroxymethylbutanediamic acid" EXACT RESID-alternate [] synonym: "beta-hydroxymethylasparagine" EXACT RESID-alternate [] synonym: "Hydroxymethyl" RELATED PSI-MS-label [] synonym: "hydroxymethyl" RELATED Unimod-description [] synonym: "N(gamma)-hydroxymethylasparagine" EXACT RESID-alternate [] synonym: "N4-hydroxymethyl-L-asparagine" EXACT RESID-name [] synonym: "N4-hydroxymethylasparagine" EXACT RESID-alternate [] xref: DiffAvg: "30.03" xref: DiffFormula: "C 1 H 2 N 0 O 1" xref: DiffMono: "30.010565" xref: Formula: "C 5 H 8 N 2 O 3" xref: MassAvg: "144.13" xref: MassMono: "144.053492" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:414" is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00242 name: O-(ADP-ribosyl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(ADP-ribosyl)-L-serine." [PubMed:15842200, PubMed:3141412, RESID:AA0237, Unimod:213#S] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-([adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with alpha-D-ribofuranosyl]oxy)-propanoic acid" EXACT RESID-systematic [] synonym: "ADP Ribose addition" RELATED Unimod-description [] synonym: "ADP-Ribosyl" RELATED PSI-MS-label [] synonym: "MOD_RES ADP-ribosylserine" EXACT UniProt-feature [] synonym: "O-(ADP-ribosyl)-L-serine" EXACT RESID-name [] synonym: "O3-(ADP-ribosyl)-L-serine" EXACT RESID-alternate [] synonym: "O3-[alpha-D-ribofuranoside 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)]-L-serine" EXACT RESID-alternate [] synonym: "O3-alpha-D-ribofuranosyl-L-serine 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] synonym: "OADPRibSer" EXACT PSI-MOD-label [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2" xref: DiffMono: "541.061109" xref: Formula: "C 18 H 26 N 6 O 15 P 2" xref: MassAvg: "628.38" xref: MassMono: "628.093137" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:213" xref: UniProt: "PTM-0056" is_a: MOD:00752 ! monoadenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00243 name: L-cysteine oxazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-serine residue to form L-cysteine oxazole-4-carboxylic acid." [PubMed:8183941, PubMed:8895467, RESID:AA0238] comment: Cross-link 2. synonym: "2-(1-azanyl-2-sulfanylethyl)-4-oxazolecarboxylic acid" EXACT RESID-alternate [] synonym: "2-[(1R)-1-amino-2-sulfanylethyl]-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Oxazole-4-carboxylic acid (Cys-Ser)" EXACT UniProt-feature [] synonym: "L-cysteine oxazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 6 H 6 N 2 O 2 S 1" xref: MassAvg: "170.19" xref: MassMono: "170.014998" xref: Origin: "C, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0376" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:01421 ! oxazole/oxazoline ring crosslinked residues (Ser) is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:00244 name: L-cysteine oxazoline-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-serine residue to form L-cysteine oxazoline-4-carboxylic acid." [PubMed:1880060, RESID:AA0239] comment: Cross-link 2. synonym: "(4S)-2-[(1R)-1-amino-2-sulfanylethyl]-4,5-dihydro-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-sulfanylethyl]-4,5-dihydro-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Oxazoline-4-carboxylic acid (Cys-Ser)" EXACT UniProt-feature [] synonym: "L-cysteine oxazoline-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 8 N 2 O 2 S 1" xref: MassAvg: "172.20" xref: MassMono: "172.030649" xref: Origin: "C, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0381" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:01421 ! oxazole/oxazoline ring crosslinked residues (Ser) is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00245 name: glycine oxazole-4-carboxylic acid def: "A protein modification that effectively crosslinks a glycine residue and an L-serine residue to form glycine oxazole-4-carboxylic acid." [PubMed:8183941, PubMed:8895467, RESID:AA0240] comment: Cross-link 2. synonym: "2-aminomethyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-azanylmethyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Oxazole-4-carboxylic acid (Gly-Ser)" EXACT UniProt-feature [] synonym: "glycine oxazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "C 5 H 4 N 2 O 2" xref: MassAvg: "124.10" xref: MassMono: "124.027277" xref: Origin: "G, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0377" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01421 ! oxazole/oxazoline ring crosslinked residues (Ser) is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:00246 name: glycine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and a glycine residue to form glycine thiazole-4-carboxylic acid." [ChEBI:21276, PubMed:8183941, PubMed:8895467, RESID:AA0241] comment: Cross-link 2. synonym: "2-(aminomethyl)-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-(azanylmethyl)-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Gly-Cys)" EXACT UniProt-feature [] synonym: "glycine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 5 H 4 N 2 O 1 S 1" xref: MassAvg: "140.16" xref: MassMono: "140.004434" xref: Origin: "C, G" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0378" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:00247 name: L-serine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-serine residue to form L-serine thiazole-4-carboxylic acid." [PubMed:8183941, PubMed:8895467, RESID:AA0242] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-hydroxyethyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-hydroxyethyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Ser-Cys)" EXACT UniProt-feature [] synonym: "L-serine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 6 H 6 N 2 O 2 S 1" xref: MassAvg: "170.19" xref: MassMono: "170.014998" xref: Origin: "C, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0363" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:00248 name: L-phenylalanine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-phenylalanine residue to form L-phenylalanine thiazole-4-carboxylic acid." [PubMed:1880060, RESID:AA0243] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-phenylethyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-phenylethyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Phe-Cys)" EXACT UniProt-feature [] synonym: "L-phenylalanine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 12 H 10 N 2 O 1 S 1" xref: MassAvg: "230.29" xref: MassMono: "230.051384" xref: Origin: "C, F" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0375" is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:00249 name: L-cysteine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks two L-cysteine residues to form L-cysteine thiazole-4-carboxylic acid." [PubMed:1880060, RESID:AA0244] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-sulfanylethyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-sulfanylethyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Cys-Cys)" EXACT UniProt-feature [] synonym: "L-cysteine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 6 H 6 N 2 O 1 S 2" xref: MassAvg: "186.25" xref: MassMono: "185.992155" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0360" is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:00250 name: L-lysine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-lysine residue to form L-lysine thiazole-4-carboxylic acid." [PubMed:1880060, RESID:AA0245] comment: Cross-link 2. Lysine is now thought not to be encoded in the peptide sequence modified to produce GE2270. See RESID:AA0470. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "2-[(1S)-1,5-diaminopentyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1,5-bis(azanyl)pentyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "L-lysine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 9 H 13 N 3 O 1 S 1" xref: MassAvg: "211.28" xref: MassMono: "211.077933" xref: Origin: "C, K" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:00251 name: O-(phospho-5'-DNA)-L-serine def: "A protein modification that effectively crosslinks an L-serine residue and the 5'-end of DNA through a phosphodiester bond to form O-(phospho-5'-DNA)-L-serine." [PubMed:7142163, PubMed:7265205, RESID:AA0246] synonym: "(S)-2-amino-3-(5'-deoxyribonucleic acid phosphonoxy)propanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE O-(5'-phospho-DNA)-serine intermediate" EXACT UniProt-feature [] synonym: "MOD_RES O-(5'-phospho-DNA)-serine" EXACT UniProt-feature [] synonym: "O-(phospho-5'-DNA)-L-serine" EXACT RESID-name [] synonym: "O3-(phospho-5'-DNA)-L-serine" EXACT RESID-alternate [] synonym: "O3-L-serine 5'-DNA phosphodiester" EXACT RESID-alternate [] xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0226" is_a: MOD:00750 ! deoxyribonucleic acid linked residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00252 name: keratan sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-threonine def: "A protein modification that effectively cross-links an L-threonine residue to the polymer keratan sulfate by a D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl tetrasaccharide." [PubMed:1417734, PubMed:3472204, RESID:AA0247] synonym: "keratan sulfate D-glucuronosyl-D-galactosyl-D-galactosyl-D-xylosyl-L-threonine" EXACT RESID-name [] synonym: "keratosulfate" EXACT RESID-alternate [] synonym: "poly[beta-1,4-(2-acetamido-2-deoxy-6-sulfate D-glucosyl)-beta-1,3-D-galactosyl]-beta-1,4-D-glucopyranuronosyl-beta-1,3-D-galactosyl-beta-1,3-D-galactosyl-beta-1,4-D-xylosyl-beta-1,3-L-threonine" EXACT RESID-systematic [] xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00005 ! O-glycosyl-L-threonine [Term] id: MOD:00253 name: L-selenocysteinyl molybdenum bis(molybdopterin guanine dinucleotide) (Sec) def: "A protein modification that effectively converts an L-selenocysteine residue to L-selenocysteinyl molybdenum bis(molybdopterin guanine dinucleotide)." [PubMed:14235557, PubMed:2211698, PubMed:8052647, PubMed:9036855, RESID:AA0248#SEC, Unimod:415] xref: DiffAvg: "1572.02" xref: DiffFormula: "C 40 H 47 Mo 1 N 20 O 26 P 4 S 4 Se 0" xref: DiffMono: "1572.985775" xref: Formula: "C 43 H 52 Mo 1 N 21 O 27 P 4 S 4 Se 1" xref: MassAvg: "1722.07" xref: MassMono: "1723.939410" xref: Origin: "U" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:415" is_a: MOD:00744 ! molybdenum pterin containing modification is_a: MOD:01158 ! modified L-selenocysteine residue [Term] id: MOD:00254 name: O4'-(phospho-5'-RNA)-L-tyrosine def: "A protein modification that effectively crosslinks an L-tyrosine residue and the 5'-end of RNA through a phosphodiester to form O4'-(phospho-5'-RNA)-L-tyrosine." [PubMed:1702164, PubMed:209034, PubMed:217003, PubMed:6264310, RESID:AA0249] synonym: "(S)-2-amino-3-[4-(5'-ribonucleic acid phosphonoxy)phenyl]propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES O-(5'-phospho-RNA)-tyrosine" EXACT UniProt-feature [] synonym: "O4'-(phospho-5'-RNA)-L-tyrosine" EXACT RESID-name [] synonym: "O4'-L-tyrosine 5'-RNA phosphodiester" EXACT RESID-alternate [] xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0229" is_a: MOD:00751 ! ribonucleic acid linked residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00255 name: 3-(3'-L-histidyl)-L-tyrosine def: "A protein modification that effectively cross-links an L-histidine residue and an L-tyrosine residue by a carbon-nitrogen bond to form 3-(3'-L-histidyl)-L-tyrosine." [PubMed:9144772, RESID:AA0250] comment: Cross-link 2. synonym: "(2S,3R)-2-amino-3-(5-[(2S)-2-amino-2-carboxyethyl]-1H-imidazol-1-yl)-3-(4-hydroxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "3-(3'-L-histidyl)-L-tyrosine" EXACT RESID-name [] synonym: "3-(N3'-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "3-(pi-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "3-(pros-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "beta-(N(delta)-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "beta-(N3'-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "CROSSLNK 3'-histidyl-3-tyrosine (His-Tyr)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 15 H 14 N 4 O 3" xref: MassAvg: "298.30" xref: MassMono: "298.106590" xref: Origin: "H, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0027" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02048 ! crosslinked L-histidine residue is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00256 name: L-methionine sulfone def: "A protein modification that dioxygenates an L-methionine residue to L-methionine sulfone." [DeltaMass:205, OMSSA:115, PubMed:12686488, PubMed:7786407, PubMed:7791219, PubMed:9252331, RESID:AA0251, Unimod:425#M] comment: DeltaMass gives the formula C 5 H 9 N 3 O 1 S 1 with mass 163 subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-(methylsulfonyl)butanoic acid" EXACT RESID-systematic [] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "L-methionine S,S-dioxide" EXACT RESID-alternate [] synonym: "L-methionine sulfone" EXACT RESID-name [] synonym: "MethionylSulphone" EXACT DeltaMass-label [] synonym: "MetO2" EXACT PSI-MOD-label [] synonym: "MOD_RES Methionine sulfone" EXACT UniProt-feature [] synonym: "Oxidation of Methionine (to Sulphone)" EXACT DeltaMass-label [] synonym: "S,S-dioxymethionine" EXACT RESID-alternate [] synonym: "suphonem" EXACT OMSSA-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2 S 0" xref: DiffMono: "31.989829" xref: Formula: "C 5 H 9 N 1 O 3 S 1" xref: MassAvg: "163.19" xref: MassMono: "163.030314" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:425" xref: UniProt: "PTM-0175" is_a: MOD:00709 ! sulfur oxygenated L-methionine is_a: MOD:01855 ! sulfur dioxygenated residue [Term] id: MOD:00257 name: dipyrrolylmethanemethyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to dipyrrolylmethanemethyl-L-cysteine." [PubMed:3042456, PubMed:3196304, PubMed:3421931, PubMed:8727319, RESID:AA0252, Unimod:416] synonym: "(2S)-3-[5-[4-(2-carboxy)ethyl-3-carboxymethyl-1-pyrrol-2-yl]methyl-4-(2-carboxy)ethyl-3-carboxymethyl-1-pyrrol-2-yl]methylthio-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "3-[5-(3-acetic acid-4-propanoic acid-1-pyrrol-2-yl)methyl-3-acetic acid-4-propanoic acid-1-pyrrol-2-yl]methylthio-2-aminopropanoic acid" EXACT RESID-alternate [] synonym: "dipyrrole cofactor" EXACT RESID-alternate [] synonym: "Dipyrrolylmethanemethyl" RELATED PSI-MS-label [] synonym: "dipyrrolylmethanemethyl" RELATED Unimod-description [] synonym: "dipyrrolylmethanemethyl-L-cysteine" EXACT RESID-name [] synonym: "dipyrrolylmethyl-L-cysteine" EXACT RESID-alternate [] synonym: "dipyrromethane cofactor" EXACT RESID-alternate [] synonym: "MOD_RES S-(dipyrrolylmethanemethyl)cysteine" EXACT UniProt-feature [] synonym: "pyrromethane cofactor" EXACT RESID-alternate [] xref: DiffAvg: "418.40" xref: DiffFormula: "C 20 H 22 N 2 O 8 S 0" xref: DiffMono: "418.137616" xref: Formula: "C 23 H 27 N 3 O 9 S 1" xref: MassAvg: "521.54" xref: MassMono: "521.146800" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:416" xref: UniProt: "PTM-0421" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00258 name: S-(2-aminovinyl)-3-methyl-D-cysteine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-threonine residue by a thioether bond to form S-(2-aminovinyl)-3-methyl-D-cysteine." [PubMed:9119018, RESID:AA0253] comment: Cross-link 2. synonym: "(2S,3S)-2-amino-3-[((Z)-2-aminoethenyl)sulfanyl]butanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-[(2-aminovinyl)sulfanyl]butanoic acid" EXACT RESID-alternate [] synonym: "CROSSLNK S-(2-aminovinyl)-3-methyl-D-cysteine (Thr-Cys)" EXACT UniProt-feature [] synonym: "decarboxylated methyllanthionine" EXACT RESID-alternate [] synonym: "S-(2-aminovinyl)-3-methyl-D-cysteine" EXACT RESID-name [] xref: DiffAvg: "-64.04" xref: DiffFormula: "C -1 H -4 N 0 O -3 S 0" xref: DiffMono: "-64.016044" xref: Formula: "C 6 H 9 N 2 O 1 S 1" xref: MassAvg: "157.21" xref: MassMono: "157.043559" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0267" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:02056 ! crosslinked L-threonine residue [Term] id: MOD:00259 name: O4'-(phospho-5'-DNA)-L-tyrosine def: "A protein modification that effectively crosslinks an L-tyrosine residue and the 5'-end of DNA through a phosphodiester bond to form O4'-(phospho-5'-DNA)-L-tyrosine." [PubMed:1861973, PubMed:2940511, PubMed:3684578, RESID:AA0254] synonym: "(S)-2-amino-3-[4-(5'-deoxyribonucleic acid phosphonoxy)phenyl]propanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE O-(5'-phospho-DNA)-tyrosine intermediate" EXACT UniProt-feature [] synonym: "MOD_RES O-(5'-phospho-DNA)-tyrosine" EXACT UniProt-feature [] synonym: "O4'-(phospho-5'-DNA)-L-tyrosine" EXACT RESID-name [] synonym: "O4'-L-tyrosine 5'-DNA phosphodiester" EXACT RESID-alternate [] xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0228" is_a: MOD:00750 ! deoxyribonucleic acid linked residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00260 name: O-(phospho-5'-DNA)-L-threonine def: "A protein modification that effectively crosslinks an L-threonine residue and the 5'-end of DNA through a phosphodiester bond to form O-(phospho-5'-DNA)-L-threonine." [PubMed:3081736, RESID:AA0255] synonym: "(S)-2-amino-3-(5'-deoxyribonucleic acid phosphonoxy)butanoic acid" EXACT RESID-systematic [] synonym: "O-(phospho-5'-DNA)-L-threonine" EXACT RESID-name [] synonym: "O3-(phospho-5'-DNA)-L-threonine" EXACT RESID-alternate [] synonym: "O3-L-threonine 5'-DNA phosphodiester" EXACT RESID-alternate [] xref: DiffAvg: "78.97" xref: DiffFormula: "C 0 H 0 N 0 O 3 P 1" xref: DiffMono: "78.958505" xref: Formula: "C 4 H 7 N 1 O 5 P 1" xref: MassAvg: "180.08" xref: MassMono: "180.006184" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00750 ! deoxyribonucleic acid linked residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00261 name: O4'-(phospho-5'-uridine)-L-tyrosine def: "A protein modification that effectively crosslinks an L-tyrosine residue and 5'-phosphouridine through a phosphodiester bond to form O4'-(phospho-5'-uridine)-L-tyrosine." [DeltaMass:0, PubMed:11467524, PubMed:2885322, RESID:AA0256, Unimod:417#Y] comment: From DeltaMass: Average Mass: 306. subset: PSI-MOD-slim synonym: "(S)-2-amino-3-[4-(5'-uridine phosphonoxy)phenyl]propanoic acid" EXACT RESID-systematic [] synonym: "5'-uridylic-O-tyrosine" EXACT RESID-alternate [] synonym: "hydrogen 5'-uridylate tyrosine ester" EXACT RESID-alternate [] synonym: "MOD_RES O-UMP-tyrosine" EXACT UniProt-feature [] synonym: "O-Uridinylylation (of Tyrosine)" EXACT DeltaMass-label [] synonym: "O4'-(phospho-5'-uridine)-L-tyrosine" EXACT RESID-name [] synonym: "O4'-L-tyrosine 5'-uridine phosphodiester" EXACT RESID-alternate [] synonym: "OUMPTyr" EXACT PSI-MOD-label [] synonym: "PhosphoUridine" RELATED PSI-MS-label [] synonym: "uridine phosphodiester" RELATED Unimod-description [] xref: DiffAvg: "306.17" xref: DiffFormula: "C 9 H 11 N 2 O 8 P 1" xref: DiffMono: "306.025302" xref: Formula: "C 18 H 20 N 3 O 10 P 1" xref: MassAvg: "469.34" xref: MassMono: "469.088630" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:417" xref: UniProt: "PTM-0333" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01166 ! uridylated residue [Term] id: MOD:00262 name: N-(L-glutamyl)-L-tyrosine def: "A protein modification that effectively forms a peptide bond between a C-terminal L-glutamic acid residue and a free L-tyrosine." [ChEBI:21477, PubMed:6387372, PubMed:8093886, RESID:AA0257] comment: Cross-link 2. synonym: "(S,S)-2-(2-aminopentanedio-1-yl)amino-3-(4-hydoxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "L-glutamyl L-tyrosine" EXACT RESID-name [] synonym: "N-(L-glutamyl)-L-tyrosine" EXACT RESID-alternate [] synonym: "SITE Involved in polymerization" EXACT UniProt-feature [] xref: DiffAvg: "-17.01" xref: DiffFormula: "C 0 H -1 N 0 O -1" xref: DiffMono: "-17.002740" xref: Formula: "C 14 H 16 N 2 O 5" xref: MassAvg: "292.29" xref: MassMono: "292.105922" xref: Origin: "E, Y" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00263 name: S-phycoviolobilin-L-cysteine def: "A protein modification that effectively results from forming an adduct between a cysteine residue and the tetrapyrrole compound phycoviolobilin." [PubMed:2106585, PubMed:3208761, RESID:AA0258, Unimod:387] synonym: "(4S)-3-[(1R)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-8,12-bis(2-carboxyethyl)-18-ethyl-4,5-dihydro-2,7,13,17-tetramethyl-(21H,22H,24H)-biladiene-bc-1,19-dione" EXACT RESID-systematic [] synonym: "BINDING Phycoviolobilin chromophore (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "cryptobiliviolin" EXACT RESID-alternate [] synonym: "cryptoviolin" EXACT RESID-alternate [] synonym: "cryptoviolobilin" EXACT RESID-alternate [] synonym: "PBV" EXACT RESID-alternate [] synonym: "Phycocyanobilin" RELATED PSI-MS-label [] synonym: "phycocyanobilin" RELATED Unimod-description [] synonym: "PVB" EXACT RESID-alternate [] synonym: "PXB" EXACT RESID-alternate [] synonym: "S-phycobiliviolin-L-cysteine" EXACT RESID-alternate [] synonym: "S-phycoviolobilin-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "586.69" xref: DiffFormula: "C 33 H 38 N 4 O 6 S 0" xref: DiffMono: "586.279135" xref: Formula: "C 36 H 43 N 5 O 7 S 1" xref: MassAvg: "689.83" xref: MassMono: "689.288320" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:387" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00264 name: phycoerythrobilin-bis-L-cysteine def: "A protein modification that effectively results from forming an adduct between two cysteine residues and the tetrapyrrole compound phycoerythrobilin." [PubMed:3208761, PubMed:3838747, RESID:AA0259] comment: Cross-link 2. synonym: "(2S,3R,16R)-3,18-bis-[(R)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-8,12-bis(2-carboxyethyl)-2,7,13,17-tetramethyl-2,3,15,16-tetrahydrobilin-1,19(21H,22H,24H)-dione" EXACT RESID-systematic [] synonym: "3,18-bis-[1-((2-amino-2-carboxy)ethylsulfanyl)ethyl]-2,3,15,16-tetrahydro-2,7,13,17-tetramethyl-1,19-dioxo-(21H,22H,24H)-biladiene-ab-8,12-dipropanoic acid" EXACT RESID-alternate [] synonym: "BINDING Phycoerythrobilin chromophore (covalent; via 2 links)" EXACT UniProt-feature [] synonym: "PEB" EXACT RESID-alternate [] synonym: "phycoerythrobilin biscysteine adduct" EXACT RESID-alternate [] synonym: "phycoerythrobilin-bis-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "586.69" xref: DiffFormula: "C 33 H 38 N 4 O 6 S 0" xref: DiffMono: "586.279135" xref: Formula: "C 39 H 48 N 6 O 8 S 2" xref: MassAvg: "792.97" xref: MassMono: "792.297505" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:00265 name: phycourobilin-bis-L-cysteine def: "A protein modification that effectively results from forming an adduct between two cysteine residues and the tetrapyrrole compound phycourobilin." [PubMed:3208761, PubMed:3838665, PubMed:3838747, PubMed:8876649, RESID:AA0260] comment: Cross-link 2. synonym: "3,18-bis(1-[(R)-2-amino-2-carboxyethyl]sulfanylethyl)-2,7,13,17-tetramethyl-1,19-dioxo-4,5,15,16-tetrahydro-(21H,22H,24H)-bilene-b-8,12-dipropanoic acid" EXACT RESID-alternate [] synonym: "3,18-bis(1-[(R)-2-amino-2-carboxyethyl]sulfanylethyl)-8,12-bis(2-carboxyethyl)-2,7,13,17-tetramethyl-4,5,15,16-tetrahydro-(21H,22H,24H)-bilene-b-1,19(4H,16H)-dione" EXACT RESID-systematic [] synonym: "BINDING Phycourobilin chromophore (covalent; via 2 links)" EXACT UniProt-feature [] synonym: "phycourobilin biscysteine adduct" EXACT RESID-alternate [] synonym: "phycourobilin-bis-L-cysteine" EXACT RESID-name [] synonym: "PUB" EXACT RESID-alternate [] xref: DiffAvg: "586.69" xref: DiffFormula: "C 33 H 38 N 4 O 6 S 0" xref: DiffMono: "586.279135" xref: Formula: "C 39 H 48 N 6 O 8 S 2" xref: MassAvg: "792.97" xref: MassMono: "792.297505" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:00266 name: N-L-glutamyl-poly-L-glutamic acid def: "A protein modification that effectively forms a peptide bond between a C-terminal L-glutamic acid residue and one or more free L-glutamic acid molecules to form N-(L-glutamyl)-poly-L-glutamic acid." [PubMed:2570347, PubMed:328274, RESID:AA0261] xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00267 name: L-cysteine sulfinic acid def: "A protein modification that effectively dioxygenates an L-cysteine residue to L-cysteine sulfinic acid." [ChEBI:16345, OMSSA:162, PubMed:12686488, PubMed:9252331, PubMed:9586994, RESID:AA0262, Unimod:425#C] comment: "Hyun Ae Woo, et. al., Science 300 (5619), 653-656" subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-sulfinopropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-2-carboxyethanesulfinic acid" EXACT RESID-alternate [] synonym: "2-amino-3-(dioxido-lambda(6)-sulfanyl)propanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-3-sulfonylpropanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "3-sulfinoalanine" EXACT RESID-alternate [] synonym: "3-sulphinoalanine" EXACT RESID-alternate [] synonym: "CysO2H" EXACT PSI-MOD-label [] synonym: "cysteine sulphinic acid" EXACT RESID-alternate [] synonym: "cysteine-S,S-dioxide [tautomer]" EXACT RESID-alternate [] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "L-cysteine sulfinic acid" EXACT RESID-name [] synonym: "MOD_RES Cysteine sulfinic acid (-SO2H)" EXACT UniProt-feature [] synonym: "S-cysteinesulfinic acid" EXACT RESID-alternate [] synonym: "S-sulfinocysteine" EXACT RESID-alternate [] synonym: "sulfinicacid" EXACT OMSSA-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2 S 0" xref: DiffMono: "31.989829" xref: Formula: "C 3 H 5 N 1 O 3 S 1" xref: MassAvg: "135.14" xref: MassMono: "134.999014" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:425" xref: UniProt: "PTM-0108" is_a: MOD:00708 ! sulfur oxygenated L-cysteine is_a: MOD:01855 ! sulfur dioxygenated residue [Term] id: MOD:00268 name: L-3',4',5'-trihydroxyphenylalanine def: "A protein modification that effectively converts an L-tyrosine residue to L-3',4',5'-trihydroxyphenylalanine." [DeltaMass:0, PubMed:12686488, PubMed:12771378, PubMed:8554314, PubMed:9252331, PubMed:9434739, RESID:AA0263, Unimod:425#Y, ChEBI:141811] comment: From DeltaMass: Average Mass: 32 synonym: "(S)-2-amino-3-(3,4,5-trihydroxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "3,4,6-Trihydroxy-Phenylalanine (from Tyrosine) (TOPA)" EXACT DeltaMass-label [] synonym: "35Hy2Tyr" EXACT PSI-MOD-label [] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "L-3',4',5'-trihydroxyphenylalanine" EXACT RESID-name [] synonym: "L-3,4,5-TOPA" EXACT RESID-alternate [] synonym: "MOD_RES 3',4',5'-trihydroxyphenylalanine" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 9 H 9 N 1 O 4" xref: MassAvg: "195.17" xref: MassMono: "195.053158" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:425" xref: UniProt: "PTM-0667" is_a: MOD:00428 ! dihydroxylated residue is_a: MOD:00707 ! hydroxylated tyrosine [Term] id: MOD:00269 name: O-(sn-1-glycerophosphoryl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(sn-1-glycerophosphoryl)-L-serine." [PubMed:8645220, RESID:AA0264, Unimod:419#S] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-[(2Xi)-2,3-dihydroxypropyl]phosphonoxypropanoic acid" EXACT RESID-systematic [] synonym: "alpha-glycerophosphoryl serine" EXACT RESID-alternate [] synonym: "Glycerophospho" RELATED PSI-MS-label [] synonym: "glycerophospho" RELATED Unimod-description [] synonym: "glycerophosphoserine" EXACT RESID-alternate [] synonym: "MOD_RES O-(sn-1-glycerophosphoryl)serine" EXACT UniProt-feature [] synonym: "O-(sn-1-glycerophosphoryl)-L-serine" EXACT RESID-name [] synonym: "O3-(sn-1-glycerophosphoryl)-L-serine" EXACT RESID-alternate [] synonym: "O3-2,3-dihydroxypropyl hydrogen phosphate-L-serine ester" EXACT RESID-alternate [] synonym: "O3-L-serine glyceryl-1-phosphodiester" EXACT RESID-alternate [] xref: DiffAvg: "154.06" xref: DiffFormula: "C 3 H 7 N 0 O 5 P 1" xref: DiffMono: "154.003110" xref: Formula: "C 6 H 12 N 1 O 7 P 1" xref: MassAvg: "241.14" xref: MassMono: "241.035138" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:419" xref: UniProt: "PTM-0230" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00270 name: 1-thioglycine (internal) def: "A protein modification that effectively converts a glycine residue to an internal 1-thioglycine." [PubMed:11463785, PubMed:9367957, RESID:AA0265#INT] comment: This modification occurs naturally in two forms. At an interior peptide location it exists as aminoethanethionic acid (or aminoethanethioic O-acid). At the carboxyl-terminal it exists as aminoethanethiolic acid (or aminoethanethioic S-acid). subset: PSI-MOD-slim synonym: "1-thioglycine" EXACT RESID-name [] synonym: "2-amino-1-sulfanylethanone" EXACT RESID-alternate [] synonym: "aminoethanethioic acid" EXACT RESID-systematic [] synonym: "aminoethanethioic O-acid" EXACT RESID-alternate [] synonym: "aminoethanethionic acid" EXACT RESID-alternate [] synonym: "aminothioacetic acid" EXACT RESID-alternate [] synonym: "Carboxy->Thiocarboxy" RELATED PSI-MS-label [] synonym: "MOD_RES 1-thioglycine" EXACT UniProt-feature [] synonym: "S(O)Gly" EXACT PSI-MOD-label [] synonym: "thiocarboxylic acid" RELATED Unimod-description [] xref: DiffAvg: "16.06" xref: DiffFormula: "C 0 H 0 N 0 O -1 S 1" xref: DiffMono: "15.977156" xref: Formula: "C 2 H 3 N 1 S 1" xref: MassAvg: "73.11" xref: MassMono: "72.998620" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0004" is_a: MOD:01625 ! 1-thioglycine [Term] id: MOD:00271 name: heme P460-bis-L-cysteine-L-tyrosine def: "A protein modification that effectively results from forming an adduct between two cysteine residues, the C-3' of a tyrosine residue, and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [PubMed:8325841, PubMed:9095195, RESID:AA0266] comment: Cross-link 3. synonym: "(10S,11S)-[7,12-bis((S)-1-[((R)-2-amino-2-carboxy)ethylsulfanyl]ethyl)-10-(2-hydroxy-5-[(S)-2-amino-2-carboxy]ethylphenyl)-3,8,13,17-tetramethyl-21H,23H-10,11-dihydroporphine-2,18-bis(2-carboxyethyl)-N21,N22,N23,N24]-ferrate" EXACT RESID-systematic [] synonym: "BINDING Heme (covalent; via 3 links)" EXACT UniProt-feature [] synonym: "bis(S-cysteinyl)-(tyros-3'-yl)-heme" EXACT RESID-alternate [] synonym: "heme P460-bis-L-cysteine-L-tyrosine" EXACT RESID-name [] xref: DiffAvg: "614.48" xref: DiffFormula: "C 34 Fe 1 H 30 N 4 O 4 S 0" xref: DiffMono: "614.161643" xref: Formula: "C 49 Fe 1 H 49 N 7 O 8 S 2" xref: MassAvg: "983.94" xref: MassMono: "983.243341" xref: Origin: "C, C, Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02075 ! metal or metal cluster coordinated L-tyrosine residue [Term] id: MOD:00272 name: O-(phospho-5'-adenosine)-L-threonine def: "A protein modification that effectively crosslinks an L-threonine residue and 5'-phosphoadenosine through a phosphodiester bond to form O-(phospho-5'-adenosine)-L-threonine." [PubMed:2989287, PubMed:8917428, RESID:AA0267, Unimod:405#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(5'-adenosine phosphonoxy)butanoic acid" EXACT RESID-systematic [] synonym: "5'-adenylic-O3-L-threonine" EXACT RESID-alternate [] synonym: "ACT_SITE O-AMP-threonine intermediate" EXACT UniProt-feature [] synonym: "AMP binding site" RELATED Unimod-description [] synonym: "beta-5'-adenylic-L-threonine" EXACT RESID-alternate [] synonym: "L-threonine monoanhydride with 5'-adenylic acid" EXACT RESID-alternate [] synonym: "MOD_RES O-AMP-threonine" EXACT UniProt-feature [] synonym: "O(gamma)-5'-adenylic-L-threonine" EXACT RESID-alternate [] synonym: "O-(phospho-5'-adenosine)-L-threonine" EXACT RESID-name [] synonym: "O3-(phospho-5'-adenosine)-L-threonine" EXACT RESID-alternate [] synonym: "O3-L-threonine 5'-adenosine phosphodiester" EXACT RESID-alternate [] synonym: "Phosphoadenosine" RELATED PSI-MS-label [] xref: DiffAvg: "329.21" xref: DiffFormula: "C 10 H 12 N 5 O 6 P 1" xref: DiffMono: "329.052520" xref: Formula: "C 14 H 19 N 6 O 8 P 1" xref: MassAvg: "430.31" xref: MassMono: "430.100198" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:405" xref: UniProt: "PTM-0393" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01165 ! adenylated residue [Term] id: MOD:00273 name: tris-L-cysteinyl L-cysteine persulfido bis-L-glutamato L-histidino tetrairon disulfide trioxide def: "A protein modification that effectively converts four L-cysteine residues, two L-glutamic acid residues, an L-histidine residue and a four-iron three-sulfur three-oxygen cluster to tris-L-cysteinyl L-cysteine persulfido bis-L-glutamato L-histidino tetrairon disulfide trioxide." [PubMed:12764602, RESID:AA0268] comment: Cross-link 7; secondary to RESID:AA0269. synonym: "4Fe-2S-3O cluster" EXACT RESID-alternate [] synonym: "hybrid four iron cluster 2" EXACT RESID-alternate [] synonym: "METAL Iron-oxo-sulfur (4Fe-2O-2S)" EXACT UniProt-feature [] synonym: "METAL Iron-oxo-sulfur (4Fe-2O-2S); via persulfide group" EXACT UniProt-feature [] synonym: "METAL Iron-oxo-sulfur (4Fe-2O-2S); via tele nitrogen" EXACT UniProt-feature [] synonym: "mu-1:2kappaO-oxido-mu-1:3kappaO-oxido-mu-2:4kappaO-oxido-mu-3:4kappaS-sulfido-mu3-2:3:4kappaS-sulfido-S-cysteinyl-N1'-histidino-O5-glutamato 1-iron-S5-cysteine persulfido-O5-glutamato 2-iron-3,4-bis-(S-cysteinyl iron)" EXACT RESID-systematic [] synonym: "prismane iron-sulfur cofactor" RELATED RESID-misnomer [] synonym: "tris-L-cysteinyl L-cysteine persulfido bis-L-glutamato L-histidino tetrairon disulfide trioxide" EXACT RESID-name [] xref: DiffAvg: "360.50" xref: DiffFormula: "C 0 Fe 4 H -7 N 0 O 3 S 3" xref: DiffMono: "360.585932" xref: Formula: "C 28 Fe 4 H 34 N 9 O 14 S 7" xref: MassAvg: "1168.43" xref: MassMono: "1167.766769" xref: Origin: "C, C, C, C, E, E, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00274 name: L-cysteine persulfide def: "A protein modification that effectively replaces the hydrogen atom of a cysteine sulfanyl group with a sulfanyl group, forming a disulfanyl group, and converting an L-cysteine residue to L-cysteine persulfide." [ChEBI:28839, PubMed:15096637, PubMed:4276457, PubMed:8161529, RESID:AA0269, Unimod:421] subset: PSI-MOD-slim synonym: "(R)-2-amino-3-disulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-disulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-hydrodisulfidopropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-hydropersulfidopropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-persulfhydrylpropanoic acid" EXACT RESID-alternate [] synonym: "3-(thiosulfeno)-alanine" EXACT RESID-alternate [] synonym: "3-disulfanylalanine" EXACT RESID-alternate [] synonym: "ACT_SITE Cysteine persulfide intermediate" EXACT UniProt-feature [] synonym: "L-cysteine persulfide" EXACT RESID-name [] synonym: "MOD_RES Cysteine persulfide" EXACT UniProt-feature [] synonym: "persulfide" RELATED Unimod-description [] synonym: "S-mercaptocysteine" EXACT RESID-alternate [] synonym: "S-sulfanylcysteine" EXACT RESID-alternate [] synonym: "Sulfide" RELATED PSI-MS-label [] synonym: "thiocysteine" EXACT RESID-alternate [] xref: DiffAvg: "32.06" xref: DiffFormula: "C 0 H 0 N 0 O 0 S 1" xref: DiffMono: "31.972071" xref: Formula: "C 3 H 5 N 1 O 1 S 2" xref: MassAvg: "135.20" xref: MassMono: "134.981256" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:421" xref: UniProt: "PTM-0106" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01886 ! thiolated residue [Term] id: MOD:00275 name: 3'-(1'-L-histidyl)-L-tyrosine def: "A protein modification that effectively cross-links an L-histidine residue and an L-tyrosine residue by a carbon-nitrogen bond to form 3'-(1'-L-histidyl)-L-tyrosine." [ChEBI:19837, PubMed:10338009, RESID:AA0270] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-[1-(5-[(2S)-2-amino-2-carboxyethyl]-2-hydroxyphenyl)-1H-imidazol-4-yl]propanoic acid" EXACT RESID-systematic [] synonym: "3'-(1'-L-histidyl)-L-tyrosine" EXACT RESID-name [] synonym: "3'-(N(epsilon)-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "3'-(N1'-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "3'-(tau-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "3'-(tele-histidyl)tyrosine" EXACT RESID-alternate [] synonym: "CROSSLNK 1'-histidyl-3'-tyrosine (His-Tyr)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 15 H 14 N 4 O 3" xref: MassAvg: "298.30" xref: MassMono: "298.106590" xref: Origin: "H, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0003" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02048 ! crosslinked L-histidine residue is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00276 name: heme P460-bis-L-cysteine-L-lysine def: "A protein modification that effectively results from forming an adduct between two cysteine residues, a lysine residue, and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [PubMed:12709052, PubMed:9237682, RESID:AA0271] comment: Cross-link 3. synonym: "(19S,20S)-[7,12-bis((S)-1-[((R)-2-amino-2-carboxy)ethylsulfanyl]ethyl)-20-([(S)-5-amino-5-carboxypentyl]amino)-3,8,13,17-tetramethyl-21H,23H-19,20-dihydroporphine-2,18-bis(2-carboxyethyl)-N21,N22,N23,N24]-ferrate" EXACT RESID-systematic [] synonym: "BINDING Heme (covalent; via 3 links)" EXACT UniProt-feature [] synonym: "bis(S-cysteinyl)-N6-lysino-heme" EXACT RESID-alternate [] synonym: "heme P460-bis-L-cysteine-L-lysine" EXACT RESID-name [] xref: DiffAvg: "614.48" xref: DiffFormula: "C 34 Fe 1 H 30 N 4 O 4 S 0" xref: DiffMono: "614.161643" xref: Formula: "C 46 Fe 1 H 52 N 8 O 7 S 2" xref: MassAvg: "948.94" xref: MassMono: "948.274976" xref: Origin: "C, C, K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02074 ! metal or metal cluster coordinated L-lysine residue [Term] id: MOD:00277 name: 5-methyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to 5-methyl-L-arginine." [PubMed:10660523, PubMed:11875433, PubMed:9367957, RESID:AA0272] synonym: "(2S,5S)-2-amino-5-carbamimidamidohexanoic acid" EXACT RESID-systematic [] synonym: "2-amino-5-guanidinohexanoic acid" EXACT RESID-alternate [] synonym: "4-methylarginine" RELATED RESID-misnomer [] synonym: "5-methyl-L-arginine" EXACT RESID-name [] synonym: "5-methylated L-arginine" EXACT PSI-MOD-alternate [] synonym: "C5Me1Arg" EXACT PSI-MOD-label [] synonym: "delta-methylarginine" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES 5-methylarginine" EXACT UniProt-feature [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 14 N 4 O 1" xref: MassAvg: "170.22" xref: MassMono: "170.116761" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0050" is_a: MOD:00414 ! monomethylated L-arginine is_a: MOD:00656 ! C-methylated residue [Term] id: MOD:00278 name: 2-methyl-L-glutamine def: "A protein modification that effectively converts an L-glutamine residue to 2-methyl-L-glutamine." [PubMed:10660523, PubMed:11875433, PubMed:9367957, RESID:AA0273] synonym: "(S)-2-amino-2-methylpentanediamic acid" EXACT RESID-systematic [] synonym: "2-methyl-L-glutamine" EXACT RESID-name [] synonym: "2-methylated L-glutamine" EXACT PSI-MOD-alternate [] synonym: "2-methylglutamine" EXACT RESID-alternate [] synonym: "alpha-methylglutamine" EXACT RESID-alternate [] synonym: "C2MeGln" EXACT PSI-MOD-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES 2-methylglutamine" EXACT UniProt-feature [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 6 H 10 N 2 O 2" xref: MassAvg: "142.16" xref: MassMono: "142.074228" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0016" is_a: MOD:00656 ! C-methylated residue is_a: MOD:00722 ! monomethylated L-glutamine [Term] id: MOD:00279 name: N-pyruvic acid 2-iminyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-pyruvic acid 2-iminyl-L-cysteine." [PubMed:1388164, RESID:AA0274, Unimod:422#C] subset: PSI-MOD-slim synonym: "(R)-2-(1-carboxy-2-sulfanylethanimino)propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES N-pyruvate 2-iminyl-cysteine" EXACT UniProt-feature [] synonym: "N-pyruvic acid 2-iminyl" RELATED Unimod-description [] synonym: "N-pyruvic acid 2-iminyl-L-cysteine" EXACT RESID-name [] synonym: "PyruvicAcidIminyl" RELATED PSI-MS-label [] xref: DiffAvg: "70.05" xref: DiffFormula: "C 3 H 2 N 0 O 2 S 0" xref: DiffMono: "70.005479" xref: Formula: "C 6 H 8 N 1 O 3 S 1" xref: MassAvg: "174.19" xref: MassMono: "174.022489" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:422" xref: UniProt: "PTM-0224" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01170 ! pyruvic acid iminylated residue [Term] id: MOD:00280 name: N-pyruvic acid 2-iminyl-L-valine def: "A protein modification that effectively converts an L-valine residue to N-pyruvic acid 2-iminyl-L-valine." [PubMed:2071591, RESID:AA0275, Unimod:422#V] subset: PSI-MOD-slim synonym: "(S)-2-(1-carboxy-2-methylpropanimino)propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES N-pyruvate 2-iminyl-valine" EXACT UniProt-feature [] synonym: "N-pyruvic acid 2-iminyl" RELATED Unimod-description [] synonym: "N-pyruvic acid 2-iminyl-L-valine" EXACT RESID-name [] synonym: "PyruvicAcidIminyl" RELATED PSI-MS-label [] xref: DiffAvg: "70.05" xref: DiffFormula: "C 3 H 2 N 0 O 2" xref: DiffMono: "70.005479" xref: Formula: "C 8 H 12 N 1 O 3" xref: MassAvg: "170.19" xref: MassMono: "170.081718" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:422" xref: UniProt: "PTM-0225" is_a: MOD:00920 ! modified L-valine residue is_a: MOD:01170 ! pyruvic acid iminylated residue [Term] id: MOD:00281 name: 3'-heme-L-histidine def: "A protein modification that effectively results from forming an adduct between the pros nitrogen of a histidine residue and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [PubMed:12119398, PubMed:12429096, PubMed:12486054, PubMed:9712585, RESID:AA0276] synonym: "2-[1-(N3'-histidyl)ethyl]protoporphyrin IX" EXACT RESID-alternate [] synonym: "3'-heme-L-histidine" EXACT RESID-name [] synonym: "[7-ethenyl-12-((S)-1-[((R)-2-amino-2-carboxyethyl)-3H-imidazol-3-yl]ethyl)-3,8,13,17-tetramethyl-21H,23H-porphine-2,18-bis(2-carboxyethyl)-N21,N22,N23,N24]-ferrate" EXACT RESID-systematic [] synonym: "BINDING Heme (covalent; via pros nitrogen)" EXACT UniProt-feature [] synonym: "N(delta)-histidyl heme" EXACT RESID-alternate [] synonym: "N(pi)-histidyl heme" EXACT RESID-alternate [] synonym: "N3'-histidyl heme" EXACT RESID-alternate [] synonym: "pros-histidyl heme" EXACT RESID-alternate [] xref: DiffAvg: "616.50" xref: DiffFormula: "C 34 Fe 1 H 32 N 4 O 4" xref: DiffMono: "616.177293" xref: Formula: "C 40 Fe 1 H 39 N 7 O 5" xref: MassAvg: "753.64" xref: MassMono: "753.236205" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00282 name: S-selenyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-selenyl-L-cysteine." [PubMed:10430865, PubMed:10966817, PubMed:11827487, PubMed:12716131, PubMed:14594807, RESID:AA0277, Unimod:423#C] synonym: "(R)-2-amino-3-(selanylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-hydroselenosulfidopropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-hydroselenylsulfidopropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-hydroselenylthiopropanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE S-selanylcysteine intermediate" EXACT UniProt-feature [] synonym: "cysteine perselenide" RELATED RESID-misnomer [] synonym: "Delta:Se(1)" RELATED PSI-MS-label [] synonym: "MOD_RES S-selenylcysteine" EXACT UniProt-feature [] synonym: "S-selanyl-L-cysteine" EXACT RESID-name [] synonym: "S-selanylcysteine" EXACT RESID-alternate [] synonym: "S-selenylcysteine" EXACT RESID-alternate [] synonym: "selenyl" RELATED Unimod-description [] xref: DiffAvg: "78.97" xref: DiffFormula: "C 0 H 0 N 0 O 0 S 0 Se 1" xref: DiffMono: "79.916521" xref: Formula: "C 3 H 5 N 1 O 1 S 1 Se 1" xref: MassAvg: "182.11" xref: MassMono: "182.925706" xref: Origin: "C" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:423" xref: UniProt: "PTM-0282" is_a: MOD:00745 ! selenium containing residue is_a: MOD:00778 ! residues isobaric at 182.9-183.0 Da is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00283 name: N6-propylamino-poly(propylmethylamino)-propyldimethylamine-L-lysine def: "A protein modification that effectively converts an L-lysine residue to an N6-propylamino-poly(propylmethylamino)-propyldimethylamine-L-lysine." [PubMed:10550045, PubMed:11349130, RESID:AA0278] synonym: "(alpha)- ([([(5S)-5-amino-5-carboxypentyl]amino)propyl][(methyl)amino])-(omega)-methyl poly[propane-1,3-diyl(methylimino)]" EXACT RESID-systematic [] synonym: "lysine derivative Lys(x)" EXACT RESID-alternate [] synonym: "MOD_RES N6-poly(methylaminopropyl)lysine" EXACT UniProt-feature [] synonym: "N6-[3-([(omega)-(dimethyl)aminopropyl-poly(3-[methylamino]propyl)]amino)propyl]lysine" EXACT RESID-alternate [] synonym: "N6-propylamino-poly(propylmethylamino)-propyldimethylamine-L-lysine" EXACT RESID-name [] synonym: "silaffin polycationic lysine derivative" EXACT RESID-alternate [] xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0198" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00284 name: dihydroxyheme-L-aspartate ester-L-glutamate ester def: "A protein modification that effectively results from forming an adduct between an aspartic acid residue, a glutamic acid residue, and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [PubMed:10447690, RESID:AA0279] comment: Cross-link 2. synonym: "1,5-bishydroxymethyl protoporphyrin IX 1-glutamate ester 5-aspartate ester" EXACT RESID-alternate [] synonym: "[13-[(S)-(4-amino-4-carboxy)butanoyloxymethyl]-3-[(S)-(3-amino-3-carboxy)propanoyloxymethyl]-7,12-diethenyl-8,17-dimethyl-21H,23H-porphine-2,18-bis(2-carboxyethyl)-N21,N22,N23,N24]-ferrate" EXACT RESID-systematic [] synonym: "BINDING Heme (covalent; via 2 links)" EXACT UniProt-feature [] synonym: "dihydroxyheme-L-aspartate ester-L-glutamate ester" EXACT RESID-name [] synonym: "peroxidase heme cofactor" EXACT RESID-alternate [] xref: DiffAvg: "612.47" xref: DiffFormula: "C 34 Fe 1 H 28 N 4 O 4" xref: DiffMono: "612.145993" xref: Formula: "C 43 Fe 1 H 40 N 6 O 10" xref: MassAvg: "856.67" xref: MassMono: "856.215529" xref: Origin: "D, E" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue [Term] id: MOD:00285 name: dihydroxyheme-L-aspartate ester-L-glutamate ester-L-methionine sulfonium def: "A protein modification that effectively results from forming an adduct between an aspartic acid residue, a glutamic acid residue, a methionine residue (forming a sulfonium ether), and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [PubMed:10447690, PubMed:10480885, PubMed:1320128, PubMed:7840679, RESID:AA0280] comment: Cross-link 3. synonym: "1,5-bishydroxymethyl protoporphyrin IX 1-glutamate ester 5-aspartate ester 2-methionine sulfonium" EXACT RESID-alternate [] synonym: "[13-[(S)-(4-amino-4-carboxy)butanoyloxymethyl]-3-[(S)-(3-amino-3-carboxy)propanoyloxymethyl]-12-[(S)-(3-amino-3-carboxy)propylsulfoniumethyl]-7-ethenyl-8,17-dimethyl-21H,23H-porphine-2,18-bis(2-carboxyethyl)-N21,N22,N23,N24]-ferrate" EXACT RESID-systematic [] synonym: "BINDING Heme (covalent; via 3 links)" EXACT UniProt-feature [] synonym: "dihydroxyheme-L-aspartate ester-L-glutamate ester-L-methionine sulfonium" EXACT RESID-name [] synonym: "myeloperoxidase heme cofactor" EXACT RESID-alternate [] xref: DiffAvg: "613.47" xref: DiffFormula: "C 34 Fe 1 H 29 N 4 O 4 S 0" xref: DiffMono: "613.153269" xref: FormalCharge: "1+" xref: Formula: "C 48 Fe 1 H 50 N 7 O 11 S 1" xref: MassAvg: "988.87" xref: MassMono: "988.263290" xref: Origin: "D, E, M" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue is_a: MOD:02071 ! metal or metal cluster coordinated L-methionine residue [Term] id: MOD:00286 name: L-cysteinyl molybdenum bis(molybdopterin guanine dinucleotide) def: "A protein modification that effectively converts an L-cysteine residue to L-cysteinyl molybdenum bis(molybdopterin guanine dinucleotide)." [RESID:AA0281, Unimod:424#C] synonym: "2-amino-5,6-dimercapto-7-methyl-3,7,8a,9-tetrahydro-8-oxa-1,3,9,10-tetraazaanthracen-4-one guanosine dinucleotide" EXACT RESID-alternate [] synonym: "bis[8-amino-1a,2,4a,5,6,7,10-heptahydro-2-(trihydrogen diphosphate 5'-ester with guanosine)methyl-6-oxo-3,4-disulfanyl-pteridino[6,7-5,6]pyranoato-S3,S4]-cystein-S-yl-molybdenum" EXACT RESID-systematic [] synonym: "L-cysteinyl molybdenum bis(molybdopterin guanine dinucleotide)" EXACT RESID-name [] synonym: "molybdenum bis(molybdopterin guanine dinucleotide)" RELATED Unimod-description [] synonym: "MolybdopterinGD" RELATED PSI-MS-label [] xref: DiffAvg: "1572.02" xref: DiffFormula: "C 40 H 47 Mo 1 N 20 O 26 P 4 S 4" xref: DiffMono: "1572.985775" xref: Formula: "C 43 H 52 Mo 1 N 21 O 27 P 4 S 5" xref: MassAvg: "1675.15" xref: MassMono: "1675.994960" xref: Origin: "C" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:424" is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:01167 ! molybdopterin guanine dinucleotide [Term] id: MOD:00287 name: (2S,3R,4S)-3,4-dihydroxyproline def: "A protein modification that effectively converts an L-proline residue to a (2S,3R,4S)-3,4-dihydroxyproline." [DeltaMass:0, PubMed:12686488, RESID:AA0282, Unimod:425#P, ChEBI:141803] comment: From DeltaMass: Average Mass: 32. synonym: "(2S,3R,4S)-3,4-dihydroxyproline" EXACT RESID-name [] synonym: "(2S,3R,4S)-3,4-dihydroxypyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "2,3-trans-3,4-cis-3,4-dihydroxy-L-proline" EXACT RESID-alternate [] synonym: "2-alpha-3-beta-4-beta-3,4-dihydroxyproline" EXACT RESID-alternate [] synonym: "3,4-dihydroxylated L-proline" EXACT PSI-MOD-alternate [] synonym: "3,4-Dihydroxylation (of Proline)" EXACT DeltaMass-label [] synonym: "34Hy2Pro" EXACT PSI-MOD-label [] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "MOD_RES (3R,4S)-3,4-dihydroxyproline" EXACT UniProt-feature [] synonym: "trans-2,3-cis-3,4-dihydroxy-L-proline" EXACT RESID-alternate [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:425" xref: UniProt: "PTM-0306" is_a: MOD:00866 ! dihydroxylated proline [Term] id: MOD:00288 name: pyrroloquinoline quinone def: "A protein modification that effectively doubly cross-links an L-glutamic acid residue and an L-tyrosine residue with a carbon-carbon bond and a carbon-nitrogen bond to form pyrroloquinoline quinone." [ChEBI:18315, PubMed:1310505, PubMed:7665488, RESID:AA0283] comment: Cross-link 2. synonym: "2,4,6-tricarboxylic-pyrrolo[2,3-5,6]quinoline 8,9-quinone" EXACT RESID-alternate [] synonym: "2,7,9-tricarboxy-1H-pyrrolo(2,3-f)quinoline-4,5-dione" EXACT RESID-alternate [] synonym: "4,5-dihydro-4,5-dioxo-1H-pyrrolo[2,3-5,6]quinoline-2,7,9-tricarboxylic acid" EXACT RESID-systematic [] synonym: "coenzyme PQQ" EXACT RESID-alternate [] synonym: "CROSSLNK Pyrroloquinoline quinone (Glu-Tyr)" EXACT UniProt-feature [] synonym: "methoxatin" EXACT RESID-alternate [] synonym: "pyrroloquinoline quinone" EXACT RESID-name [] xref: DiffAvg: "37.92" xref: DiffFormula: "C 0 H -10 N 0 O 3" xref: DiffMono: "37.906494" xref: Formula: "C 14 H 6 N 2 O 8" xref: MassAvg: "330.21" xref: MassMono: "330.012415" xref: Origin: "E, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0263" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00289 name: tris-L-cysteinyl L-N1'-histidino tetrairon tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-histidine residue and a four-iron four-sulfur cluster to tris-L-cysteinyl L-N1'-histidino tetrairon tetrasulfide." [PubMed:9836629, RESID:AA0284] comment: Cross-link 4. synonym: "METAL Iron-sulfur (4Fe-4S)" EXACT UniProt-feature [] synonym: "METAL Iron-sulfur (4Fe-4S); via tele nitrogen" EXACT UniProt-feature [] synonym: "tetra-mu3-sulfidotris(S-cysteinyliron)(N1'-histidinoiron)" EXACT RESID-systematic [] synonym: "tris-L-cysteinyl L-N1'-histidino tetrairon tetrasulfide" EXACT RESID-name [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.597831" xref: FormalCharge: "2-" xref: Formula: "C 15 Fe 4 H 18 N 6 O 4 S 7" xref: MassAvg: "794.15" xref: MassMono: "793.684297" xref: Origin: "C, C, C, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00290 name: tris-L-cysteinyl L-N3'-histidino tetrairon tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-histidine residue and a four-iron four-sulfur cluster to tris-L-cysteinyl L-N3'-histidino tetrairon tetrasulfide." [PubMed:7854413, RESID:AA0285] comment: Cross-link 4. synonym: "METAL Iron-sulfur (4Fe-4S)" EXACT UniProt-feature [] synonym: "METAL Iron-sulfur (4Fe-4S); via pros nitrogen" EXACT UniProt-feature [] synonym: "tetra-mu3-sulfidotris(S-cysteinyliron)(N3'-histidinoiron)" EXACT RESID-systematic [] synonym: "tris-L-cysteinyl L-N3'-histidino tetrairon tetrasulfide" EXACT RESID-name [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.597831" xref: FormalCharge: "2-" xref: Formula: "C 15 Fe 4 H 18 N 6 O 4 S 7" xref: MassAvg: "794.15" xref: MassMono: "793.684297" xref: Origin: "C, C, C, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00291 name: tris-L-cysteinyl L-aspartato tetrairon tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-aspartic acid residue and a four-iron four-sulfur cluster to tris-L-cysteinyl L-aspartato tetrairon tetrasulfide." [PubMed:7819255, PubMed:9283079, RESID:AA0286] comment: Cross-link 4. synonym: "METAL Iron-sulfur (4Fe-4S)" EXACT UniProt-feature [] synonym: "tetra-mu3-sulfidotris(S-cysteinyliron)(O4-aspartatoiron)" EXACT RESID-systematic [] synonym: "tris-L-cysteinyl L-aspartato tetrairon tetrasulfide" EXACT RESID-name [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.597831" xref: FormalCharge: "2-" xref: Formula: "C 13 Fe 4 H 16 N 4 O 6 S 7" xref: MassAvg: "772.09" xref: MassMono: "771.652328" xref: Origin: "C, C, C, D" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00292 name: N6-pyruvic acid 2-iminyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-pyruvic acid 2-iminyl-L-lysine." [PubMed:1463470, PubMed:7853400, PubMed:9047371, RESID:AA0287, Unimod:422#K] synonym: "(2S)-2-amino-6-([1-carboxyethylidene]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE Schiff-base intermediate with substrate" EXACT UniProt-feature [] synonym: "N-pyruvic acid 2-iminyl" RELATED Unimod-description [] synonym: "N6-pyruvic acid 2-iminyl-L-lysine" EXACT RESID-name [] synonym: "PyruvicAcidIminyl" RELATED PSI-MS-label [] xref: DiffAvg: "70.05" xref: DiffFormula: "C 3 H 2 N 0 O 2" xref: DiffMono: "70.005479" xref: Formula: "C 9 H 14 N 2 O 3" xref: MassAvg: "198.22" xref: MassMono: "198.100442" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:422" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01170 ! pyruvic acid iminylated residue [Term] id: MOD:00293 name: tris-L-cysteinyl L-serinyl tetrairon tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-serine residue and a four-iron four-sulfur cluster to tris-L-cysteinyl L-serinyl tetrairon tetrasulfide." [RESID:AA0288] comment: Cross-link 4. synonym: "tetra-mu3-sulfidotris(S-cysteinyliron)(O3-serinyliron)" EXACT RESID-systematic [] synonym: "tris-L-cysteinyl L-serinyl tetrairon tetrasulfide" EXACT RESID-name [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.597831" xref: FormalCharge: "2-" xref: Formula: "C 12 Fe 4 H 16 N 4 O 5 S 7" xref: MassAvg: "744.08" xref: MassMono: "743.657414" xref: Origin: "C, C, C, S" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02072 ! metal or metal cluster coordinated L-serine residue [Term] id: MOD:00294 name: bis-L-cysteinyl L-N3'-histidino L-serinyl tetrairon tetrasulfide def: "A protein modification that effectively converts two L-cysteine residues, an L-histidine residues, an L-serine residue and a four-iron four-sulfur cluster to bis-L-cysteinyl L-N3'-histidino L-serinyl tetrairon tetrasulfide." [RESID:AA0289] comment: Cross-link 4. synonym: "bis-L-cysteinyl L-N3'-histidino L-serinyl tetrairon tetrasulfide" EXACT RESID-name [] synonym: "METAL Iron-sulfur (4Fe-4S)" EXACT UniProt-feature [] synonym: "METAL Iron-sulfur (4Fe-4S); via pros nitrogen" EXACT UniProt-feature [] synonym: "tetra-mu3-sulfidobis(S-cysteinyliron)(N3'-histidinoiron)(O3-serinyliron)" EXACT RESID-systematic [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.597831" xref: FormalCharge: "2-" xref: Formula: "C 15 Fe 4 H 18 N 6 O 5 S 6" xref: MassAvg: "778.09" xref: MassMono: "777.707141" xref: Origin: "C, C, H, S" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue is_a: MOD:02072 ! metal or metal cluster coordinated L-serine residue [Term] id: MOD:00295 name: O-octanoyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-octanoyl-L-serine." [PubMed:10604470, PubMed:12716131, RESID:AA0290, Unimod:426#S] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(octanoyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "L-serine octanoate ester" EXACT RESID-alternate [] synonym: "LIPID O-octanoyl serine" EXACT UniProt-feature [] synonym: "O-octanoyl-L-serine" EXACT RESID-name [] synonym: "O-octanoylated L-serine" EXACT PSI-MOD-alternate [] synonym: "O3-octanoyl-L-serine" EXACT RESID-alternate [] synonym: "Octanoyl" RELATED PSI-MS-label [] synonym: "octanoyl" RELATED Unimod-description [] synonym: "OOctSer" EXACT PSI-MOD-label [] xref: DiffAvg: "126.20" xref: DiffFormula: "C 8 H 14 N 0 O 1" xref: DiffMono: "126.104465" xref: Formula: "C 11 H 19 N 1 O 3" xref: MassAvg: "213.28" xref: MassMono: "213.136493" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:426" xref: UniProt: "PTM-0239" is_a: MOD:00669 ! O-octanoylated residue is_a: MOD:02003 ! O3-acylated L-serine [Term] id: MOD:00296 name: O-D-glucuronosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-D-glucuronosyl-L-serine." [PubMed:10858503, PubMed:12716131, PubMed:7398618, RESID:AA0291, Unimod:54#S] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(beta-D-glucopyranuronosyl)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (GlcA) serine" EXACT UniProt-feature [] synonym: "Glucuronyl" RELATED PSI-MS-label [] synonym: "N-glucuronylation" RELATED Unimod-description [] synonym: "O-D-glucuronosyl-L-serine" EXACT RESID-name [] synonym: "O3-D-glucuronosyl-L-serine" EXACT RESID-alternate [] xref: DiffAvg: "176.12" xref: DiffFormula: "C 6 H 8 N 0 O 6" xref: DiffMono: "176.032088" xref: Formula: "C 9 H 13 N 1 O 8" xref: MassAvg: "263.20" xref: MassMono: "263.064116" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:54" xref: UniProt: "PTM-0577" is_a: MOD:00447 ! N-glucuronylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00297 name: tris-L-cysteinyl L-cysteine persulfido bis-L-glutamato L-histidino nickel triiron disulfide trioxide def: "A protein modification that effectively converts four L-cysteine residues, two L-glutamic acid residues, an L-histidine residue and a three-iron three-sulfur three-oxygen cluster to tris-L-cysteinyl L-cysteine persulfido bis-L-glutamato L-histidino nickel triiron disulfide trioxide." [RESID:AA0292] comment: Cross-link 7; secondary to RESID:AA0269. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "carbon monoxide dehydrogenase nickel-iron cofactor" EXACT RESID-alternate [] synonym: "hybrid nickel-triiron cluster" EXACT RESID-alternate [] synonym: "mu-1:2kappaO-oxido-mu-1:3kappaO-oxido-mu-2:4kappaO-oxido-mu-3:4kappaS-sulfido-mu3-2:3:4kappaS-sulfido-S-cysteinyl-N1'-histidino-O5-glutamato 1-iron-S5-cysteine persulfido-O5-glutamato 2-nickel-3,4-bis-(S-cysteinyl iron)" EXACT RESID-systematic [] synonym: "Ni-3Fe-2S-3O cluster" EXACT RESID-alternate [] synonym: "tris-L-cysteinyl L-cysteine persulfido bis-L-glutamato L-histidino nickel triiron disulfide trioxide" EXACT RESID-name [] xref: DiffAvg: "363.35" xref: DiffFormula: "C 0 Fe 3 H -7 N 0 Ni 1 O 3 S 3" xref: DiffMono: "362.586337" xref: Formula: "C 28 Fe 3 H 34 N 9 Ni 1 O 14 S 7" xref: MassAvg: "1171.28" xref: MassMono: "1169.767174" xref: Origin: "C, C, C, C, E, E, H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:00741 ! nickel containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00298 name: tris-L-cysteinyl L-cysteine persulfido L-glutamato L-histidino L-serinyl nickel triiron disulfide trioxide def: "A protein modification that effectively converts four L-cysteine residues, an L-glutamic acid residue, an L-histidine residue, an L-serine residue and a one-nickel three-iron three-sulfur three-oxygen cluster to tris-L-cysteinyl L-cysteine persulfido L-glutamato L-histidino L-serinyl nickel triiron disulfide trioxide." [PubMed:2550436, RESID:AA0293] comment: Cross-link 7; secondary to RESID:AA0269. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "carbon monoxide dehydrogenase nickel-iron cofactor" EXACT RESID-alternate [] synonym: "hybrid nickel-triiron cluster" EXACT RESID-alternate [] synonym: "mu-1:2kappaO-oxido-mu-1:3kappaO-oxido-mu-2:4kappaO-oxido-mu-3:4kappaS-sulfido-mu3-2:3:4kappaS-sulfido-S-cysteinyl-N1'-histidino-O5-glutamato 1-iron-S5-cysteine persulfido-O3-serinyl 2-nickel-3,4-bis-(S-cysteinyl iron)" EXACT RESID-systematic [] synonym: "Ni-3Fe-2S-3O cluster" EXACT RESID-alternate [] synonym: "tris-L-cysteinyl L-cysteine persulfido L-glutamato L-histidino L-serinyl nickel triiron disulfide trioxide" EXACT RESID-name [] xref: DiffAvg: "363.35" xref: DiffFormula: "C 0 Fe 3 H -7 N 0 Ni 1 O 3 S 3" xref: DiffMono: "362.586337" xref: Formula: "C 26 Fe 3 H 32 N 9 Ni 1 O 13 S 7" xref: MassAvg: "1129.24" xref: MassMono: "1127.756609" xref: Origin: "C, C, C, C, E, H, S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:00741 ! nickel containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue is_a: MOD:02072 ! metal or metal cluster coordinated L-serine residue [Term] id: MOD:00299 name: N6-(L-isoaspartyl)-L-lysine (Asn) def: "A protein modification that effectively crosslinks an L-asparagine residue and an L-lysine residue by an isopeptide bond with the formation of N6-(L-isoaspartyl)-L-lysine and the release of ammonia." [ChEBI:21862, DeltaMass:0, PubMed:11000116, PubMed:6503713, RESID:AA0294] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(3S)-3-amino-3-carboxypropanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "beta-(N6-lysyl)aspartyl acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoaspartyl lysine isopeptide (Lys-Asn)" EXACT UniProt-feature [] synonym: "isoaspartyl N6-lysine" EXACT RESID-alternate [] synonym: "N(epsilon)-(beta-aspartyl)lysine" EXACT RESID-alternate [] synonym: "N-(beta-Aspartyl)-Lysine (Crosslink)" EXACT DeltaMass-label [] synonym: "N6-(L-isoaspartyl)-L-lysine" EXACT RESID-name [] synonym: "XLNK-4Asp-N6Lys(Asn)" EXACT PSI-MOD-label [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 10 H 15 N 3 O 3" xref: MassAvg: "225.25" xref: MassMono: "225.111341" xref: Origin: "K, N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0153" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia is_a: MOD:01929 ! N6-(L-isoaspartyl)-L-lysine [Term] id: MOD:00300 name: L-glutamyl-5-poly(ADP-ribose) def: "A protein modification that effectively converts an L-glutamic acid residue to L-glutamyl-5-poly(ADP-ribose)." [DeltaMass:0, PubMed:11246023, PubMed:15842200, PubMed:8533153, RESID:AA0295, Unimod:213#E] synonym: "(S)-2-amino-5-poly[2'-adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with 1alpha-D-ribofuranosyl]oxy-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "ADP Ribose addition" RELATED Unimod-description [] synonym: "ADP-Ribosyl" RELATED PSI-MS-label [] synonym: "L-glutamyl-5-poly(ADP-ribose)" EXACT RESID-name [] synonym: "L-isoglutamyl-poly(ADP-ribose)" EXACT RESID-alternate [] synonym: "MOD_RES PolyADP-ribosyl glutamic acid" EXACT UniProt-feature [] synonym: "O-ADP-ribosylation (on Glutamate or C terminus)" EXACT DeltaMass-label [] xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:213" is_a: MOD:02087 ! adenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00301 name: O-(N-acetylglucosamine-1-phosphoryl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(N-acetylglucosamine-1-phosphoryl)-L-serine." [DeltaMass:0, PubMed:6438439, PubMed:6993483, PubMed:8631906, RESID:AA0296, Unimod:428] synonym: "(2S)-2-amino-3-[([(2-acetamido-2-deoxy-alpha-D-glucopyranosyl)oxy][hydroxy]phosphoryl)oxy]propanoic acid" EXACT RESID-systematic [] synonym: "N-acetylglucosamine-1-phosphoryl" RELATED Unimod-description [] synonym: "O-(N-acetylglucosamine-1-phosphoryl)-L-serine" EXACT RESID-name [] synonym: "O-beta(N-acetyl-glucosamine-alpha1-phosphate)serine" EXACT RESID-alternate [] synonym: "O-GlcNAc-1-phosphorylation (of Serine)" EXACT DeltaMass-label [] synonym: "O3-(N-acetylglucosamine-1-phosphoryl)-L-serine" EXACT RESID-alternate [] synonym: "O3-L-serine 2-(acetylamino)-2-deoxy-D-glucopyranose 1-phosphodiester" EXACT RESID-alternate [] synonym: "PhosphoHexNAc" RELATED PSI-MS-label [] synonym: "CARBOHYD O-linked (GalNAcP) serine" EXACT UniProt-feature [] xref: DiffAvg: "283.17" xref: DiffFormula: "C 8 H 14 N 1 O 8 P 1" xref: DiffMono: "283.045703" xref: Formula: "C 11 H 19 N 2 O 10 P 1" xref: MassAvg: "370.25" xref: MassMono: "370.077731" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:428" xref: UniProt: "PTM-0586" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01804 ! glycosylphosphorylated residue [Term] id: MOD:00302 name: O-(phosphoglycosyl-D-mannose-1-phosphoryl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(phosphoglycosyl-D-mannose-1-phosphoryl)-L-serine." [PubMed:10037765, PubMed:15649890, RESID:AA0297, Unimod:429] synonym: "O-(alpha-D-mannosyl-1-phosphoryl)-L-serine" EXACT RESID-alternate [] synonym: "O-(D-mannose-1-phosphoryl)-L-serine" EXACT RESID-name [] synonym: "O-[alpha-D-mannopyranosyloxy(hydroxy)phosphoryl]-L-serine" EXACT RESID-systematic [] synonym: "O3-(D-mannose-1-phosphoryl)-L-serine" EXACT RESID-alternate [] synonym: "O3-L-serine alpha-D-mannopyranose 1-phosphodiester" EXACT RESID-alternate [] synonym: "phosphoglycosyl-D-mannose-1-phosphoryl" RELATED Unimod-description [] synonym: "PhosphoHex" RELATED PSI-MS-label [] synonym: "CARBOHYD O-linked (Man1P) serine" EXACT UniProt-feature [] xref: DiffAvg: "242.12" xref: DiffFormula: "C 6 H 11 N 0 O 8 P 1" xref: DiffMono: "242.019154" xref: Formula: "C 9 H 16 N 1 O 10 P 1" xref: MassAvg: "329.20" xref: MassMono: "329.051182" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:429" xref: UniProt: "PTM-0594" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01804 ! glycosylphosphorylated residue [Term] id: MOD:00303 name: heptakis-L-histidino tetracopper mu4-sulfide hydroxide def: "A protein modification that effectively converts seven L-histidinine residues and a four-copper one-sulfur one-hydroxide cluster to heptakis-L-histidino tetracopper mu4-sulfide hydroxide." [PubMed:11024061, PubMed:11041839, RESID:AA0298] comment: Cross-link 7. synonym: "heptakis-L-histidino tetracopper mu4-sulfide hydroxide" EXACT RESID-name [] synonym: "mu4-sulfido bis(bis-N1'-histidino copper)(N1'-histidino-N3'-histidino copper)(N3'-histidino hydroxide copper)" EXACT RESID-systematic [] synonym: "nitrous oxide reductase nosZ CuZ cluster" EXACT RESID-alternate [] synonym: "pentakis-L-N1'-histidino-bis-L-N3'-histidino tetracopper sulfide hydroxide" EXACT RESID-alternate [] xref: DiffAvg: "296.19" xref: DiffFormula: "C 0 Cu 4 H -6 N 0 O 1 S 1" xref: DiffMono: "293.638425" xref: Formula: "C 42 Cu 4 H 43 N 21 O 8 S 1" xref: MassAvg: "1256.19" xref: MassMono: "1253.050808" xref: Origin: "H, H, H, H, H, H, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00742 ! copper containing modified residue is_a: MOD:00860 ! sulfur containing modified residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00304 name: L-leucine methyl ester def: "A protein modification that effectively converts an L-leucine residue to L-leucine methyl ester." [PubMed:10191253, PubMed:11875433, PubMed:8206937, RESID:AA0299, Unimod:34#C-term] comment: incidental to RESID:AA0039 subset: PSI-MOD-slim synonym: "2-amino-4-methylpentanoic methyl ester" EXACT RESID-alternate [] synonym: "alpha-aminoisocaproic methyl ester" EXACT RESID-alternate [] synonym: "L-leucine methyl ester" EXACT RESID-name [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methyl (2S)-2-amino-4-methylpentanoate" EXACT RESID-systematic [] synonym: "methyl esterified L-leucine" EXACT PSI-MOD-alternate [] synonym: "methyl L-leucinate" EXACT RESID-alternate [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES Leucine methyl ester" EXACT UniProt-feature [] synonym: "OMeLeu" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 14 N 1 O 2" xref: MassAvg: "144.19" xref: MassMono: "144.102454" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0167" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00662 ! methylated leucine is_a: MOD:01689 ! alpha-carboxyl methylated residue [Term] id: MOD:00305 name: hexakis-L-cysteinyl L-serinyl octairon heptasulfide def: "A protein modification that effectively converts six L-cysteine residues, an L-serine residue and a eight-iron seven-sulfur cluster to hexakis-L-cysteinyl L-serinyl octairon heptasulfide." [PubMed:10525412, PubMed:12215645, PubMed:9063865, RESID:AA0300] comment: Cross-link 7; incidental to RESID:AA0141. synonym: "Cys6Ser-[8Fe7S]" EXACT PSI-MOD-label [] synonym: "hexakis-L-cysteinyl L-serinyl octairon heptasulfide" EXACT RESID-name [] synonym: "METAL Iron-sulfur (8Fe-7S)" EXACT UniProt-feature [] synonym: "nitrogenase P-cluster" EXACT RESID-alternate [] xref: DiffAvg: "663.12" xref: DiffFormula: "C 0 Fe 8 H -8 N 0 O 0 S 7" xref: DiffMono: "663.223042" xref: FormalCharge: "3-" xref: Formula: "C 21 Fe 8 H 27 N 7 O 8 S 13" xref: MassAvg: "1369.03" xref: MassMono: "1368.310179" xref: Origin: "C, C, C, C, C, C, S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02072 ! metal or metal cluster coordinated L-serine residue [Term] id: MOD:00306 name: residues isobaric at 113.084064 Da def: "Natural or modified residues with a mass of 113.084064 Da." [PubMed:10523135, RESID:AA0301] subset: PSI-MOD-slim synonym: "L-isoleucine or L-leucine" EXACT RESID-name [] synonym: "Xle" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00569 ! residues isobaric at a resolution below 0.000001 Da is_a: MOD:00624 ! residues isobaric at 113.0-113.1 Da [Term] id: MOD:00307 name: L-aspartimide def: "A protein modification that effectively cyclizes an L-asparagine residue to form a carboxyl-terminal L-aspartimide." [DeltaMass:18, PubMed:12771378, PubMed:2378679, PubMed:7662664, PubMed:7988548, PubMed:9309583, RESID:AA0302, Unimod:23#N] comment: From DeltaMass: Average Mass: -17 Average Mass Change:-17 References:Clarke, S., Lability of Aspargine and Aspartic Acid Residues in Protein and Peptides, in: Stability of Protein Pharmaceuticals : Chemical and Physical Paths of Protein Degradation, Part A (T.J. Ahern and M.C. Manning, eds.), 1992,Plenum Press, New York, pp.1-29Xie, M.; Vander Velde, D.; Morton, M.; Borchardt, R.T.; Schowen,R.L.: pH-Induced Change in the Rate-Determining Step for the Hydrolysis of the Asp/Asn-Derived Cyclic-Imide Intermediate in Protein Degradation. (1996) J. Am. Chem. Soc. 118: 8955-8956. synonym: "(3S)-3-amino-2,5-pyrrolidinedione" EXACT RESID-systematic [] synonym: "2-amino-butanimide" EXACT RESID-alternate [] synonym: "alpha-aminosuccinimide" EXACT RESID-alternate [] synonym: "ASI" EXACT RESID-alternate [] synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] synonym: "L-2-aminosuccinimide" EXACT RESID-alternate [] synonym: "L-3-aminosuccinimide" RELATED RESID-misnomer [] synonym: "L-asparaginimide" EXACT RESID-alternate [] synonym: "L-aspartimide" EXACT RESID-name [] synonym: "Succinimide formation from asparagine" EXACT DeltaMass-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 4 H 5 N 2 O 2" xref: MassAvg: "113.10" xref: MassMono: "113.035102" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:23" is_a: MOD:00601 ! cyclized residue is_a: MOD:00704 ! dehydrated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00308 name: L-glutamimide def: "A protein modification that effectively cyclizes an L-glutamine residue to form a carboxyl-terminal L-glutamimide." [PubMed:12771378, PubMed:14593103, RESID:AA0303, Unimod:23#Q] synonym: "(3S)-3-aminopiperidine-2,6-dione" EXACT RESID-systematic [] synonym: "2-aminopentanimide" EXACT RESID-alternate [] synonym: "3-amino-2,6-piperidinedione" EXACT RESID-alternate [] synonym: "alpha-aminoglutarimide" EXACT RESID-alternate [] synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] synonym: "L-glutamimide" EXACT RESID-name [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 7 N 2 O 2" xref: MassAvg: "127.12" xref: MassMono: "127.050752" xref: Origin: "Q" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: Unimod: "Unimod:23" is_a: MOD:00601 ! cyclized residue is_a: MOD:00704 ! dehydrated residue is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:00309 name: L-beta-carboxyaspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to L-beta-carboxyaspartic acid." [OMSSA:47, PubMed:6390094, PubMed:7138832, PubMed:7457858, PubMed:8135347, RESID:AA0304, Unimod:299#D] comment: References to this modification as a gamma-carboxylation are in error [JSG]. synonym: "(2S)-2-aminoethane-1,1,2-tricarboxylic acid" EXACT RESID-systematic [] synonym: "2-amino-3-carboxybutanedioic acid" EXACT RESID-alternate [] synonym: "3-carboxy-L-aspartic acid" EXACT RESID-name [] synonym: "3-carboxyaspartic acid" EXACT RESID-alternate [] synonym: "3CbxAsp" EXACT PSI-MOD-label [] synonym: "beta-carboxyaspartic acid" EXACT RESID-alternate [] synonym: "Carboxy" RELATED PSI-MS-label [] synonym: "Carboxy" RELATED Unimod-interim [] synonym: "Carboxylation" RELATED Unimod-description [] synonym: "gammacarboxyld" EXACT OMSSA-label [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 H 0 N 0 O 2" xref: DiffMono: "43.989829" xref: Formula: "C 5 H 5 N 1 O 5" xref: MassAvg: "159.10" xref: MassMono: "159.016772" xref: Origin: "D" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:299" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01152 ! carboxylated residue [Term] id: MOD:00310 name: N5-methyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to N5-methyl-L-arginine." [PubMed:11875433, PubMed:9792625, PubMed:9873020, RESID:AA0305] synonym: "(2S)-2-amino-5-(N-methylcarbamimidamido)pentanoic acid" EXACT RESID-systematic [] synonym: "delta-N-methylarginine" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N5-methylarginine" EXACT UniProt-feature [] synonym: "N5-carbamimidoyl-N5-methyl-L-ornithine" EXACT RESID-alternate [] synonym: "N5-methyl-L-arginine" EXACT RESID-name [] synonym: "N5-methylated L-arginine" EXACT PSI-MOD-alternate [] synonym: "N5Me1Arg" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 14 N 4 O 1" xref: MassAvg: "170.22" xref: MassMono: "170.116761" xref: Origin: "R" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0185" is_a: MOD:00414 ! monomethylated L-arginine is_a: MOD:00602 ! N-methylated residue [Term] id: MOD:00311 name: L-cysteine coenzyme A disulfide def: "A protein modification that effectively converts an L-cysteine residue to L-cysteine coenzyme A disulfide." [DeltaMass:0, PubMed:1734967, RESID:AA0306, Unimod:281#C] comment: DeltaMass gives no formula with mass as 454. synonym: "(2R)-2-amino-3-(2-((3-(((2R)-2,4-dihydroxy-3,3-dimethyl-1-oxobutyl)amino)-1-oxopropyl)amino)ethyl)dithio-propanoic acid 4'-ester with adenosine 5'-(trihydrogen diphosphate) 3'-(dihydrogen phosphate)" EXACT RESID-systematic [] synonym: "coenzyme A L-cysteine mixed disulfide" EXACT RESID-alternate [] synonym: "CoenzymeA" RELATED PSI-MS-label [] synonym: "Cysteine modified Coenzyme A" RELATED Unimod-description [] synonym: "L-cysteine coenzyme A disulfide" EXACT RESID-name [] synonym: "SCoACys" EXACT PSI-MOD-label [] xref: DiffAvg: "765.52" xref: DiffFormula: "C 21 H 34 N 7 O 16 P 3 S 1" xref: DiffMono: "765.099559" xref: Formula: "C 24 H 39 N 8 O 17 P 3 S 2" xref: MassAvg: "868.66" xref: MassMono: "868.108744" xref: Origin: "C" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:281" is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01862 ! disulfide conjugated residue [Term] id: MOD:00312 name: S-myristoyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-myristoyl-L-cysteine." [PubMed:10026218, PubMed:10080938, PubMed:8824274, RESID:AA0307, Unimod:45#C] synonym: "(R)-2-amino-3-(tetradecanoylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "LIPID S-myristoyl cysteine" EXACT UniProt-feature [] synonym: "Myristoyl" RELATED PSI-MS-label [] synonym: "Myristoylation" RELATED Unimod-description [] synonym: "S-(C14:1 aliphatic acyl)cysteine" EXACT PSI-MOD-alternate [] synonym: "S-myristoyl-L-cysteine" EXACT RESID-name [] synonym: "S-myristoylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "SMyrCys" EXACT PSI-MOD-label [] synonym: "tetradecanoate cysteine thioester" EXACT RESID-alternate [] xref: DiffAvg: "210.36" xref: DiffFormula: "C 14 H 26 N 0 O 1 S 0" xref: DiffMono: "210.198365" xref: Formula: "C 17 H 31 N 1 O 2 S 1" xref: MassAvg: "313.50" xref: MassMono: "313.207550" xref: Origin: "C" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:45" is_a: MOD:00655 ! S-myristoylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00313 name: S-palmitoleyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-palmitoleyl-L-cysteine." [OMSSA:187, PubMed:8294460, RESID:AA0308, Unimod:431#C] synonym: "(R)-2-amino-3-((Z)-9-hexadecenoylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "cis-9-hexadecenoate cysteine thioester" EXACT RESID-alternate [] synonym: "mod187" EXACT OMSSA-label [] synonym: "Palmitoleyl" RELATED PSI-MS-label [] synonym: "palmitoleyl" RELATED Unimod-description [] synonym: "S-palmitoleyl-L-cysteine" EXACT RESID-name [] synonym: "S-palmitoleylated L-cysteine" EXACT PSI-MOD-alternate [] synonym: "SPamD1Cys" EXACT PSI-MOD-label [] xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1 S 0" xref: DiffMono: "236.214016" xref: Formula: "C 19 H 33 N 1 O 2 S 1" xref: MassAvg: "339.54" xref: MassMono: "339.223200" xref: Origin: "C" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:431" xref: UniProt: "PTM-0645" is_a: MOD:02002 ! S-palmitoleylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00314 name: glycine cholesterol ester def: "A protein modification that effectively converts a glycine residue to glycine cholesterol ester." [PubMed:11111088, PubMed:8824192, RESID:AA0309, Unimod:432#C-term, ChEBI:143135] comment: Incidental to RESID:AA0060. Unimod origin corrected [JSG]. subset: PSI-MOD-slim synonym: "C-cholesterol" RELATED Unimod-interim [] synonym: "cholesterol ester" RELATED Unimod-description [] synonym: "cholesteryl glycinate" EXACT RESID-alternate [] synonym: "glycine cholest-5-en-3beta-ol ester" EXACT RESID-systematic [] synonym: "glycine cholesterol ester" EXACT RESID-name [] synonym: "hedgehog lipophilic adduct" EXACT RESID-alternate [] synonym: "LIPID Cholesterol glycine ester" EXACT UniProt-feature [] xref: DiffAvg: "368.65" xref: DiffFormula: "C 27 H 44 N 0 O 0" xref: DiffMono: "368.344301" xref: Formula: "C 29 H 48 N 1 O 2" xref: MassAvg: "442.71" xref: MassMono: "442.368505" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:432" xref: UniProt: "PTM-0090" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00315 name: pentakis-L-cysteinyl L-histidino nickel tetrairon pentasulfide def: "A protein modification that effectively converts five L-cysteine residues, an L-histidine residue and a one-nickel four-iron five-sulfur cluster to pentakis-L-cysteinyl L-histidino nickel tetrairon pentasulfide." [PubMed:11509720, PubMed:2550436, RESID:AA0310] comment: Cross-link 6. synonym: "carbon monoxide dehydrogenase nickel-iron cofactor" EXACT RESID-alternate [] synonym: "METAL Nickel-iron-sulfur (Ni-4Fe-5S)" EXACT UniProt-feature [] synonym: "METAL Nickel-iron-sulfur (Ni-4Fe-5S); via tele nitrogen" EXACT UniProt-feature [] synonym: "mu-1:2kappaS-sulfido-mu3-1:3:5kappaS-sulfido-mu3-2:3:4kappaS-sulfido-mu3-2:4:5kappaS-sulfido-mu3-3:4:5kappaS-sulfido-N1'-histidino-S-cysteinyl-1-iron-S-cysteinyl-2-nickel-3,4,5-tris-(S-cysteinyl iron)" EXACT RESID-systematic [] synonym: "Ni-4Fe-5S cluster" EXACT RESID-alternate [] synonym: "pentakis-L-cysteinyl L-histidino nickel tetrairon pentasulfide" EXACT RESID-name [] xref: DiffAvg: "436.33" xref: DiffFormula: "C 0 Fe 4 H -6 N 0 Ni 1 O 0 S 5" xref: DiffMono: "435.488498" xref: Formula: "C 21 Fe 4 H 26 N 8 Ni 1 O 6 S 10" xref: MassAvg: "1089.16" xref: MassMono: "1087.593333" xref: Origin: "C, C, C, C, C, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:00741 ! nickel containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00316 name: N4,N4-dimethyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4,N4-dimethyl-L-asparagine." [PubMed:12964758, PubMed:14570711, PubMed:8783012, RESID:AA0311, Unimod:36#N] synonym: "(2S)-2-amino-4-(dimethylamino)-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-amino-N4,N4-dimethylbutanediamic acid" EXACT RESID-alternate [] synonym: "beta-dimethylasparagine" RELATED RESID-misnomer [] synonym: "di-Methylation" RELATED Unimod-description [] synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "MOD_RES N4,N4-dimethylasparagine" EXACT UniProt-feature [] synonym: "N(gamma),N(gamma)-dimethylasparagine" EXACT RESID-alternate [] synonym: "N4,N4-dimethyl-L-asparagine" EXACT RESID-name [] synonym: "N4,N4-dimethylated L-asparagine" EXACT PSI-MOD-alternate [] synonym: "N4Me2Asn" EXACT PSI-MOD-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 6 H 10 N 2 O 2" xref: MassAvg: "142.16" xref: MassMono: "142.074228" xref: Origin: "N" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:36" xref: UniProt: "PTM-0182" is_a: MOD:00429 ! dimethylated residue is_a: MOD:00602 ! N-methylated residue is_a: MOD:00673 ! methylated asparagine [Term] id: MOD:00317 name: N6-3,4-didehydroretinylidene-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-3,4-didehydroretinylidene-L-lysine." [PubMed:10717661, PubMed:3257009, PubMed:4056688, RESID:AA0312, Unimod:433#K] synonym: "(S)-2-amino-6-[(2E,4E,6E,8E)-3,7-dimethyl-9-(2,6,6-trimethylcyclohexa-1,3-dien-1-yl)-2,4,6,8-nonatetraenylidene]aminohexanoic acid" EXACT RESID-systematic [] synonym: "3,4-didehydroretinylidene" RELATED Unimod-description [] synonym: "Didehydroretinylidene" RELATED PSI-MS-label [] synonym: "N6-(3,4-didehydroretinylidene)-L-lysine" EXACT RESID-name [] synonym: "N6-3-dehydroretinal-L-lysine" EXACT RESID-alternate [] synonym: "N6-3-dehydroretinyl-lysine" EXACT RESID-alternate [] xref: DiffAvg: "264.41" xref: DiffFormula: "C 20 H 24 N 0 O 0" xref: DiffMono: "264.187801" xref: Formula: "C 26 H 36 N 2 O 1" xref: MassAvg: "392.59" xref: MassMono: "392.282764" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:433" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00318 name: 4'-(S-L-cysteinyl)-L-tryptophyl quinone def: "A protein modification that effectively cross-links an L-cysteine residue and an L-tryptophan residue by a thioether bond to form 4'-(S-L-cysteinyl)-L-tryptophyl quinone." [PubMed:11555656, PubMed:11717396, RESID:AA0313] comment: Cross-link 2; secondary to RESID:AA0148. synonym: "(2R)-2-amino-3-[(3-[(2S)-2-amino-2-carboxyethyl]-6,7-dioxo-6,7-dihydro-1H-indol-4-yl)sulfanyl]propanoic acid" EXACT RESID-systematic [] synonym: "3-(2-amino-2-carboxyethyl)-4-[2-amino-2-carboxyethyl]sulfanyl-6,7-indolinedione" EXACT RESID-alternate [] synonym: "4'-(L-cystein-S-yl)-L-tryptophyl quinone" EXACT RESID-name [] synonym: "4-(S-cysteinyl)tryptophan-6,7-dione" EXACT RESID-alternate [] synonym: "CROSSLNK 4'-cysteinyl-tryptophylquinone (Cys-Trp)" EXACT UniProt-feature [] synonym: "CTQ" EXACT RESID-alternate [] synonym: "cysteine tryptophylquinone" EXACT RESID-alternate [] xref: DiffAvg: "27.97" xref: DiffFormula: "C 0 H -4 N 0 O 2 S 0" xref: DiffMono: "27.958529" xref: Formula: "C 14 H 11 N 3 O 4 S 1" xref: MassAvg: "317.32" xref: MassMono: "317.047027" xref: Origin: "C, W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0041" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:02057 ! crosslinked L-tryptophan residue [Term] id: MOD:00319 name: 3-(S-L-cysteinyl)-L-aspartic acid def: "A protein modification that effectively cross-links an L-cysteine residue and an L-aspartic acid residue by a thioether bond to form 2-(S-L-cysteinyl)-L-aspartic acid." [PubMed:11555656, PubMed:11717396, RESID:AA0314] comment: Cross-link 2. synonym: "(2R,3S)-2-amino-3-([(2R)-2-amino-2-carboxyethyl]sulfanyl)butanedioic acid" EXACT RESID-systematic [] synonym: "(2R,3S,6R)-2,6-diamino-3-carboxy-4-thiaheptanedioic acid" EXACT RESID-alternate [] synonym: "3-(L-cystein-S-yl)-L-aspartic acid" EXACT RESID-name [] synonym: "3-carboxy-L-lanthionine" EXACT RESID-alternate [] synonym: "CROSSLNK 3-cysteinyl-aspartic acid (Cys-Asp)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 7 H 8 N 2 O 4 S 1" xref: MassAvg: "216.21" xref: MassMono: "216.020478" xref: Origin: "C, D" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0025" is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:01993 ! beta-carbon thioether crosslinked residues [Term] id: MOD:00320 name: 4-(S-L-cysteinyl)-L-glutamic acid def: "A protein modification that effectively cross-links an L-cysteine residue and an L-glutamic acid residue by a thioether bond to form 4-(S-L-cysteinyl)-L-glutamic acid." [ChEBI:20293, PubMed:11555656, PubMed:11717396, RESID:AA0315] comment: Cross-link 2. synonym: "(2S,3S,7R)-2,7-diamino-4-carboxy-5-thiaoctanedioic acid" EXACT RESID-alternate [] synonym: "(2S,4S)-2-amino-4-[(R)-2-amino-2-carboxyethyl]sulfanylpentanedioic acid" EXACT RESID-systematic [] synonym: "4-(L-cystein-S-yl)-L-glutamic acid" EXACT RESID-name [] synonym: "CROSSLNK 4-cysteinyl-glutamic acid (Cys-Glu)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 8 H 10 N 2 O 4 S 1" xref: MassAvg: "230.24" xref: MassMono: "230.036128" xref: Origin: "C, E" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0040" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:02045 ! crosslinked L-glutamic acid residue [Term] id: MOD:00321 name: cis-14-hydroxy-10,13-dioxo-7-heptadecenoic acid L-aspartate ester def: "A protein modification that effectively converts an L-aspartic acid residue to cis-14-hydroxy-10,13-dioxo-7-heptadecenoic acid L-aspartate ester." [PubMed:11435437, PubMed:7949339, RESID:AA0316, Unimod:434#D] synonym: "(7Z,14Xi)-14-[(S)-3-amino-3-carboxy-propanoyl]oxy-10,13-dioxo-7-heptadecenoic acid" EXACT RESID-systematic [] synonym: "barley lipid transfer protein modification" EXACT RESID-alternate [] synonym: "CHDH" RELATED PSI-MS-label [] synonym: "cis-14-hydroxy-10,13-dioxo-7-heptadecenoic acid L-aspartate ester" EXACT RESID-name [] synonym: "cis-14-hydroxy-10,13-dioxo-7-heptadecenoic ester" RELATED Unimod-description [] synonym: "LIPID Cis-14-hydroxy-10,13-dioxo-7-heptadecenoic acid aspartate ester" EXACT UniProt-feature [] xref: DiffAvg: "294.39" xref: DiffFormula: "C 17 H 26 N 0 O 4" xref: DiffMono: "294.183109" xref: Formula: "C 21 H 31 N 1 O 7" xref: MassAvg: "409.48" xref: MassMono: "409.210052" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:434" xref: UniProt: "PTM-0091" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00322 name: 1'-methyl-L-histidine def: "A protein modification that effectively converts an L-histidine residue to tele-methyl-L-histidine." [PubMed:10601317, PubMed:11474090, PubMed:11875433, PubMed:6692818, PubMed:8076, PubMed:8645219, RESID:AA0317] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-(1-methyl-1H-imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "1'-methyl-L-histidine" EXACT RESID-name [] synonym: "3-methylhistidine" RELATED RESID-misnomer [] synonym: "4-methyl-histidine" RELATED RESID-misnomer [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES Tele-methylhistidine" EXACT UniProt-feature [] synonym: "N(epsilon)-methylhistidine" EXACT RESID-alternate [] synonym: "N(tau)-methylhistidine" EXACT RESID-alternate [] synonym: "NteleMeHis" EXACT PSI-MOD-label [] synonym: "tele-methylated L-histidine" EXACT PSI-MOD-alternate [] synonym: "tele-methylhistidine" EXACT RESID-alternate [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 9 N 3 O 1" xref: MassAvg: "151.17" xref: MassMono: "151.074562" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0290" is_a: MOD:02038 ! monomethylated L-histidine is_a: MOD:00724 ! N-methylated L-histidine [Term] id: MOD:00323 name: L-lysine methyl ester def: "A protein modification that effectively converts an L-lysine residue to L-lysine methyl ester." [PubMed:10973948, PubMed:11875433, RESID:AA0318, Unimod:34#C-term] subset: PSI-MOD-slim synonym: "2,6-diaminohexanoic methyl ester" EXACT RESID-alternate [] synonym: "alpha,epsilon-diaminocaproic methyl ester" EXACT RESID-alternate [] synonym: "L-lysine methyl ester" EXACT RESID-name [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methyl (S)-2,6-diaminohexanoate" EXACT RESID-systematic [] synonym: "methyl esterified L-lysine" EXACT PSI-MOD-alternate [] synonym: "methyl L-lysinate" EXACT RESID-alternate [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES Lysine methyl ester" EXACT UniProt-feature [] synonym: "OMeLys" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 15 N 2 O 2" xref: MassAvg: "159.21" xref: MassMono: "159.113353" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0170" is_a: MOD:01683 ! monomethylated L-lysine is_a: MOD:01689 ! alpha-carboxyl methylated residue [Term] id: MOD:00324 name: L-serinyl molybdenum bis(molybdopterin guanine dinucleotide) def: "A protein modification that effectively converts an L-serine residue to L-serinyl molybdenum bis(molybdopterin guanine dinucleotide)." [PubMed:8658132, PubMed:8658134, RESID:AA0319] synonym: "2-amino-5,6-dimercapto-7-methyl-3,7,8a,9-tetrahydro-8-oxa-1,3,9,10-tetraazaanthracen-4-one guanosine dinucleotide" EXACT RESID-alternate [] synonym: "bis[8-amino-1a,2,4a,5,6,7,10-heptahydro-2-(trihydrogen diphosphate 5'-ester with guanosine)methyl-6-oxo-3,4-disulfanyl-pteridino[6,7-5,6]pyranoato-S3,S4]-O3-serinyl-molybdenum oxide" EXACT RESID-systematic [] synonym: "L-serinyl molybdenum bis(molybdopterin guanine dinucleotide)" EXACT RESID-name [] xref: DiffAvg: "1588.01" xref: DiffFormula: "C 40 H 47 Mo 1 N 20 O 27 P 4 S 4" xref: DiffMono: "1588.980690" xref: Formula: "C 43 H 52 Mo 1 N 21 O 29 P 4 S 4" xref: MassAvg: "1675.09" xref: MassMono: "1676.012718" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00744 ! molybdenum pterin containing modification is_a: MOD:02072 ! metal or metal cluster coordinated L-serine residue [Term] id: MOD:00325 name: L-beta-methylthioasparagine def: "A protein modification that effectively converts an L-asparagine residue to L-beta-methylthioasparagine." [RESID:AA0320, Unimod:39#N] comment: This modification was predicted for ribosomal protein S12 in Bacillus subtilis when the sequence in the original version of the genome was reported to have asparagine rather than aspartic acid at the position of the methylthioaspartic acid modification (see MOD:00237). Two groups independently confirmed that the genome sequence was incorrect. The sequence in the revised genome has aspartic acid at that position. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2R,3Xi)-2-amino-3-(methylsulfanyl)-4-butanediamic acid" EXACT RESID-systematic [] synonym: "2,4-diamino-3-(methylsulfanyl)-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "3-(methylthio)-L-asparagine" EXACT RESID-name [] synonym: "3-carboxamido-S-methyl-cysteine" EXACT RESID-alternate [] synonym: "beta-(methylthio)asparagine" EXACT RESID-alternate [] synonym: "Beta-methylthiolation" RELATED Unimod-description [] synonym: "Methylthio" RELATED Unimod-interim [] xref: DiffAvg: "46.09" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 1" xref: DiffMono: "45.987721" xref: Formula: "C 5 H 8 N 2 O 2 S 1" xref: MassAvg: "160.19" xref: MassMono: "160.030649" xref: Origin: "N" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:39" is_a: MOD:00903 ! modified L-asparagine residue is_a: MOD:01153 ! methylthiolated residue [Term] id: MOD:00326 name: L-pyrrolysine (Lys) def: "A protein modification that effectively converts an L-lysine residue to L-pyrrolysine (not known as a natural, post-translational modification process)." [PubMed:11435424, PubMed:12029131, PubMed:12029132, PubMed:15314242, PubMed:16096277, RESID:AA0321#LYS, Unimod:435#K] comment: This entry is for the artifactual formation of L-pyrrolysine from lysine. For encoded L-pyrrolysine, use MOD:01187 [JSG]. synonym: "(2S)-2-amino-6-[(2R,3R)-3-methyl-3,4-dihydro-2H-pyrrol-2-ylcarbonyl]aminohexanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-6-[(2R,3R)-3-methyl-3,4-dihydro-2H-pyrrol-2-ylcarbonyl]azanylhexanoic acid" EXACT RESID-alternate [] synonym: "L-pyrrolysine" EXACT RESID-name [] synonym: "monomethylamine methyltransferase cofactor lysine adduct" EXACT RESID-alternate [] synonym: "N6-(4-methyl-1,2-didehydropyrrolidine-5-carboxyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-(4-methyl-delta-1-pyrroline-5-carboxyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-([(2R,3R)-3-methyl-3,4-dihydro-2H-pyrrol-2-yl]carbonyl)-L-lysine" EXACT RESID-alternate [] synonym: "NON_STD Pyrrolysine" EXACT UniProt-feature [] synonym: "Pyl(Lys)" EXACT PSI-MOD-label [] xref: DiffAvg: "109.13" xref: DiffFormula: "C 6 H 7 N 1 O 1" xref: DiffMono: "109.052764" xref: Formula: "C 12 H 19 N 3 O 2" xref: MassAvg: "237.30" xref: MassMono: "237.147727" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:435" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00327 name: 3-hydroxy-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to a 3-hydroxy-L-tryptophan." [PubMed:10024453, PubMed:11457355, RESID:AA0322, ChEBI:141794] synonym: "(2S,3S)-2-amino-3-hydroxy-3-(1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "3-hydroxy-L-tryptophan" EXACT RESID-name [] synonym: "3-hydroxylated L-tryptophan" EXACT PSI-MOD-alternate [] synonym: "3-hydroxytryptophan" EXACT RESID-alternate [] synonym: "3HyTrp" EXACT PSI-MOD-label [] synonym: "beta-hydroxytryptophan" EXACT RESID-alternate [] synonym: "MOD_RES 3-hydroxytryptophan" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 11 H 10 N 2 O 2" xref: MassAvg: "202.21" xref: MassMono: "202.074228" xref: Origin: "W" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0031" is_a: MOD:01622 ! monohydroxylated tryptophan [Term] id: MOD:00328 name: O4'-(phospho-3'-DNA)-L-tyrosine def: "A protein modification that effectively crosslinks an L-tyrosine residue and the 3'-end of DNA through a phosphodiester bond to form O4'-(phospho-3'-DNA)-L-tyrosine." [PubMed:2211714, RESID:AA0323] synonym: "(S)-2-amino-3-[4-(3'-deoxyribonucleic acid phosphonoxy)phenyl]propanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE O-(3'-phospho-DNA)-tyrosine intermediate" EXACT UniProt-feature [] synonym: "O4'-(phospho-3'-DNA)-L-tyrosine" EXACT RESID-name [] synonym: "O4'-L-tyrosine 3'-DNA phosphodiester" EXACT RESID-alternate [] xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00750 ! deoxyribonucleic acid linked residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00329 name: hydroxyheme-L-glutamate ester def: "A protein modification that effectively results from forming an adduct between a glutamic acid residue and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [PubMed:11139583, PubMed:11821421, PubMed:11980497, RESID:AA0324, Unimod:436#E] synonym: "5-hydroxymethyl protoporphyrin IX 5-glutamate ester" EXACT RESID-alternate [] synonym: "[3-[(S)-(4-amino-4-carboxy)butanoyloxymethyl]-7,12-diethenyl-8,13,17-trimethyl-21H,23H-porphine-2,18-bis(2-carboxyethyl)-N21,N22,N23,N24]-ferrate" EXACT RESID-systematic [] synonym: "BINDING Heme (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "cytochrome P450 CYP4A family heme cofactor" EXACT RESID-alternate [] synonym: "Hydroxyheme" RELATED PSI-MS-label [] synonym: "hydroxyheme" RELATED Unimod-description [] synonym: "hydroxyheme-L-glutamate ester" EXACT RESID-name [] xref: DiffAvg: "614.48" xref: DiffFormula: "C 34 Fe 1 H 30 N 4 O 4" xref: DiffMono: "614.161643" xref: Formula: "C 39 Fe 1 H 37 N 5 O 7" xref: MassAvg: "743.60" xref: MassMono: "743.204236" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:436" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue [Term] id: MOD:00330 name: (phospho-5'-guanosine)-L-histidine def: "A protein modification that effectively converts an L-histidine residue to a (phospho-5'-guanosine)-L-histidine." [PubMed:10529169, PubMed:10869342, PubMed:7559521, RESID:AA0325, Unimod:413#H] synonym: "(2S)-2-amino-3-(1-(5'-adenosine phosphono)imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "1'-(phospho-5'-guanosine)-L-histidine" EXACT RESID-name [] synonym: "ACT_SITE GMP-histidine intermediate" EXACT UniProt-feature [] synonym: "L-histidine 5'-guanosine phosphoramidester" EXACT RESID-alternate [] synonym: "L-histidine monoanhydride with 5'-guanylic acid" EXACT RESID-alternate [] synonym: "N(tau)-5'-guanylic-L-histidine" EXACT RESID-alternate [] synonym: "N1'-guanylylated histidine" EXACT RESID-alternate [] synonym: "phospho-guanosine" RELATED Unimod-description [] synonym: "Phosphoguanosine" RELATED PSI-MS-label [] synonym: "tele-5'-guanylic-L-histidine" EXACT RESID-alternate [] xref: DiffAvg: "345.21" xref: DiffFormula: "C 10 H 12 N 5 O 7 P 1" xref: DiffMono: "345.047434" xref: Formula: "C 16 H 19 N 8 O 8 P 1" xref: MassAvg: "482.35" xref: MassMono: "482.106346" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:413" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01163 ! guanylated residue [Term] id: MOD:00331 name: tetrakis-L-cysteinyl triiron tetrasulfide def: "A protein modification that effectively converts four L-cysteine residues and a three-iron four-sulfur cluster to tetrakis-L-cysteinyl triiron tetrasulfide." [PubMed:11592901, PubMed:11941493, PubMed:2511202, PubMed:6094558, RESID:AA0326] comment: Cross-link 4. synonym: "bis[bis-L-cysteinyl iron disulfido]iron" EXACT RESID-alternate [] synonym: "di-mu-1:2kappaS-sulfido di-mu-2:3kappaS-sulfido iron bis(bis-S-cysteinyliron)" EXACT RESID-systematic [] synonym: "tetra-mu-sulfido tetrakis-S-L-cysteinyl triiron" EXACT RESID-alternate [] synonym: "tetrakis-L-cysteinyl linear [3Fe-4S] cluster" EXACT RESID-alternate [] synonym: "tetrakis-L-cysteinyl triiron tetrasulfide" EXACT RESID-name [] synonym: "tetrakis-L-cysteinyl triiron tetrasulfide D2 cluster" EXACT RESID-alternate [] xref: DiffAvg: "291.74" xref: DiffFormula: "C 0 Fe 3 H -4 N 0 O 0 S 4" xref: DiffMono: "291.663442" xref: FormalCharge: "3-" xref: Formula: "C 12 Fe 3 H 16 N 4 O 4 S 8" xref: MassAvg: "704.30" xref: MassMono: "703.700181" xref: Origin: "C, C, C, C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00332 name: omega-N-glucosyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to N4-glucosyl-arginine." [PubMed:15279557, PubMed:8521968, PubMed:9536051, RESID:AA0327, Unimod:41#R] synonym: "(2S)-2-amino-5-(beta-D-glucopyranosyl[imino(methylamino)methyl]amino)pentanoic acid" EXACT RESID-systematic [] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] synonym: "NG-beta-D-glucosylarginine" EXACT RESID-alternate [] synonym: "omega-N-(beta-D-glucosyl)-L-arginine" EXACT RESID-alternate [] synonym: "omega-N-glucosyl-L-arginine" EXACT RESID-name [] synonym: "omega-N-glycosyl-L-arginine" EXACT RESID-alternate [] synonym: "CARBOHYD N-linked (Glc) arginine" EXACT UniProt-feature [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 12 H 22 N 4 O 6" xref: MassAvg: "318.33" xref: MassMono: "318.153934" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" xref: UniProt: "PTM-0515" is_a: MOD:00433 ! monoglucosylated residue is_a: MOD:01980 ! omega-N-glycosyl-L-arginine [Term] id: MOD:00333 name: (3-aminopropyl)(L-aspartyl-1-amino)phosphoryl-5'-adenosine def: "A protein modification that effectively converts an L-asparagine residue to (3-aminopropyl)(L-aspartyl-1-amino)phosphoryl-5'-adenosine." [PubMed:7559516, PubMed:7835418, PubMed:8183363, RESID:AA0328, Unimod:437#C-term] comment: Unimod origin shown as C-term [JSG]. synonym: "(3-aminopropyl)(L-aspartyl-1-amino)phosphoryl-5'-adenosine" EXACT RESID-name [] synonym: "(3-aminopropyl)(L-aspartyl-1-amino)phosphoryl-5-adenosine" RELATED Unimod-description [] synonym: "5'-O-[(3-aminopropoxy)(L-aspart-1-ylamino)phosphoryl]adenosine" EXACT RESID-systematic [] synonym: "9-(5'-O-[(3-aminopropoxy)(L-aspart-1-ylamino)phosphoryl]-beta-D-ribofuranosyl)adenine" EXACT RESID-alternate [] synonym: "C-Asn-deriv" RELATED Unimod-interim [] synonym: "microcin C7 asparagine modification" EXACT RESID-alternate [] synonym: "MOD_RES Aspartic acid 1-[(3-aminopropyl)(5'-adenosyl)phosphono]amide" EXACT UniProt-feature [] synonym: "N-(aspart-1-yl)-O-(3-aminopropyl)-O-(5'-adenosyl)phosphoramide" EXACT RESID-alternate [] xref: DiffAvg: "386.30" xref: DiffFormula: "C 13 H 19 N 6 O 6 P 1" xref: DiffMono: "386.110369" xref: Formula: "C 17 H 26 N 8 O 9 P 1" xref: MassAvg: "517.42" xref: MassMono: "517.156036" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:437" xref: UniProt: "PTM-0335" is_a: MOD:00701 ! nucleotide or nucleic acid modified residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00334 name: 1'-heme-L-histidine def: "A protein modification that effectively results from forming an adduct between the tele nitrogen of a histidine residue and the porphyrin compound heme b, (7,12-diethenyl-3,8,13,17-tetramethylporphyrin-2,18-dipropanoato)iron." [PubMed:12033922, PubMed:12121092, RESID:AA0329, Unimod:390#H] synonym: "(S)-[7-ethenyl-12-[1-((2-amino-2-carboxyethyl)-1H-imidazol-1-yl)ethyl]-3,8,13,17-tetramethyl-21H,23H-porphine-2,18-bis(2-carboxyethyl)-N21,N22,N23,N24]-ferrate" EXACT RESID-systematic [] synonym: "1'-heme-L-histidine" EXACT RESID-name [] synonym: "2-[1-(N1'-histidyl)ethyl]protoporphyrin IX" EXACT RESID-alternate [] synonym: "BINDING Heme (covalent; via tele nitrogen)" EXACT UniProt-feature [] synonym: "Heme" RELATED PSI-MS-label [] synonym: "heme" RELATED Unimod-description [] synonym: "N(epsilon)-histidyl heme" EXACT RESID-alternate [] synonym: "N(tau)-histidyl heme" EXACT RESID-alternate [] synonym: "N1'-histidyl heme" EXACT RESID-alternate [] synonym: "tele-histidyl heme" EXACT RESID-alternate [] xref: DiffAvg: "616.50" xref: DiffFormula: "C 34 Fe 1 H 32 N 4 O 4" xref: DiffMono: "616.177293" xref: Formula: "C 40 Fe 1 H 39 N 7 O 5" xref: MassAvg: "753.64" xref: MassMono: "753.236205" xref: Origin: "H" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:390" is_a: MOD:00699 ! porphyrin modified residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00335 name: (2S,3S,2'R)-3-methyllanthionine sulfoxide def: "A protein modification that effectively cross-links an L-cysteine residue and an L-threonine residue by a thioether bond to form (2S,3S,2'R)-3-methyllanthionine sulfoxide." [PubMed:7737178, PubMed:9219543, RESID:AA0330] comment: Cross-link 2. synonym: "(2S,3S,4Xi,6R)-2,6-diamino-3-methyl-4-oxo-4-thiaheptanedioic acid" EXACT RESID-alternate [] synonym: "(2S,3S,SXi)-2-amino-3-([(R)-2-amino-2-carboxyethyl]sulfinyl)butanoic acid" EXACT RESID-systematic [] synonym: "3-methyl-L-lanthionine S-oxide" EXACT RESID-alternate [] synonym: "3-methyl-L-lanthionine sulfoxide" EXACT RESID-name [] synonym: "CROSSLNK Beta-methyllanthionine sulfoxide (Thr-Cys)" EXACT UniProt-feature [] synonym: "S-oxy-3-methyllanthionine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 7 H 10 N 2 O 3 S 1" xref: MassAvg: "202.23" xref: MassMono: "202.041213" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0069" is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01993 ! beta-carbon thioether crosslinked residues relationship: has_functional_parent MOD:01981 ! 3-methyllanthionine [Term] id: MOD:00336 name: tris-L-cysteinyl L-aspartato diiron disulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-aspartic acid residue and a two-iron two-sulfur cluster to tris-L-cysteinyl L-aspartato diiron disulfide." [PubMed:10968624, PubMed:1312028, PubMed:7947772, RESID:AA0331] comment: Cross-link 4. synonym: "di-mu-sulfido(bis-S-cysteinyliron)(S-cysteinyl-O4-aspartatoiron)" EXACT RESID-systematic [] synonym: "METAL Iron-sulfur (2Fe-2S)" EXACT UniProt-feature [] synonym: "tris-L-cysteinyl L-aspartato diiron disulfide" EXACT RESID-name [] xref: DiffAvg: "171.78" xref: DiffFormula: "C 0 Fe 2 H -4 N 0 O 0 S 2" xref: DiffMono: "171.783814" xref: FormalCharge: "2-" xref: Formula: "C 13 Fe 2 H 16 N 4 O 6 S 5" xref: MassAvg: "596.28" xref: MassMono: "595.838311" xref: Origin: "C, C, C, D" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00337 name: S-carbamoyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-carbamoyl-L-cysteine." [PubMed:12586941, PubMed:240389, RESID:AA0332, Unimod:5#C] synonym: "(R)-2-amino-3-(carbamoylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(aminocarbonyl)sulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-(aminocarbonyl)thiopropanoic acid" EXACT RESID-alternate [] synonym: "alpha-amino-beta-carbamylthiopropionic acid" EXACT RESID-alternate [] synonym: "beta-carbamylthioalanine" EXACT RESID-alternate [] synonym: "MOD_RES S-carbamoylcysteine" EXACT UniProt-feature [] synonym: "S-(aminocarbonyl)cysteine" EXACT RESID-alternate [] synonym: "S-carbamoyl-L-cysteine" EXACT RESID-name [] synonym: "S-carbamoylcysteine" EXACT RESID-alternate [] synonym: "S-carbamylcysteine" EXACT RESID-alternate [] synonym: "S-cysteinyl carbamate ester" EXACT RESID-alternate [] synonym: "SCbmCys" EXACT PSI-MOD-label [] xref: DiffAvg: "43.02" xref: DiffFormula: "C 1 H 1 N 1 O 1 S 0" xref: DiffMono: "43.005814" xref: Formula: "C 4 H 6 N 2 O 2 S 1" xref: MassAvg: "146.16" xref: MassMono: "146.014998" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:5" xref: UniProt: "PTM-0649" is_a: MOD:00398 ! carbamoylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00338 name: S-cyano-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-cyano-L-cysteine." [PubMed:12586941, PubMed:4808702, RESID:AA0333, Unimod:438#C] synonym: "(2R)-2-amino-3-thiocyanatopropanoic acid" EXACT RESID-systematic [] synonym: "alpha-amino-beta-thiocyanatopropionic acid" EXACT RESID-alternate [] synonym: "beta-thiocyanatoalanine" EXACT RESID-alternate [] synonym: "Cyano" RELATED PSI-MS-label [] synonym: "cyano" RELATED Unimod-description [] synonym: "MOD_RES S-cyanocysteine" EXACT UniProt-feature [] synonym: "S-cyano-L-cysteine" EXACT RESID-name [] synonym: "S-cyanocysteine" EXACT RESID-alternate [] synonym: "serine thiocyanic acid ester" EXACT RESID-alternate [] xref: DiffAvg: "25.01" xref: DiffFormula: "C 1 H -1 N 1 O 0 S 0" xref: DiffMono: "24.995249" xref: Formula: "C 4 H 4 N 2 O 1 S 1" xref: MassAvg: "128.15" xref: MassMono: "128.004434" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:438" xref: UniProt: "PTM-0650" is_a: MOD:00893 ! residues isobaric at 128.0-128.1 is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00339 name: L-cysteinyl hydrogenase diiron subcluster def: "A protein modification that effectively converts an L-cysteine residue to L-cysteinyl hydrogenase diiron subcluster." [PubMed:10694885, PubMed:9836629, RESID:AA0334, Unimod:439#C] comment: incidental to RESID:AA0140. synonym: "1,7-biscarbonyl-1-(cystein-S-yl)-8-oxo-4-aza-2lambda(3),6 lambda(3)-dithia-1,7-diferratricyclo[4.2.0.0(2,7)]octane-1,7-dicarbonitrile" EXACT RESID-alternate [] synonym: "Diironsubcluster" RELATED PSI-MS-label [] synonym: "hydrogenase diiron subcluster" RELATED Unimod-description [] synonym: "L-cysteinyl hydrogenase diiron subcluster" EXACT RESID-name [] synonym: "METAL Diiron subcluster" EXACT UniProt-feature [] synonym: "mu-carbonyl-dicarbonyl-1kappaC,2kappaC-dicyanido-1kappaC,2kappaC-cysteinato-1kS-1,2-azadimethanthiol-1kS,2kS'-diiron" EXACT RESID-systematic [] xref: DiffAvg: "342.87" xref: DiffFormula: "C 5 Fe 2 H -1 N 2 O 5 S 2" xref: DiffMono: "342.786913" xref: Formula: "C 8 Fe 2 H 4 N 3 O 6 S 3" xref: MassAvg: "446.01" xref: MassMono: "445.796098" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:439" is_a: MOD:00738 ! iron containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00340 name: S-amidino-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-amidino-L-cysteine." [PubMed:9148748, RESID:AA0335, Unimod:440#C] synonym: "(2R)-2-amino-3-(carbamimidoylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-amidinosulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-amidinothiopropanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE Amidino-cysteine intermediate" EXACT UniProt-feature [] synonym: "alpha-amino-beta-amidinothiopropionic acid" EXACT RESID-alternate [] synonym: "Amidino" RELATED PSI-MS-label [] synonym: "amidino" RELATED Unimod-description [] synonym: "beta-(S-isothiourea)alanine" EXACT RESID-alternate [] synonym: "beta-amidinothioalanine" EXACT RESID-alternate [] synonym: "S-amidino-L-cysteine" EXACT RESID-name [] synonym: "S-amidinocysteine" EXACT RESID-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 1 H 2 N 2 O 0 S 0" xref: DiffMono: "42.021798" xref: Formula: "C 4 H 7 N 3 O 1 S 1" xref: MassAvg: "145.18" xref: MassMono: "145.030983" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:440" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00341 name: N-methyl-L-isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to N-methyl-L-isoleucine." [PubMed:11875433, RESID:AA0336] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. synonym: "(2S,3S)-2-methylamino-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N-methylisoleucine" EXACT UniProt-feature [] synonym: "N-methyl-L-isoleucine" EXACT RESID-name [] synonym: "N-methylated L-isoleucine" EXACT PSI-MOD-alternate [] synonym: "N-methylisoleucine" EXACT RESID-alternate [] synonym: "NMe1Ile" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 13 N 1 O 1" xref: MassAvg: "127.19" xref: MassMono: "127.099714" xref: Origin: "I" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0215" is_a: MOD:00715 ! methylated isoleucine is_a: MOD:01680 ! alpha-amino monomethylated residue [Term] id: MOD:00342 name: N-methyl-L-leucine def: "A protein modification that effectively converts an L-leucine residue to N-methyl-L-leucine." [PubMed:11875433, RESID:AA0337] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. synonym: "(S)-2-methylamino-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "2-(methylamino)-4-methyl-valeric acid" EXACT RESID-alternate [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "MOD_RES N-methylleucine" EXACT UniProt-feature [] synonym: "N-methyl-L-leucine" EXACT RESID-name [] synonym: "N-methylated L-leucine" EXACT PSI-MOD-alternate [] synonym: "N-methylleucine" EXACT RESID-alternate [] synonym: "NMe1Leu" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 13 N 1 O 1" xref: MassAvg: "127.19" xref: MassMono: "127.099714" xref: Origin: "L" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0216" is_a: MOD:01680 ! alpha-amino monomethylated residue is_a: MOD:01808 ! N-methylated leucine [Term] id: MOD:00343 name: N-methyl-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to N-methyl-L-tyrosine." [DeltaMass:0, RESID:AA0338] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. synonym: "(2S)-3-(4-hydroxyphenyl)-2-(methylamino)propanoic acid" EXACT RESID-systematic [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "MOD_RES N-methyltyrosine" EXACT UniProt-feature [] synonym: "N-methyl Tyrosinyl" EXACT DeltaMass-label [] synonym: "N-methyl-L-tyrosine" EXACT RESID-name [] synonym: "N-methylated L-tyrosine" EXACT PSI-MOD-alternate [] synonym: "N-methyltyrosine" EXACT RESID-alternate [] synonym: "NMe1Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 10 H 11 N 1 O 2" xref: MassAvg: "177.20" xref: MassMono: "177.078979" xref: Origin: "Y" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0220" is_a: MOD:00718 ! methylated tyrosine is_a: MOD:01680 ! alpha-amino monomethylated residue [Term] id: MOD:00344 name: N-palmitoylglycine def: "A protein modification that effectively converts a glycine residue to N-palmitoylglycine." [PubMed:12574119, RESID:AA0339] comment: incidental to RESID:AA0060 subset: PSI-MOD-slim synonym: "(hexadecanamido)acetic acid" EXACT RESID-alternate [] synonym: "(hexadecanoylamino)acetic acid" EXACT RESID-alternate [] synonym: "(hexadecanoylamino)ethanoic acid" EXACT RESID-systematic [] synonym: "LIPID N-palmitoyl glycine" EXACT UniProt-feature [] synonym: "N-(1-oxohexadecyl)glycine" EXACT RESID-alternate [] synonym: "N-palmitoyl-glycine" EXACT RESID-name [] synonym: "N-palmitoylated glycine" EXACT PSI-MOD-alternate [] synonym: "N-hexadecanoylated glycine" EXACT PSI-MOD-alternate [] synonym: "NPamGly" EXACT PSI-MOD-label [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1 S 0" xref: DiffMono: "238.229666" xref: Formula: "C 18 H 34 N 1 O 2" xref: MassAvg: "296.47" xref: MassMono: "296.258954" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0223" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01685 ! alpha-amino palmitoylated residue [Term] id: MOD:00345 name: 2-(S-L-cysteinyl)-L-phenylalanine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-phenylalanine residue by a thioether bond to form 2-(S-L-cysteinyl)-L-phenylalanine." [PubMed:12696888, PubMed:3936839, RESID:AA0340] comment: Cross-link 2. synonym: "(2R)-2-amino-2-[(2R)-2-amino-2-carboxyethyl]sulfanyl-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "(2R,5R)-2,5-diamino-3-thia-2-phenylmethylhexanedioic acid" EXACT RESID-alternate [] synonym: "2-(L-cystein-S-yl)-L-phenylalanine" EXACT RESID-name [] synonym: "alpha-(L-cystein-S-yl)-L-phenylalanine" EXACT RESID-alternate [] synonym: "CROSSLNK 2-cysteinyl-L-phenylalanine (Cys-Phe)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 12 H 12 N 2 O 2 S 1" xref: MassAvg: "248.30" xref: MassMono: "248.061949" xref: Origin: "C, F" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0012" is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:00346 name: 2-(S-L-cysteinyl)-D-phenylalanine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-phenylalanine residue by a thioether bond to form 2-(S-L-cysteinyl)-D-phenylalanine." [PubMed:12696888, PubMed:3936839, RESID:AA0341] comment: Cross-link 2. synonym: "(2S)-2-amino-2-[(2R)-2-amino-2-carboxyethyl]sulfanyl-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "(2S,5R)-2,5-diamino-3-thia-2-phenylmethylhexanedioic acid" EXACT RESID-alternate [] synonym: "2-(L-cystein-S-yl)-D-phenylalanine" EXACT RESID-name [] synonym: "alpha-(L-cystein-S-yl)-D-phenylalanine" EXACT RESID-alternate [] synonym: "CROSSLNK 2-cysteinyl-D-phenylalanine (Cys-Phe)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 12 H 12 N 2 O 2 S 1" xref: MassAvg: "248.30" xref: MassMono: "248.061949" xref: Origin: "C, F" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0011" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:00347 name: 2-(S-L-cysteinyl)-D-allo-threonine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-threonine residue by a thioether bond to form 2-(S-L-cysteinyl)-D-allo-threonine." [PubMed:12696888, PubMed:3936839, RESID:AA0342] comment: Cross-link 2. synonym: "(2R,5S,6R)-2,5-diamino-5-carboxy-6-hydroxy-4-thiaheptanoic acid" EXACT RESID-alternate [] synonym: "(2S,3R)-2-amino-2-[(2R)-2-amino-2-carboxyethyl]sulfanyl-3-hydroxybutanoic acid" EXACT RESID-systematic [] synonym: "2-(L-cystein-S-yl)-D-allo-threonine" EXACT RESID-name [] synonym: "alpha-(L-cystein-S-yl)-D-allo-threonine" EXACT RESID-alternate [] synonym: "CROSSLNK 2-cysteinyl-D-allo-threonine (Cys-Thr)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 7 H 10 N 2 O 3 S 1" xref: MassAvg: "202.23" xref: MassMono: "202.041213" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0010" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:00348 name: N-carbamoyl-L-alanine def: "A protein modification that effectively converts an L-alanine residue to N-carbamoyl-L-alanine." [PubMed:12203680, RESID:AA0343] synonym: "(S)-2-(carbamoylamino)propanoic acid" EXACT RESID-systematic [] synonym: "2-ureidopropanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N-carbamoylalanine" EXACT UniProt-feature [] synonym: "N-carbamoyl-L-alanine" EXACT RESID-name [] synonym: "N-carbamylalanine" EXACT RESID-alternate [] synonym: "N2CbmAla" EXACT PSI-MOD-label [] xref: DiffAvg: "43.02" xref: DiffFormula: "C 1 H 1 N 1 O 1" xref: DiffMono: "43.005814" xref: Formula: "C 4 H 7 N 2 O 2" xref: MassAvg: "115.11" xref: MassMono: "115.050752" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0374" is_a: MOD:00901 ! modified L-alanine residue is_a: MOD:01679 ! alpha-aminocarbamoylated residue [Term] id: MOD:00349 name: 4-amino-3-isothiazolidinone-L-serine def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-serine residue to form 4-amino-3-isothiazolidinone-L-serine." [PubMed:12802338, PubMed:12802339, RESID:AA0344] comment: Cross-link 2. synonym: "(2S)-2-[(4R)-4-amino-3-oxo-1,2-thiazolidin-2-yl]-3-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "2-(4-amino-3-oxo-isothiazolidin-2-yl)-3-hydroxy-propanoic acid" EXACT RESID-alternate [] synonym: "4-amino-3-isothiazolidinone-L-serine" EXACT RESID-alternate [] synonym: "CROSSLNK N,N-(cysteine-1,S-diyl)serine (Cys-Ser)" EXACT UniProt-feature [] synonym: "N,N-(L-cysteine-1,S-diyl)-L-serine" EXACT RESID-name [] synonym: "serine-cysteine sulfenyl amide cross-link" EXACT RESID-alternate [] synonym: "serine-cysteine sulphenyl amide cross-link" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 3 S 1" xref: MassAvg: "188.20" xref: MassMono: "188.025563" xref: Origin: "C, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0037" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01861 ! isothiazolidinone ring crosslinked residues [Term] id: MOD:00350 name: L-threonyl-pentaglycyl-murein peptidoglycan def: "A protein modification that effectively attaches an L-threonine residue to murein peptidoglycan by a pentaglycine linker peptide." [PubMed:10754567, PubMed:1638631, RESID:AA0345] synonym: "(2R,6S)-2-(N-mureinyl-(R)-alanyl-(S)-isoglutamyl)amino-6-(threonyl-pentaglycyl)amino-pimeloyl-(S)-alanyl-(S)-alanine" EXACT RESID-alternate [] synonym: "L-threonyl-pentaglycyl-murein peptidoglycan" EXACT RESID-name [] synonym: "MOD_RES Pentaglycyl murein peptidoglycan amidated threonine" EXACT UniProt-feature [] xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0246" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01159 ! peptidoglycanated residue [Term] id: MOD:00351 name: N-glycyl-1-(phosphatidyl)ethanolamine def: "A protein modification that effectively converts a glycine residue to N-glycyl-1-(phosphatidyl)ethanolamine." [PubMed:11100732, RESID:AA0346] synonym: "(R)-1-hexadecanoyloxy-2-((Z)-9-octadecenoyloxy)-3-[2-(aminoacetylamino)ethyloxyphospho]propane" EXACT RESID-systematic [] synonym: "LIPID Phosphatidylethanolamine amidated glycine" EXACT UniProt-feature [] synonym: "N-glycyl-1-(phosphatidyl)ethanolamine" EXACT RESID-name [] synonym: "N-glycyl-1-palmitoyl-2-oleoyl-sn-glycero-3-phosphoethanolamine" EXACT RESID-alternate [] xref: DiffAvg: "699.99" xref: DiffFormula: "C 39 H 74 N 1 O 7 P 1" xref: DiffMono: "699.520290" xref: Formula: "C 41 H 78 N 2 O 9 P 1" xref: MassAvg: "774.05" xref: MassMono: "773.544494" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0249" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00352 name: L-glutamyl 5-omega-hydroxyceramide ester def: "A protein modification that effectively converts an L-glutamic acid residue to L-glutamyl 5-omega-hydroxyceramide ester." [PubMed:10411887, PubMed:9651377, RESID:AA0347] synonym: "(S)-2-amino-5-[30-((2S,3R,4E)-1,3-dihydroxyicos-4-en-2-ylamino)-30-oxotriacontan-1-yloxy]-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "2-[30-(isoglutamyloxy)triacontanoyl]icosasphingosine" EXACT RESID-alternate [] synonym: "L-glutamyl 5-omega-hydroxyceramide ester" EXACT RESID-name [] synonym: "LIPID Omega-hydroxyceramide glutamate ester" EXACT UniProt-feature [] xref: DiffAvg: "761.31" xref: DiffFormula: "C 50 H 96 N 0 O 4" xref: DiffMono: "760.730862" xref: Formula: "C 55 H 104 N 2 O 6" xref: MassAvg: "889.44" xref: MassMono: "888.789439" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0236" is_a: MOD:00907 ! modified L-glutamine residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00353 name: S-[5'-(L-tryptoph-6'-yl)-L-tyrosin-3'-yl]-L-methionin-S-ium def: "A protein modification that effectively cross-links an L-tryptophan residue with an L-tyrosine residue by a carbon-carbon bond, and cross-links the L-tyrosine residue to an L-methionine residue by a thioether bond to form S-[5'-(L-tryptoph-6'-yl)-L-tyrosin-3'-yl]-L-methionin-S-ium." [PubMed:12172540, PubMed:16285713, RESID:AA0348] comment: Cross-link 3. synonym: "5'-(6'-tryptophyl)-tyrosin-3'-yl-methionin-S-ium" EXACT RESID-alternate [] synonym: "S-[5'-(L-tryptoph-6'-yl)-L-tyrosin-3'-yl]-L-methionin-S-ium" EXACT RESID-name [] xref: DiffAvg: "-3.02" xref: DiffFormula: "C 0 H -3 N 0 O 0 S 0" xref: DiffMono: "-3.024024" xref: FormalCharge: "1+" xref: Formula: "C 25 H 25 N 4 O 4 S 1" xref: MassAvg: "477.56" xref: MassMono: "477.159103" xref: Origin: "M, W, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0328" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02052 ! crosslinked L-methionine residue is_a: MOD:02057 ! crosslinked L-tryptophan residue is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00354 name: O-(riboflavin phosphoryl)-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-(riboflavin phosphoryl)-L-threonine." [PubMed:10587447, PubMed:11163785, PubMed:11248234, RESID:AA0349, Unimod:442#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(riboflavin 5'-hydrogen phosphonoxy)butanoic acid" EXACT RESID-systematic [] synonym: "FMN" RELATED PSI-MS-label [] synonym: "MOD_RES FMN phosphoryl threonine" EXACT UniProt-feature [] synonym: "O-(riboflavin phosphoryl)-L-threonine" EXACT RESID-name [] synonym: "O3-(riboflavin phosphoryl)" RELATED Unimod-description [] synonym: "O3-threonyl flavin mononucleotide" EXACT RESID-alternate [] synonym: "O3-threonyl FMN" EXACT RESID-alternate [] synonym: "OFMNThr" EXACT PSI-MOD-label [] xref: DiffAvg: "438.33" xref: DiffFormula: "C 17 H 19 N 4 O 8 P 1" xref: DiffMono: "438.094050" xref: Formula: "C 21 H 26 N 5 O 10 P 1" xref: MassAvg: "539.44" xref: MassMono: "539.141729" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:442" xref: UniProt: "PTM-0126" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01164 ! riboflavin-phosphorylated residue [Term] id: MOD:00355 name: O-(riboflavin phosphoryl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(riboflavin phosphoryl)-L-serine." [RESID:AA0350, Unimod:442#S] subset: PSI-MOD-slim synonym: "(R)-2-amino-3-(riboflavin 5'-hydrogen phosphonoxy)propanoic acid" EXACT RESID-systematic [] synonym: "FMN" RELATED PSI-MS-label [] synonym: "MOD_RES FMN phosphoryl serine" EXACT UniProt-feature [] synonym: "O-(riboflavin phosphoryl)-L-serine" EXACT RESID-name [] synonym: "O3-(riboflavin phosphoryl)" RELATED Unimod-description [] synonym: "O3-seryl flavin mononucleotide" EXACT RESID-alternate [] synonym: "O3-seryl FMN" EXACT RESID-alternate [] synonym: "OFMNSer" EXACT PSI-MOD-label [] xref: DiffAvg: "438.33" xref: DiffFormula: "C 17 H 19 N 4 O 8 P 1" xref: DiffMono: "438.094050" xref: Formula: "C 20 H 24 N 5 O 10 P 1" xref: MassAvg: "525.41" xref: MassMono: "525.126079" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:442" xref: UniProt: "PTM-0125" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01164 ! riboflavin-phosphorylated residue [Term] id: MOD:00356 name: S-(4alpha-FMN)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(4a-FMN)-L-cysteine." [PubMed:12668455, PubMed:12846567, PubMed:7692961, RESID:AA0351, Unimod:443#C] subset: PSI-MOD-slim synonym: "(R)-2-amino-3-(4a-riboflavin 5'-dihydrogen phosphate)sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "4a-(S-cysteinyl)flavin mononucleotide" EXACT RESID-alternate [] synonym: "4a-(S-cysteinyl)FMN" EXACT RESID-alternate [] synonym: "FMNC" RELATED PSI-MS-label [] synonym: "MOD_RES S-4a-FMN cysteine" EXACT UniProt-feature [] synonym: "S-(4a-FMN)" RELATED Unimod-description [] synonym: "S-(4a-FMN)-L-cysteine" EXACT RESID-name [] synonym: "S4aFMNCys" EXACT PSI-MOD-label [] xref: DiffAvg: "456.35" xref: DiffFormula: "C 17 H 21 N 4 O 9 P 1 S 0" xref: DiffMono: "456.104615" xref: Formula: "C 20 H 26 N 5 O 10 P 1 S 1" xref: MassAvg: "559.49" xref: MassMono: "559.113800" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:443" xref: UniProt: "PTM-0270" is_a: MOD:02083 ! 4alpha-FMN modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00357 name: 1'-(8alpha-FMN)-L-histidine def: "A protein modification that effectively converts an L-histidine residue to 1'-(8alpha-FMN)-L-histidine." [PubMed:11902668, PubMed:8611516, RESID:AA0352, Unimod:409#H] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-(1-[8alpha riboflavin 5'-dihydrogen phosphate]imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "1'-(8alpha-FMN)-L-histidine" EXACT RESID-name [] synonym: "8alpha-(N(epsilon)-histidyl)FMN" EXACT RESID-alternate [] synonym: "8alpha-(N1'-histidyl)FMN" EXACT RESID-alternate [] synonym: "flavin mononucleotide" RELATED Unimod-description [] synonym: "FMNH" RELATED PSI-MS-label [] synonym: "MOD_RES Tele-8alpha-FMN histidine" EXACT UniProt-feature [] synonym: "N(tau)-(8alpha-FMN)-histidine" EXACT RESID-alternate [] synonym: "Ntele8aFMNHis" EXACT PSI-MOD-label [] synonym: "tele-(8alpha-FMN)-histidine" EXACT RESID-alternate [] xref: DiffAvg: "454.33" xref: DiffFormula: "C 17 H 19 N 4 O 9 P 1" xref: DiffMono: "454.088965" xref: Formula: "C 23 H 26 N 7 O 10 P 1" xref: MassAvg: "591.47" xref: MassMono: "591.147877" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:409" xref: UniProt: "PTM-0289" is_a: MOD:02085 ! 8alpha-FMN modified residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:00358 name: 3'-(8alpha-FMN)-L-histidine def: "A protein modification that effectively converts an L-histidine residue to 3'-(8alpha-FMN)-L-histidine." [PubMed:12417325, RESID:AA0353, Unimod:409#H] comment: In a later publication, PubMed:19438211, the authors changed the enzyme activity, the connection from a histidine nitrogen to a cysteine sulfur, and the identity of the flavin from FMN to FAD. They now believe the modification is S-(8alpha-FAD)-L-cysteine, see MOD:00152. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. subset: PSI-MOD-slim synonym: "(S)-2-amino-3-(3-[8alpha riboflavin 5'-dihydrogen phosphate]imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "3'-(8alpha-FMN)-L-histidine" EXACT RESID-name [] synonym: "8alpha-(N(delta)-histidyl)FMN" EXACT RESID-alternate [] synonym: "8alpha-(N3'-histidyl)FMN" EXACT RESID-alternate [] synonym: "flavin mononucleotide" RELATED Unimod-description [] synonym: "FMNH" RELATED PSI-MS-label [] synonym: "N(pi)-(8alpha-FMN)-histidine" EXACT RESID-alternate [] synonym: "Npros8aFMNHis" EXACT PSI-MOD-label [] synonym: "pros-(8alpha-FMN)-histidine" EXACT RESID-alternate [] xref: DiffAvg: "454.33" xref: DiffFormula: "C 17 H 19 N 4 O 9 P 1" xref: DiffMono: "454.088965" xref: Formula: "C 23 H 26 N 7 O 10 P 1" xref: MassAvg: "591.47" xref: MassMono: "591.147877" xref: Origin: "H" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:409" is_a: MOD:02085 ! 8alpha-FMN modified residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:00359 name: N2-acetyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to N2-acetyl-L-arginine." [PubMed:12883043, PubMed:1894641, RESID:AA0354] synonym: "(S)-2-acetamido-5-carbamimidamidopentanoic acid" EXACT RESID-systematic [] synonym: "2-acetamido-5-guanidinopentanoic acid" EXACT RESID-alternate [] synonym: "2-acetylamino-5-guanidinopentanoic acid" EXACT RESID-alternate [] synonym: "AcArg" EXACT PSI-MOD-label [] synonym: "acetylarginine" EXACT RESID-alternate [] synonym: "alpha-acetylamino-delta-guanidinovaleric acid" EXACT RESID-alternate [] synonym: "MOD_RES N2-acetylarginine" EXACT UniProt-feature [] synonym: "N(alpha)-acetylarginine" EXACT RESID-alternate [] synonym: "N2-acetyl-L-arginine" EXACT RESID-name [] synonym: "N2-acetylated L-arginine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 8 H 15 N 4 O 2" xref: MassAvg: "199.23" xref: MassMono: "199.119501" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0180" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00360 name: L-cysteinyl copper sulfido molybdopterin cytosine dinuncleotide def: "A protein modification that effectively converts an L-cysteine residue to L-cysteinyl copper sulfido molybdopterin cytosine dinuncleotide." [PubMed:12475995, RESID:AA0355, Unimod:444#C] synonym: "[8-amino-1a,2,4a,5,6,7,10-heptahydro-2-(trihydrogen diphosphate 5'-ester with cytosine)methyl-6-oxo-3,4-dimercapto-pteridino[6,7-5,6]pyranoato-S3,S4]-cysteinyl-S-copper-mu-sulfido-molybdenum hydroxide oxide" EXACT RESID-systematic [] synonym: "copper sulfido molybdopterin cytosine dinuncleotide" RELATED Unimod-description [] synonym: "CuSMo" RELATED PSI-MS-label [] synonym: "cysteinyl copper mu-sulfido Mo-pterin cytosine dinucleotide" EXACT RESID-alternate [] synonym: "L-cysteinyl copper sulfido molybdopterin cytosine dinucleotide" EXACT RESID-name [] xref: DiffAvg: "922.07" xref: DiffFormula: "C 19 Cu 1 H 24 Mo 1 N 8 O 15 P 2 S 3" xref: DiffMono: "922.834854" xref: Formula: "C 22 Cu 1 H 29 Mo 1 N 9 O 16 P 2 S 4" xref: MassAvg: "1025.20" xref: MassMono: "1025.844039" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:444" is_a: MOD:00742 ! copper containing modified residue is_a: MOD:00744 ! molybdenum pterin containing modification is_a: MOD:00860 ! sulfur containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00361 name: tris-L-cysteinyl S-adenosylmethion-N,O-diyl tetrairon tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues, an S-adenosylmethionine and a four-iron four-sulfur cluster to tris-L-cysteinyl S-adenosylmethion-N,O-diyl tetrairon tetrasulfide." [PubMed:11222759, PubMed:14704425, RESID:AA0356] comment: Cross-link 3. synonym: "METAL Iron-sulfur (4Fe-4S-S-AdoMet)" EXACT UniProt-feature [] synonym: "tetra-mu3-sulfido(S-adenosylmethion-N,O-diyliron)tris(S-cysteinyliron)" EXACT RESID-systematic [] synonym: "tris-L-cysteinyl S-adenosylmethion-N,O-diyl tetrairon tetrasulfide" EXACT RESID-name [] xref: DiffAvg: "747.03" xref: DiffFormula: "C 15 Fe 4 H 19 N 6 O 5 S 5" xref: DiffMono: "746.742346" xref: FormalCharge: "1-" xref: Formula: "C 24 Fe 4 H 34 N 9 O 8 S 8" xref: MassAvg: "1056.45" xref: MassMono: "1055.769901" xref: Origin: "C, C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00362 name: tris-L-cysteinyl L-arginyl diiron disulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-arginine residue and a two-iron two-sulfur cluster to tris-L-cysteinyl L-arginyl diiron disulfide." [PubMed:14704425, RESID:AA0357] comment: Cross-link 4. synonym: "di-mu-sulfido(N(eta1)-arginyl-S-cysteinyliron)(bis-S-cysteinyliron)" EXACT RESID-systematic [] synonym: "METAL Iron-sulfur (2Fe-2S)" EXACT UniProt-feature [] synonym: "tris-L-cysteinyl L-arginyl diiron disulfide" EXACT RESID-name [] xref: DiffAvg: "172.79" xref: DiffFormula: "C 0 Fe 2 H -3 N 0 O 0 S 2" xref: DiffMono: "172.791639" xref: FormalCharge: "2-" xref: Formula: "C 15 Fe 2 H 24 N 7 O 4 S 5" xref: MassAvg: "638.39" xref: MassMono: "637.920304" xref: Origin: "C, C, C, R" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02076 ! metal or metal cluster coordinated L-arginine residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:00363 name: L-cysteinyl-L-selenocysteine (Cys-Sec) def: "A protein modification that effectively cross-links an L-cysteine residue and an L-selenocysteine residues to form L-cysteinyl-L-selenocystine." [PubMed:12911312, RESID:AA0358#SEC] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "(R,R)-2-amino-3-[3-(2-aminopropanoic acid)sulfanyl]selanylpropanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Cysteinyl-selenocysteine (Cys-Sec)" EXACT UniProt-feature [] synonym: "CROSSLNK Cysteinyl-selenocysteine (Sec-Cys)" EXACT UniProt-feature [] synonym: "L-cysteinyl-L-selenocysteine" EXACT RESID-name [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0 Se 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 2 S 1 Se 1" xref: MassAvg: "251.17" xref: MassMono: "251.947170" xref: Origin: "C, U" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0109" is_a: MOD:02061 ! crosslinked L-selenocysteine residue is_a: MOD:01627 ! L-cysteinyl-L-selenocysteine [Term] id: MOD:00364 name: 5-hydroxy-N6,N6,N6-trimethyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 5-hydroxy-N6,N6,N6-trimethyl-L-lysine." [PubMed:11349130, PubMed:14661085, RESID:AA0359, Unimod:445#K] comment: Incidental to RESID:AA0278; secondary to RESID:AA0028; secondary to RESID:AA0074. synonym: "(2R,5Xi)-5-amino-5-carboxy-2-hydroxy-N,N,N-trimethylpentan-1-aminium" EXACT RESID-systematic [] synonym: "(2Xi,5S)-5-amino-5-carboxy-2-hydroxy-N,N,N-trimethylpentanaminium" EXACT RESID-alternate [] synonym: "(2Xi,5S)-5-azanyl-5-carboxy-2-hydroxy-N,N,N-trimethylpentanazanium" EXACT RESID-alternate [] synonym: "5-hydroxy-N(zeta)-trimethyllysine" EXACT RESID-alternate [] synonym: "5-hydroxy-N6,N6,N6-trimethyl" RELATED Unimod-description [] synonym: "5-hydroxy-N6,N6,N6-trimethyl-L-lysine" EXACT RESID-name [] synonym: "5-hydroxy-N6,N6,N6-trimethyllysin-N6-ium" EXACT RESID-alternate [] synonym: "5-hydroxy-N6,N6,N6-trimethyllysine cation" EXACT RESID-alternate [] synonym: "5-hydroxylated N6,N6,N6-trimethylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "5HyN6Me3Lys" EXACT PSI-MOD-label [] synonym: "alpha-amino-epsilon-dimethylamino-delta-hydroxycaproic acid" EXACT RESID-alternate [] synonym: "delta-hydroxy-epsilon-N,N,N-trimethyllysine" EXACT RESID-alternate [] synonym: "Hydroxytrimethyl" RELATED PSI-MS-label [] synonym: "lysine derivative Lys(z)" EXACT RESID-alternate [] synonym: "MOD_RES N6,N6,N6-trimethyl-5-hydroxylysine" EXACT UniProt-feature [] xref: DiffAvg: "59.09" xref: DiffFormula: "C 3 H 7 N 0 O 1" xref: DiffMono: "59.049141" xref: FormalCharge: "1+" xref: Formula: "C 9 H 19 N 2 O 2" xref: MassAvg: "187.26" xref: MassMono: "187.144104" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:445" xref: UniProt: "PTM-0186" is_a: MOD:00602 ! N-methylated residue is_a: MOD:00912 ! modified L-lysine residue relationship: has_functional_parent MOD:00037 ! 5-hydroxy-L-lysine relationship: has_functional_parent MOD:00083 ! N6,N6,N6-trimethyl-L-lysine [Term] id: MOD:00365 name: N-(L-isoglutamyl)-glycine def: "A protein modification that effectively crosslinks an L-glutamic acid residue and a glycine residue by an isopeptide bond to form N-(L-isoglutamyl)-glycine." [PubMed:14531691, RESID:AA0360] comment: Cross-link 2. synonym: "(S)-2-amino-5-(carboxymethyl)amino-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "2-amino-N5-(carboxymethyl)-pentanediamic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoglutamyl glycine isopeptide (Gly-Glu)" EXACT UniProt-feature [] synonym: "isoglutamyl glycine" EXACT RESID-alternate [] synonym: "N-(L-isoglutamyl)-glycine" EXACT RESID-name [] synonym: "N-gamma-glutamylglycine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 9 N 2 O 3" xref: MassAvg: "169.16" xref: MassMono: "169.061317" xref: Origin: "E, G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0157" is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00366 name: O-sulfo-L-serine def: "A protein modification that effectively converts an L-serine residue to O-sulfo-L-serine." [PubMed:14752058, RESID:AA0361, Unimod:40#S] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(sulfooxy)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-hydroxypropanoic acid 3-sulfate" EXACT RESID-alternate [] synonym: "MOD_RES Sulfoserine" EXACT UniProt-feature [] synonym: "O-sulfo-L-serine" EXACT RESID-name [] synonym: "O-Sulfonation" RELATED Unimod-description [] synonym: "O3-sulfonoserine" EXACT RESID-alternate [] synonym: "O3-sulfoserine" EXACT RESID-alternate [] synonym: "serine sulfate ester" EXACT RESID-alternate [] synonym: "Sulfo" RELATED PSI-MS-label [] xref: DiffAvg: "80.06" xref: DiffFormula: "C 0 H 0 N 0 O 3 S 1" xref: DiffMono: "79.956815" xref: Formula: "C 3 H 5 N 1 O 5 S 1" xref: MassAvg: "167.13" xref: MassMono: "166.988843" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:40" xref: UniProt: "PTM-0284" is_a: MOD:00695 ! sulfated residue is_a: MOD:00771 ! residues isobaric at 166.98-167.00 Da is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00367 name: O-sulfo-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-sulfo-L-threonine." [PubMed:14752058, RESID:AA0362, Unimod:40#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(sulfooxy)butanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-hydroxybutanoic acid 3-sulfate" EXACT RESID-alternate [] synonym: "MOD_RES Sulfothreonine" EXACT UniProt-feature [] synonym: "O-sulfo-L-threonine" EXACT RESID-name [] synonym: "O-Sulfonation" RELATED Unimod-description [] synonym: "O3-sulfonothreonine" EXACT RESID-alternate [] synonym: "O3-sulfothreonine" EXACT RESID-alternate [] synonym: "Sulfo" RELATED PSI-MS-label [] synonym: "threonine sulfate ester" EXACT RESID-alternate [] xref: DiffAvg: "80.06" xref: DiffFormula: "C 0 H 0 N 0 O 3 S 1" xref: DiffMono: "79.956815" xref: Formula: "C 4 H 7 N 1 O 5 S 1" xref: MassAvg: "181.16" xref: MassMono: "181.004493" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:40" xref: UniProt: "PTM-0285" is_a: MOD:00695 ! sulfated residue is_a: MOD:00773 ! residues isobaric at 181.00-181.02 Da is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00368 name: N-carboxy-L-methionine def: "A protein modification that effectively converts an L-methionine residue to N-carboxy-L-methionine." [PubMed:10368287, PubMed:11120890, PubMed:12595263, PubMed:8312270, RESID:AA0363, Unimod:299#M] comment: At least three protein crystallographic structures have been reported with this modification. However, no chemical evidence for this modification is provided, there were no reports of this modification before these crystallographic reports, and there is no metabolic explanation for the conversion of a formyl group to a carboxy group. There is confusion in its description, and misnaming is common. This modification is probably a misidentification of N-(dihydroxymethyl)methionine, the hydrated form of N-formylmethionine. See MOD:01446 [JSG]. synonym: "(S)-2-carboxyamino-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-carbamic-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "2-carbamic-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "Carboxy" RELATED Unimod-interim [] synonym: "Carboxylation" RELATED Unimod-description [] synonym: "N-carboxy-L-methionine" EXACT RESID-name [] synonym: "N-carboxymethionine" EXACT RESID-alternate [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 H 0 N 0 O 2 S 0" xref: DiffMono: "43.989829" xref: Formula: "C 6 H 10 N 1 O 3 S 1" xref: MassAvg: "176.21" xref: MassMono: "176.038139" xref: Origin: "M" xref: Source: "hypothetical" xref: TermSpec: "N-term" xref: Unimod: "Unimod:299" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01152 ! carboxylated residue [Term] id: MOD:00369 name: O-acetyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-acetyl-L-serine." [ChEBI:17981, PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, PubMed:16731519, PubMed:489587, PubMed:7309355, RESID:AA0364, Unimod:1#S] comment: incidental to RESID:AA0051 subset: PSI-MOD-slim synonym: "(2S)-3-(acetyloxy)-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "Acetylation" RELATED Unimod-description [] synonym: "MOD_RES O-acetylserine" EXACT UniProt-feature [] synonym: "O-acetyl-L-serine" EXACT RESID-name [] synonym: "O-acetylated L-serine" EXACT PSI-MOD-alternate [] synonym: "O-acetylserine" EXACT RESID-alternate [] synonym: "OAcSer" EXACT PSI-MOD-label [] synonym: "serine acetate ester" EXACT RESID-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1" xref: UniProt: "PTM-0232" is_a: MOD:00644 ! mono O-acetylated residue is_a: MOD:00647 ! monoacetylated L-serine is_a: MOD:02003 ! O3-acylated L-serine [Term] id: MOD:00370 name: (E)-2,3-didehydrotyrosine def: "A protein modification that effectively converts an L-tyrosine residue to (E)-2,3-didehydrotyrosine." [PubMed:12623015, RESID:AA0365] comment: incidental to RESID:AA0184; incidental to RESID:AA0187; incidental to RESID:AA0188; incidental to RESID:AA0189; incidental to RESID:AA0378; incidental to RESID:AA0379; incidental to RESID:AA0380; incidental to RESID:AA0381 subset: PSI-MOD-slim synonym: "(2E)-2-amino-3-(4-hydroxyphenyl)prop-2-enoic acid" EXACT RESID-systematic [] synonym: "(E)-2,3-didehydrogenated tyrosine" EXACT PSI-MOD-alternate [] synonym: "(E)-2,3-didehydrotyrosine" EXACT RESID-name [] synonym: "2-amino-3-oxo-butanoic_acid" RELATED Unimod-description [] synonym: "amino-(para-hydroxybenzylidenyl)acetic acid" EXACT RESID-alternate [] synonym: "blue non-fluorescent pocilloporin chromophore" EXACT RESID-alternate [] synonym: "Didehydro" RELATED PSI-MS-label [] synonym: "E-dHTyr" EXACT PSI-MOD-label [] synonym: "MOD_RES (E)-2,3-didehydrotyrosine" EXACT UniProt-feature [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "trans-dehydrotyrosine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 9 H 7 N 1 O 2" xref: MassAvg: "161.16" xref: MassMono: "161.047678" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0001" is_a: MOD:00706 ! dehydrogenated tyrosine [Term] id: MOD:00371 name: bis-L-aspartato tris-L-glutamato L-histidino calcium tetramanganese tetroxide def: "A protein modification that effectively converts two L-aspartic acid residues, three L-glutamic acid residues, an L-histidine residue, and a one-calcium, four-iron, four-oxygen cluster to bis-L-aspartato tris-L-glutamato L-histidino calcium tetramanganese tetroxide." [PubMed:14764885, RESID:AA0366] comment: Cross-link 6. synonym: "4Mn-Ca-4O cluster" EXACT RESID-alternate [] synonym: "bis-L-aspartato tris-L-glutamato L-histidino calcium tetramanganese tetroxide" EXACT RESID-name [] synonym: "mu3-1:2:3kappaO-oxido-mu3-1:3:4kappaO-oxido-mu3-2:3:4kappaO-oxido-mu4-1:2:4:5kappaO-oxido-N1'-histidino-O5-glutamato 2-manganese-O5,O5-glutamato 3-manganese-O4-aspartato 4-manganese-O4-aspartato-O5-glutamato 5-manganese" EXACT RESID-systematic [] synonym: "photosystem II catalytic cluster" EXACT RESID-alternate [] xref: DiffAvg: "317.78" xref: DiffFormula: "C 0 Ca 1 H -6 Mn 4 N 0 O 4" xref: DiffMono: "317.647480" xref: Formula: "C 29 Ca 1 H 32 Mn 4 N 8 O 20" xref: MassAvg: "1072.44" xref: MassMono: "1071.888057" xref: Origin: "D, D, E, E, E, H" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00740 ! manganese containing modified residue is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue is_a: MOD:01482 ! calcium containing modified residue [Term] id: MOD:00372 name: 3'-(3'-L-tyrosinyl)-L-tyrosine def: "A protein modification that effectively cross-links two L-tyrosine residues with a carbon-carbon bond to form 3'-(3'-L-tyrosinyl)-L-tyrosine." [DeltaMass:0, PubMed:14249161, PubMed:637884, PubMed:8702710, PubMed:8937563, RESID:AA0367] comment: Cross-link 2; From DeltaMass: Average Mass: -2. synonym: "(2S,2'S)-3,3'-(6,6'-dihydroxybiphenyl-3,3'-diyl)bis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "3'-(L-tyros-3'-yl)-L-tyrosine" EXACT RESID-name [] synonym: "3,3'-BiTyr (Crosslink)" EXACT DeltaMass-label [] synonym: "6,6'-dihydroxy-(1,1'-biphenyl)-3,3'-bis(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "alpha,alpha'-diamino-6,6'-dihydroxy-(1,1'-biphenyl)-3,3'-dipropanoic acid" EXACT RESID-alternate [] synonym: "bityrosine" EXACT RESID-alternate [] synonym: "o,o-dityrosine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 18 H 16 N 2 O 4" xref: MassAvg: "324.34" xref: MassMono: "324.111007" xref: Origin: "Y, Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00373 name: 3'-(O4'-L-tyrosinyl)-L-tyrosine def: "A protein modification that effectively cross-links L-tyrosine residues with an ether bond to form 3'-(O4'-L-tyrosinyl)-L-tyrosine." [DeltaMass:0, PubMed:12719529, PubMed:7115340, PubMed:8702710, RESID:AA0368] comment: Cross-link 2; secondary to RESID:AA0146; From DeltaMass: Average Mass: -2. synonym: "(2S)-2-amino-3-[3-(4-[(2S)-2-amino-2-carboxyethyl]phenoxy)-4-hydroxyphenyl]propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-[4-(5-[(2S)-2-amino-2-carboxyethyl]-2-hydroxyphenoxy)phenyl]propanoic acid" EXACT RESID-alternate [] synonym: "3'-(L-tyros-O4'-yl)-L-tyrosine" EXACT RESID-name [] synonym: "CROSSLNK Isodityrosine (Tyr-Tyr)" EXACT UniProt-feature [] synonym: "IsodiTyr (Crosslink)" EXACT DeltaMass-label [] synonym: "isodityrosine" EXACT RESID-alternate [] synonym: "O-(5-(2-amino-2-carboxyethyl)-2-hydroxyphenyl)-L-tyrosine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 18 H 16 N 2 O 4" xref: MassAvg: "324.34" xref: MassMono: "324.111007" xref: Origin: "Y, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0155" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00374 name: 3,4-dihydroxy-L-arginine def: "A protein modification that effectively converts an L-arginine residue to 3,4-dihydroxy-L-arginine." [PubMed:10978343, PubMed:12686488, RESID:AA0369, Unimod:425#R, ChEBI:141829] synonym: "(2S,3Xi,4Xi)-2-amino-5-carbamimidamido-3,4-dihydroxypentanoic acid" EXACT RESID-systematic [] synonym: "2-amino-5-guanidino-3,4-dihydroxypentanoic acid" EXACT RESID-alternate [] synonym: "3,4-dihydroxy-L-arginine" EXACT RESID-name [] synonym: "3,4-dihydroxylated L-arginine" EXACT PSI-MOD-alternate [] synonym: "34Hy2Arg" EXACT PSI-MOD-label [] synonym: "beta,gamma-dihydroxyarginine" EXACT RESID-alternate [] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "MOD_RES 3,4-dihydroxyarginine" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 12 N 4 O 3" xref: MassAvg: "188.19" xref: MassMono: "188.090940" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:425" xref: UniProt: "PTM-0022" is_a: MOD:00428 ! dihydroxylated residue is_a: MOD:00682 ! hydroxylated arginine [Term] id: MOD:00375 name: 4,5-dihydroxy-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 4,5-dihydroxy-L-lysine." [PubMed:10978343, PubMed:12686488, RESID:AA0370, Unimod:425#K] synonym: "(2S,4Xi,5Xi)-2,6-diamino-4,5-dihydroxyhexanoic acid" EXACT RESID-systematic [] synonym: "4,5-dihydroxy-L-lysine" EXACT RESID-name [] synonym: "4,5-dihydroxylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "45Hy2Lys" EXACT PSI-MOD-label [] synonym: "alpha,epsilon-diamino-delta,gamma-dihydroxycaproic acid" EXACT RESID-alternate [] synonym: "delta,gamma-dihydroxylysine" EXACT RESID-alternate [] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "MOD_RES 4,5-dihydroxylysine" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 12 N 2 O 3" xref: MassAvg: "160.17" xref: MassMono: "160.084792" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:425" xref: UniProt: "PTM-0036" is_a: MOD:00428 ! dihydroxylated residue is_a: MOD:00681 ! hydroxylated lysine [Term] id: MOD:00376 name: 1'-(phospho-5'-adenosine)-L-histidine def: "A protein modification that effectively crosslinks an L-histidine residue and 5'-phosphoadenosine through a phosphoramide ester bond to form 1'-(phospho-5'-adenosine)-L-histidine." [PubMed:15182206, PubMed:9323207, RESID:AA0371, Unimod:405#H] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-[1-(5'-adenosine phosphono)imidazol-4-yl]propanoic acid" EXACT RESID-systematic [] synonym: "1'-(phospho-5'-adenosine)-L-histidine" EXACT RESID-name [] synonym: "ACT_SITE Tele-AMP-histidine intermediate" EXACT UniProt-feature [] synonym: "AMP binding site" RELATED Unimod-description [] synonym: "L-histidine 5'-adenosine phosphoramidester" EXACT RESID-alternate [] synonym: "L-histidine monoanhydride with 5'-adenylic acid" EXACT RESID-alternate [] synonym: "N(tau)-5'-adenylic-L-histidine" EXACT RESID-alternate [] synonym: "N1'-adenylylated histidine" EXACT RESID-alternate [] synonym: "Phosphoadenosine" RELATED PSI-MS-label [] synonym: "tele-5'-adenylic-L-histidine" EXACT RESID-alternate [] xref: DiffAvg: "329.21" xref: DiffFormula: "C 10 H 12 N 5 O 6 P 1" xref: DiffMono: "329.052520" xref: Formula: "C 16 H 19 N 8 O 7 P 1" xref: MassAvg: "466.35" xref: MassMono: "466.111432" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:405" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01165 ! adenylated residue [Term] id: MOD:00377 name: 1'-(phospho-5'-uridine)-L-histidine def: "A protein modification that effectively crosslinks an L-histidine residue and 5'-phosphouridine through a phosphoramide ester bond to form 1'-(phospho-5'-uridine)-L-histidine." [PubMed:11467524, PubMed:321007, PubMed:380639, PubMed:8794735, RESID:AA0372, Unimod:417#H] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-[1-(5'-uridine phosphono)imidazol-4-yl]propanoic acid" EXACT RESID-systematic [] synonym: "1'-(phospho-5'-uridine)-L-histidine" EXACT RESID-name [] synonym: "ACT_SITE Tele-UMP-histidine intermediate" EXACT UniProt-feature [] synonym: "L-histidine 5'-uridine phosphoramidester" EXACT RESID-alternate [] synonym: "L-histidine monoanhydride with 5'-uridylic acid" EXACT RESID-alternate [] synonym: "N(tau)-5'-uridylic-L-histidine" EXACT RESID-alternate [] synonym: "N1'-uridylylated histidine" EXACT RESID-alternate [] synonym: "PhosphoUridine" RELATED PSI-MS-label [] synonym: "tele-5'-uridylic-L-histidine" EXACT RESID-alternate [] synonym: "uridine phosphodiester" RELATED Unimod-description [] synonym: "MOD_RES O-UMP-histidine" EXACT UniProt-feature [] xref: DiffAvg: "306.17" xref: DiffFormula: "C 9 H 11 N 2 O 8 P 1" xref: DiffMono: "306.025302" xref: Formula: "C 15 H 18 N 5 O 9 P 1" xref: MassAvg: "443.31" xref: MassMono: "443.084214" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:417" xref: UniProt: "PTM-0500" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01166 ! uridylated residue [Term] id: MOD:00378 name: L-aspartyl semialdehyde def: "A protein modification that effectively converts an L-aspartic acid residue to L-aspartyl semialdehyde." [PubMed:1093385, PubMed:14235557, PubMed:15237995, RESID:AA0373, Unimod:447#D] subset: PSI-MOD-slim synonym: "(S)-2-amino-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "aspartyl 4-semialdehyde" EXACT PSI-MOD-alternate [] synonym: "aspartyl aldehyde" EXACT PSI-MOD-alternate [] synonym: "Deoxy" RELATED PSI-MS-label [] synonym: "L-aminosuccinaldehydic acid" EXACT RESID-alternate [] synonym: "L-aminosuccinic acid semialdehyde" EXACT RESID-alternate [] synonym: "L-aspartate-beta-semialdehyde" EXACT RESID-alternate [] synonym: "L-aspartic beta-semialdehyde" EXACT RESID-alternate [] synonym: "L-aspartyl aldehyde" EXACT RESID-name [] synonym: "L-beta-formylalanine" EXACT RESID-alternate [] synonym: "MOD_RES Aspartyl aldehyde" EXACT UniProt-feature [] synonym: "reduction" RELATED Unimod-description [] xref: DiffAvg: "-16.00" xref: DiffFormula: "C 0 H 0 N 0 O -1" xref: DiffMono: "-15.994915" xref: Formula: "C 4 H 5 N 1 O 2" xref: MassAvg: "99.09" xref: MassMono: "99.032028" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:447" xref: UniProt: "PTM-0064" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01161 ! deoxygenated residue [Term] id: MOD:00379 name: L-serine microcin E492 siderophore ester def: "A protein modification that effectively converts an L-serine residue to L-serine microcin E492 siderophore ester." [PubMed:15102848, RESID:AA0374, Unimod:448#C-term] comment: Unimod origin corrected [JSG]. synonym: "L-serine microcin E492 siderophore ester" EXACT RESID-name [] synonym: "Microcin" RELATED PSI-MS-label [] synonym: "microcin E492 siderophore ester from serine" RELATED Unimod-description [] synonym: "MOD_RES Serine microcin E492 siderophore ester" EXACT UniProt-feature [] synonym: "N-[5-(6-O-seryl-beta-glucosyl)-2,3-dihydroxybenzoyl]-O-[N-(2,3-dihydroxybenzoyl)-O-[N-(2,3-dihydroxybenzoyl)seryl]seryl]serine" EXACT RESID-systematic [] xref: DiffAvg: "831.69" xref: DiffFormula: "C 36 H 37 N 3 O 20" xref: DiffMono: "831.197041" xref: Formula: "C 39 H 43 N 4 O 23" xref: MassAvg: "935.78" xref: MassMono: "935.231809" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:448" xref: UniProt: "PTM-0276" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00380 name: L-aspartyl molybdenum bis(molybdopterin guanine dinucleotide) def: "A protein modification that effectively converts an L-aspartic acid residue to L-aspartyl molybdenum bis(molybdopterin guanine dinucleotide)." [PubMed:12910261, PubMed:14725769, RESID:AA0375, Unimod:424#D] synonym: "2-amino-5,6-dimercapto-7-methyl-3,7,8a,9-tetrahydro-8-oxa-1,3,9,10-tetraazaanthracen-4-one guanosine dinucleotide" EXACT RESID-alternate [] synonym: "bis[8-amino-1a,2,4a,5,6,7,10-heptahydro-2-(trihydrogen diphosphate 5'-ester with guanosine)methyl-6-oxo-3,4-disulfanyl-pteridino[6,7-5,6]pyranoato-S3,S4]-aspartyl-molybdenum" EXACT RESID-systematic [] synonym: "L-aspartyl molybdenum bis(molybdopterin guanine dinucleotide)" EXACT RESID-name [] synonym: "molybdenum bis(molybdopterin guanine dinucleotide)" RELATED Unimod-description [] synonym: "MolybdopterinGD" RELATED PSI-MS-label [] synonym: "nitrate reductase A aspartyl Mo-bisMGD cofactor" EXACT RESID-alternate [] synonym: "phosphoric acid 4-(2-amino-4-oxo-3,4,5,6,-tetrahydro-pteridin-6-yl)-2-hydroxy-3,4-dimercapto-but-3-en-yl ester guanylate ester" EXACT RESID-alternate [] xref: DiffAvg: "1572.02" xref: DiffFormula: "C 40 H 47 Mo 1 N 20 O 26 P 4 S 4" xref: DiffMono: "1572.985775" xref: Formula: "C 44 H 52 Mo 1 N 21 O 29 P 4 S 4" xref: MassAvg: "1687.10" xref: MassMono: "1688.012718" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:424" is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue is_a: MOD:01167 ! molybdopterin guanine dinucleotide [Term] id: MOD:00381 name: L-selenocysteinyl tungsten bis(molybdopterin guanine dinucleotide) (Sec) def: "A protein modification that effectively converts an L-selenocysteine residue to L-selenocysteinyl tungsten bis(molybdopterin guanine dinucleotide)." [PubMed:11372198, PubMed:12220497, RESID:AA0376#SEC] xref: DiffAvg: "1691.97" xref: DiffFormula: "C 40 H 47 N 20 O 26 P 4 S 5 Se 0 W 1" xref: DiffMono: "1691.003369" xref: Formula: "C 43 H 52 N 21 O 27 P 4 S 5 Se 1 W 1" xref: MassAvg: "1842.02" xref: MassMono: "1841.957004" xref: Origin: "U" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00746 ! tungsten containing modified residue is_a: MOD:00748 ! pterin modified residue is_a: MOD:02073 ! metal or metal cluster coordinated L-selenocysteine residue [Term] id: MOD:00382 name: 3-(2-methylthio)ethyl-6-(4-hydroxybenzylidene)-5-iminopiperazin-2-one def: "A protein modification that effectively crosslinks an L-methionyl-L-tyrosine dipeptide to form 3-(2-methylthio)ethyl-6-(4-hydroxybenzylidene)-5-iminopiperazin-2-one." [PubMed:10852900, PubMed:11259412, PubMed:15491166, RESID:AA0377] comment: carboxamidine; cross-link 1. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "3-(2-methylsulfanyl)ethyl-6-(4-hydroxybenzylidene)-5-iminopiperazin-2-one" EXACT RESID-systematic [] synonym: "3-(2-methylthio)ethyl-6-(4-hydroxybenzylidene)-5-amino-3,6-didehydropyrazin-2-ol" EXACT RESID-alternate [] synonym: "3-(2-methylthio)ethyl-6-(4-hydroxybenzylidene)-5-iminopiperazin-2-one" EXACT RESID-name [] synonym: "GFP-like chromoprotein asFP595 chromophore" EXACT RESID-alternate [] synonym: "L-methionyl-L-tyrosyl-2-keto-5-iminopiperazine" EXACT RESID-alternate [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 14 H 15 N 2 O 2 S 1" xref: MassAvg: "275.35" xref: MassMono: "275.085424" xref: Origin: "M, Y" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:02052 ! crosslinked L-methionine residue is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:00383 name: 2-imino-glutamic acid 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-glutamic acid residue and a glycine residue to form 2-imino-glutamic acid 5-imidazolinone glycine." [PubMed:11682051, RESID:AA0378] comment: Cross-link 2; carboxamidine; cross-link 1; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "2,N-didehydroglutamyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "2-(3-carboxy-1-iminopropyl)-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "2-imino-glutamic acid 5-imidazolinone glycine" EXACT RESID-name [] synonym: "2-imino-glutamyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "4-[1-(carboxymethyl)-5-oxo-4,5-dihydro-1H-imidazol-2-yl]-4-iminobutanoic acid" EXACT RESID-systematic [] synonym: "[2-(3-carboxy-1-iminopropyl)-5-oxo-4,5-dihydro-imidazol-1-yl]-acetic acid" EXACT RESID-alternate [] synonym: "CROSSLNK 2-iminomethyl-5-imidazolinone (Glu-Gly)" EXACT UniProt-feature [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "C 7 H 6 N 2 O 3" xref: MassAvg: "166.14" xref: MassMono: "166.037842" xref: Origin: "E, G" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0014" is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) [Term] id: MOD:00384 name: 2-imino-methionine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-methionine residue and a glycine residue to form 2-imino-methionine 5-imidazolinone glycine." [PubMed:10852900, PubMed:12185250, PubMed:12909624, PubMed:15542608, RESID:AA0379] comment: Cross-link 2; carboxamidine; cross-link 1; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "(2-[1-imino-3-(methylsulfanyl)propyl]-5-oxo-4,5-dihydro-imidazol-1-yl)acetic acid" EXACT RESID-alternate [] synonym: "(2-[3-(methylsulfanyl)propanimidoyl]-5-oxo-4,5-dihydro-1H-imidazol-1-yl)acetic acid" EXACT RESID-systematic [] synonym: "2,N-didehydromethionyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "2-[1-imino-3-(methylsulfanyl)propyl]-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "2-imino-methionine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "2-imino-methionyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "CROSSLNK 2-iminomethyl-5-imidazolinone (Met-Gly)" EXACT UniProt-feature [] synonym: "GFP-like chromoprotein asFP595 chromophore" EXACT RESID-alternate [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "red fluorescent protein eqFP611 chromophore" EXACT RESID-alternate [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 7 H 8 N 2 O 1 S 1" xref: MassAvg: "168.21" xref: MassMono: "168.035734" xref: Origin: "G, M" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0015" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02052 ! crosslinked L-methionine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) [Term] id: MOD:00385 name: L-asparagine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-asparagine residue and a glycine residue to form L-asparagine 5-imidazolinone glycine." [PubMed:10504696, RESID:AA0380] comment: Cross-link 2; carboxamidine; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "(2-[(1S)-1,3-diamino-3-oxopropyl]-5-oxo-4,5-dihydro-1H-imidazol-1-yl)acetic acid" EXACT RESID-systematic [] synonym: "2-[(S)-1,3-diamino-3-oxopropyl]-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "[2-(1,3-diamino-3-oxopropyl)-5-oxo-4,5-dihydro-imidazol-1-yl]-acetic acid" EXACT RESID-alternate [] synonym: "asparaginyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "CROSSLNK 5-imidazolinone (Asn-Gly)" EXACT UniProt-feature [] synonym: "L-asparagine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "Zoanthus sp. fluorescent protein FP506 chromophore" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 7 N 3 O 2" xref: MassAvg: "153.14" xref: MassMono: "153.053826" xref: Origin: "G, N" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0046" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00386 name: L-lysine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-lysine residue and a glycine residue to form L-lysine 5-imidazolinone glycine." [PubMed:10504696, RESID:AA0381] comment: Cross-link 2; carboxamidine; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "(2-[(1S)-1,5-diaminopentyl]-5-oxo-4,5-dihydro-1H-imidazol-1-yl)acetic acid" EXACT RESID-systematic [] synonym: "2-[(S)-1,5-diaminopentanyl]-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "[2-(1,5-diaminopentanyl)-5-oxo-4,5-dihydro-imidazol-1-yl]-acetic acid" EXACT RESID-alternate [] synonym: "Anemonia majano fluorescent protein FP486 chromophore" EXACT RESID-alternate [] synonym: "CROSSLNK 5-imidazolinone (Lys-Gly)" EXACT UniProt-feature [] synonym: "L-lysine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "lysyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 8 H 13 N 3 O 1" xref: MassAvg: "167.21" xref: MassMono: "167.105862" xref: Origin: "G, K" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0048" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00387 name: 2-tetrahydropyridinyl-5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-lysine residue and a glycine residue to form 2-tetrahydropyridinyl-5-imidazolinone glycine." [PubMed:10504696, PubMed:15628861, RESID:AA0382] comment: Cross-link 2; carboxamidine; incidental to RESID:AA0183; incidental to RESID:AA0365. synonym: "2-(3,4,5,6-tetrahydropyridin-2-yl)-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "2-(tetrahydropyrid-2-yl)-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "2-tetrahydropyridinyl-5-imidazolinone glycine" EXACT RESID-name [] synonym: "[5-oxo-2-(3,4,5,6-tetrahydropyridin-2-yl)-4,5-dihydro-1H-imidazol-1-yl]acetic acid" EXACT RESID-alternate [] synonym: "[5-oxo-2-(3,4,5,6-tetrahydropyridin-2-yl)-4,5-dihydro-1H-imidazol-1-yl]acetic acid" EXACT RESID-systematic [] synonym: "CROSSLNK 2-tetrahydro-2-pyridyl-5-imidazolinone (Lys-Gly)" EXACT UniProt-feature [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "Zoanthus sp. fluorescent protein zFP538 chromophore" EXACT RESID-alternate [] xref: DiffAvg: "-37.06" xref: DiffFormula: "C 0 H -7 N -1 O -1" xref: DiffMono: "-37.052764" xref: Formula: "C 8 H 9 N 2 O 1" xref: MassAvg: "149.17" xref: MassMono: "149.071488" xref: Origin: "G, K" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0018" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) [Term] id: MOD:00388 name: L-alanyl-pentaglycyl-murein peptidoglycan def: "A protein modification that effectively attaches an L-alanine residue to murein peptidoglycan by a pentaglycine linker peptide." [PubMed:8163519, RESID:AA0383] synonym: "(2R,6S)-2-(N-mureinyl-(R)-alanyl-(S)-isoglutamyl)amino-6-(alanyl-pentaglycyl)amino-pimeloyl-(S)-alanyl-(S)-alanine" EXACT RESID-alternate [] synonym: "L-alanyl-pentaglycyl-murein peptidoglycan" EXACT RESID-name [] synonym: "MOD_RES Pentaglycyl murein peptidoglycan amidated alanine" EXACT UniProt-feature [] xref: Origin: "A" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0245" is_a: MOD:00901 ! modified L-alanine residue is_a: MOD:01159 ! peptidoglycanated residue [Term] id: MOD:00389 name: N-formyl-L-proline def: "A protein modification that effectively converts an L-proline residue to N-formyl-L-proline." [PubMed:12051774, PubMed:5464655, RESID:AA0384, Unimod:122#N-term] comment: CAUTION - observations of this modification can be attributed to unintended artifactual production, or to spurious peptide MS identification. This modification is probably not a natural post-translational modification [JSG]. synonym: "(2S)-1-formylpyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "1-formyl-2-pyrrolidinecarboxylic acid" EXACT RESID-alternate [] synonym: "1-formylproline" EXACT RESID-alternate [] synonym: "N-formyl-L-proline" EXACT RESID-name [] synonym: "N-formylated L-proline" EXACT PSI-MOD-alternate [] synonym: "NFoPro" EXACT PSI-MOD-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 6 H 8 N 1 O 2" xref: MassAvg: "126.14" xref: MassMono: "126.055504" xref: Origin: "P" xref: Source: "hypothetical" xref: TermSpec: "N-term" xref: Unimod: "Unimod:122" is_a: MOD:00409 ! N-formylated residue is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:00390 name: O-decanoyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-decanoyl-L-serine." [PubMed:12630926, RESID:AA0385, Unimod:449#S] synonym: "(2S)-2-amino-3-(decanoyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "Decanoyl" RELATED PSI-MS-label [] synonym: "L-serine decanoate ester" EXACT RESID-alternate [] synonym: "lipid" RELATED Unimod-description [] synonym: "LIPID O-decanoyl serine" EXACT UniProt-feature [] synonym: "O-decanoyl-L-serine" EXACT RESID-name [] synonym: "O-decanoylated L-serine" EXACT PSI-MOD-alternate [] synonym: "O3-decanoyl-L-serine" EXACT RESID-alternate [] synonym: "ODecSer" EXACT PSI-MOD-label [] xref: DiffAvg: "154.25" xref: DiffFormula: "C 10 H 18 N 0 O 1" xref: DiffMono: "154.135765" xref: Formula: "C 13 H 23 N 1 O 3" xref: MassAvg: "241.33" xref: MassMono: "241.167794" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:449" xref: UniProt: "PTM-0234" is_a: MOD:00668 ! O-decanoylated residue is_a: MOD:02003 ! O3-acylated L-serine [Term] id: MOD:00391 name: O-octanoyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-octanoyl-L-threonine." [PubMed:11546772, PubMed:12716131, RESID:AA0386, Unimod:426#T] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(octanoyloxy)butanoic acid" EXACT RESID-systematic [] synonym: "L-threonine octanoate ester" EXACT RESID-alternate [] synonym: "LIPID O-octanoyl threonine" EXACT UniProt-feature [] synonym: "O-octanoyl-L-threonine" EXACT RESID-name [] synonym: "O-octanoylated L-threonine" EXACT PSI-MOD-alternate [] synonym: "O3-octanoyl-L-threonine" EXACT RESID-alternate [] synonym: "Octanoyl" RELATED PSI-MS-label [] synonym: "octanoyl" RELATED Unimod-description [] synonym: "OOctThr" EXACT PSI-MOD-label [] xref: DiffAvg: "126.20" xref: DiffFormula: "C 8 H 14 N 0 O 1" xref: DiffMono: "126.104465" xref: Formula: "C 12 H 21 N 1 O 3" xref: MassAvg: "227.30" xref: MassMono: "227.152144" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:426" xref: UniProt: "PTM-0240" is_a: MOD:00669 ! O-octanoylated residue is_a: MOD:02004 ! O3-acylated L-threonine [Term] id: MOD:00392 name: O-decanoyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-decanoyl-L-threonine." [PubMed:11546772, RESID:AA0387, Unimod:449#T] synonym: "(2S)-2-amino-3-(decanoyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "Decanoyl" RELATED PSI-MS-label [] synonym: "L-threonine decanoate ester" EXACT RESID-alternate [] synonym: "lipid" RELATED Unimod-description [] synonym: "LIPID O-decanoyl threonine" EXACT UniProt-feature [] synonym: "O-decanoyl-L-threonine" EXACT RESID-name [] synonym: "O-decanoylated L-threonine" EXACT PSI-MOD-alternate [] synonym: "O3-decanoyl-L-threonine" EXACT RESID-alternate [] synonym: "ODecThr" EXACT PSI-MOD-label [] xref: DiffAvg: "154.25" xref: DiffFormula: "C 10 H 18 N 0 O 1" xref: DiffMono: "154.135765" xref: Formula: "C 14 H 25 N 1 O 3" xref: MassAvg: "255.36" xref: MassMono: "255.183444" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:449" xref: UniProt: "PTM-0235" is_a: MOD:00668 ! O-decanoylated residue is_a: MOD:02004 ! O3-acylated L-threonine [Term] id: MOD:00393 name: O-methylated residue def: "A protein modification that effectively replaces a hydroxyl group hydrogen with a methyl group to produce either an ether from an alcohol or an ester from an acid." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OMeRes" EXACT PSI-MOD-label [] is_a: MOD:00427 ! methylated residue [Term] id: MOD:00394 name: monoacetylated residue def: "A protein modification that effectively replaces one hydrogen atom with one acetyl group." [DeltaMass:0, PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, Unimod:1] comment: Amino hydrogens are replaced to produce amides; hydroxyl hydrogens are replaced to produce esters; and hydrosulfanyl (thiol) hydrogens are replaced to produce sulfanyl esters (thiol esters). From DeltaMass: Average Mass: 42 subset: PSI-MOD-slim synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "Acetylation" RELATED Unimod-description [] synonym: "Acetylation (N terminus, N epsilon of Lysine, O of Serine) (Ac)" EXACT DeltaMass-label [] synonym: "Ac1Res" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 O 1" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:1" is_a: MOD:02078 ! acetylated residue [Term] id: MOD:00395 name: thioester crosslinked residues def: "A protein modification that crosslinks two residues by formation of a thioester bond between a cysteine thiol and either an alpha-carbonyl, as in S-(L-methionyl-L-cysteine), or a sidechain carbonyl, as in S-(L-isoglutamyl)-L-cysteine." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00033 ! crosslinked residues is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:00396 name: O-glycosylated residue def: "A protein modification that effectively replaces a residue hydrogen atom on an oxygen with a carbohydrate-like group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OGlycoRes" EXACT PSI-MOD-label [] is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00397 name: iodoacetamide derivatized residue def: "A protein modification that is produced by reaction with iodoacetamide, usually replacement of a reactive hydrogen with a methylcarboxamido group." [PubMed:11327326, PubMed:11510821, PubMed:12422359, Unimod:4] subset: PSI-MOD-slim synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1" xref: DiffMono: "57.021464" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:4" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00398 name: carbamoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a carbamoyl (carboxamido) group. Replacement of an amino hydrogen produces a ureido group." [DeltaMass:56, PubMed:10978403, PubMed:12203680, Unimod:5] comment: This modification can be produced by hydrogen cyanate, either used as a reagent or as released by urea degradation in solution [JSG]. subset: PSI-MOD-slim synonym: "Carbamyl" RELATED Unimod-interim [] synonym: "Carbamylation" EXACT DeltaMass-label [] synonym: "Carbamylation" RELATED Unimod-description [] xref: DiffAvg: "43.02" xref: DiffFormula: "C 1 H 1 N 1 O 1" xref: DiffMono: "43.005814" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:5" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00399 name: iodoacetic acid derivatized residue def: "A protein modification that is produced by reaction with iodoacetic acid, usually replacement of a reactive hydrogen with a methylcarboxy group." [DeltaMass:64, Unimod:6] comment: From DeltaMass: Average Mass: 58 Abbreviation:CmC Average Mass Change:58 Notes:Cysteine reacts with iodoacetic acid to produce carboxymethyl cysteine. subset: PSI-MOD-slim synonym: "Carboxymethyl" RELATED PSI-MS-label [] synonym: "Carboxymethyl (on Cysteine)" EXACT DeltaMass-label [] synonym: "Iodoacetic acid derivative" RELATED Unimod-description [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 O 2" xref: DiffMono: "58.005479" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:6" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00400 name: deamidated residue def: "A protein modification that effectively replaces a carboxamido group with a carboxyl group, with both a gain of oxygen and loss of a nitrogen and a hydrogen." [DeltaMass:32, OMSSA:4, Unimod:7] comment: From DeltaMass: References:Vish Katta. subset: PSI-MOD-slim synonym: "Deamidated" RELATED PSI-MS-label [] synonym: "Deamidation" RELATED Unimod-description [] synonym: "Deamidation of Asparagine and Glutamine to Aspartate and Glutamate" EXACT DeltaMass-label [] synonym: "deamidationkq" EXACT OMSSA-label [] synonym: "dNRes" EXACT PSI-MOD-label [] xref: DiffAvg: "0.98" xref: DiffFormula: "H -1 N -1 O 1" xref: DiffMono: "0.984016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:7" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00401 name: Gygi ICAT(TM) d0 modified cysteine def: "A protein modification that is produced by formation of an adduct of a cysteine residue with the Gygi isotope-coded affinity tag d0 reagent." [PubMed:10504701, Unimod:8#C] synonym: "Gygi ICAT(TM) d0" RELATED Unimod-description [] synonym: "ICAT-G" RELATED PSI-MS-label [] xref: DiffAvg: "486.63" xref: DiffFormula: "C 22 H 38 N 4 O 6 S 1" xref: DiffMono: "486.251206" xref: Formula: "C 25 H 43 N 5 O 7 S 2" xref: MassAvg: "589.77" xref: MassMono: "589.260391" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:8" is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:01820 ! isotope tagged sufhydryl reagent modified cysteine [Term] id: MOD:00402 name: Gygi ICAT(TM) d8 modified cysteine def: "A protein modification that is produced by formation of an adduct of a cysteine residue with the Gygi isotope-coded affinity tag d8 reagent." [PubMed:10504701, Unimod:9#C] synonym: "Gygi ICAT(TM) d8" RELATED Unimod-description [] synonym: "ICAT-G:2H(8)" RELATED PSI-MS-label [] xref: DiffAvg: "494.30" xref: DiffFormula: "C 22 (1)H 30 (2)H 8 N 4 O 6 S 1" xref: DiffMono: "494.301420" xref: Formula: "C 25 (1)H 35 (2)H 8 N 5 O 7 S 2" xref: MassAvg: "597.31" xref: MassMono: "597.310605" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:9" is_a: MOD:01431 ! (2)H deuterium tagged reagent is_a: MOD:01820 ! isotope tagged sufhydryl reagent modified cysteine [Term] id: MOD:00403 name: homoserine def: "A protein modification that effectively converts an L-methionine residue to homoserine." [DeltaMass:113, OMSSA:56, Unimod:10#M] comment: Usually formed from methionine by reaction with cyanogen bromide, CNBr, which cleaves the peptide at the methionine carboxyl group and the following residue amino group. subset: PSI-MOD-slim synonym: "ctermpephsem" EXACT OMSSA-label [] synonym: "Homoserine" RELATED Unimod-description [] synonym: "Homoserine formed from Met by CNBr treatment" EXACT DeltaMass-label [] synonym: "Met->Hse" RELATED PSI-MS-label [] xref: DiffAvg: "-30.09" xref: DiffFormula: "C -1 H -2 O 1 S -1" xref: DiffMono: "-29.992806" xref: Formula: "C 4 H 7 N 1 O 2" xref: MassAvg: "101.10" xref: MassMono: "101.047678" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:10" is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00404 name: homoserine lactone def: "A protein modification that effectively converts an L-methionine residue to homoserine lactone." [DeltaMass:90, OMSSA:57, Unimod:11#M] comment: Usually formed from methionine by reaction with cyanogen bromide, CNBr, which cleaves the peptide at the methionine carboxyl group. Under acid conditions the homoserine dehydrates to form the cyclic lactone. subset: PSI-MOD-slim synonym: "ctermpephselactm" EXACT OMSSA-label [] synonym: "Homoserine lactone" RELATED Unimod-description [] synonym: "Met->Hsl" RELATED Unimod-interim [] xref: DiffAvg: "-48.10" xref: DiffFormula: "C -1 H -4 S -1" xref: DiffMono: "-48.003371" xref: Formula: "C 4 H 5 N 1 O 1" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:11" is_a: MOD:00601 ! cyclized residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00405 name: Applied Biosystems original ICAT(TM) d8 modified cysteine def: "A protein modification that is produced by formation of an adduct of a cysteine residue with the Applied Biosystems original isotope-coded affinity tag d8 reagent." [Unimod:12#C] subset: PSI-MOD-slim synonym: "Applied Biosystems original ICAT(TM) d8" RELATED Unimod-description [] synonym: "ICAT-D:2H(8)" RELATED PSI-MS-label [] xref: DiffAvg: "450.28" xref: DiffFormula: "C 20 (1)H 26 (2)H 8 N 4 O 5 S 1" xref: DiffMono: "450.275205" xref: Formula: "C 23 (1)H 31 (2)H 8 N 5 O 6 S 2" xref: MassAvg: "553.28" xref: MassMono: "553.284390" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:12" is_a: MOD:01431 ! (2)H deuterium tagged reagent is_a: MOD:01820 ! isotope tagged sufhydryl reagent modified cysteine [Term] id: MOD:00406 name: Applied Biosystems original ICAT(TM) d0 modified cysteine def: "A protein modification that is produced by formation of an adduct of a cysteine residue with the Applied Biosystems original isotope-coded affinity tag d0 reagent." [Unimod:13#C] subset: PSI-MOD-slim synonym: "Applied Biosystems original ICAT(TM) d0" RELATED Unimod-description [] synonym: "ICAT-D" RELATED PSI-MS-label [] xref: DiffAvg: "442.22" xref: DiffFormula: "C 20 (1)H 34 N 4 O 5 S 1" xref: DiffMono: "442.224991" xref: Formula: "C 23 (1)H 39 N 5 O 6 S 2" xref: MassAvg: "545.23" xref: MassMono: "545.234176" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:13" is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:01820 ! isotope tagged sufhydryl reagent modified cysteine [Term] id: MOD:00407 name: residue methyl ester def: "A protein modification that effectively replaces a carboxyl group with a carboxy methyl ester group. OBSOLETE because Unimod:14 merged with entry 34, remap to MOD:00599." [PubMed:18688235] synonym: "ResOMe" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2" xref: DiffMono: "14.015650" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:00599" is_obsolete: true [Term] id: MOD:00408 name: mono N-acetylated residue def: "A protein modification that effectively replaces a residue amino or imino hydrogen with an acetyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "N-Acetyl" EXACT PSI-MOD-alternate [] synonym: "N-Acetylation" EXACT PSI-MOD-alternate [] synonym: "NAcRes" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 O 1" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00394 ! monoacetylated residue is_a: MOD:00670 ! N-acylated residue [Term] id: MOD:00409 name: N-formylated residue def: "A protein modification that effectively replaces a residue amino group with a formamido group." [OMSSA:44, OMSSA:82] subset: PSI-MOD-slim synonym: "Formyl" RELATED PSI-MS-label [] synonym: "NFoRes" EXACT PSI-MOD-label [] synonym: "ntermformyl" EXACT OMSSA-label [] synonym: "ntermpepformyl" EXACT OMSSA-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 O 1" xref: DiffMono: "27.994915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00493 ! formylated residue is_a: MOD:00670 ! N-acylated residue [Term] id: MOD:00410 name: S-(N-isopropylcarboxamidomethyl)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(N-isopropylcarboxamidomethyl)-L-cysteine." [OMSSA:84, PubMed:11465505, PubMed:8465942, Unimod:17#C] synonym: "N-isopropylcarboxamidomethyl" RELATED Unimod-description [] synonym: "NIPCAM" RELATED PSI-MS-label [] synonym: "nipcam" EXACT OMSSA-label [] xref: DiffAvg: "99.13" xref: DiffFormula: "C 5 H 9 N 1 O 1 S 0" xref: DiffMono: "99.068414" xref: Formula: "C 8 H 14 N 2 O 2 S 1" xref: MassAvg: "202.27" xref: MassMono: "202.077599" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:17" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00411 name: O18 label def: "modification from Unimod Isotopic label. OBSOLETE because Unimod:18 is now merged with entry 258 remap to MOD:00581 'single 018 label'" [PubMed:18688235] comment: A modification from Unimod:18 xref: DiffAvg: "2.00" xref: DiffFormula: "(16)O -1 (18)O 1" xref: DiffMono: "2.004246" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00581" is_obsolete: true [Term] id: MOD:00412 name: oxidation def: "modification from Unimod artifact. OBSOLETE because Unimod entry 19 is now merged with Unimod 35 remap to MOD:00425 'monohydroxylated residue'." [PubMed:18688235] xref: DiffAvg: "16.00" xref: DiffFormula: "O 1" xref: DiffMono: "15.994915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:00425" is_obsolete: true [Term] id: MOD:00413 name: biotinyl-iodoacetamidyl-3,6-dioxaoctanediamine derivatized cysteine def: "A protein modification that is produced by reaction of a cysteine residue with biotinyl-iodoacetamidyl-3,6-dioxaoctanediamine." [Unimod:20#C] synonym: "Biotinyl-iodoacetamidyl-3,6-dioxaoctanediamine" RELATED Unimod-description [] synonym: "PEO-Iodoacetyl-LC-Biotin" RELATED Unimod-interim [] xref: DiffAvg: "414.52" xref: DiffFormula: "C 18 H 30 N 4 O 5 S 1" xref: DiffMono: "414.193691" xref: Formula: "C 21 H 35 N 5 O 6 S 2" xref: MassAvg: "517.66" xref: MassMono: "517.202876" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:20" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00414 name: monomethylated L-arginine def: "A protein modification that effectively replaces one hydrogen atom of an L-arginine residue with one methyl group." [DeltaMass:215, OMSSA:77, Unimod:34#R] comment: From DeltaMass: formula incorrect, N and O reversed subset: PSI-MOD-slim synonym: "Me1Arg" EXACT PSI-MOD-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methylr" EXACT OMSSA-label [] synonym: "N-methyl Arginyl" EXACT DeltaMass-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 14 N 4 O 1" xref: MassAvg: "170.22" xref: MassMono: "170.116761" xref: Origin: "R" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:34" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00658 ! methylated arginine [Term] id: MOD:00415 name: phosphorylation without neutral loss def: "modification from Unimod - OBSOLETE because Unimod entry 22 is now merged with entry 21 remap to MOD:00696 'phosphorylated residue'." [PubMed:18688235] xref: DiffAvg: "79.98" xref: DiffFormula: "H 1 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00696" is_obsolete: true [Term] id: MOD:00416 name: phosphorylation of an hydroxyl amino acid with prompt loss of phosphate def: "A change resulting in an alteration of the measured molecular mass of a peptide or protein hydroxyl amino acid phosphorylated promptly followed by secondary loss of a neutral trihydrogen phosphate molecular fragment." [Unimod:23] comment: O4-phosphotyrosine does not lose phosphate by this mechanism. Unimod does not provide a citation for this particular modification [JSG]. subset: PSI-MOD-slim synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] xref: DiffAvg: "-18.02" xref: DiffFormula: "H -2 O -1" xref: DiffMono: "-18.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:23" is_a: MOD:00432 ! modified residue with neutral loss of phosphate is_a: MOD:00704 ! dehydrated residue [Term] id: MOD:00417 name: S-carboxamidoethyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-carboxamidoethyl-L-cysteine." [DeltaMass:72, OMSSA:5, PubMed:1481983, Unimod:24#C] comment: From DeltaMass: References: Anal. Biochem. Vol 216 No. 1 p131 (citation not found) Notes: Residual acrylamide in SDS gels can label free cysteines to produce propionamido-Cys (also known as PAM-Cys) synonym: "Acrylamide adduct" RELATED Unimod-description [] synonym: "PAM-Cys" EXACT DeltaMass-label [] synonym: "Propionamide" RELATED PSI-MS-label [] synonym: "Propionamide or Acrylamide adduct" EXACT DeltaMass-label [] synonym: "propionamidec" EXACT OMSSA-label [] synonym: "S-(3-amino-3-oxopropyl)cysteine" EXACT PSI-MOD-alternate [] synonym: "S-carbamoylethyl-L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-propanamide-L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "71.08" xref: DiffFormula: "C 3 H 5 N 1 O 1 S 0" xref: DiffMono: "71.037114" xref: Formula: "C 6 H 10 N 2 O 2 S 1" xref: MassAvg: "174.22" xref: MassMono: "174.046299" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:24" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00418 name: pyridylacetylated residue def: "A protein modification that effectively replaces a hydrogen atom with an (pyridin-3-yl)acetyl group." [PubMed:9276974, Unimod:25] comment: Produced by reaction with N-[(pyrid-3-yl)acetyl]oxy-succinimide [JSG]. synonym: "Pyridylacetyl" RELATED PSI-MS-label [] synonym: "pyridylacetyl" RELATED Unimod-description [] xref: DiffAvg: "119.12" xref: DiffFormula: "C 7 H 5 N 1 O 1" xref: DiffMono: "119.037114" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:25" is_a: MOD:00649 ! acylated residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00419 name: (R)-5-oxo-1,4-tetrahydrothiazine-3-carboxylic acid def: "A protein modification that effectively converts an L-cysteine residue to (R)-5-oxo-1,4-tetrahydrothiazine-3-carboxylic acid." [DeltaMass:336, PubMed:12643538, Unimod:26#C] comment: From DeltaMass: A secondary modification affecting peptides with S-carbamoylmethyl-L-cysteine (CamC) at the N-terminus. These exist in enzymatic digests of proteins that have been S-alkylated with iodoacetamide. Cyclization of N-terminal CamC gives a residue of (R)-5-oxoperhydro-1,4-thiazine-3-carboxylic acid. Peptides in which this has occurred become more hydrophobic, and lose 17 Da from the N-terminal residue. synonym: "(R)-5-oxoperhydro-1,4-thiazine-3-carboxylic acid" EXACT DeltaMass-label [] synonym: "5-oxothiomorpholine-3-carboxylic acid" EXACT PSI-MOD-alternate [] synonym: "Otc" EXACT DeltaMass-label [] synonym: "Pyro-carbamidomethyl" RELATED Unimod-interim [] synonym: "S-carbamoylmethylcysteine cyclization (N-terminus)" EXACT DeltaMass-label [] synonym: "S-carbamoylmethylcysteine cyclization (N-terminus)" RELATED Unimod-description [] xref: DiffAvg: "40.02" xref: DiffFormula: "C 2 H 0 N 0 O 1 S 0" xref: DiffMono: "39.994915" xref: Formula: "C 5 H 6 N 1 O 2 S 1" xref: MassAvg: "144.17" xref: MassMono: "144.011924" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:26" is_a: MOD:00601 ! cyclized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00420 name: 2-pyrrolidone-5-carboxylic acid (Glu) def: "A protein modification that effectively converts an L-glutamic acid residue to 2-pyrrolidone-5-carboxylic acid." [DeltaMass:16, OMSSA:109, PubMed:10214721, PubMed:1836357, PubMed:3473473, PubMed:8382902, RESID:AA0031#GLU, Unimod:27#E] comment: From DeltaMass: References: The conversion of glutamic acid to pyroglutamic was reported for the beta-amyloid protein. Miller et al. Arch. Biochem. Biophy. (1993) 301, 41-52 [DeltaMass]. The modification in amyloid protein is probably an artifact of treatment with strong acid under anhydrous conditions. Peptides with N-terminal glutamic acid isolated from single cells of Aplysia neurons show partial conversion to pyroglutamic acid, possibly dependent on a temperature sensitive factor [JSG]. synonym: "(2S)-5-oxo-2-pyrrolidinecarboxylic acid" EXACT RESID-systematic [] synonym: "2-oxopyrrolidine-5-carboxylic acid" EXACT RESID-alternate [] synonym: "2-pyrrolidone-5-carboxylic acid" EXACT RESID-name [] synonym: "5-oxoproline" EXACT RESID-alternate [] synonym: "5-oxopyrrolidine-2-carboxylic acid" EXACT RESID-alternate [] synonym: "5-pyrrolidone-2-carboxylic acid" EXACT RESID-alternate [] synonym: "Glu->pyro-Glu" RELATED PSI-MS-label [] synonym: "MOD_RES Pyrrolidone carboxylic acid (Glu)" EXACT UniProt-feature [] synonym: "ntermpeppyroe" EXACT OMSSA-label [] synonym: "PCA" EXACT RESID-alternate [] synonym: "PyrGlu(Glu)" EXACT PSI-MOD-label [] synonym: "Pyro-glu from E" RELATED Unimod-description [] synonym: "pyroglutamic acid" EXACT RESID-alternate [] synonym: "Pyroglutamic Acid formed from Glutamic Acid" EXACT DeltaMass-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 6 N 1 O 2" xref: MassAvg: "112.11" xref: MassMono: "112.039853" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:27" xref: UniProt: "PTM-0262" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01048 ! 2-pyrrolidone-5-carboxylic acid [Term] id: MOD:00421 name: C-glycosylated residue def: "A protein modification that effectively replaces a residue hydrogen atom on a carbon with a carbohydrate-like group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "CGlycoRes" EXACT PSI-MOD-label [] is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00422 name: alpha-amino morpholine-2-acetylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a morpholine-2-acetyl group." [PubMed:10446193, Unimod:29#N-term] comment: The Unimod name "N-Succinimidyl-3-morpholine acetate" appears to have been a typographical error [JSG]. synonym: "N-Succinimidyl-2-morpholine acetate" RELATED Unimod-description [] synonym: "N-succinimidylmorpholine-2-acetate alpha-amino derivative" EXACT PSI-MOD-alternate [] synonym: "SMA" RELATED PSI-MS-label [] xref: DiffAvg: "127.14" xref: DiffFormula: "C 6 H 9 N 1 O 2" xref: DiffMono: "127.063329" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:29" is_a: MOD:01696 ! alpha-amino acylated residue is_a: MOD:01813 ! morpholine-2-acetylated residue [Term] id: MOD:00423 name: monosodium salt def: "A protein modification that effectively substitutes one sodium atom for one hydrogen atom." [DeltaMass:0, Unimod:30] subset: PSI-MOD-slim synonym: "Cation:Na" RELATED PSI-MS-label [] synonym: "Na1Res" EXACT PSI-MOD-label [] synonym: "Sodium" EXACT DeltaMass-label [] synonym: "Sodium adduct" RELATED Unimod-description [] xref: DiffAvg: "21.98" xref: DiffFormula: "H -1 Na 1" xref: DiffMono: "21.981944" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "none" xref: Unimod: "Unimod:30" is_a: MOD:00747 ! sodium containing modified residue [Term] id: MOD:00424 name: S-pyridylethyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-pyridylethyl-L-cysteine." [DeltaMass:253, OMSSA:112, PubMed:11760118, PubMed:626389, PubMed:8297018, PubMed:8783016, Unimod:31#C] comment: From DeltaMass: Formula:C10H12O2N1S1 (formula incorrect, N and O reversed) Monoisotopic Mass Change:208.067 Average Mass Change:208.286 (mass incorrect, aggregate not delta) References:PE Sciex synonym: "PECys" EXACT DeltaMass-label [] synonym: "Pyridylethyl" RELATED PSI-MS-label [] synonym: "Pyridylethyl Cystenyl" EXACT DeltaMass-label [] synonym: "S-pyridinylethyl-L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-pyridylethylation" RELATED Unimod-description [] synonym: "spyridylethylc" EXACT OMSSA-label [] synonym: "vinylpyridine derivatized cysteine residue" EXACT PSI-MOD-alternate [] xref: DiffAvg: "105.14" xref: DiffFormula: "C 7 H 7 N 1" xref: DiffMono: "105.057849" xref: Formula: "C 10 H 12 N 2 O 1 S 1" xref: MassAvg: "208.28" xref: MassMono: "208.067034" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:31" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00425 name: monohydroxylated residue def: "A protein modification that effectively replaces one hydrogen atom with a hydroxyl group." [Unimod:35] subset: PSI-MOD-slim synonym: "Hy1Res" EXACT PSI-MOD-label [] synonym: "Oxidation" RELATED Unimod-interim [] synonym: "Oxidation or Hydroxylation" RELATED Unimod-description [] xref: DiffAvg: "16.00" xref: DiffFormula: "O 1" xref: DiffMono: "15.994915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:35" is_a: MOD:00677 ! hydroxylated residue [Term] id: MOD:00426 name: S-glycosylated residue def: "A protein modification that effectively replaces a residue hydrogen atom on a sulfur with a carbohydrate-like group through a glycosidic bond." [PubMed:18688235] synonym: "SGlycoRes" EXACT PSI-MOD-label [] is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00427 name: methylated residue def: "A protein modification that effectively replaces a hydrogen atom with a methyl group." [DeltaMass:36] comment: From DeltaMass: Average Mass: 14 Average Mass Change:14 References:Methylation of Asparagine (found in phycobiliproteins) Klotz and Glazer (1987) J. Biol. Chem. 262; 17350-17355 subset: PSI-MOD-slim synonym: "MeRes" EXACT PSI-MOD-label [] synonym: "Methylation (N terminus, N epsilon of Lysine, O of Serine, Threonine or C terminus, N of Asparagine)" EXACT DeltaMass-label [] is_a: MOD:00001 ! alkylated residue [Term] id: MOD:00428 name: dihydroxylated residue def: "A protein modification that effectively replaces two hydrogen atoms with two hydroxyl groups." [PubMed:12686488, Unimod:425] subset: PSI-MOD-slim synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "Hy2Res" EXACT PSI-MOD-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:425" is_a: MOD:00677 ! hydroxylated residue [Term] id: MOD:00429 name: dimethylated residue def: "A protein modification that effectively replaces two hydrogen atoms with two methyl groups." [DeltaMass:0, PubMed:12964758, PubMed:14570711, Unimod:36] comment: For amino-terminal proline residues, dimethylation can effectively only be accomplished with a protonated imino group. This process accounts only for dimethylation and not protonation. The alternative Me2+Res process accounts for both protonation and dimethylation [JSG]. subset: PSI-MOD-slim synonym: "di-Methylation" RELATED Unimod-description [] synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "Me2Res" EXACT PSI-MOD-label [] synonym: "N,N dimethylation (of Arginine or Lysine)" EXACT DeltaMass-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:36" is_a: MOD:00427 ! methylated residue [Term] id: MOD:00430 name: trimethylated residue def: "A protein modification that effectively replaces three hydrogen atoms with three methyl groups." [PubMed:12590383, PubMed:3145979, PubMed:4304194, PubMed:6778808, PubMed:7093227, PubMed:8453381, Unimod:37] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with an aminium, protonated primary amino, group. This process accounts only for trimethylation and not protonation. The alternative Me3+Res process accounts for both protonation and trimethylation. subset: PSI-MOD-slim synonym: "Me3Res" EXACT PSI-MOD-label [] synonym: "tri-Methylation" RELATED Unimod-description [] synonym: "Trimethyl" RELATED PSI-MS-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6" xref: DiffMono: "42.046950" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:37" is_a: MOD:00427 ! methylated residue [Term] id: MOD:00431 name: modified residue with a secondary neutral loss def: "Covalent modification of, or a change resulting in an alteration of the measured molecular mass of, a peptide or protein amino acid residue with a secondary loss of a neutral molecular fragment." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NLModRes" EXACT PSI-MOD-label [] is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00432 name: modified residue with neutral loss of phosphate def: "Covalent modification of, or a change resulting in an alteration of the measured molecular mass of, a peptide or protein amino acid residue with a secondary loss of a neutral trihydrogen phosphate molecular fragment." [PubMed:18688235] subset: PSI-MOD-slim synonym: "dPhosModRes" EXACT PSI-MOD-label [] is_a: MOD:00431 ! modified residue with a secondary neutral loss [Term] id: MOD:00433 name: monoglucosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an glucose group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "GlcRes" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00761 ! monohexosylated residue is_a: MOD:00726 ! glucosylated residue [Term] id: MOD:00434 name: hexosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a hexose sugar group through a glycosidic bond." [DeltaMass:203, PubMed:15279557, Unimod:41] comment: From DeltaMass: Average Mass: 162 Formula:C6 H10 05 Monoisotopic Mass Change:162.053 Average Mass Change:162.143 References:PE Sciex. subset: PSI-MOD-slim synonym: "Hex" EXACT PSI-MOD-label [] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] synonym: "Hexoses (Fru, Gal, Glc, Man)" EXACT DeltaMass-label [] synonym: "O-Glycosyl-" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00435 name: O-phospho-L-serine with neutral loss of phosphate def: "Covalent modification of a peptide or protein amino acid phosphorylated serine with a secondary loss of a neutral trihydrogen phosphate molecular fragment." [PubMed:18688235] subset: PSI-MOD-slim synonym: "dPhosOPhosSer" EXACT PSI-MOD-label [] xref: DiffAvg: "-97.99" xref: DiffFormula: "C 0 H -3 N 0 O -4 P -1" xref: DiffMono: "-97.976895" xref: Formula: "C 3 H 3 N 1 O 1" xref: MassAvg: "69.06" xref: MassMono: "69.021464" xref: Origin: "MOD:00046" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01151 ! phosphorylated residue with neutral loss of phosphate relationship: derives_from MOD:00046 ! O-phospho-L-serine [Term] id: MOD:00436 name: N-acetylhexosaminylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with an N-acetylhexosamine group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "HexNAc" EXACT PSI-MOD-label [] synonym: "N-Acetylhexosamine" RELATED Unimod-description [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: GNOme: "GNO:G29068FM" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00437 name: farnesylated residue def: "A protein modification that effectively replaces a hydrogen atom with a farnesyl group." [DeltaMass:0, PubMed:15609361, Unimod:44] comment: From DeltaMass: Average Mass: 204 subset: PSI-MOD-slim synonym: "Farnesyl" RELATED PSI-MS-label [] synonym: "Farnesylation" EXACT DeltaMass-label [] synonym: "Farnesylation" RELATED Unimod-description [] synonym: "FarnRes" EXACT PSI-MOD-label [] xref: DiffAvg: "204.36" xref: DiffFormula: "C 15 H 24" xref: DiffMono: "204.187801" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:44" is_a: MOD:00703 ! isoprenylated residue [Term] id: MOD:00438 name: myristoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a myristoyl group." [DeltaMass:0, Unimod:45] comment: From DeltaMass: Average Mass: 210 subset: PSI-MOD-slim synonym: "C14:0 aliphatic acylated residue" EXACT PSI-MOD-alternate [] synonym: "Myristoyl" RELATED PSI-MS-label [] synonym: "Myristoylation" EXACT DeltaMass-label [] synonym: "Myristoylation" RELATED Unimod-description [] synonym: "MyrRes" EXACT PSI-MOD-label [] xref: DiffAvg: "210.36" xref: DiffFormula: "C 14 H 26 O 1" xref: DiffMono: "210.198365" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:45" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00439 name: O-phospho-L-threonine with neutral loss of phosphate def: "Covalent modification of a peptide or protein amino acid phosphorylated threonine with a secondary loss of a neutral trihydrogen phosphate molecular fragment." [PubMed:18688235] subset: PSI-MOD-slim synonym: "dPhosOPhosThr" EXACT PSI-MOD-label [] xref: DiffAvg: "-97.99" xref: DiffFormula: "C 0 H -3 N 0 O -4 P -1" xref: DiffMono: "-97.976895" xref: Formula: "C 4 H 5 N 1 O 1" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "MOD:00047" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01151 ! phosphorylated residue with neutral loss of phosphate relationship: derives_from MOD:00047 ! O-phospho-L-threonine [Term] id: MOD:00440 name: palmitoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a palmitoyl group." [DeltaMass:0] comment: From DeltaMass: Average Mass: 238 subset: PSI-MOD-slim synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" EXACT DeltaMass-label [] synonym: "Palmitoylation" RELATED Unimod-description [] synonym: "PamRes" EXACT PSI-MOD-label [] synonym: "Hexadecanoylated residue" EXACT PSI-MOD-alternate [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 O 1" xref: DiffMono: "238.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00441 name: geranylgeranylated residue def: "A protein modification that effectively replaces a hydrogen atom with a geranylgeranyl group." [DeltaMass:0, PubMed:15609361, Unimod:48] comment: From DeltaMass: Average Mass: 272 subset: PSI-MOD-slim synonym: "Geranyl-geranyl" RELATED Unimod-description [] synonym: "GeranylGeranyl" RELATED PSI-MS-label [] synonym: "Geranylgeranylation" EXACT DeltaMass-label [] synonym: "GergerRes" EXACT PSI-MOD-label [] xref: DiffAvg: "272.48" xref: DiffFormula: "C 20 H 32" xref: DiffMono: "272.250401" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:48" is_a: MOD:00703 ! isoprenylated residue [Term] id: MOD:00442 name: protonated omega-N,omega-N'-dimethylated L-arginine with secondary neutral loss of N,N'-carbodiimide def: "Covalent modification of a peptide or protein L-arginine residue to protonated omega-N,omega-N'-dimethylated L-arginine with secondary loss of an N,N'-carbodiimide molecular fragment." [PubMed:15835918, PubMed:18688235] synonym: "dCDI-NNMe2+Arg" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 1 H 2 N 2 O 0" xref: DiffMono: "42.021798" xref: Formula: "C 7 H 14 N 2 O 1" xref: MassAvg: "142.20" xref: MassMono: "142.110613" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00431 ! modified residue with a secondary neutral loss is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00443 name: protonated omega-N,omega-N-dimethlyated L-arginine with secondary neutral loss of N,N-dimethylamine def: "Covalent modification of a peptide or protein L-arginine residue to protonated omega-N,omega-N-dimethlyated L-arginine with secondary neutral loss of an N,N-dimethylamine molecular fragment." [PubMed:15835918, PubMed:18688235] synonym: "dDMA-NoMe2+Arg" EXACT PSI-MOD-label [] xref: DiffAvg: "59.09" xref: DiffFormula: "C 2 H 7 N 2" xref: DiffMono: "59.060923" xref: Formula: "C 6 H 10 N 3 O 1" xref: MassAvg: "140.17" xref: MassMono: "140.082387" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00431 ! modified residue with a secondary neutral loss is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00444 name: N-palmitoyl-S-(sn-1-2,3-dipalmitoyl-glycerol)cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-palmitoyl-S-(sn-1-2,3-dipalmitoyl-glycerol)cysteine." [OMSSA:118, PubMed:10356335, Unimod:51] synonym: "N-acyl diglyceride cysteine" RELATED Unimod-description [] synonym: "ntermpeptripalmitatec" EXACT OMSSA-label [] synonym: "Tripalmitate" RELATED PSI-MS-label [] xref: DiffAvg: "789.32" xref: DiffFormula: "C 51 H 96 O 5" xref: DiffMono: "788.725776" xref: Formula: "C 54 H 101 N 1 O 6 S 1" xref: MassAvg: "892.46" xref: MassMono: "891.734961" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:51" is_a: MOD:00899 ! N-palmitoyl-S-diacylglycerol-L-cysteine relationship: has_functional_parent MOD:01144 ! S-(sn-1-2,3-dipalmitoylglycerol)-L-cysteine [Term] id: MOD:00445 name: L-homoarginine def: "A protein modification that effectively converts an L-lysine residue to L-homoarginine, such as reaction with O-methylisourea." [OMSSA:53, PubMed:11078590, PubMed:11085420, PubMed:11821862, Unimod:52] subset: PSI-MOD-slim synonym: "Guanidination" RELATED Unimod-description [] synonym: "guanidinationk" EXACT OMSSA-label [] synonym: "Guanidinyl" RELATED PSI-MS-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 1 H 2 N 2" xref: DiffMono: "42.021798" xref: Formula: "C 7 H 14 N 4 O 1" xref: MassAvg: "170.22" xref: MassMono: "170.116761" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:52" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00446 name: 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of a residue with 4-hydroxynonenal." [PubMed:11327326, PubMed:15133838, Unimod:53] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "4-hydroxynonenal (HNE)" RELATED Unimod-description [] synonym: "HNE" RELATED PSI-MS-label [] xref: DiffAvg: "156.22" xref: DiffFormula: "C 9 H 16 O 2" xref: DiffMono: "156.115030" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:53" is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00447 name: N-glucuronylated residue def: "A protein modification that effectively results from forming an adduct with a glucuronic acid either through a carboxyl group amide or ester bond, or through C1-glycosylation." [DeltaMass:0, PubMed:7398618, Unimod:54#N-term] subset: PSI-MOD-slim synonym: "Glucuronyl" RELATED PSI-MS-label [] synonym: "N-Glucuronyl (N terminus)" EXACT DeltaMass-label [] synonym: "N-glucuronylation" RELATED Unimod-description [] xref: DiffAvg: "176.12" xref: DiffFormula: "C 6 H 8 O 6" xref: DiffMono: "176.032088" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:54" is_a: MOD:00764 ! glycoconjugated residue [Term] id: MOD:00448 name: mono-N-acetylaminoglucosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an N-acetylaminoglucose group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "GlcNAcRes" EXACT PSI-MOD-label [] synonym: "HexNAc" RELATED PSI-MS-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00733 ! N-acetylaminoglucosylated is_a: MOD:01673 ! N-acetylaminohexosylated residue [Term] id: MOD:00449 name: acetate labeling reagent (N-term) (heavy form, +3amu) def: "modification from Unimod Isotopic label" [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:56] synonym: "Acetate labeling reagent (N-term & K) (heavy form, +3amu)" RELATED Unimod-description [] synonym: "Acetyl:2H(3)" RELATED PSI-MS-label [] xref: DiffAvg: "45.03" xref: DiffFormula: "C 2 (1)H -1 (2)H 3 O 1" xref: DiffMono: "45.029395" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:56" is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:00450 name: acetate labeling reagent light form (K) def: "OBSOLETE because this isotopic label from Unimod entry 57 is deprecated" [PubMed:11857757] xref: DiffAvg: "42.01" xref: DiffFormula: "C 2 (1)H 2 O 1" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:00451 name: alpha-amino propanoylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a propanoyl group." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:58#N-term] synonym: "Propionate labeling reagent light form (N-term & K)" RELATED Unimod-description [] synonym: "Propionyl" RELATED PSI-MS-label [] xref: DiffAvg: "56.06" xref: DiffFormula: "C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:58" is_a: MOD:01894 ! propanoylated residue [Term] id: MOD:00452 name: alpha-amino 3x(13)C-labeled propanoylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a 3x(13)C-labeled propanoyl group." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:59#N-term] synonym: "Propionate labeling reagent heavy form (+3amu), N-term & K" RELATED Unimod-description [] synonym: "Propionyl:13C(3)" RELATED PSI-MS-label [] xref: DiffAvg: "59.04" xref: DiffFormula: "(13)C 3 H 4 O 1" xref: DiffMono: "59.036279" xref: Formula: "(12)C 6 (13)C 3 H 16 N 2 O 2" xref: MassAvg: "187.13" xref: MassMono: "187.131242" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:59" relationship: derives_from MOD:00451 ! alpha-amino propanoylated residue is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00453 name: quaternary amine labeling reagent light form (N-term & K) def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a quaternary amine reagent light form group." [PubMed:11857757, Unimod:60] synonym: "GIST-Quat" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent light form (N-term & K)" RELATED Unimod-description [] xref: DiffAvg: "127.19" xref: DiffFormula: "C 7 H 13 N 1 O 1" xref: DiffMono: "127.099714" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:60" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00454 name: quaternary amine labeling reagent heavy form (+3amu) (N-term & K) def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a quaternary amine reagent heavy (+3amu) form group." [PubMed:11857757, Unimod:61] synonym: "GIST-Quat:2H(3)" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent heavy (+3amu) form, N-term & K" RELATED Unimod-description [] xref: DiffAvg: "130.12" xref: DiffFormula: "C 7 (1)H 10 (2)H 3 N 1 O 1" xref: DiffMono: "130.118544" xref: Formula: "C 13 (1)H 22 (2)H 3 N 3 O 2" xref: MassAvg: "258.21" xref: MassMono: "258.213507" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:61" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00455 name: quaternary amine labeling reagent heavy form (+6amu) (N-term & K) def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a quaternary amine reagent heavy (+6amu) form group." [PubMed:11857757, Unimod:62] synonym: "GIST-Quat:2H(6)" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent heavy form (+6amu), N-term & K" RELATED Unimod-description [] xref: DiffAvg: "133.14" xref: DiffFormula: "C 7 H 7 (2)H 6 N 1 O 1" xref: DiffMono: "133.137375" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:62" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00456 name: quaternary amine labeling reagent heavy form (+9amu) (N-term & K) def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a quaternary amine reagent heavy (+9amu) form group." [PubMed:11857757, Unimod:63] synonym: "GIST-Quat:2H(9)" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent heavy form (+9amu), N-term & K" RELATED Unimod-description [] xref: DiffAvg: "136.16" xref: DiffFormula: "C 7 (1)H 4 (2)H 9 N 1 O 1" xref: DiffMono: "136.156205" xref: Formula: "C 13 (1)H 16 (2)H 9 N 3 O 2" xref: MassAvg: "264.25" xref: MassMono: "264.251168" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:63" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00457 name: 4x(12)C, 4x(1)H labeled alpha-amino succinylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a light succinyl group." [PubMed:11857757, PubMed:12175151, Unimod:64#N-term] synonym: "Succinic anhydride labeling reagent light form (N-term)" RELATED Unimod-description [] synonym: "Succinyl" RELATED PSI-MS-label [] xref: DiffAvg: "100.03" xref: DiffFormula: "(12)C 4 (1)H 4 O 3" xref: DiffMono: "100.016044" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:64" relationship: derives_from MOD:01029 ! succinylated residue is_a: MOD:01696 ! alpha-amino acylated residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00458 name: 4x(2)H labeled alpha-amino succinylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a 4x(2)H labeled succinyl group." [PubMed:11857757, PubMed:12175151, Unimod:65#N-term] synonym: "Succinic anhydride labeling reagent, heavy form (+4amu, 4H2), N-term" RELATED Unimod-description [] synonym: "Succinyl:2H(4)" RELATED PSI-MS-label [] xref: DiffAvg: "104.04" xref: DiffFormula: "C 4 (2)H 4 O 3" xref: DiffMono: "104.041151" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:65" relationship: derives_from MOD:01029 ! succinylated residue is_a: MOD:01696 ! alpha-amino acylated residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00459 name: 4x(13)C labeled alpha-amino succinylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a 4x(13)C labeled succinyl group." [PubMed:11857757, PubMed:12175151, Unimod:66#N-term] synonym: "Succinic anhydride labeling reagent, heavy form (+4amu, 4C13), N-term & K" RELATED Unimod-description [] synonym: "Succinyl:13C(4)" RELATED PSI-MS-label [] xref: DiffAvg: "104.03" xref: DiffFormula: "(13)C 4 H 4 O 3" xref: DiffMono: "104.029463" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "none" xref: Unimod: "Unimod:66" relationship: derives_from MOD:01029 ! succinylated residue is_a: MOD:01696 ! alpha-amino acylated residue is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00460 name: L-cysteic acid (L-cysteine sulfonic acid) def: "A protein modification that effectively trioxygenates an L-cysteine residue to L-cysteine sulfonic acid." [ChEBI:17285, DeltaMass:334, OMSSA:34, PubMed:14678012, PubMed:18306178, PubMed:19522542, PubMed:9252331, RESID:AA0556, Unimod:345#C] comment: From DeltaMass: Notes:Treatment of cysteine by strongly oxidising reagents such as performic acid results in the complete oxidation of the sulphur atom. Such treatment is often carried out prior to amino acid analysis as the resulting cysteic acid is then resistant to acid degradation during the hydrolysis procedure. subset: PSI-MOD-slim synonym: "(2R)-2-amino-3-sulfopropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-2-carboxyethanesulfonic acid" EXACT RESID-alternate [] synonym: "2-azanyl-3-sulfopropanoic acid" EXACT RESID-alternate [] synonym: "3-sulfoalanine" EXACT RESID-alternate [] synonym: "Cya" EXACT DeltaMass-label [] synonym: "CysO3H" EXACT PSI-MOD-label [] synonym: "cysteic acid" EXACT RESID-alternate [] synonym: "Cysteic acid, oxidation of cysteine" EXACT DeltaMass-label [] synonym: "cysteicacidc" EXACT OMSSA-label [] synonym: "cysteine oxidation to cysteic acid" RELATED Unimod-description [] synonym: "cysteine sulphonic acid" EXACT RESID-alternate [] synonym: "L-cysteine sulfonic acid" EXACT RESID-name [] synonym: "Trioxidation" RELATED PSI-MS-label [] synonym: "MOD_RES Cysteine sulfonic acid (-SO3H)" EXACT UniProt-feature [] xref: DiffAvg: "48.00" xref: DiffFormula: "C 0 H 0 N 0 O 3 S 0" xref: DiffMono: "47.984744" xref: Formula: "C 3 H 5 N 1 O 4 S 1" xref: MassAvg: "151.14" xref: MassMono: "150.993929" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:345" xref: UniProt: "PTM-0634" is_a: MOD:00708 ! sulfur oxygenated L-cysteine [Term] id: MOD:00461 name: nitrated residue def: "A protein modification that effectively substitutes a nitrite (NO2) group for a hydrogen atom." [DeltaMass:0, PubMed:8839040, PubMed:9252331, Unimod:354] comment: Note, this is often misrepresented as the introduction of a nitrate (NO3) group [JSG]. subset: PSI-MOD-slim synonym: "Nitro" RELATED PSI-MS-label [] synonym: "Nitro (NO2)" EXACT DeltaMass-label [] synonym: "Oxidation to nitro" RELATED Unimod-description [] xref: DiffAvg: "45.00" xref: DiffFormula: "H -1 N 1 O 2" xref: DiffMono: "44.985078" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "none" xref: Unimod: "Unimod:354" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00462 name: L-kynurenine def: "A protein modification that effectively converts an L-tryptophan residue to L-kynurenine." [DeltaMass:357, OMSSA:66, PubMed:11029593, PubMed:9252331, Unimod:351#W] subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-(2-aminophenyl)-4-oxo-butanoic acid" EXACT PSI-MOD-alternate [] synonym: "kynureninw" EXACT OMSSA-label [] synonym: "Trp->Kynurenin" RELATED PSI-MS-label [] synonym: "tryptophan oxidation to kynurenin" RELATED Unimod-description [] xref: DiffAvg: "3.99" xref: DiffFormula: "C -1 O 1" xref: DiffMono: "3.994915" xref: Formula: "C 10 H 10 N 2 O 2" xref: MassAvg: "190.20" xref: MassMono: "190.074228" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:351" is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00463 name: 3'-hydroxy-L-kynurenine def: "A protein modification that effectively converts an L-tryptophan residue to 3'-hydroxy-L-kynurenine." [OMSSA:58, PubMed:9252331, Unimod:350#W] subset: PSI-MOD-slim synonym: "hydroxykynureninw" EXACT OMSSA-label [] synonym: "Trp->Hydroxykynurenin" RELATED PSI-MS-label [] synonym: "tryptophan oxidation to hydroxykynurenin" RELATED Unimod-description [] xref: DiffAvg: "19.99" xref: DiffFormula: "C -1 O 2" xref: DiffMono: "19.989829" xref: Formula: "C 10 H 10 N 2 O 3" xref: MassAvg: "206.20" xref: MassMono: "206.069142" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:350" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00464 name: N'-formyl-L-kynurenine def: "A protein modification that effectively converts an L-tryptophan residue to N'-formyl-L-kynurenine." [DeltaMass:356, OMSSA:45, PubMed:12124932, PubMed:12686488, PubMed:9252331, Unimod:425#W] comment: From DeltaMass: References:Willy V. Bienvenut, Catherine Déon, Carla Pasquarello, Jennifer M. Campbell, Jean-Charles Sanchez, Marvin L. Vestal, Denis F. Hochstrasser Matrix-assisted laser desorption/ionization-tandemmass spectrometry with high resolution andsensitivity for identification and characterizationof proteins. Proteomics 2002, 2, 868-876 Notes: A double oxidation of tryptophan for which the N-formylkynurenine (+32) structure can be proposed. Many minor peaks accompanying the main peak might also be attributed to other oxidation products of the tryptophan such as kynurenine (+4), an unknown by-product found in all oxidized tryptophan patterns (+13), hydroxytryptophan (+16), 3-hydroxykynurenine (+20) and hydroxy-N-formylkynurenine (+48). See proposed structures at http://www.abrf.org/images/misc/dmass32.jpg. subset: PSI-MOD-slim synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] synonym: "Double oxidation of Trp" EXACT DeltaMass-label [] synonym: "formylkynureninw" EXACT OMSSA-label [] synonym: "tryptophan oxidation to formylkynurenin" RELATED Unimod-alternate [] xref: DiffAvg: "32.00" xref: DiffFormula: "O 2" xref: DiffMono: "31.989829" xref: Formula: "C 11 H 10 N 2 O 3" xref: MassAvg: "218.21" xref: MassMono: "218.069142" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:425" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00465 name: dihydroxyphenylalanine (Phe) def: "A protein modification that effectively converts an L-phenylalanine residue to a dihydroxyphenylalanine." [OMSSA:39, PubMed:1610822, PubMed:1903612, PubMed:3734192, PubMed:9252331, RESID:AA0146#var, Unimod:425#F] comment: Dihydroxyphenyalanines with a 4'-hydroxyl orginate naturally by a monohydroxylation of tyrosine, and not by dihydroxylation of phenylalanine [JSG]. subset: PSI-MOD-slim synonym: "dihydroxy" RELATED Unimod-description [] synonym: "dihydroxyf" EXACT OMSSA-label [] synonym: "Dioxidation" RELATED PSI-MS-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "O 2" xref: DiffMono: "31.989829" xref: Formula: "C 9 H 9 N 1 O 3" xref: MassAvg: "179.17" xref: MassMono: "179.058243" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:425" is_a: MOD:00428 ! dihydroxylated residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:00466 name: glycosylsphingolipidinositolated residue def: "A protein modification that effectively converts a residue to a glycosylsphingolipidinositolethanolamidated." [PubMed:12626404, PubMed:18688235, PubMed:8404891] synonym: "GSIRes" EXACT PSI-MOD-label [] is_a: MOD:00764 ! glycoconjugated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00467 name: iminobiotinyl modified residue def: "A protein modification that effectively substitutes an iminobiotinyl group for a hydrogen atom." [PubMed:9750125, Unimod:89] synonym: "Iminobiotin" RELATED PSI-MS-label [] synonym: "Iminobiotinylation" RELATED Unimod-description [] xref: DiffAvg: "225.31" xref: DiffFormula: "C 10 H 15 N 3 O 1 S 1" xref: DiffMono: "225.093583" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:89" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00468 name: ESP-Tag light d0 def: "modification from Unimod Isotopic label" [Unimod:90] synonym: "ESP" RELATED PSI-MS-label [] synonym: "ESP-Tag light d0" RELATED Unimod-description [] xref: DiffAvg: "338.47" xref: DiffFormula: "C 16 H 26 N 4 O 2 S 1" xref: DiffMono: "338.177647" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:90" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00469 name: ESP-Tag heavy d10 def: "modification from Unimod Isotopic label" [Unimod:91] synonym: "ESP-Tag heavy d10" RELATED Unimod-description [] synonym: "ESP:2H(10)" RELATED PSI-MS-label [] xref: DiffAvg: "348.24" xref: DiffFormula: "C 16 (1)H 16 (2)H 10 N 4 O 2 S 1" xref: DiffMono: "348.240415" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:91" is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:00470 name: NHS-LC-Biotin def: "modification from Unimod Chemical derivative" [Unimod:92] synonym: "NHS-LC-Biotin" RELATED Unimod-interim [] synonym: "NHS-LC-Biotin" RELATED Unimod-description [] xref: DiffAvg: "339.45" xref: DiffFormula: "C 16 H 25 N 3 O 3 S 1" xref: DiffMono: "339.161663" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:92" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00471 name: EDT-maleimide-PEO-biotin def: "modification from Unimod Chemical derivative" [Unimod:93] synonym: "EDT-maleimide-PEO-biotin" RELATED Unimod-interim [] synonym: "EDT-maleimide-PEO-biotin" RELATED Unimod-description [] xref: DiffAvg: "601.80" xref: DiffFormula: "C 25 H 39 N 5 O 6 S 3" xref: DiffMono: "601.206247" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:93" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00472 name: IMID d0 def: "modification from Unimod Isotopic label" [PubMed:11746907, Unimod:94, URL:http\://dx.doi.org/10.1002/rcm.517] synonym: "IMID" RELATED PSI-MS-label [] synonym: "IMID d0" RELATED Unimod-description [] xref: DiffAvg: "68.04" xref: DiffFormula: "C 3 (1)H 4 N 2" xref: DiffMono: "68.037448" xref: Formula: "C 9 H 16 N 4 O 1" xref: MassAvg: "196.13" xref: MassMono: "196.132411" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:94" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00473 name: IMID d4 def: "modification from Unimod Isotopic label" [PubMed:11746907, Unimod:95, URL:http\://dx.doi.org/10.1002/rcm.517] synonym: "IMID d4" RELATED Unimod-description [] synonym: "IMID:2H(4)" RELATED PSI-MS-label [] xref: DiffAvg: "72.06" xref: DiffFormula: "C 3 (2)H 4 N 2" xref: DiffMono: "72.062555" xref: Formula: "C 9 (1)H 12 (2)H 4 N 4 O 1" xref: MassAvg: "200.16" xref: MassMono: "200.157518" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:95" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00474 name: S-([1,1,2-(2)H3]-carboxamidoethyl)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(1,1,2-(2)H3)-propanamide-L-cysteine." [Unimod:97#C] synonym: "Acrylamide d3" RELATED Unimod-description [] synonym: "Propionamide:2H(3)" RELATED PSI-MS-label [] synonym: "S-([1,1,2-(2)H3]-3-amino-3-oxopropyl)cysteine" EXACT PSI-MOD-alternate [] synonym: "S-([1,1,2-(2)H3]-carbamoylethyl)-L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-([1,1,2-(2)H3]-propanamide)-L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "74.06" xref: DiffFormula: "C 3 (1)H 2 (2)H 3 N 1 O 1" xref: DiffMono: "74.055944" xref: Formula: "C 6 (1)H 7 (2)H 3 N 2 O 2 S 1" xref: MassAvg: "177.07" xref: MassMono: "177.065129" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:97" relationship: derives_from MOD:00417 ! S-carboxamidoethyl-L-cysteine is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00475 name: 2-amino-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 2-amino-L-tyrosine." [PubMed:8839040, PubMed:9252331, Unimod:342#Y] synonym: "Amino" RELATED PSI-MS-label [] synonym: "Tyrosine oxidation to 2-aminotyrosine" RELATED Unimod-description [] xref: DiffAvg: "15.02" xref: DiffFormula: "H 1 N 1" xref: DiffMono: "15.010899" xref: Formula: "C 9 H 10 N 2 O 2" xref: MassAvg: "178.19" xref: MassMono: "178.074228" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:342" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:02039 ! aminated residue [Term] id: MOD:00476 name: monogalactosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an galactose group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "GalRes" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00761 ! monohexosylated residue is_a: MOD:00728 ! galactosylated residue [Term] id: MOD:00477 name: 2-pyrrolidone def: "A protein modification that effectively converts, by oxidative decarboxylation, an L-proline residue to 2-pyrrolidone with breakage of the peptide chain." [PubMed:2161657, PubMed:9252331, Unimod:360#P] comment: The oxidative decarboxylation of a proline residue results in breaking of the peptide chain, leaving a peptidyl-2-pyrrolidone at the C-terminus. The difference formula, derived from the result in the original citation, has been corrected from the Unimod entry. synonym: "Pro->Pyrrolidinone" RELATED PSI-MS-label [] synonym: "Proline oxidation to pyrrolidinone" RELATED Unimod-description [] xref: DiffAvg: "-13.02" xref: DiffFormula: "C -1 H -1 N 0 O 0" xref: DiffMono: "-13.007825" xref: Formula: "C 4 H 6 N 1 O 1" xref: MassAvg: "84.10" xref: MassMono: "84.044939" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:360" is_a: MOD:00683 ! dehydrogenated residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00478 name: glutamyl semialdehyde (Pro) def: "A protein modification that effectively converts an L-proline residue to L-glutamyl semialdehyde." [DeltaMass:354, PubMed:11120890, PubMed:2563380, PubMed:9252331, Unimod:35#P] synonym: "gamma-glutamyl semialdehyde" EXACT PSI-MOD-alternate [] synonym: "glutamyl 5-semialdehyde" EXACT PSI-MOD-alternate [] synonym: "glutamyl aldehyde" EXACT PSI-MOD-alternate [] synonym: "Oxidation" RELATED Unimod-interim [] synonym: "Oxidation of proline to gamma-glutamyl semialdehyde" EXACT DeltaMass-label [] synonym: "Oxidation or Hydroxylation" RELATED Unimod-description [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:35" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01440 ! glutamyl semialdehyde [Term] id: MOD:00479 name: glutamyl semialdehyde (Arg) def: "A protein modification that effectively converts an L-arginine residue to L-glutamyl semialdehyde." [DeltaMass:351, PubMed:11120890, PubMed:1680314, PubMed:9252331, Unimod:344#R] comment: From DeltaMass: Average Mass: -27 Monoisotopic Mass Change:-27.06 Average Mass Change:-27.07 References:Amici A, Levine, RL, Tsai, L, and Stadtman, ER: Conversion of amino acid residues in proteins and amino acid homopolymers to carbonyl derivatives by metal-catalyzed oxidation reactions. Journal of Biological Chemistry 264: 3341-3346 1989.Requena JR, Chao CC, Levine RL, and Stadtman ER: Glutamic and aminoadipic semialdehydes are the main carbonyl products of metal-catalyzed oxidation of proteins. Proceedings of the National Academy of Sciences USA 98: 69-74 2001. synonym: "Arg->GluSA" RELATED PSI-MS-label [] synonym: "Arginine oxidation to glutamic semialdehyde" RELATED Unimod-description [] synonym: "Oxidation of arginine (to glutamic acid)" EXACT DeltaMass-label [] xref: DiffAvg: "-43.07" xref: DiffFormula: "C -1 H -5 N -3 O 1" xref: DiffMono: "-43.053433" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:344" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:01440 ! glutamyl semialdehyde [Term] id: MOD:00480 name: Applied Biosystems cleavable ICAT(TM) light def: "modification from Unimod Isotopic label" [OMSSA:129, Unimod:105#C, URL:http\://www.appliedbiosystems.com/products/productdetail.cfm?prod_id=153] subset: PSI-MOD-slim synonym: "Applied Biosystems cleavable ICAT(TM) light" RELATED Unimod-description [] synonym: "ICAT-C" RELATED PSI-MS-label [] synonym: "icatlight" EXACT OMSSA-label [] xref: DiffAvg: "227.26" xref: DiffFormula: "C 10 H 17 N 3 O 3" xref: DiffMono: "227.126991" xref: Formula: "C 13 H 22 N 4 O 4 S 1" xref: MassAvg: "330.40" xref: MassMono: "330.136176" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:105" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00481 name: Applied Biosystems cleavable ICAT(TM) heavy def: "modification from Unimod Isotopic label" [OMSSA:130, Unimod:106#C, URL:http\://www.appliedbiosystems.com/products/productdetail.cfm?prod_id=153] subset: PSI-MOD-slim synonym: "Applied Biosystems cleavable ICAT(TM) heavy" RELATED Unimod-description [] synonym: "ICAT-C:13C(9)" RELATED PSI-MS-label [] synonym: "icatheavy" EXACT OMSSA-label [] xref: DiffAvg: "236.16" xref: DiffFormula: "(12)C 1 (13)C 9 H 17 N 3 O 3" xref: DiffMono: "236.157185" xref: Formula: "(12)C 4 (13)C 9 H 22 N 4 O 4 S 1" xref: MassAvg: "339.17" xref: MassMono: "339.166370" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:106" is_a: MOD:01428 ! (13)C isotope tagged reagent [Term] id: MOD:00482 name: N-formyl-L-methionine (Met) def: "A protein modification that effectively converts an L-methionine residue to N-formyl-L-methionine (not known as a natural, post-translational modification process)." [PubMed:11152118, PubMed:2165784, PubMed:3042771, Unimod:122#M, RESID:AA0021#MET] comment: This entry is for the artifactual formation of N-formyl-L-methionine from methionine. For encoded N-formyl-L-methionine, use MOD:00030 [JSG]. synonym: "(2S)-2-formylamino-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-formamido-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "2-formylamino-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "2-formylazanyl-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N-formylmethionine" EXACT UniProt-feature [] synonym: "N-formyl-L-methionine" EXACT RESID-name [] synonym: "N-formylated L-methionine" EXACT PSI-MOD-alternate [] synonym: "NFoMet" EXACT PSI-MOD-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1 S 0" xref: DiffMono: "27.994915" xref: Formula: "C 6 H 10 N 1 O 2 S 1" xref: MassAvg: "160.21" xref: MassMono: "160.043225" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:122" xref: UniProt: "PTM-0212" is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00483 name: N-ethylmaleimide derivatized cysteine def: "A protein modification that is produced by reaction with N-ethylmaleimide." [OMSSA:83, PubMed:11813307, PubMed:12777388, Unimod:108#C] synonym: "N-ethylmaleimide on cysteines" RELATED Unimod-description [] synonym: "nemc" EXACT OMSSA-label [] synonym: "Nethylmaleimide" RELATED PSI-MS-label [] xref: DiffAvg: "125.13" xref: DiffFormula: "C 6 H 7 N 1 O 2" xref: DiffMono: "125.047678" xref: Formula: "C 9 H 12 N 2 O 3 S 1" xref: MassAvg: "228.27" xref: MassMono: "228.056863" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:108" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00484 name: oxidized lysine biotinylated with biotin-LC-hydrazide, reduced def: "modification from Unimod Chemical derivative" [Unimod:112#K] synonym: "Oxidized lysine biotinylated with biotin-LC-hydrazide, reduced" RELATED Unimod-description [] synonym: "OxLysBiotinRed" RELATED Unimod-interim [] xref: DiffAvg: "354.47" xref: DiffFormula: "C 16 H 26 N 4 O 3 S 1" xref: DiffMono: "354.172562" xref: Formula: "C 22 H 38 N 6 O 4 S 1" xref: MassAvg: "482.64" xref: MassMono: "482.267525" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:112" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00485 name: oxidized lysine biotinylated with biotin-LC-hydrazide def: "modification from Unimod Chemical derivative" [Unimod:113#K] synonym: "Oxidized lysine biotinylated with biotin-LC-hydrazide" RELATED Unimod-description [] synonym: "OxLysBiotin" RELATED Unimod-interim [] xref: DiffAvg: "352.45" xref: DiffFormula: "C 16 H 24 N 4 O 3 S 1" xref: DiffMono: "352.156912" xref: Formula: "C 22 H 36 N 6 O 4 S 1" xref: MassAvg: "480.63" xref: MassMono: "480.251875" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:113" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00486 name: oxidized proline biotinylated with biotin-LC-hydrazide, reduced def: "modification from Unimod Chemical derivative" [Unimod:114#C] synonym: "Oxidized proline biotinylated with biotin-LC-hydrazide, reduced" RELATED Unimod-description [] synonym: "OxProBiotinRed" RELATED Unimod-interim [] xref: DiffAvg: "371.50" xref: DiffFormula: "C 16 H 29 N 5 O 3 S 1" xref: DiffMono: "371.199111" xref: Formula: "C 21 H 36 N 6 O 4 S 1" xref: MassAvg: "468.62" xref: MassMono: "468.251875" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:114" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00487 name: oxidized proline biotinylated with biotin-LC-hydrazide def: "modification from Unimod Chemical derivative" [Unimod:115#C] synonym: "Oxidized Proline biotinylated with biotin-LC-hydrazide" RELATED Unimod-description [] synonym: "OxProBiotin" RELATED Unimod-interim [] xref: DiffAvg: "369.48" xref: DiffFormula: "C 16 H 27 N 5 O 3 S 1" xref: DiffMono: "369.183461" xref: Formula: "C 21 H 34 N 6 O 4 S 1" xref: MassAvg: "466.60" xref: MassMono: "466.236225" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:115" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00488 name: oxidized arginine biotinylated with biotin-LC-hydrazide def: "modification from Unimod Chemical derivative" [Unimod:116#C] synonym: "OxArgBiotin" RELATED Unimod-interim [] synonym: "Oxidized arginine biotinylated with biotin-LC-hydrazide" RELATED Unimod-description [] xref: DiffAvg: "310.41" xref: DiffFormula: "C 15 H 22 N 2 O 3 S 1" xref: DiffMono: "310.135114" xref: Formula: "C 21 H 34 N 6 O 4 S 1" xref: MassAvg: "466.60" xref: MassMono: "466.236225" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00489 name: oxidized arginine biotinylated with biotin-LC-hydrazide, reduced def: "modification from Unimod Chemical derivative" [Unimod:117#C] synonym: "OxArgBiotinRed" RELATED Unimod-interim [] synonym: "Oxidized arginine biotinylated with biotin-LC-hydrazide, reduced" RELATED Unimod-description [] xref: DiffAvg: "312.43" xref: DiffFormula: "C 15 H 24 N 2 O 3 S 1" xref: DiffMono: "312.150764" xref: Formula: "C 21 H 36 N 6 O 4 S 1" xref: MassAvg: "468.62" xref: MassMono: "468.251875" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:117" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00490 name: EDT-iodo-PEO-biotin def: "modification from Unimod Chemical derivative" [Unimod:118] synonym: "EDT-iodo-PEO-biotin" RELATED Unimod-description [] synonym: "EDT-iodoacetyl-PEO-biotin" RELATED PSI-MS-label [] xref: DiffAvg: "490.70" xref: DiffFormula: "C 20 H 34 N 4 O 4 S 3" xref: DiffMono: "490.174219" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "none" xref: Unimod: "Unimod:118" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00491 name: thio ether formation - BTP Adduct def: "modification from Unimod Chemical derivative" [PubMed:11861642, Unimod:119#C] synonym: "IBTP" RELATED PSI-MS-label [] synonym: "Thio Ether Formation - BTP Adduct" RELATED Unimod-description [] xref: DiffAvg: "316.38" xref: DiffFormula: "C 22 H 21 P 1" xref: DiffMono: "316.138087" xref: Formula: "C 25 H 26 N 1 O 1 P 1 S 1" xref: MassAvg: "419.52" xref: MassMono: "419.147272" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:119" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00492 name: ubiquitination signature dipeptidyl lysine def: "A protein modification that crosslinks the N6-amino of a peptidyl lysine with the carboxyl of glycylglycine, the two glycine residues left after tryptic digestion of ubiquitin." [OMSSA:52, PubMed:11125103, PubMed:12612601, PubMed:12872131, RESID:AA0125#var, Unimod:121#K] synonym: "GlyGly" RELATED PSI-MS-label [] synonym: "glyglyk" EXACT OMSSA-label [] synonym: "N6-(glycylglycyl)lysine" EXACT PSI-MOD-alternate [] synonym: "N6-glycylglycyl-L-lysine" EXACT PSI-MOD-alternate [] synonym: "ubiquitinylation residue" RELATED Unimod-description [] xref: DiffAvg: "114.10" xref: DiffFormula: "C 4 H 6 N 2 O 2" xref: DiffMono: "114.042927" xref: Formula: "C 10 H 18 N 4 O 3" xref: MassAvg: "242.28" xref: MassMono: "242.137890" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:121" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01875 ! N6-acylated L-lysine relationship: derives_from MOD:01148 ! ubiquitinylated lysine [Term] id: MOD:00493 name: formylated residue def: "A protein modification that effectively replaces a hydrogen atom with a formyl group." [DeltaMass:0, PubMed:15799070, Unimod:122] comment: From DeltaMass: Average Mass: 28 subset: PSI-MOD-slim synonym: "FoRes" EXACT PSI-MOD-label [] synonym: "Formyl" RELATED PSI-MS-label [] synonym: "Formylation" RELATED Unimod-description [] synonym: "Formylation (CHO)" EXACT DeltaMass-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 O 1" xref: DiffMono: "27.994915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "none" xref: Unimod: "Unimod:122" is_a: MOD:00649 ! acylated residue [Term] id: MOD:00494 name: N-iodoacetyl, p-chlorobenzyl-12C6-glucamine def: "modification from Unimod Isotopic label" [PubMed:12185208, Unimod:123#C] synonym: "ICAT-H" RELATED PSI-MS-label [] synonym: "N-iodoacetyl, p-chlorobenzyl-12C6-glucamine" RELATED Unimod-description [] xref: DiffAvg: "345.78" xref: DiffFormula: "C 15 Cl 1 H 20 N 1 O 6 S 0" xref: DiffMono: "345.097915" xref: Formula: "C 18 Cl 1 H 25 N 2 O 7 S 1" xref: MassAvg: "448.91" xref: MassMono: "448.107100" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:123" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00495 name: N-iodoacetyl, p-chlorobenzyl-13C6-glucamine def: "modification from Unimod Isotopic label" [PubMed:12185208, Unimod:124#C] synonym: "ICAT-H:13C(6)" RELATED PSI-MS-label [] synonym: "N-iodoacetyl, p-chlorobenzyl-13C6-glucamine" RELATED Unimod-description [] xref: DiffAvg: "351.12" xref: DiffFormula: "(12)C 9 (13)C 6 Cl 1 H 20 N 1 O 6 S 0" xref: DiffMono: "351.118044" xref: Formula: "(12)C 12 (13)C 6 Cl 1 H 25 N 2 O 7 S 1" xref: MassAvg: "454.13" xref: MassMono: "454.127229" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:124" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00496 name: reductive amination-D def: "OBSOLETE because Unimod entry 125 is merged with entry 199, remap to id: MOD:00552" [Unimod:125] xref: DiffAvg: "32.06" xref: DiffFormula: "C 2 (2)H 4" xref: DiffMono: "32.056407" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00552" xref: Unimod: "Unimod:125" is_obsolete: true [Term] id: MOD:00497 name: 3-sulfanylpropanoyl (N-term and Lys) def: "modification from Unimod [(35)S]dithiobis(succinimidyl propionate) crosslinking" [PubMed:957432, Unimod:126] comment: The name "thioacylation of primary amines" in Unimod was a misdescription [JSG]. synonym: "3,3-Dithio-bis-(sulfosuccinimidyl)propionate" RELATED Unimod-alternate [] synonym: "3-sulfanylpropanoyl" RELATED Unimod-description [] synonym: "Thioacyl" RELATED PSI-MS-label [] xref: DiffAvg: "88.12" xref: DiffFormula: "C 3 H 4 O 1 S 1" xref: DiffMono: "87.998286" xref: Formula: "C 9 H 16 N 2 O 2 S 1" xref: MassAvg: "216.30" xref: MassMono: "216.093249" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:126" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00498 name: fluorinated residue def: "A protein modification that effectively substitutes a hydrogen of a residue with a fluorine atom." [PubMed:18688235] synonym: "Fluoro" RELATED PSI-MS-label [] synonym: "fluorophenylalanine replacement of phenylalanine" RELATED Unimod-description [] synonym: "Fluorophenylalanyl" EXACT DeltaMass-label [] synonym: "FRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue [Term] id: MOD:00499 name: 5-iodoacetamidofluorescein def: "modification from Unimod Chemical derivative" [PubMed:3311742, PubMed:3578767, Unimod:128#C] synonym: "5-Iodoacetamidofluorescein (Molecular Probe, Eugene, OR)" RELATED Unimod-description [] synonym: "Fluorescein" RELATED PSI-MS-label [] xref: DiffAvg: "388.35" xref: DiffFormula: "C 22 H 14 N 1 O 6" xref: DiffMono: "388.082112" xref: Formula: "C 25 H 19 N 2 O 7 S 1" xref: MassAvg: "491.49" xref: MassMono: "491.091297" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:128" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00500 name: monoiodinated residue def: "A protein modification that effectively substitutes one hydrogen atom of a residue with one iodine atom." [DeltaMass:0, PubMed:15627961, PubMed:2026710, Unimod:129] comment: From DeltaMass: Average Mass: 126 subset: PSI-MOD-slim synonym: "I1Res" EXACT PSI-MOD-label [] synonym: "Iodination" RELATED Unimod-description [] synonym: "Iodination (of Histidine[C4] or Tyrosine[C3])" EXACT DeltaMass-label [] synonym: "Iodo" RELATED PSI-MS-label [] xref: DiffAvg: "125.90" xref: DiffFormula: "H -1 I 1" xref: DiffMono: "125.896648" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "none" xref: Unimod: "Unimod:129" is_a: MOD:00755 ! iodinated residue [Term] id: MOD:00501 name: diiodinated residue def: "A protein modification that effectively substitutes two hydrogen atoms of a residue with two iodine atoms." [Unimod:130] comment: From DeltaMass: Average Mass: 252 subset: PSI-MOD-slim synonym: "di-Iodination" RELATED Unimod-description [] synonym: "Diiodo" RELATED PSI-MS-label [] synonym: "I2Res" EXACT PSI-MOD-label [] xref: DiffAvg: "251.79" xref: DiffFormula: "H -2 I 2" xref: DiffMono: "251.793295" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "none" xref: Unimod: "Unimod:130" is_a: MOD:00755 ! iodinated residue [Term] id: MOD:00502 name: triiodinated residue def: "A protein modification that effectively substitutes three hydrogen atoms of a residue with three iodine atoms." [OMSSA:116, PubMed:15627961, PubMed:2026710, Unimod:131] comment: From Unimod. In PubMed:2026710, mono- and diiodination of tyrosine are discussed, but triiodination of tyrosine is not mentioned. In PubMed:15627961, triiodothyronine (see MOD:00186) is discussed, but triiodotyrosine is not mentioned. This modification probably does not exist, and may be a confusion of "tyrosine" for "thyronine", a common error [JSG]. subset: PSI-MOD-slim synonym: "I3Res" EXACT PSI-MOD-label [] synonym: "tri-Iodination" RELATED Unimod-description [] synonym: "triiodinationy" EXACT OMSSA-label [] synonym: "Triiodo" RELATED PSI-MS-label [] xref: DiffAvg: "377.69" xref: DiffFormula: "H -3 I 3" xref: DiffMono: "377.689943" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:131" is_a: MOD:00755 ! iodinated residue [Term] id: MOD:00503 name: N-(cis-delta 5)-tetradecaenoylglycine def: "A protein modification that effectively converts a glycine residue to N-(cis-delta 5)-tetradecaenoylglycine." [OMSSA:78, PubMed:11955007, PubMed:11955008, PubMed:1326520, PubMed:1386601, PubMed:6436247, PubMed:7543369, RESID:AA0059#var, Unimod:134#G] synonym: "(cis-delta 5)-tetradecaenoyl" RELATED Unimod-description [] synonym: "Myristoleyl" RELATED PSI-MS-label [] synonym: "myristoleylation (one double bond)" EXACT DeltaMass-label [] synonym: "N-(C14:1 aliphatic acyl)glycine" EXACT PSI-MOD-alternate [] synonym: "ntermpepmyristoyeylationg" EXACT OMSSA-label [] xref: DiffAvg: "208.35" xref: DiffFormula: "C 14 H 24 N 0 O 1" xref: DiffMono: "208.182715" xref: Formula: "C 16 H 27 N 1 O 2" xref: MassAvg: "265.40" xref: MassMono: "265.204179" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:134" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:00504 name: N-(cis,cis-delta 5,delta 8)-tetradecadienoylglycine def: "A protein modification that effectively converts a glycine residue to N-(cis,cis-delta 5,delta 8)-tetradecadienoylglycine." [OMSSA:79, PubMed:11955007, PubMed:11955008, PubMed:1326520, PubMed:1386601, PubMed:6436247, PubMed:7543369, RESID:AA0059#var, Unimod:135#G] synonym: "(cis,cis-delta 5, delta 8)-tetradecadienoyl" RELATED Unimod-description [] synonym: "Myristoyl+Delta:H(-4)" RELATED PSI-MS-label [] synonym: "myristoylation-4H (two double bonds)" EXACT DeltaMass-label [] synonym: "N-(C14:2 aliphatic acyl)glycine" EXACT PSI-MOD-alternate [] synonym: "ntermpepmyristoyl4hg" EXACT OMSSA-label [] xref: DiffAvg: "206.33" xref: DiffFormula: "C 14 H 22 O 1" xref: DiffMono: "206.167065" xref: Formula: "C 16 H 25 N 1 O 2" xref: MassAvg: "263.38" xref: MassMono: "263.188529" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:135" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:00505 name: benzoyl labeling reagent light form (N-term and K) def: "modification from Unimod Isotopic label" [DeltaMass:0, PubMed:15456300, Unimod:136] comment: From DeltaMass: Average Mass: 104 synonym: "Benzoyl" RELATED PSI-MS-label [] synonym: "Benzoyl (Bz)" EXACT DeltaMass-label [] synonym: "labeling reagent light form (N-term & K)" RELATED Unimod-description [] xref: DiffAvg: "104.11" xref: DiffFormula: "C 7 H 4 O 1" xref: DiffMono: "104.026215" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:136" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00506 name: N-linked glycan core N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, Hex(5) HexNAc(2)" [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var, Unimod:137#N] synonym: "Hex(5)HexNAc(2)" RELATED PSI-MS-label [] synonym: "N-linked glycan core" RELATED Unimod-description [] xref: DiffAvg: "1217.09" xref: DiffFormula: "C 46 H 76 N 2 O 35" xref: DiffMono: "1216.422862" xref: Formula: "C 50 H 82 N 4 O 37" xref: MassAvg: "1331.20" xref: MassMono: "1330.465790" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:137" xref: GNOme: "GNO:G02815KT" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00507 name: 5-dimethylaminonaphthalene-1-sulfonyl def: "OBSOLETE because redundant, replaced by MOD:01653. Remap to MOD:01653." [DeltaMass:0, Unimod:139] comment: From DeltaMass: Average Mass: 233 synonym: "5-dimethylaminonaphthalene-1-sulfonyl" RELATED Unimod-description [] synonym: "Dansyl" RELATED PSI-MS-label [] synonym: "Dansyl (Dns)" EXACT DeltaMass-label [] xref: DiffAvg: "233.29" xref: DiffFormula: "C 12 H 11 N 1 O 2 S 1" xref: DiffMono: "233.051050" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:139" xref: Remap: "MOD:01653" is_obsolete: true [Term] id: MOD:00508 name: ISD a-series (C-Term) def: "OBSOLETE because this is an ion type and is not a biological or chemical modification to a polypeptide, can be handled by PSI-MS CV term, MS:1001229" [PubMed:14588022, Unimod:140] comment: Virtual Modification for MS/MS of a-type ions, by decarboxylation of C-terminus as reaction inside the mass spectrometer. synonym: "a-type-ion" RELATED PSI-MS-label [] synonym: "ISD a-series (C-Term)" RELATED Unimod-description [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:140" is_obsolete: true [Term] id: MOD:00509 name: amidination of lysines or N-terminal amines with methyl acetimidate def: "modification from Unimod Chemical derivative" [PubMed:12643539, PubMed:6273432, Unimod:141] synonym: "amidination of lysines or N-terminal amines with methyl acetimidate" RELATED Unimod-description [] synonym: "Amidine" RELATED PSI-MS-label [] xref: DiffAvg: "41.05" xref: DiffFormula: "C 2 H 3 N 1" xref: DiffMono: "41.026549" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:141" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00510 name: HexNAc1dHex1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex HexNAc" [OMSSA:183, PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var, Unimod:142] synonym: "dHexHexNAcN" EXACT OMSSA-label [] synonym: "HexNAc(1)dHex(1)" RELATED PSI-MS-label [] synonym: "HexNAc1dHex1" RELATED Unimod-description [] xref: DiffAvg: "349.34" xref: DiffFormula: "C 14 H 23 N 1 O 9" xref: DiffMono: "349.137281" xref: Formula: "C 18 H 29 N 3 O 11" xref: MassAvg: "463.44" xref: MassMono: "463.180209" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:142" xref: GNOme: "GNO:G00194GV" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00511 name: HexNAc2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, HexNAc(2)" [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var, Unimod:143] synonym: "HexNAc(2)" RELATED PSI-MS-label [] synonym: "HexNAc2" RELATED Unimod-description [] xref: DiffAvg: "406.39" xref: DiffFormula: "C 16 H 26 N 2 O 10" xref: DiffMono: "406.158745" xref: Formula: "C 20 H 32 N 4 O 12" xref: MassAvg: "520.49" xref: MassMono: "520.201672" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:143" xref: GNOme: "GNO:G27391WQ" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00512 name: Hex3 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, Hex3" [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var, Unimod:144] synonym: "Hex(3)" RELATED PSI-MS-label [] synonym: "Hex3" RELATED Unimod-description [] xref: DiffAvg: "486.42" xref: DiffFormula: "C 18 H 30 O 15" xref: DiffMono: "486.158470" xref: Formula: "C 22 H 36 N 2 O 17" xref: MassAvg: "600.53" xref: MassMono: "600.201398" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:144" xref: GNOme: "GNO:G39365VM" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00513 name: HexNAc1dHex2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex(2) HexNAc" [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var, Unimod:145] synonym: "HexNAc(1)dHex(2)" RELATED PSI-MS-label [] synonym: "HexNAc1dHex2" RELATED Unimod-description [] xref: DiffAvg: "495.48" xref: DiffFormula: "C 20 H 33 N 1 O 13" xref: DiffMono: "495.195190" xref: Formula: "C 24 H 39 N 3 O 15" xref: MassAvg: "609.58" xref: MassMono: "609.238118" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:145" xref: GNOme: "GNO:G74392IM" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00514 name: Hex1HexNAc1dHex1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex Hex HexNAc" [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var, Unimod:146] synonym: "Hex(1)HexNAc(1)dHex(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1dHex1" RELATED Unimod-description [] xref: DiffAvg: "511.48" xref: DiffFormula: "C 20 H 33 N 1 O 14" xref: DiffMono: "511.190105" xref: Formula: "C 24 H 39 N 3 O 16" xref: MassAvg: "625.58" xref: MassMono: "625.233032" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:146" xref: GNOme: "GNO:G54129SE" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00515 name: HexNAc2dHex1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex HexNAc(2)" [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var, Unimod:147] synonym: "HexNAc(2)dHex(1)" RELATED PSI-MS-label [] synonym: "HexNAc2dHex1" RELATED Unimod-description [] xref: DiffAvg: "552.53" xref: DiffFormula: "C 22 H 36 N 2 O 14" xref: DiffMono: "552.216654" xref: Formula: "C 26 H 42 N 4 O 16" xref: MassAvg: "666.63" xref: MassMono: "666.259581" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:147" xref: GNOme: "GNO:G06042JP" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00516 name: Hex1HexNAc2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:148] synonym: "Hex(1)HexNAc(2)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc2" RELATED Unimod-description [] xref: DiffAvg: "568.53" xref: DiffFormula: "C 22 H 36 N 2 O 15" xref: DiffMono: "568.211568" xref: Formula: "C 26 H 42 N 4 O 17" xref: MassAvg: "682.63" xref: MassMono: "682.254496" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:148" xref: GNOme: "GNO:G58001LT" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00517 name: Hex1HexNAc1NeuAc1 glycosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a carbohydrate-like group composed of Hex1HexNAc1NeuAc1 linked through a glycosidic bond." [DeltaMass:0, Unimod:149] comment: From DeltaMass: Average Mass: 657 synonym: "Hex(1)HexNAc(1)NeuAc(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc1" RELATED Unimod-description [] synonym: "NeuAc-Hex-HexNAc" EXACT DeltaMass-label [] xref: DiffAvg: "657.60" xref: DiffFormula: "C 25 H 41 N 2 O 18" xref: DiffMono: "657.235437" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: GNOme: "GNO:G17015OC" is_a: MOD:00725 ! complex glycosylation [Term] id: MOD:00518 name: HexNAc2dHex2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:150] synonym: "HexNAc(2)dHex(2)" RELATED PSI-MS-label [] synonym: "HexNAc2dHex2" RELATED Unimod-description [] xref: DiffAvg: "698.67" xref: DiffFormula: "C 28 H 46 N 2 O 18" xref: DiffMono: "698.274563" xref: Formula: "C 32 H 52 N 4 O 20" xref: MassAvg: "812.78" xref: MassMono: "812.317490" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:150" xref: GNOme: "GNO:G90423UY" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00519 name: Hex1HexNAc2Pent1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:151] synonym: "Hex(1)HexNAc(2)Pent(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc2Pent1" RELATED Unimod-description [] xref: DiffAvg: "700.64" xref: DiffFormula: "C 27 H 44 N 2 O 19" xref: DiffMono: "700.253827" xref: Formula: "C 31 H 50 N 4 O 21" xref: MassAvg: "814.75" xref: MassMono: "814.296755" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:151" xref: GNOme: "GNO:G54968WM" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00520 name: Hex1HexNAc2dHex1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:152] synonym: "Hex(1)HexNAc(2)dHex(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc2dHex1" RELATED Unimod-description [] xref: DiffAvg: "714.67" xref: DiffFormula: "C 28 H 46 N 2 O 19" xref: DiffMono: "714.269477" xref: Formula: "C 32 H 52 N 4 O 21" xref: MassAvg: "828.77" xref: MassMono: "828.312405" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:152" xref: GNOme: "GNO:G94583DZ" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00521 name: Hex2HexNAc2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:153] synonym: "Hex(2)HexNAc(2)" RELATED PSI-MS-label [] synonym: "Hex2HexNAc2" RELATED Unimod-description [] xref: DiffAvg: "730.67" xref: DiffFormula: "C 28 H 46 N 2 O 20" xref: DiffMono: "730.264392" xref: Formula: "C 32 H 52 N 4 O 22" xref: MassAvg: "844.77" xref: MassMono: "844.307319" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:153" xref: GNOme: "GNO:G53434XO" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00522 name: Hex3HexNAc1Pent1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:154] synonym: "Hex(3)HexNAc(1)Pent(1)" RELATED PSI-MS-label [] synonym: "Hex3HexNAc1Pent1" RELATED Unimod-description [] xref: DiffAvg: "821.73" xref: DiffFormula: "C 31 H 51 N 1 O 24" xref: DiffMono: "821.280102" xref: Formula: "C 35 H 57 N 3 O 26" xref: MassAvg: "935.84" xref: MassMono: "935.323029" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:154" xref: GNOme: "GNO:G64686LL" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00523 name: Hex1HexNAc2dHex1Pent1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:155] synonym: "Hex(1)HexNAc(2)dHex(1)Pent(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc2dHex1Pent1" RELATED Unimod-description [] xref: DiffAvg: "846.79" xref: DiffFormula: "C 33 H 54 N 2 O 23" xref: DiffMono: "846.311736" xref: Formula: "C 35 H 57 N 3 O 26" xref: MassAvg: "960.89" xref: MassMono: "960.354663" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:155" xref: GNOme: "GNO:G84825UQ" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00524 name: Hex1HexNAc2dHex2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:156] synonym: "Hex(1)HexNAc(2)dHex(2)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc2dHex2" RELATED Unimod-description [] xref: DiffAvg: "860.81" xref: DiffFormula: "C 34 H 56 N 2 O 23" xref: DiffMono: "860.327386" xref: Formula: "C 38 H 62 N 4 O 25" xref: MassAvg: "974.92" xref: MassMono: "974.370313" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:156" xref: GNOme: "GNO:G05460KC" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00525 name: Hex2HexNAc2Pent1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:157] synonym: "Hex(2)HexNAc(2)Pent(1)" RELATED PSI-MS-label [] synonym: "Hex2HexNAc2Pent1" RELATED Unimod-description [] xref: DiffAvg: "862.79" xref: DiffFormula: "C 33 H 54 N 2 O 24" xref: DiffMono: "862.306651" xref: Formula: "C 37 H 60 N 4 O 26" xref: MassAvg: "976.89" xref: MassMono: "976.349578" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:157" xref: GNOme: "GNO:G18999EB" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00526 name: Hex2HexNAc2dHex1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:158] synonym: "Hex(2)HexNAc(2)dHex(1)" RELATED PSI-MS-label [] synonym: "Hex2HexNAc2dHex1" RELATED Unimod-description [] xref: DiffAvg: "876.81" xref: DiffFormula: "C 34 H 56 N 2 O 24" xref: DiffMono: "876.322301" xref: Formula: "C 38 H 62 N 4 O 26" xref: MassAvg: "990.92" xref: MassMono: "990.365228" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:158" xref: GNOme: "GNO:G93579XB" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00527 name: Hex3HexNAc2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [DeltaMass:0, RESID:AA0151#var, Unimod:159] comment: From DeltaMass: Average Mass: 893 synonym: "(Hex)3-HexNAc-HexNAc" EXACT DeltaMass-label [] synonym: "Hex(3)HexNAc(2)" RELATED PSI-MS-label [] synonym: "Hex3HexNAc2" RELATED Unimod-description [] xref: DiffAvg: "892.81" xref: DiffFormula: "C 34 H 56 N 2 O 25" xref: DiffMono: "892.317215" xref: Formula: "C 38 H 62 N 4 O 27" xref: MassAvg: "1006.92" xref: MassMono: "1006.360143" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:159" xref: GNOme: "GNO:G28681TP" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00528 name: Hex1HexNAc1NeuAc2 glycosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a carbohydrate-like group composed of Hex1HexNAc1NeuAc2 linked through a glycosidic bond." [Unimod:160] synonym: "Hex(1)HexNAc(1)NeuAc(2)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc2" RELATED Unimod-description [] xref: DiffAvg: "947.85" xref: DiffFormula: "C 36 H 57 N 3 O 26" xref: DiffMono: "947.323029" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:160" xref: GNOme: "GNO:G23729WG" is_a: MOD:00725 ! complex glycosylation [Term] id: MOD:00529 name: Hex3HexNAc2P1 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [RESID:AA0151#var, Unimod:161] synonym: "Hex(3)HexNAc(2)P(1)" RELATED PSI-MS-label [] synonym: "Hex3HexNAc2P1" RELATED Unimod-description [] xref: DiffAvg: "972.79" xref: DiffFormula: "C 34 H 57 N 2 O 28 P 1" xref: DiffMono: "972.283546" xref: Formula: "C 38 H 63 N 4 O 30 P 1" xref: MassAvg: "1086.89" xref: MassMono: "1086.326473" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:161" xref: GNOme: "GNO:G88520YF" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00530 name: L-selenomethionine def: "A protein modification that effectively converts an L-methionine residue to L-selenomethionine." [OMSSA:113, PubMed:12148805, Unimod:162#M] synonym: "Delta:S(-1)Se(1)" RELATED PSI-MS-label [] synonym: "Se(S)Met" EXACT PSI-MOD-label [] synonym: "Selenium replaces sulphur" RELATED Unimod-description [] synonym: "semetm" EXACT OMSSA-label [] xref: DiffAvg: "46.91" xref: DiffFormula: "C 0 H 0 N 0 S -1 Se 1" xref: DiffMono: "47.944450" xref: Formula: "C 5 H 9 N 1 O 1 Se 1" xref: MassAvg: "178.10" xref: MassMono: "178.984935" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:162" is_a: MOD:00007 ! selenium substitution for sulfur is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00531 name: (18)O labeled deglycosylated asparagine def: "A protein modification that effectively converts an L-asparagine residue to L-aspartic acid with one (18)O as the result of having been deglycosylated in (18)O water." [PubMed:14435542, Unimod:170] subset: PSI-MOD-slim synonym: "Delta:H(1)O(-1)18O(1)" RELATED PSI-MS-label [] synonym: "glycosylated asparagine 18O labeling" RELATED Unimod-description [] xref: DiffAvg: "2.99" xref: DiffFormula: "H -1 N -1 (18)O 1" xref: DiffMono: "2.988262" xref: Formula: "C 4 H 5 N 1 (16)O 2 (18)O 1" xref: MassAvg: "117.03" xref: MassMono: "117.031189" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:170" is_a: MOD:01293 ! 1x(18)O labeled deamidated L-asparagine [Term] id: MOD:00532 name: Shimadzu 13CNBS def: "modification from Unimod Chemical derivative" [PubMed:12845591, Unimod:171] synonym: "NBS:13C(6)" RELATED Unimod-interim [] synonym: "Shimadzu NBS-13C" RELATED Unimod-description [] xref: DiffAvg: "159.01" xref: DiffFormula: "(13)C 6 H 3 N 1 O 2 S 1" xref: DiffMono: "159.008578" xref: Formula: "(12)C 11 (13)C 6 H 13 N 3 O 3 S 1" xref: MassAvg: "345.09" xref: MassMono: "345.087891" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:171" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00533 name: Shimadzu 12CNBS def: "modification from Unimod Chemical derivative" [PubMed:12845591, Unimod:172] synonym: "NBS" RELATED Unimod-interim [] synonym: "Shimadzu NBS-12C" RELATED Unimod-description [] xref: DiffAvg: "152.99" xref: DiffFormula: "(12)C 6 H 3 N 1 O 2 S 1" xref: DiffMono: "152.988449" xref: Formula: "(12)C 17 H 13 N 3 O 3 S 1" xref: MassAvg: "339.07" xref: MassMono: "339.067762" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:172" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00534 name: Michael addition of BHT quinone methide to cysteine and lysine def: "modification from Unimod Post-translational" [PubMed:9448752, Unimod:176] comment: Butylated Hydroxytoluene adduct. synonym: "BHT" RELATED PSI-MS-label [] synonym: "Michael addition of BHT quinone methide to Cysteine and Lysine" RELATED Unimod-description [] xref: DiffAvg: "218.34" xref: DiffFormula: "C 15 H 22 O 1" xref: DiffMono: "218.167065" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:176" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00535 name: phosphorylation to amine thiol def: "modification from Unimod Chemical derivative" [PubMed:12216740, Unimod:178] comment: DAET = 2-(dimethylamino)ethanethiol. The phosphorylation to amine is the beta elimination of phosphate and Michael addition of 2-(dimethylamino)ethanethiol to the site. synonym: "DAET" RELATED PSI-MS-label [] synonym: "phosphorylation to amine thiol" RELATED Unimod-description [] xref: DiffAvg: "87.18" xref: DiffFormula: "C 4 H 9 N 1 O -1 S 1" xref: DiffMono: "87.050656" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:178" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00536 name: L-serine to L-alanine replacement def: "OBSOLETE because Unimod 179 merged with Unimod 447 remap to ??? a protein modification that replaces an L-serine residue with an L-alanine residue" [Unimod:179] synonym: "Ser_Ala" EXACT PSI-MOD-label [] xref: DiffAvg: "-16.00" xref: DiffFormula: "O -1" xref: DiffMono: "-15.994915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:179" is_obsolete: true [Term] id: MOD:00537 name: L-alanine residue (Thr) def: "A protein modification that effectively converts an L-threonine residue to L-alanine." [Unimod:659] comment: This could represent either an engineered replacement or a chemical modification. synonym: "Thr(Ala)" EXACT PSI-MOD-label [] synonym: "Thr->Ala" RELATED Unimod-interim [] synonym: "Thr->Ala substitution" RELATED Unimod-description [] xref: DiffAvg: "-30.03" xref: DiffFormula: "C -1 H -2 O -1" xref: DiffMono: "-30.010565" xref: Formula: "C 3 H 5 N 1 O 1" xref: MassAvg: "71.08" xref: MassMono: "71.037114" xref: Origin: "T" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:659" is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00538 name: protein modification categorized by isobaric sets def: "Modified amino acid residues groups into isobaric sets at particular mass resolution cut-offs." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00000 ! protein modification [Term] id: MOD:00539 name: threonine reduced to aminobutynate def: "OBSOLETE because Unimod 179 merged wth Unimod 447 remap to ??? modification from Unimod O-linked glycosylation" [Unimod:182] xref: DiffAvg: "-17.01" xref: DiffFormula: "H -1 O -1" xref: DiffMono: "-17.002740" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:182" is_obsolete: true [Term] id: MOD:00540 name: 9x(13)C labeled residue def: "A protein modification that effectively converts a residue containing common isotopes to a 9x(13)C labeled residue." [PubMed:12716131, Unimod:184] synonym: "13C(9) Silac label" RELATED Unimod-description [] synonym: "Label:13C(9)" RELATED PSI-MS-label [] xref: DiffAvg: "9.03" xref: DiffFormula: "(12)C -9 (13)C 9" xref: DiffMono: "9.030194" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:184" is_a: MOD:00842 ! (13)C labeled residue [Term] id: MOD:00541 name: 9x(13)C labeled L-phosphotyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 9x(13)C labeled L-phosphotyrosine." [PubMed:12716131, Unimod:185] synonym: "C13 label (Phosphotyrosine)" RELATED Unimod-description [] synonym: "Label:13C(9)+Phospho" RELATED PSI-MS-label [] xref: DiffAvg: "89.00" xref: DiffFormula: "(12)C -9 (13)C 9 H 1 O 3 P 1" xref: DiffMono: "88.996524" xref: Formula: "(13)C 9 H 10 N 1 O 5 P 1" xref: MassAvg: "252.06" xref: MassMono: "252.059853" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:185" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:00842 ! (13)C labeled residue relationship: derives_from MOD:00540 ! 9x(13)C labeled residue relationship: derives_from MOD:00048 ! O4'-phospho-L-tyrosine [Term] id: MOD:00542 name: hydroxyphenylglyoxal arginine def: "modification from Unimod Chemical derivative" [PubMed:11698400, PubMed:11914093, Unimod:186] synonym: "HPG" RELATED PSI-MS-label [] synonym: "Hydroxyphenylglyoxal arginine" RELATED Unimod-description [] xref: DiffAvg: "132.12" xref: DiffFormula: "C 8 H 4 O 2" xref: DiffMono: "132.021129" xref: Formula: "C 14 H 16 N 4 O 3" xref: MassAvg: "288.31" xref: MassMono: "288.122240" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:186" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00543 name: bis(hydroxyphenylglyoxal) arginine def: "modification from Unimod Chemical derivative" [PubMed:11698400, Unimod:187] comment: OH-PGO and PGO react with arginine at a stoichiometry of 2:1 [Unimod]. synonym: "2HPG" RELATED PSI-MS-label [] synonym: "bis(hydroxphenylglyoxal) arginine" RELATED Unimod-description [] xref: DiffAvg: "282.25" xref: DiffFormula: "C 16 H 10 O 5" xref: DiffMono: "282.052823" xref: Formula: "C 22 H 22 N 4 O 6" xref: MassAvg: "438.44" xref: MassMono: "438.153934" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:187" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00544 name: 6x(13)C labeled residue def: "A protein modification that effectively converts a residue containing common isotopes to a 6x(13)C labeled residue." [PubMed:12716131, Unimod:188] subset: PSI-MOD-slim synonym: "13C(6) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "6.02" xref: DiffFormula: "(12)C -6 (13)C 6" xref: DiffMono: "6.020129" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:188" is_a: MOD:00842 ! (13)C labeled residue [Term] id: MOD:00545 name: deuterated dimethyl labeling (D) def: "OBSOLETE because redundant with MOD:00927. Remap to MOD:00927." [PubMed:14670044] xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Remap: "MOD:00927" is_obsolete: true [Term] id: MOD:00546 name: (18)O label at both C-terminal oxygens def: "A protein modification that effectively substitutes two (18)O atom for the two (16)O atoms of an alpha-carboxyl (1-carboxyl) group." [OMSSA:88, PubMed:11467524, Unimod:193] subset: PSI-MOD-slim synonym: "ctermpepdio18" EXACT OMSSA-label [] synonym: "Label:18O(2)" RELATED PSI-MS-label [] synonym: "O18 label at both C-terminal oxygens" RELATED Unimod-description [] xref: DiffAvg: "4.01" xref: DiffFormula: "(16)O -2 (18)O 2" xref: DiffMono: "4.008493" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:193" is_a: MOD:00847 ! (18)O disubstituted residue [Term] id: MOD:00547 name: 6-aminoquinolyl-N-hydroxysuccinimidyl carbamate def: "modification from Unimod Chemical derivative used for amino acid analysis" [PubMed:14997490, Unimod:194] synonym: "6-aminoquinolyl-N-hydroxysuccinimidyl carbamate" RELATED Unimod-description [] synonym: "AccQTag" RELATED PSI-MS-label [] xref: DiffAvg: "170.17" xref: DiffFormula: "C 10 H 6 N 2 O 1" xref: DiffMono: "170.048013" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:194" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00548 name: APTA def: "modification from Unimod Chemical derivative" [PubMed:15283597, Unimod:195] comment: Derivatization of cysteine with 3-acrylamidopropyl)trimethylammonium chloride [JSG]. synonym: "APTA-d0" RELATED Unimod-description [] synonym: "QAT" RELATED PSI-MS-label [] xref: DiffAvg: "171.26" xref: DiffFormula: "C 9 H 19 N 2 O 1" xref: DiffMono: "171.149738" xref: Formula: "C 12 H 24 N 3 O 2 S 1" xref: MassAvg: "274.40" xref: MassMono: "274.158923" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:195" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00549 name: APTA d3 def: "modification from Unimod Isotopic label" [PubMed:15283597, Unimod:196] comment: Derivatization of cysteine with 3-acrylamidopropyl)trimethylammonium chloride (difference formula correct) [JSG]. synonym: "(3-acrylamidopropyl)trimethylammonium" RELATED Unimod-description [] synonym: "APTA d3" RELATED Unimod-description [] synonym: "QAT:2H(3)" RELATED PSI-MS-label [] xref: DiffAvg: "174.17" xref: DiffFormula: "C 9 (1)H 16 (2)H 3 N 2 O 1" xref: DiffMono: "174.168568" xref: Formula: "C 12 (1)H 21 (2)H 3 N 3 O 2 S 1" xref: MassAvg: "277.18" xref: MassMono: "277.177753" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:196" is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:00550 name: EAPTA d0 def: "modification from Unimod Chemical derivative" [Unimod:197] synonym: "EAPTA d0" RELATED Unimod-description [] synonym: "EQAT" RELATED PSI-MS-label [] xref: DiffAvg: "184.28" xref: DiffFormula: "C 10 H 20 N 2 O 1" xref: DiffMono: "184.157563" xref: Formula: "C 13 H 25 N 3 O 2 S 1" xref: MassAvg: "287.42" xref: MassMono: "287.166748" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:197" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00551 name: EAPTA d5 def: "modification from Unimod Isotopic label" [Unimod:198] synonym: "EAPTA d5" RELATED Unimod-description [] synonym: "EQAT:2H(5)" RELATED PSI-MS-label [] xref: DiffAvg: "189.19" xref: DiffFormula: "C 10 (1)H 15 (2)H 5 N 2 O 1" xref: DiffMono: "189.188947" xref: Formula: "C 13 (1)H 20 (2)H 5 N 3 O 2 S 1" xref: MassAvg: "292.20" xref: MassMono: "292.198132" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:198" is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:00552 name: 4x(2)H labeled dimethylated residue def: "A protein modification that effectively converts a residue containing common isotopes to a 4x(2)H labeled dimethylated residue." [PubMed:14670044, Unimod:199] comment: Supposed to be alpha-amino and Lys-N6 derivatized by C(2)H2O and reduction. subset: PSI-MOD-slim synonym: "DiMethyl-CHD2" RELATED Unimod-description [] synonym: "Dimethyl:2H(4)" RELATED PSI-MS-label [] xref: DiffAvg: "32.06" xref: DiffFormula: "C 2 (2)H 4" xref: DiffMono: "32.056407" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:199" is_a: MOD:00839 ! (2)H deuterium labeled residue [Term] id: MOD:00553 name: 1,2-ethanedithiol modified residue def: "A protein modification that effectively substitutes a (2-sulfanylethyl)sulfanyl (or thioethylthiol) group for a hydroxy group." [DeltaMass:0, PubMed:11507762, Unimod:200] comment: From DeltaMass: Average Mass: 93; supposed to be derivatization of serine and threonine. synonym: "1,2-ethanedithiol (EDT)" EXACT DeltaMass-label [] synonym: "EDT" RELATED Unimod-description [] synonym: "Ethanedithiol" RELATED PSI-MS-label [] xref: DiffAvg: "76.18" xref: DiffFormula: "C 2 H 4 O -1 S 2" xref: DiffMono: "75.980528" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:200" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00554 name: APTA-d0 with no neutral loss def: "OBSOLETE because Unimod entry 202 was merged with entry 195, remap to MOD:00548. modification from Unimod Chemical derivative" [Unimod:202] xref: DiffAvg: "170.26" xref: DiffFormula: "C 9 H 18 N 2 O 1" xref: DiffMono: "170.141913" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00548" xref: Unimod: "Unimod:202" is_obsolete: true [Term] id: MOD:00555 name: APTA-d0 with quaternary amine loss def: "OBSOLETE because Unimod entry 202 was merged with entry 195, remap to MOD:00548. modification from Unimod Chemical derivative" [Unimod:203] xref: DiffAvg: "170.26" xref: DiffFormula: "C 9 H 18 N 2 O 1" xref: DiffMono: "170.141913" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00548" xref: Unimod: "Unimod:203" is_obsolete: true [Term] id: MOD:00556 name: acrolein addition +94 def: "OBSOLETE because this modification not supported by any literature that I can find[PMT]" [Unimod:205] synonym: "Acrolein addition +94" RELATED Unimod-description [] synonym: "Delta:H(6)C(6)O(1)" RELATED PSI-MS-label [] xref: DiffAvg: "94.11" xref: DiffFormula: "C 6 H 6 O 1" xref: DiffMono: "94.041865" xref: Formula: "C 12 H 18 N 2 O 2" xref: MassAvg: "222.29" xref: MassMono: "222.136828" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:205" is_obsolete: true [Term] id: MOD:00557 name: acrolein addition +56 def: "OBSOLETE because this modification not supported by the papers listed or any other that I can find[PMT]" [PubMed:10825247, PubMed:15541752, Unimod:206] synonym: "Acrolein addition +56" RELATED Unimod-description [] synonym: "Delta:H(4)C(3)O(1)" RELATED PSI-MS-label [] xref: DiffAvg: "56.06" xref: DiffFormula: "C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:206" is_obsolete: true [Term] id: MOD:00558 name: acrolein addition +38 def: "OBSOLETE because this modification not supported by any literature that I can find[PMT]" [Unimod:207] synonym: "Acrolein addition +38" RELATED Unimod-description [] synonym: "Delta:H(2)C(3)" RELATED PSI-MS-label [] xref: DiffAvg: "38.05" xref: DiffFormula: "C 3 H 2" xref: DiffMono: "38.015650" xref: Formula: "C 9 H 14 N 2 O 1" xref: MassAvg: "166.22" xref: MassMono: "166.110613" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:207" is_obsolete: true [Term] id: MOD:00559 name: acrolein addition +76 def: "OBSOLETE because this modification not supported by any literature that I can find[PMT]" [Unimod:208] synonym: "Acrolein addition +76" RELATED Unimod-description [] synonym: "Delta:H(4)C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "76.10" xref: DiffFormula: "C 6 H 4" xref: DiffMono: "76.031300" xref: Formula: "C 12 H 16 N 2 O 1" xref: MassAvg: "204.27" xref: MassMono: "204.126263" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:208" is_obsolete: true [Term] id: MOD:00560 name: acrolein addition +112 def: "OBSOLETE because this modification not supported by any literature that I can find[PMT]" [Unimod:209] synonym: "Acrolein addition +112" RELATED Unimod-description [] synonym: "Delta:H(8)C(6)O(2)" RELATED PSI-MS-label [] xref: DiffAvg: "112.13" xref: DiffFormula: "C 6 H 8 O 2" xref: DiffMono: "112.052429" xref: Formula: "C 12 H 20 N 2 O 3" xref: MassAvg: "240.30" xref: MassMono: "240.147393" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:209" is_obsolete: true [Term] id: MOD:00561 name: N-ethyl iodoacetamide- def: "modification from Unimod Isotopic label" [PubMed:12766232, Unimod:211] synonym: "N-ethyl iodoacetamide-d0" RELATED Unimod-description [] synonym: "NEIAA" RELATED PSI-MS-label [] xref: DiffAvg: "85.11" xref: DiffFormula: "C 4 H 7 N 1 O 1" xref: DiffMono: "85.052764" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:211" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00562 name: N-ethyl iodoacetamide-d5 def: "modification from Unimod Isotopic label" [PubMed:12766232, Unimod:212] synonym: "N-ethyl iodoacetamide-d5" RELATED Unimod-description [] synonym: "NEIAA:2H(5)" RELATED PSI-MS-label [] xref: DiffAvg: "90.08" xref: DiffFormula: "C 4 (1)H 2 (2)H 5 N 1 O 1" xref: DiffMono: "90.084148" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:212" is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:00563 name: mono-N-acetylaminogalactosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an N-acetylaminogalactose group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "GalNAcRes" EXACT PSI-MOD-label [] synonym: "HexNAc" RELATED PSI-MS-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00734 ! N-acetylaminogalactosylated is_a: MOD:01673 ! N-acetylaminohexosylated residue [Term] id: MOD:00564 name: Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry def: "Modification from Unimod Isotopic label. The Unimod term was extracted when it had not been approved. OBSOLETE because redundant to MOD:01505. Remap to MOD:01505, or one of the child terms MOD:01493 or MOD:01497." [Unimod:214, URL:http\://docs.appliedbiosystems.com/pebiodocs/04351918.pdf] synonym: "iTRAQ4plex" RELATED Unimod-interim [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01505" xref: Unimod: "Unimod:214" is_obsolete: true [Term] id: MOD:00565 name: deglycosylated asparagine def: "modification from Unimod N-linked glycosylation" [Unimod:7#N] comment: Conversion of glycosylated asparagine residues upon deglycosylation with PGNase F in H2O. CAUTION - the difference formula appears to be based on a partial structure [JSG]. synonym: "Deamidated" RELATED Unimod-interim [] synonym: "Deamidation" RELATED Unimod-description [] xref: DiffAvg: "0.98" xref: DiffFormula: "H -1 N -1 O 1" xref: DiffMono: "0.984016" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:7" is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00566 name: label cysteine with IGBP reagent def: "modification from Unimod Chemical derivative" [Unimod:243] comment: "IDBEST tag for quantitation, http://www.targetdiscovery.com/index.php?topic=prod.idbe" synonym: "IGBP" RELATED PSI-MS-label [] synonym: "Light IDBEST tag for quantitation" RELATED Unimod-description [] xref: DiffAvg: "297.15" xref: DiffFormula: "Br 1 C 12 H 13 N 2 O 2" xref: DiffMono: "296.016040" xref: Formula: "Br 1 C 15 H 18 N 3 O 3 S 1" xref: MassAvg: "400.29" xref: MassMono: "399.025225" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:243" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00567 name: histidine oxidation to asparagine def: "OBSOLETE because Unimod entry 244 is redundant with Unimod 348. Remap to MOD:00775." [ChEBI:29956, PubMed:15736973, PubMed:5681232, PubMed:6692818, PubMed:9789001, RESID:AA0003, Unimod:244] xref: DiffAvg: "-23.04" xref: DiffFormula: "C -2 H -1 N -1 O 1" xref: DiffMono: "-23.015984" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:244" is_obsolete: true [Term] id: MOD:00568 name: histidine oxidation to aspartic acid def: "OBSOLETE because Unimod entry 245 is redundant with Unimod 349. Remap to MOD:00776" [PubMed:1097438, PubMed:339692, PubMed:4399050, PubMed:5764436, PubMed:6692818, PubMed:8089117, PubMed:9521123, PubMed:9582379, Unimod:245] xref: DiffAvg: "-22.05" xref: DiffFormula: "C -2 H -2 N -2 O 2" xref: DiffMono: "-22.031969" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00776" xref: UinMod: "Unimod:245" is_obsolete: true [Term] id: MOD:00569 name: residues isobaric at a resolution below 0.000001 Da def: "Natural or modified residues that are isobaric at a resolution below 0.000001 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00770 ! residues isobaric at a resolution below 0.01 Da [Term] id: MOD:00570 name: residues isobaric at 71.037114 Da def: "Natural or modified residues with a mass of 71.037114 Da." [PubMed:18688235] is_a: MOD:00569 ! residues isobaric at a resolution below 0.000001 Da is_a: MOD:00769 ! residues isobaric at 71.0-71.1 Da [Term] id: MOD:00571 name: 2-pyrrolidone-5-carboxylic acid (Pro) def: "A modification that effectively oxygenates C5 of an L-proline residue to form a 2-pyrrolidone-5-carboxylic acid, pyroglutamic acid." [OMSSA:111, PubMed:9252331, Unimod:359] comment: The review article PubMed:9252331 does not provide an original citation for this modification [JSG]. synonym: "Pro->pyro-Glu" RELATED PSI-MS-label [] synonym: "PyrGlu(Pro)" EXACT PSI-MOD-label [] synonym: "Pyroglutamic" RELATED Unimod-interim [] synonym: "pyroglutamicp" EXACT OMSSA-label [] xref: DiffAvg: "13.98" xref: DiffFormula: "H -2 O 1" xref: DiffMono: "13.979265" xref: Formula: "C 5 H 6 N 1 O 2" xref: MassAvg: "112.11" xref: MassMono: "112.039853" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:359" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01048 ! 2-pyrrolidone-5-carboxylic acid [Term] id: MOD:00572 name: oxidized arginine biotinylated with biotin hydrazide def: "modification from Unimod Chemical derivative" [PubMed:15174056, PubMed:15828771, Unimod:343] synonym: "Argbiotinhydrazide" RELATED Unimod-interim [] synonym: "oxidized Arginine biotinylated with biotin hydrazide" RELATED Unimod-description [] xref: DiffAvg: "199.27" xref: DiffFormula: "C 9 H 13 N 1 O 2 S 1" xref: DiffMono: "199.066700" xref: Formula: "C 15 H 25 N 5 O 3 S 1" xref: MassAvg: "355.46" xref: MassMono: "355.167811" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:343" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00573 name: oxidized lysine biotinylated with biotin hydrazide def: "modification from Unimod Chemical derivative" [PubMed:15174056, Unimod:353] comment: "http://www.piercenet.com/Proteomics/browse.cfm?fldID=84EBE112-F871-4CA5-807F-47327153CFCB" synonym: "Lysbiotinhydrazide" RELATED Unimod-interim [] synonym: "oxidized Lysine biotinylated with biotin hydrazide" RELATED Unimod-description [] xref: DiffAvg: "241.31" xref: DiffFormula: "C 10 H 15 N 3 O 2 S 1" xref: DiffMono: "241.088498" xref: Formula: "C 16 H 27 N 5 O 3 S 1" xref: MassAvg: "369.48" xref: MassMono: "369.183461" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:353" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00574 name: oxidized proline biotinylated with biotin hydrazide def: "modification from Unimod Chemical derivative" [PubMed:15174056, Unimod:357] comment: "http://www.piercenet.com/Proteomics/browse.cfm?fldID=84EBE112-F871-4CA5-807F-47327153CFCB" synonym: "oxidized proline biotinylated with biotin hydrazide" RELATED Unimod-description [] synonym: "probiotinhydrazide" RELATED Unimod-interim [] xref: DiffAvg: "258.34" xref: DiffFormula: "C 10 H 18 N 4 O 2 S 1" xref: DiffMono: "258.115047" xref: Formula: "C 15 H 25 N 5 O 3 S 1" xref: MassAvg: "355.46" xref: MassMono: "355.167811" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:357" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00575 name: oxidized threonine biotinylated with biotin hydrazide def: "modification from Unimod Chemical derivative" [PubMed:15174056, Unimod:361] comment: "http://www.piercenet.com/Proteomics/browse.cfm?fldID=84EBE112-F871-4CA5-807F-47327153CFCB" synonym: "oxidized Threonine biotinylated with biotin hydrazide" RELATED Unimod-description [] synonym: "Thrbiotinhydrazide" RELATED Unimod-interim [] xref: DiffAvg: "240.32" xref: DiffFormula: "C 10 H 16 N 4 O 1 S 1" xref: DiffMono: "240.104482" xref: Formula: "C 14 H 23 N 5 O 3 S 1" xref: MassAvg: "341.43" xref: MassMono: "341.152161" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:361" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00576 name: crotonylated residue def: "modification from Unimod Other" [PubMed:11283024, PubMed:25907603, Unimod:253] synonym: "Crotonaldehyde" RELATED PSI-MS-label [] synonym: "Crotonaldehyde" RELATED Unimod-description [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 O 1" xref: DiffMono: "70.041865" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:253" is_a: MOD:00649 ! acylated residue [Term] id: MOD:00577 name: acetaldehyde crosslinked penta-L-lysine def: "modification occurs as a Schiff base in the presence of pentalysine" [PubMed:7744761, Unimod:254] synonym: "Acetaldehyde +26" RELATED Unimod-description [] synonym: "Delta:H(2)C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "26.04" xref: DiffFormula: "C 2 H 2" xref: DiffMono: "26.015650" xref: Formula: "C 8 H 14 N 2 O 1" xref: MassAvg: "666.91" xref: MassMono: "666.490465" xref: Origin: "K, K, K, K, K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:254" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:00692 ! uncategorized crosslinked residues [Term] id: MOD:00578 name: acetaldehyde +28 def: "OBSOLETE because this modification not supported by any literature that I can find [PMT]" [Unimod:255] synonym: "Acetaldehyde +28" RELATED Unimod-description [] synonym: "Delta:H(4)C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "C " xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:255" is_obsolete: true [Term] id: MOD:00579 name: propionaldehyde +40 def: "OBSOLETE because not supported by the linked literature [PMT]. modification from Unimod Other" [Unimod:256] synonym: "Delta:H(4)C(3)" RELATED PSI-MS-label [] synonym: "Propionaldehyde +40" RELATED Unimod-description [] xref: DiffAvg: "40.06" xref: DiffFormula: "C 3 H 4" xref: DiffMono: "40.031300" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:256" is_obsolete: true [Term] id: MOD:00580 name: propionaldehyde +42 def: "OBSOLETE because entry removed from Unimod. Remap potentially to MOD:00579 propionaldehyde +40" [Unimod:257] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6" xref: DiffMono: "42.046950" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00579" xref: Unimod: "Unimod:257" is_obsolete: true [Term] id: MOD:00581 name: (18)O monosubstituted residue def: "A protein modification that effectively substitutes one (18)O atom for one (16)O atom." [OMSSA:87, PubMed:11467524, Unimod:258] subset: PSI-MOD-slim synonym: "ctermpepo18" EXACT OMSSA-label [] synonym: "Label:18O(1)" RELATED PSI-MS-label [] synonym: "O18 Labeling" RELATED Unimod-description [] xref: DiffAvg: "2.00" xref: DiffFormula: "(16)O -1 (18)O 1" xref: DiffMono: "2.004246" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:258" is_a: MOD:00845 ! (18)O substituted residue [Term] id: MOD:00582 name: 6x(13)C,2x(15)N labeled L-lysine def: "A protein modification that effectively converts an L-lysine residue to 6x(13)C,2x(15)N labeled L-lysine." [OMSSA:181, PubMed:12716131, Unimod:259] synonym: "13C(6) 15N(2) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)15N(2)" RELATED PSI-MS-label [] synonym: "lys-13C615N2" EXACT OMSSA-label [] xref: DiffAvg: "8.01" xref: DiffFormula: "(12)C -6 (13)C 6 (14)N -2 (15)N 2" xref: DiffMono: "8.014199" xref: Formula: "(13)C 6 H 12 (15)N 2 O 1" xref: MassAvg: "136.11" xref: MassMono: "136.109162" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:259" is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00843 ! (15)N labeled residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00583 name: thiophosphorylated residue def: "A protein modification that effectively replaces a hydrogen atom with a thiophosphono group (H2PO2S, 'thiophosphate')." [PubMed:12110917, Unimod:260] synonym: "Thiophospho" RELATED PSI-MS-label [] synonym: "Thiophosphorylation" RELATED Unimod-description [] xref: DiffAvg: "96.04" xref: DiffFormula: "H 1 O 2 P 1 S 1" xref: DiffMono: "95.943487" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:260" is_a: MOD:00860 ! sulfur containing modified residue is_a: MOD:00861 ! phosphorus containing modified residue [Term] id: MOD:00584 name: 4-sulfophenyl isothiocyanate derivatized residue def: "A protein modification produced by formation of an adduct with 4-sulfophenyl isothiocyanate." [PubMed:14689565, PubMed:14745769, PubMed:16526082, Unimod:261] synonym: "4-sulfophenyl isothiocyanate" RELATED Unimod-description [] synonym: "SPITC" RELATED PSI-MS-label [] xref: DiffAvg: "215.24" xref: DiffFormula: "C 7 H 5 N 1 O 3 S 2" xref: DiffMono: "214.971085" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:261" is_a: MOD:00841 ! isothiocyanate reagent derivatized residue [Term] id: MOD:00585 name: deuterium trisubstituted residue def: "A protein modification that effectively substitutes three (2)H deuterium atoms for three (1)H protium atoms." [Unimod:262] synonym: "D(H)3Res" EXACT PSI-MOD-label [] synonym: "Label:2H(3)" RELATED PSI-MS-label [] synonym: "Trideuteration" RELATED Unimod-description [] xref: DiffAvg: "3.02" xref: DiffFormula: "(1)H -3 (2)H 3" xref: DiffMono: "3.018830" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:262" is_a: MOD:00786 ! deuterium substituted residue [Term] id: MOD:00586 name: pyridyl thiol modified residue def: "modification from Unimod Chemical derivative" [Unimod:264] synonym: "PET" RELATED PSI-MS-label [] synonym: "phosphorylation to pyridyl thiol" RELATED Unimod-description [] xref: DiffAvg: "121.20" xref: DiffFormula: "C 7 H 7 N 1 O -1 S 1" xref: DiffMono: "121.035006" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:264" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00587 name: 6x(13)C,4x(15)N labeled L-arginine def: "A protein modification that effectively converts an L-arginine residue to 6x(13)C, 4x(15)N labeled L-arginine." [OMSSA:137, PubMed:12716131, Unimod:267] subset: PSI-MOD-slim synonym: "13C(6) 15N(4) Silac label" RELATED Unimod-description [] synonym: "arg-13c6-15n4" EXACT OMSSA-label [] synonym: "Label:13C(6)15N(4)" RELATED PSI-MS-label [] xref: DiffAvg: "10.01" xref: DiffFormula: "(12)C -6 (13)C 6 (14)N -4 (15)N 4" xref: DiffMono: "10.008269" xref: Formula: "(13)C 6 H 12 (15)N 4 O 1" xref: MassAvg: "166.11" xref: MassMono: "166.109380" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:267" is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00843 ! (15)N labeled residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00588 name: 5x(13)C,1x(15)N labeled L-valine def: "A protein modification that effectively converts an L-valine residue to 5x(13)C,1x(15)N labeled L-valine." [PubMed:12771378, Unimod:268#V] synonym: "13C(5) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(5)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "6.01" xref: DiffFormula: "(12)C -5 (13)C 5 (14)N -1 (15)N 1" xref: DiffMono: "6.013809" xref: Formula: "(13)C 5 H 9 (15)N 1 O 1" xref: MassAvg: "105.08" xref: MassMono: "105.082223" xref: Origin: "V" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:268" is_a: MOD:00920 ! modified L-valine residue is_a: MOD:01809 ! 5x(13)C,1x(15)N labeled residue [Term] id: MOD:00589 name: 9x(13)C,1x(15)N labeled L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to (13)C,(15)N labeled L-phenylalanine." [PubMed:12771378, Unimod:269] synonym: "13C(9) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(9)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "10.03" xref: DiffFormula: "(12)C -9 (13)C 9 (14)N -1 (15)N 1" xref: DiffMono: "10.027228" xref: Formula: "(13)C 9 H 9 (15)N 1 O 1" xref: MassAvg: "157.10" xref: MassMono: "157.095642" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:269" is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00843 ! (15)N labeled residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:00590 name: nucleophilic addtion to cytopiloyne def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative" [PubMed:15549660, Unimod:270] synonym: "Cytopiloyne" RELATED PSI-MS-label [] synonym: "nucleophilic addtion to cytopiloyne" RELATED Unimod-description [] xref: DiffAvg: "362.38" xref: DiffFormula: "C 19 H 22 O 7" xref: DiffMono: "362.136553" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:270" is_obsolete: true [Term] id: MOD:00591 name: nucleophilic addition to cytopiloyne+H2O def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative" [PubMed:15549660, Unimod:271] synonym: "Cytopiloyne+water" RELATED PSI-MS-label [] synonym: "nucleophilic addition to cytopiloyne+H2O" RELATED Unimod-description [] xref: DiffAvg: "380.39" xref: DiffFormula: "C 19 H 24 O 8" xref: DiffMono: "380.147118" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:271" is_obsolete: true [Term] id: MOD:00592 name: sulfonation of N-terminal def: "modification from Unimod Chemical derivative" [PubMed:12705581, PubMed:15732931, PubMed:16046801, Unimod:272] synonym: "CAF" RELATED PSI-MS-label [] synonym: "sulfonation of N-terminus" RELATED Unimod-description [] xref: DiffAvg: "136.12" xref: DiffFormula: "C 3 H 4 O 4 S 1" xref: DiffMono: "135.983030" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:272" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00593 name: covalent modification of lysine by omega-maleimido alkanoyl N-hydroxysuccinimido esters def: "OBSOLETE because removed from Unimod. modification from Unimod Chemical derivative" [Unimod:273] comment: J. Prot. Chem. 2, 263-277, 1983 synonym: "covalent modification of lysine by cross-linking reagent" RELATED Unimod-description [] synonym: "Xlink:SSD" RELATED PSI-MS-label [] xref: DiffAvg: "253.25" xref: DiffFormula: "C 12 H 15 N 1 O 5" xref: DiffMono: "253.095023" xref: Formula: "C 18 H 27 N 3 O 6" xref: MassAvg: "381.43" xref: MassMono: "381.189986" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:273" is_obsolete: true [Term] id: MOD:00594 name: residues isobaric at 113.047678 Da def: "Natural or modified resiues with a mass of 113.047678 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00569 ! residues isobaric at a resolution below 0.000001 Da is_a: MOD:00624 ! residues isobaric at 113.0-113.1 Da [Term] id: MOD:00595 name: monomannosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an manose group through a glycosidic bond" [PubMed:18688235] subset: PSI-MOD-slim synonym: "ManRes" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00727 ! mannosylated residue is_a: MOD:00761 ! monohexosylated residue [Term] id: MOD:00596 name: 4-(2-aminoethyl)benzenesulfonyl fluoride derivatized residue def: "A protein modification that is produced by formation of an adduct with 4-(2-aminoethyl)benzenesulfonyl fluoride, AEBS." [DeltaMass:235, PubMed:8597590, Unimod:276] comment: From DeltaMass: Average Mass: 183 Average Mass Change:183 References:We have found that AEBSF modifies many proteins by covalent attachment, preferentially on Tyr, and to a lesser extent on Lys, His, and the amino-terminus. These modifications were identified by electrospray MS of the proteins (adds 183 Da per AEBS-group) and by peptide mapping and MS/MS. All the proteins we examined were modified after 24 hrs. at 4 C with 1 mM AEBSF in TRIS, pH 8.0. The reaction is 10-20x slower at pH 7; however AEBSF is quite stable in aqueous solution and the extent of to which the protein is modified continues to increase for several days. We have seen the addition of 10 or more AEBS-groups to proteins after prolonged storage. We found no equivalent modification from PMSF, probably because it degrades so quickly. We no longer use AEBSF, and urge caution to those who do. To address the problem, Boehringer Mannheim (now Roche Molecular Biochemicals) introduced Pefabloc PLUS which includes an additional component to compete for these side reactions. In our limited experience with Pefabloc PLUS, it reduces the +183 modifications, but does not always eliminate them. As a result, we prefer PMSF, despite its own set of drawbacks. We have never found PMSF-induced modification of proteins (except trypsin), probably due to its short half-life in aqeous solution. synonym: "AEBS" RELATED PSI-MS-label [] synonym: "AEBSF" EXACT DeltaMass-label [] synonym: "Aminoethylbenzenesulfonylation" RELATED Unimod-description [] xref: DiffAvg: "183.23" xref: DiffFormula: "C 8 H 9 N 1 O 2 S 1" xref: DiffMono: "183.035400" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:276" is_a: MOD:01652 ! sulfonyl halide reagent derivatized residue [Term] id: MOD:00597 name: methyl methanethiosulfonate def: "OBSOLETE because Unimod entry 277 redundant with Unimod 39. Remap to MOD:00110." [Unimod:277] xref: DiffAvg: "46.09" xref: DiffFormula: "C 1 H 2 S 1" xref: DiffMono: "45.987721" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00110" xref: Unimod: "Unimod:277" is_obsolete: true [Term] id: MOD:00598 name: S-(2-hydroxyethyl)cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(2-hydroxyethyl)cysteine" [PubMed:15351294, Unimod:278] comment: This modification of cysteine is produced by the reagent iodoethanol with triethylphosphine [JSG]. subset: PSI-MOD-slim synonym: "Ethanolation of Cys" RELATED Unimod-description [] synonym: "Ethanolyl" RELATED PSI-MS-label [] xref: DiffAvg: "44.05" xref: DiffFormula: "C 2 H 4 O 1" xref: DiffMono: "44.026215" xref: Formula: "C 5 H 9 N 1 O 2 S 1" xref: MassAvg: "147.19" xref: MassMono: "147.035400" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:278" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00599 name: monomethylated residue def: "A protein modification that effectively replaces one hydrogen atom with one methyl group." [PubMed:11875433, Unimod:34] subset: PSI-MOD-slim synonym: "Me1Res" EXACT PSI-MOD-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2" xref: DiffMono: "14.015650" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:34" is_a: MOD:00427 ! methylated residue [Term] id: MOD:00600 name: L-glutamic acid 5-ethyl ester def: "A protein modification that effectively converts an L-glutamic acid residue to L-glutamate 5-ethyl ester." [DeltaMass:0, PubMed:9629898, Unimod:280#E] comment: From DeltaMass: Average Mass: 28 with no citation. The Unimod citation refers to the formation of glutamate ethyl ester and not to either lysine or N-terminal alkylation. For dimethylated residues, see MOD:00429 and its children [JSG]. synonym: "Ethyl" EXACT DeltaMass-label [] synonym: "Ethyl" RELATED PSI-MS-label [] synonym: "Ethylation" RELATED Unimod-description [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "C 7 H 11 N 1 O 3" xref: MassAvg: "157.17" xref: MassMono: "157.073893" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:280" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01339 ! ethylated residue [Term] id: MOD:00601 name: cyclized residue def: "A protein modification that effectively produces an heterocyclic amino acid with a covalent bond between the side chain and either its alpha amino or 1-carboxyl group, possibly breaking the peptide chain." [PubMed:18688235] subset: PSI-MOD-slim synonym: "CycRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00602 name: N-methylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue amino or imino group with an methyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NMeRes" EXACT PSI-MOD-label [] is_a: MOD:00427 ! methylated residue [Term] id: MOD:00603 name: N-ethylation def: "OBSOLETE because Unimod entry 283 is redundant with Unimod 280. Remap to MOD:00600" [Unimod:283] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Remap: "MOD:00600" xref: Unimod: "Unimod:283" is_obsolete: true [Term] id: MOD:00604 name: 2x(2)H monomethylated L-lysine def: "A protein modification that effectively converts an L-lysine residue to 2x(2)H labeled monomethylated L-lysine." [PubMed:15525938, Unimod:284] synonym: "Deuterium Methylation of Lysine" RELATED Unimod-description [] synonym: "Methyl:2H(2)" RELATED PSI-MS-label [] xref: DiffAvg: "16.03" xref: DiffFormula: "C 1 (2)H 2" xref: DiffMono: "16.028204" xref: Formula: "C 7 (1)H 12 (2)H 2 N 2 O 1" xref: MassAvg: "144.12" xref: MassMono: "144.123167" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:284" is_a: MOD:00839 ! (2)H deuterium labeled residue is_a: MOD:00912 ! modified L-lysine residue relationship: derives_from MOD:00085 ! N6-methyl-L-lysine [Term] id: MOD:00605 name: Sulfanilic Acid (SA), light C12 def: "modification from Unimod Chemical derivative, C-Terminal/Glutamate/Aspartate sulfonation" [Unimod:285] synonym: "Light Sulfanilic Acid (SA) C12" RELATED Unimod-description [] synonym: "SulfanilicAcid" RELATED PSI-MS-label [] xref: DiffAvg: "155.00" xref: DiffFormula: "(12)C 6 H 5 N 1 O 2 S 1" xref: DiffMono: "155.004099" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:285" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00606 name: Sulfanilic Acid (SA), heavy C13 def: "modification from Unimod Chemical derivative" [PubMed:9254591, Unimod:286] synonym: "Heavy Sulfanilic Acid (SA) C13" RELATED Unimod-description [] synonym: "SulfanilicAcid:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "161.02" xref: DiffFormula: "(13)C 6 H 5 N 1 O 2 S 1" xref: DiffMono: "161.024228" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:286" is_a: MOD:01428 ! (13)C isotope tagged reagent [Term] id: MOD:00607 name: dioxoindolealanine lactone def: "modification from Unimod Chemical derivative" [PubMed:7949339, Unimod:288] comment: Unimod name, formula, and terminal specification corrected. Formula corresponded to uncleaved intermediate [JSG]. synonym: "Trp->Oxolactone" RELATED PSI-MS-label [] synonym: "Tryptophan oxidation to oxolactone" RELATED Unimod-description [] xref: DiffAvg: "30.99" xref: DiffFormula: "H -1 O 2" xref: DiffMono: "30.982004" xref: Formula: "C 11 H 9 N 2 O 3" xref: MassAvg: "217.20" xref: MassMono: "217.061317" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:288" is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00608 name: biotin polyethyleneoxide amine def: "modification from Unimod Chemical derivative" [Unimod:289] synonym: "Biotin polyethyleneoxide amine" RELATED Unimod-description [] synonym: "Biotin-PEO-Amine" RELATED Unimod-interim [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:289" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00609 name: Pierce EZ-Link Biotin-HPDP modified L-cysteine def: "modification from Unimod Chemical derivative" [Unimod:290] synonym: "Biotin-HPDP" RELATED Unimod-interim [] synonym: "Pierce EZ-Link Biotin-HPDP" RELATED Unimod-description [] xref: DiffAvg: "428.61" xref: DiffFormula: "C 19 H 32 N 4 O 3 S 2" xref: DiffMono: "428.191583" xref: Formula: "C 22 H 37 N 5 O 4 S 3" xref: MassAvg: "531.75" xref: MassMono: "531.200768" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:290" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00610 name: cysteinyl mercury def: "modification from Unimod Chemical derivative" [PubMed:10695144, Unimod:291] synonym: "Delta:Hg(1)" RELATED PSI-MS-label [] synonym: "Mercury Mercaptan" RELATED Unimod-description [] xref: DiffAvg: "200.59" xref: DiffFormula: "Hg 1" xref: DiffMono: "201.970643" xref: Formula: "C 3 H 5 Hg 1 N 1 O 1 S 1" xref: MassAvg: "303.73" xref: MassMono: "304.979828" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:291" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:01075 ! mercury containing modified residue [Term] id: MOD:00611 name: iodouridine monophosphate derivatized residue def: "A protein modification that is produced by reaction of iodouridine monophosphate with a residue." [PubMed:11112526, PubMed:11567090, PubMed:6540775, Unimod:292] synonym: "Cross-link of (Iodo)-uracil MP with W,F,Y" RELATED Unimod-description [] synonym: "IodoU-AMP" RELATED PSI-MS-label [] xref: DiffAvg: "322.17" xref: DiffFormula: "C 9 H 11 N 2 O 9 P 1" xref: DiffMono: "322.020217" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:292" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00612 name: 3-(carboxamidomethylthio)propanoylated residue def: "A protein modification that is produced by derivatization of a residue with 3,3-dithiobis[sulfosuccinimidyl propanoate], DTSSP, or with Pierce EZ-Link Sulfo-NHS-SS-Biotin reagent, sulfosuccinimidyl 3-[(2-[biotinamido]ethyl)disulfanyl]propanoate, followed by reduction with dithiothreitol and then reaction with iodoacetamide." [PubMed:15121203, Unimod:293] synonym: "3-(carbamidomethylthio)propanoyl" RELATED Unimod-description [] synonym: "CAMthiopropanoyl" RELATED PSI-MS-label [] xref: DiffAvg: "145.18" xref: DiffFormula: "C 5 H 7 N 1 O 2 S 1" xref: DiffMono: "145.019749" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:293" is_a: MOD:00649 ! acylated residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00613 name: biotinoyl-iodoacetyl-ethylenediamine def: "modification from Unimod Chemical derivative" [PubMed:10906242, Unimod:294] synonym: "biotinoyl-iodoacetyl-ethylenediamine" RELATED Unimod-description [] synonym: "IED-Biotin" RELATED PSI-MS-label [] xref: DiffAvg: "326.42" xref: DiffFormula: "C 14 H 22 N 4 O 3 S 1" xref: DiffMono: "326.141262" xref: Formula: "C 17 H 27 N 5 O 4 S 2" xref: MassAvg: "429.55" xref: MassMono: "429.150446" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:294" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00614 name: fucosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a fucose (6-deoxy-D-galactose) group through a glycosidic bond." [PubMed:11344537, PubMed:15189151, Unimod:295] subset: PSI-MOD-slim synonym: "dHex" RELATED PSI-MS-label [] synonym: "Fuc" EXACT PSI-MOD-label [] synonym: "Fucose" RELATED Unimod-description [] xref: DiffAvg: "146.14" xref: DiffFormula: "C 6 H 10 O 4" xref: DiffMono: "146.057909" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:295" xref: GNOme: "GNO:G49112ZN" is_a: MOD:00736 ! deoxyhexosylated residue [Term] id: MOD:00615 name: 4-sulfophenyl isothiocyante modification to N-term R def: "OBSOLETE because entry Unimod:261 site N-term R was abandoned. Remap to MOD:00584" [PubMed:14689565, Unimod:261] xref: DiffAvg: "215.24" xref: DiffFormula: "C 7 H 5 N 1 O 3 S 2" xref: DiffMono: "214.971085" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Remap: "MOD:00584" xref: Unimod: "Unimod:261" is_obsolete: true [Term] id: MOD:00616 name: residues isobaric at a resolution below 0.1 Da def: "Natural or modified residues that are isobaric at a resolution below 0.1 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00538 ! protein modification categorized by isobaric sets [Term] id: MOD:00617 name: 3x(2)H residue methyl ester def: "A protein modification that effectively converts a residue containing common isotopes to a 3x(2)H labeled residue methyl ester." [OMSSA:21, Unimod:298] synonym: "ctermpeptrideuteromethyl" EXACT OMSSA-label [] synonym: "deuterated methyl ester" RELATED Unimod-description [] synonym: "Methyl:2H(3)" RELATED PSI-MS-label [] xref: DiffAvg: "17.03" xref: DiffFormula: "C 1 (1)H -1 (2)H 3" xref: DiffMono: "17.034480" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "C-term" xref: Unimod: "Unimod:298" is_a: MOD:00839 ! (2)H deuterium labeled residue [Term] id: MOD:00618 name: tryptophan carboxylation def: "modification from Unimod Chemical derivative" [Unimod:299#W] comment: There is no literature citation for this Unimod entry [JSG]. synonym: "Carboxy" RELATED Unimod-interim [] synonym: "Carboxylation" RELATED Unimod-description [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 O 2" xref: DiffMono: "43.989829" xref: Formula: "C 12 H 10 N 2 O 3" xref: MassAvg: "230.22" xref: MassMono: "230.069142" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:299" is_a: MOD:00918 ! modified L-tryptophan residue is_a: MOD:01152 ! carboxylated residue [Term] id: MOD:00619 name: hydroxylethanone def: "OBSOLETE because entry 300 is redundant with Unimod 6 remap to MOD:01328" [Unimod:300] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 O 2" xref: DiffMono: "58.005479" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01328" xref: Unimod: "Unimod:300" is_obsolete: true [Term] id: MOD:00620 name: cysteine monobromobimane derivative def: "modification from Unimod Chemical derivative" [PubMed:7856876, Unimod:301] comment: 1-(bromomethyl)-2,6,7-trimethylpyrazolo[1,2-a]pyrazole-3,5-dione, C 10 H 11 Br 1 N 2 O 2. synonym: "Bromobimane" RELATED PSI-MS-label [] synonym: "Monobromobimane derivative" RELATED Unimod-description [] xref: DiffAvg: "190.20" xref: DiffFormula: "C 10 H 10 N 2 O 2" xref: DiffMono: "190.074228" xref: Formula: "C 13 H 15 N 3 O 3 S 1" xref: MassAvg: "293.34" xref: MassMono: "293.083412" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:301" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00621 name: menadione quinone derivative def: "modification from Unimod Chemical derivative" [PubMed:15939799, Unimod:302] synonym: "Menadione" RELATED Unimod-interim [] synonym: "Menadione quinone derivative" RELATED Unimod-description [] xref: DiffAvg: "170.17" xref: DiffFormula: "C 11 H 6 O 2" xref: DiffMono: "170.036779" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:302" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00622 name: cysteine mercaptoethanol def: "modification from Unimod Chemical derivative" [DeltaMass:80, PubMed:12442261, Unimod:303] comment: From DeltaMass: Average Mass: 76 Average Mass Change:76 PubMed:8019414. synonym: "Beta mercaptoethanol adduct" EXACT DeltaMass-label [] synonym: "Cysteine mercaptoethanol" RELATED Unimod-description [] synonym: "DeStreak" RELATED PSI-MS-label [] xref: DiffAvg: "76.11" xref: DiffFormula: "C 2 H 4 O 1 S 1" xref: DiffMono: "75.998286" xref: Formula: "C 5 H 9 N 1 O 2 S 2" xref: MassAvg: "179.25" xref: MassMono: "179.007471" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:303" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00623 name: fucosylated biantennary (-2 galactose) N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [Unimod:305] synonym: "dHex(1)Hex(3)HexNAc(4)" RELATED PSI-MS-label [] synonym: "Fucosylated biantennary (-2 galactose)" RELATED Unimod-description [] xref: DiffAvg: "1443.33" xref: DiffFormula: "C 56 H 90 N 4 O 39" xref: DiffMono: "1442.518219" xref: Formula: "C 60 H 96 N 6 O 41" xref: MassAvg: "1557.43" xref: MassMono: "1556.561147" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:305" xref: GNOme: "GNO:G25987BV" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00624 name: residues isobaric at 113.0-113.1 Da def: "Natural or modified residues with a mass of 113.0-113.1 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00616 ! residues isobaric at a resolution below 0.1 Da [Term] id: MOD:00625 name: N-methylmaleimide derivatized residue def: "modification from Unimod Chemical derivative" [Unimod:314] synonym: "Nmethylmaleimide" RELATED PSI-MS-label [] synonym: "Nmethylmaleimide" RELATED Unimod-description [] xref: DiffAvg: "111.10" xref: DiffFormula: "C 5 H 5 N 1 O 2" xref: DiffMono: "111.032028" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:314" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00626 name: fluorescein-5-thiosemicarbazide modified residue def: "modification from Unimod Chemical derivative" [PubMed:2883911, Unimod:478] synonym: "fluorescein-5-thiosemicarbazide" RELATED Unimod-description [] synonym: "FTC" RELATED PSI-MS-label [] xref: DiffAvg: "421.43" xref: DiffFormula: "C 21 H 15 N 3 O 5 S 1" xref: DiffMono: "421.073242" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:478" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00627 name: 2,5-dimethylpyrrole lysine from 2,5-hexanedione adduct def: "modification from Unimod Chemical derivative" [Unimod:316] comment: There is no citation for this Unimod entry. Add PubMed:7981420, correct spelling [JSG]. synonym: "(2S)-2-amino-6-(2,5-dimethylpyrrolidin-1-yl)hexanoic acid" EXACT PSI-MOD-alternate [] synonym: "2,5-dimethypyrrole" RELATED Unimod-description [] synonym: "6-(2,5-dimethylpyrrolidin-1-yl)norleucine" EXACT PSI-MOD-alternate [] synonym: "DimethylpyrroleAdduct" RELATED PSI-MS-label [] xref: DiffAvg: "78.11" xref: DiffFormula: "C 6 H 6" xref: DiffMono: "78.046950" xref: Formula: "C 12 H 18 N 2 O 1" xref: MassAvg: "206.29" xref: MassMono: "206.141913" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:316" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00628 name: Hex2 def: "a protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with two hexose sugar groups through glycosidic bonds" [PubMed:18688235] xref: DiffAvg: "324.28" xref: DiffFormula: "C 12 H 20 O 10" xref: DiffMono: "324.105647" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: GNOme: "GNO:G90627TW" is_a: MOD:00725 ! complex glycosylation [Term] id: MOD:00629 name: MDA adduct +62 def: "modification from Unimod Chemical derivative" [Unimod:318] comment: Usually major adduct formed from malondialdehyde (MDA) with the amino group of lysine residues [UniProt]. synonym: "Delta:H(2)C(5)" RELATED PSI-MS-label [] synonym: "MDA adduct +62" RELATED Unimod-description [] xref: DiffAvg: "62.07" xref: DiffFormula: "C 5 H 2" xref: DiffMono: "62.015650" xref: Formula: "C 11 H 14 N 2 O 1" xref: MassAvg: "190.25" xref: MassMono: "190.110613" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:318" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00630 name: C3-H2-O adduct (+54 amu) of malondialdehyde with lysine or methylglyoxal with arginine. def: "modification from Unimod Chemical derivative" [PubMed:9328283, Unimod:319] comment: This is not a legitimate ontological entry and will become obsolete when the children are reassigned [JSG] synonym: "Delta:H(2)C(3)O(1)" RELATED PSI-MS-label [] synonym: "MDA adduct +54" RELATED Unimod-description [] xref: DiffAvg: "54.05" xref: DiffFormula: "C 3 H 2 O 1" xref: DiffMono: "54.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:319" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00631 name: hydrolyzed N-ethylmaleimide adduct def: "modification from Unimod Chemical derivative" [Unimod:320] comment: N-ethylmaeimide adduct + H20 (a mixture of isobaric products) [JSG]. synonym: "Nethylmaleimide+water" RELATED PSI-MS-label [] synonym: "Nethylmaleimidehydrolysis" RELATED Unimod-description [] xref: DiffAvg: "143.14" xref: DiffFormula: "C 6 H 9 N 1 O 3" xref: DiffMono: "143.058243" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:320" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00632 name: N-succinimide def: "OBSOLETE because this chemical derivative modification from Unimod 321 is deprecated." [Unimod:321] xref: DiffAvg: "-17.01" xref: DiffFormula: "H -1 O -1" xref: DiffMono: "-17.002740" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:321" is_obsolete: true [Term] id: MOD:00633 name: bis-N-I-sulfonerahodamine def: "modification from Unimod Chemical derivative" [Unimod:323] comment: Invitrogen B-10621, a red fluorescent cross-linking reagent (only link to Cys is indicated) [Unimod]. synonym: "bis-((N-iodoacetyl)piperazinyl)sulfonerhodamine" EXACT PSI-MOD-alternate [] synonym: "bis-N-I-sulfonerahodamine" RELATED Unimod-description [] synonym: "Xlink:B10621" RELATED PSI-MS-label [] xref: DiffAvg: "713.57" xref: DiffFormula: "C 31 H 30 I 1 N 4 O 6 S 1" xref: DiffMono: "713.093078" xref: Formula: "C 34 H 35 I 1 N 5 O 7 S 2" xref: MassAvg: "816.71" xref: MassMono: "816.102263" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:323" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00634 name: dimethyl 3,3'-dithiobispropionimidate def: "modification from Unimod Chemical derivative" [PubMed:770170, Unimod:324] comment: Pierce reagent, needs sites for N, Q, R, K, and N-term [JSG]. synonym: "dimethyl 3,3'-dithiobispropionimidate" RELATED Unimod-description [] synonym: "DTBP" RELATED Unimod-interim [] xref: DiffAvg: "123.60" xref: DiffFormula: "C 3 Cl 1 H 6 N 1 S 1" xref: DiffMono: "122.990948" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:324" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00635 name: 10-fluoroethoxyphosphinyl-N-(biotinamidopentyl)decanamide def: "modification from Unimod Chemical derivative" [PubMed:10611275, Unimod:325] synonym: "10-ethoxyphosphinyl-N-(biotinamidopentyl)decanamide" RELATED Unimod-description [] synonym: "FP-Biotin" RELATED Unimod-interim [] xref: DiffAvg: "572.75" xref: DiffFormula: "C 27 H 49 N 4 O 5 P 1 S 1" xref: DiffMono: "572.316128" xref: Formula: "C 30 H 54 N 5 O 7 P 1 S 1" xref: MassAvg: "659.82" xref: MassMono: "659.348157" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:325" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00636 name: S-ethylcysteine (Ser) def: "A protein modification that effectively converts an L-serine residue to S-ethylcysteine." [Unimod:327] comment: Modification from Unimod. Phosphoserine is converted to dehydroalanine then by Michael addition of ethanethiol to S-ethylcysteine. Needs parent and sibling for S-ethyl-cysteine. synonym: "Delta:H(4)C(2)O(-1)S(1)" RELATED PSI-MS-label [] synonym: "S-Ethylcystine from Serine" RELATED Unimod-description [] xref: DiffAvg: "44.11" xref: DiffFormula: "C 2 H 4 O -1 S 1" xref: DiffMono: "44.008457" xref: Formula: "C 5 H 9 N 1 O 1 S 1" xref: MassAvg: "131.19" xref: MassMono: "131.040485" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:327" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00637 name: 1x(13)C,3x(2)H labeled monomethylated L-arginine def: "A protein modification that effectively replaces one hydrogen atom of an L-arginine residue with a (13)C,3x(2)H labeled methyl group to form a 1x(13)C,3x(2)H labeled monomethylated L-arginine." [Unimod:329] synonym: "Methyl:2H(3)13C(1)" RELATED PSI-MS-label [] synonym: "monomethylated arginine" RELATED Unimod-description [] xref: DiffAvg: "18.04" xref: DiffFormula: "(13)C 1 (1)H -1 (2)H 3" xref: DiffMono: "18.037835" xref: Formula: "(12)C 6 (13)C 1 (1)H 11 (2)H 3 N 4 O 1" xref: MassAvg: "174.14" xref: MassMono: "174.138946" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:329" is_a: MOD:00839 ! (2)H deuterium labeled residue is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00902 ! modified L-arginine residue relationship: derives_from MOD:00414 ! monomethylated L-arginine [Term] id: MOD:00638 name: 2x(13)C,6x(2)H labeled dimethylated L-arginine def: "A protein modification that effectively replaces two hydrogen atoms of an L-arginine residue with two (13)C,3x(2)H labeled methyl groups to form a 2x(13)C,6x(2)H labeled dimethylated L-arginine." [PubMed:15782174, Unimod:330] synonym: "Dimethyl:2H(6)13C(2)" RELATED PSI-MS-label [] synonym: "dimethylated arginine" RELATED Unimod-description [] xref: DiffAvg: "36.08" xref: DiffFormula: "(13)C 2 (1)H -2 (2)H 6" xref: DiffMono: "36.075670" xref: Formula: "(12)C 6 (13)C 2 (1)H 10 (2)H 6 N 4 O 1" xref: MassAvg: "192.18" xref: MassMono: "192.176781" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:330" is_a: MOD:00839 ! (2)H deuterium labeled residue is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00902 ! modified L-arginine residue relationship: derives_from MOD:00783 ! dimethylated L-arginine [Term] id: MOD:00639 name: thiophosphate labeled with biotin-HPDP def: "modification from Unimod Chemical derivative" [Unimod:332] synonym: "Thiophos-S-S-biotin" RELATED PSI-MS-label [] synonym: "thiophosphate labeled with biotin-HPDP" RELATED Unimod-description [] xref: DiffAvg: "525.66" xref: DiffFormula: "C 19 H 34 N 4 O 5 P 1 S 3" xref: DiffMono: "525.142895" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:332" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue [Term] id: MOD:00640 name: 6-N-biotinylaminohexyl isopropyl phosphorofluoridate def: "modification from Unimod Chemical derivative" [Unimod:333] synonym: "6-N-biotinylaminohexyl isopropyl phosphate" RELATED Unimod-description [] synonym: "Can-FP-biotin" RELATED Unimod-interim [] xref: DiffAvg: "467.54" xref: DiffFormula: "C 19 F 1 H 35 N 3 O 5 P 1 S 1" xref: DiffMono: "467.201907" xref: Formula: "C 22 F 1 H 40 N 4 O 7 P 1 S 1" xref: MassAvg: "554.62" xref: MassMono: "554.233935" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:333" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00641 name: CAMthiopropanoyl of Lys def: "OBSOLETE because Unimod entry 334 is merged with Unimod 293. Remap to MOD:00612" [Unimod:334] xref: DiffAvg: "146.18" xref: DiffFormula: "C 5 H 8 N 1 O 2 S 1" xref: DiffMono: "146.027574" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00612" xref: Unimod: "Unimod:334" is_obsolete: true [Term] id: MOD:00642 name: reduced 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of a residue with 4-hydroxynonenal artificially reduced by a reagent such as NaBH4." [PubMed:11910026, PubMed:15133838, Unimod:335] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "HNE+Delta:H(2)" RELATED PSI-MS-label [] synonym: "reduced 4-Hydroxynonenal" RELATED Unimod-description [] xref: DiffAvg: "158.24" xref: DiffFormula: "C 9 H 18 O 2" xref: DiffMono: "158.130680" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:335" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:01155 ! lipoconjugated residue relationship: derives_from MOD:00446 ! 4-hydroxynonenal adduct [Term] id: MOD:00643 name: methylamine Michael addition derivatized residue def: "modification from Unimod Artifact" [PubMed:11968134, Unimod:337] synonym: "Methylamine" RELATED PSI-MS-label [] synonym: "Michael addition with methylamine" RELATED Unimod-description [] xref: DiffAvg: "13.04" xref: DiffFormula: "C 1 H 3 N 1 O -1" xref: DiffMono: "13.031634" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:337" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00644 name: mono O-acetylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with an acetoxy group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OAcRes" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 O 1" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00394 ! monoacetylated residue is_a: MOD:00671 ! O-acylated residue [Term] id: MOD:00645 name: mono S-acetylated residue def: "A protein modification that effectively replaces a residue sulfanyl group with an acetylsulfanyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "SAcRes" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 O 1 S 0" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00394 ! monoacetylated residue is_a: MOD:00672 ! S-acylated residue [Term] id: MOD:00646 name: monoacetylated L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to either N-acetyl-L-cysteine or S-acetyl-L-cysteine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "AcCys" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1 S 0" xref: DiffMono: "42.010565" xref: Formula: "C 5 H 7 N 1 O 2 S 1" xref: MassAvg: "145.18" xref: MassMono: "145.019749" xref: Origin: "C" xref: Source: "natural" is_a: MOD:00394 ! monoacetylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00647 name: monoacetylated L-serine def: "A protein modification that effectively converts an L-serine residue to either N-acetyl-L-serine, O-acetyl-L-serine, or N,O-diacetyl-L-serine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "AcSer" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "S" xref: Source: "natural" is_a: MOD:00394 ! monoacetylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00648 name: N,O-diacetylated L-serine def: "A protein modification that effectively converts an L-serine residue to N,O-diacetyl-L-serine." [PubMed:16731519, PubMed:489587, PubMed:7309355, RESID:AA0051#var, RESID:AA0364#var] comment: In one paper, the samples were prepared using glacial acetic acid, and were probably artifactual [JSG]. synonym: "(S)-2-acetamido-3-acetyloxypropanoic acid" EXACT PSI-MOD-alternate [] synonym: "N,O-diacetyl-L-serine" EXACT PSI-MOD-alternate [] synonym: "N,O-diacetylserine" EXACT PSI-MOD-alternate [] synonym: "NOAc2Ser" EXACT PSI-MOD-label [] xref: DiffAvg: "84.07" xref: DiffFormula: "C 4 H 4 N 0 O 2" xref: DiffMono: "84.021129" xref: Formula: "C 7 H 10 N 1 O 4" xref: MassAvg: "172.16" xref: MassMono: "172.060983" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:02080 ! diacetylated L-serine relationship: has_functional_parent MOD:00060 ! N-acetyl-L-serine relationship: has_functional_parent MOD:00369 ! O-acetyl-L-serine [Term] id: MOD:00649 name: acylated residue def: "A protein modification that effectively replaces a hydrogen atom with an acyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "AcylRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00650 name: N-myristoylated residue def: "A protein modification that effectively replaces a residue amino group with a myristoylamino group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NMyrRes" EXACT PSI-MOD-label [] xref: DiffAvg: "210.36" xref: DiffFormula: "C 14 H 26 O 1" xref: DiffMono: "210.198365" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00438 ! myristoylated residue is_a: MOD:00670 ! N-acylated residue [Term] id: MOD:00651 name: N-palmitoylated residue def: "A protein modification that effectively replaces a residue amino group with a palmitoylamino group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NPamRes" EXACT PSI-MOD-label [] synonym: "N-hexadecanoylated residue" EXACT PSI-MOD-alternate [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 O 1" xref: DiffMono: "238.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00440 ! palmitoylated residue is_a: MOD:00670 ! N-acylated residue [Term] id: MOD:00652 name: O-palmitoylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with a palmitoyloxy group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OPamRes" EXACT PSI-MOD-label [] synonym: "O-hexadecanoylated residue" EXACT PSI-MOD-alternate [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 O 1" xref: DiffMono: "238.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00440 ! palmitoylated residue is_a: MOD:00671 ! O-acylated residue [Term] id: MOD:00653 name: S-palmitoylated residue def: "A protein modification that effectively replaces a residue sulfanyl group with an palmitoylsulfanyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "SPamRes" EXACT PSI-MOD-label [] synonym: "S-hexadecanoylated residue" EXACT PSI-MOD-alternate [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 O 1 S 0" xref: DiffMono: "238.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00440 ! palmitoylated residue is_a: MOD:00672 ! S-acylated residue [Term] id: MOD:00654 name: S-methylated residue def: "a protein modification that effectively replaces a sulfanyl group with a methylsulfanyl group" [PubMed:18688235] subset: PSI-MOD-slim synonym: "SMeRes" EXACT PSI-MOD-label [] is_a: MOD:00427 ! methylated residue [Term] id: MOD:00655 name: S-myristoylated residue def: "A protein modification that effectively replaces a residue sulfanyl group with an myristoylsulfanyl group." [PubMed:18688235] synonym: "SMyrRes" EXACT PSI-MOD-label [] xref: DiffAvg: "210.36" xref: DiffFormula: "C 14 H 26 O 1 S 0" xref: DiffMono: "210.198365" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00438 ! myristoylated residue is_a: MOD:00672 ! S-acylated residue [Term] id: MOD:00656 name: C-methylated residue def: "A protein modification that effectively replaces a residue hydrocarbyl hydrogen with an methyl group." [PubMed:18688235] synonym: "CMeRes" EXACT PSI-MOD-label [] is_a: MOD:00427 ! methylated residue [Term] id: MOD:00657 name: L-glutamic acid 5-methyl ester (Gln) def: "A protein modification that effectively converts an L-glutamine residue to L-glutamate 5-methyl ester." [PubMed:16888, PubMed:6300110, RESID:AA0072#GLN, Unimod:528] comment: This is known to be a natural modification of glutamine in prokaryotes. subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-methoxy-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(5)-methyl L-hydrogen glutamate" EXACT RESID-alternate [] synonym: "2-aminopentanedioic acid 5-methyl ester" EXACT RESID-alternate [] synonym: "5-methyl L-2-aminoglutarate" EXACT RESID-alternate [] synonym: "5-methyl L-glutamate" EXACT RESID-alternate [] synonym: "deamidated 5-methyl esterified glutamine" EXACT PSI-MOD-alternate [] synonym: "Deamidation followed by a methylation" RELATED Unimod-description [] synonym: "glutamic acid 5-methyl ester" EXACT RESID-alternate [] synonym: "glutamic acid gamma-methyl ester" EXACT RESID-alternate [] synonym: "L-glutamic acid 5-methyl ester" EXACT RESID-name [] synonym: "Methyl+Deamidated" RELATED PSI-MS-label [] synonym: "MOD_RES Glutamate methyl ester (Gln)" EXACT UniProt-feature [] synonym: "O5MeGlu(Gln)" EXACT PSI-MOD-label [] xref: DiffAvg: "15.01" xref: DiffFormula: "C 1 H 1 N -1 O 1" xref: DiffMono: "14.999666" xref: Formula: "C 6 H 9 N 1 O 3" xref: MassAvg: "143.14" xref: MassMono: "143.058243" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:528" xref: UniProt: "PTM-0127" is_a: MOD:01369 ! deamidated and methyl esterified residue is_a: MOD:01453 ! L-glutamic acid 5-methyl ester relationship: has_functional_parent MOD:00659 ! methylated glutamine [Term] id: MOD:00658 name: methylated arginine def: "A protein modification that effectively converts an L-arginine residue to a methylated arginine, either 5-methylargine, N5-methylarginine, or an omega-N-methylated L-arginine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeArg" EXACT PSI-MOD-label [] xref: Origin: "R" xref: UniProt: "PTM-0238" is_a: MOD:00427 ! methylated residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00659 name: methylated glutamine def: "A protein modification that effectively converts an L-glutamine residue to a methylated glutamine, either 2-methylated glutamine, N5-methylated glutamine, or methyl esterified deamidated glutamine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeGln" EXACT PSI-MOD-label [] xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:00660 name: methylated cysteine def: "A protein modification that effectively converts an L-cysteine residue to a methylated cysteine, either S-methylcysteine, or cysteine methyl ester." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeCys" EXACT PSI-MOD-label [] xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00661 name: methylated histidine def: "A protein modification that effectively converts an L-histidine residue to a methylated histidine, such as pros-methylhistidine, or tele-methylhistidine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeHis" EXACT PSI-MOD-label [] xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:00662 name: methylated leucine def: "A protein modification that effectively converts an L-leucine residue to a methylated leucine, either N-methylleucine, or leucine methyl ester." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeLeu" EXACT PSI-MOD-label [] xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00911 ! modified L-leucine residue [Term] id: MOD:00663 name: methylated lysine def: "A protein modification that effectively converts an L-lysine residue to a methylated lysine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeLys" EXACT PSI-MOD-label [] xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0193" is_a: MOD:00427 ! methylated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00664 name: stereoisomerized residue def: "A protein modification that effectively replaces a residue L-enantiomer (stereoisomer) with a D-enantiomer or with a different diastereomeric isomer." [PubMed:18688235] synonym: "D-Res" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00665 name: methylated alanine def: "A protein modification that effectively converts an L-alanine residue to a methylated alanine, such as N-methylalanine, N,N-dimethylalanine, or N,N,N-trimethylalanine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeAla" EXACT PSI-MOD-label [] xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:00666 name: octanoylated residue def: "A protein modification that effectively replaces a hydrogen atom with an octanoyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OctRes" EXACT PSI-MOD-label [] xref: DiffAvg: "126.20" xref: DiffFormula: "C 8 H 14 N 0 O 1" xref: DiffMono: "126.104465" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00667 name: decanoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a decanoyl group." [PubMed:18688235] synonym: "DecRes" EXACT PSI-MOD-label [] xref: DiffAvg: "154.25" xref: DiffFormula: "C 10 H 18 N 0 O 1" xref: DiffMono: "154.135765" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00668 name: O-decanoylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with a decanoyloxy group." [Unimod:449] synonym: "Decanoyl" RELATED PSI-MS-label [] synonym: "lipid" RELATED Unimod-description [] synonym: "ODecRes" EXACT PSI-MOD-label [] xref: DiffAvg: "154.25" xref: DiffFormula: "C 10 H 18 N 0 O 1" xref: DiffMono: "154.135765" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:449" is_a: MOD:00667 ! decanoylated residue is_a: MOD:00671 ! O-acylated residue [Term] id: MOD:00669 name: O-octanoylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with a octanoyloxy group." [Unimod:426] subset: PSI-MOD-slim synonym: "Octanoyl" RELATED PSI-MS-label [] synonym: "octanoyl" RELATED Unimod-description [] synonym: "OOctRes" EXACT PSI-MOD-label [] xref: DiffAvg: "126.20" xref: DiffFormula: "C 8 H 14 N 0 O 1" xref: DiffMono: "126.104465" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:426" is_a: MOD:00666 ! octanoylated residue is_a: MOD:00671 ! O-acylated residue [Term] id: MOD:00670 name: N-acylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with an acyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NAcylRes" EXACT PSI-MOD-label [] is_a: MOD:00649 ! acylated residue [Term] id: MOD:00671 name: O-acylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with a acyloxy group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OAcylRes" EXACT PSI-MOD-label [] is_a: MOD:00649 ! acylated residue [Term] id: MOD:00672 name: S-acylated residue def: "A protein modification that effectively replaces a residue sulfanyl group with an acylsulfanyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "SAcylRes" EXACT PSI-MOD-label [] is_a: MOD:00649 ! acylated residue [Term] id: MOD:00673 name: methylated asparagine def: "A protein modification that effectively converts an L-asparagine residue to a methylated asparagine, such as N4-methyl-L-asparagine, or N4,N4-dimethyl-L-asparagine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeAsn" EXACT PSI-MOD-label [] xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00674 name: amidated residue def: "A protein modification that effectively replaces a carboxyl group with a carboxamido group." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00675 name: oxidized residue def: "A protein modification that effectively either removes neutral hydrogen atoms (proton and electron), or adds oxygen atoms to a residue with or without the removal of hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OxRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00676 name: oxygenated residue def: "A protein modification that effectively adds oxygen atoms to a residue with or without the removal of hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OxyRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00675 ! oxidized residue [Term] id: MOD:00677 name: hydroxylated residue def: "A protein modification that effectively replaces a hydrogen atom with an hydroxyl group." [DeltaMass:0] comment: From DeltaMass: Average Mass: 16 subset: PSI-MOD-slim synonym: "Hydroxylation (of delta C of Lysine, beta C of Tryptophan, C3 or C4 of Proline, beta C of Aspartate)" EXACT DeltaMass-label [] synonym: "HyRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00679 ! carbon oxygenated residue [Term] id: MOD:00678 name: hydroxylated proline def: "A protein modification that effectively converts an L-proline residue to an hydroxylated L-proline." [PubMed:18688235] subset: PSI-MOD-slim synonym: "HyPro" EXACT PSI-MOD-label [] xref: Origin: "P" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00679 name: carbon oxygenated residue def: "A protein modification that effectively adds oxygen atoms to a carbon atom of a residue and removes hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "COxyRes" EXACT PSI-MOD-label [] is_a: MOD:00676 ! oxygenated residue [Term] id: MOD:00680 name: sulfur oxygenated residue def: "A protein modification that effectively adds oxygen atoms to a sulfur atom of a residue without removing hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "SOxyRes" EXACT PSI-MOD-label [] is_a: MOD:00676 ! oxygenated residue [Term] id: MOD:00681 name: hydroxylated lysine def: "A protein modification that effectively converts an L-lysine residue to a hydroxylated L-lysine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "HyLys" EXACT PSI-MOD-label [] xref: Origin: "K" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00682 name: hydroxylated arginine def: "A protein modification that effectively converts an L-arginine residue to a hydroxylated L-arginine." [PubMed:18688235] synonym: "HyArg" EXACT PSI-MOD-label [] xref: Origin: "R" xref: UniProt: "PTM-0498" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00683 name: dehydrogenated residue def: "A protein modification that effectively removes neutral hydrogen atoms (proton and electron) from a residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "dHRes" EXACT PSI-MOD-label [] xref: Origin: "X" is_a: MOD:00675 ! oxidized residue [Term] id: MOD:00684 name: deamidated L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to L-aspartic acid." [PubMed:1097438, PubMed:339692, PubMed:4399050, PubMed:5764436, PubMed:6692818, PubMed:8089117, PubMed:9521123, PubMed:9582379, RESID:AA0004#ASN, Unimod:7#N] comment: incidental to RESID:AA0059 subset: PSI-MOD-slim synonym: "(2S)-2-aminobutanedioic acid" EXACT RESID-systematic [] synonym: "2-azanylbutanedioic acid" EXACT RESID-alternate [] synonym: "aminosuccinic acid" EXACT RESID-alternate [] synonym: "dNAsn" EXACT PSI-MOD-label [] synonym: "L-aspartic acid" EXACT RESID-name [] synonym: "MOD_RES Deamidated asparagine" EXACT UniProt-feature [] xref: DiffAvg: "0.98" xref: DiffFormula: "C 0 H -1 N -1 O 1" xref: DiffMono: "0.984016" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:7" xref: UniProt: "PTM-0116" is_a: MOD:00400 ! deamidated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:00685 name: deamidated L-glutamine def: "A protein modification that effectively converts an L-glutamine residue to L-glutamic acid." [PubMed:1881881, PubMed:4565668, PubMed:4922541, PubMed:6692818, PubMed:9192900, PubMed:957425, RESID:AA0006#GLN, Unimod:7#Q] subset: PSI-MOD-slim synonym: "(2S)-2-aminopentanedioic acid" EXACT RESID-systematic [] synonym: "1-aminopropane-1,3-dicarboxylic acid" EXACT RESID-alternate [] synonym: "2-aminoglutaric acid" EXACT RESID-alternate [] synonym: "2-azanylpentanedioic acid" EXACT RESID-alternate [] synonym: "alpha-aminoglutaric acid" EXACT RESID-alternate [] synonym: "dNGln" EXACT PSI-MOD-label [] synonym: "glutaminic acid" EXACT RESID-alternate [] synonym: "L-glutamic acid" EXACT RESID-name [] synonym: "MOD_RES Deamidated glutamine" EXACT UniProt-feature [] xref: DiffAvg: "0.98" xref: DiffFormula: "C 0 H -1 N -1 O 1" xref: DiffMono: "0.984016" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:7" xref: UniProt: "PTM-0117" is_a: MOD:00400 ! deamidated residue is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:00686 name: L-selenocysteine (Cys) def: "A protein modification that effectively converts an L-cysteine residue to L-selenocysteine (not known as a natural, post-translational modification process)." [PubMed:10523135, PubMed:2037562, PubMed:2963330, PubMed:6217842, PubMed:6714945, RESID:AA0022#CYS, Unimod:162#C] comment: This entry is for the artifactual formation of L-selenocysteine from cysteine. For encoded L-selenocysteine, use MOD:00031 [JSG]. synonym: "(2R)-2-amino-3-selanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-selanylpropanoic acid" EXACT RESID-alternate [] synonym: "3-selenylalanine" EXACT RESID-alternate [] synonym: "L-selenocysteine" EXACT RESID-name [] synonym: "NON_STD Selenocysteine" EXACT UniProt-feature [] synonym: "Sec(Cys)" EXACT PSI-MOD-label [] synonym: "SeCys" EXACT RESID-alternate [] synonym: "selenium cysteine" EXACT RESID-alternate [] xref: DiffAvg: "46.91" xref: DiffFormula: "C 0 H 0 N 0 O 0 S -1 Se 1" xref: DiffMono: "47.944450" xref: Formula: "C 3 H 5 N 1 O 1 Se 1" xref: MassAvg: "150.05" xref: MassMono: "150.953635" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:162" is_a: MOD:00007 ! selenium substitution for sulfur is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00687 name: thioether crosslinked residues def: "A protein modification that crosslinks two residues by formation of a thioether bond between a cysteine thiol and either an alkyl C as in lanthionine, or an aryl C as 2'-(S-cysteinyl)-L-histidine." [PubMed:18688235] is_a: MOD:00033 ! crosslinked residues is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:00688 name: isopeptide crosslinked residues def: "A protein modification that crosslinks two residues with an amide bond where either the donor amino or carboxyl is not an alpha group." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:00689 name: disulfide crosslinked residues def: "A protein modification that crosslinks two cysteine residues by formation of a disulfide bond." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01619 ! multisulfide crosslinked residues [Term] id: MOD:00690 name: oxazole/thiazole ring crosslinked residues def: "A protein modification that crosslinks two residues by formation of an oxazole or thiazole ring." [PubMed:18688235] is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:00691 name: 5-imidazolinone ring crosslinked residues def: "A protein modification that crosslinks two residues by formation of an 5-imidazolinone ring." [PubMed:18688235] is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:00692 name: uncategorized crosslinked residues def: "A protein crosslink modification that is not chemically categorized." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:00693 name: glycosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an carbohydrate-like group through a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "GlycoRes" EXACT PSI-MOD-label [] xref: Source: "natural" is_a: MOD:00764 ! glycoconjugated residue [Term] id: MOD:00694 name: halogen containing residue def: "A protein modification that effectively substitutes a halogen atom for a hydrogen atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "halogenated residue" EXACT PSI-MOD-alternate [] synonym: "HalRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00695 name: sulfated residue def: "A protein modification that effectively substitutes a sulfonyl group for the hydrogen atom of a hydroxyl or sulfanyl group." [DeltaMass:0, PubMed:14752058, Unimod:40] comment: From DeltaMass: Average Mass: 80. subset: PSI-MOD-slim synonym: "O-Sulfonation" RELATED Unimod-description [] synonym: "Sulfo" RELATED PSI-MS-label [] synonym: "SulfRes" EXACT PSI-MOD-label [] synonym: "Sulphonation (SO3H) (of PMC group)" EXACT DeltaMass-label [] xref: DiffAvg: "80.06" xref: DiffFormula: "O 3 S 1" xref: DiffMono: "79.956815" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:40" is_a: MOD:00860 ! sulfur containing modified residue [Term] id: MOD:00696 name: phosphorylated residue def: "A protein modification that effectively replaces a hydrogen atom with a phosphono group (H2PO3 or 'phosphate')." [DeltaMass:0, Unimod:21] comment: From DeltaMass: Average Mass: 80. subset: PSI-MOD-slim synonym: "Phospho" RELATED PSI-MS-label [] synonym: "Phosphorylation" RELATED Unimod-description [] synonym: "Phosphorylation (O of Serine, Threonine, Tyrosine and Aspartate, N epsilon of Lysine)" EXACT DeltaMass-label [] synonym: "PhosRes" EXACT PSI-MOD-label [] xref: DiffAvg: "79.98" xref: DiffFormula: "H 1 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:21" is_a: MOD:00861 ! phosphorus containing modified residue [Term] id: MOD:00697 name: flavin modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a flavin group." [] subset: PSI-MOD-slim synonym: "FAD" RELATED PSI-MS-label [] synonym: "Flavin adenine dinucleotide" RELATED Unimod-description [] synonym: "FlavRes" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00698 name: metal or metal cluster containing modified residue def: "A protein modification that effectively substitutes a metal atom or a metal cluster for hydrogen atoms, or coordinates a metal ion." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MetalRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00699 name: porphyrin modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a porphyrin group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "PorphRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00700 name: tetrapyrrole modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a tetrapyrrole group." [PubMed:18688235] synonym: "TetrapyrRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00701 name: nucleotide or nucleic acid modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a nucleotide or a polynucleotide through formation of either a phosphodiester bond, a phosphoramide ester bond, or a glycosidic bond." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NucRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00702 name: isotope labeled residue def: "A protein modification that effectively substitutes atoms of particular common isotopes with atoms or groups containing isotopes that are not the most common." [PubMed:18688235] comment: In SILAC (stable isotope labelling of amino acids in cell culture), the label may be introduced either through labeling of an incorporated residue or labeling of the substrates in a metabolic modification. For isotope labeling introduced through a modification reagent see MOD:01426. subset: PSI-MOD-slim synonym: "IsoTagRes" EXACT PSI-MOD-label [] synonym: "SILAC" EXACT PSI-MOD-alternate [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00703 name: isoprenylated residue def: "A protein modification that effectively replaces a hydrogen atom with a group derived from an isoprene polymer, such as a geranyl (C10), farnesyl (C15) or geranylgeranyl (C20) group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "IpRes" EXACT PSI-MOD-label [] is_a: MOD:00001 ! alkylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00704 name: dehydrated residue def: "A protein modification that effectively forms a double bond by removing a molecule of water from a residue." [DeltaMass:0, Unimod:23] subset: PSI-MOD-slim synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:23" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00705 name: D-valine def: "A protein modification that effectively converts an L-valine residue to D-valine." [ChEBI:30016, PubMed:15853325, RESID:AA0200] synonym: "(R)-2-amino-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "alpha-amino-beta-methylbutyric acid" EXACT RESID-alternate [] synonym: "alpha-aminoisovaleric acid" EXACT RESID-alternate [] synonym: "D-Val" EXACT PSI-MOD-label [] synonym: "D-valine" EXACT RESID-name [] synonym: "MOD_RES D-valine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 5 H 9 N 1 O 1" xref: MassAvg: "99.13" xref: MassMono: "99.068414" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0124" is_a: MOD:00664 ! stereoisomerized residue [Term] id: MOD:00706 name: dehydrogenated tyrosine def: "A protein modification that effectively converts L-tyrosine to 2,3-didehydrotyrosine." [Unimod:401#Y] subset: PSI-MOD-slim synonym: "dHTyr" EXACT PSI-MOD-label [] synonym: "MOD_RES 2,3-didehydrotyrosine" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 9 H 7 N 1 O 2" xref: MassAvg: "161.16" xref: MassMono: "161.047678" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:401" xref: UniProt: "PTM-0008" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01888 ! didehydrogenated residue [Term] id: MOD:00707 name: hydroxylated tyrosine def: "a protein modification that effectively converts an L-tyrosine residue to a multihydroxylated L-phenylalanine" [PubMed:18688235] subset: PSI-MOD-slim synonym: "HyTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00708 name: sulfur oxygenated L-cysteine def: "A protein modification that effectively adds oxygen atoms to a sulfur atom of L-cysteine residue without removing hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "SOxyCys" EXACT PSI-MOD-label [] xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00680 ! sulfur oxygenated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00709 name: sulfur oxygenated L-methionine def: "A protein modification that effectively adds oxygen atoms to a sulfur atom of L-methionine residue without removing hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "SOxyMet" EXACT PSI-MOD-label [] xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00680 ! sulfur oxygenated residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00710 name: protonated-dimethylated residue def: "A protein modification that effectively adds a proton and replaces two hydrogen atoms with two methyl groups." [PubMed:18688235] comment: For N-terminal proline residues, dimethylation can effectively only be accomplished with a protonated imino group. This process accounts for both protonation and dimethylation. The alternative Me2Res process accounts only for dimethylation and not protonation. subset: PSI-MOD-slim synonym: "Me2+Res" EXACT PSI-MOD-label [] is_a: MOD:00429 ! dimethylated residue [Term] id: MOD:00711 name: trimethylated protonated-residue def: "A protein modification that effectively replaces three hydrogen atoms with three methyl groups, after a proton has been added to form an aminium group." [PubMed:18688235] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with a protonated primary amino group. This process accounts for both protonation and trimethylation. The alternative Me3Res process accounts only for trimethylation and not protonation. subset: PSI-MOD-slim synonym: "Me3+Res" EXACT PSI-MOD-label [] xref: DiffAvg: "43.09" xref: DiffFormula: "C 3 H 7 N 0 O 0 S 0" xref: DiffMono: "43.054227" xref: FormalCharge: "1+" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue [Term] id: MOD:00712 name: methylated proline def: "A protein modification that effectively converts an L-proline residue to a methylated proline, such as N,N-dimethylproline." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MePro" EXACT PSI-MOD-label [] xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00713 name: methylated glutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to a methylated glutamic acid, such as L-glutamate 5-methyl ester." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeGlu" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00714 name: methylated glycine def: "A protein modification that effectively converts a glycine residue to a methylated glycine, such as N-methylglycine." [PubMed:18688235] synonym: "MeGly" EXACT PSI-MOD-label [] xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:00715 name: methylated isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to a methylated isoleucine residue, such as N-methyl-L-isoleucine." [PubMed:18688235] synonym: "MeIle" EXACT PSI-MOD-label [] xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00910 ! modified L-isoleucine residue [Term] id: MOD:00716 name: methylated methionine def: "A protein modification that effectively converts an L-methionine residue to a methylated methionine, such as N-methyl-L-methionine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeMet" EXACT PSI-MOD-label [] xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00427 ! methylated residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00717 name: methylated phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to a methylated phenylalanine, such as N-methyl-L-phenylalanine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MePhe" EXACT PSI-MOD-label [] xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:00718 name: methylated tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to a methylated tyrosine, such as N-methyl-L-tyrosine." [PubMed:18688235] synonym: "MeTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00427 ! methylated residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00719 name: L-methionine sulfoxide def: "A protein modification that oxygenates an L-methionine residue to one of the diastereomeric L-methionine sulfoxide residues." [DeltaMass:177, OMSSA:1, PubMed:21406390, PubMed:22116028, RESID:AA0581, Unimod:35#M] comment: From DeltaMass: Average Mass: 147 Formula:C5H9O1N2S Monoisotopic Mass Change:147.035 Average Mass Change:147.195 (formula incorrect, N and O reversed) References:PE Sciex. subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-[(R)-methylsulfinyl]butanoic acid" EXACT RESID-systematic [] synonym: "L-methionine (R)-S-oxide" EXACT RESID-alternate [] synonym: "L-methionine (R)-sulfoxide" EXACT RESID-name [] synonym: "L-methionine S-oxide" EXACT PSI-MOD-alternate [] synonym: "L-methionine sulfoxide" EXACT PSI-MOD-alternate [] synonym: "Methionyl Sulfoxide" EXACT DeltaMass-label [] synonym: "MetO" EXACT PSI-MOD-label [] synonym: "MOD_RES Methionine sulfoxide" EXACT UniProt-feature [] synonym: "Oxidation" RELATED PSI-MS-label [] synonym: "oxym" EXACT OMSSA-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 9 N 1 O 2 S 1" xref: MassAvg: "147.19" xref: MassMono: "147.035400" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:35" xref: UniProt: "PTM-0469" is_a: MOD:00709 ! sulfur oxygenated L-methionine is_a: MOD:01854 ! sulfur monooxygenated residue [Term] id: MOD:00720 name: L-methionine (R)-sulfoxide def: "A protein modification that effectively oxygenates an L-methionine residue to L-methionine sulfoxide R-diastereomer." [ChEBI:45764, PubMed:21406390, PubMed:22116028, PubMed:23911929, RESID:AA0581] synonym: "(2S)-2-amino-4-[(R)-methylsulfinyl]butanoic acid" EXACT RESID-systematic [] synonym: "L-methionine (R)-S-oxide" EXACT RESID-alternate [] synonym: "L-methionine (R)-sulfoxide" EXACT RESID-name [] synonym: "MOD_RES Methionine (R)-sulfoxide" EXACT UniProt-feature [] synonym: "R-MetO" EXACT PSI-MOD-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 9 N 1 O 2 S 1" xref: MassAvg: "147.19" xref: MassMono: "147.035400" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0480" is_a: MOD:00719 ! L-methionine sulfoxide [Term] id: MOD:00721 name: L-methionine (S)-sulfoxide def: "A protein modification that effectively oxygenates an L-methionine residue to L-methionine sulfoxide S-diastereomer." [PubMed:18688235] synonym: "S-MetO" EXACT PSI-MOD-label [] synonym: "MOD_RES Methionine (S)-sulfoxide" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 9 N 1 O 2 S 1" xref: MassAvg: "147.19" xref: MassMono: "147.035400" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: UniProt: "PTM-0481" is_a: MOD:00719 ! L-methionine sulfoxide [Term] id: MOD:00722 name: monomethylated L-glutamine def: "A protein modification that effectively replaces one hydrogen atom of an L-glutamine residue with one methyl group." [OMSSA:14, Unimod:34#Q] subset: PSI-MOD-slim synonym: "Me1Gln" EXACT PSI-MOD-label [] synonym: "methylq" EXACT OMSSA-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 6 H 10 N 2 O 2" xref: MassAvg: "142.16" xref: MassMono: "142.074228" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00659 ! methylated glutamine [Term] id: MOD:00723 name: N-acetylated L-lysine def: "A protein modification that effectively converts an L-lysine residue to either N2-acetyl-L-lysine, or N6-acetyl-L-lysine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NAcLys" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 8 H 15 N 2 O 2" xref: MassAvg: "171.22" xref: MassMono: "171.113353" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00408 ! mono N-acetylated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00724 name: N-methylated L-histidine def: "A protein modification that effectively replaces one hydrogen atom on a nitrogen of an L-histidine residue with one methyl group." [OMSSA:74, Unimod:34#H] subset: PSI-MOD-slim synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methylh" EXACT OMSSA-label [] synonym: "NMeHis" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 9 N 3 O 1" xref: MassAvg: "151.17" xref: MassMono: "151.074562" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00602 ! N-methylated residue is_a: MOD:00661 ! methylated histidine [Term] id: MOD:00725 name: complex glycosylation def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a carbohydrate-like group linked through a glycosidic bond." [PubMed:18688235] is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00726 name: glucosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a glucose group through a glycosidic bond." [PubMed:18688235] synonym: "Glc" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00433" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00727 name: mannosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a mannose group through a glycosidic bond," [PubMed:18688235] synonym: "Man" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00728 name: galactosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a galactose group through a glycosidic bond." [PubMed:18688235] synonym: "Gal" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00729 name: pentosylated residue def: "a protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a pentose sugar group through a glycosidic bond" [DeltaMass:172] comment: for Pentoses DeltaMass gives mass 132, for Pentosyl DeltaMass gives formula C 6 H 10 N4 with mass 146 synonym: "Pent" EXACT PSI-MOD-label [] synonym: "Pentoses (Ara, Rib, Xyl)" EXACT DeltaMass-label [] synonym: "Pentosyl" EXACT DeltaMass-label [] xref: DiffAvg: "132.12" xref: DiffFormula: "C 5 H 8 O 4" xref: DiffMono: "132.042259" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00730 name: arabinosylated residue def: "a protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a arabinose sugar group through a glycosidic bond" [PubMed:18688235] synonym: "Ara" EXACT PSI-MOD-label [] xref: DiffAvg: "132.12" xref: DiffFormula: "C 5 H 8 O 4" xref: DiffMono: "132.042259" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00729 ! pentosylated residue [Term] id: MOD:00731 name: ribosylated residue def: "a protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a ribose sugar group through a glycosidic bond" [PubMed:18688235] synonym: "Rib" EXACT PSI-MOD-label [] xref: DiffAvg: "132.12" xref: DiffFormula: "C 5 H 8 O 4" xref: DiffMono: "132.042259" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00729 ! pentosylated residue [Term] id: MOD:00732 name: xylosylated residue def: "a protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a xylose sugar group through a glycosidic bond" [PubMed:18688235] synonym: "Xyl" EXACT PSI-MOD-label [] xref: DiffAvg: "132.12" xref: DiffFormula: "C 5 H 8 O 4" xref: DiffMono: "132.042259" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00729 ! pentosylated residue [Term] id: MOD:00733 name: N-acetylaminoglucosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with an N-acetylglucosamine group through a glycosidic bond." [PubMed:18688235] synonym: "GlcNAc" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00436 ! N-acetylhexosaminylated residue [Term] id: MOD:00734 name: N-acetylaminogalactosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with an N-acetylgalactosamine group through a glycosidic bond." [DeltaMass:247] comment: From DeltaMass: Average Mass: 203 Formula:C8H13O5N1 Monoisotopic Mass Change:203.079 Average Mass Change:203.196 References:PE Sciex synonym: "GalNAc" EXACT PSI-MOD-label [] synonym: "N-acetylhexosamines (GalNAc, GlcNAc)" EXACT DeltaMass-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00436 ! N-acetylhexosaminylated residue [Term] id: MOD:00735 name: hexosuronylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a hexosuronic acid group through a glycosidic bond." [PubMed:18688235] synonym: "HexA" EXACT PSI-MOD-label [] xref: DiffAvg: "176.12" xref: DiffFormula: "C 6 H 8 O 6" xref: DiffMono: "176.032088" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00736 name: deoxyhexosylated residue def: "a protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a deoxyhexose group through a glycosidic bond" [DeltaMass:0] comment: From DeltaMass: Average Mass: 146 subset: PSI-MOD-slim synonym: "Deoxyhexoses (Fuc, Rha)" EXACT DeltaMass-label [] synonym: "dHex" EXACT PSI-MOD-label [] xref: DiffAvg: "146.14" xref: DiffFormula: "C 6 H 10 O 4" xref: DiffMono: "146.057909" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: GNOme: "GNO:G02438LG" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00737 name: N-acetylneuraminylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with an N-acetylneuraminic acid (sialic acid) group through a glycosidic bond." [DeltaMass:0] comment: From DeltaMass: Average Mass: 291 synonym: "N-acetylneuraminic acid (Sialic acid, NeuAc, NANA, SA)" EXACT DeltaMass-label [] synonym: "NeuNAc" EXACT PSI-MOD-label [] xref: DiffAvg: "291.26" xref: DiffFormula: "C 11 H 17 N 1 O 8" xref: DiffMono: "291.095417" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: GNOme: "GNO:G76685HR" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00738 name: iron containing modified residue def: "A protein modification that effectively substitutes an iron atom or a cluster containing iron for hydrogen atoms, or that coordinates an iron ion." [PubMed:18688235] synonym: "FeRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00739 name: iron-sulfur cluster containing modification def: "A protein modification that effectively substitutes a cluster of iron and sulfur atoms for hydrogen atoms." [PubMed:18688235] synonym: "FeSRes" EXACT PSI-MOD-label [] is_a: MOD:00738 ! iron containing modified residue is_a: MOD:00860 ! sulfur containing modified residue [Term] id: MOD:00740 name: manganese containing modified residue def: "A protein modification that effectively substitutes a manganese atom or a cluster containing manganese for hydrogen atoms, or that coordinates a manganese ion." [PubMed:18688235] synonym: "MnRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00741 name: nickel containing modified residue def: "A protein modification that effectively substitutes a nickel atom or a cluster containing nickel for hydrogen atoms, or that coordinates a nickel ion." [PubMed:18688235] synonym: "NiRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00742 name: copper containing modified residue def: "A protein modification that effectively substitutes a copper atom or a cluster containing copper for hydrogen atoms, or that coordinates a copper ion." [PubMed:18688235] synonym: "CuRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00743 name: molybdenum containing modified residue def: "A protein modification that effectively substitutes a molybdenum atom or a cluster containing molybdenum for hydrogen atoms, or that coordinates a molybdenum ion." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MoRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00744 name: molybdenum pterin containing modification def: "A protein modification containing a molybdenum atom in a pterin ring system." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MoPterRes" EXACT PSI-MOD-label [] is_a: MOD:00743 ! molybdenum containing modified residue is_a: MOD:00748 ! pterin modified residue [Term] id: MOD:00745 name: selenium containing residue def: "A protein modification that effectively substitutes a selenium atom or a cluster containing selenium for hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "SeRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00746 name: tungsten containing modified residue def: "A protein modification that effectively substitutes a tungsten atom or a cluster containing tungsten for hydrogen atoms, or that coordinates a tungsten ion." [PubMed:18688235] synonym: "WRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00747 name: sodium containing modified residue def: "A protein modification that effectively substitutes a sodium atom for a hydrogen atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NaRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00748 name: pterin modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a pterin group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "PterRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00749 name: sulfur substitution for oxygen def: "A protein modification that effectively substitutes a sulfur atom for an oxygen atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "S(O)Res" EXACT PSI-MOD-label [] is_a: MOD:00860 ! sulfur containing modified residue [Term] id: MOD:00750 name: deoxyribonucleic acid linked residue def: "A protein modification that effectively crosslinks an amino acid residue and the 3'- or 5'-end of DNA through a phosphodiester bond." [PubMed:18688235] synonym: "DNARes" EXACT PSI-MOD-label [] is_a: MOD:00701 ! nucleotide or nucleic acid modified residue [Term] id: MOD:00751 name: ribonucleic acid linked residue def: "a protein modification" [PubMed:18688235] synonym: "RNARes" EXACT PSI-MOD-label [] is_a: MOD:00701 ! nucleotide or nucleic acid modified residue [Term] id: MOD:00752 name: monoadenosine diphosphoribosyl (ADP-ribosyl) modified residue def: "A protein modification that effectively results from forming an adduct with one ADP-ribose through formation of a glycosidic bond." [DeltaMass:0] comment: From DeltaMass: Average Mass: 541. subset: PSI-MOD-slim synonym: "ADP-rybosylation (from NAD)" EXACT DeltaMass-label [] synonym: "ADPRib1Res" EXACT PSI-MOD-label [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2" xref: DiffMono: "541.061109" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02087 ! adenosine diphosphoribosyl (ADP-ribosyl) modified residue [Term] id: MOD:00753 name: chlorinated residue def: "A protein modification that effectively substitutes a chlorine atom for a hydrogen atom." [PubMed:18688235] synonym: "ClRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue [Term] id: MOD:00754 name: brominated residue def: "A protein modification that effectively substitutes a bromine atom for a hydrogen atom." [PubMed:18688235] synonym: "BrRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue [Term] id: MOD:00755 name: iodinated residue def: "A protein modification that effectively substitutes an iodine atom of a residue for a hydrogen atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "IRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue [Term] id: MOD:00756 name: 4-hydroxy-D-valine def: "A protein modification that effectively converts an L-valine residue to 4-hydroxy-D-valine." [PubMed:15853325, RESID:AA0388] synonym: "(2R,3Xi)-2-amino-4-hydroxy-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "4-hydroxy-D-valine" EXACT RESID-name [] synonym: "D-4HyVal" EXACT PSI-MOD-label [] synonym: "D-gamma-hydroxyvaline" EXACT RESID-alternate [] synonym: "MOD_RES D-4-hydroxyvaline" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 9 N 1 O 2" xref: MassAvg: "115.13" xref: MassMono: "115.063329" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0111" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00664 ! stereoisomerized residue [Term] id: MOD:00757 name: O4-galactosyl-L-hydroxyproline def: "A protein modification that effectively converts an L-proline residue to O4-galactosyl-L-hydroxyproline." [RESID:AA0389] comment: secondary to RESID:AA0030 synonym: "(2S,4R)-4-(beta-D-galactopyranosyloxy)pyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "4-(beta-D-galactopyranosyloxy)proline" EXACT RESID-alternate [] synonym: "4-(galactosyloxy)proline" EXACT RESID-alternate [] synonym: "beta-galactopyranosyl-4-hydroxyproline" EXACT RESID-alternate [] synonym: "O4-galactosyl-L-hydroxyproline" EXACT RESID-name [] synonym: "O4-glycosyl-hydroxyproline" EXACT RESID-alternate [] synonym: "CARBOHYD O-linked (Gal) hydroxyproline" EXACT UniProt-feature [] xref: DiffAvg: "178.14" xref: DiffFormula: "C 6 H 10 N 0 O 6" xref: DiffMono: "178.047738" xref: Formula: "C 11 H 17 N 1 O 7" xref: MassAvg: "275.26" xref: MassMono: "275.100502" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0558" is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:00758 name: O4-(N-acetylamino)glucosyl-L-hydroxyproline def: "A protein modification that effectively converts an L-proline residue to O4-(N-acetylamino)glucosyl-L-hydroxyproline." [PubMed:15238247, PubMed:9660787, RESID:AA0390] comment: secondary to RESID:AA0030 synonym: "(2S,4R)-4-[2-acetamido-2-deoxy-alpha-D-glucopyranosyloxy]pyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "4-(N-acetylglucosaminyloxy)proline" EXACT RESID-alternate [] synonym: "4-[(2-N-acetylamino)-alpha-D-glucopyranosyl]oxyproline" EXACT RESID-alternate [] synonym: "alpha-2-(N-acetylamino)glucopyranosyl-4-hydroxyproline" EXACT RESID-alternate [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "O4-(N-acetylamino)glucosyl-L-hydroxyproline" EXACT RESID-name [] synonym: "O4-glycosyl-hydroxyproline" EXACT RESID-alternate [] synonym: "O4GlcNAcHyPro" EXACT PSI-MOD-label [] synonym: "CARBOHYD O-linked (GlcNAc) hydroxyproline" EXACT UniProt-feature [] xref: DiffAvg: "219.19" xref: DiffFormula: "C 8 H 13 N 1 O 6" xref: DiffMono: "219.074287" xref: Formula: "C 13 H 20 N 2 O 7" xref: MassAvg: "316.31" xref: MassMono: "316.127051" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0578" is_a: MOD:01677 ! O4-(N-acetylamino)hexosyl-L-hydroxyproline [Term] id: MOD:00759 name: fucosylated biantennary (-1 galactose) N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation" [Unimod:307] synonym: "dHex(1)Hex(4)HexNAc(4)" RELATED PSI-MS-label [] synonym: "Fucosylated biantennary (-1 galactose)" RELATED Unimod-description [] xref: DiffAvg: "1607.48" xref: DiffFormula: "C 62 H 102 N 4 O 44" xref: DiffMono: "1606.586693" xref: Formula: "C 66 H 108 N 6 O 46" xref: MassAvg: "1721.59" xref: MassMono: "1720.629620" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:307" xref: GNOme: "GNO:G59937CP" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00760 name: biantennary N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation - missing ref" [Unimod:311] synonym: "Biantennary" RELATED Unimod-description [] synonym: "Hex(5)HexNAc(4)" RELATED PSI-MS-label [] xref: DiffAvg: "1623.48" xref: DiffFormula: "C 62 H 102 N 4 O 45" xref: DiffMono: "1622.581607" xref: Formula: "C 66 H 108 N 6 O 47" xref: MassAvg: "1737.59" xref: MassMono: "1736.624535" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:311" xref: GNOme: "GNO:G10486CT" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00761 name: monohexosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with one hexose sugar group through a glycosidic bond." [PubMed:18688235] synonym: "Hex1" EXACT PSI-MOD-alternate [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: GNOme: "GNO:G81399MY" is_a: MOD:00434 ! hexosylated residue [Term] id: MOD:00762 name: biantennary (-2 galactose) N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation - missing ref" [Unimod:309] synonym: "Biantennary (-2 galactose)" RELATED Unimod-description [] synonym: "Hex(3)HexNAc(4)" RELATED PSI-MS-label [] xref: DiffAvg: "1299.20" xref: DiffFormula: "C 50 H 82 N 4 O 35" xref: DiffMono: "1298.475960" xref: Formula: "C 54 H 88 N 6 O 37" xref: MassAvg: "1413.30" xref: MassMono: "1412.518888" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:309" xref: GNOme: "GNO:G35029YA" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00763 name: biantennary (-1 galactose) N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation - missing ref" [Unimod:310] synonym: "Biantennary (-1 galactose)" RELATED Unimod-description [] synonym: "Hex(4)HexNAc(4)" RELATED PSI-MS-label [] xref: DiffAvg: "1461.34" xref: DiffFormula: "C 56 H 92 N 4 O 40" xref: DiffMono: "1460.528784" xref: Formula: "C 60 H 98 N 6 O 42" xref: MassAvg: "1575.44" xref: MassMono: "1574.571711" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:310" xref: GNOme: "GNO:G72787SB" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:00764 name: glycoconjugated residue def: "A protein modification that effectively results from forming an adduct with a carbohydrate-like group either through enzymatic formation of a glycosidic bond, or through non-enzymatic glycation formation of a Schiff-base or an Amadori ketosamine residue adduct." [PubMed:18688235, PubMed:3743566] subset: PSI-MOD-slim is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00765 name: cysteinylation (disulfide with free L-cysteine) def: "A protein modification that effectively converts an L-cysteine residue to S-(L-cysteinyl)-L-cysteine, forming a disulfide bond with free cysteine." [DeltaMass:260, PubMed:1988019, PubMed:2001356, PubMed:2076469, PubMed:3083866, PubMed:366603, PubMed:7918467, PubMed:8344916, RESID:AA0025#CYS1, Unimod:312] comment: This entry is for formation of a disulfide bond between a peptide cysteine and a free cysteine. For the cystine cross-link, see MOD:00234. From DeltaMass: (name misspelled and formula incorrect, N and O reversed) Formula: C6H10O2N3S2 Monoisotopic Mass Change: 222.013 Average Mass Change: 222.283 subset: PSI-MOD-slim synonym: "(2R,2'R)-3,3'-disulfane-1,2-diylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "2-amino-3-(2-amino-2-carboxy-ethyl)disulfanyl-propanoic acid" RELATED RESID-misnomer [] synonym: "3,3'-disulfane-1,2-diylbis(2-azanylpropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-dithiobis(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-dithiobisalanine" EXACT RESID-alternate [] synonym: "3,3'-dithiodialanine" EXACT RESID-alternate [] synonym: "beta,beta'-diamino-beta,beta'-dicarboxydiethyldisulfide" EXACT RESID-alternate [] synonym: "beta,beta'-dithiodialanine" EXACT RESID-alternate [] synonym: "bis(alpha-aminopropionic acid)-beta-disulfide" EXACT RESID-alternate [] synonym: "bis(beta-amino-beta-carboxyethyl)disulfide" EXACT RESID-alternate [] synonym: "Cysteinylation" EXACT DeltaMass-label [] synonym: "dicysteine" EXACT RESID-alternate [] synonym: "L-cystine" EXACT RESID-name [] synonym: "MOD_RES S-cysteinyl cysteine" EXACT UniProt-feature [] synonym: "S-cystenyl cystenyl" EXACT DeltaMass-label [] synonym: "SCysCys" EXACT PSI-MOD-label [] xref: DiffAvg: "119.14" xref: DiffFormula: "C 3 H 5 N 1 O 2 S 1" xref: DiffMono: "119.004099" xref: Formula: "C 6 H 10 N 2 O 3 S 2" xref: MassAvg: "222.28" xref: MassMono: "222.013284" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:312" xref: UniProt: "PTM-0415" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01862 ! disulfide conjugated residue [Term] id: MOD:00766 name: C terminal -K from HC of MAb def: "modification from Unimod Post-translational - C-terminal loss of lysine OBSOLETE because the idenical to MOD:01642. Remap to MOD:01642" [PubMed:16078144, Unimod:313] synonym: "Loss of C-terminal K from Heavy Chain of MAb" RELATED Unimod-description [] synonym: "Lys-loss" RELATED PSI-MS-label [] xref: DiffAvg: "-128.18" xref: DiffFormula: "C -6 H -12 N -2 O -1" xref: DiffMono: "-128.094963" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: TermSpec: "C-term" xref: Unimod: "Unimod:313" xref: Remap: "MOD:01642" is_obsolete: true [Term] id: MOD:00767 name: glycated residue def: "A modification produced in a non-enzymatic reaction between a carbohydrate carbonyl group (C1 of aldohexose or C2 of fructose) and a protein amino group to form a Schiff-base or an Amadori ketosamine residue adduct." [PubMed:18688235] xref: Source: "artifact" is_a: MOD:00764 ! glycoconjugated residue [Term] id: MOD:00768 name: methionine oxidation with neutral loss of 80 Da def: "Oxidation of methionine to methionine sulfone with neutral loss of CH3SO2H." [PubMed:18688235, PubMed:9004526] comment: Originally created from Unimod:508 that was later deleted. xref: DiffAvg: "-80.10" xref: DiffFormula: "C -1 H -4 N 0 O -2 S -1" xref: DiffMono: "-79.993200" xref: Formula: "C 4 H 5 N 1 O 1 S 0" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00431 ! modified residue with a secondary neutral loss [Term] id: MOD:00769 name: residues isobaric at 71.0-71.1 Da def: "Natural or modified residues with a mass of 71.0-71.1 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00616 ! residues isobaric at a resolution below 0.1 Da [Term] id: MOD:00770 name: residues isobaric at a resolution below 0.01 Da def: "Natural or modified residues that are isobaric at a resolution below 0.01 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00616 ! residues isobaric at a resolution below 0.1 Da [Term] id: MOD:00771 name: residues isobaric at 166.98-167.00 Da def: "Natural or modified residues with a mass of 166.98-167.00 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00770 ! residues isobaric at a resolution below 0.01 Da [Term] id: MOD:00772 name: vanadium containing modified residue def: "A protein modification that effectively substitutes a vanadium atom or a cluster containing vanadium for hydrogen atoms, or that coordinates a vanadium ion." [PubMed:18688235] synonym: "VRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00773 name: residues isobaric at 181.00-181.02 Da def: "Natural or modified residues with a mass of 181.00-181.02 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00770 ! residues isobaric at a resolution below 0.01 Da [Term] id: MOD:00774 name: residues isobaric at 243.02-243.03 Da def: "Natural or modified residues with a mass of 243.02-243.03 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00770 ! residues isobaric at a resolution below 0.01 Da [Term] id: MOD:00775 name: L-asparagine (His) def: "An artifactual protein modification that converts an L-histidine residue to L-asparagine by oxidative degradation." [OMSSA:54, PubMed:9252331, Unimod:348] synonym: "His->Asn" RELATED PSI-MS-label [] synonym: "his2asnh" EXACT OMSSA-label [] synonym: "histidine oxidation to aspargine" RELATED Unimod-description [] xref: DiffAvg: "-23.04" xref: DiffFormula: "C -2 H -1 N -1 O 1" xref: DiffMono: "-23.015984" xref: Formula: "C 4 H 6 N 2 O 2" xref: MassAvg: "114.10" xref: MassMono: "114.042927" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:348" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:02088 ! natural, standard, encoded residue substitution [Term] id: MOD:00776 name: L-aspartic acid (His) def: "An artifactual protein modification that converts an L-histidine residue to L-aspartic acid by oxidative degradation." [OMSSA:55, PubMed:9252331, Unimod:349] comment: From OMSSA: desc="oxidation of H to D" monomass= -23.015984 (this is the same mass difference as OMSSA:54, his2asnh) [JSG]. synonym: "His->Asp" RELATED PSI-MS-label [] synonym: "his2asph" EXACT OMSSA-label [] synonym: "histidine oxidation to aspartic acid" RELATED Unimod-description [] xref: DiffAvg: "-22.05" xref: DiffFormula: "C -2 H -2 N -2 O 2" xref: DiffMono: "-22.031969" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:349" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:02088 ! natural, standard, encoded residue substitution [Term] id: MOD:00777 name: residues isobaric at 182.96-182.98 Da def: "Natural or modified residues with a mass of 182.96-182.98 Da." [PubMed:18688235] is_a: MOD:00770 ! residues isobaric at a resolution below 0.01 Da is_a: MOD:00778 ! residues isobaric at 182.9-183.0 Da [Term] id: MOD:00778 name: residues isobaric at 182.9-183.0 Da def: "Natural or modified residues with a mass of 182.9-183.0 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00616 ! residues isobaric at a resolution below 0.1 Da [Term] id: MOD:00779 name: lysine oxidation to aminoadipic semialdehyde def: "OBSOLETE because redundant with MOD:00130. Remap to MOD:00130." [DeltaMass:352, PubMed:11332453, PubMed:358196, PubMed:5337886, PubMed:5529814, Unimod:352] comment: From DeltaMass: Average Mass: -1 Average Mass Change:-1 References:Amici A, Levine, RL, Tsai, L, and Stadtman, ER: Conversion of amino acid residues in proteins and amino acid homopolymers to carbonyl derivatives by metal-catalyzed oxidation reactions. Journal of Biological Chemistry 264: 3341-3346 1989.Requena JR, Chao CC, Levine RL, and Stadtman ER: Glutamic and aminoadipic semialdehydes are the main carbonyl products of metal-catalyzed oxidation of proteins. Proceedings of the National Academy of Sciences USA 98: 69-74 2001. synonym: "Oxidation of lysine (to aminoadipic semialdehyde)" EXACT DeltaMass-label [] xref: DiffAvg: "-1.03" xref: DiffFormula: "H -3 N -1 O 1" xref: DiffMono: "-1.031634" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00130" xref: Unimod: "Unimod:352" is_obsolete: true [Term] id: MOD:00780 name: N-acetyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N-acetyl-L-asparagine." [PubMed:18688235] comment: This modification has not been observed to occur naturally. synonym: "AcAsn" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 6 H 8 N 2 O 3" xref: MassAvg: "156.14" xref: MassMono: "156.053492" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00903 ! modified L-asparagine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00781 name: N2-acetyl-L-histidine def: "A protein modification that effectively converts an L-histidine residue to N2-acetyl-L-histidine." [PubMed:18688235] comment: This modification has not been observed to occur naturally. synonym: "AcHis" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 8 H 9 N 3 O 2" xref: MassAvg: "179.18" xref: MassMono: "179.069477" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00782 name: N-acetyl-L-leucine def: "A protein modification that effectively converts an L-leucine residue to N-acetyl-L-leucine." [PubMed:18688235] comment: This modification has not been observed to occur naturally. synonym: "AcLeu" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 8 H 14 N 1 O 2" xref: MassAvg: "156.20" xref: MassMono: "156.102454" xref: Origin: "L" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00911 ! modified L-leucine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00783 name: dimethylated L-arginine def: "A protein modification that effectively replaces two hydrogen atoms of an L-arginine residue with two methyl groups." [OMSSA:37, Unimod:36#R] subset: PSI-MOD-slim synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "dimethylr" EXACT OMSSA-label [] synonym: "NNMe2Arg" EXACT PSI-MOD-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 16 N 4 O 1" xref: MassAvg: "184.24" xref: MassMono: "184.132411" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:36" xref: UniProt: "PTM-0341" is_a: MOD:00429 ! dimethylated residue is_a: MOD:00658 ! methylated arginine [Term] id: MOD:00784 name: N-acetyl-L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to N-acetyl-L-phenylalanine." [PubMed:18688235] comment: This modification has not been observed to occur naturally. synonym: "AcPhe" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 11 H 11 N 1 O 2" xref: MassAvg: "189.21" xref: MassMono: "189.078979" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00914 ! modified L-phenylalanine residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00785 name: N2-acetyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to N2-acetyl-L-tryptophan." [PubMed:18688235] comment: This modification has not been observed to occur naturally. synonym: "AcTrp" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 13 H 12 N 2 O 2" xref: MassAvg: "228.25" xref: MassMono: "228.089878" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00918 ! modified L-tryptophan residue is_a: MOD:01458 ! alpha-amino acetylated residue [Term] id: MOD:00786 name: deuterium substituted residue def: "A protein modification that effectively substitutes one or more (2)H deuterium atoms for (1)H protium atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "D(H)Res" EXACT PSI-MOD-label [] is_a: MOD:00839 ! (2)H deuterium labeled residue [Term] id: MOD:00787 name: diisopropylphosphoserine def: "modification from Unimod - label for the active site serine of the serine esterase/protease family also shown to label tyrosine in serum albumin" [Unimod:362] synonym: "Diisopropylphosphate" RELATED Unimod-interim [] synonym: "O-Diisopropylphosphorylation" RELATED Unimod-description [] xref: DiffAvg: "164.14" xref: DiffFormula: "C 6 H 13 O 3 P 1" xref: DiffMono: "164.060231" xref: Formula: "C 9 H 18 N 1 O 5 P 1" xref: MassAvg: "251.22" xref: MassMono: "251.092259" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:362" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00788 name: isopropylphosphotyrosine def: "modification from Unimod" [Unimod:363] synonym: "Isopropylphospho" RELATED Unimod-interim [] synonym: "O-Isopropylphosphorylation" RELATED Unimod-description [] xref: DiffAvg: "122.06" xref: DiffFormula: "C 3 H 7 O 3 P 1" xref: DiffMono: "122.013281" xref: Formula: "C 12 H 16 N 1 O 5 P 1" xref: MassAvg: "285.24" xref: MassMono: "285.076609" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:363" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00789 name: Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, heavy form def: "modification from Unimod - isotopic label ICPL method - The paper describes an H/D labeling strategy whereas the commercial product follows a C/13C labeling strategy. The digest is typically applied AFTER ICPL_light/heavy labeling, only Protein N-term labeling and Lys-specific labeling is applied." [PubMed:15602776, Unimod:364, URL:http\://www.serva.de/products/sheets/39230-E.pdf] synonym: "Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, heavy form" RELATED Unimod-description [] synonym: "ICPL:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "111.04" xref: DiffFormula: "(13)C 6 H 3 N 1 O 1" xref: DiffMono: "111.041593" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:364" is_a: MOD:01428 ! (13)C isotope tagged reagent [Term] id: MOD:00790 name: Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, light form def: "modification from Unimod - isotopic label ICPL method - The paper describes an H/D labeling strategy whereas the commercial product follows a C/13C labeling strategy. The digest is typically applied AFTER ICPL_light/heavy labeling, only Protein N-term labeling and Lys-specific labeling is applied." [PubMed:15602776, Unimod:365, URL:http\://www.serva.de/products/sheets/39230-E.pdf] synonym: "Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, light form" RELATED Unimod-description [] synonym: "ICPL" RELATED PSI-MS-label [] xref: DiffAvg: "105.02" xref: DiffFormula: "(12)C 6 H 3 N 1 O 1" xref: DiffMono: "105.021464" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:365" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:00791 name: 1x(18)O labeled deamidated L-glutamine def: "A protein modification that effectively converts an L-glutamine residue to L-glutamic acid with one (18)O." [PubMed:8382902, Unimod:366#Q] subset: PSI-MOD-slim synonym: "Deamidated:18O(1)" RELATED PSI-MS-label [] synonym: "Deamidation in presence of O18" RELATED Unimod-description [] xref: DiffAvg: "2.99" xref: DiffFormula: "H -1 N -1 (18)O 1" xref: DiffMono: "2.988262" xref: Formula: "C 5 H 7 N 1 (16)O 2 (18)O 1" xref: MassAvg: "131.05" xref: MassMono: "131.046839" xref: Origin: "Q" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:366" relationship: derives_from MOD:00685 ! deamidated L-glutamine is_a: MOD:00852 ! 1x(18)O labeled deamidated residue [Term] id: MOD:00792 name: deuterium monosubstituted residue def: "A protein modification that effectively substitutes one (2)H deuterium atom for one (1)H protium atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "D(H)1Res" EXACT PSI-MOD-label [] is_a: MOD:00786 ! deuterium substituted residue [Term] id: MOD:00793 name: dehydroalanine (Cys) def: "A protein modification that effectively converts an L-cysteine residue to dehydroalanine." [ChEBI:17123, DeltaMass:8, PubMed:10220322, PubMed:11212008, PubMed:1547888, PubMed:15799070, PubMed:1815586, PubMed:20805503, PubMed:2914619, PubMed:7947813, PubMed:8239649, RESID:AA0181#CYS, Unimod:368] comment: From DeltaMass: In an attempt to clarfiy the difference between the modification of cysteine to lanthionine and cysteine to dehydroalanine, the following contributions from the ABRF email forum are presented:Structurally speaking lanthionine is like cystine but lacks one S atom. I imagine one can think of it as a condensation of cysteine and dehydroalanine but I do not know how it is made biologically. Dehydroalanine could be derived from either serine or cysteine. If I recall Biochem 101 correctly lanthionine was first found in wool.-Lowell Ericsson (ERICSSONLH@U.WASHINGTON.EDU)As far as I know, the structure of lanthionine is two Ala's joined by a single sulphur with the loss of two hydrogens from the methyl group of the Ala.Stephen Bayne (sbay@novo.dk)Regarding the structure of lanthionine and dehydroalanine: dehydroalanine is formed by the loss of one sulfur atom and two hydrogen atoms from ONE cysteine residue. lanthionine is formed from TWO cysteines, is a thioether, and contains one sulfur atom less than the amino acid cystine. Dan McCormick (MCCORMICK@rcf.mayo.edu) [DeltaMass]. Most bacterially produced lanthionine crosslinks are made by dehydration of L-serine to dehydroalanine, and then reaction with L-cysteine so as to produce chiral inversion at the alpha-carbon of the original L-serine; the lanthionine is a meso-diastereomer with L-configuration of the original cysteine alpha-carbon and D-configuration of the original L-serine alpha-carbon. In cypemycin dehydroalanine has been shown to be produced by loss of hydrogen sulfide from cysteine. Beta-elimination of hydrogen sulfide does occur during treatment with performic acid [JSG]. subset: PSI-MOD-slim synonym: "2,3-didehydroalanine" EXACT RESID-alternate [] synonym: "2-aminoacrylic acid" EXACT RESID-alternate [] synonym: "2-aminopropenoic acid" EXACT RESID-systematic [] synonym: "4-methylidene-imidazole-5-one (MIO) active site" EXACT RESID-alternate [] synonym: "anhydroserine" EXACT RESID-alternate [] synonym: "Cys->Dha" RELATED PSI-MS-label [] synonym: "dehydroalanine" EXACT RESID-name [] synonym: "Dehydroalanine (from Cysteine)" EXACT DeltaMass-label [] synonym: "Dehydroalanine (from Cysteine)" RELATED Unimod-description [] synonym: "Dha" EXACT RESID-alternate [] synonym: "dHAla(Cys)" EXACT PSI-MOD-label [] synonym: "MOD_RES 2,3-didehydroalanine (Cys)" EXACT UniProt-feature [] xref: DiffAvg: "-34.08" xref: DiffFormula: "C 0 H -2 N 0 O 0 S -1" xref: DiffMono: "-33.987721" xref: Formula: "C 3 H 3 N 1 O 1" xref: MassAvg: "69.06" xref: MassMono: "69.021464" xref: Origin: "C" xref: Source: "natural" xref: Unimod: "Unimod:368" xref: TermSpec: "none" xref: UniProt: "PTM-0468" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01168 ! dehydroalanine [Term] id: MOD:00794 name: pyrrolidone from proline def: "OBSOLETE because redundant and identical to MOD:00477. Remap to MOD:00477." [PubMed:9252331, Unimod:369] comment: This Unimod entry appears to have come from the same description in PubMed:9252331 as Unimod:360. This entry was not annotated as being approved. Neither difference formula corresponds to the result described in the original citation PubMed:2161657. synonym: "Pro->Pyrrolidone" RELATED Unimod-interim [] synonym: "Pyrrolidone from Proline" RELATED Unimod-description [] xref: DiffAvg: "-28.01" xref: DiffFormula: "C -1 O -1" xref: DiffMono: "-27.994915" xref: Formula: "C 4 H 7 N 1 O 0" xref: MassAvg: "69.11" xref: MassMono: "69.057849" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00477" xref: Unimod: "Unimod:369" is_obsolete: true [Term] id: MOD:00795 name: Michael addition of hydroxymethylvinyl ketone to cysteine def: "modification from Unimod" [PubMed:11743741, Unimod:371] synonym: "HMVK" RELATED PSI-MS-label [] synonym: "Michael addition of hydroxymethylvinyl ketone to cysteine" RELATED Unimod-description [] xref: DiffAvg: "86.09" xref: DiffFormula: "C 4 H 6 O 2" xref: DiffMono: "86.036779" xref: Formula: "C 7 H 11 N 1 O 3 S 1" xref: MassAvg: "189.23" xref: MassMono: "189.045964" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:371" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00796 name: L-ornithine (Arg) def: "A protein modification that effectively converts an L-arginine residue to L-ornithine." [DeltaMass:129, OMSSA:163, PubMed:15489230, Unimod:372] subset: PSI-MOD-slim synonym: "Arg->Orn" RELATED PSI-MS-label [] synonym: "arg2orn" EXACT OMSSA-label [] synonym: "Ornithine (from Arginine)" EXACT DeltaMass-label [] synonym: "Ornithine from Arginine" RELATED Unimod-description [] synonym: "Ornithyl" EXACT DeltaMass-label [] xref: DiffAvg: "-42.04" xref: DiffFormula: "C -1 H -2 N -2" xref: DiffMono: "-42.021798" xref: Formula: "C 5 H 10 N 2 O 1" xref: MassAvg: "114.15" xref: MassMono: "114.079313" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:372" is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00797 name: 2-(S-L-cysteinyl)pyruvic acid O-phosphothioketal def: "a protein modification that effectively converts an L-cysteine residue to the PEP adduct, 2-(S-L-cysteinyl)pyruvic acid O-phosphothioketal" [PubMed:4696757, PubMed:7999765, PubMed:8664284, RESID:AA0391, ChEBI:149496] synonym: "(2R)-2-amino-3-[1-carboxy-1-(phosphonooxy)ethyl]sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-2-(phosphonooxy)propanoic acid" EXACT RESID-alternate [] synonym: "2-([(2R)-2-azanyl-2-carboxyethyl]sulfanyl)-2-(phosphonooxy)propanoic acid" EXACT RESID-alternate [] synonym: "2-(S-L-cysteinyl)pyruvic acid O-phosphothioketal" EXACT RESID-name [] synonym: "cysteinyl pyruvate O-phosphothioketal" EXACT RESID-alternate [] synonym: "MOD_RES 2-(S-cysteinyl)pyruvic acid O-phosphothioketal" EXACT UniProt-feature [] synonym: "phosphoenolpyruvate cysteine adduct" EXACT RESID-alternate [] synonym: "phospholactoyl cysteine adduct" EXACT RESID-alternate [] synonym: "S-[1-carboxy-1-(phosphonooxy)ethyl]cysteine" EXACT RESID-alternate [] synonym: "SPEPCys" EXACT PSI-MOD-label [] xref: DiffAvg: "168.04" xref: DiffFormula: "C 3 H 5 N 0 O 6 P 1 S 0" xref: DiffMono: "167.982375" xref: Formula: "C 6 H 10 N 1 O 7 P 1 S 1" xref: MassAvg: "271.18" xref: MassMono: "270.991559" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0424" is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00798 name: half cystine def: "A protein modification that can be regarded as effectively either one half of a cystine cross-link, or a cysteine residue with one hydrogen atom or proton removed." [PubMed:1988019, PubMed:2001356, PubMed:2076469, PubMed:3083866, PubMed:366603, PubMed:7918467, PubMed:8344916, Unimod:374] synonym: "Dehydro" RELATED PSI-MS-label [] synonym: "Half of a disulfide bridge" RELATED Unimod-description [] xref: DiffAvg: "-1.01" xref: DiffFormula: "C 0 H -1 N 0 O 0 S 0" xref: DiffMono: "-1.007825" xref: Formula: "C 3 H 4 N 1 O 1 S 1" xref: MassAvg: "102.13" xref: MassMono: "102.001360" xref: Origin: "C" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:374" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00799 name: S-galactosyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-galactosyl-L-cysteine." [PubMed:11945907, RESID:AA0392] comment: The reported peptide has not been isolated or characterized in subsequent work, and the peptide sequence has not been found in the human proteome. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2R)-2-amino-3-(D-galactopyranosylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "S-(beta-D-galactopyranosyl)cysteine" EXACT RESID-alternate [] synonym: "S-galactosyl-L-cysteine" EXACT RESID-name [] synonym: "S-glycosyl-cysteine" EXACT RESID-alternate [] synonym: "SGalCys" EXACT PSI-MOD-label [] synonym: "CARBOHYD S-linked (Gal) cysteine" EXACT UniProt-feature [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5 S 0" xref: DiffMono: "162.052823" xref: Formula: "C 9 H 15 N 1 O 6 S 1" xref: MassAvg: "265.28" xref: MassMono: "265.062008" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: UniProt: "PTM-0624" is_a: MOD:00426 ! S-glycosylated residue is_a: MOD:00476 ! monogalactosylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00800 name: L-cysteinyl-L-histidino-homocitryl vanadium heptairon nonasulfide def: "A protein modification that effectively converts an L-cysteine residue, an L-histidine residue, homocitric acid and a one-vanadium seven-iron nine-sulfur cluster to L-cysteinyl-L-histidino-homocitryl vanadium heptairon nonasulfide." [PubMed:2345152, RESID:AA0393] comment: Cross-link 2; incidental to RESID:AA0300. synonym: "CysHis-[V7Fe9S]" EXACT PSI-MOD-label [] synonym: "L-cysteinyl-L-histidino-homocitryl vanadium heptairon nonasulfide carbide" EXACT RESID-name [] synonym: "nitrogenase iron-vanadium cofactor" EXACT RESID-alternate [] xref: DiffAvg: "932.51" xref: DiffFormula: "C 7 Fe 7 H 6 N 0 O 7 S 9 V 1" xref: DiffMono: "932.248513" xref: Formula: "C 16 Fe 7 H 18 N 4 O 9 S 10 V 1" xref: MassAvg: "1172.80" xref: MassMono: "1172.316610" xref: Origin: "C, H" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:00772 ! vanadium containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00801 name: L-cysteinyl-L-histidino-homocitryl octairon nonasulfide def: "A protein modification that effectively converts an L-cysteine residue, an L-histidine residue, homocitric acid and an eight-iron nine-sulfur cluster to L-cysteinyl-L-histidino-homocitryl octairon nonasulfide." [PubMed:8392330, RESID:AA0394] comment: Cross-link 2; incidental to RESID:AA0300. synonym: "CysHis-[8Fe9S]" EXACT PSI-MOD-label [] synonym: "L-cysteinyl-L-histidino-homocitryl octairon nonasulfide carbide" EXACT RESID-name [] synonym: "nitrogenase iron-iron cofactor" EXACT RESID-alternate [] xref: DiffAvg: "937.42" xref: DiffFormula: "C 7 Fe 8 H 6 N 0 O 7 S 9" xref: DiffMono: "937.240588" xref: FormalCharge: "2-" xref: Formula: "C 16 Fe 8 H 18 N 4 O 9 S 10" xref: MassAvg: "1177.70" xref: MassMono: "1177.308685" xref: Origin: "C, H" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00802 name: L-histidino vanadium tetraoxide def: "a protein modification that effectively converts an L-histidine residue to L-histidino vanadium tetraoxide" [PubMed:10543953, PubMed:16494433, PubMed:8552646, RESID:AA0395] synonym: "(4-[(2S)-2-amino-2-carboxyethyl]-1H-imidazol-1-yl) (dihydroxy)dioxovanadium" EXACT RESID-alternate [] synonym: "1'-vanadato-L-histidine" EXACT RESID-alternate [] synonym: "bromoperoxidase vanadium cofactor" EXACT RESID-alternate [] synonym: "chloroperoxidase vanadium cofactor" EXACT RESID-alternate [] synonym: "dihydrogen (4-[(2S)-2-amino-2-carboxyethyl]-1H-imidazol-1-yl) (tetraoxido)vanadate" EXACT RESID-systematic [] synonym: "haloperoxidase vanadium cofactor" EXACT RESID-alternate [] synonym: "histidine-1-vanadate" EXACT RESID-alternate [] synonym: "histidine-N(epsilon)-vanadate" EXACT RESID-alternate [] synonym: "histidine-N1'-vanadate" EXACT RESID-alternate [] synonym: "L-histidino vanadium tetraoxide" EXACT RESID-name [] synonym: "N(tau)-vanadatohistidine" EXACT RESID-alternate [] synonym: "NtauH2VO4His" EXACT PSI-MOD-label [] synonym: "tele-vanadatohistidine" EXACT RESID-alternate [] xref: DiffAvg: "116.95" xref: DiffFormula: "C 0 H 2 N 0 O 4 V 1" xref: DiffMono: "116.939268" xref: Formula: "C 6 H 9 N 3 O 5 V 1" xref: MassAvg: "254.10" xref: MassMono: "253.998180" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00772 ! vanadium containing modified residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00803 name: 3-(S-L-cysteinyl)-L-tyrosine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-tyrosine residue by a thioether bond to form 3-(S-L-cysteinyl)-L-tyrosine." [PubMed:15342250, RESID:AA0396] comment: Cross-link 2. synonym: "(2S,3R)-2-amino-3-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-3-(4-hydroxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(2-amino-2-carboxyethylthio)-3-(4-hydroxyphenyl)propanoic acid" EXACT RESID-alternate [] synonym: "3-(L-cystein-S-yl)-L-tyrosine" EXACT RESID-name [] synonym: "CROSSLNK 3-(S-cysteinyl)-tyrosine (Cys-Tyr)" EXACT UniProt-feature [] synonym: "S-(tyros-3'-yl)cysteine" EXACT RESID-alternate [] synonym: "XLNKSCys3Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 12 H 12 N 2 O 3 S 1" xref: MassAvg: "264.30" xref: MassMono: "264.056863" xref: Origin: "C, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0020" is_a: MOD:02058 ! crosslinked L-tyrosine residue is_a: MOD:01993 ! beta-carbon thioether crosslinked residues [Term] id: MOD:00804 name: O-glucosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-beta-glucosylated L-serine." [PubMed:10734111, PubMed:2105311, PubMed:2511201, RESID:AA0397] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(beta-D-glucopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (Glc) serine" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (Hex)" EXACT UniProt-feature [] synonym: "O-glucosyl-L-serine" EXACT RESID-name [] synonym: "O-glycosylserine" EXACT RESID-alternate [] synonym: "O3-glucosylserine" EXACT RESID-alternate [] synonym: "OGlcSer" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 9 H 15 N 1 O 7" xref: MassAvg: "249.22" xref: MassMono: "249.084852" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0573" is_a: MOD:00002 ! O-glycosyl-L-serine is_a: MOD:00433 ! monoglucosylated residue [Term] id: MOD:00805 name: O-(N-acetylamino)glucosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-(N-acetylaminoglucosyl)-L-serine." [PubMed:3086323, PubMed:8404891, RESID:AA0398] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(2-acetamido-2-deoxy-beta-D-glucopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (GlcNAc) serine" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (HexNAc)" EXACT UniProt-feature [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "O-(2-acetylamino-2-deoxy-beta-D-glucopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "O-(N-acetylamino)glucosyl-L-serine" EXACT RESID-name [] synonym: "O-(N-acetylglucosaminyl)serine" EXACT RESID-alternate [] synonym: "O-glycosylserine" EXACT RESID-alternate [] synonym: "O-seryl-beta-N-acetylglucosaminide" EXACT RESID-alternate [] synonym: "O3-(2-acetamido-2-deoxy-beta-D-glucopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "O3-(N-acetylglucosaminyl)serine" EXACT RESID-alternate [] synonym: "OGlcNAcSer" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 11 H 18 N 2 O 7" xref: MassAvg: "290.27" xref: MassMono: "290.111401" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0580" is_a: MOD:00448 ! mono-N-acetylaminoglucosylated residue is_a: MOD:01675 ! O-(N-acetylamino)hexosyl-L-serine [Term] id: MOD:00806 name: O-(N-acetylamino)glucosyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O3-(N-acetylaminoglucosyl)-L-threonine." [PubMed:3086323, PubMed:8404891, RESID:AA0399] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(2-acetamido-2-deoxy-beta-D-glucopyranosyloxy)butanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (GlcNAc) threonine" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (HexNAc)" EXACT UniProt-feature [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "O-(2-acetylamino-2-deoxy-beta-D-glucopyranosyl)-L-threonine" EXACT RESID-alternate [] synonym: "O-(N-acetylamino)glucosyl-L-threonine" EXACT RESID-name [] synonym: "O-(N-acetylglucosaminyl)-L-threonine" EXACT RESID-alternate [] synonym: "O-glycosylthreonine" EXACT RESID-alternate [] synonym: "O-threonyl-beta-N-acetylglucosaminide" EXACT RESID-alternate [] synonym: "O3-(2-acetamido-2-deoxy-beta-D-glucopyranosyl)-L-threonine" EXACT RESID-alternate [] synonym: "O3-(N-acetylglucosaminyl)threonine" EXACT RESID-alternate [] synonym: "OGlcNAcThr" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 12 H 20 N 2 O 7" xref: MassAvg: "304.30" xref: MassMono: "304.127051" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0582" is_a: MOD:00448 ! mono-N-acetylaminoglucosylated residue is_a: MOD:01676 ! O-(N-acetylamino)hexosyl-L-threonine [Term] id: MOD:00807 name: pyruvic acid (Ser) def: "A protein modification that effectively converts an L-serine residue to pyruvic acid." [DeltaMass:23, PubMed:10085076, PubMed:3042771, PubMed:8464063, RESID:AA0127#SER, Unimod:385#S] comment: DeltaMass gives mass 70 and difference mass -16 with no formula subset: PSI-MOD-slim synonym: "2-oxopropanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES Pyruvic acid (Ser)" EXACT UniProt-feature [] synonym: "Pyruvate" EXACT DeltaMass-label [] synonym: "pyruvic acid" EXACT RESID-name [] synonym: "Pyruvoyl- (Serine)" EXACT DeltaMass-label [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 3 H 3 O 2" xref: MassAvg: "71.06" xref: MassMono: "71.013304" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:385" xref: UniProt: "PTM-0266" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01154 ! pyruvic acid is_a: MOD:01160 ! deaminated residue [Term] id: MOD:00808 name: O-galactosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-galactosylserine." [PubMed:666730, RESID:AA0400] synonym: "(2S)-2-amino-3-(alpha-D-galactopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (Gal) serine" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (Hex)" EXACT UniProt-feature [] synonym: "O-galactosyl-L-serine" EXACT RESID-name [] synonym: "O-glycosylserine" EXACT RESID-alternate [] synonym: "O3-galactosylserine" EXACT RESID-alternate [] synonym: "OGalSer" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 9 H 15 N 1 O 7" xref: MassAvg: "249.22" xref: MassMono: "249.084852" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0560" is_a: MOD:00002 ! O-glycosyl-L-serine is_a: MOD:00476 ! monogalactosylated residue [Term] id: MOD:00809 name: O-galactosyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O3-galactosylthreonine." [PubMed:2673008, RESID:AA0401] synonym: "(2S,3R)-2-amino-3-(alpha-D-galactopyranosyloxy)butanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (Gal) threonine" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (Hex)" EXACT UniProt-feature [] synonym: "O-galactosyl-L-threonine" EXACT RESID-name [] synonym: "O-glycosylthreonine" EXACT RESID-alternate [] synonym: "O3-galactosylthreonine" EXACT RESID-alternate [] synonym: "OGalThr" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 10 H 17 N 1 O 7" xref: MassAvg: "263.25" xref: MassMono: "263.100502" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0562" is_a: MOD:00476 ! monogalactosylated residue is_a: MOD:01348 ! O-hexosylated threonine [Term] id: MOD:00810 name: O-mannosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-mannosylserine." [PubMed:391559, RESID:AA0402] synonym: "(2S)-2-amino-3-(alpha-D-mannopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (Hex)" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (Man) serine" EXACT UniProt-feature [] synonym: "O-glycosylserine" EXACT RESID-alternate [] synonym: "O-mannopyranosylserine" EXACT RESID-alternate [] synonym: "O-mannosyl-L-serine" EXACT RESID-name [] synonym: "O3-mannosylserine" EXACT RESID-alternate [] synonym: "OManSer" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 9 H 15 N 1 O 7" xref: MassAvg: "249.22" xref: MassMono: "249.084852" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0588" is_a: MOD:00002 ! O-glycosyl-L-serine is_a: MOD:00595 ! monomannosylated residue [Term] id: MOD:00811 name: O-mannosyl-L-threonine def: "a protein modification that effectively forms a O3-mannosylthreonine" [PubMed:391559, RESID:AA0403] synonym: "(2S,3R)-2-amino-3-(alpha-D-mannopyranosyloxy)butanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (Hex)" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (Man) threonine" EXACT UniProt-feature [] synonym: "O-glycosylthreonine" EXACT RESID-alternate [] synonym: "O-mannosyl-L-threonine" EXACT RESID-name [] synonym: "O3-mannosylthreonine" EXACT RESID-alternate [] synonym: "OManThr" EXACT PSI-MOD-label [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 10 H 17 N 1 O 7" xref: MassAvg: "263.25" xref: MassMono: "263.100502" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0591" is_a: MOD:00595 ! monomannosylated residue is_a: MOD:01348 ! O-hexosylated threonine [Term] id: MOD:00812 name: O-fucosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to an O-fucosylserine." [PubMed:10734111, PubMed:11067851, PubMed:11344537, PubMed:12096136, PubMed:1517205, PubMed:15189151, PubMed:1904059, PubMed:3311742, PubMed:3578767, RESID:AA0404, Unimod:295#S] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(6-deoxy-alpha-D-galactopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (dHex)" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (Fuc)" EXACT UniProt-feature [] synonym: "dHex" RELATED PSI-MS-label [] synonym: "Fucose" RELATED Unimod-description [] synonym: "O-fucosyl-L-serine" EXACT RESID-name [] synonym: "O-glycosylserine" EXACT RESID-alternate [] synonym: "O3-fucosylserine" EXACT RESID-alternate [] synonym: "OFucSer" EXACT PSI-MOD-label [] synonym: "CARBOHYD O-linked (Fuc) serine" EXACT UniProt-feature [] xref: DiffAvg: "146.14" xref: DiffFormula: "C 6 H 10 N 0 O 4" xref: DiffMono: "146.057909" xref: Formula: "C 9 H 15 N 1 O 6" xref: MassAvg: "233.22" xref: MassMono: "233.089937" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:295" xref: UniProt: "PTM-0550" is_a: MOD:00002 ! O-glycosyl-L-serine is_a: MOD:00614 ! fucosylated residue [Term] id: MOD:00813 name: O-fucosyl-L-threonine def: "A protein modification that effectively converts an threonine residue to an O-fucosylthreonine." [PubMed:11344537, PubMed:11857757, PubMed:15189151, PubMed:1740125, PubMed:1900431, RESID:AA0405, Unimod:295#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(6-deoxy-alpha-D-galactopyranosyloxy)butanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (dHex)" EXACT UniProt-feature [] synonym: "CARBOHYD O-linked (Fuc) threonine" EXACT UniProt-feature [] synonym: "dHex" RELATED PSI-MS-label [] synonym: "Fucose" RELATED Unimod-description [] synonym: "O-fucosyl-L-threonine" EXACT RESID-name [] synonym: "O-glycosylthreonine" EXACT RESID-alternate [] synonym: "O3-fucosylthreonine" EXACT RESID-alternate [] synonym: "OFucThr" EXACT PSI-MOD-label [] xref: DiffAvg: "146.14" xref: DiffFormula: "C 6 H 10 N 0 O 4" xref: DiffMono: "146.057909" xref: Formula: "C 10 H 17 N 1 O 6" xref: MassAvg: "247.25" xref: MassMono: "247.105587" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:295" xref: UniProt: "PTM-0552" is_a: MOD:00005 ! O-glycosyl-L-threonine is_a: MOD:00614 ! fucosylated residue [Term] id: MOD:00814 name: O-xylosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-xylosylserine." [PubMed:8747463, RESID:AA0406] comment: One glycosylated serine with weak electron density was modeled as O3-alpha-xylosylserine, while O3-alpha-mannosyl serine and threonine were modeled at ten other positions. The authors do not discuss this exception or provide chemical evidence for it. Since an O3-xylosyl serine modification has not been reported in any other fungal proteins, the modification is probably also an O3-alpha-mannosyl serine, see MOD:00810 [JSG]. synonym: "(2S)-2-amino-3-(alpha-D-xylopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "O-(beta-D-xylopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "O-glycosylserine" EXACT RESID-alternate [] synonym: "O-xylosyl-L-serine" EXACT RESID-name [] synonym: "O3-xylosylserine" EXACT RESID-alternate [] synonym: "OXylSer" EXACT PSI-MOD-label [] synonym: "CARBOHYD O-linked (Xyl) serine" EXACT UniProt-feature [] xref: DiffAvg: "132.12" xref: DiffFormula: "C 5 H 8 N 0 O 4" xref: DiffMono: "132.042259" xref: Formula: "C 8 H 13 N 1 O 6" xref: MassAvg: "219.19" xref: MassMono: "219.074287" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: UniProt: "PTM-0598" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:00815 name: molybdopterin def: "OBSOLETE because redundant with MOD:00151. Remap to MOD:00151." [PubMed:14527393, PubMed:7878465, PubMed:9428520] xref: DiffAvg: "520.27" xref: DiffFormula: "C 10 H 11 Mo 1 N 5 O 8 P 1 S 2" xref: DiffMono: "521.884074" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00151" is_obsolete: true [Term] id: MOD:00816 name: S-stearoyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-stearoyl-L-cysteine." [DeltaMass:0, PubMed:2371783, PubMed:3143715, PubMed:8761467, RESID:AA0407] comment: From DeltaMass: Average Mass: 266 subset: PSI-MOD-slim synonym: "(R)-2-amino-3-(octadecanoylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(octadecanoylthio)propanoic acid" EXACT RESID-alternate [] synonym: "cysteine octadecanoate thioester" EXACT RESID-alternate [] synonym: "cysteine stearate thioester" EXACT RESID-alternate [] synonym: "LIPID S-stearoyl cysteine" EXACT UniProt-feature [] synonym: "S-stearoyl-L-cysteine" EXACT RESID-name [] synonym: "SSteCys" EXACT PSI-MOD-label [] synonym: "Stearoylation" EXACT DeltaMass-label [] xref: DiffAvg: "266.47" xref: DiffFormula: "C 18 H 34 N 0 O 1 S 0" xref: DiffMono: "266.260966" xref: Formula: "C 21 H 39 N 1 O 2 S 1" xref: MassAvg: "369.61" xref: MassMono: "369.270150" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0283" is_a: MOD:02005 ! S-acylated L-cysteine is_a: MOD:02006 ! S-stearoylated residue [Term] id: MOD:00817 name: 3'-geranyl-2',3'-dihydro-2',N2-cyclo-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 3'-geranyl-2',3'-dihydro-2',N2-cyclo-L-tryptophan." [ChEBI:35304, PubMed:16407988, PubMed:8168130, RESID:AA0408] synonym: "(2S,3aR,8aS)-3a-[(2E)-3,7-dimethylocta-2,6-dien-1-yl]-1,2,3,3a,8,8a-hexahydropyrrolo[2,3-b]indole-2-carboxylic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-3-geranyl-2,3-dihydro-2,N(alpha)-cyclo-L-tryptophan" EXACT RESID-alternate [] synonym: "3'-geranyl-2',3'-dihydro-2',N2-cyclo-L-tryptophan" EXACT RESID-name [] synonym: "3'Ger2'N2cycTrp" EXACT PSI-MOD-label [] synonym: "LIPID 3'-geranyl-2',N2-cyclotryptophan" EXACT UniProt-feature [] xref: DiffAvg: "136.24" xref: DiffFormula: "C 10 H 16 N 0 O 0" xref: DiffMono: "136.125201" xref: Formula: "C 21 H 26 N 2 O 1" xref: MassAvg: "322.45" xref: MassMono: "322.204513" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0026" is_a: MOD:00601 ! cyclized residue is_a: MOD:01115 ! isoprenylated tryptophan [Term] id: MOD:00818 name: glycosylphosphatidylinositolated residue def: "A protein modification that effectively converts a residue to a glycosylphosphatidylinositolethanolamidated." [PubMed:12643538, Unimod:394#C-term] synonym: "glycosylphosphatidylinositol" RELATED Unimod-description [] synonym: "GPIanchor" RELATED Unimod-interim [] synonym: "GPIRes" EXACT PSI-MOD-label [] synonym: "LIPID GPI-anchor amidated carboxyl end" EXACT UniProt-feature [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:394" xref: UniProt: "PTM-0139" is_a: MOD:00764 ! glycoconjugated residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:00819 name: L-2-aminobutanoic acid (Glu) def: "A protein modification that effectively converts an L-glutamic acid residue to L-2-aminobutanoic acid." [ChEBI:35619, DeltaMass:0, PubMed:11740505, RESID:AA0409] synonym: "(S)-2-aminobutanoic acid" EXACT RESID-systematic [] synonym: "Abu" EXACT DeltaMass-label [] synonym: "Abu" EXACT PSI-MOD-label [] synonym: "alpha-amino-n-butyric acid" EXACT PSI-MOD-alternate [] synonym: "alpha-aminobutyric acid" EXACT PSI-MOD-alternate [] synonym: "butyrine" EXACT PSI-MOD-alternate [] synonym: "dCbxGlu" EXACT PSI-MOD-alternate [] synonym: "L-2-amino-n-butyric acid" EXACT RESID-alternate [] synonym: "L-2-aminobutanoic acid" EXACT RESID-name [] synonym: "L-2-aminobutyric acid" EXACT RESID-alternate [] synonym: "L-alpha-amino-n-butyric acid" EXACT RESID-alternate [] synonym: "L-alpha-aminobutyric acid" EXACT RESID-alternate [] synonym: "L-butyrine" EXACT RESID-alternate [] xref: DiffAvg: "-44.01" xref: DiffFormula: "C -1 H 0 N 0 O -2" xref: DiffMono: "-43.989829" xref: Formula: "C 4 H 7 N 1 O 1" xref: MassAvg: "85.11" xref: MassMono: "85.052764" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00820 name: 2-imino-alanine 5-imidazolinone glycine def: "A protein modification that effectively crosslinks an L-aspartic acid residue and a glycine residue to form 2-imino-alanine 5-imidazolinone glycine." [PubMed:16627946, RESID:AA0410] comment: Cross-link 2; carboxamidine. synonym: "(2-ethanimidoyl-5-oxo-4,5-dihydro-1H-imidazol-1-yl)acetic acid" EXACT RESID-systematic [] synonym: "2,N-didehydroalanyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "2-(1-iminoethyl)-1-carboxymethyl-1-imidazolin-5-one" EXACT RESID-alternate [] synonym: "2-imino-alanine 5-imidazolinone glycine" EXACT RESID-name [] synonym: "2-imino-alanyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "[2-(1-iminoethyl)-5-oxo-4,5-dihydro-imidazol-1-yl]-acetic acid" EXACT RESID-alternate [] synonym: "alanyl-5-imidazolinone glycine" EXACT RESID-alternate [] synonym: "para-hydroxybenzylidene-imidazolidinone chromophore" EXACT RESID-alternate [] synonym: "red fluorescent protein zRFP574 chromophore" EXACT RESID-alternate [] xref: DiffAvg: "-64.04" xref: DiffFormula: "C -1 H -4 N 0 O -3" xref: DiffMono: "-64.016044" xref: Formula: "C 5 H 4 N 2 O 1" xref: MassAvg: "108.10" xref: MassMono: "108.032363" xref: Origin: "D, G" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01882 ! 5-imidazolinone ring crosslinked residues (Gly) [Term] id: MOD:00821 name: S-(L-alanyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-alanine residue and an L-cysteine residue by a thioester bond to form S-(L-alanyl)-L-cysteine." [PubMed:11807079, RESID:AA0411] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(2S)-2-aminopropanoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "alanine cysteine thioester" EXACT RESID-alternate [] synonym: "CROSSLNK Alanyl cysteine thioester (Cys-Ala)" EXACT UniProt-feature [] synonym: "S-(2-aminopropanoyl)cysteine" EXACT RESID-alternate [] synonym: "S-(L-alanyl)-L-cysteine" EXACT RESID-name [] synonym: "XLNK1AlaSCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 9 N 2 O 2 S 1" xref: MassAvg: "173.21" xref: MassMono: "173.038474" xref: Origin: "A, C" xref: Source: "hypothetical" xref: TermSpec: "C-term" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02040 ! crosslinked L-alanine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00822 name: S-(L-leucyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-leucine residue and an L-cysteine residue by a thioester bond to form S-(L-leucyl)-L-cysteine." [PubMed:12591958, RESID:AA0412] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(2S)-2-amino-4-methylpentanoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Leucyl cysteine thioester (Cys-Leu)" EXACT UniProt-feature [] synonym: "leucine cysteine thioester" EXACT RESID-alternate [] synonym: "S-(2-amino-4-methylpentanoyl)cysteine" EXACT RESID-alternate [] synonym: "S-(L-leucyl)-L-cysteine" EXACT RESID-name [] synonym: "XLNK1LeuSCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 9 H 15 N 2 O 2 S 1" xref: MassAvg: "215.29" xref: MassMono: "215.085424" xref: Origin: "C, L" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02050 ! crosslinked L-leucine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00823 name: S-(L-methionyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-methionine residue and an L-cysteine residue by a thioester bond to form S-(L-methionyl)-L-cysteine." [PubMed:12146974, RESID:AA0413] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(2S)-2-amino-4-(methylsulfanyl)butanoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Methionyl cysteine thioester (Cys-Met)" EXACT UniProt-feature [] synonym: "methionine cysteine thioester" EXACT RESID-alternate [] synonym: "S-(2-amino-4-methylthiobutanoyl)cysteine" EXACT RESID-alternate [] synonym: "S-(L-methionyl)-L-cysteine" EXACT RESID-name [] synonym: "XLNK1MetSCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 8 H 13 N 2 O 2 S 2" xref: MassAvg: "233.32" xref: MassMono: "233.041845" xref: Origin: "C, M" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02052 ! crosslinked L-methionine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00824 name: dehydroalanine (Tyr) def: "A protein modification that effectively converts an L-tyrosine residue to dehydroalanine." [PubMed:10220322, PubMed:1547888, PubMed:1815586, PubMed:2914619, PubMed:6838602, PubMed:7947813, PubMed:8239649, RESID:AA0181#TYR, Unimod:400] comment: incidental to RESID:AA0178 synonym: "2,3-didehydroalanine" EXACT RESID-alternate [] synonym: "2-aminoacrylic acid" EXACT RESID-alternate [] synonym: "2-aminopropenoic acid" EXACT RESID-systematic [] synonym: "4-methylidene-imidazole-5-one (MIO) active site" EXACT RESID-alternate [] synonym: "anhydroserine" EXACT RESID-alternate [] synonym: "dehydroalanine" EXACT RESID-name [] synonym: "Dha" EXACT RESID-alternate [] synonym: "dHAla(Tyr)" EXACT PSI-MOD-label [] xref: DiffAvg: "-94.11" xref: DiffFormula: "C -6 H -6 N 0 O -1" xref: DiffMono: "-94.041865" xref: Formula: "C 3 H 3 N 1 O 1" xref: MassAvg: "69.06" xref: MassMono: "69.021464" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:400" xref: UniProt: "PTM-0647" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01168 ! dehydroalanine [Term] id: MOD:00825 name: S-(L-phenylalanyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-phenylalanine residue and an L-cysteine residue by a thioester bond to form S-(L-phenylalaninyl)-L-cysteine." [PubMed:12591958, RESID:AA0414] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(2S)-2-amino-3-phenylpropanoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Phenylalanyl cysteine thioester (Cys-Phe)" EXACT UniProt-feature [] synonym: "phenylalanine cysteine thioester" EXACT RESID-alternate [] synonym: "S-(2-amino-3-phenylpropanoyl)cysteine" EXACT RESID-alternate [] synonym: "S-(L-phenylalanyl)-L-cysteine" EXACT RESID-name [] synonym: "XLNK1PheSCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 12 H 13 N 2 O 2 S 1" xref: MassAvg: "249.31" xref: MassMono: "249.069774" xref: Origin: "C, F" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00826 name: S-(L-threonyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-threonine residue and an L-cysteine residue by a thioester bond to form S-(L-threonyl)-L-cysteine." [PubMed:15268951, RESID:AA0415] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(2S,3R)-2-amino-3-hydroxybutanoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Threonyl cysteine thioester (Cys-Thr)" EXACT UniProt-feature [] synonym: "S-(2-amino-3-hydroxybutanoyl)cysteine" EXACT RESID-alternate [] synonym: "S-(L-threonyl)-L-cysteine" EXACT RESID-name [] synonym: "threonine cysteine thioester" EXACT RESID-alternate [] synonym: "XLNK1ThrSCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 11 N 2 O 3 S 1" xref: MassAvg: "203.24" xref: MassMono: "203.049038" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00827 name: S-(L-tyrosyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-tyrosine residue and an L-cysteine residue by a thioester bond to form S-(L-tyrosyl)-L-cysteine." [PubMed:11807079, RESID:AA0416] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(2S)-2-amino-3-(4-hydroxyphenyl)propanoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Tyrosyl cysteine thioester (Cys-Tyr)" EXACT UniProt-feature [] synonym: "S-(L-tyrosyl)-L-cysteine" EXACT RESID-name [] synonym: "S-[2-amino-3-(4-hydoxyphenyl)propanoyl]cysteine" EXACT RESID-alternate [] synonym: "tyrosine cysteine thioester" EXACT RESID-alternate [] synonym: "XLNK1TyrSCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 12 H 13 N 2 O 3 S 1" xref: MassAvg: "265.31" xref: MassMono: "265.064688" xref: Origin: "C, Y" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02058 ! crosslinked L-tyrosine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00828 name: S-(L-tryptophanyl)-L-cysteine def: "A protein modification that effectively crosslinks an L-tryptophan residue and an L-cysteine residue by a thioester bond to form S-(L-tryptophanyl)-L-cysteine." [PubMed:16030216, RESID:AA0417] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(2S)-2-amino-3-(1H-indol-3-yl)propanoyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Tryptophanyl cysteine thioester (Cys-Trp)" EXACT UniProt-feature [] synonym: "S-(L-tryptophanyl)-L-cysteine" EXACT RESID-name [] synonym: "S-[2-amino-3-(1H-indol-3-yl)propanoyl]cysteine" EXACT RESID-alternate [] synonym: "tryptophan cysteine thioester" EXACT RESID-alternate [] synonym: "XLNK1TrpSCys" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 14 H 14 N 3 O 2 S 1" xref: MassAvg: "288.35" xref: MassMono: "288.080673" xref: Origin: "C, W" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02057 ! crosslinked L-tryptophan residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00829 name: O-(L-phenylalanyl)-L-serine def: "A protein modification that effectively crosslinks an L-phenylalanine residue and an L-serine residue by an ester bond to form S-(L-phenylalaninyl)-L-serine." [PubMed:12591958, RESID:AA0418] comment: Cross-link 2. synonym: "(2S)-2-amino-3-([(2S)-2-amino-3-phenylpropanoyl]oxy)propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Phenylalanyl serine ester (Ser-Phe)" EXACT UniProt-feature [] synonym: "O-(2-amino-3-phenylpropanoyl)serine" EXACT RESID-alternate [] synonym: "O-(L-phenylalanyl)-L-serine" EXACT RESID-name [] synonym: "phenylalanine serine ester" EXACT RESID-alternate [] synonym: "XLNK1PheOSer" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 12 H 13 N 2 O 3" xref: MassAvg: "233.25" xref: MassMono: "233.092617" xref: Origin: "F, S" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00885 ! ester crosslinked residues is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00830 name: N-methyl-L-proline def: "A protein modification that effectively converts an L-proline residue to an N-methyl-L-proline." [PubMed:3127388, RESID:AA0419] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. subset: PSI-MOD-slim synonym: "(S)-1-methylpyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "1-methylpyrrolidine-2-carboxylic acid" EXACT RESID-alternate [] synonym: "hygric acid" EXACT RESID-alternate [] synonym: "MOD_RES N-methylproline" EXACT UniProt-feature [] synonym: "N-methyl-L-proline" EXACT RESID-name [] synonym: "N-methylated L-proline" EXACT PSI-MOD-alternate [] synonym: "NMePro" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 6 H 10 N 1 O 1" xref: MassAvg: "112.15" xref: MassMono: "112.076239" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0219" is_a: MOD:01417 ! monomethylated proline is_a: MOD:01462 ! N-methylated proline is_a: MOD:01680 ! alpha-amino monomethylated residue [Term] id: MOD:00831 name: N4-(N-acetylamino)glucosyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-(N-acetylaminoglucosyl)-L-asparagine." [PubMed:111247, PubMed:1694179, PubMed:5490222, RESID:AA0151#var] subset: PSI-MOD-slim synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "N4GlcNAcAsn" EXACT PSI-MOD-label [] synonym: "CARBOHYD N-linked (GlcNAc) asparagine" EXACT UniProt-feature [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 12 H 19 N 3 O 7" xref: MassAvg: "317.30" xref: MassMono: "317.122300" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0527" is_a: MOD:00448 ! mono-N-acetylaminoglucosylated residue is_a: MOD:01674 ! N4-(N-acetylamino)hexosyl-L-asparagine [Term] id: MOD:00832 name: N4-(N-acetylamino)galactosyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-(N-acetaminogalactosyl)-L-asparagine." [PubMed:8262914, RESID:AA0420] synonym: "(2S)-2-amino-4-(2-acetamido-2-deoxy-beta-D-galactopyranosyl)amino-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "N4-(2-acetamido-2-deoxy-beta-D-galactopyranosyl)-L-asparagine" EXACT RESID-alternate [] synonym: "N4-(2-acetylamino-2-deoxy-beta-D-galactopyranosyl)-L-asparagine" EXACT RESID-alternate [] synonym: "N4-(N-acetylamino)galactosyl-L-asparagine" EXACT RESID-name [] synonym: "N4-(N-acetylgalactosaminyl)asparagine" EXACT RESID-alternate [] synonym: "N4-asparagine-beta-N-acetylgalactosaminide" EXACT RESID-alternate [] synonym: "N4-glycosyl-L-asparagine" EXACT RESID-alternate [] synonym: "N4-glycosylasparagine" EXACT RESID-alternate [] synonym: "N4GalNAcAsn" EXACT PSI-MOD-label [] synonym: "CARBOHYD N-linked (GalNAc) asparagine" EXACT UniProt-feature [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 12 H 19 N 3 O 7" xref: MassAvg: "317.30" xref: MassMono: "317.122300" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0512" is_a: MOD:00563 ! mono-N-acetylaminogalactosylated residue is_a: MOD:01674 ! N4-(N-acetylamino)hexosyl-L-asparagine [Term] id: MOD:00833 name: N4-glucosyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-glucosyl-asparagine." [PubMed:1569073, PubMed:3410849, RESID:AA0421] synonym: "(2S)-2-amino-4-(D-glucopyranosyl)amino-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD N-linked (Glc)" EXACT UniProt-feature [] synonym: "N4-(D-glucopyranosyl)-L-asparagine" EXACT RESID-alternate [] synonym: "N4-asparagine-glucoside" EXACT RESID-alternate [] synonym: "N4-glucosyl-L-asparagine" EXACT RESID-name [] synonym: "N4-glucosylasparagine" EXACT RESID-alternate [] synonym: "N4-glycosyl-L-asparagine" EXACT RESID-alternate [] synonym: "N4-glycosylasparagine" EXACT RESID-alternate [] synonym: "N4GlcAsn" EXACT PSI-MOD-label [] synonym: "CARBOHYD N-linked (Glc) asparagine" EXACT UniProt-feature [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 10 H 16 N 2 O 7" xref: MassAvg: "276.25" xref: MassMono: "276.095751" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0517" is_a: MOD:00433 ! monoglucosylated residue is_a: MOD:01346 ! N4-hexosylated asparagine [Term] id: MOD:00834 name: O-(N-acetylamino)fucosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-(N-acetamino)fucosylserine." [PubMed:11342554, PubMed:12010970, RESID:AA0422] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(2-acetamido-2-deoxy-beta-D-fucopyranosyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "O-(2-acetylamino-2-deoxy-beta-D-fucopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "O-(N-acetylamino)fucosyl-L-serine" EXACT RESID-name [] synonym: "O-(N-acetylfucosaminyl)serine" EXACT RESID-alternate [] synonym: "O-seryl-beta-N-acetylfucosaminide" EXACT RESID-alternate [] synonym: "O3-(2-acetamido-2-deoxy-beta-D-fucopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "O3-(N-acetylfucosaminyl)serine" EXACT RESID-alternate [] synonym: "OFucNAcSer" EXACT PSI-MOD-label [] synonym: "CARBOHYD O-linked (FucNAc) serine" EXACT UniProt-feature [] xref: DiffAvg: "187.19" xref: DiffFormula: "C 8 H 13 N 1 O 4" xref: DiffMono: "187.084458" xref: Formula: "C 11 H 18 N 2 O 6" xref: MassAvg: "274.27" xref: MassMono: "274.116486" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0553" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:00835 name: L-3-oxoalanine (Ser) def: "A protein modification that effectively converts an L-serine residue to L-oxoalanine." [DeltaMass:349, PubMed:14563551, PubMed:7628016, PubMed:8681943, PubMed:9276974, PubMed:9478923, RESID:AA0185#SER, Unimod:401#S] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-oxopropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-oxopropionic acid" EXACT RESID-alternate [] synonym: "C(alpha)-formylglycine" RELATED RESID-misnomer [] synonym: "dehydrogenated serine residue" RELATED Unimod-description [] synonym: "Didehydro" RELATED PSI-MS-label [] synonym: "formylglycine" RELATED Unimod-alternate [] synonym: "formylglycine (from serine)" EXACT DeltaMass-label [] synonym: "L-3-oxoalanine" EXACT RESID-name [] synonym: "L-amino-malonic acid semialdehyde" EXACT RESID-alternate [] synonym: "L-aminomalonaldehydic acid" EXACT RESID-alternate [] synonym: "L-serinesemialdehyde" RELATED RESID-misnomer [] synonym: "MOD_RES 3-oxoalanine (Ser)" EXACT UniProt-feature [] synonym: "oxoalanine" RELATED Unimod-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 3 H 3 N 1 O 2" xref: MassAvg: "85.06" xref: MassMono: "85.016378" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:401" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01169 ! L-3-oxoalanine is_a: MOD:01888 ! didehydrogenated residue [Term] id: MOD:00836 name: deuterium disubstituted residue def: "A protein modification that effectively substitutes two (2)H deuterium atoms for two (1)H protium atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "D(H)2Res" EXACT PSI-MOD-label [] is_a: MOD:00786 ! deuterium substituted residue [Term] id: MOD:00837 name: deuterium tetrasubstituted residue def: "A protein modification that effectively substitutes four (2)H deuterium atoms for four (1)H protium atoms." [PubMed:18688235] synonym: "D(H)4Res" EXACT PSI-MOD-label [] is_a: MOD:00786 ! deuterium substituted residue [Term] id: MOD:00838 name: 3x(2)H labeled L-leucine def: "A protein modification that effectively substitutes three (1)H protium atoms with three (2)H deuterium atoms to produce 3x(2)H labeled L-leucine." [Unimod:262#L] synonym: "D(H)3Leu" EXACT PSI-MOD-label [] synonym: "Label:2H(3)" RELATED PSI-MS-label [] synonym: "Trideuteration" RELATED Unimod-description [] xref: DiffAvg: "3.02" xref: DiffFormula: "(1)H -3 (2)H 3" xref: DiffMono: "3.018830" xref: Formula: "C 6 (1)H 8 (2)H 3 N 1 O 1" xref: MassAvg: "116.10" xref: MassMono: "116.102894" xref: Origin: "L" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:262" is_a: MOD:00585 ! deuterium trisubstituted residue is_a: MOD:00911 ! modified L-leucine residue [Term] id: MOD:00839 name: (2)H deuterium labeled residue def: "A protein modification that effectively substitutes atoms of particular common isotopes with atoms of or groups containing deuteriumm, (2)H." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00702 ! isotope labeled residue [Term] id: MOD:00840 name: isocyanate reagent derivatized residue def: "A protein modification produced by formation of an adduct with an isocyanate compound." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00841 name: isothiocyanate reagent derivatized residue def: "A protein modification produced by formation of an adduct with an isothiocyanate compound." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00842 name: (13)C labeled residue def: "A protein modification that effectively substitutes atoms of particular common isotopes with atoms of or groups containing (13)C." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00702 ! isotope labeled residue [Term] id: MOD:00843 name: (15)N labeled residue def: "A protein modification that effectively substitutes atoms of particular common isotopes with atoms of or groups containing (15)N." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00702 ! isotope labeled residue [Term] id: MOD:00844 name: (18)O labeled residue def: "A protein modification that effectively substitutes atoms of particular common isotopes with atoms of or groups containing (18)O." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00702 ! isotope labeled residue [Term] id: MOD:00845 name: (18)O substituted residue def: "A protein modification that effectively substitutes one or more (18)O atoms for (16)O atoms." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00844 ! (18)O labeled residue [Term] id: MOD:00846 name: levuglandinyl (prostaglandin H2) adduct def: "stub" [PubMed:18688235] is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00847 name: (18)O disubstituted residue def: "A protein modification that effectively substitutes two (18)O atom for two (16)O atoms." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00845 ! (18)O substituted residue [Term] id: MOD:00848 name: reagent derivatized residue def: "A protein modification that is produced by formation of an adduct with a particular compound used as a reagent." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00849 name: potassium containing modified residue def: "A protein modification that effectively substitutes a potassium atom for a hydrogen atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "KRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:00850 name: unnatural residue def: "A protein modification that inserts or replaces a residue with an unnatural residue that is not considered to be derived from a natural residue by some chemical process." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00851 name: (18)O labeled deamidated residue def: "A protein modification that effectively replaces a carboxamido group with a carboxyl group labeled with (18)O." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00400 ! deamidated residue is_a: MOD:00844 ! (18)O labeled residue [Term] id: MOD:00852 name: 1x(18)O labeled deamidated residue def: "A protein modification that effectively replaces a carboxamido group with a carboxyl group labeled with one (18)O." [PubMed:8382902, Unimod:366] subset: PSI-MOD-slim xref: DiffAvg: "2.99" xref: DiffFormula: "H -1 N -1 (18)O 1" xref: DiffMono: "2.988262" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:366" is_a: MOD:00851 ! (18)O labeled deamidated residue [Term] id: MOD:00853 name: 2x(18)O labeled deamidated residue def: "A protein modification that effectively replaces a carboxamido group with a carboxyl group labeled with two (18)O." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "4.99" xref: DiffFormula: "H -1 N -1 (16)O -1 (18)O 2" xref: DiffMono: "4.992508" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00851 ! (18)O labeled deamidated residue [Term] id: MOD:00854 name: protonated L-lysine (L-lysinium) residue def: "A protein modification that effectively converts an L-lysine to L-lysinium (protonated L-lysine)." [PubMed:18688235] comment: Some sources compute the difference formula for charged, quatenary modified lysine based on protonated lysine rather than neutral lysine residue. In such cases, a comparable difference formula can be calculated based on this derivative. subset: PSI-MOD-slim xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "C 6 H 13 N 2 O 1" xref: MassAvg: "129.18" xref: MassMono: "129.102239" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01699 ! protonated residue [Term] id: MOD:00855 name: N6,N6,N6-trimethyl-L-lysine (from L-lysinium residue) def: "A protein modification that effectively converts an L-lysinium (N6-protonated L-lysine) residue to an N6,N6,N6-trimethyl-L-lysine." [DeltaMass:0, OMSSA:15, PubMed:12590383, PubMed:3145979, PubMed:4304194, PubMed:6778808, PubMed:7093227, PubMed:8453381, Unimod:37#K] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with an aminium, protonated primary amino, group. This process accounts only for trimethylation and not protonation. The alternative N6Me3+Lys process (MOD:00083) accounts for both protonation and trimethylation. subset: PSI-MOD-slim synonym: "N6Me3Lys" EXACT PSI-MOD-label [] synonym: "trimethylk" EXACT OMSSA-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6 N 0 O 0" xref: DiffMono: "42.046402" xref: FormalCharge: "1+" xref: Formula: "C 9 H 19 N 2 O 1" xref: MassAvg: "171.26" xref: MassMono: "171.149190" xref: Origin: "MOD:00854" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:37" is_a: MOD:00430 ! trimethylated residue relationship: derives_from MOD:00854 ! protonated L-lysine (L-lysinium) residue [Term] id: MOD:00856 name: protonated L-alanine (L-alaninium) residue def: "A protein modification that effectively converts an L-alanine residue to an L-alaninium (protonated L-alanine)." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "C 3 H 7 N 1 O 1" xref: MassAvg: "73.09" xref: MassMono: "73.052215" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00901 ! modified L-alanine residue is_a: MOD:01700 ! alpha-amino protonated residue [Term] id: MOD:00857 name: N,N,N-trimethyl-L-alanine (from L-alaninium) def: "A protein modification that effectively converts an L-alaninium (protonated L-alanine) residue to an N,N,N-trimethyl-L-alanine." [PubMed:12590383, PubMed:332162, PubMed:3979397, PubMed:6778808, PubMed:7715456, Unimod:37#A] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with an aminium, protonated primary amino, group. This process accounts only for trimethylation and not protonation. The alternative N2Me3+Ala process (MOD:00071) accounts for both protonation and trimethylation. subset: PSI-MOD-slim synonym: "N2Me3Ala" EXACT PSI-MOD-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6 N 0 O 0" xref: DiffMono: "42.046402" xref: FormalCharge: "1+" xref: Formula: "C 6 H 13 N 1 O 1" xref: MassAvg: "115.18" xref: MassMono: "115.099165" xref: Origin: "MOD:00856" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:37" is_a: MOD:01687 ! alpha-amino trimethylated residue relationship: derives_from MOD:00856 ! protonated L-alanine (L-alaninium) residue [Term] id: MOD:00858 name: D-alanine (Ser) def: "A protein modification that effectively converts an L-serine residue to D-alanine." [PubMed:7961627, RESID:AA0191#SER] synonym: "(R)-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "D-Ala(Ser)" EXACT PSI-MOD-label [] synonym: "D-alanine" EXACT RESID-name [] synonym: "MOD_RES D-alanine (Ser)" EXACT UniProt-feature [] xref: DiffAvg: "-16.00" xref: DiffFormula: "C 0 H 0 N 0 O -1" xref: DiffMono: "-15.994915" xref: Formula: "C 3 H 5 N 1 O 1" xref: MassAvg: "71.08" xref: MassMono: "71.037114" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0113" is_a: MOD:00862 ! D-alanine is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01161 ! deoxygenated residue [Term] id: MOD:00859 name: modified residue that can arise from different natural residues def: "A protein modification that can be derived from different natural residues by different chemical processes." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00860 name: sulfur containing modified residue def: "A protein modification that produces an amino acid residue containing an exogenous sulfur atom." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00861 name: phosphorus containing modified residue def: "A protein modification that produces an amino acid residue containing a phosphorus atom." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00862 name: D-alanine def: "A protein modification that effectively converts a source amino acid residue to D-alanine." [ChEBI:29949, PubMed:7287302, PubMed:7961627, RESID:AA0191] synonym: "(R)-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "D-alanine" EXACT RESID-name [] synonym: "MOD_RES D-alanine (Ala)" EXACT UniProt-feature [] synonym: "MOD_RES D-alanine (Ser)" EXACT UniProt-feature [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 3 H 5 N 1 O 1" xref: MassAvg: "71.08" xref: MassMono: "71.037114" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:00863 name: D-allo-threonine def: "A protein modification that effectively converts an L-threonine residue to D-allo-threonine." [ChEBI:32826, PubMed:18025465, PubMed:6893271, RESID:AA0199] synonym: "(2R,3R)-2-amino-3-hydroxybutanoic acid" EXACT RESID-systematic [] synonym: "D-Thr" EXACT PSI-MOD-label [] synonym: "D-threonine" EXACT RESID-name [] synonym: "MOD_RES D-threonine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 4 H 7 N 1 O 2" xref: MassAvg: "101.10" xref: MassMono: "101.047678" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0310" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:00864 name: tris-L-cysteinyl L-histidino diiron disulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-histidine residue and a two-iron two-sulfur cluster to tris-L-cysteinyl L-histidino diiron disulfide." [PubMed:17766439, PubMed:17766440, RESID:AA0438] comment: Cross-link 4. synonym: "CDGSH domain iron-sulfur cluster" EXACT RESID-alternate [] synonym: "di-mu-sulfido(bis-S-cysteinyliron)(S-cysteinyl-N3'-histidinoiron)" EXACT RESID-systematic [] synonym: "METAL Iron-sulfur (2Fe-2S)" EXACT UniProt-feature [] synonym: "METAL Iron-sulfur (2Fe-2S); via pros nitrogen" EXACT UniProt-feature [] synonym: "tris-L-cysteinyl L-histidino diiron disulfide" EXACT RESID-name [] xref: DiffAvg: "171.78" xref: DiffFormula: "C 0 Fe 2 H -4 N 0 O 0 S 2" xref: DiffMono: "171.783814" xref: FormalCharge: "2-" xref: Formula: "C 15 Fe 2 H 18 N 6 O 4 S 5" xref: MassAvg: "618.34" xref: MassMono: "617.870280" xref: Origin: "C, C, C, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:00865 name: N-aspartyl-glycosylsphingolipidinositolethanolamine def: "A protein modification that effectively converts an L-aspartic acid residue to N-aspartyl-glycosylsphingolipidinositolethanolamine." [RESID:AA0439] synonym: "GSIAsp" EXACT PSI-MOD-label [] synonym: "LIPID GPI-like-anchor amidated aspartate" EXACT UniProt-feature [] synonym: "N-aspartyl-glycosylsphingolipidinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 6 H 12 N 2 O 7 P 1" xref: MassAvg: "255.14" xref: MassMono: "255.038212" xref: Origin: "D" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0322" is_a: MOD:00466 ! glycosylsphingolipidinositolated residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:00866 name: dihydroxylated proline def: "A protein modification that effectively converts an L-proline residue to one of several dihydroxylated proline residues, such as (2S,3R,4R)-3,4-dihydroxyproline or (2S,3R,4S)-3,4-dihydroxyproline." [PubMed:18688235] synonym: "Hy2Pro" EXACT PSI-MOD-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0024" is_a: MOD:00428 ! dihydroxylated residue is_a: MOD:00678 ! hydroxylated proline [Term] id: MOD:00867 name: L-cysteinyl-L-selenocysteine (Cys-Cys) def: "A protein modification that effectively cross-links an L-cysteine residue and an L-cysteine converted to an L-selenocysteine residue to form L-cysteinyl-L-selenocystine." [PubMed:10801974, PubMed:12911312, PubMed:17177418, RESID:AA0358#CYS] comment: Cross-link 2. synonym: "(R,R)-2-amino-3-[3-(2-aminopropanoic acid)sulfanyl]selanylpropanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Cysteinyl-selenocysteine (Cys-Sec)" EXACT UniProt-feature [] synonym: "CROSSLNK Cysteinyl-selenocysteine (Sec-Cys)" EXACT UniProt-feature [] synonym: "L-cysteinyl-L-selenocysteine" EXACT RESID-name [] xref: DiffAvg: "44.90" xref: DiffFormula: "C 0 H -2 N 0 O 0 S -1 Se 1" xref: DiffMono: "45.928800" xref: Formula: "C 6 H 8 N 2 O 2 S 1 Se 1" xref: MassAvg: "251.17" xref: MassMono: "251.947170" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01627 ! L-cysteinyl-L-selenocysteine [Term] id: MOD:00868 name: natural, non-standard encoded residue def: "A protein modification that inserts or replaces a residue with a natural, non-standard encoded residue, such as N-formyl-L-methionine, L-selenocysteine, or L-pyrrolysine." [PubMed:18688235] comment: These are produced exclusively by modification of amino acids acylated to special tRNA before incorporation by ribosomes into proteins. For this reason, they have also been referred to as pre-translational modifications. subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "natural" is_a: MOD:00009 ! natural residue [Term] id: MOD:00869 name: L-alanine residue (Asp) def: "A protein modification that effectively converts an L-aspartic acid residue to L-alanine." [PubMed:17138938, RESID:AA0001#ASP] comment: This has been reported to occur by a natural process of beta-decarboxylation. synonym: "(2S)-2-aminopropanoic acid" EXACT RESID-systematic [] synonym: "2-aminopropionic acid" EXACT RESID-alternate [] synonym: "2-azanylpropanoic acid" EXACT RESID-alternate [] synonym: "alpha-alanine" EXACT RESID-alternate [] synonym: "alpha-aminopropionic acid" EXACT RESID-alternate [] synonym: "Asp(Ala)" EXACT PSI-MOD-label [] synonym: "L-alanine" EXACT RESID-name [] synonym: "MOD_RES Beta-decarboxylated aspartate" EXACT UniProt-feature [] xref: DiffAvg: "-44.01" xref: DiffFormula: "C -1 H 0 N 0 O -2" xref: DiffMono: "-43.989829" xref: Formula: "C 3 H 5 N 1 O 1" xref: MassAvg: "71.08" xref: MassMono: "71.037114" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0314" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:02088 ! natural, standard, encoded residue substitution [Term] id: MOD:00870 name: phenyl isocyanate derivatized residue def: "A protein modification produced by formation of an adduct with phenyl isocyanate." [Unimod:411] comment: From Unimod with no citation. subset: PSI-MOD-slim synonym: "phenyl isocyanate" RELATED Unimod-description [] synonym: "Phenylisocyanate" RELATED PSI-MS-label [] xref: DiffAvg: "119.12" xref: DiffFormula: "C 7 H 5 N 1 O 1" xref: DiffMono: "119.037114" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:411" is_a: MOD:00840 ! isocyanate reagent derivatized residue [Term] id: MOD:00871 name: (2)H5-phenyl isocyanate derivatized residue def: "A protein modification produced by formation of an adduct with (2)H5-phenyl isocyanate." [Unimod:412] comment: From Unimod with no citation. subset: PSI-MOD-slim synonym: "d5-phenyl isocyanate" RELATED Unimod-description [] synonym: "Phenylisocyanate:2H(5)" RELATED PSI-MS-label [] xref: DiffAvg: "124.07" xref: DiffFormula: "C 7 (2)H 5 N 1 O 1" xref: DiffMono: "124.068498" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:412" relationship: derives_from MOD:00870 ! phenyl isocyanate derivatized residue is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:00872 name: L-isoglutamyl monoglutamic acid def: "OBSOLETE because redundant and identical to MOD:01970. Remap to MOD:01970." [PubMed:10747868, PubMed:15525938, PubMed:1680872, RESID:AA0202#var, Unimod:450] synonym: "Glu" RELATED Unimod-interim [] synonym: "monoglutamyl" RELATED Unimod-description [] synonym: "N alpha -(gamma-Glutamyl)-Glu" EXACT DeltaMass-label [] xref: DiffAvg: "129.12" xref: DiffFormula: "C 5 H 7 N 1 O 3" xref: DiffMono: "129.042593" xref: Formula: "C 10 H 14 N 2 O 6" xref: MassAvg: "258.23" xref: MassMono: "258.085186" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:01970" xref: Unimod: "Unimod:450" is_obsolete: true [Term] id: MOD:00873 name: L-isoglutamyl diglutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to isoglutamyl glutamyl-glutamic acid, forming an isopeptide bond with a diglutamic acid." [DeltaMass:0, PubMed:10747868, PubMed:1680872, RESID:AA0202#var, Unimod:451] synonym: "diglutamyl" RELATED Unimod-description [] synonym: "GluGlu" RELATED Unimod-interim [] xref: DiffAvg: "258.23" xref: DiffFormula: "C 10 H 14 N 2 O 6" xref: DiffMono: "258.085186" xref: Formula: "C 15 H 21 N 3 O 9" xref: MassAvg: "387.35" xref: MassMono: "387.127779" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:451" is_a: MOD:00207 ! L-isoglutamyl-polyglutamic acid [Term] id: MOD:00874 name: L-isoglutamyl triglutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to isoglutamyl glutamyl-glutamyl-glutamic acid, forming an isopeptide bond with a triglutamic acid." [DeltaMass:0, PubMed:10747868, PubMed:1680872, RESID:AA0202#var, Unimod:452] comment: From DeltaMass: Average Mass: 388. synonym: "GluGluGlu" RELATED Unimod-interim [] synonym: "N alpha -(gamma-Glutamyl)-Glu3" EXACT DeltaMass-label [] synonym: "triglutamyl" RELATED Unimod-description [] xref: DiffAvg: "387.35" xref: DiffFormula: "C 15 H 21 N 3 O 9" xref: DiffMono: "387.127779" xref: Formula: "C 20 H 28 N 4 O 12" xref: MassAvg: "516.46" xref: MassMono: "516.170372" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:452" is_a: MOD:00207 ! L-isoglutamyl-polyglutamic acid [Term] id: MOD:00875 name: L-isoglutamyl tetraglutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to isoglutamyl glutamyl-glutamyl-glutamyl-glutamic acid, forming an isopeptide bond with a tetraglutamic acid." [PubMed:10747868, PubMed:1680872, RESID:AA0202#var, Unimod:453] synonym: "GluGluGluGlu" RELATED Unimod-interim [] synonym: "tetraglutamyl" RELATED Unimod-description [] xref: DiffAvg: "516.46" xref: DiffFormula: "C 20 H 28 N 4 O 12" xref: DiffMono: "516.170372" xref: Formula: "C 25 H 35 N 5 O 15" xref: MassAvg: "645.57" xref: MassMono: "645.212965" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:453" is_a: MOD:00207 ! L-isoglutamyl-polyglutamic acid [Term] id: MOD:00876 name: hexosaminylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a hexosamine sugar group through a glycosidic bond." [Unimod:454] synonym: "HexN" RELATED PSI-MS-label [] synonym: "Hexosamine" RELATED Unimod-description [] synonym: "Hexosamines (GalN, GlcN)" EXACT DeltaMass-label [] xref: DiffAvg: "161.16" xref: DiffFormula: "C 6 H 11 N 1 O 4" xref: DiffMono: "161.068808" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:454" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00877 name: imidoester crosslink dimethyl pimelimidate singly attached def: "dimethyl pimelimidate modification from Unimod" [Unimod:455, URL:http\://www.piercenet.com/files/0668ss5.pdf] synonym: "One end of crosslink attached, one end free" RELATED Unimod-description [] synonym: "Xlink:DMP-s" RELATED Unimod-interim [] xref: DiffAvg: "154.21" xref: DiffFormula: "C 8 H 14 N 2 O 1" xref: DiffMono: "154.110613" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:455" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00878 name: imidoester crosslink dimethyl pimelimidate doubly attached def: "dimethyl pimelimidate modification from Unimod - Mechanism of the reaction of imidoesters with amines" [PubMed:7171546, Unimod:456, URL:http\://dx.doi.org/10.1021/ja00877a017] synonym: "Both ends of crosslink attached to same peptide" RELATED Unimod-description [] synonym: "Xlink:DMP" RELATED Unimod-interim [] xref: DiffAvg: "122.17" xref: DiffFormula: "C 7 H 10 N 2" xref: DiffMono: "122.084398" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:456" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00879 name: naphthalene-2,3-dicarboxaldehyde def: "modification from Unimod" [PubMed:2081203, Unimod:457] synonym: "naphthalene-2,3-dicarboxaldehyde" RELATED Unimod-description [] synonym: "NDA" RELATED Unimod-interim [] xref: DiffAvg: "175.19" xref: DiffFormula: "C 13 H 5 N 1" xref: DiffMono: "175.042199" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:457" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00880 name: 6x(13)C labeled 4-sulfophenyl isothiocyanate derivatized residue def: "A protein modification produced by formation of an adduct with 6x(13)C labeled 4-sulfophenyl isothiocyanate." [PubMed:15536630, PubMed:16526082, Unimod:464] synonym: "4-sulfophenyl isothiocyanate (Heavy C13)" RELATED Unimod-description [] synonym: "SPITC:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "220.99" xref: DiffFormula: "(12)C 1 (13)C 6 H 5 N 1 O 3 S 2" xref: DiffMono: "220.991214" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:464" relationship: derives_from MOD:00584 ! 4-sulfophenyl isothiocyanate derivatized residue is_a: MOD:01428 ! (13)C isotope tagged reagent [Term] id: MOD:00881 name: N-reductive amination-D def: "OBSOLETE because Unimod entry 465 megerd with 199. Remap to MOD:00552 DiMethyl-CH2D." [PubMed:9252331, Unimod:465] xref: DiffAvg: "32.06" xref: DiffFormula: "C 2 (2)H 4" xref: DiffMono: "32.056407" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00552" xref: Unimod: "Unimod:465" is_obsolete: true [Term] id: MOD:00882 name: S-(2-aminoethyl)cysteine (Ser) def: "A protein modification that effectively converts an L-serine residue to S-(2-aminoethyl)cysteine." [DeltaMass:171, PubMed:12923550, Unimod:472#S] comment: From DeltaMass: Average Mass: 146 Abbreviation:-AECys_ Formula:C5H10O2N1S1 Monoisotopic Mass Change:146.051 Average Mass Change:146.214 References:PE Sciex. synonym: "AEC-MAEC" RELATED Unimod-interim [] synonym: "Aminoethyl Cysteinyl (AECys)" EXACT DeltaMass-label [] synonym: "aminoethylcysteine" RELATED Unimod-description [] xref: DiffAvg: "59.13" xref: DiffFormula: "C 2 H 5 N 1 O -1 S 1" xref: DiffMono: "59.019356" xref: Formula: "C 5 H 10 N 2 O 1 S 1" xref: MassAvg: "146.21" xref: MassMono: "146.051384" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:472" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:00883 name: C1-amidated residue def: "A protein modification that effectively replaces a 1-carboxyl group (usually referred to as the alpha-carboxyl) with a carboxamido group." [DeltaMass:0, OMSSA:25, Unimod:2] comment: The normal biological process involves formation of an amide of an amino acid residue in a peptide sequence where it is followed by a glycine and two basic residues, either arginine or lysine, although in some taxa only one basic residue is required. The peptide is cleaved after the basic residues, glycine is oxidized to hydroxyglycine, which decomposes to release a carboxamide C-terminal [JSG]. subset: PSI-MOD-slim synonym: "alpha-amidated residue" EXACT PSI-MOD-alternate [] synonym: "Amidated" RELATED PSI-MS-label [] synonym: "Amidation" RELATED Unimod-description [] synonym: "Amide formation (C terminus)" EXACT DeltaMass-label [] synonym: "ctermamide" EXACT OMSSA-label [] synonym: "ResN" EXACT PSI-MOD-label [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:2" is_a: MOD:00674 ! amidated residue [Term] id: MOD:00884 name: S-aminoethylcysteine (Cys) def: "A protein modification that effectively converts an L-cysteine residue to S-2-aminoethylcysteine." [PubMed:1175632, PubMed:18688235] comment: This modified residue is a chemical isolog of L-lysine for trypsin hydolysis produced from L-cysteine by aziridine. subset: PSI-MOD-slim synonym: "4-thialysine" EXACT PSI-MOD-alternate [] synonym: "L-cysteine aziridine adduct" EXACT PSI-MOD-alternate [] synonym: "S-(2-aminoethyl)-L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "43.07" xref: DiffFormula: "C 2 H 5 N 1 O 0 S 0" xref: DiffMono: "43.042199" xref: Formula: "C 5 H 10 N 2 O 1 S 1" xref: MassAvg: "146.21" xref: MassMono: "146.051384" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00885 name: ester crosslinked residues def: "A protein modification that crosslinks two residues by formation of an ester bond." [PubMed:18688235] is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:00886 name: 6'-chloro-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 6'-chloro-L-tryptophan." [PubMed:9033387, RESID:AA0180, Unimod:936#W] comment: The Unimod:340 cross-reference to RESID:AA0180 is incorrect. RESID:AA0180 should be cross-referenced by Unimod:936 [JSG]. synonym: "(2S)-2-amino-3-(6-chloro-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "6'-chloro-L-tryptophan" EXACT RESID-name [] synonym: "6'-ClTrp" EXACT PSI-MOD-label [] synonym: "MOD_RES 6'-chlorotryptophan" EXACT UniProt-feature [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "C 11 Cl 1 H 9 N 2 O 1" xref: MassAvg: "220.66" xref: MassMono: "220.040341" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:936" xref: UniProt: "PTM-0052" is_a: MOD:01913 ! monochlorinated L-tryptophan [Term] id: MOD:00887 name: methylated aspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to a methylated aspartic acid, such as aspartic acid 4-methyl ester." [PubMed:18688235] is_a: MOD:00427 ! methylated residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:00888 name: protonated L-proline (L-prolinium) residue def: "A protein modification that effectively converts an L-proline to an L-prolinium (protonated L-proline)." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "C 5 H 9 N 1 O 1" xref: MassAvg: "99.13" xref: MassMono: "99.067865" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01700 ! alpha-amino protonated residue [Term] id: MOD:00889 name: N,N-dimethyl-L-proline (from L-prolinium) def: "A protein modification that effectively converts an L-prolinium (charged L-proline) residue to N,N-dimethyl-L-proline." [Unimod:36#P] subset: PSI-MOD-slim xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.030752" xref: FormalCharge: "1+" xref: Formula: "C 7 H 13 N 1 O 1" xref: MassAvg: "127.19" xref: MassMono: "127.099165" xref: Origin: "MOD:00888" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:36" relationship: derives_from MOD:00075 ! N,N-dimethyl-L-proline relationship: derives_from MOD:00888 ! protonated L-proline (L-prolinium) residue is_a: MOD:00712 ! methylated proline is_a: MOD:00710 ! protonated-dimethylated residue is_a: MOD:01686 ! alpha-amino dimethylated residue [Term] id: MOD:00890 name: phosphorylated L-histidine def: "A protein modification that effectively converts an L-histidine residue to a phosphorylated L-histidine, such as pros-phosphohistidine, or tele-phosphohistidine." [OMSSA:192, Unimod:21#H] subset: PSI-MOD-slim synonym: "mod192" EXACT OMSSA-label [] synonym: "NPhosHis" EXACT PSI-MOD-label [] synonym: "Phospho" RELATED PSI-MS-label [] synonym: "phosphohistidine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 6 H 8 N 3 O 4 P 1" xref: MassAvg: "217.12" xref: MassMono: "217.025242" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:21" xref: UniProt: "PTM-0252" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01456 ! N-phosphorylated residue [Term] id: MOD:00891 name: D-serine def: "A protein modification that effectively converts a source amino acid residue to D-serine." [ChEBI:29998, PubMed:6893271, PubMed:7973665, RESID:AA0195] synonym: "(R)-2-amino-3-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "D-Ser" EXACT PSI-MOD-label [] synonym: "D-serine" EXACT RESID-name [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 3 H 5 N 1 O 2" xref: MassAvg: "87.08" xref: MassMono: "87.032028" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:00892 name: D-serine (Cys) def: "A protein modification that effectively converts an L-cysteine residue to D-serine." [PubMed:18025465, PubMed:6893271, RESID:AA0195#CYS] synonym: "(R)-2-amino-3-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "D-serine" EXACT RESID-name [] synonym: "MOD_RES D-serine (Cys)" EXACT UniProt-feature [] xref: DiffAvg: "-16.06" xref: DiffFormula: "C 0 H 0 N 0 O 1 S -1" xref: DiffMono: "-15.977156" xref: Formula: "C 3 H 5 N 1 O 2" xref: MassAvg: "87.08" xref: MassMono: "87.032028" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0309" is_a: MOD:00891 ! D-serine is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00893 name: residues isobaric at 128.0-128.1 def: "Natural or modified residues with a mass of 128.0-128.1 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00616 ! residues isobaric at a resolution below 0.1 Da [Term] id: MOD:00894 name: residues isobaric at 128.058578 Da def: "Natural or modified resiues with a mass of 128.058578 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00569 ! residues isobaric at a resolution below 0.000001 Da is_a: MOD:00893 ! residues isobaric at 128.0-128.1 [Term] id: MOD:00895 name: FAD modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a flavin adenine dinucleotide (FAD) group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "FADRes" EXACT PSI-MOD-label [] xref: DiffAvg: "783.54" xref: DiffFormula: "C 27 H 31 N 9 O 15 P 2" xref: DiffMono: "783.141485" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00697 ! flavin modified residue is_a: MOD:00861 ! phosphorus containing modified residue [Term] id: MOD:00896 name: FMN modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a riboflavin phosphate (flavin mononucleotide, FMN) group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "FMNRes" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00697 ! flavin modified residue is_a: MOD:00861 ! phosphorus containing modified residue [Term] id: MOD:00897 name: N-acetyl-S-archeol-cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-acetyl-S-archeol-L-cysteine." [RESID:AA0043#var, RESID:AA0223#var] xref: DiffAvg: "677.20" xref: DiffFormula: "C 45 H 88 N 0 O 3 S 0" xref: DiffMono: "676.673347" xref: Formula: "C 48 H 93 N 1 O 4 S 1" xref: MassAvg: "780.34" xref: MassMono: "779.682531" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00905 ! modified L-cysteine residue relationship: has_functional_parent MOD:00052 ! N-acetyl-L-cysteine relationship: has_functional_parent MOD:00228 ! S-diphytanylglycerol diether-L-cysteine [Term] id: MOD:00898 name: S-(sn-1-2-oleoyl-3-palmitoyl-glycerol)cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(sn-1-2-oleoyl-3-palmitoyl-glycerol)cysteine." [PubMed:10896212, PubMed:4575979, PubMed:9056182, RESID:AA0107#var, Unimod:377] comment: Incidental to RESID:AA0060. synonym: "Diacylglycerol" RELATED PSI-MS-label [] synonym: "diacylglycerol" RELATED Unimod-description [] xref: DiffAvg: "576.95" xref: DiffFormula: "C 37 H 68 N 0 O 4 S 0" xref: DiffMono: "576.511761" xref: Formula: "C 40 H 73 N 1 O 5 S 1" xref: MassAvg: "680.09" xref: MassMono: "679.520945" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:377" is_a: MOD:00116 ! S-diacylglycerol-L-cysteine [Term] id: MOD:00899 name: N-palmitoyl-S-diacylglycerol-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-palmitoyl-S-diacylglycerol-L-cysteine." [RESID:AA0069#var, RESID:AA0107#var] xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00905 ! modified L-cysteine residue relationship: has_functional_parent MOD:00069 ! N-palmitoyl-L-cysteine relationship: has_functional_parent MOD:00116 ! S-diacylglycerol-L-cysteine [Term] id: MOD:00900 name: N-palmitoyl-S-(sn-1-2-oleoyl-3-palmitoyl-glycerol)cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-palmitoyl-S-(sn-1-2-oleoyl-3-palmitoyl-glycerol)cysteine." [PubMed:18688235] synonym: "(R)-2-hexadecanoylamino-3-[(S)-2-((Z)-9-octadecenoyloxy)-3-(hexadecanoyloxy)propyl]sulfanylpropanoic acid" EXACT PSI-MOD-alternate [] synonym: "2-hexadecanoylamino-3-[(S)-2-((Z)-9-octadecenoyloxy)-3-(hexadecanoyloxy)propyl]thiopropanoic acid" EXACT PSI-MOD-alternate [] xref: DiffAvg: "815.36" xref: DiffFormula: "C 53 H 98 N 0 O 5 S 0" xref: DiffMono: "814.741426" xref: Formula: "C 56 H 103 N 1 O 6 S 1" xref: MassAvg: "918.50" xref: MassMono: "917.750611" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00899 ! N-palmitoyl-S-diacylglycerol-L-cysteine relationship: has_functional_parent MOD:00069 ! N-palmitoyl-L-cysteine relationship: has_functional_parent MOD:00898 ! S-(sn-1-2-oleoyl-3-palmitoyl-glycerol)cysteine [Term] id: MOD:00901 name: modified L-alanine residue def: "A protein modification that modifies an L-alanine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModAla" EXACT PSI-MOD-label [] xref: Origin: "A" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00902 name: modified L-arginine residue def: "A protein modification that modifies an L-arginine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModArg" EXACT PSI-MOD-label [] xref: Origin: "R" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00903 name: modified L-asparagine residue def: "A protein modification that modifies an L-asparagine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModAsn" EXACT PSI-MOD-label [] xref: Origin: "N" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00904 name: modified L-aspartic acid residue def: "A protein modification that modifies an L-aspartic acid residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModAsp" EXACT PSI-MOD-label [] xref: Origin: "D" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00905 name: modified L-cysteine residue def: "A protein modification that modifies an L-cysteine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModCys" EXACT PSI-MOD-label [] xref: Origin: "C" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00906 name: modified L-glutamic acid residue def: "A protein modification that modifies an L-glutamic acid residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModGlu" EXACT PSI-MOD-label [] xref: Origin: "E" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00907 name: modified L-glutamine residue def: "A protein modification that modifies an L-glutamine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModGln" EXACT PSI-MOD-label [] xref: Origin: "Q" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00908 name: modified glycine residue def: "A protein modification that modifies a glycine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModGly" EXACT PSI-MOD-label [] xref: Origin: "G" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00909 name: modified L-histidine residue def: "A protein modification that modifies an L-histidine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModHis" EXACT PSI-MOD-label [] xref: Origin: "H" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00910 name: modified L-isoleucine residue def: "A protein modification that modifies an L-isoleucine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModIle" EXACT PSI-MOD-label [] xref: Origin: "I" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00911 name: modified L-leucine residue def: "A protein modification that modifies an L-leucine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModLeu" EXACT PSI-MOD-label [] xref: Origin: "L" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00912 name: modified L-lysine residue def: "A protein modification that modifies an L-lysine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModLys" EXACT PSI-MOD-label [] xref: Origin: "K" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00913 name: modified L-methionine residue def: "A protein modification that modifies an L-methionine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModMet" EXACT PSI-MOD-label [] xref: Origin: "M" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00914 name: modified L-phenylalanine residue def: "A protein modification that modifies an L-phenylalanine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModPhe" EXACT PSI-MOD-label [] xref: Origin: "F" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00915 name: modified L-proline residue def: "A protein modification that modifies an L-proline residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModPro" EXACT PSI-MOD-label [] xref: Origin: "P" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00916 name: modified L-serine residue def: "A protein modification that modifies an L-serine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModSer" EXACT PSI-MOD-label [] xref: Origin: "S" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00917 name: modified L-threonine residue def: "A protein modification that modifies an L-threonine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModThr" EXACT PSI-MOD-label [] xref: Origin: "T" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00918 name: modified L-tryptophan residue def: "A protein modification that modifies an L-tryptophan residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModTrp" EXACT PSI-MOD-label [] xref: Origin: "W" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00919 name: modified L-tyrosine residue def: "A protein modification that modifies an L-tyrosine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00920 name: modified L-valine residue def: "A protein modification that modifies an L-valine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModVal" EXACT PSI-MOD-label [] xref: Origin: "V" is_a: MOD:01157 ! protein modification categorized by amino acid modified [Term] id: MOD:00921 name: new uncategorized Unimod entries def: "New uncategorized Unimod. OBSOLETE because organizational use is no longer required." [PubMed:18688235] is_obsolete: true [Term] id: MOD:00922 name: Cy3 CyDye DIGE Fluor saturation dye def: "modification from Unimod Chemical derivative" [Unimod:494] synonym: "Cy3 CyDye DIGE Fluor saturation dye" RELATED Unimod-description [] synonym: "CyDye-Cy3" RELATED Unimod-interim [] xref: DiffAvg: "672.84" xref: DiffFormula: "C 37 H 44 N 4 O 6 S 1" xref: DiffMono: "672.298156" xref: Formula: "C 40 H 49 N 5 O 7 S 2" xref: MassAvg: "775.98" xref: MassMono: "775.307341" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:494" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00923 name: Cy5 CyDye DIGE Fluor saturation dye def: "modification from Unimod Chemical derivative" [Unimod:495] synonym: "Cy5 CyDye DIGE Fluor saturation dye" RELATED Unimod-description [] synonym: "CyDye-Cy5" RELATED Unimod-interim [] xref: DiffAvg: "684.85" xref: DiffFormula: "C 38 H 44 N 4 O 6 S 1" xref: DiffMono: "684.298156" xref: Formula: "C 41 H 49 N 5 O 7 S 2" xref: MassAvg: "787.99" xref: MassMono: "787.307341" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:495" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00924 name: N6-(L-threonyl)-L-lysine def: "A protein modification that effectively crosslinks an L-lysine residue and an L-threonine residue by an isopeptide bond to form N6-(L-threonyl)-L-lysine." [PubMed:18063774, RESID:AA0440] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(2S,3R)-2-amino-3-hydroxybutanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "N6-(L-threonyl)-L-lysine" EXACT RESID-name [] synonym: "N6-threonyl-lysine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 10 H 18 N 3 O 3" xref: MassAvg: "228.27" xref: MassMono: "228.134816" xref: Origin: "K, T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0326" is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:00925 name: heptosylated residue def: "A protein modification that effectively replaces a hydrogen atom of an amino acid residue or of a modifying group with a heptose sugar group through a glycosidic bond." [Unimod:490] comment: From Unimod with no citation [JSG]. synonym: "Hep" RELATED PSI-MS-label [] synonym: "Heptose" RELATED Unimod-description [] xref: DiffAvg: "192.17" xref: DiffFormula: "C 7 H 12 O 6" xref: DiffMono: "192.063388" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:490" is_a: MOD:00693 ! glycosylated residue [Term] id: MOD:00926 name: Bisphenol A diglycidyl ether derivative def: "Modification from Unimod Non-standard residue. OBSOLETE because not an amino acid modification. From Unimod not an approved entry." [PubMed:11225353, Unimod:493] synonym: "BADGE" RELATED Unimod-interim [] synonym: "Bisphenol A diglycidyl ether derivative" RELATED Unimod-description [] xref: DiffAvg: "340.42" xref: DiffFormula: "C 21 H 24 O 4" xref: DiffMono: "340.167459" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:493" is_obsolete: true [Term] id: MOD:00927 name: 2x(13)C,4x(2)H labeled dimethylated residue def: "A protein modification that effectively replaces two hydrogen atoms of a residue containing common isotopes with two (13)C,3x(2)H labeled methyl groups to form a 2x(13)C,6x(2)H labeled dimethylated residue." [PubMed:16335955, PubMed:3802193, Unimod:510] synonym: "DiMethyl-C13HD2" RELATED Unimod-description [] synonym: "Dimethyl:2H(4)13C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "34.06" xref: DiffFormula: "(13)C 2 (2)H 4" xref: DiffMono: "34.063117" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: UnMod: "Unimod:510" is_a: MOD:00839 ! (2)H deuterium labeled residue is_a: MOD:00842 ! (13)C labeled residue [Term] id: MOD:00928 name: [3-(2,5)-dioxopyrrolidin-1-yloxycarbonyl)-propyl]dimethyloctylammonium def: "modification from Unimod Chemical derivative" [PubMed:16771548, Unimod:513] comment: Should have children for K and X-N-term [JSG]. synonym: "[3-(2,5)-Dioxopyrrolidin-1-yloxycarbonyl)-propyl]dimethyloctylammonium" RELATED Unimod-description [] synonym: "C8-QAT" RELATED Unimod-interim [] xref: DiffAvg: "227.39" xref: DiffFormula: "C 14 H 29 N 1 O 1" xref: DiffMono: "227.224915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:513" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00929 name: lactose glycated lysine def: "A modification produced in a non-enzymatic reaction between a lactose carbonyl group and an L-lysine to form a Schiff-base or an Amadori ketosamine lysine adduct." [PubMed:9606156, Unimod:512] comment: The term lactosylation used with this meaning is a misnomer [JSG]. synonym: "Hex(2)" RELATED Unimod-interim [] synonym: "Lactosylation" RELATED Unimod-description [] synonym: "CARBOHYD N-linked (Lac) (glycation) lysine" EXACT UniProt-feature [] xref: DiffAvg: "342.30" xref: DiffFormula: "C 12 H 22 O 11" xref: DiffMono: "342.116212" xref: Formula: "C 18 H 34 N 2 O 12" xref: MassAvg: "470.47" xref: MassMono: "470.211175" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:512" xref: UniProt: "PTM-0511" is_a: MOD:00767 ! glycated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00930 name: propyl-NAG tyrosine adduct def: "tyrosine adduct with substrate analog inhibitor 1,2-dideoxy-2'-methyl-alpha-D-glucopyranoso-[2,1-d]-Delta2'-thiazoline." [PubMed:15795231, Unimod:514] xref: DiffAvg: "232.27" xref: DiffFormula: "C 9 H 14 N 1 O 4 S 1" xref: DiffMono: "232.064354" xref: Formula: "C 18 H 23 N 2 O 6 S 1" xref: MassAvg: "395.45" xref: MassMono: "395.127682" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:514" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00931 name: Michael addition of t-butyl hydroxylated BHT (BHTOH) to C, H or K def: "modification from Unimod Other - BHTOH is formed upon metabolism of BHT with P450 enzymes. The BHTOH is further metabolized to its quinone methide (electrophile) which reacts with -SH and -NH2 groups" [PubMed:11085420, Unimod:498] synonym: "BHTOH" RELATED Unimod-interim [] synonym: "Michael addition of t-butyl hydroxylated BHT (BHTOH) to C, H or K" RELATED Unimod-description [] xref: DiffAvg: "234.34" xref: DiffFormula: "C 15 H 22 O 2" xref: DiffMono: "234.161980" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:498" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00932 name: IDBEST tag for quantitation def: "modification from Unimod Isotopic label" [PubMed:11821862, Unimod:499] synonym: "Heavy IDBEST tag for quantitation" RELATED Unimod-description [] synonym: "IGBP:13C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "298.02" xref: DiffFormula: "Br 1 (12)C 10 (13)C 2 H 13 N 2 O 2" xref: DiffMono: "298.022749" xref: Formula: "Br 1 (12)C 13 (13)C 2 H 18 N 3 O 3 S 1" xref: MassAvg: "401.03" xref: MassMono: "401.031934" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:499" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01428 ! (13)C isotope tagged reagent [Term] id: MOD:00933 name: methylglyoxal arginine adduct (+54 amu) def: "modification from Unimod Chemical derivative - 5-hydro-5-methylimidazol-4-one, arginine methylglyoxal arginine adduct (+54 amu)" [Unimod:319#R] comment: Ref. Uchida K, Sakai K, Itakura K, Osawa T, Toyokuni S. 1977. Protein modification by lipid peroxidation products: formation of malondialdehyde-derived N(epsilon)-(2-propenol)lysine in proteins. Arch Biochem Biophys. 346(1):45-52. synonym: "Delta:H(2)C(3)O(1)" RELATED PSI-MS-label [] synonym: "MDA adduct +54" RELATED Unimod-description [] xref: DiffAvg: "54.05" xref: DiffFormula: "C 3 H 2 O 1" xref: DiffMono: "54.010565" xref: Formula: "C 9 H 14 N 4 O 2" xref: MassAvg: "210.24" xref: MassMono: "210.111676" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:319" is_a: MOD:00630 ! C3-H2-O adduct (+54 amu) of malondialdehyde with lysine or methylglyoxal with arginine. is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00934 name: Levuglandinyl - arginine hydroxylactam adduct def: "modification from Unimod Post-translational" [Unimod:506] synonym: "Levuglandinyl - arginine hydroxylactam adduct" RELATED Unimod-description [] synonym: "LG-Hlactam-R" RELATED Unimod-interim [] xref: DiffAvg: "306.40" xref: DiffFormula: "C 19 H 26 N -2 O 5" xref: DiffMono: "306.171876" xref: Formula: "C 25 H 38 N 2 O 6" xref: MassAvg: "462.59" xref: MassMono: "462.272987" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:506" is_a: MOD:00846 ! levuglandinyl (prostaglandin H2) adduct is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00935 name: methionine oxidation with neutral loss of 64 Da def: "Oxidation of methionine to methionine sulfoxide with neutral loss of CH3SOH." [PubMed:18688235, PubMed:9004526] comment: Originally created from Unimod:507 that was later deleted. xref: DiffAvg: "-64.10" xref: DiffFormula: "C -1 H -4 N 0 O -1 S -1" xref: DiffMono: "-63.998286" xref: Formula: "C 4 H 5 N 1 O 1 S 0" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00431 ! modified residue with a secondary neutral loss is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:00936 name: Levuglandinyl - hydroxylactam adduct, K and N-term def: "modification from Unimod Post-translational" [Unimod:504] synonym: "Levuglandinyl - lysine hydroxylactam adduct" RELATED Unimod-description [] synonym: "LG-Hlactam-K" RELATED Unimod-interim [] xref: DiffAvg: "348.44" xref: DiffFormula: "C 20 H 28 O 5" xref: DiffMono: "348.193674" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:504" is_a: MOD:00846 ! levuglandinyl (prostaglandin H2) adduct [Term] id: MOD:00937 name: Levuglandinyl - arginine lactam adduct def: "modification from Unimod Post-translational" [Unimod:505] synonym: "Levuglandinyl - arginine lactam adduct" RELATED Unimod-description [] synonym: "LG-lactam-R" RELATED Unimod-interim [] xref: DiffAvg: "290.40" xref: DiffFormula: "C 19 H 26 N -2 O 4" xref: DiffMono: "290.176961" xref: Formula: "C 25 H 38 N 2 O 5" xref: MassAvg: "446.59" xref: MassMono: "446.278072" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:505" is_a: MOD:00846 ! levuglandinyl (prostaglandin H2) adduct is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:00938 name: Levuglandinyl - lactam adduct, K and N-term def: "modification from Unimod Post-translational" [PubMed:12590383, Unimod:503] synonym: "Levuglandinyl - lysine lactam adduct" RELATED Unimod-description [] synonym: "LG-lactam-K" RELATED Unimod-interim [] xref: DiffAvg: "332.44" xref: DiffFormula: "C 20 H 28 O 4" xref: DiffMono: "332.198759" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:503" is_a: MOD:00846 ! levuglandinyl (prostaglandin H2) adduct [Term] id: MOD:00939 name: hydrolyzed N-methylmaleimide cysteine adduct def: "modification from Unimod Chemical derivative" [Unimod:500] synonym: "Nmethylmaleimide+water" RELATED Unimod-interim [] synonym: "Nmethylmaleimidehydrolysis" RELATED Unimod-description [] xref: DiffAvg: "129.12" xref: DiffFormula: "C 5 H 7 N 1 O 3" xref: DiffMono: "129.042593" xref: Formula: "C 8 H 12 N 2 O 4 S 1" xref: MassAvg: "232.25" xref: MassMono: "232.051778" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:500" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00940 name: 3-methyl-2-pyridyl isocyanate derivatized residue def: "A protein modification produced by formation of an adduct with 3-methyl-2-pyridyl isocyanate." [PubMed:11078590, Unimod:501] synonym: "3-methyl-2-pyridyl isocyanate" RELATED Unimod-description [] synonym: "PyMIC" RELATED Unimod-interim [] xref: DiffAvg: "134.14" xref: DiffFormula: "C 7 H 6 N 2 O 1" xref: DiffMono: "134.048013" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:501" is_a: MOD:00840 ! isocyanate reagent derivatized residue [Term] id: MOD:00941 name: dehydropyrrolizidine alkaloid (dehydroretronecine) derivatized cysteine def: "modification from Unimod Chemical derivative" [PubMed:12175151, Unimod:488] synonym: "Dehydropyrrolizidine alkaloid (dehydroretronecine) on cysteines" RELATED Unimod-description [] synonym: "DHP" RELATED Unimod-interim [] xref: DiffAvg: "118.16" xref: DiffFormula: "C 8 H 8 N 1" xref: DiffMono: "118.065674" xref: Formula: "C 11 H 13 N 2 S 1" xref: MassAvg: "205.30" xref: MassMono: "205.079944" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:488" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00942 name: (4,4,5,5-(2)H4)-L-lysine def: "A protein modification that effectively substitutes four (1)H protium atoms with four (2)H deuterium atoms to produce (4,4,5,5-(2)H4)-L-lysine." [OMSSA:180, Unimod:481] comment: For SILAC experiments. synonym: "4,4,5,5-D4 Lysine" RELATED Unimod-description [] synonym: "4,4,5,5-tetradeuterolysine" EXACT PSI-MOD-alternate [] synonym: "Label:2H(4)" RELATED Unimod-interim [] synonym: "lys-2H4" EXACT OMSSA-label [] xref: DiffAvg: "4.03" xref: DiffFormula: "(1)H -4 (2)H 4" xref: DiffMono: "4.025107" xref: Formula: "C 6 (1)H 8 (2)H 4 N 2 O 1" xref: MassAvg: "132.12" xref: MassMono: "132.120070" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:481" is_a: MOD:00837 ! deuterium tetrasubstituted residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:00943 name: 4-trimethylammoniumbutanoyl derivatized residue def: "modification from Unimod Isotopic label" [PubMed:12643539, Unimod:476] synonym: "4-trimethyllammoniumbutyryl-" RELATED Unimod-description [] synonym: "TMAB" RELATED Unimod-interim [] xref: DiffAvg: "128.19" xref: DiffFormula: "C 7 H 14 N 1 O 1" xref: DiffMono: "128.107539" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:476" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00944 name: d9-4-trimethylammoniumbutanoyl derivatized residue def: "modification from Unimod Isotopic label" [Unimod:477] synonym: "d9-4-trimethyllammoniumbutyryl-" RELATED Unimod-description [] synonym: "TMAB:2H(9)" RELATED Unimod-interim [] xref: DiffAvg: "137.16" xref: DiffFormula: "C 7 (1)H 5 (2)H 9 N 1 O 1" xref: DiffMono: "137.164030" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:477" relationship: derives_from MOD:00943 ! 4-trimethylammoniumbutanoyl derivatized residue is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:00945 name: fluorescein-5-thiosemicarbazide adduct def: "OBSOLETE because redundant and identical to MOD:00626. Remap to MOD:00626." [PubMed:18688235] xref: DiffAvg: "421.43" xref: DiffFormula: "C 21 H 15 N 3 O 5 S 1" xref: DiffMono: "421.073242" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00626" is_obsolete: true [Term] id: MOD:00946 name: crosslinked residues with loss of ammonia def: "A protein modification that crosslinks two residues with a covalent bond and the loss of ammonia." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:00947 name: DeltaMass def: "Entries from DeltaMass see http://www.abrf.org/index.cfm/dm.home?AvgMass=all." [PubMed:18688235] is_a: MOD:00032 ! uncategorized protein modification [Term] id: MOD:00948 name: 5'-dephospho def: "OBSOLETE because this is a modification that occurs to DNA/RNA and not proteins. modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: -79 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:00949 name: desmosine def: "OBSOLETE because redundant and identical to MOD:01933. Remap to MOD:01933." [DeltaMass:0] comment: From DeltaMass: Average Mass: -58 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:01933" is_obsolete: true [Term] id: MOD:00950 name: decomposed carboxymethylated methionine def: "OBSOLETE because this modification has not been seen/reported on since this original publication in 1994 and carboxymethylation of proteins is common enough for this mass shift to have been seen in the intervening 25+ years. modification from DeltaMass" [DeltaMass:3] comment: From DeltaMass: Average Mass: -48 Average Mass Change:-48 References:Anal. Biochem. Vol 216 No.1 p141 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "M" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:00951 name: L-gamma-carboxyglutamic acid with neutral loss of carbon dioxide def: "Covalent modification of a peptide or protein L-glutamic acid residue to gamma-carboxyglutamic acid with secondary loss of a neutral carbon dioxide molecular fragment." [DeltaMass:58] comment: From DeltaMass: Average Mass: -44 Formula:CO2 Average Mass Change:-44 References:Nakamura T, Yu Z, Fainzilber M, Burlingame AL. Protein Sci (1996) 5, 524-530 Mass spectrometric-based revision of the structure of a cysteine-rich peptide toxin with gamma-carboxyglutamic acid, TxVIIA, from the sea snail, Conus textile. Notes: The elimination of CO2 will regenerate glutamate as if there was no modification. However, peaks appearing with an interval of 44 is quite characteristic. It would be noteworthy to remind that loss of 44 from a gamma-carboxyglutamate-containing peptide may be observed not only as a result of spontaneous decarboxylation but also as an artifact under some ionization conditions such as negative ion mode MALDI. synonym: "d4CbxGlu" EXACT PSI-MOD-label [] xref: DiffAvg: "-44.01" xref: DiffFormula: "C -1 H 0 N 0 O -2" xref: DiffMono: "-43.989829" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:00957 ! modified residue with neutral loss of carbon dioxide is_a: MOD:00960 ! decarboxylated residue [Term] id: MOD:00952 name: (2-aminosuccinimidyl)acetic acid (Asp) def: "A protein modification that crosslinks an aspartic acid and the following glycine residue with the formation of (2-aminosuccinimidyl)acetic acid and the loss of a water molecule." [PubMed:10801322, RESID:AA0441#ASP] comment: Cross-link 2; this cross-link is formed by the condensation of an aspartic acid residue with the alpha-amido of the following residue. subset: PSI-MOD-slim synonym: "(2-aminosuccinimidyl)acetic acid" EXACT RESID-name [] synonym: "(3-amino-2,5-dioxo-1-pyrrolidinyl)acetic acid" EXACT RESID-alternate [] synonym: "[(3S)-3-amino-2,5-dioxopyrrolidin-1-yl]acetic acid" EXACT RESID-systematic [] synonym: "anhydroaspartyl glycine" EXACT RESID-alternate [] synonym: "aspartimide glycine" EXACT RESID-alternate [] synonym: "CROSSLNK (2-aminosuccinimidyl)acetic acid (Asp-Gly)" EXACT UniProt-feature [] synonym: "N-(2-aminosuccinyl)glycine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 6 N 2 O 3" xref: MassAvg: "154.13" xref: MassMono: "154.037842" xref: Origin: "D, G" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0312" is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01628 ! (2-aminosuccinimidyl)acetic acid [Term] id: MOD:00953 name: O-(L-isoglutamyl)-L-serine (Glu-Ser) def: "A protein modification that effectively crosslinks an L-glutamic acid residue and an L-serine residue by an ester bond and releasing water to form O-(L-isoglutamyl)-L-serine." [DeltaMass:0, PubMed:19035375, RESID:AA0597#ESX] comment: Cross-link 2; From DeltaMass: with no citation. synonym: "(2S)-2-amino-5-[(2S)-2-amino-2-carboxyethoxy]-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK isoglutamyl serine ester (Ser-Glu)" EXACT UniProt-feature [] synonym: "O(beta)-(gamma-glutamyl)serine" EXACT RESID-alternate [] synonym: "O-(L-isoglutamyl)-L-serine" EXACT RESID-name [] synonym: "O-gamma-Glutamyl- (Crosslink to Serine)" EXACT DeltaMass-label [] synonym: "O3-(isoglutamyl)-serine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 8 H 10 N 2 O 4" xref: MassAvg: "198.18" xref: MassMono: "198.064057" xref: Origin: "E, S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01977 ! O-(L-isoglutamyl)-L-serine [Term] id: MOD:00954 name: crosslinked residues with loss of water def: "A protein modification that crosslinks two residues with a covalent bond and the loss of water." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:00955 name: alaninohistidine (serine crosslinked to tele or pros nitrogen of histidine) def: "A protein modification that effectively crosslinks an L-serine residue and an L-histidine residue to release water and form tele- or pros-(2-amino-2-carboxyethyl)histidine." [DeltaMass:0] comment: Cross-link 2; From DeltaMass with no citation or formula: Average Mass: -18. The DeltaMass description "Serine crosslinked to theta or pi carbon of Histidine" is incorrect. The histidine ring nitrogens (not carbons) are designated tele or N-tau (not theta), and pros or N-pi [JSG]. synonym: "beta-alaninohistidine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 9 H 10 N 4 O 2" xref: MassAvg: "206.20" xref: MassMono: "206.080376" xref: Origin: "H, S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02048 ! crosslinked L-histidine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:00956 name: misincorporation of norleucine for methionine def: "modification from DeltaMass" [DeltaMass:10] comment: From DeltaMass: Average Mass: -18 Average Mass Change:-18 Notes: It has the same mass as leucine or isoleucine and can be charged on the methionyl t-RNA. This often happens in minimal media-prepared fermentations that are not supplemented with enough free methionine. It gives a mass change of -18 and can often be confused with dehydration. xref: DiffAvg: "-18.03" xref: DiffFormula: "C 1 H 2 N 0 O 0 S -1" xref: DiffMono: "-17.956421" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "M" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:01026 ! norleucine residue (Nle) [Term] id: MOD:00957 name: modified residue with neutral loss of carbon dioxide def: "Covalent modification of, or a change resulting in an alteration of the measured molecular mass of, a peptide or protein amino acid residue with a secondary loss of a neutral carbon dioxide molecular fragment." [PubMed:18688235] synonym: "dCO2ModRes" EXACT PSI-MOD-label [] xref: DiffAvg: "-44.01" xref: DiffFormula: "C -1 H 0 N 0 O -2" xref: DiffMono: "-43.989829" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00431 ! modified residue with a secondary neutral loss [Term] id: MOD:00958 name: crosslink between Arg and His sidechains def: "modification from DeltaMass" [DeltaMass:0] comment: Cross-link 2; From DeltaMass: Average Mass: -5 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "H, R" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues [Term] id: MOD:00959 name: 3,3',5,5'-TerTyr (Crosslink) def: "modification from DeltaMass" [DeltaMass:0] comment: Cross-link 4; From DeltaMass: Average Mass: -4 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Y, Y, Y, Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues [Term] id: MOD:00960 name: decarboxylated residue def: "A protein modification that effectively replaces a carboxylic acid group with a hydrogen atom." [PubMed:18688235] xref: DiffAvg: "-44.01" xref: DiffFormula: "C -1 H 0 N 0 O -2" xref: DiffMono: "-43.989829" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:00961 name: reduction of disulfide crosslink in cystine to two cysteines def: "A protein modification that effectively reduces the disulfide bond of cystine to form two cysteine residues." [DeltaMass:333] comment: Cross-link 2; this modification destroys the cross-link. From DeltaMass: Treatment of cystine (cys-cys) by reducing agents such as dithiothreitol (DTT) or triscarboxyethylphosphine (TCEP) results in cleavage of the disulphide bond and reduction of the sulphur atom of each molecule to create cysteine. subset: PSI-MOD-slim xref: DiffAvg: "2.02" xref: DiffFormula: "C 0 H 2 N 0 O 0 S 0" xref: DiffMono: "2.015650" xref: Formula: "C 6 H 10 N 2 O 2 S 2" xref: MassAvg: "206.28" xref: MassMono: "206.018370" xref: Origin: "MOD:00034" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01473 ! hydrogenated residue relationship: derives_from MOD:00034 ! L-cystine (cross-link) [Term] id: MOD:00962 name: 2',3'-dihydrotryptophan def: "A protein modification that by reducing the indole ring system of tryptophan to indoline effectively converts an L-tryptophan residue to 2',3'-dihydrotryptophan." [DeltaMass:343, URL:http\://dx.doi.org/10.1016/S0040-4039(00)99113-5] comment: From DeltaMass: References:1. Pearson,D.A., Blanchette,M., Baker,M.L. and Guindon,C.A. (1989) Trialkylsilanes as scavengers for the trifluoroacetic acid deblocking ofprotecting groups in peptide synthesis. Tetrahedron Lett., 30(21), 2739-2742 Notes: Reduction of indole double bond of Trp which occurs when triethylsilane (TES) is used as a scavenger and Trp is incorporated without protection of indole nitrogen [1]. This side reaction is likely to be accompanied by oxidation of indoline ring with formation of intensively colored peptide by-products. Triisopropylsilane (TIPS) does not give this side reaction. See structure at http://www.abrf.org/images/misc/dmass2.gif. [However, the pictured indoline structure is incorrect - JSG]. xref: DiffAvg: "2.02" xref: DiffFormula: "C 0 H 2 N 0 O 0 S 0" xref: DiffMono: "2.015650" xref: Formula: "C 11 H 12 N 2 O 1" xref: MassAvg: "188.23" xref: MassMono: "188.094963" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00918 ! modified L-tryptophan residue is_a: MOD:01473 ! hydrogenated residue [Term] id: MOD:00963 name: Oxidation of Trp to kynurenine def: "Modification from DeltaMass. OBSOLETE because redundant and identical to MOD:00462. Remap to MOD:00462." [DeltaMass:357] comment: From DeltaMass: Average Mass: 4 Monoisotopic Mass Change:3.995 Average Mass Change:3.989 References:Ruoppolo M, Amoresano A, Pucci P, Pascarella S, Polticelli F, Trovato M,Menegatti E, Ascenzi P.Characterization of five new low-molecular-mass trypsin inhibitors fromwhite mustard (Sinapis alba L.) seed.Eur J Biochem. 2000 267:6486-92. Notes: See structure at http://www.abrf.org/images/misc/dmass32.jpg. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00462" is_obsolete: true [Term] id: MOD:00964 name: lysine epsilon amino to imine + 12 amu def: "modification from DeltaMass" [DeltaMass:34] comment: From DeltaMass: Average Mass: 12 Average Mass Change: 12 References: Mathews, W. Rodney; Runge, Thomas A.; Haroldsen, Peter E.; Gaskell, Simon J. (1989) Characterization of impurities in a synthetic renin substrate peptide by fast-atom bombardment mass spectrometry and hybrid tandem mass spectrometry. Rapid Commun. Mass Spectrom. 3(9), 314-19 Notes: Fast-atom bombardment mass spectrometry of a synthetic renin substrate decapeptide (Pro-His-Pro-Phe-His-Leu-Val-Ile-His-D-Lys) indicated the presence of several side products, including a component 12 Da higher in mass. Low-energy collisionally activated ***decompn*** analyses were performed using a hybrid tandem instrument and demonstrated that the heavier side product had two components, in which the structural modification was either at the N- or the C-terminus. Addnl. analyses of the N-acetyl deriv. indicated that for each component the structural modification blocked a site of N-acetylation. It is suggested that the formation of these side products is attributable to the generation of formaldehyde, during removal of the histidine protecting group (benzyloxymethyl), which reacts with the N-terminus of the peptide to give an imidazolidinone structure or with the D- ***lysine***.epsilon.-amine group to yield an ***imine*** . While the precise genesis of the side-products remains speculative, it is clear that the combined strategy of derivatization and tandem mass spectrometry has allowed structural conclusions concerning individual components of an isobaric mixt. synonym: "N6-(methylidene)-lysine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "12.01" xref: DiffFormula: "C 1 H 0 N 0 O 0" xref: DiffMono: "12.000000" xref: Formula: "C 7 H 12 N 2 O 1" xref: MassAvg: "140.19" xref: MassMono: "140.094963" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:00965 name: 4-thiazolidinecarboxylic acid def: "A protein modification that effectively converts an N-terminal L-cysteine residue by a formadehyde adduct to 4-thiazolidinecarboxylic acid." [DeltaMass:342] comment: From DeltaMass: References: Mitchell, M.A., Runge, T.A., Mathews, W.R., Ichhpurani, A.K., Harn, N.K., Dobrowolski, P.J. and Eckenrrrode, F.M. Problems associated with use of the benzylozymethyl protecting group for histidines. Formaldehyde adducts formed during cleavage by hydrogen fluoride. Int. J. Pept. Protein Res. 1990, 36(4), 350-355. Gesquiere, J.-C., Diesis, E. and Tartar, A. Conversion of N-terminal cysteine to thiazolidine carboxylic acid during hydrogen fluoride deprotection of peptides containing pi-N-Bom protected histidine. J. Chem. Soc. Chem. Commun. 1990, (20), 1402-1403. Kumagaye, K.Y., Inui, T., Nakajima, K., Kimura,T. and Sakakibara, S. Suppression of a side reaction associated with Nim-benzyloxymethyl group during synthesis of peptides containing cysteinyl residue at the N-terminus. Pept. Res. 1991, 4(2), 84-87. Colombo, R., Colombo, F. and Jones, J.H. Acid-labile histidine side-chain protection. The N(pi)-t-butoxymethyl group. J. Chem. Soc. Chem. Commun. 1984, (5), 292-293. Notes: Conversion of N-term Cys to thiazolidine during HF deprotection of His(Bom)-containing peptides [1-3]. See structure at http://www.abrf.org/images/misc/dmass12b.gif; modification in red. This modification cannot be excluded during final deprotection/cleavage in Fmoc-chemistry in cases when His(Bum) was employed [4]. For formation of free imino acid see PubMed:1527501. synonym: "thioproline" EXACT DeltaMass-label [] xref: DiffAvg: "12.01" xref: DiffFormula: "C 1 H 0 N 0 O 0 S 0" xref: DiffMono: "12.000000" xref: Formula: "C 4 H 6 N 1 O 1 S 1" xref: MassAvg: "116.16" xref: MassMono: "116.017010" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:00966 name: 1,2,3,4-tetrahydro-beta-carboline-3-carboxylic acid def: "A protein modification that effectively converts an N-terminal L-tryptophan residue by a formadehyde adduct to 1,2,3,4-tetrahydro-beta-carboline-3-carboxylic acid." [DeltaMass:339] comment: From DeltaMass: Average Mass: 12 Average Mass Change: 12 References: Lippke, K. P., W. G. Schunack, W. Wenning, W. E. Mueller. 1983..beta.-Carbolines as benzodiazepine receptor ligands. 1. Synthesis andbenzodiazepine receptor interaction of esters of.beta.-carboline-3-carboxylic acid. J. Med. Chem.26: 499-503 Cain, M., R. W. Weber, F. Guzman, J. M. Cook, S. A. Barker, K. C.Rice, J. N. Crawley, S. M. Paul, P. Skolnick. 1982. .beta.-Carbolines:synthesis and neurochemical and pharmacological actions on brainbenzodiazepine receptors.J. Med. Chem. 25: 1081-91 Notes: +12 Da modification corresponds to formaldehyde adduct of Trp having beta-carboline structure (methylene bridge links carbon-2 of indole ring and alfa-N. See structure at http://www.abrf.org/images/misc/dmass12a.gif; modification in red. xref: DiffAvg: "12.01" xref: DiffFormula: "C 1 H 0 N 0 O 0 S 0" xref: DiffMono: "12.000000" xref: Formula: "C 12 H 10 N 2 O 1" xref: MassAvg: "198.22" xref: MassMono: "198.079313" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:00967 name: syndesine def: "A protein modification that effectively cross-links two L-lysine residues to form syndesine, hydroxylysinohydroxynorleucine." [DeltaMass:35, PubMed:75151974] comment: Cross-link 2; From DeltaMass: Average Mass: 13 Average Mass Change: 13 (incorrect) [JSG]. synonym: "hydroxylysinohydroxynorleucine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "16.96" xref: DiffFormula: "C 0 H -3 N -2 O 3" xref: DiffMono: "16.955121" xref: Formula: "C 12 H 21 N 2 O 5" xref: MassAvg: "273.31" xref: MassMono: "273.145047" xref: Origin: "K, K" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:02051 ! crosslinked L-lysine residue [Term] id: MOD:00968 name: CM-Cys vs PAM-Cys def: "OBSOLETE because this isn't a protein modification, but rather the difference between two known modifications. modification from DeltaMass" [DeltaMass:347] comment: From DeltaMass: Average Mass: 13 Formula:C2H2O2 vs C3H5ON Monoisotopic Mass Change:13.03 Average Mass Change:13.05 Notes:Residual acrylamide in SDS gels can partly label cysteine residues in proteins (propionamido-Cys, PAM-Cys, DeltaMass +71Da; see entry). Subsequent alkylation of protein bands with iodoacetic acid e.g. in preparation for proteomic analysis, will convert remaining free cysteines into carboxymethyl-Cys (CM-Cys, DeltaMass +58Da; see entry). Peptide mass fingerprinting may therefore potentially reveal the same cysteine-containing peptide in two forms, differing in mass by 13Da. The relative ratios of the peaks will depend on the initial degree of labelling with acrylamide. Use of high quality, deionised acrylamide in the SDS gel will minimise modification of cysteine through this route. Where it remains a problem, deliberate alkylation using acrylamide instead of iodoacetamide will ensure chemical homogeneity of the final product. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:00969 name: CAM-Cys vs PAM-Cys def: "OBSOLETE because this isn't a protein modification, but rather the difference between two known modifications. modification from DeltaMass" [DeltaMass:346] comment: From DeltaMass: Average Mass: 14 Formula:CH2 Monoisotopic Mass Change:14.016 Average Mass Change:14.027 Notes: Residual acrylamide in SDS gels can partly label cysteine residues in proteins (propionamido-Cys, PAM-Cys, DeltaMass +71Da; see entry). Subsequent alkylation of protein bands with iodoacetamide e.g. in preparation for proteomic analysis, will convert remaining free cysteines into carboxamidomethyl-Cys (CAM-Cys, DeltaMass +57Da; see entry). Peptide mass fingerprinting may therefore potentially reveal the same cysteine-containing peptide in two forms, differing in mass by 14Da. The relative ratios of the peaks will depend on the initial degree of labelling with acrylamide. Use of high quality, deionised acrylamide in the SDS gel will minimise modification of cysteine through this route. Where it remains a problem, deliberate alkylation using acrylamide instead of iodoacetamide will ensure chemical homogeneity of the final product. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:00970 name: delta-hydroxy-allysine (Lys) def: "modification from DeltaMass" [DeltaMass:37] comment: From DeltaMass: Average Mass: 15 Average Mass Change:15 Notes:In going from Lys to hydroxy-allysine, two separate reactions are involved:1. the oxidative deamination converting Lys to allysine (-CH2NH2 being converted to -CHO) with a net mass change of -1;2.conversion of allysine to delta-hydroxy-allysine (-CH2-CHO being converted to -CH(OH)-CHO) with a mass change of +16. The net change from Lys to hydroxyallysine thus is +15. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:00971 name: 2-Oxohistidine def: "A protein modification that effectively converts an L-histidine residue to 2-oxohistidine." [PubMed:8405458, DeltaMass:38] comment: From DeltaMass: Average Mass: 16 Average Mass Change:16 References:Lewisch, S. A. and Levine, R. L. (1995) Anal. Biochem. 231, 440-446. Determination of 2-oxo-histidine by amino acid analysis Notes:Rod LevineNIHBldg 3, Room 106 MSC 0320Bethesda, MD 20892-0320email: rlevine@nih.govvoice: 1 (301) 496-2310fax: 1 (301) 496-0599 xref: DiffAvg: "16" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 7 N 3 O 2" xref: MassAvg: "153.14" xref: MassMono: "153.053826" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:00677 ! hydroxylated residue [Term] id: MOD:00972 name: monobrominated L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to a monobrominated L-phenylalanine, such as L-2'-bromophenylalanine." [Unimod:340#F] comment: From DeltaMass: Average Mass: 78 Average Mass Change:78 References:Yoshino,K et.al. Biochemistry Vol. 30 pg 6203-9 (1991) Identifidation of a novel amino acid, o-bromo-L-phenylananine, in egg-associated peptides that activate spermatozoa synonym: "Br1Phe" EXACT PSI-MOD-label [] synonym: "bromination" RELATED Unimod-description [] synonym: "Bromo" RELATED PSI-MS-label [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 C 0 H -1 N 0 O 0" xref: DiffMono: "77.910512" xref: Formula: "Br 1 C 9 H 8 N 1 O 1" xref: MassAvg: "226.07" xref: MassMono: "224.978926" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:340" is_a: MOD:02086 ! brominated phenylalanine is_a: MOD:01912 ! monobrominated residue [Term] id: MOD:00973 name: Oxidation of proline (to glutamic acid) def: "modification from DeltaMass" [DeltaMass:355] comment: From DeltaMass: Average Mass: 32 Monoisotopic Mass Change:31.99 Average Mass Change:32 References:Amici A, Levine, RL, Tsai, L, and Stadtman, ER: Conversion of amino acid residues in proteins and amino acid homopolymers to carbonyl derivatives by metal-catalyzed oxidation reactions. Journal of Biological Chemistry 264: 3341-3346 1989.Rod Levine (unpublished) xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:00974 name: (35)Cl labeled 3'-chlorotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 34 xref: DiffAvg: "33.96" xref: DiffFormula: "(35)Cl 1 H -1" xref: DiffMono: "33.961028" xref: Formula: "C 9 (35)Cl 1 H 8 N 1 O 2" xref: MassAvg: "197.02" xref: MassMono: "197.024356" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01046 ! 3'-chloro-L-tyrosine is_a: MOD:00987 ! chlorinated tyrosine [Term] id: MOD:00975 name: (37)Cl labeled 3'-chlorotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 36 xref: DiffAvg: "35.96" xref: DiffFormula: "(37)Cl 1 H -1" xref: DiffMono: "35.958078" xref: Formula: "C 9 (37)Cl 1 H 8 N 1 O 2" xref: MassAvg: "199.02" xref: MassMono: "199.021406" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01046 ! 3'-chloro-L-tyrosine is_a: MOD:00987 ! chlorinated tyrosine [Term] id: MOD:00976 name: potassium salt def: "modification from DeltaMass - OBSOLETE because redundant and identical to MOD:01072. Remap to MOD:01072." [DeltaMass:0] comment: From DeltaMass: Average Mass: 38 xref: DiffAvg: "38.09" xref: DiffFormula: "H -1 K 1" xref: DiffMono: "37.955882" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:01072" is_obsolete: true [Term] id: MOD:00977 name: disodium salt def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 44 subset: PSI-MOD-slim xref: DiffAvg: "43.96" xref: DiffFormula: "H -2 Na 2" xref: DiffMono: "43.963888" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00747 ! sodium containing modified residue [Term] id: MOD:00978 name: piperidine adduct to C-terminal Cys def: "modification from DeltaMass" [DeltaMass:345] comment: From DeltaMass: Average Mass: 51 Average Mass Change: 51 References:Lukszo, Patterson, Albericio, and Kates, Letters in Peptide Science 3, 157-166(1996) Notes:The side reaction can be very significant, and the level to which it occurs depends on how the C-terminal Cys is anchored and what the side-chain protecting group is. The mechanism involves piperidine-mediated beta-elimination of sulfur (with the protecting group on), followed by addition of piperidine across the C-terminaldehydroalanine. Since this last-mentioned step creates a chiral center, a mixture of diastereomers is formed which in special cases can be separatedby HPLC. Another problem with C-terminal Cys is racemization; some references in the review article by Andreu, Albericio, Sole, Munson, Ferrer, and Barany in Pennington-Dunn Peptide Synthesis and Purification Protocols, vol 35, 1994, pp. 91-169. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:00979 name: t-butyl ester (OtBu) and t-butyl (tBu) def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 56 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:00980 name: Carboxamidomethyl (on Cysteine) def: "modification from DeltaMass - OBSOLETE because redundant, the difference component of MOD:01060. Remap to MOD:01060." [DeltaMass:337] comment: From DeltaMass: Average Mass: 57 Abbreviation:CamCys Formula:C2H3NO Monoisotopic Mass Change:57.021 Average Mass Change:57.051 Notes:Cysteine reacts with iodoacetamide to produce carboxamidomethyl cysteine. Alternative names are often used, such as amidocarboxymethylcysteine and carbamoylmethylcysteine xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01060" is_obsolete: true [Term] id: MOD:00981 name: sodium and potassium salt def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 60 subset: PSI-MOD-slim xref: DiffAvg: "60.07" xref: DiffFormula: "H -2 K 1 Na 1" xref: DiffMono: "59.937826" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00747 ! sodium containing modified residue is_a: MOD:00849 ! potassium containing modified residue [Term] id: MOD:00982 name: L-selenocysteine (Ser) def: "A protein modification that effectively converts an L-serine residue to L-selenocysteine (not known as a natural post-translational modification process)." [DeltaMass:0] comment: [From DeltaMass: Average Mass: 64.] Although selenocysteine-charged tRNA(Sec) is biosynthesized from serine-charged tRNA(Sec), in peptide work selenocysteine is usually considered as either a natural residue or as a modified cysteine residue. This entry is for the artifactual formation of L-selenocysteine from serine. For encoded L-selenocysteine, use MOD:00031 [JSG]. synonym: "Sec(Ser)" EXACT PSI-MOD-label [] synonym: "Selenocysteine (from Serine)" EXACT DeltaMass-label [] xref: DiffAvg: "62.97" xref: DiffFormula: "C 0 H 0 N 0 O -1 Se 1" xref: DiffMono: "63.921607" xref: Formula: "C 3 H 5 N 1 O 1 Se 1" xref: MassAvg: "150.05" xref: MassMono: "150.953635" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:02088 ! natural, standard, encoded residue substitution [Term] id: MOD:00983 name: Asp transamidation with piperidine def: "modification from DeltaMass" [DeltaMass:67] comment: From DeltaMass: Average Mass: 67 Average Mass Change:67 References:http://www.abrf.org/archives/hmail/0008/0007.html Notes:1.) Get rid of the DBU. It can cause piperidine amides at Asp residues. The tbu ester side chain comes off during synthesis and the residue is trans-amidated with piperidine (+67Da by MS). If you haven't yet seen this, you will. Even "normal" 20% pip/DMF (NMP) will cause this, but less frequently. Literature exists for this; I don't remember the exact reference. David H. Singleton Scientist Pfizer Central Research PO Box 8118-101 Eastern Point Road Groton, CT 06340 (860)441-4404. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:00984 name: (35)Cl labeled 3',5'-dichlorotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 68 xref: DiffAvg: "67.92" xref: DiffFormula: "(35)Cl 2 H -2" xref: DiffMono: "67.922055" xref: Formula: "C 9 (35)Cl 2 H 7 N 1 O 2" xref: MassAvg: "230.99" xref: MassMono: "230.985384" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01045 ! 3',5'-dichloro-L-tyrosine is_a: MOD:00987 ! chlorinated tyrosine [Term] id: MOD:00985 name: halogenated tyrosine def: "A protein modification that effectively substitutes a hydrogen atom of an L-tyrosine residue with a halogen atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "HalTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:00986 name: (35)Cl and (37)Cl labeled 3',5'-dichlorotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 70. xref: DiffAvg: "69.92" xref: DiffFormula: "(35)Cl 1 (37)Cl 1 H -2" xref: DiffMono: "69.919105" xref: Formula: "C 9 (35)Cl 1 (37)Cl 1 H 7 N 1 O 2" xref: MassAvg: "232.98" xref: MassMono: "232.982434" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01045 ! 3',5'-dichloro-L-tyrosine is_a: MOD:00987 ! chlorinated tyrosine [Term] id: MOD:00987 name: chlorinated tyrosine def: "A protein modification that effectively substitutes a hydrogen atom of an L-tyrosine residue with a chlorine atom." [PubMed:18688235] synonym: "ClTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00753 ! chlorinated residue is_a: MOD:00985 ! halogenated tyrosine [Term] id: MOD:00988 name: brominated tyrosine def: "A protein modification that effectively substitutes a hydrogen atom of an L-tyrosine residue with a bromine atom." [PubMed:18688235] synonym: "BrTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00754 ! brominated residue is_a: MOD:00985 ! halogenated tyrosine [Term] id: MOD:00989 name: acetamidomethyl (Acm) def: "OBSOLETE because redundant, the difference component of MOD:01079. Remap to MOD:01079." [DeltaMass:0] comment: From DeltaMass with no citation or formula. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01079" is_obsolete: true [Term] id: MOD:00990 name: (37)Cl labeled 3',5'-dichlorotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 72 xref: DiffAvg: "71.92" xref: DiffFormula: "(37)Cl 2 H -2" xref: DiffMono: "71.916155" xref: Formula: "C 9 (37)Cl 2 H 7 N 1 O 2" xref: MassAvg: "234.98" xref: MassMono: "234.979484" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01045 ! 3',5'-dichloro-L-tyrosine is_a: MOD:00987 ! chlorinated tyrosine [Term] id: MOD:00991 name: S-(sn-1-glyceryl)-L-cysteine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 74 with no citation. xref: DiffAvg: "74.08" xref: DiffFormula: "C 3 H 6 O 2" xref: DiffMono: "74.036779" xref: Formula: "C 6 H 11 N 1 O 3 S 1" xref: MassAvg: "177.22" xref: MassMono: "177.045964" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:00992 name: glutamate 5-glycerol ester def: "modification from DeltaMass" [DeltaMass:78, PubMed:18767873] comment: From DeltaMass: Average Mass: 74 Average Mass Change: 74 References: Anal. Biochem. 1993 Vol 208 No. 2 382-386, PubMed:8452236. [DeltaMass] This article only suggests this as a possible modification and does no characterization. Isolation and stuctural evidence for artifactual modification are found in PubMed:18767873 [JSG]. xref: DiffAvg: "74.08" xref: DiffFormula: "C 3 H 6 O 2" xref: DiffMono: "74.036779" xref: Formula: "C 8 H 13 N 1 O 5" xref: MassAvg: "203.19" xref: MassMono: "203.079373" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:00993 name: phenyl ester def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 76, on acidic amino acids synonym: "OPh" EXACT DeltaMass-label [] xref: DiffAvg: "76.10" xref: DiffFormula: "C 6 H 4" xref: DiffMono: "76.031300" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00994 name: (79)Br labeled 3'-bromotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 78 xref: DiffAvg: "77.91" xref: DiffFormula: "(79)Br 1 H -1" xref: DiffMono: "77.910512" xref: Formula: "(79)Br 1 C 9 H 8 N 1 O 2" xref: MassAvg: "240.97" xref: MassMono: "240.973841" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01025 ! 3'-bromo-L-tyrosine is_a: MOD:01000 ! monobrominated tyrosine [Term] id: MOD:00995 name: (81)Br labeled 2'-bromophenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to (81)Br-L-2'-bromophenylalanine." [DeltaMass:0] comment: From DeltaMass: Average Mass: 80 xref: DiffAvg: "79.91" xref: DiffFormula: "(81)Br 1 H -1" xref: DiffMono: "79.908466" xref: Formula: "(81)Br 1 C 9 H 8 N 1 O 1" xref: MassAvg: "226.98" xref: MassMono: "226.976879" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:00183 ! L-2'-bromophenylalanine is_a: MOD:02086 ! brominated phenylalanine [Term] id: MOD:00996 name: (81)Br labeled 3'-bromotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 80 xref: DiffAvg: "79.91" xref: DiffFormula: "(81)Br 1 H -1" xref: DiffMono: "79.908466" xref: Formula: "(81)Br 1 C 9 H 8 N 1 O 2" xref: MassAvg: "242.97" xref: MassMono: "242.971794" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01025 ! 3'-bromo-L-tyrosine is_a: MOD:01000 ! monobrominated tyrosine [Term] id: MOD:00997 name: cyclohexyl ester def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 82 synonym: "OcHex" EXACT DeltaMass-label [] xref: DiffAvg: "82.15" xref: DiffFormula: "C 6 H 10" xref: DiffMono: "82.078250" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:00998 name: iodinated tyrosine def: "A protein modification that effectively substitutes a hydrogen atom of an L-tyrosine residue with an iodine atom." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ITyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00755 ! iodinated residue is_a: MOD:00985 ! halogenated tyrosine [Term] id: MOD:00999 name: homoseryl lactone def: "OBSOLETE because redundant and identical to MOD:00404. Remap to MOD:00404." [DeltaMass:90] comment: From DeltaMass: Average Mass: 83 Formula:C4H5O1N1 Monoisotopic Mass Change:83.037 Average Mass Change:83.09 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00404" is_obsolete: true [Term] id: MOD:01000 name: monobrominated tyrosine def: "A protein modification that effectively substitutes one hydrogen atom of an L-tyrosine residue with one bromine atom." [PubMed:18688235] synonym: "Br1Tyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00988 ! brominated tyrosine [Term] id: MOD:01001 name: 2-aminoisobutyric acid residue (Aib) def: "A protein modification that inserts or replaces a residue with a 2-aminoisobutyric acid." [DeltaMass:0] comment: Modification from DeltaMass: Average Mass: 85. synonym: "2-amino-2-methylpropanoic acid" EXACT PSI-MOD-alternate [] synonym: "2-amino-2-methylpropionic acid" EXACT PSI-MOD-alternate [] synonym: "2-methylalanine" EXACT PSI-MOD-alternate [] synonym: "Aib" EXACT PSI-MOD-alternate [] synonym: "alpha,alpha-dimethylglycine" EXACT PSI-MOD-alternate [] synonym: "alpha-aminoisobutyric acid" EXACT PSI-MOD-alternate [] synonym: "alpha-methylalanine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 4 H 7 N 1 O 1" xref: MassAvg: "85.11" xref: MassMono: "85.052764" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00850 ! unnatural residue [Term] id: MOD:01002 name: gamma-aminobutyryl def: "modification from DeltaMass" [DeltaMass:92] comment: From DeltaMass: Average Mass: 85 Formula: C 4 H 7 O 1 N 1 Monoisotopic Mass Change: 85.053 Average Mass Change: 85.106 xref: DiffAvg: "85.11" xref: DiffFormula: "C 4 H 7 N 1 O 1" xref: DiffMono: "85.052764" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01003 name: t-butyloxymethyl (Bum) def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 86 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01004 name: diaminopropionyl def: "modification from DeltaMass" [DeltaMass:95] comment: From DeltaMass: Average Mass: 86 Formula: C 3 H 6 O 2 N 1 Monoisotopic Mass Change: 86.048 Average Mass Change: 86.094 xref: DiffAvg: "86.09" xref: DiffFormula: "C 3 H 6 N 2 O 1" xref: DiffMono: "86.048013" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01005 name: t-butylsulfenyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 88 synonym: "StBu" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01006 name: dibrominated tyrosine def: "A protein modification that effectively substitutes two hydrogen atoms of an L-tyrosine residue with two bromine atoms." [Unimod:534] synonym: "Br2Tyr" EXACT PSI-MOD-label [] synonym: "Dibromo" RELATED PSI-MS-label [] synonym: "Dibromo" RELATED Unimod-description [] xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:534" is_a: MOD:00988 ! brominated tyrosine [Term] id: MOD:01007 name: anisyl modified residue def: "A protein modification that effectively substitutes an anisyl (methoxyphenyl) group for a hydroxyl group, typically at the 4 or para position." [DeltaMass:0] comment: From DeltaMass with no citation or formula: Average Mass: 90. xref: DiffAvg: "90.13" xref: DiffFormula: "C 7 H 6" xref: DiffMono: "90.046950" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01008 name: benzyl (Bzl) and benzyl ester (OBzl) modified residue def: "A protein modification that effectively substitutes a benzyl (phenylmethyl) group for a hydrogen atom." [DeltaMass:0] comment: From DeltaMass with no citation or formula: Average Mass: 90 xref: DiffAvg: "90.13" xref: DiffFormula: "C 7 H 6" xref: DiffMono: "90.046950" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01009 name: dehydrogenated proline def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass with no citation. xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 5 H 5 N 1 O 1" xref: MassAvg: "95.10" xref: MassMono: "95.037114" xref: Origin: "P" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01888 ! didehydrogenated residue [Term] id: MOD:01010 name: trifluoroacetylated residue def: "A protein modification that effectively substitutes a trifluoroacetyl group for a hydrogen atom." [DeltaMass:0] synonym: "TFA" EXACT DeltaMass-label [] xref: DiffAvg: "96.01" xref: DiffFormula: "C 2 F 3 H -1 O 1" xref: DiffMono: "95.982299" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00498 ! fluorinated residue is_a: MOD:00649 ! acylated residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01011 name: N-hydroxysuccinimide (ONSu, OSu) def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 97 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01012 name: oxidation of disulfide crosslink in cystine to two cysteic acids def: "A protein modification that effectively oxidizes the disulfide bond of a cystine crosslink to form two cysteic acid residues." [DeltaMass:335] comment: Cross-link 2. This modification destroys a cross-link. From DeltaMass: Average Mass: 98 Abbreviation: Cya Average Mass Change: 98 Notes: Treatment of cystine by strongly oxidising reagents such as performic acid results in the breakage of the disulphide bond and complete oxidation of the sulphur atoms on each molecule. Such treatment is often carried out prior to amino acid analysis as the resulting cysteic acid is then resistant to acid degradation during the hydrolysis procedure. xref: DiffAvg: "98.01" xref: DiffFormula: "C 0 H 2 N 0 O 6 S 0" xref: DiffMono: "97.985138" xref: Formula: "C 6 H 10 N 2 O 8 S 2" xref: MassAvg: "302.27" xref: MassMono: "301.987857" xref: Origin: "MOD:00034" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:00034 ! L-cystine (cross-link) is_a: MOD:00675 ! oxidized residue [Term] id: MOD:01013 name: tetramethylguanidinium termination by-product on amine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 98 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01014 name: phosphate/sulphate adduct of proteins def: "modification from DeltaMass" [DeltaMass:358] comment: From DeltaMass: Average Mass: 98 Formula:H3PO4 or H2SO4 Monoisotopic Mass Change:97.97 Average Mass Change:98 Notes:Proteins may pick up non-covalent salt adducts during purification. Phosphate and sulphate salts are commonly used and may be observed as +98 amu adducts (or multiples thereof) forming ion pairs with basic residues. Monoisotopic masses H2SO4 97.967, H3PO4 97.977 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01015 name: isovaline residue (Iva) def: "A protein modification that inserts or replaces a residue with an isovaline." [DeltaMass:110] synonym: "2-amino-2-methylbutanoic acid" EXACT PSI-MOD-alternate [] synonym: "Isovalyl (-I-,-Iva-)" EXACT DeltaMass-label [] synonym: "Iva" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 9 N 1 O 1" xref: MassAvg: "99.13" xref: MassMono: "99.068414" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00850 ! unnatural residue [Term] id: MOD:01016 name: t-butyloxycarbonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 100 synonym: "tBoc" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01017 name: homoseryl (-Hse-) def: "OBSOLETE because redundant and identical to MOD:00403. Remap to MOD:00403." [DeltaMass:113] comment: From DeltaMass: Average Mass: 101 Abbreviation:-Hse- Formula:C4H7O2N Monoisotopic Mass Change:101.048 Average Mass Change:101.105 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00403" is_obsolete: true [Term] id: MOD:01018 name: 4-methylbenzyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 104 synonym: "Meb" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01019 name: hydroxymethylphenyl linker def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 106 synonym: "HMP" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01020 name: thioanisyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 106 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01021 name: thiocresyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 106 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01022 name: 2-piperidinecarboxylic acid def: "A protein modification that effectively converts an L-lysine residue to 2-piperidinecarboxylic acid." [DeltaMass:0] synonym: "Pip" EXACT DeltaMass-label [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 6 H 9 N 1 O 1" xref: MassAvg: "111.14" xref: MassMono: "111.068414" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00601 ! cyclized residue is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01160 ! deaminated residue [Term] id: MOD:01023 name: 3',5'-dibromo-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 3',5'-dibromo-L-tyrosine." [DeltaMass:156] synonym: "3',5'-Br2Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "157.79" xref: DiffFormula: "Br 2 C 0 H -2 N 0 O 0" xref: DiffMono: "155.821024" xref: Formula: "Br 2 C 9 H 7 N 1 O 2" xref: MassAvg: "320.97" xref: MassMono: "318.884353" xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:01006 ! dibrominated tyrosine [Term] id: MOD:01024 name: monohydroxylated proline def: "A protein modification that effectively converts an L-proline residue to one of several monohydroxylated proline residues, including 3-hydroxy-L-proline and 4-hydroxy-L-proline." [DeltaMass:0, OMSSA:62, Unimod:35#P] comment: From DeltaMass: Average Mass: 131. This is the mass of the free amino acid [JSG]. subset: PSI-MOD-slim synonym: "Hy1Pro" EXACT PSI-MOD-label [] synonym: "hydroxylationp" EXACT OMSSA-label [] synonym: "Hydroxyproline" EXACT DeltaMass-label [] synonym: "Hyp" EXACT DeltaMass-label [] synonym: "Oxidation" RELATED PSI-MS-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" xref: UniProt: "PTM-0149" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00594 ! residues isobaric at 113.047678 Da is_a: MOD:00678 ! hydroxylated proline [Term] id: MOD:01025 name: 3'-bromo-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 3'-bromo-L-tyrosine." [PubMed:18688235] synonym: "3'-BrTyr" EXACT PSI-MOD-label [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 H -1" xref: DiffMono: "77.910512" xref: Formula: "Br 1 C 9 H 8 N 1 O 2" xref: MassAvg: "242.07" xref: MassMono: "240.973841" xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:01000 ! monobrominated tyrosine [Term] id: MOD:01026 name: norleucine residue (Nle) def: "A protein modification that inserts or replaces a residue with a norleucine." [DeltaMass:126] synonym: "Nle" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00850 ! unnatural residue is_a: MOD:00306 ! residues isobaric at 113.084064 Da [Term] id: MOD:01027 name: t-amyloxycarbonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 114 synonym: "Aoc" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01028 name: monochlorinated L-tyrosine def: "A protein modification that effectively substitutes one hydrogen atom of an L-tyrosine residue with one chlorine atom." [PubMed:18688235] synonym: "Cl1Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "C 9 Cl 1 H 8 N 1 O 2" xref: MassAvg: "197.62" xref: MassMono: "197.024356" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00987 ! chlorinated tyrosine is_a: MOD:01911 ! monochlorinated residue [Term] id: MOD:01029 name: succinylated residue def: "A protein modification that effectively replaces a hydrogen atom with a succinyl group linked through a carbonyl carbon." [DeltaMass:0, Unimod:64] comment: From DeltaMass with no citation or formula, Average Mass: 117 [JSG]. subset: PSI-MOD-slim synonym: "Succinic anhydride labeling reagent light form (N-term & K)" RELATED Unimod-description [] xref: DiffAvg: "100.07" xref: DiffFormula: "C 4 H 4 O 3" xref: DiffMono: "100.016044" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:64" is_a: MOD:00649 ! acylated residue [Term] id: MOD:01030 name: hydroxybenzotriazole ester def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 117 synonym: "HOBt" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01031 name: dimethylbenzyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 118 synonym: "diMeBzl" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01032 name: benzyloxymethyl modified residue def: "A protein modification that effectively substitutes a benzyloxymethyl group for a hydrogen atom." [DeltaMass:0] synonym: "Bom" EXACT DeltaMass-label [] xref: DiffAvg: "120.15" xref: DiffFormula: "C 8 H 8 O 1" xref: DiffMono: "120.057515" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01033 name: p-methoxybenzyl modified residue def: "A protein modification that effectively substitutes a p-methoxybenzyl group for a hydrogen atom." [DeltaMass:0] synonym: "Mbzl" EXACT DeltaMass-label [] synonym: "Mob" EXACT DeltaMass-label [] xref: DiffAvg: "120.15" xref: DiffFormula: "C 8 H 8 O 1" xref: DiffMono: "120.057515" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01034 name: 4-nitrophenyl modified residue def: "A protein modification that effectively substitutes a 4-nitrophenyl group for a hydrogen atom." [DeltaMass:0] synonym: "ONp" EXACT DeltaMass-label [] synonym: "p-nitrophenyl" EXACT DeltaMass-label [] xref: DiffAvg: "121.10" xref: DiffFormula: "C 6 H 3 N 1 O 2" xref: DiffMono: "121.016378" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01035 name: chlorobenzyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 125 synonym: "ClBzl" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01036 name: O-methyl aspartyl def: "OBSOLETE because redundant and identical to MOD:01181. Remap to MOD:01181." [PubMed:18688235] comment: From DeltaMass:148 (name misspelled "aspartamyl", and formula incorrect, N and O reversed) Average Mass: 129 Formula: C5H7O1N3 Monoisotopic Mass Change: 129.042 Average Mass Change: 129.116 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "D" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:01181" is_obsolete: true [Term] id: MOD:01037 name: dichlorinated tyrosine def: "A protein modification that effectively substitutes two hydrogen atoms of an L-tyrosine residue with two chlorine atoms." [PubMed:18688235] synonym: "Cl2Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "68.88" xref: DiffFormula: "C 0 Cl 2 H -2 N 0 O 0" xref: DiffMono: "67.922055" xref: Formula: "C 9 Cl 2 H 7 N 1 O 2" xref: MassAvg: "232.06" xref: MassMono: "230.985384" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00987 ! chlorinated tyrosine [Term] id: MOD:01038 name: norleucine (Nle) def: "OBSOLETE because this represents a free amino acid and the corresponding residue is MOD:01026." [DeltaMass:0] comment: From DeltaMass: Average Mass: 131. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01039 name: hydroxy aspartyl def: "OBSOLETE because redundant and identical to MOD:00036. Remap to MOD:00036." [PubMed:18688235] comment: From DeltaMass:152 (name misspelled "aspartamyl", and formula incorrect, N and O reversed) Average Mass: 131 Formula:C4H5O1N4 Monoisotopic Mass Change:131.022 Average Mass Change:131.088 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 4 H 5 N 1 O 4" xref: MassAvg: "131.09" xref: MassMono: "131.021858" xref: Origin: "D" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:00036" is_obsolete: true [Term] id: MOD:01040 name: penicillamine residue def: "A protein modification that inserts or replaces a residue with a penicillamine." [DeltaMass:154] comment: From DeltaMass: Name misspelled 'bb-dimethyl cystenyl'. No citation provided. synonym: "2-amino-3-mercapto-3-methylbutanoic acid" EXACT PSI-MOD-alternate [] synonym: "2-amino-3-methyl-3-sulfanylbutanoic acid" EXACT PSI-MOD-alternate [] synonym: "3,3-dimethylcysteine" EXACT PSI-MOD-alternate [] synonym: "3-mercapto-L-valine" EXACT PSI-MOD-alternate [] synonym: "beta,beta-dimethylcysteine" EXACT DeltaMass-label [] synonym: "Pen" EXACT DeltaMass-label [] synonym: "Pen" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 9 N 1 O 1 S 1" xref: MassAvg: "131.19" xref: MassMono: "131.040485" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00850 ! unnatural residue [Term] id: MOD:01041 name: benzyloxycarbonyl modified residue def: "A protein modification that effectively substitutes a benzyloxycarbonyl group for a hydrogen atom." [DeltaMass:0] synonym: "Z" EXACT DeltaMass-label [] xref: DiffAvg: "134.13" xref: DiffFormula: "C 8 H 6 O 2" xref: DiffMono: "134.036779" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01042 name: adamantyl modified residue def: "A protein modification that effectively substitutes a adamantyl group for a hydrogen atom." [DeltaMass:0] synonym: "Ada" EXACT DeltaMass-label [] xref: DiffAvg: "134.22" xref: DiffFormula: "C 10 H 14" xref: DiffMono: "134.109550" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01043 name: p-nitrobenzyl ester modified residue def: "A protein modification that effectively substitutes a p-nitrobenzyl group for the hydrogen atom of a carboxyl group." [DeltaMass:0] synonym: "ONb" EXACT DeltaMass-label [] xref: DiffAvg: "135.12" xref: DiffFormula: "C 7 H 5 N 1 O 2" xref: DiffMono: "135.032028" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01044 name: N-methyl glutamyl def: "OBSOLETE because redundant and identical to MOD:00080. Remap to MOD:00080." [DeltaMass:166] comment: From DeltaMass with no citation. Formula:C6H10O2N2 (name misspelled, formula for N5-methylglutaminyl, rather than N2-methylglutamyl) xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Q" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:00080" is_obsolete: true [Term] id: MOD:01045 name: 3',5'-dichloro-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 3',5'-dichloro-L-tyrosine." [PubMed:18688235] synonym: "3',5'-Cl2Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "68.88" xref: DiffFormula: "C 0 Cl 2 H -2 N 0 O 0" xref: DiffMono: "67.922055" xref: Formula: "C 9 Cl 2 H 7 N 1 O 2" xref: MassAvg: "232.06" xref: MassMono: "230.985384" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01037 ! dichlorinated tyrosine [Term] id: MOD:01046 name: 3'-chloro-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 3'-chloro-L-tyrosine." [PubMed:18688235] synonym: "3'-ClTyr" EXACT PSI-MOD-label [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "C 9 Cl 1 H 8 N 1 O 2" xref: MassAvg: "197.62" xref: MassMono: "197.024356" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01028 ! monochlorinated L-tyrosine [Term] id: MOD:01047 name: monohydroxylated lysine def: "A protein modification that effectively converts an L-lysine residue to a monohydroxylated lysine." [DeltaMass:168, OMSSA:60, Unimod:35#K] comment: From DeltaMass: Average Mass: 144 Abbreviation:-Hyl- Formula:C6H12N2O2 Monoisotopic Mass Change:144.09 Average Mass Change:144.174. subset: PSI-MOD-slim synonym: "Hy1Lys" EXACT PSI-MOD-label [] synonym: "Hydroxy Lysyl (-Hyl-)" EXACT DeltaMass-label [] synonym: "hydroxylationk" EXACT OMSSA-label [] synonym: "Oxidation" RELATED PSI-MS-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 12 N 2 O 2" xref: MassAvg: "144.17" xref: MassMono: "144.089878" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00681 ! hydroxylated lysine [Term] id: MOD:01048 name: 2-pyrrolidone-5-carboxylic acid def: "A protein modification that effectively converts a source amino acid residue to 2-pyrrolidone-5-carboxylic acid." [PubMed:18688235] comment: From DeltaMass: Average Mass: -18 Average Mass Change: -18.01 References:The conversion of glutamic acid to pyroglutamic was reported for the beta-amiloid protein. Miller et al. Arch. Biochem. Biophy. (1993) 301, 41-52. subset: PSI-MOD-slim synonym: "PyrGlu" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 6 N 1 O 2" xref: MassAvg: "112.11" xref: MassMono: "112.039853" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "N-term" is_a: MOD:00601 ! cyclized residue is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01049 name: halogenated histidine def: "A protein modification that effectively substitutes a hydrogen atom of an L-histidine residue with a halogen atom." [PubMed:18688235] synonym: "HalHis" EXACT PSI-MOD-label [] xref: Origin: "H" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:01050 name: pyridyl alanyl def: "modification from DeltaMass" [DeltaMass:180] comment: From DeltaMass: Average Mass: 148 Formula:C8H8O2N1 Monoisotopic Mass Change:148.064 Average Mass Change:148.165 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "A" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01051 name: 2-nitrobenzoyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 149 synonym: "NBz" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01052 name: dimethoxybenzyl Trp def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 150 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01053 name: 2-nitrophenylsulphenyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 153 synonym: "Nps" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01054 name: 4-toluenesulfonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 154 synonym: "4-toluenesulphonyl" EXACT DeltaMass-label [] synonym: "Tos" EXACT DeltaMass-label [] synonym: "Tosyl" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01055 name: 3-nitro-2-pyridinesulfenyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 154 synonym: "Npys" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01056 name: (79)Br labeled 3',5'-dibromotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 156 xref: DiffAvg: "155.82" xref: DiffFormula: "(79)Br 2 C 0 H -2 N 0 O 0" xref: DiffMono: "155.821024" xref: Formula: "(79)Br 2 C 9 H 7 N 1 O 2" xref: MassAvg: "318.88" xref: MassMono: "318.884353" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01023 ! 3',5'-dibromo-L-tyrosine is_a: MOD:01006 ! dibrominated tyrosine [Term] id: MOD:01057 name: (79)Br and (81)Br labeled 3',5'-dibromotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 158 xref: DiffAvg: "157.82" xref: DiffFormula: "(79)Br 1 (81)Br 1 C 0 H -2 N 0 O 0" xref: DiffMono: "157.818978" xref: Formula: "(79)Br 1 (81)Br 1 C 9 H 7 N 1 O 2" xref: MassAvg: "320.88" xref: MassMono: "320.882306" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01023 ! 3',5'-dibromo-L-tyrosine is_a: MOD:01006 ! dibrominated tyrosine [Term] id: MOD:01058 name: dichlorobenzyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 159 synonym: "Dcb" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01059 name: (81)Br labeled 3',5'-dibromotyrosine def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 160 xref: DiffAvg: "159.82" xref: DiffFormula: "(81)Br 2 C 0 H -2 N 0 O 0" xref: DiffMono: "159.816931" xref: Formula: "(81)Br 2 C 9 H 7 N 1 O 2" xref: MassAvg: "322.88" xref: MassMono: "322.880260" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:01023 ! 3',5'-dibromo-L-tyrosine is_a: MOD:01006 ! dibrominated tyrosine [Term] id: MOD:01060 name: S-carboxamidomethyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-carboxamidomethyl-L-cysteine." [DeltaMass:196, DeltaMass:337, OMSSA:3, PubMed:10504701, PubMed:11510821, PubMed:12422359, PubMed:18306178, Unimod:4#C] comment: From DeltaMass: (name misspelled "Carboxyamidomethyl Cystenyl") [JSG]. subset: PSI-MOD-slim synonym: "amidocarboxymethylcysteine" EXACT DeltaMass-label [] synonym: "CamC" EXACT PSI-MOD-alternate [] synonym: "CamCys" EXACT DeltaMass-label [] synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "carbamidomethylc" EXACT OMSSA-label [] synonym: "carbamoylmethylcysteine" EXACT DeltaMass-label [] synonym: "Carboxamidomethyl (on Cysteine)" EXACT DeltaMass-label [] synonym: "Carboxyamidomethyl Cystenyl" EXACT DeltaMass-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] synonym: "S-carbamoylmethyl-L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1 S 0" xref: DiffMono: "57.021464" xref: Formula: "C 5 H 8 N 2 O 2 S 1" xref: MassAvg: "160.19" xref: MassMono: "160.030649" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:4" is_a: MOD:00397 ! iodoacetamide derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01061 name: S-carboxymethyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-carboxymethyl-L-cysteine." [DeltaMass:0, DeltaMass:197, OMSSA:2, Unimod:6#C] comment: From DeltaMass with no citation, name misspelled "Carboxymethyl Cystenyl", and formula incorrect, N and O reversed: Average Mass: 161 Abbreviation: -Cmc- Formula: C5H7O1N3S1 Monoisotopic Mass Change: 161.015 Average Mass Change: 161.179 [JSG]. subset: PSI-MOD-slim synonym: "Carboxymethyl" RELATED PSI-MS-label [] synonym: "Carboxymethyl cysteine" EXACT DeltaMass-label [] synonym: "Carboxymethyl Cystenyl" EXACT DeltaMass-label [] synonym: "carboxymethylc" EXACT OMSSA-label [] synonym: "CmC" EXACT PSI-MOD-alternate [] synonym: "Iodoacetic acid derivative" RELATED Unimod-description [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 N 0 O 2 S 0" xref: DiffMono: "58.005479" xref: Formula: "C 5 H 7 N 1 O 3 S 1" xref: MassAvg: "161.18" xref: MassMono: "161.014664" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:6" is_a: MOD:00399 ! iodoacetic acid derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01062 name: carboxymethyl cysteinyl def: "OBSOLETE because duplicate and redundant with MOD:01061. Remap to MOD:01061" [DeltaMass:197] comment: From DeltaMass:197 (Name misspelled "cystenyl", and formula incorrect, N and O reversed) Abbreviation:-Cmc- Formula:C5H7O1N3S1 Monoisotopic Mass Change:161.015 Average Mass Change:161.179 synonym: "Carboxymethyl Cystenyl" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 7 N 3 O 1 S 1" xref: MassAvg: "157.19" xref: MassMono: "157.030983" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01061" is_obsolete: true [Term] id: MOD:01063 name: monomethylated phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to a monomethylated phenylalanine." [DeltaMass:198] comment: From DeltaMass: Average Mass: 161 Formula: C10H11O1N1 Monoisotopic Mass Change: 161.084 Average Mass Change: 161.205. No citation provided. It is not obvious whether the DeltaMass entry is supposed to represent N-methylphenylalanine, alpha-methylphenylalanine, 2'-, 3'-, or 4'-methylphenylalanine [JSG]. subset: PSI-MOD-slim synonym: "NMePhe" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 10 H 11 N 1 O 1" xref: MassAvg: "161.20" xref: MassMono: "161.084064" xref: Origin: "F" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00717 ! methylated phenylalanine [Term] id: MOD:01064 name: inositol def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 162 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01065 name: hexose glycated N-terminal def: "A modification produced in a non-enzymatic reaction between a carbohydrate carbonyl group (C1 of aldohexose or C2 of fructose) and a protein N-terminal amino group to form a Schiff-base or an Amadori ketosamine (or aminoketose) residue adduct." [DeltaMass:0, Unimod:41#N-term] comment: From DeltaMass: Average Mass: 162 xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "N-term" xref: Unimod: "Unimod:41" is_a: MOD:00767 ! glycated residue [Term] id: MOD:01066 name: halogenated phenylalanine def: "A protein modification that effectively substitutes a hydrogen atom of an L-phenylalanine residue with a halogen atom." [PubMed:18688235] synonym: "HalPhe" EXACT PSI-MOD-label [] xref: Origin: "F" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:01067 name: linker attached to peptide in Fmoc peptide synthesis def: "modification from DeltaMass" [DeltaMass:341] comment: From DeltaMass: Average Mass: 162 Average Mass Change:162 Notes: (from the ABRF discussion list archive) There may be ... things in the reagent K that would allow cleavage of the peptide to occur at the wrong place...in this case it removes the dimethoxybenzyl group first inactivating that site for cleavage, and it goes after tne next amide bond closer to the resin. Try the TFA/TIS/water/EDT cocktail...TFA = 92%, TIS =3%, and water is at 5%. .. had this issue on longer peptides.. and by increasing the amount of water a little bit... able to elminate this problem. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01068 name: halogenated tryptophan def: "A protein modification that effectively substitutes a hydrogen atom of an L-tryptophan residue with a halogen atom." [PubMed:18688235] synonym: "HalTrp" EXACT PSI-MOD-label [] xref: Origin: "W" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01069 name: 2,4-dinitrophenyl modified residue def: "A protein modification that effectively substitutes a 2,4-dinitrophenyl group for a hydrogen atom." [DeltaMass:0] synonym: "Dnp" EXACT DeltaMass-label [] xref: DiffAvg: "166.09" xref: DiffFormula: "C 6 H 2 N 2 O 4" xref: DiffMono: "166.001457" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01070 name: pentafluorophenyl modified residue def: "A protein modification that effectively substitutes a pentafluorophenyl group for a hydrogen atom." [DeltaMass:0] comment: From DeltaMass: name mispelled "pentaflourophenyl" synonym: "Pfp" EXACT DeltaMass-label [] xref: DiffAvg: "166.05" xref: DiffFormula: "C 6 F 5 H -1" xref: DiffMono: "165.984191" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01071 name: diphenylmethyl modified residue def: "A protein modification that effectively substitutes a diphenylmethyl group for a hydrogen atom." [DeltaMass:0] synonym: "Dpm" EXACT DeltaMass-label [] xref: DiffAvg: "166.22" xref: DiffFormula: "C 13 H 10" xref: DiffMono: "166.078250" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01072 name: monopotassium salt def: "A protein modification that effectively substitutes one potassium atom for one hydrogen atom." [DeltaMass:0] subset: PSI-MOD-slim synonym: "K1Res" EXACT PSI-MOD-label [] xref: DiffAvg: "38.09" xref: DiffFormula: "H -1 K 1" xref: DiffMono: "37.955882" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00849 ! potassium containing modified residue [Term] id: MOD:01073 name: 2-chlorobenzyloxycarbonyl modified residue def: "A protein modification that effectively substitutes a 2-chlorobenzyloxycarbonyl group for a hydrogen atom." [DeltaMass:0] synonym: "Clz" EXACT DeltaMass-label [] xref: DiffAvg: "169.58" xref: DiffFormula: "C 8 Cl 1 H 6 O 2" xref: DiffMono: "169.005632" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01074 name: napthylacetyl modified residue def: "A protein modification that effectively substitutes a napthylacetyl group for a hydrogen atom." [DeltaMass:0] xref: DiffAvg: "169.20" xref: DiffFormula: "C 12 H 9 O 1" xref: DiffMono: "169.065340" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01075 name: mercury containing modified residue def: "A protein modification that effectively substitutes a mercury atom or a cluster containing mercury for hydrogen atoms, or that coordinates a mercury ion." [PubMed:18688235] synonym: "HgRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:01076 name: N-methyl arginyl def: "modification from DeltaMass - OBSOLETE because redundant and identical to MOD:00414. Remap to MOD:00414." [DeltaMass:215] comment: From DeltaMass: Average Mass: 170 Formula:C7H14O4N1 Monoisotopic Mass Change:170.117 Average Mass Change:170.215 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 7 H 14 N 4 O 1" xref: MassAvg: "170.22" xref: MassMono: "170.116761" xref: Origin: "R" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:00414" is_obsolete: true [Term] id: MOD:01077 name: ethanedithiol/TFA cyclic adduct def: "modification from DeltaMass" [DeltaMass:216] comment: From DeltaMass: Average Mass: 172 Average Mass Change:172 References:[1]. Sieber,P.(1987) Modification of tryptophan residues during acidolysis of4-methoxy-2,3,6-trimethylbenzenesulfonyl groups. Effects of scavengers. Tetrahedron Lett., 28(15),1637-1640. Notes: TFA-cyclic dithioketal by-product is formed when Trp-containing peptide is subjected to prolonged TFA/EDT treatment [1]. See structure at http://www.abrf.org/images/misc/dmass172.gif. Additional discussion of this adduct, and how to avoid it, can befound in Methods in Enzymology 289, 67 (1997) xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01078 name: S-(2-aminoethyl)-3-methylcysteine (Thr) def: "A protein modification that effectively converts an L-threonine residue to S-(2-aminoethyl)-3-methylcysteine." [PubMed:12923550, Unimod:472#T] comment: From DeltaMass: Average Mass: 146 Abbreviation:-AECys_ Formula:C5H10O2N1S1 Monoisotopic Mass Change:146.051 Average Mass Change:146.214 References:PE Sciex. synonym: "2-amino-3-(2-aminoethyl)sulfanyl-3-methylbutanoic acid" EXACT PSI-MOD-alternate [] synonym: "AEC-MAEC" RELATED Unimod-interim [] synonym: "beta-methylaminoethylcysteine" RELATED Unimod-description [] synonym: "S-aminoethyl-3-methylcysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "59.13" xref: DiffFormula: "C 2 H 5 N 1 O -1 S 1" xref: DiffMono: "59.019356" xref: Formula: "C 6 H 12 N 2 O 1 S 1" xref: MassAvg: "160.24" xref: MassMono: "160.067034" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:472" is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01079 name: S-(acetylamino)methyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-[(acetylamino)methyl]-L-cysteine." [DeltaMass:218, PubMed:8572278] comment: From DeltaMass: (name misspelled "Acetamidomethyl Cystenyl") Average Mass: 174 Formula: C 6 H 10 O 2 N 2 S 1 Monoisotopic Mass Change: 174.046 Average Mass Change: 174.221. [These are aggregate masses, not delta masses.] See Organic Syntheses, Coll. Vol. 6, p.5 (1988); Vol. 59, p.190 (1979); http://www.orgsyn.org/orgsyn/orgsyn/prepContent.asp?prep=cv6p0005 [JSG]. synonym: "Acetamidomethyl Cystenyl" EXACT DeltaMass-label [] synonym: "Acm-Cys" EXACT PSI-MOD-alternate [] synonym: "N-(hydroxymethyl)acetamide derivatized L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-(acetamido)methyl-L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "71.08" xref: DiffFormula: "C 3 H 5 N 1 O 1 S 0" xref: DiffMono: "71.037114" xref: Formula: "C 6 H 10 N 2 O 2 S 1" xref: MassAvg: "174.22" xref: MassMono: "174.046299" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01080 name: acrylamidyl cysteinyl def: "OBSOLETE because this is identical to MOD:00417. modification from DeltaMass" [DeltaMass:219] comment: From DeltaMass: (name misspelled "Acrylamidyl Cystenyl") Average Mass: 174 Formula: C6H10O2N2S1 Monoisotopic Mass Change: 174.046 Average Mass Change: 174.221 synonym: "Acrylamidyl Cystenyl" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 10 N 2 O 2 S 1" xref: MassAvg: "174.22" xref: MassMono: "174.046299" xref: Origin: "C" xref: Source: "artifact" xref: Remap: "MOD:00417" is_obsolete: true [Term] id: MOD:01081 name: delta-glycosyloxy- (of lysine) or beta-glycosyloxy- (of phenylalanine or tyrosine) def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 177. CAUTION - mass does not match formula. xref: DiffAvg: "178.14" xref: DiffFormula: "C 6 H 10 O 6" xref: DiffMono: "178.047738" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01082 name: 4-glycosyloxy- (hexosyl, C6) (of proline) def: "OBSOLETE because redundant with MOD:00757, remap. modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 177. Caution: Formula does not match mass. The natural glycosylating sugar of hydroxyproline is galactose. xref: DiffAvg: "178.14" xref: DiffFormula: "C 6 H 10 O 6" xref: DiffMono: "178.047738" xref: Formula: "C 11 H 17 N 1 O 6" xref: MassAvg: "259.26" xref: MassMono: "259.105587" xref: Origin: "P" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:00757" is_obsolete: true [Term] id: MOD:01083 name: O-benzyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-benzyl-L-serine." [DeltaMass:0] xref: DiffAvg: "90.13" xref: DiffFormula: "C 7 H 6" xref: DiffMono: "90.046950" xref: Formula: "C 10 H 11 N 1 O 2" xref: MassAvg: "177.20" xref: MassMono: "177.078979" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01008 ! benzyl (Bzl) and benzyl ester (OBzl) modified residue [Term] id: MOD:01084 name: iodoacetic acid derivatized amino-terminal residue def: "A protein modification that by reaction of iodoacetic acid effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a carboxymethyl group." [Unimod:6#N-term] subset: PSI-MOD-slim synonym: "Carboxymethyl" RELATED PSI-MS-label [] synonym: "Carboxymethyl (on Cysteine)" EXACT DeltaMass-label [] synonym: "Iodoacetic acid derivative" RELATED Unimod-description [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 O 2" xref: DiffMono: "58.005479" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:6" is_a: MOD:00399 ! iodoacetic acid derivatized residue [Term] id: MOD:01085 name: alpha-N-gluconoylated L-histidine def: "A protein modification that effectively replaces the N-terminal hydrogen atom of a N-terminal histidine residue with a gluconoyl group linked through a glycosidic bond. modification from DeltaMass" [PubMed:9918669, DeltaMass:226] comment: Occurs on His-tagged proteins expresssed in E. coli. From DeltaMass: Average Mass: 178 Formula: C6H10O6 Monoisotopic Mass Change: 178.05 Average Mass Change: 178.14 References: Geoghegan, K. F., H. B. Dixon, et al. (1999). Spontaneous alpha-N-6-phosphogluconoylation of a His tag in Escherichia coli: the cause of extra mass of 258 or 178 Da in fusion proteins. Anal Biochem 267(1): 169-84. Mass listed here is 179 because it's N-terminal. xref: DiffAvg: "179.15" xref: DiffFormula: "C 6 H 11 O 6" xref: DiffMono: "179.055563" xref: Formula: "C 12 H 18 N 3 O 7" xref: MassAvg: "316.29" xref: MassMono: "316.114475" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:00006 ! N-glycosylated residue [Term] id: MOD:01086 name: p-nitrobenzyloxycarbonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 179 synonym: "4Nz" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01087 name: 2,4,5-trichlorophenyl modified residue def: "A protein modification that effectively substitutes a 2,4,5-trichlorophenyl group for a hydrogen atom." [DeltaMass:0] xref: DiffAvg: "179.42" xref: DiffFormula: "C 6 Cl 3 H 1" xref: DiffMono: "177.914383" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01088 name: 2,4,6-trimethyloxybenzyl modified residue def: "A protein modification that effectively substitutes a 2,4,6-trimethyloxybenzyl group for a hydrogen atom." [DeltaMass:0] synonym: "Tmob" EXACT DeltaMass-label [] xref: DiffAvg: "180.20" xref: DiffFormula: "C 10 H 12 O 3" xref: DiffMono: "180.078644" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01089 name: xanthyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 180 synonym: "Xan" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01090 name: iodoacetamide derivatized amino-terminal residue def: "A protein modification that by reaction of iodoacetamide effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a carboxamidomethyl group." [PubMed:11327326, PubMed:11510821, PubMed:12422359, Unimod:4#N-term] subset: PSI-MOD-slim synonym: "(carbamoylmethyl)amino" EXACT PSI-MOD-alternate [] synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1" xref: DiffMono: "57.021464" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:4" is_a: MOD:00397 ! iodoacetamide derivatized residue [Term] id: MOD:01091 name: monochlorinated L-phenylalanine def: "A protein modification that effectively substitutes one hydrogen atom of an L-phenylalanine residue with one chlorine atom." [DeltaMass:233] comment: From DeltaMass: Average Mass: 182 Formula:C9H8O1N1Cl1 Monoisotopic Mass Change:181.029 Average Mass Change:181.623 synonym: "Cl1Phe" EXACT PSI-MOD-label [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "C 9 Cl 1 H 8 N 1 O 1" xref: MassAvg: "181.62" xref: MassMono: "181.029442" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01066 ! halogenated phenylalanine is_a: MOD:01911 ! monochlorinated residue [Term] id: MOD:01092 name: mesitylene-2-sulfonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 182 synonym: "Mts" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01093 name: isopropyl lysyl def: "modification from DeltaMass" [DeltaMass:236] comment: From DeltaMass: Average Mass: 184 Formula: C9H16O2N2 Monoisotopic Mass Change: 184.12 Average Mass Change: 184.24 with no citation. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 9 H 16 N 2 O 2" xref: MassAvg: "184.24" xref: MassMono: "184.121178" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01094 name: N6-carboxymethyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-carboxymethyl-L-lysine." [DeltaMass:237, Unimod:6#K] comment: From DeltaMass:237 (with no citation, formula incorrect, N and O reversed) Average Mass: 186 Formula: C8H14O2N3 Monoisotopic Mass Change: 186.1 Average Mass Change: 186.211 [JSG]. subset: PSI-MOD-slim synonym: "Carboxymethyl" RELATED PSI-MS-label [] synonym: "Carboxymethyl Lysyl" EXACT DeltaMass-label [] synonym: "Iodoacetic acid derivative" RELATED Unimod-description [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 O 2" xref: DiffMono: "58.005479" xref: Formula: "C 8 H 14 N 2 O 3" xref: MassAvg: "186.21" xref: MassMono: "186.100442" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:6" is_a: MOD:00399 ! iodoacetic acid derivatized residue [Term] id: MOD:01095 name: Matrix alpha cyano MH+ def: "Modification from DeltaMass. OBSOLETE because not an amino acid modification." [DeltaMass:240] comment: From DeltaMass with no citation, formula incorrect, N and O reversed: Formula: C10H8O1N3 Monoisotopic Mass Change: 190.05 Average Mass Change: 190.18. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 10 H 8 N 1 O 3" xref: MassAvg: "190.18" xref: MassMono: "190.050418" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01096 name: O-benzyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-benzyl-L-threonine." [DeltaMass:0] xref: DiffAvg: "90.13" xref: DiffFormula: "C 7 H 6" xref: DiffMono: "90.046950" xref: Formula: "C 11 H 13 N 1 O 2" xref: MassAvg: "191.23" xref: MassMono: "191.094629" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01008 ! benzyl (Bzl) and benzyl ester (OBzl) modified residue [Term] id: MOD:01097 name: S-benzyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-benzyl-L-cysteine." [DeltaMass:242] comment: From DeltaMass: misspelled "Benzyl Cystenyl". xref: DiffAvg: "90.13" xref: DiffFormula: "C 7 H 6" xref: DiffMono: "90.046950" xref: Formula: "C 10 H 11 N 1 O 1 S 1" xref: MassAvg: "193.26" xref: MassMono: "193.056135" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01008 ! benzyl (Bzl) and benzyl ester (OBzl) modified residue [Term] id: MOD:01098 name: naphthylalanine residue def: "A protein modification that inserts or replaces a residue with a naphthylalanine." [DeltaMass:243] comment: From DeltaMass: Average Mass: 197 Formula: C13H11O1N1 Monoisotopic Mass Change: 197.084 Average Mass Change: 197.238. No citation provided. It is not obvious which isomer of naphthylalanine this DeltaMass entry is supposed to represent [JSG]. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 13 H 11 N 1 O 1" xref: MassAvg: "197.24" xref: MassMono: "197.084064" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00850 ! unnatural residue [Term] id: MOD:01099 name: succinyl beta-aspartyl anhydride def: "A protein modification that effectively converts an L-aspartic acid residue to succinyl beta-aspartyl anhydride." [DeltaMass:244] comment: From DeltaMass with no citation (name misspelled "aspartamyl", and formula incorrect, N and O reversed) Average Mass: 198 Formula: C8H8O1N5 Monoisotopic Mass Change: 198.04 Average Mass Change: 198.156 [JSG]. synonym: "succinyl aspartamyl" EXACT DeltaMass-label [] xref: DiffAvg: "82.06" xref: DiffFormula: "C 4 H 2 N 0 O 2" xref: DiffMono: "82.005479" xref: Formula: "C 8 H 8 N 1 O 5" xref: MassAvg: "198.15" xref: MassMono: "198.040247" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:01100 name: HMP (hydroxymethylphenyl)/TFA adduct def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 201 with no citation. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01101 name: S-Farnesyl- def: "OBSOLETE because erroneous and apparently redundant to MOD:00111. Remap to MOD:00111." [DeltaMass:0] comment: Modification from DeltaMass: Average Mass: 206. This entry with no other information available appears to be the same as the entry at 204 for "Farnesylation" but with an incorrect mass. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:00111" is_obsolete: true [Term] id: MOD:01102 name: myristoylation-4H (two double bonds) def: "OBSOLETE because redundant and identical to MOD:00504. Remap to MOD:00504." [DeltaMass:348] comment: From DeltaMass: Average Mass: 206 Formula: C14 H22 O1 Monoisotopic Mass Change: 206.167 Average Mass Change: 206.324 References: Neubert TA, Johnson RS, Hurley JB, Walsh KA (1992). The rod transducin alpha subunit amino terminus is heterogeneously fatty acylated. J Biol Chem. 267(26), 18274-7. Notes: Modification of protein N-terminus with (cis,cis-delta 5, delta 8)-tetradecadienoyl group (myristoylation with 2 double bonds) xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00504" is_obsolete: true [Term] id: MOD:01103 name: myristoleylation (one double bond) def: "OBSOLETE because redundant and identical to MOD:00503. Remap to MOD:00503." [DeltaMass:0] comment: From DeltaMass with no citation or formula: Average Mass: 208. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00503" is_obsolete: true [Term] id: MOD:01104 name: 4-methoxy-2,3,6-trimethylbenzenesulfonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 212 with no citation. synonym: "Mtr" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01105 name: 2-bromobenzyloxycarbonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 213 with no citation. synonym: "BrZ" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01106 name: N-formyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to N-formyl-L-tryptophan." [DeltaMass:0] comment: From DeltaMass with no citation or formula: Average Mass: 214. It is not clear what this is supposed to represent. The mass corresponds to an N-formyl tryptophan (either N2 or N1'), but neither of these modifications has been reported as commonly encountered. It may have been confused with N'-formyl-L-kynurenine, see MOD:00464 [JSG] synonym: "formyl tryptophanyl" EXACT DeltaMass-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 12 H 10 N 2 O 2" xref: MassAvg: "214.22" xref: MassMono: "214.074228" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00409 ! N-formylated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01107 name: O5-benzyl-L-glutamate def: "A protein modification that effectively converts an L-glutamic acid residue to O5-benzyl-L-glutamate." [DeltaMass:258] comment: From DeltaMass with no citation: (formula incorrect, N and O reversed; mass incorrect, aggregate not delta) Average Mass: 219 Formula: C12H13O1N3 Monoisotopic Mass Change: 219.241 Average Mass Change: 219.09 [JSG]. xref: DiffAvg: "90.13" xref: DiffFormula: "C 7 H 6" xref: DiffMono: "90.046950" xref: Formula: "C 12 H 13 N 1 O 3" xref: MassAvg: "219.24" xref: MassMono: "219.089543" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01008 ! benzyl (Bzl) and benzyl ester (OBzl) modified residue [Term] id: MOD:01108 name: 2-amino-5-(4-methoxyphenyl)-5-oxopentanoic acid (Glu) def: "A protein modification that effectively converts an L-glutamic acid residue to 2-amino-5-(4-methoxyphenyl)-5-oxopentanoic acid, glutamtic acid anisole adduct." [DeltaMass:259] comment: From DeltaMass with no citation: (formula incorrect, N and O reversed; mass incorrect, aggregate not delta) Average Mass: 219 Formula: C12H13O1N3 Monoisotopic Mass Change: 219.241 Average Mass Change: 219.09 [JSG]. synonym: "anisole adducted glutamyl" EXACT DeltaMass-label [] xref: DiffAvg: "90.13" xref: DiffFormula: "C 7 H 6" xref: DiffMono: "90.046950" xref: Formula: "C 12 H 13 N 1 O 3" xref: MassAvg: "219.24" xref: MassMono: "219.089543" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01007 ! anisyl modified residue [Term] id: MOD:01109 name: 9-fluorenylmethyloxycarbonyl (Fmoc) def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 222 with no citation. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01110 name: isoprenylated cysteine def: "A protein modification that effectively replaces a hydrogen atom of an L-cysteine residue with a group derived from an isoprene polymer, such as a geranyl (C10), farnesyl (C15) or geranylgeranyl (C20)." [PubMed:18688235] subset: PSI-MOD-slim synonym: "IpCys" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00703 ! isoprenylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01111 name: dimethoxybenzhydryl modified residue def: "A protein modification that effectively substitutes a dimethoxybenzhydryl group for a hydrogen atom." [DeltaMass:0] comment: From DeltaMass: Average Mass: 226 with no citation. A reagent, typically 4,4'-dimethoxybenzhydryl chloride, used as a protecting group for the carboxamido group of asparagine and glutamine during chemical peptide synthesis [JSG]. synonym: "4,4'-dimethoxybenzhydryl" EXACT PSI-MOD-alternate [] synonym: "bis(4-methoxyphenyl)methyl" EXACT PSI-MOD-alternate [] synonym: "Mbh" EXACT DeltaMass-label [] xref: DiffAvg: "226.27" xref: DiffFormula: "C 15 H 14 O 2" xref: DiffMono: "226.099380" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01112 name: nicotinoyl lysine def: "modification from DeltaMass" [DeltaMass:266] comment: From DeltaMass: (name misspelled "nicotinyl"; formula incorrect, N and O reversed; mass incorrect, aggregate not delta) Average Mass: 233 Formula: C12H15O3N2 Monoisotopic Mass Change: 233.116 Average Mass Change: 233.271 synonym: "nicotinyl lysyl" EXACT DeltaMass-label [] xref: DiffAvg: "105.10" xref: DiffFormula: "C 6 H 3 N 1 O 1" xref: DiffMono: "105.021464" xref: Formula: "C 12 H 15 N 3 O 2" xref: MassAvg: "233.27" xref: MassMono: "233.116427" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01113 name: 2-(p-biphenyl)isopropyl-oxycarbonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 238 with no citation. synonym: "Bpoc" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01114 name: triphenylmethyl def: "modification from DeltaMass" [DeltaMass:270] comment: From DeltaMass: Average Mass: 242 Average Mass Change: 242.3 Notes: blocking group used in peptide synthesis for C,H,Q,N synonym: "Trityl" EXACT DeltaMass-label [] synonym: "Trt" EXACT DeltaMass-label [] xref: DiffAvg: "242.32" xref: DiffFormula: "C 19 H 14" xref: DiffMono: "242.109550" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01115 name: isoprenylated tryptophan def: "A protein modification that effectively replaces a hydrogen atom of an L-tryptophan residue with a group derived from an isoprene polymer, such as a geranyl (C10), farnesyl (C15) or geranylgeranyl (C20)." [PubMed:18688235] synonym: "IpTrp" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "W" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00703 ! isoprenylated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01116 name: S-farnesyl-L-cysteine methyl ester def: "A protein modification that effectively converts an L-cysteine residue to S-farnesyl-L-cysteine methyl ester." [PubMed:15609361, RESID:AA0102#var, RESID:AA0105#var] subset: PSI-MOD-slim synonym: "SFarnOMeCys" EXACT PSI-MOD-label [] xref: DiffAvg: "218.38" xref: DiffFormula: "C 16 H 26 N 0 O 0 S 0" xref: DiffMono: "218.203451" xref: Formula: "C 19 H 32 N 1 O 2 S 1" xref: MassAvg: "338.53" xref: MassMono: "338.215375" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00905 ! modified L-cysteine residue relationship: has_functional_parent MOD:00111 ! S-farnesyl-L-cysteine relationship: has_functional_parent MOD:00114 ! L-cysteine methyl ester [Term] id: MOD:01117 name: pentamethyldihydrobenzofuransulfonyl def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 252 with no citation. synonym: "Pbf" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01118 name: alpha-N-6-phosphogluconoylated L-histidine def: "A protein modification that effectively replaces the N-terminal hydrogen atom of a N-terminal histidine residue with a 6-phosphogluconoyl group linked through a glycosidic bond. modification from DeltaMass" [PubMed:9918669, DeltaMass:275] comment: Occurs on His-tagged proteins expresssed in E. coli.From DeltaMass: Average Mass: 258 Formula: C6H10O6HPO3 Monoisotopic Mass Change: 258.01 Average Mass Change: 258.12 References: Geoghegan, K. F., H. B. Dixon, et al. (1999). Spontaneous alpha-N-6-phosphogluconoylation of a His tag in Escherichia coli: the cause of extra mass of 258 or 178 Da in fusion proteins. Anal Biochem 267(1): 169-84. Mass is one Da higher because this is an N-terminal modification xref: DiffAvg: "259.12" xref: DiffFormula: "C 6 H 12 O 9 P 1" xref: DiffMono: "259.021894" xref: Formula: "C 12 H 19 N 3 O 10 P 1" xref: MassAvg: "396.27" xref: MassMono: "396.080806" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:00006 ! N-glycosylated residue [Term] id: MOD:01119 name: S-geranylgeranyl-L-cysteine methyl ester def: "A protein modification that effectively converts an L-cysteine residue to S-geranylgeranyl-L-cysteine methyl ester." [PubMed:1483450, PubMed:15609361, RESID:AA0104#var, RESID:AA0105#var] subset: PSI-MOD-slim synonym: "SGergerOMeCys" EXACT PSI-MOD-label [] xref: DiffAvg: "286.50" xref: DiffFormula: "C 21 H 34 N 0 O 0 S 0" xref: DiffMono: "286.266051" xref: Formula: "C 24 H 40 N 1 O 2 S 1" xref: MassAvg: "406.65" xref: MassMono: "406.277976" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00905 ! modified L-cysteine residue relationship: has_functional_parent MOD:00113 ! S-geranylgeranyl-L-cysteine relationship: has_functional_parent MOD:00114 ! L-cysteine methyl ester [Term] id: MOD:01120 name: 2,2,5,7,8-pentamethylchroman-6-sulfonyl chloride derivatized residue def: "A protein modification that is produced by formation of an adduct with 2,2,5,7,8-pentamethylchroman-6-sulfonyl chloride, Pmc chloride." [DeltaMass:0] comment: From DeltaMass: Average Mass: 266 Notes: blocking group for Arg in peptide synthesis. CAS:112160-39-1 [JSG]. synonym: "2,2,5,7,8-pentamethyl-3,4-dihydro-2H-chromene-6-sulfonyl" EXACT PSI-MOD-alternate [] synonym: "2,2,5,7,8-pentamethyl-6-chromansulfonyl" EXACT PSI-MOD-alternate [] synonym: "2,2,5,7,8-pentamethyl-chromane-6-sulfonyl" EXACT PSI-MOD-alternate [] synonym: "2,2,5,7,8-pentamethylchroman-6-sulfonyl" EXACT PSI-MOD-alternate [] synonym: "2,2,5,7,8-pentamethylchroman-6-sulphonyl" EXACT PSI-MOD-alternate [] synonym: "3,4-dihydro-2,2,5,7,8-pentamethyl-2H-1-benzopyran-6-sulfonyl" EXACT PSI-MOD-alternate [] synonym: "Pmc" EXACT DeltaMass-label [] synonym: "PmcRes" EXACT PSI-MOD-label [] xref: DiffAvg: "266.36" xref: DiffFormula: "C 14 H 18 O 3 S 1" xref: DiffMono: "266.097665" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01652 ! sulfonyl halide reagent derivatized residue [Term] id: MOD:01121 name: monomethoxytrityl def: "modification from DeltaMass" [DeltaMass:280] comment: From DeltaMass: Average Mass: 272 Average Mass Change: 272 synonym: "Mmt" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01122 name: 5'phos dCytidinyl def: "OBSOLETE because this is a modification that occurs to DNA/RNA and not proteins. modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 289 with no citation. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01123 name: monoiodated tyrosine def: "OBSOLETE because redundant and identical to MOD:01123. Remap to MOD:01123." [DeltaMass:0] comment: From DeltaMass: Average Mass: 289 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:01123" is_obsolete: true [Term] id: MOD:01124 name: aldohexosyl lysyl def: "modification from DeltaMass" [DeltaMass:285] comment: From DeltaMass: (formula incorrect, N and O reversed; mass incorrect, aggregate not delta) Average Mass: 290 Formula: C12H22O2N6 Monoisotopic Mass Change: 290.148 Average Mass Change: 290.317 xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 N 0 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 12 H 22 N 2 O 6" xref: MassAvg: "290.32" xref: MassMono: "290.147786" xref: Origin: "K" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01125 name: 5'phos dThymidinyl def: "OBSOLETE because this is a modification that occurs to DNA/RNA and not proteins. modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 304 with no citation. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01126 name: 5'phos Cytidinyl def: "OBSOLETE because this is a modification that occurs to DNA/RNA and not proteins. modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 305 with no citation. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01127 name: 5'phos Uridinyl def: "OBSOLETE because redundant and identical to MOD:01166. Remap to MOD:01166." [DeltaMass:292] comment: From DeltaMass: Average Mass: 306 Formula: C9H11O2N8P1 Monoisotopic Mass Change: 306.025 Average Mass Change: 306.17 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:01166" is_obsolete: true [Term] id: MOD:01128 name: N-glycolneuraminic acid def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 307 with no citation. synonym: "NeuGc" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01129 name: 5'phos dAdenosyl def: "OBSOLETE because this is a modification that occurs to DNA/RNA and not proteins. modification from DeltaMass" [DeltaMass:295] comment: From DeltaMass: Average Mass: 313 Formula: C10H12O5N5P1 Monoisotopic Mass Change: 313.058 Average Mass Change: 313.211 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01130 name: SucPhencarb Lysyl def: "modification from DeltaMass" [DeltaMass:297] comment: From DeltaMass: Average Mass: 327 Formula: C17H17O3N4 Monoisotopic Mass Change: 327.122 Average Mass Change: 327.342 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01131 name: 5'phos dGuanosyl def: "OBSOLETE because this is a modification that occurs to DNA/RNA and not proteins. modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 329 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01132 name: 5'phos Adenosinyl def: "OBSOLETE because redundant and identical to MOD:01165. Remap to MOD:01165." [DeltaMass:0] comment: From DeltaMass: Average Mass: 329 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:01165" is_obsolete: true [Term] id: MOD:01133 name: S-12-hydroxyfarnesyl-L-cysteine methyl ester def: "A protein modification that effectively converts an L-cysteine residue to S-12-hydroxyfarnesyl-L-cysteine methyl ester." [PubMed:17790543, RESID:AA0103#var, RESID:AA0105#var] synonym: "S12HyFarnOMeCys" EXACT PSI-MOD-label [] xref: DiffAvg: "234.38" xref: DiffFormula: "C 16 H 26 N 0 O 1 S 0" xref: DiffMono: "234.198365" xref: Formula: "C 19 H 32 N 1 O 3 S 1" xref: MassAvg: "354.53" xref: MassMono: "354.210290" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00905 ! modified L-cysteine residue relationship: has_functional_parent MOD:00112 ! S-12-hydroxyfarnesyl-L-cysteine relationship: has_functional_parent MOD:00114 ! L-cysteine methyl ester [Term] id: MOD:01134 name: fluorescein labelling of peptide N-terminal using NHS ester def: "modification from DeltaMass" [DeltaMass:306] comment: From DeltaMass: Average Mass: 359 Formula: C21H11O6 Monoisotopic Mass Change: 359.055 Average Mass Change: 359.315 Notes: Using the DHB matrix at low pH the carboxyl group and one of the oxygens on the flurorescein molecule are protinated so the delta mass is 2Da higher than most text book illustrations would indicate. See Bioconjugate Techniques by Greg Hermanson, Academic Press, page 305, figure 204. Text books of course just show the coupling reaction at neutral or basic pH. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01135 name: Hex-HexNAc def: "modification from DeltaMass" [DeltaMass:0] comment: From DeltaMass: Average Mass: 365 with no citation. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00947 ! DeltaMass [Term] id: MOD:01136 name: dioctyl phthalate def: "OBSOLETE because this is a small molecule contaminant and not a modification to a polypeptide. modification from DeltaMass" [DeltaMass:309] comment: From DeltaMass: Average Mass: 391 Average Mass Change: 391 Notes: A common plasticizer, and, unfortunaltely, a common contaminate. A sodium adduct is often associated with this peak at 413. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01137 name: N6-(2,2,5,7,8-pentamethylchroman-6-sulfonyl)-L-lysine def: "A protein modification that is produced by reaction of a lysine residue with 2,2,5,7,8-pentamethylchroman-6-sulfonyl chloride, Pmc chloride, to form N6-(2,2,5,7,8-pentamethylchroman-6-sulfonyl)-L-lysine." [DeltaMass:310] comment: From DeltaMass: Average Mass: Formula: C20H30O2N4S1 Monoisotopic Mass Change: 394.192 Average Mass Change: 394.534 synonym: "PMC lysyl" EXACT DeltaMass-label [] synonym: "PmcLys" EXACT PSI-MOD-label [] xref: DiffAvg: "266.36" xref: DiffFormula: "C 14 H 18 O 3 S 1" xref: DiffMono: "266.097665" xref: Formula: "C 20 H 30 N 2 O 4 S 1" xref: MassAvg: "394.53" xref: MassMono: "394.192628" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:01120 ! 2,2,5,7,8-pentamethylchroman-6-sulfonyl chloride derivatized residue [Term] id: MOD:01138 name: Aedans Cystenyl def: "OBSOLETE because no evidence has been seen for this protein modification. modification from DeltaMass" [DeltaMass:311] comment: [probably aminoethyldansyl, JSG] From DeltaMass: (name misspelled "Aedans Cystenyl", and formula incorrect, N and O reversed) Average Mass: 409 Abbreviation: Aedans-Cys Formula: C17H19O3N5S2 Monoisotopic Mass Change: 409.077 Average Mass Change: 409.482 xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01139 name: dioctyl phthalate sodium adduct def: "OBSOLETE because this is a MS contaminant, not a known modification to a polypeptide. modification from DeltaMass" [DeltaMass:312] comment: From DeltaMass: Mass: Average Mass Change: 413 Notes: A common plasticizer, and, unfortunaltely, a common contaminate. A sodium adduct is often associated with this peak at 413. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "artifact" xref: TermSpec: "none" is_obsolete: true [Term] id: MOD:01140 name: diiodinated tyrosine def: "A protein modification that effectively substitutes two hydrogen atoms of an L-tyrosine residue with two iodine atoms." [DeltaMass:0, OMSSA:35, PubMed:15627961, Unimod:130#Y] subset: PSI-MOD-slim synonym: "3,5-Diiodination (of Tyrosine)" EXACT DeltaMass-label [] synonym: "di-Iodination" RELATED Unimod-description [] synonym: "diiodinationy" EXACT OMSSA-label [] synonym: "Diiodo" RELATED PSI-MS-label [] synonym: "I2Tyr" EXACT PSI-MOD-label [] xref: DiffAvg: "251.79" xref: DiffFormula: "C 0 H -2 I 2 N 0 O 0" xref: DiffMono: "251.793295" xref: Formula: "C 9 H 7 I 2 N 1 O 2" xref: MassAvg: "414.97" xref: MassMono: "414.856624" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:130" is_a: MOD:00501 ! diiodinated residue is_a: MOD:00998 ! iodinated tyrosine [Term] id: MOD:01141 name: omega-N-(2,2,5,7,8-pentamethylchroman-6-sulfonyl)-L-arginine def: "A protein modification that is produced by reaction with 2,2,5,7,8-pentamethylchroman-6-sulfonyl chloride, Pmc chloride, to form omega-N-(2,2,5,7,8-pentamethylchroman-6-sulfonyl)-L-arginine." [DeltaMass:314] comment: From DeltaMass: Average Mass: Formula: C20H30O4N4S1 Monoisotopic Mass Change: 422.199 Average Mass Change: 422.547 synonym: "PMC arginyl" EXACT DeltaMass-label [] synonym: "PmcArg" EXACT PSI-MOD-label [] xref: DiffAvg: "266.36" xref: DiffFormula: "C 14 H 18 O 3 S 1" xref: DiffMono: "266.097665" xref: Formula: "C 20 H 30 N 4 O 4 S 1" xref: MassAvg: "422.54" xref: MassMono: "422.198776" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:01120 ! 2,2,5,7,8-pentamethylchroman-6-sulfonyl chloride derivatized residue [Term] id: MOD:01142 name: S-15,16-dihydrobiliverdin-L-cysteine def: "A protein modification that effectively results from forming an adduct between a cysteine residue and the tetrapyrrole compound 15,16-dihydrobiliverdin." [PubMed:10430868, PubMed:15504407, PubMed:1559975, PubMed:3208761, RESID:AA0428] synonym: "(16R)-18-ethenyl-8,12-bis(2-carboxyethyl)-3-[(1R)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-2,7,13,17-tetramethyl-15,16-dihydrobilin-1,19(21H,24H)-dione" EXACT RESID-systematic [] synonym: "15,16-Dhbv" EXACT RESID-alternate [] synonym: "15,16-dihydrobiliverdin cysteine adduct" EXACT RESID-alternate [] synonym: "15,16-dihydrobiliverdin IXalpha" EXACT RESID-alternate [] synonym: "18-ethenyl-8,12-bis(2-carboxyethyl)-3-(2-(cysteinyl-S)-ethyl)-2,7,13,17-tetramethylbiladiene-ab-1,19(16H,21H)-dione" EXACT RESID-alternate [] synonym: "3'-cysteinyl-15,16-dihydrobiliverdin" EXACT RESID-alternate [] synonym: "3alpha-cysteinyl-15,16-dihydrobiliverdin" EXACT RESID-alternate [] synonym: "BINDING 15,16-dihydrobiliverdin (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "DBV" EXACT RESID-alternate [] synonym: "S-15,16-dihydrobiliverdin-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "584.67" xref: DiffFormula: "C 33 H 36 N 4 O 6 S 0" xref: DiffMono: "584.263485" xref: Formula: "C 36 H 41 N 5 O 7 S 1" xref: MassAvg: "687.81" xref: MassMono: "687.272670" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01143 name: 15,16-dihydrobiliverdin-bis-L-cysteine def: "A protein modification that effectively results from forming an adduct between two cysteine residues and the tetrapyrrole compound 15,16-dihydrobiliverdin." [PubMed:1559975, PubMed:2222853, PubMed:3208761, PubMed:8420941, RESID:AA0429] comment: Cross-link 2. synonym: "(16R)-8,12-bis(2-carboxyethyl)-3-[2-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-18-[(1Xi)-1-(((2R)-2-amino-2-carboxy)ethylsulfanyl)ethyl]-2,7,13,17-tetramethyl-15,16-dihydrobilin-1,19(21H,24H)-dione" EXACT RESID-systematic [] synonym: "15,16-Dhbv" EXACT RESID-alternate [] synonym: "15,16-dihydrobiliverdin cysteine adduct" EXACT RESID-alternate [] synonym: "15,16-dihydrobiliverdin IXalpha" EXACT RESID-alternate [] synonym: "15,16-dihydrobiliverdin-bis-L-cysteine" EXACT RESID-name [] synonym: "3'',18'-biscysteinyl-15,16-dihydrobiliverdin" EXACT RESID-alternate [] synonym: "3beta,18alpha-biscysteinyl-15,16-dihydrobiliverdin" EXACT RESID-alternate [] synonym: "8,12-bis(2-carboxyethyl)-3-(2-(cysteinyl-S)-ethyl)-18-(1-(cysteinyl-S)-ethyl)-2,7,13,17-tetramethylbiladiene-ab-1,19(16H,21H)-dione" EXACT RESID-alternate [] synonym: "BINDING 15,16-dihydrobiliverdin (covalent; via 2 links)" EXACT UniProt-feature [] synonym: "DBV" EXACT RESID-alternate [] xref: DiffAvg: "584.67" xref: DiffFormula: "C 33 H 36 N 4 O 6 S 0" xref: DiffMono: "584.263485" xref: Formula: "C 39 H 46 N 6 O 8 S 2" xref: MassAvg: "790.95" xref: MassMono: "790.281854" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:01144 name: S-(sn-1-2,3-dipalmitoylglycerol)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(sn-1-2,3-dipalmitoyl-glycerol)cysteine." [DeltaMass:0, PubMed:10896212, PubMed:4575979, PubMed:9056182, RESID:AA0107#var] comment: From DeltaMass: Average Mass: 524 subset: PSI-MOD-slim synonym: "S-(sn-1-Dipalmitoyl-glyceryl)- (on Cysteine)" EXACT DeltaMass-label [] xref: DiffAvg: "550.91" xref: DiffFormula: "C 35 H 66 N 0 O 4 S 0" xref: DiffMono: "550.496111" xref: Formula: "C 38 H 71 N 1 O 5 S 1" xref: MassAvg: "654.05" xref: MassMono: "653.505295" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00116 ! S-diacylglycerol-L-cysteine [Term] id: MOD:01145 name: N-tau-(ADP-ribosyl)diphthamide def: "A protein modification that effectively converts an L-histidine residue to N-tau-(ADP-ribosyl)diphthamide." [DeltaMass:0, ChEBI:82697] comment: From DeltaMass: (name misspelled "N theta -(ADP-ribosyl) diphthamide (of Histidine)") Average Mass: 648 synonym: "MOD_RES ADP-ribosyldiphthamide" EXACT UniProt-feature [] xref: DiffAvg: "684.51" xref: DiffFormula: "C 22 H 36 N 7 O 14 P 2" xref: DiffMono: "684.178999" xref: FormalCharge: "1+" xref: Formula: "C 28 H 43 N 10 O 15 P 2" xref: MassAvg: "821.65" xref: MassMono: "821.237910" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0672" is_a: MOD:02087 ! adenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00909 ! modified L-histidine residue relationship: derives_from MOD:00049 ! 2'-[3-carboxamido-3-(trimethylammonio)propyl]-L-histidine [Term] id: MOD:01146 name: S-(6-FAD)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(6-FAD)-L-cystine." [DeltaMass:0] comment: From DeltaMass: Average Mass: 784 with no citation. This modification has not been reported [JSG]. subset: PSI-MOD-slim synonym: "FAD" RELATED PSI-MS-label [] synonym: "S6FADCys" EXACT PSI-MOD-label [] xref: DiffAvg: "783.54" xref: DiffFormula: "C 27 H 31 N 9 O 15 P 2 S 0" xref: DiffMono: "783.141485" xref: Formula: "C 30 H 36 N 10 O 16 P 2 S 1" xref: MassAvg: "886.68" xref: MassMono: "886.150669" xref: Origin: "C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00895 ! FAD modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01147 name: dHex1Hex3HexNAc2 N4-glycosylated asparagine def: "modification from DeltaMass" [DeltaMass:0, Unimod:1761] comment: From DeltaMass: Average Mass: 1,039 xref: DiffAvg: "1038.95" xref: DiffFormula: "C 40 H 66 N 2 O 29" xref: DiffMono: "1038.375124" xref: Formula: "C 44 H 72 N 4 O 31" xref: MassAvg: "1153.06" xref: MassMono: "1152.418052" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1761" xref: GNOme: "GNO:G20956ZV" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:01148 name: ubiquitinylated lysine def: "A protein modification that effectively crosslinks the N6-amino of a peptidyl lysine with the carboxyl-terminal glycine of a ubiquitin." [PubMed:11125103, PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01875 ! N6-acylated L-lysine relationship: contains MOD:00134 ! N6-glycyl-L-lysine [Term] id: MOD:01149 name: sumoylated lysine def: "A protein modification that effectively crosslinks the N6-amino of a peptidyl lysine with the carboxyl-terminal glycine of a sumo (Small Ubiquitin-related MOdifier) protein." [PubMed:12612601, PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01875 ! N6-acylated L-lysine relationship: contains MOD:00134 ! N6-glycyl-L-lysine [Term] id: MOD:01150 name: neddylated lysine def: "A protein modification that effectively crosslinks the N6-amino of a peptidyl lysine with the carboxyl-terminal glycine of a nedd8 protein." [PubMed:11125103, PubMed:12612601, PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01875 ! N6-acylated L-lysine relationship: contains MOD:00134 ! N6-glycyl-L-lysine [Term] id: MOD:01151 name: phosphorylated residue with neutral loss of phosphate def: "Covalent modification of, or a change resulting in an alteration of the measured molecular mass of, a peptide or protein amino acid phosphorylated residue with a secondary loss of a neutral trihydrogen phosphate molecular fragment." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "-97.99" xref: DiffFormula: "C 0 H -3 N 0 O -4 P -1" xref: DiffMono: "-97.976895" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00432 ! modified residue with neutral loss of phosphate [Term] id: MOD:01152 name: carboxylated residue def: "A protein modification that effectively replaces a hydrogen atom with a carboxylic acid group." [Unimod:299] subset: PSI-MOD-slim synonym: "Carboxy" RELATED Unimod-interim [] synonym: "Carboxylation" RELATED Unimod-description [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 H 0 N 0 O 2" xref: DiffMono: "43.989829" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:299" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01153 name: methylthiolated residue def: "A protein modification that effectively replaces a hydrogen atom with an methylsulfanyl group (thiomethyl group)." [Unimod:39] subset: PSI-MOD-slim synonym: "Beta-methylthiolation" RELATED Unimod-description [] synonym: "Methylthio" RELATED Unimod-interim [] xref: DiffAvg: "46.09" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 1" xref: DiffMono: "45.987721" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:39" is_a: MOD:01886 ! thiolated residue [Term] id: MOD:01154 name: pyruvic acid def: "A protein modification that effectively converts a source amino acid to pyruvic acid." [PubMed:10085076, PubMed:3042771, PubMed:8464063, RESID:AA0127] subset: PSI-MOD-slim synonym: "2-oxopropanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES Pyruvic acid (Cys)" EXACT UniProt-feature [] synonym: "MOD_RES Pyruvic acid (Ser)" EXACT UniProt-feature [] synonym: "pyruvic acid" EXACT RESID-name [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 3 H 3 O 2" xref: MassAvg: "71.06" xref: MassMono: "71.013304" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "N-term" is_a: MOD:00769 ! residues isobaric at 71.0-71.1 Da is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01155 name: lipoconjugated residue def: "A protein modification that effectively results from forming an adduct with a compound containing a lipid-like group either through acylation, alkylation, or amidation." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01156 name: protein modification categorized by chemical process def: "Modified amino acid residue derived from a natural amino acid by a real or hypothetical chemical process." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00000 ! protein modification [Term] id: MOD:01157 name: protein modification categorized by amino acid modified def: "A protein modification considered either as modified amino acid residues derived from natural amino acids, as a replacement by another natural amino acid, or as a replacement by an unnatural amino acid." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00000 ! protein modification [Term] id: MOD:01158 name: modified L-selenocysteine residue def: "A protein modification that modifies an L-selenocysteine residue." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "U" is_a: MOD:00745 ! selenium containing residue is_a: MOD:01157 ! protein modification categorized by amino acid modified relationship: derives_from MOD:00031 ! L-selenocysteine residue [Term] id: MOD:01159 name: peptidoglycanated residue def: "A protein modification that effectively attaches a residue to murein peptidoglycan by either a pentaglycine linker peptide or a peptide-like L-alanyl-D-glutamyl-2,6-diaminopimelic acid linkage." [PubMed:18688235] xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00764 ! glycoconjugated residue [Term] id: MOD:01160 name: deaminated residue def: "A protein modification that effectively results in the loss of an ammonia, usually by a process of vicinal dehydration, rearrangement, and rehydration with release of ammonia, resulting in a loss of nitrogen with no gain of oxygen." [Unimod:385] subset: PSI-MOD-slim synonym: "Ammonia-loss" RELATED Unimod-interim [] synonym: "Loss of ammonia" RELATED Unimod-description [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:385" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01161 name: deoxygenated residue def: "A protein modification that effectively removes oxygen atoms from a residue without the removal of hydrogen atoms." [PubMed:14235557, Unimod:447] subset: PSI-MOD-slim synonym: "Deoxy" RELATED PSI-MS-label [] synonym: "dOxyRes" EXACT PSI-MOD-label [] synonym: "reduction" RELATED Unimod-description [] xref: DiffAvg: "-16.00" xref: DiffFormula: "C 0 H 0 N 0 O -1" xref: DiffMono: "-15.994915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:447" is_a: MOD:01472 ! reduced residue [Term] id: MOD:01162 name: fucosylated biantennary def: "modification from Unimod N-linked glycosylation" [Unimod:308] synonym: "dHex(1)Hex(5)HexNAc(4)" RELATED PSI-MS-label [] synonym: "Fucosylated biantennary" RELATED Unimod-description [] xref: DiffAvg: "1769.62" xref: DiffFormula: "C 68 H 112 N 4 O 49" xref: DiffMono: "1768.639516" xref: Formula: "C 72 H 118 N 6 O 51" xref: MassAvg: "1883.73" xref: MassMono: "1882.682443" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:308" xref: GNOme: "GNO:G83555HU" is_a: MOD:00725 ! complex glycosylation [Term] id: MOD:01163 name: guanylated residue def: "A protein modification that effectively crosslinks an amino acid residue and 5'-phosphoguanosine through either a phosphodiester or a phosphoramide bond." [DeltaMass:304, Unimod:413] comment: From DeltaMass: (formula incorrect, N and O reversed) Average Mass: 345 Formula: C10H12O5N7P1 Monoisotopic Mass Change: 345.047 Average Mass Change: 345.209. synonym: "5'phos Guanosyl" EXACT DeltaMass-label [] synonym: "phospho-guanosine" RELATED Unimod-description [] synonym: "Phosphoguanosine" RELATED PSI-MS-label [] xref: DiffAvg: "345.21" xref: DiffFormula: "C 10 H 12 N 5 O 7 P 1" xref: DiffMono: "345.047434" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:413" is_a: MOD:00701 ! nucleotide or nucleic acid modified residue [Term] id: MOD:01164 name: riboflavin-phosphorylated residue def: "A protein modification that effectively results from forming an adduct with a compound containing a riboflavin phosphate (flavin mononucleotide, FMN) group through a phosphodiester bond." [Unimod:442] subset: PSI-MOD-slim synonym: "FMN" RELATED PSI-MS-label [] synonym: "O3-(riboflavin phosphoryl)" RELATED Unimod-description [] xref: DiffAvg: "438.33" xref: DiffFormula: "C 17 H 19 N 4 O 8 P 1" xref: DiffMono: "438.094050" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:442" is_a: MOD:00697 ! flavin modified residue [Term] id: MOD:01165 name: adenylated residue def: "A protein modification that effectively crosslinks an amino acid residue and 5'-phosphoadenosine through either a phosphodiester or a phosphoramide bond." [DeltaMass:0, Unimod:405] comment: From DeltaMass: (name misspelled "5'phos adenosinyl") Average Mass: 329 subset: PSI-MOD-slim synonym: "5'phos Adenosinyl" EXACT DeltaMass-label [] synonym: "AMP binding site" RELATED Unimod-description [] synonym: "Phosphoadenosine" RELATED PSI-MS-label [] xref: DiffAvg: "329.21" xref: DiffFormula: "C 10 H 12 N 5 O 6 P 1" xref: DiffMono: "329.052520" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:405" is_a: MOD:00701 ! nucleotide or nucleic acid modified residue [Term] id: MOD:01166 name: uridylated residue def: "A protein modification that effectively crosslinks an amino acid residue and 5'-phosphouridine through either a phosphodiester or a phosphoramide bond." [DeltaMass:292, Unimod:417] comment: From DeltaMass: (name misspelled "5'phos Uridinyl" and formula incorrect, N and O reversed) Average Mass: 306 Formula: C9H11O2N8P1 Monoisotopic Mass Change: 306.025 Average Mass Change: 306.17 synonym: "5'phos Uridinyl" EXACT DeltaMass-label [] synonym: "PhosphoUridine" RELATED PSI-MS-label [] synonym: "uridine phosphodiester" RELATED Unimod-description [] xref: DiffAvg: "306.17" xref: DiffFormula: "C 9 H 11 N 2 O 8 P 1" xref: DiffMono: "306.025302" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:417" is_a: MOD:00701 ! nucleotide or nucleic acid modified residue [Term] id: MOD:01167 name: molybdopterin guanine dinucleotide def: "modification from Unimod" [Unimod:424] synonym: "molybdenum bis(molybdopterin guanine dinucleotide)" RELATED Unimod-description [] synonym: "MolybdopterinGD" RELATED PSI-MS-label [] xref: DiffAvg: "1572.02" xref: DiffFormula: "C 40 H 47 Mo 1 N 20 O 26 P 4 S 4" xref: DiffMono: "1572.985775" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:424" is_a: MOD:00744 ! molybdenum pterin containing modification [Term] id: MOD:01168 name: dehydroalanine def: "A protein modification that effectively converts a source amino acid residue to dehydroalanine." [PubMed:10220322, PubMed:1547888, PubMed:1815586, PubMed:2914619, PubMed:6838602, PubMed:7947813, PubMed:8239649, RESID:AA0181] subset: PSI-MOD-slim synonym: "2,3-didehydroalanine" EXACT RESID-alternate [] synonym: "2-aminoacrylic acid" EXACT RESID-alternate [] synonym: "2-aminopropenoic acid" EXACT RESID-systematic [] synonym: "4-methylidene-imidazole-5-one (MIO) active site" EXACT RESID-alternate [] synonym: "anhydroserine" EXACT RESID-alternate [] synonym: "dehydroalanine" EXACT RESID-name [] synonym: "Dha" EXACT RESID-alternate [] synonym: "dHAla" EXACT PSI-MOD-label [] synonym: "MOD_RES 2,3-didehydroalanine (Cys)" EXACT UniProt-feature [] synonym: "MOD_RES 2,3-didehydroalanine (Ser)" EXACT UniProt-feature [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 3 H 3 N 1 O 1" xref: MassAvg: "69.06" xref: MassMono: "69.021464" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01169 name: L-3-oxoalanine def: "A protein modification that effectively converts a source amino acid residue to L-oxoalanine." [DeltaMass:349, PubMed:14563551, PubMed:7628016, PubMed:8681943, PubMed:9478923, RESID:AA0185] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-oxopropanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-oxopropionic acid" EXACT RESID-alternate [] synonym: "C(alpha)-formylglycine" RELATED RESID-misnomer [] synonym: "L-3-oxoalanine" EXACT RESID-name [] synonym: "L-amino-malonic acid semialdehyde" EXACT RESID-alternate [] synonym: "L-aminomalonaldehydic acid" EXACT RESID-alternate [] synonym: "L-serinesemialdehyde" RELATED RESID-misnomer [] synonym: "MOD_RES 3-oxoalanine (Cys)" EXACT UniProt-feature [] synonym: "MOD_RES 3-oxoalanine (Ser)" EXACT UniProt-feature [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 3 H 3 N 1 O 2" xref: MassAvg: "85.06" xref: MassMono: "85.016378" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01170 name: pyruvic acid iminylated residue def: "A protein modification that effectively forms a 2-ketoimine of pyruvicacid with a residue amino group." [Unimod:422] synonym: "N-pyruvic acid 2-iminyl" RELATED Unimod-description [] synonym: "PyruvicAcidIminyl" RELATED PSI-MS-label [] xref: DiffAvg: "70.05" xref: DiffFormula: "C 3 H 2 N 0 O 2" xref: DiffMono: "70.005479" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "N-term" xref: Unimod: "Unimod:422" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01171 name: O-acetyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-acetyl-L-threonine." [PubMed:16728640, RESID:AA0423, Unimod:1#T] subset: PSI-MOD-slim synonym: "(2S,3R)-3-(acetyloxy)-2-aminobutanoic acid" EXACT RESID-systematic [] synonym: "Acetylation" RELATED Unimod-description [] synonym: "ACT_SITE O-acetylthreonine intermediate" EXACT UniProt-feature [] synonym: "MOD_RES O-acetylthreonine" EXACT UniProt-feature [] synonym: "O-acetyl-L-threonine" EXACT RESID-name [] synonym: "O-acetylthreonine" EXACT RESID-alternate [] synonym: "OAcThr" EXACT PSI-MOD-label [] synonym: "threonine acetate ester" EXACT RESID-alternate [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "C 6 H 9 N 1 O 3" xref: MassAvg: "143.14" xref: MassMono: "143.058243" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1" xref: UniProt: "PTM-0233" is_a: MOD:00644 ! mono O-acetylated residue is_a: MOD:01186 ! monoacetylated L-threonine [Term] id: MOD:01172 name: N-alanyl-glycosylsphingolipidinositolethanolamine def: "A protein modification that effectively converts an L-alanine residue to N-alanyl-glycosylsphingolipidinositolethanolamine." [PubMed:12626404, RESID:AA0424] synonym: "GSIAla" EXACT PSI-MOD-label [] synonym: "LIPID GPI-like-anchor amidated alanine" EXACT UniProt-feature [] synonym: "N-alanyl-glycosylsphingolipidinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 5 H 12 N 2 O 5 P 1" xref: MassAvg: "211.13" xref: MassMono: "211.048383" xref: Origin: "A" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0144" is_a: MOD:00466 ! glycosylsphingolipidinositolated residue is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:01173 name: N-asparaginyl-glycosylsphingolipidinositolethanolamine def: "A protein modification that effectively converts an L-asparagine residue to N-asparaginyl-glycosylsphingolipidinositolethanolamine." [PubMed:12626404, RESID:AA0425] synonym: "GSIAsn" EXACT PSI-MOD-label [] synonym: "LIPID GPI-like-anchor amidated asparagine" EXACT UniProt-feature [] synonym: "N-asparaginyl-glycosylsphingolipidinositolethanolamine" EXACT RESID-name [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 6 H 13 N 3 O 6 P 1" xref: MassAvg: "254.16" xref: MassMono: "254.054197" xref: Origin: "N" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0145" is_a: MOD:00466 ! glycosylsphingolipidinositolated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:01174 name: S-(15-deoxy-Delta12,14-prostaglandin J2-9-yl)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(15-deoxy-Delta12,14-prostaglandin J2-9-yl)-L-cysteine." [ChEBI:27485, PubMed:11466314, PubMed:12684535, RESID:AA0426] synonym: "(2R)-2-amino-3-([(5Z,9Xi,12E,14Z)-1-hydroxy-1,11-oxoprosta-5,12,14-trien-9-yl]sulfanyl)propanoic acid" EXACT RESID-alternate [] synonym: "(5Z,9Xi,12E,14Z)-9-([(2R)-2-amino-3-carboxyethyl]sulfanyl)-11-oxoprosta-5,12,14-trien-1-oic acid" EXACT RESID-systematic [] synonym: "LIPID S-(15-deoxy-Delta12,14-prostaglandin J2-9-yl)cysteine" EXACT UniProt-feature [] synonym: "PG-J2Cys" EXACT PSI-MOD-label [] synonym: "S-(15-deoxy-Delta12,14-prostaglandin J2-9-yl)-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "316.44" xref: DiffFormula: "C 20 H 28 N 0 O 3 S 0" xref: DiffMono: "316.203845" xref: Formula: "C 23 H 33 N 1 O 4 S 1" xref: MassAvg: "419.58" xref: MassMono: "419.213030" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0447" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:01175 name: S-phycourobilin-L-cysteine def: "A protein modification that effectively results from forming an adduct between a cysteine residue and the tetrapyrrole compound phycourobilin." [PubMed:1903388, PubMed:3208761, PubMed:3838747, RESID:AA0427] synonym: "(2S,3R,16R)-18-ethenyl-3-[(1R)-1-([(R)-2-amino-2-carboxyethyl]sulfanyl)ethyl]-8,12-bis(2-carboxyethyl)-2,7,13,17-tetramethyl-4,5,15,16-tetrahydrobiline-1,19(21H,22H,24H)-dione" EXACT RESID-systematic [] synonym: "18-ethenyl-3-[1-(2-amino-2-carboxyethylsulfanyl)ethyl]-2,3,15,16-dihydro-2,7,13,17-tetramethyl-1,19-dioxo-(21H,22H,24H)-bilin-8,12-dipropanoic acid" EXACT RESID-alternate [] synonym: "BINDING Phycourobilin chromophore (covalent; via 1 link)" EXACT UniProt-feature [] synonym: "phycourobilin cysteine adduct" EXACT RESID-alternate [] synonym: "PUB" EXACT RESID-alternate [] synonym: "PUBCys" EXACT PSI-MOD-label [] synonym: "S-phycourobilin-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "586.69" xref: DiffFormula: "C 33 H 38 N 4 O 6 S 0" xref: DiffMono: "586.279135" xref: Formula: "C 36 H 43 N 5 O 7 S 1" xref: MassAvg: "689.83" xref: MassMono: "689.288320" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00700 ! tetrapyrrole modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01176 name: L-dehydrolysinonorleucine def: "A protein modification that effectively cross-links an L-lysine residue and an L-lysine residue converted to allysine with a carbon-nitrogen bond to form L-dehydrolysinonorleucine." [PubMed:16929109, RESID:AA0430] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(5S)-5-amino-5-carboxypentylidene]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "6-(N6-L-didehydrolysino)-L-norleucine" EXACT RESID-alternate [] synonym: "CROSSLNK Dehydrolysinonorleucine (Lys-Lys)" EXACT UniProt-feature [] synonym: "dehydrolysinorleucine [misspelling]" EXACT RESID-alternate [] synonym: "dehydrolysylnorleucine" EXACT RESID-alternate [] synonym: "didehydrolysinonorleucine" EXACT RESID-alternate [] synonym: "L-dehydrolysinonorleucine" EXACT RESID-name [] synonym: "N6-[(5S)-5-amino-5-carboxypentylidene]-L-lysine" EXACT RESID-alternate [] synonym: "XLNK6NleN6Lys" EXACT PSI-MOD-label [] xref: DiffAvg: "-19.05" xref: DiffFormula: "C 0 H -5 N -1 O 0" xref: DiffMono: "-19.042199" xref: Formula: "C 12 H 19 N 3 O 2" xref: MassAvg: "237.30" xref: MassMono: "237.147727" xref: Origin: "K, K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02051 ! crosslinked L-lysine residue [Term] id: MOD:01177 name: 1'-(1,2,3-trihydroxyprop-2-yl)-L-histidine def: "A protein modification that effectively converts an L-histidine residue to 1'-(1,2,3-trihydroxyprop-2-yl)-L-histidine." [PubMed:16760471, RESID:AA0431] synonym: "(S)-2-amino-3-[1-(1,2,3-trihydroxypropan-2-yl)-1H-imidazol-4-yl]propanoic acid" EXACT RESID-systematic [] synonym: "1'-(1,2,3-trihydroxyprop-2-yl)-L-histidine" EXACT RESID-name [] synonym: "1-[1,2-dihydroxy-1-(hydroxymethyl)ethyl]-L-histidine" EXACT RESID-alternate [] synonym: "MOD_RES Tele-(1,2,3-trihydroxypropan-2-yl)histidine" EXACT UniProt-feature [] synonym: "N(epsilon)-histidine dihydroxyacetone adduct" EXACT RESID-alternate [] synonym: "N(tau)-(1,2,3-trihydroxypropan-2-yl)histidine" EXACT RESID-alternate [] synonym: "NtauDHAHis" EXACT PSI-MOD-label [] synonym: "tele-(1,2,3-trihydroxypropan-2-yl)histidine" EXACT RESID-alternate [] xref: DiffAvg: "90.08" xref: DiffFormula: "C 3 H 6 N 0 O 3" xref: DiffMono: "90.031694" xref: Formula: "C 9 H 13 N 3 O 4" xref: MassAvg: "227.22" xref: MassMono: "227.090606" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0416" is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:01178 name: S-(aspart-4-yloxy) thiocarbonate def: "A protein modification that effectively converts an L-aspartic acid residue to S-(aspart-4-yloxy) thiocarbonate." [PubMed:16627948, RESID:AA0432] comment: This modification was originally observed in an Entamoeba histolytica enzyme expressed in Escherichia coli. It was not chemically confirmed or characterized. It did not appear in a later model at higher resolution by the same group. This is a deprecated entry in RESID. It probably does not occur naturally [JSG]. synonym: "(2S)-2-amino-4-(carboxysulfanyl)oxy-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "4-aspartyloxysulfanylcarbonate" EXACT RESID-alternate [] synonym: "AspOSCO2H" EXACT PSI-MOD-label [] synonym: "O-carboxysulfanyl-4-oxo-L-homoserine" EXACT RESID-alternate [] synonym: "S-(aspart-4-yloxy) thiocarbonate" EXACT RESID-name [] xref: DiffAvg: "76.07" xref: DiffFormula: "C 1 H 0 N 0 O 2 S 1" xref: DiffMono: "75.961900" xref: Formula: "C 5 H 5 N 1 O 5 S 1" xref: MassAvg: "191.16" xref: MassMono: "190.988843" xref: Origin: "D" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:01179 name: N,N-dimethyl-L-alanine def: "A protein modification that effectively converts an L-alanine residue to N,N-dimethyl-L-alanine." [PubMed:17691833, PubMed:387091, RESID:AA0433] synonym: "(S)-1-carboxy-N,N-dimethylaminoethane" EXACT RESID-alternate [] synonym: "(S)-2-(dimethylamino)propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES N,N-dimethylalanine" EXACT UniProt-feature [] synonym: "N,N-dimethyl-L-alanine" EXACT RESID-name [] synonym: "N,N-dimethylalanine" EXACT RESID-alternate [] synonym: "NMe2Ala" EXACT PSI-MOD-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 5 H 10 N 1 O 1" xref: MassAvg: "100.14" xref: MassMono: "100.076239" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0178" is_a: MOD:01461 ! N-methylated alanine is_a: MOD:01686 ! alpha-amino dimethylated residue [Term] id: MOD:01180 name: 2-hydroxyglycine observational artifact def: "A protein modification that effectively converts a glycine residue to 2-hydroxyglycine." [ChEBI:38048, PubMed:16178056, PubMed:17431180, PubMed:17823333, RESID:AA0434] comment: CAUTION - peptides of 2-hydroxyglycine are known to be unstable, decaying to break the peptide backbone or to form peptidyl amides [see J. Am. Chem. Soc. 111, 1933-1934, 1989, and J. Org. Chem. 57, 3916-3921, 1992]. If computer analysis of tandem mass-spectrometric results predicts this modification, then it is most probable that there are multiple isobaric peptides differing in the location of multiple hydroxylation modifications [JSG]. synonym: "2-hydroxyglycine" EXACT RESID-name [] synonym: "2HyGly" EXACT PSI-MOD-label [] synonym: "alpha-hydroxyglycine" EXACT RESID-alternate [] synonym: "amino(hydroxy)acetic acid" EXACT RESID-systematic [] synonym: "aminohydroxyacetic acid" EXACT RESID-alternate [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 2 H 3 N 1 O 2" xref: MassAvg: "73.05" xref: MassMono: "73.016378" xref: Origin: "G" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:01181 name: L-aspartic acid 4-methyl ester def: "A protein modification that effectively converts an L-aspartic acid residue to L-aspartate 4-methyl ester." [OMSSA:69, PubMed:1556110, PubMed:16888766, PubMed:9629898, RESID:AA0435, Unimod:34#D] comment: CAUTION - observations of this modifation are attributable to artifacts produced in preparation. It is extremely unlikely that eukaryotes produce this modification, because an enzyme acting to form the methyl ester of L-aspartyl peptides would interfere with the D-aspartyl peptide repair mechanism [JSG]. synonym: "(2S)-2-amino-4-methoxy-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-aminobutanedioic acid 4-methyl ester" EXACT RESID-alternate [] synonym: "4-methyl L-2-aminosuccinic acid" EXACT RESID-alternate [] synonym: "4-methyl L-aspartate" EXACT RESID-alternate [] synonym: "4-methyl L-hydrogen aspartate" EXACT RESID-alternate [] synonym: "aspartic acid 4-methyl ester" EXACT RESID-alternate [] synonym: "aspartic acid beta-methyl ester" EXACT RESID-alternate [] synonym: "L-aspartic acid 4-methyl ester" EXACT RESID-name [] synonym: "meesterd" EXACT OMSSA-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "O4MeAsp" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:34" is_a: MOD:00393 ! O-methylated residue is_a: MOD:01681 ! monomethylated L-aspartic acid [Term] id: MOD:01182 name: 6-(S-L-cysteinyl)-8alpha-(-3'-L-histidino)-FAD def: "A protein modification that crosslinks a cysteine and a histidine residue by forming the adduct 6-(S-L-cysteinyl)-8alpha-(-3'-L-histidino)-FAD." [PubMed:, RESID:AA0436] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "6-((R)-2-amino-2-carboxyethyl)sulfanyl-8alpha-[4-((S)-2-amino-2-carboxyethyl)imidazol-3-yl]-riboflavin 5'-(trihydrogen diphosphate) 5'->5'-ester with adenosine" EXACT RESID-systematic [] synonym: "6-(S-cysteinyl)-8alpha-(N(delta1)-histidyl)-FAD" EXACT RESID-alternate [] synonym: "6-(S-cysteinyl)-8alpha-(N(pi)-histidyl)-FAD" EXACT RESID-alternate [] synonym: "6-(S-cysteinyl)-8alpha-(N3'-histidyl)-FAD" EXACT RESID-alternate [] synonym: "6-(S-cysteinyl)-8alpha-(pros-histidyl)-FAD" EXACT RESID-alternate [] synonym: "6-(S-L-cysteinyl)-8alpha-(N3'-L-histidino)-FAD" EXACT RESID-name [] synonym: "BINDING FAD (covalent; via 2 links)" EXACT UniProt-feature [] synonym: "BINDING FAD (covalent; via 2 links, pros nitrogen)" EXACT UniProt-feature [] synonym: "CROSSLNK 6-(S-cysteinyl)-8alpha-(pros-histidyl)-FAD (His-Cys)" EXACT UniProt-feature [] synonym: "SCys6-NprosHis8a-FAD" EXACT PSI-MOD-label [] xref: DiffAvg: "781.52" xref: DiffFormula: "C 27 H 29 N 9 O 15 P 2 S 0" xref: DiffMono: "781.125835" xref: Formula: "C 36 H 41 N 13 O 17 P 2 S 1" xref: MassAvg: "1021.81" xref: MassMono: "1021.193931" xref: Origin: "C, H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0681" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02048 ! crosslinked L-histidine residue is_a: MOD:01621 ! flavin crosslinked residues [Term] id: MOD:01183 name: L-selenocystine (oxidized selenocysteine) (Sec-Sec) def: "A protein modification that effectively cross-links two L-selenocysteine residues to form L-selenocystine," [ChEBI:28553, PubMed:17715293, PubMed:6076213, RESID:AA0437] comment: Cross-link 2; for formation of the same modification by substitution of 2 selenium for 2 sulfur atoms in L-cystine, see MOD:01184. subset: PSI-MOD-slim synonym: "(R,R)-3,3'-diselane-1,2-diylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "3,3'-diselenobis(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-diselenobisalanine" EXACT RESID-alternate [] synonym: "3,3'-diselenodialanine" EXACT RESID-alternate [] synonym: "beta,beta'-diamino-beta,beta'-dicarboxydiethyldiselenide" EXACT RESID-alternate [] synonym: "beta,beta'-diselenodialanine" EXACT RESID-alternate [] synonym: "bis(alpha-aminopropionic acid)-beta-diselenide" EXACT RESID-alternate [] synonym: "bis(beta-amino-beta-carboxyethyl)diselenide" EXACT RESID-alternate [] synonym: "CROSSLNK Selenocystine (Sec-Sec)" EXACT UniProt-feature [] synonym: "diselenocysteine" EXACT RESID-alternate [] synonym: "L-selenocystine" EXACT RESID-name [] synonym: "Sec2" EXACT PSI-MOD-label [] synonym: "selenium cystine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 Se 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 2 Se 2" xref: MassAvg: "298.08" xref: MassMono: "299.891620" xref: Origin: "U, U" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:01158 ! modified L-selenocysteine residue [Term] id: MOD:01184 name: L-selenocystine (selenium disubstituted L-cystine) def: "A protein modification that effectively substitutes two selenium atoms for two sulfur atoms in L-cystine to form L-selenocystine." [PubMed:17715293, RESID:AA0437#CYS2] comment: Cross-link 2; for formation of the same modification by oxidation of two L-selenocysteine residues, see MOD:01183. synonym: "(R,R)-3,3'-diselane-1,2-diylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "3,3'-diselenobis(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-diselenobisalanine" EXACT RESID-alternate [] synonym: "3,3'-diselenodialanine" EXACT RESID-alternate [] synonym: "beta,beta'-diamino-beta,beta'-dicarboxydiethyldiselenide" EXACT RESID-alternate [] synonym: "beta,beta'-diselenodialanine" EXACT RESID-alternate [] synonym: "bis(alpha-aminopropionic acid)-beta-diselenide" EXACT RESID-alternate [] synonym: "bis(beta-amino-beta-carboxyethyl)diselenide" EXACT RESID-alternate [] synonym: "CROSSLNK Selenocystine (Sec-Sec)" EXACT UniProt-feature [] synonym: "diselenocysteine" EXACT RESID-alternate [] synonym: "L-selenocystine" EXACT RESID-name [] synonym: "Se2(S2)Cys2" EXACT PSI-MOD-label [] synonym: "selenium cystine" EXACT RESID-alternate [] xref: DiffAvg: "91.81" xref: DiffFormula: "C 0 H -2 N 0 O 0 S -2 Se 2" xref: DiffMono: "93.873250" xref: Formula: "C 6 H 8 N 2 O 2 Se 2" xref: MassAvg: "298.08" xref: MassMono: "299.891620" xref: Origin: "C, C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01185 name: 4-amidated L-aspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to L-asparagine." [PubMed:17962566, RESID:AA0003#ASP] synonym: "(2S)-2-amino-4-butanediamic acid" EXACT RESID-systematic [] synonym: "2,4-bis(azanyl)-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "2,4-diamino-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "2-amino-3-carbamoylpropanoic acid" EXACT RESID-alternate [] synonym: "2-amino-4-butanediamic acid" EXACT RESID-alternate [] synonym: "2-aminosuccinamic acid" EXACT RESID-alternate [] synonym: "2-aminosuccinic acid 4-amide" EXACT RESID-alternate [] synonym: "4NAsp" EXACT PSI-MOD-label [] synonym: "alpha-amino-beta-carbamylpropionic acid" EXACT RESID-alternate [] synonym: "alpha-aminosuccinamic acid" EXACT RESID-alternate [] synonym: "aspartic acid 4-amide" EXACT RESID-alternate [] synonym: "aspartic acid beta-amide" EXACT RESID-alternate [] synonym: "beta-asparagine" EXACT RESID-alternate [] synonym: "L-asparagine" EXACT RESID-name [] synonym: "MOD_RES Amidated aspartic acid" EXACT UniProt-feature [] xref: DiffAvg: "-0.98" xref: DiffFormula: "C 0 H 1 N 1 O -1" xref: DiffMono: "-0.984016" xref: Formula: "C 4 H 6 N 2 O 2" xref: MassAvg: "114.10" xref: MassMono: "114.042927" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00674 ! amidated residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:01186 name: monoacetylated L-threonine def: "A protein modification that effectively converts an L-threonine residue to either N-acetyl-L-threonne, or O-acetyl-Lthreonine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "AcThr" EXACT PSI-MOD-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "T" xref: Source: "natural" is_a: MOD:00394 ! monoacetylated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01187 name: L-pyrrolysine residue def: "A protein modification that inserts or replaces a residue with an L-pyrrolysine residue, a natural pretranslational modification." [ChEBI:21860, PubMed:11435424, PubMed:12029131, PubMed:12029132, PubMed:15314242, PubMed:16096277, RESID:AA0321, Unimod:435] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-[(2R,3R)-3-methyl-3,4-dihydro-2H-pyrrol-2-ylcarbonyl]aminohexanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-6-[(2R,3R)-3-methyl-3,4-dihydro-2H-pyrrol-2-ylcarbonyl]azanylhexanoic acid" EXACT RESID-alternate [] synonym: "L-pyrrolysine" EXACT RESID-name [] synonym: "monomethylamine methyltransferase cofactor lysine adduct" EXACT RESID-alternate [] synonym: "N6-(4-methyl-1,2-didehydropyrrolidine-5-carboxyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-(4-methyl-delta-1-pyrroline-5-carboxyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-([(2R,3R)-3-methyl-3,4-dihydro-2H-pyrrol-2-yl]carbonyl)-L-lysine" EXACT RESID-alternate [] synonym: "NON_STD Pyrrolysine" EXACT UniProt-feature [] synonym: "Pyl" EXACT PSI-MOD-label [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 12 H 19 N 3 O 2" xref: MassAvg: "237.30" xref: MassMono: "237.147727" xref: Origin: "O" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:435" is_a: MOD:00868 ! natural, non-standard encoded residue [Term] id: MOD:01188 name: N-ethyl iodoacetamide-d5 - site Y def: "modification from Unimod Isotopic label -" [PubMed:11710128, PubMed:12766232, PubMed:3155470, PubMed:957432, Unimod:212#Y] synonym: "N-ethyl iodoacetamide-d5" RELATED Unimod-description [] synonym: "NEIAA:2H(5)" RELATED PSI-MS-label [] xref: DiffAvg: "90.08" xref: DiffFormula: "C 4 (1)H 2 (2)H 5 N 1 O 1" xref: DiffMono: "90.084148" xref: Formula: "C 13 (1)H 11 (2)H 5 N 2 O 3" xref: MassAvg: "253.15" xref: MassMono: "253.147476" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:212" is_a: MOD:00562 ! N-ethyl iodoacetamide-d5 [Term] id: MOD:01189 name: N-ethyl iodoacetamide-d5 - site C def: "modification from Unimod Isotopic label -" [PubMed:12766232, Unimod:212#C] synonym: "N-ethyl iodoacetamide-d5" RELATED Unimod-description [] synonym: "NEIAA:2H(5)" RELATED PSI-MS-label [] xref: DiffAvg: "90.08" xref: DiffFormula: "C 4 (1)H 2 (2)H 5 N 1 O 1" xref: DiffMono: "90.084148" xref: Formula: "C 7 (1)H 7 (2)H 5 N 2 O 2 S 1" xref: MassAvg: "193.09" xref: MassMono: "193.093332" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:212" is_a: MOD:00562 ! N-ethyl iodoacetamide-d5 [Term] id: MOD:01190 name: dibromo def: "Modification from Unimod Chemical derivative. OBSOLETE because duplicate and redundant with MOD:01006. Remap to MOD:01006." [Unimod:534] synonym: "Dibromo" RELATED PSI-MS-label [] synonym: "Dibromo" RELATED Unimod-description [] xref: DiffAvg: "157.79" xref: DiffFormula: "Br 2 H -2" xref: DiffMono: "155.821024" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Y" xref: Source: "none" xref: TermSpec: "none" xref: Remap: "MOD:01006" xref: Unimod: "Unimod:534" is_obsolete: true [Term] id: MOD:01191 name: N-ethyl iodoacetamide-d0 - site C def: "modification from Unimod Isotopic label -" [PubMed:12766232, Unimod:211#C] synonym: "N-ethyl iodoacetamide-d0" RELATED Unimod-description [] synonym: "NEIAA" RELATED PSI-MS-label [] xref: DiffAvg: "85.11" xref: DiffFormula: "C 4 H 7 N 1 O 1" xref: DiffMono: "85.052764" xref: Formula: "C 7 H 12 N 2 O 2 S 1" xref: MassAvg: "188.25" xref: MassMono: "188.061949" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:211" is_a: MOD:00561 ! N-ethyl iodoacetamide-d0 [Term] id: MOD:01192 name: N-ethyl iodoacetamide-d0 - site Y def: "modification from Unimod Isotopic label -" [PubMed:11760118, PubMed:12766232, Unimod:211#Y] synonym: "N-ethyl iodoacetamide-d0" RELATED Unimod-description [] synonym: "NEIAA" RELATED PSI-MS-label [] xref: DiffAvg: "85.11" xref: DiffFormula: "C 4 H 7 N 1 O 1" xref: DiffMono: "85.052764" xref: Formula: "C 13 H 16 N 2 O 3" xref: MassAvg: "248.28" xref: MassMono: "248.116092" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:211" is_a: MOD:00561 ! N-ethyl iodoacetamide-d0 [Term] id: MOD:01193 name: pyridyl thiol modified L-threonine def: "modification from Unimod Chemical derivative -" [PubMed:1093385, Unimod:264#T] synonym: "PET" RELATED PSI-MS-label [] synonym: "phosphorylation to pyridyl thiol" RELATED Unimod-description [] xref: DiffAvg: "121.20" xref: DiffFormula: "C 7 H 7 N 1 O -1 S 1" xref: DiffMono: "121.035006" xref: Formula: "C 11 H 14 N 2 O 1 S 1" xref: MassAvg: "222.31" xref: MassMono: "222.082684" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:264" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:00586 ! pyridyl thiol modified residue [Term] id: MOD:01194 name: pyridyl thiol modified L-serine def: "modification from Unimod Chemical derivative -" [PubMed:15279557, Unimod:264#S] synonym: "PET" RELATED PSI-MS-label [] synonym: "phosphorylation to pyridyl thiol" RELATED Unimod-description [] xref: DiffAvg: "121.20" xref: DiffFormula: "C 7 H 7 N 1 O -1 S 1" xref: DiffMono: "121.035006" xref: Formula: "C 10 H 12 N 2 O 1 S 1" xref: MassAvg: "208.28" xref: MassMono: "208.067034" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:264" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:00586 ! pyridyl thiol modified residue [Term] id: MOD:01195 name: benzoyl labeling reagent light form - site K def: "modification from Unimod Isotopic label -" [PubMed:11813307, PubMed:12777388, PubMed:15456300, Unimod:136#K] synonym: "Benzoyl" RELATED PSI-MS-label [] synonym: "labeling reagent light form (N-term & K)" RELATED Unimod-description [] xref: DiffAvg: "104.11" xref: DiffFormula: "C 7 H 4 O 1" xref: DiffMono: "104.026215" xref: Formula: "C 13 H 16 N 2 O 2" xref: MassAvg: "232.28" xref: MassMono: "232.121178" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:136" is_a: MOD:00505 ! benzoyl labeling reagent light form (N-term and K) [Term] id: MOD:01196 name: 5-dimethylaminonaphthalene-1-sulfonyl - site K def: "OBSOLETE because redundant, replaced with MOD:01654. Remap to MOD:01654." [Unimod:139] synonym: "5-dimethylaminonaphthalene-1-sulfonyl" RELATED Unimod-description [] synonym: "Dansyl" RELATED PSI-MS-label [] xref: DiffAvg: "233.29" xref: DiffFormula: "C 12 H 11 N 1 O 2 S 1" xref: DiffMono: "233.051050" xref: Formula: "C 18 H 23 N 3 O 3 S 1" xref: MassAvg: "361.46" xref: MassMono: "361.146013" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01654" xref: Unimod: "Unimod:139" is_obsolete: true [Term] id: MOD:01197 name: N-heptosyl-L-glutamine def: "A protein modification that effectively converts an L-glutamine residue to N-heptosyl-L-glutamine." [Unimod:490#Q] comment: From Unimod with no citation [JSG]. synonym: "Hep" RELATED PSI-MS-label [] synonym: "Heptose" RELATED Unimod-description [] xref: DiffAvg: "192.17" xref: DiffFormula: "C 7 H 12 O 6" xref: DiffMono: "192.063388" xref: Formula: "C 12 H 20 N 2 O 8" xref: MassAvg: "320.30" xref: MassMono: "320.121966" xref: Origin: "Q" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:490" is_a: MOD:00925 ! heptosylated residue [Term] id: MOD:01198 name: O-heptosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-heptosyl-L-serine." [Unimod:490#S] comment: From Unimod with no citation [JSG]. synonym: "Hep" RELATED PSI-MS-label [] synonym: "Heptose" RELATED Unimod-description [] xref: DiffAvg: "192.17" xref: DiffFormula: "C 7 H 12 O 6" xref: DiffMono: "192.063388" xref: Formula: "C 10 H 17 N 1 O 8" xref: MassAvg: "279.25" xref: MassMono: "279.095417" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:490" is_a: MOD:00925 ! heptosylated residue [Term] id: MOD:01199 name: N-heptosyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to an N-heptosyl-L-arginine." [Unimod:490#R] comment: From Unimod with no citation [JSG]. synonym: "Hep" RELATED PSI-MS-label [] synonym: "Heptose" RELATED Unimod-description [] xref: DiffAvg: "192.17" xref: DiffFormula: "C 7 H 12 O 6" xref: DiffMono: "192.063388" xref: Formula: "C 13 H 24 N 4 O 7" xref: MassAvg: "348.36" xref: MassMono: "348.164499" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:490" is_a: MOD:00925 ! heptosylated residue [Term] id: MOD:01200 name: O-heptosyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-heptosyl-L-threonine." [Unimod:490#T] comment: From Unimod with no citation [JSG]. synonym: "Hep" RELATED PSI-MS-label [] synonym: "Heptose" RELATED Unimod-description [] xref: DiffAvg: "192.17" xref: DiffFormula: "C 7 H 12 O 6" xref: DiffMono: "192.063388" xref: Formula: "C 11 H 19 N 1 O 8" xref: MassAvg: "293.27" xref: MassMono: "293.111067" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:490" is_a: MOD:00925 ! heptosylated residue [Term] id: MOD:01201 name: N6-heptosyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-heptosyl-L-lysine." [Unimod:490#K] comment: From Unimod with no citation [JSG]. synonym: "Hep" RELATED PSI-MS-label [] synonym: "Heptose" RELATED Unimod-description [] xref: DiffAvg: "192.17" xref: DiffFormula: "C 7 H 12 O 6" xref: DiffMono: "192.063388" xref: Formula: "C 13 H 24 N 2 O 7" xref: MassAvg: "320.34" xref: MassMono: "320.158351" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:490" is_a: MOD:00925 ! heptosylated residue [Term] id: MOD:01202 name: N-heptosyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N-heptosyl-L-asparagine." [Unimod:490#N] comment: From Unimod with no citation [JSG]. synonym: "Hep" RELATED PSI-MS-label [] synonym: "Heptose" RELATED Unimod-description [] xref: DiffAvg: "192.17" xref: DiffFormula: "C 7 H 12 O 6" xref: DiffMono: "192.063388" xref: Formula: "C 11 H 18 N 2 O 8" xref: MassAvg: "306.27" xref: MassMono: "306.106316" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:490" is_a: MOD:00925 ! heptosylated residue [Term] id: MOD:01203 name: N6-(pyridylacetyl)lysine def: "A protein modification that effectively converts an L-lysine residue to N6-[(pyrid-3-yl)acetyl]lysine." [PubMed:9276974, Unimod:25#K] comment: Produced by reaction with N-[(pyrid-3-yl)acetyl]oxy-succinimide [JSG]. synonym: "Pyridylacetyl" RELATED PSI-MS-label [] synonym: "pyridylacetyl" RELATED Unimod-description [] xref: DiffAvg: "119.12" xref: DiffFormula: "C 7 H 5 N 1 O 1" xref: DiffMono: "119.037114" xref: Formula: "C 13 H 17 N 3 O 2" xref: MassAvg: "247.30" xref: MassMono: "247.132077" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:25" is_a: MOD:00418 ! pyridylacetylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01204 name: prompt loss of methanethiol from oxidixed methionine def: "modification from Unimod Artifact -" [PubMed:9004526, Unimod:526] synonym: "Dethiomethyl" RELATED PSI-MS-label [] synonym: "Prompt loss of side chain from oxidised Met" RELATED Unimod-description [] xref: DiffAvg: "-48.10" xref: DiffFormula: "C -1 H -4 S -1" xref: DiffMono: "-48.003371" xref: Formula: "C 4 H 5 N 1 O 1 S 0" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:526" is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:01205 name: Hex1HexNAc1NeuAc2 O-glycosylated serine def: "A protein modification that effectively replaces an O3 hydrogen atom of a serine residue with a carbohydrate-like group composed of Hex1HexNAc1NeuAc2 linked through a glycosidic bond." [PubMed:7949339, Unimod:160#S] synonym: "Hex(1)HexNAc(1)NeuAc(2)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc2" RELATED Unimod-description [] xref: DiffAvg: "947.85" xref: DiffFormula: "C 36 H 57 N 3 O 26" xref: DiffMono: "947.323029" xref: Formula: "C 39 H 62 N 4 O 28" xref: MassAvg: "1034.93" xref: MassMono: "1034.355057" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:160" is_a: MOD:00528 ! Hex1HexNAc1NeuAc2 glycosylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01206 name: Hex1HexNAc1NeuAc2 O-glycosylated threonine def: "A protein modification that effectively replaces an O3 hydrogen atom of a threonine residue with a carbohydrate-like group composed of Hex1HexNAc1NeuAc2 linked through a glycosidic bond." [Unimod:160#T] synonym: "Hex(1)HexNAc(1)NeuAc(2)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc2" RELATED Unimod-description [] xref: DiffAvg: "947.85" xref: DiffFormula: "C 36 H 57 N 3 O 26" xref: DiffMono: "947.323029" xref: Formula: "C 40 H 64 N 4 O 28" xref: MassAvg: "1048.95" xref: MassMono: "1048.370707" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:160" is_a: MOD:00528 ! Hex1HexNAc1NeuAc2 glycosylated residue is_a: MOD:00005 ! O-glycosyl-L-threonine [Term] id: MOD:01207 name: Hex1HexNAc1NeuAc2 N4-glycosylated asparagine def: "A protein modification that effectively replaces an N4 hydrogen atom of an asparagine residue with a carbohydrate-like group composed of Hex1HexNAc1NeuAc2 linked through a glycosidic bond." [Unimod:160#N] synonym: "Hex(1)HexNAc(1)NeuAc(2)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc2" RELATED Unimod-description [] xref: DiffAvg: "947.85" xref: DiffFormula: "C 36 H 57 N 3 O 26" xref: DiffMono: "947.323029" xref: Formula: "C 40 H 63 N 5 O 28" xref: MassAvg: "1061.95" xref: MassMono: "1061.365956" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:160" is_a: MOD:00528 ! Hex1HexNAc1NeuAc2 glycosylated residue is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:01208 name: copper(1+) carboxylate C-terminal residue def: "A protein modification that effectively converts a C-terminal residue to the copper(1+) carboxylate salt." [Unimod:531#C-term] synonym: "Cation:Cu[I]" RELATED PSI-MS-label [] synonym: "cuprous salt" EXACT PSI-MOD-alternate [] synonym: "Replacement of proton by copper" RELATED Unimod-description [] xref: DiffAvg: "62.54" xref: DiffFormula: "Cu 1 H -1" xref: DiffMono: "61.921772" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "C-term" xref: Unimod: "Unimod:531" is_a: MOD:00742 ! copper containing modified residue [Term] id: MOD:01209 name: copper(1+) L-aspartate def: "A protein modification that effectively converts an L-aspartic acid residue to the copper(1+) aspartate salt." [Unimod:531#D] synonym: "Cation:Cu[I]" RELATED PSI-MS-label [] synonym: "cuprous salt" EXACT PSI-MOD-alternate [] synonym: "Replacement of proton by copper" RELATED Unimod-description [] xref: DiffAvg: "62.54" xref: DiffFormula: "Cu 1 H -1" xref: DiffMono: "61.921772" xref: Formula: "C 4 Cu 1 H 4 N 1 O 3" xref: MassAvg: "177.63" xref: MassMono: "176.948715" xref: Origin: "D" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:531" is_a: MOD:00742 ! copper containing modified residue is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue [Term] id: MOD:01210 name: copper(1+) L-glutamate def: "A protein modification that effectively converts an L-glutamic acid residue to the copper(1+) glutamate salt." [Unimod:531#E] synonym: "Cation:Cu[I]" RELATED PSI-MS-label [] synonym: "cuprous salt" EXACT PSI-MOD-alternate [] synonym: "Replacement of proton by copper" RELATED Unimod-description [] xref: DiffAvg: "62.54" xref: DiffFormula: "Cu 1 H -1" xref: DiffMono: "61.921772" xref: Formula: "C 5 Cu 1 H 6 N 1 O 3" xref: MassAvg: "191.65" xref: MassMono: "190.964366" xref: Origin: "E" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:531" is_a: MOD:00742 ! copper containing modified residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue [Term] id: MOD:01211 name: N6-(morpholine-2-acetyl)-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-(morpholine-2-acetyl)-lysine." [PubMed:10446193, Unimod:29#K] comment: The Unimod name "N-Succinimidyl-3-morpholine acetate" appears to have been a typographical error [JSG]. synonym: "N-Succinimidyl-2-morpholine acetate" RELATED Unimod-description [] synonym: "N-succinimidylmorpholine-2-acetate N6-derivatized lysine" EXACT PSI-MOD-alternate [] synonym: "SMA" RELATED PSI-MS-label [] xref: DiffAvg: "127.14" xref: DiffFormula: "C 6 H 9 N 1 O 2" xref: DiffMono: "127.063329" xref: Formula: "C 12 H 21 N 3 O 3" xref: MassAvg: "255.32" xref: MassMono: "255.158292" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:29" is_a: MOD:01813 ! morpholine-2-acetylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01212 name: iodoacetamide N6-derivatized lysine def: "A protein modification that effectively converts an L-lysine residue to N6-(carboxamidomethyl)lysine." [OMSSA:27, PubMed:11510821, PubMed:12422359, PubMed:12686488, Unimod:4#K] subset: PSI-MOD-slim synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "carbamidomethylk" EXACT OMSSA-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] synonym: "N6-(2-amino-2-oxoethyl)lysine" EXACT PSI-MOD-alternate [] synonym: "N6-(carbamoylmethyl)lysine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1" xref: DiffMono: "57.021464" xref: Formula: "C 8 H 15 N 3 O 2" xref: MassAvg: "185.23" xref: MassMono: "185.116427" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:4" is_a: MOD:00397 ! iodoacetamide derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01213 name: iodoacetamide derivatized histidine def: "A protein modification that effectively converts an L-histidine residue to an iodoacetamide derivatized histidine, either 1'- or 3'-(carboxamidolmethyl)histidine." [OMSSA:28, PubMed:11510821, PubMed:12422359, PubMed:15627961, PubMed:2026710, Unimod:4#H] subset: PSI-MOD-slim synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "carbamidometylh" EXACT OMSSA-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1" xref: DiffMono: "57.021464" xref: Formula: "C 8 H 10 N 4 O 2" xref: MassAvg: "194.19" xref: MassMono: "194.080376" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:4" is_a: MOD:00397 ! iodoacetamide derivatized residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:01214 name: iodoacetamide - site C def: "modification from Unimod Chemical derivative - OBSOLETE because redundant, the difference component of MOD:01060. Remap to MOD:01060." [PubMed:10504701, PubMed:11510821, PubMed:12422359, Unimod:4#C] synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1" xref: DiffMono: "57.021464" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01060" xref: Unimod: "Unimod:4" is_obsolete: true [Term] id: MOD:01215 name: iodoacetamide derivatized aspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to O4-(carboxamidomethyl)aspartate." [OMSSA:29, PubMed:11510821, PubMed:12422359, PubMed:16526082, Unimod:4#D] subset: PSI-MOD-slim synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "carbamidomethyld" EXACT OMSSA-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1" xref: DiffMono: "57.021464" xref: Formula: "C 6 H 8 N 2 O 4" xref: MassAvg: "172.14" xref: MassMono: "172.048407" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:4" is_a: MOD:00397 ! iodoacetamide derivatized residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:01216 name: iodoacetamide derivatized glutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to O5-(carboxamidomethyl)glutamate." [OMSSA:30, PubMed:11510821, PubMed:12422359, Unimod:4#E] subset: PSI-MOD-slim synonym: "Carbamidomethyl" RELATED PSI-MS-label [] synonym: "carbamidomethyle" EXACT OMSSA-label [] synonym: "Iodoacetamide derivative" RELATED Unimod-description [] xref: DiffAvg: "57.05" xref: DiffFormula: "C 2 H 3 N 1 O 1" xref: DiffMono: "57.021464" xref: Formula: "C 7 H 10 N 2 O 4" xref: MassAvg: "186.17" xref: MassMono: "186.064057" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" xref: UniMo: "Unimod:4" is_a: MOD:00397 ! iodoacetamide derivatized residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01217 name: Sulfanilic Acid (SA), light C12 - site D def: "modification from Unimod Isotopic label -" [PubMed:12872131, Unimod:285#D] synonym: "Light Sulfanilic Acid (SA) C12" RELATED Unimod-description [] synonym: "SulfanilicAcid" RELATED PSI-MS-label [] xref: DiffAvg: "155.00" xref: DiffFormula: "(12)C 6 H 5 N 1 O 2 S 1" xref: DiffMono: "155.004099" xref: Formula: "(12)C 10 H 10 N 2 O 5 S 1" xref: MassAvg: "270.03" xref: MassMono: "270.031042" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:285" is_a: MOD:00605 ! Sulfanilic Acid (SA), light C12 [Term] id: MOD:01218 name: Sulfanilic Acid (SA), light C12 - site E def: "modification from Unimod Isotopic label -" [PubMed:15283597, Unimod:285#E] synonym: "Light Sulfanilic Acid (SA) C12" RELATED Unimod-description [] synonym: "SulfanilicAcid" RELATED PSI-MS-label [] xref: DiffAvg: "155.00" xref: DiffFormula: "(12)C 6 H 5 N 1 O 2 S 1" xref: DiffMono: "155.004099" xref: Formula: "(12)C 11 H 12 N 2 O 5 S 1" xref: MassAvg: "284.05" xref: MassMono: "284.046692" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:285" is_a: MOD:00605 ! Sulfanilic Acid (SA), light C12 [Term] id: MOD:01219 name: Sulfanilic Acid (SA), heavy C13 - site D def: "modification from Unimod Chemical derivative -" [PubMed:9254591, PubMed:9750125, Unimod:286#D] synonym: "Heavy Sulfanilic Acid (SA) C13" RELATED Unimod-description [] synonym: "SulfanilicAcid:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "161.02" xref: DiffFormula: "(13)C 6 H 5 N 1 O 2 S 1" xref: DiffMono: "161.024228" xref: Formula: "(12)C 4 (13)C 6 H 10 N 2 O 5 S 1" xref: MassAvg: "276.05" xref: MassMono: "276.051171" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:286" is_a: MOD:00606 ! Sulfanilic Acid (SA), heavy C13 [Term] id: MOD:01220 name: Sulfanilic Acid (SA), heavy C13 - site E def: "modification from Unimod Chemical derivative -" [PubMed:15121203, PubMed:9254591, Unimod:286#E] synonym: "Heavy Sulfanilic Acid (SA) C13" RELATED Unimod-description [] synonym: "SulfanilicAcid:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "161.02" xref: DiffFormula: "(13)C 6 H 5 N 1 O 2 S 1" xref: DiffMono: "161.024228" xref: Formula: "(12)C 5 (13)C 6 H 12 N 2 O 5 S 1" xref: MassAvg: "290.07" xref: MassMono: "290.066822" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:286" is_a: MOD:00606 ! Sulfanilic Acid (SA), heavy C13 [Term] id: MOD:01221 name: O-formyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-formyl-L-threonine." [PubMed:11861642, PubMed:15799070, Unimod:122#T] comment: From Unimod: Can occur under CNBr cleavage conditions (70% HCOOH). synonym: "Formyl" RELATED PSI-MS-label [] synonym: "Formylation" RELATED Unimod-description [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:122" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01483 ! O-formylated residue [Term] id: MOD:01222 name: O-formyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-formyl-L-serine." [PubMed:15627961, PubMed:15799070, Unimod:122#S] comment: From Unimod: Can occur under CNBr cleavage conditions (70% HCOOH). synonym: "Formyl" RELATED PSI-MS-label [] synonym: "Formylation" RELATED Unimod-description [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:122" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01483 ! O-formylated residue [Term] id: MOD:01223 name: thioacylation of primary amines - site N-term def: "modification from Unimod Other -" [OMSSA:41, PubMed:11710128, PubMed:3155470, PubMed:957432, Unimod:126#N-term] comment: This Unimod entry is misdescribed as "thioacylation" [JSG]. synonym: "3,3-Dithio-bis-(sulfosuccinimidyl)propionate" RELATED Unimod-alternate [] synonym: "ntermpeptioacetyl" EXACT OMSSA-label [] synonym: "Thioacyl" RELATED PSI-MS-label [] synonym: "thioacylation of primary amines (N-term and Lys)" RELATED Unimod-description [] xref: DiffAvg: "88.12" xref: DiffFormula: "C 3 H 4 O 1 S 1" xref: DiffMono: "87.998286" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:126" is_a: MOD:00497 ! 3-sulfanylpropanoyl (N-term and Lys) [Term] id: MOD:01224 name: thioacylation of primary amines - site K def: "modification from Unimod Other -" [OMSSA:40, PubMed:11710128, PubMed:3155470, PubMed:957432, Unimod:126#K] comment: This Unimod entry is misdescribed as "thioacylation" [JSG]. synonym: "3,3-Dithio-bis-(sulfosuccinimidyl)propionate" RELATED Unimod-alternate [] synonym: "thioacetylk" EXACT OMSSA-label [] synonym: "Thioacyl" RELATED PSI-MS-label [] synonym: "thioacylation of primary amines (N-term and Lys)" RELATED Unimod-description [] xref: DiffAvg: "88.12" xref: DiffFormula: "C 3 H 4 O 1 S 1" xref: DiffMono: "87.998286" xref: Formula: "C 9 H 16 N 2 O 2 S 1" xref: MassAvg: "216.30" xref: MassMono: "216.093249" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:126" is_a: MOD:00497 ! 3-sulfanylpropanoyl (N-term and Lys) [Term] id: MOD:01225 name: monofluorinated L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue into an L-fluorotyrosine." [OMSSA:46, PubMed:8069568, Unimod:127#Y] comment: From Unimod: the citation appears to be correct, but the PMID is not and has been corrected [JSG]. synonym: "Fluoro" RELATED PSI-MS-label [] synonym: "fluorophenylalanine replacement of phenylalanine" RELATED Unimod-description [] synonym: "phef" EXACT OMSSA-label [] xref: DiffAvg: "17.99" xref: DiffFormula: "F 1 H -1" xref: DiffMono: "17.990578" xref: Formula: "C 9 F 1 H 8 N 1 O 2" xref: MassAvg: "181.17" xref: MassMono: "181.053907" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:127" is_a: MOD:00498 ! fluorinated residue is_a: MOD:00985 ! halogenated tyrosine [Term] id: MOD:01226 name: monofluorinated L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to an L-fluorotryptophan." [PubMed:8069568, Unimod:127#W] comment: From Unimod: the citation appears to be correct, but the PMID is not and has been corrected [JSG]. synonym: "Fluoro" RELATED PSI-MS-label [] synonym: "fluorophenylalanine replacement of phenylalanine" RELATED Unimod-description [] xref: DiffAvg: "17.99" xref: DiffFormula: "F 1 H -1" xref: DiffMono: "17.990578" xref: Formula: "C 11 F 1 H 9 N 2 O 1" xref: MassAvg: "204.20" xref: MassMono: "204.069891" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:127" is_a: MOD:00498 ! fluorinated residue is_a: MOD:01068 ! halogenated tryptophan [Term] id: MOD:01227 name: monofluorinated L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to an L-fluorophenylalanine." [DeltaMass:181, OMSSA:46, PubMed:8069568, Unimod:127#F] comment: From Unimod: the citation appears to be correct, but the PMID is not and has been corrected. From DeltaMass: (element abbreviation in formula incorrect, mass incorrect, and aggregate not delta) Average Mass: 149 Formula: C9H8O1N1Fl1 Average Mass Change: 149 References:PE Sciex with no citation [JSG]. synonym: "Fluoro" RELATED PSI-MS-label [] synonym: "fluorophenylalanine replacement of phenylalanine" RELATED Unimod-description [] synonym: "phef" EXACT OMSSA-label [] xref: DiffAvg: "17.99" xref: DiffFormula: "C 0 F 1 H -1 N 0 O 0" xref: DiffMono: "17.990578" xref: Formula: "C 9 F 1 H 8 N 1 O 1" xref: MassAvg: "165.17" xref: MassMono: "165.058992" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:127" is_a: MOD:00498 ! fluorinated residue is_a: MOD:01066 ! halogenated phenylalanine [Term] id: MOD:01228 name: monoiodinated tyrosine def: "A protein modification that effectively substitutes one hydrogen atom of an L-tyrosine residue with one iodine atom." [DeltaMass:0, OMSSA:65, PubMed:1326520, PubMed:15627961, PubMed:2026710, Unimod:129#Y] comment: From DeltaMass: Average Mass: 289 [name misspelled "monoiodated" - JSG]. subset: PSI-MOD-slim synonym: "I1Tyr" EXACT PSI-MOD-label [] synonym: "Iodination" RELATED Unimod-description [] synonym: "iodinationy" EXACT OMSSA-label [] synonym: "Iodo" RELATED PSI-MS-label [] xref: DiffAvg: "125.90" xref: DiffFormula: "H -1 I 1" xref: DiffMono: "125.896648" xref: Formula: "C 9 H 8 I 1 N 1 O 2" xref: MassAvg: "289.07" xref: MassMono: "288.959976" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:129" is_a: MOD:00500 ! monoiodinated residue is_a: MOD:00998 ! iodinated tyrosine [Term] id: MOD:01229 name: L-iodohistidine def: "A protein modification that effectively converts an L-histidine residue to an L-iodohistidine." [PubMed:15627961, PubMed:2026710, Unimod:129#H] synonym: "I1His" EXACT PSI-MOD-label [] synonym: "Iodination" RELATED Unimod-description [] synonym: "Iodo" RELATED PSI-MS-label [] xref: DiffAvg: "125.90" xref: DiffFormula: "C 0 H -1 I 1 N 0 O 0" xref: DiffMono: "125.896648" xref: Formula: "C 6 H 6 I 1 N 3 O 1" xref: MassAvg: "263.04" xref: MassMono: "262.955560" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:129" is_a: MOD:00500 ! monoiodinated residue is_a: MOD:01049 ! halogenated histidine [Term] id: MOD:01230 name: Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, light form - site K def: "modification from Unimod Isotopic label -" [PubMed:15602776, Unimod:365#K] synonym: "Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, light form" RELATED Unimod-description [] synonym: "ICPL" RELATED PSI-MS-label [] xref: DiffAvg: "105.02" xref: DiffFormula: "(12)C 6 H 3 N 1 O 1" xref: DiffMono: "105.021464" xref: Formula: "(12)C 12 H 15 N 3 O 2" xref: MassAvg: "233.12" xref: MassMono: "233.116427" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:365" is_a: MOD:00790 ! Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, light form [Term] id: MOD:01231 name: 3x(13)C labeled N6-propanoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 3x(13)C labeled N6-propanoyl-L-lysine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:12442261, Unimod:59#K] subset: PSI-MOD-slim synonym: "Propionate labeling reagent heavy form (+3amu), N-term & K" RELATED Unimod-description [] synonym: "Propionyl:13C(3)" RELATED PSI-MS-label [] xref: DiffAvg: "59.04" xref: DiffFormula: "(13)C 3 H 4 O 1" xref: DiffMono: "59.036279" xref: Formula: "(12)C 6 (13)C 3 H 16 N 2 O 2" xref: MassAvg: "187.13" xref: MassMono: "187.131242" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:59" relationship: derives_from MOD:01398 ! N6-propanoyl-L-lysine is_a: MOD:01428 ! (13)C isotope tagged reagent [Term] id: MOD:01232 name: 3x(12)C labeled N6-propanoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 3x(12)C labeled N6-propanoyl-L-lysine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:58#K] subset: PSI-MOD-slim synonym: "Propionate labeling reagent light form (N-term & K)" RELATED Unimod-description [] synonym: "Propionyl" RELATED PSI-MS-label [] xref: DiffAvg: "56.03" xref: DiffFormula: "(12)C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "(12)C 9 H 16 N 2 O 2" xref: MassAvg: "184.12" xref: MassMono: "184.121178" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:58" relationship: derives_from MOD:01398 ! N6-propanoyl-L-lysine is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01233 name: 3x(2)H labeled N6-acetyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 3x(2)H labeled N6-acetyl-L-lysine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:56#K] subset: PSI-MOD-slim synonym: "Acetate labeling reagent (N-term & K) (heavy form, +3amu)" RELATED Unimod-description [] synonym: "Acetyl:2H(3)" RELATED PSI-MS-label [] xref: DiffAvg: "45.03" xref: DiffFormula: "C 2 (1)H -1 (2)H 3 O 1" xref: DiffMono: "45.029395" xref: Formula: "C 8 (1)H 11 (2)H 3 N 2 O 2" xref: MassAvg: "173.12" xref: MassMono: "173.124358" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:56" relationship: derives_from MOD:00064 ! N6-acetyl-L-lysine is_a: MOD:00449 ! acetate labeling reagent (N-term) (heavy form, +3amu) [Term] id: MOD:01234 name: (18)O monosubstituted L-serine def: "modification from Unimod Isotopic label - alkaline phosphatase to dephosphorylate" [PubMed:11467524, Unimod:258#S] subset: PSI-MOD-slim synonym: "Label:18O(1)" RELATED PSI-MS-label [] synonym: "O18 Labeling" RELATED Unimod-description [] xref: DiffAvg: "2.00" xref: DiffFormula: "(16)O -1 (18)O 1" xref: DiffMono: "2.004246" xref: Formula: "C 3 H 5 N 1 (16)O 1 (18)O 1" xref: MassAvg: "89.04" xref: MassMono: "89.036275" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:258" is_a: MOD:00581 ! (18)O monosubstituted residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01235 name: (18)O monosubstituted L-threonine def: "modification from Unimod Isotopic label - alkaline phosphatase to dephosphorylate" [PubMed:11467524, PubMed:15549660, Unimod:258#T] subset: PSI-MOD-slim synonym: "Label:18O(1)" RELATED PSI-MS-label [] synonym: "O18 Labeling" RELATED Unimod-description [] xref: DiffAvg: "2.00" xref: DiffFormula: "(16)O -1 (18)O 1" xref: DiffMono: "2.004246" xref: Formula: "C 4 H 7 N 1 (16)O 1 (18)O 1" xref: MassAvg: "103.05" xref: MassMono: "103.051925" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:258" is_a: MOD:00581 ! (18)O monosubstituted residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01236 name: (18)O monosubstituted L-tyrosine def: "modification from Unimod Isotopic label - alkaline phosphatase to dephosphorylate" [PubMed:11467524, PubMed:15549660, Unimod:258#Y] subset: PSI-MOD-slim synonym: "Label:18O(1)" RELATED PSI-MS-label [] synonym: "O18 Labeling" RELATED Unimod-description [] xref: DiffAvg: "2.00" xref: DiffFormula: "(16)O -1 (18)O 1" xref: DiffMono: "2.004246" xref: Formula: "C 9 H 9 N 1 (16)O 1 (18)O 1" xref: MassAvg: "165.07" xref: MassMono: "165.067575" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:258" is_a: MOD:00581 ! (18)O monosubstituted residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01237 name: cysteine 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of an L-cysteine residue with 4-hydroxynonenal." [PubMed:11327326, PubMed:15133838, PubMed:9629898, Unimod:53#C] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "4-hydroxynonenal (HNE)" RELATED Unimod-description [] synonym: "HNE" RELATED PSI-MS-label [] xref: DiffAvg: "156.22" xref: DiffFormula: "C 9 H 16 O 2" xref: DiffMono: "156.115030" xref: Formula: "C 12 H 21 N 1 O 3 S 1" xref: MassAvg: "259.36" xref: MassMono: "259.124215" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:53" is_a: MOD:00446 ! 4-hydroxynonenal adduct [Term] id: MOD:01238 name: lysine 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of an L-lysine residue with 4-hydroxynonenal." [PubMed:11327326, PubMed:15133838, PubMed:9629898, Unimod:53#K] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "4-hydroxynonenal (HNE)" RELATED Unimod-description [] synonym: "HNE" RELATED PSI-MS-label [] xref: DiffAvg: "156.22" xref: DiffFormula: "C 9 H 16 O 2" xref: DiffMono: "156.115030" xref: Formula: "C 15 H 28 N 2 O 3" xref: MassAvg: "284.40" xref: MassMono: "284.209993" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:53" is_a: MOD:00446 ! 4-hydroxynonenal adduct [Term] id: MOD:01239 name: histidine 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of an L-histidine residue with 4-hydroxynonenal." [PubMed:10717661, PubMed:11327326, PubMed:15133838, Unimod:53#H] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "4-hydroxynonenal (HNE)" RELATED Unimod-description [] synonym: "HNE" RELATED PSI-MS-label [] xref: DiffAvg: "156.22" xref: DiffFormula: "C 9 H 16 O 2" xref: DiffMono: "156.115030" xref: Formula: "C 15 H 23 N 3 O 3" xref: MassAvg: "293.37" xref: MassMono: "293.173942" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:53" is_a: MOD:00446 ! 4-hydroxynonenal adduct [Term] id: MOD:01240 name: ubiquitination signature tetrapeptidyl lysine def: "A protein modification that crosslinks the N6-amino of a peptidyl lysine with the carboxyl of leucyl-arginyl-glycyl-glycine, the C-terminal tetrapeptide of ubiquitin." [PubMed:10504701, Unimod:535] synonym: "LeuArgGlyGly" RELATED PSI-MS-label [] synonym: "Ubiquitination" RELATED Unimod-description [] xref: DiffAvg: "383.45" xref: DiffFormula: "C 16 H 29 N 7 O 4" xref: DiffMono: "383.228102" xref: Formula: "C 22 H 41 N 9 O 5" xref: MassAvg: "511.63" xref: MassMono: "511.323065" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:535" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01875 ! N6-acylated L-lysine relationship: derives_from MOD:01148 ! ubiquitinylated lysine [Term] id: MOD:01241 name: 3x(2)H labeled L-aspartic acid 4-methyl ester def: "A protein modification that effectively converts an L-lysine residue to 3x(2)H labeled L-aspartic acid 4-methyl ester." [OMSSA:19, PubMed:12185208, Unimod:298#D] synonym: "deuterated methyl ester" RELATED Unimod-description [] synonym: "Methyl:2H(3)" RELATED PSI-MS-label [] synonym: "trideuteromethyld" EXACT OMSSA-label [] xref: DiffAvg: "17.03" xref: DiffFormula: "C 1 (1)H -1 (2)H 3" xref: DiffMono: "17.034480" xref: Formula: "C 5 (1)H 4 (2)H 3 N 1 O 3" xref: MassAvg: "132.06" xref: MassMono: "132.061423" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:298" is_a: MOD:00617 ! 3x(2)H residue methyl ester is_a: MOD:00904 ! modified L-aspartic acid residue relationship: derives_from MOD:01181 ! L-aspartic acid 4-methyl ester [Term] id: MOD:01242 name: 3x(2)H labeled L-glutamic acid 5-methyl ester def: "A protein modification that effectively converts an L-lysine residue to 3x(2)H labeled L-glutamic acid 5-methyl ester." [OMSSA:20, PubMed:1326520, Unimod:298#E] synonym: "deuterated methyl ester" RELATED Unimod-description [] synonym: "Methyl:2H(3)" RELATED PSI-MS-label [] synonym: "trideuteromethyle" EXACT OMSSA-label [] xref: DiffAvg: "17.03" xref: DiffFormula: "C 1 (1)H -1 (2)H 3" xref: DiffMono: "17.034480" xref: Formula: "C 6 (1)H 6 (2)H 3 N 1 O 3" xref: MassAvg: "146.08" xref: MassMono: "146.077073" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:298" is_a: MOD:00617 ! 3x(2)H residue methyl ester is_a: MOD:00906 ! modified L-glutamic acid residue relationship: derives_from MOD:00081 ! L-glutamic acid 5-methyl ester (Glu) [Term] id: MOD:01243 name: potassium carboxylate C-terminal residue def: "A protein modification that effectively converts a C-terminal residue to the potassium carboxylate salt." [Unimod:530#C-term] synonym: "Cation:K" RELATED PSI-MS-label [] synonym: "Replacement of proton by potassium" RELATED Unimod-description [] xref: DiffAvg: "38.09" xref: DiffFormula: "H -1 K 1" xref: DiffMono: "37.955882" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "C-term" xref: Unimod: "Unimod:530" is_a: MOD:01072 ! monopotassium salt [Term] id: MOD:01244 name: potassium L-glutamate def: "A protein modification that effectively converts an L-glutamioc acid residue to the potassium glutamate salt." [Unimod:530#E] synonym: "Cation:K" RELATED PSI-MS-label [] synonym: "Replacement of proton by potassium" RELATED Unimod-description [] xref: DiffAvg: "38.09" xref: DiffFormula: "H -1 K 1" xref: DiffMono: "37.955882" xref: Formula: "C 5 H 6 K 1 N 1 O 3" xref: MassAvg: "167.21" xref: MassMono: "166.998475" xref: Origin: "E" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:530" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01072 ! monopotassium salt [Term] id: MOD:01245 name: potassium L-aspartate def: "A protein modification that effectively converts an L-aspartic acid residue to the potassium aspartate salt." [Unimod:530#D] synonym: "Cation:K" RELATED PSI-MS-label [] synonym: "Replacement of proton by potassium" RELATED Unimod-description [] xref: DiffAvg: "38.09" xref: DiffFormula: "H -1 K 1" xref: DiffMono: "37.955882" xref: Formula: "C 4 H 4 K 1 N 1 O 3" xref: MassAvg: "153.18" xref: MassMono: "152.982825" xref: Origin: "D" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:530" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01072 ! monopotassium salt [Term] id: MOD:01246 name: fucosylated -site S def: "OBSOLETE because redundant and identical to MOD:00812 after formula correction. Remap to MOD:00812." [PubMed:11344537, PubMed:15189151, PubMed:3311742, PubMed:3578767, Unimod:295#S] synonym: "dHex" RELATED PSI-MS-label [] synonym: "Fucose" RELATED Unimod-description [] xref: DiffAvg: "147.15" xref: DiffFormula: "C 6 H 11 O 4" xref: DiffMono: "147.065734" xref: Formula: "C 9 H 16 N 1 O 6" xref: MassAvg: "234.23" xref: MassMono: "234.097762" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00812" xref: Unimod: "Unimod:295" is_obsolete: true [Term] id: MOD:01247 name: fucosylated -site T def: "OBSOLETE because redundant and identical to MOD:00813 after formula correction. Remap to MOD:00813." [PubMed:11344537, PubMed:11857757, PubMed:15189151, Unimod:295#T] synonym: "dHex" RELATED PSI-MS-label [] synonym: "Fucose" RELATED Unimod-description [] xref: DiffAvg: "147.15" xref: DiffFormula: "C 6 H 11 O 4" xref: DiffMono: "147.065734" xref: Formula: "C 10 H 18 N 1 O 6" xref: MassAvg: "248.26" xref: MassMono: "248.113412" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00813" xref: Unimod: "Unimod:295" is_obsolete: true [Term] id: MOD:01248 name: iodouridine monophosphate derivatized tyrosine def: "A protein modification that is produced by reaction of iodouridine monophosphate with an L-tyrosine residue to form an ether linkage." [PubMed:11112526, PubMed:11567090, PubMed:6540775, Unimod:292#Y] comment: This has an ether linkage and not a phosphodiester linkage with UMP. synonym: "Cross-link of (Iodo)-uracil MP with W,F,Y" RELATED Unimod-description [] synonym: "IodoU-AMP" RELATED PSI-MS-label [] xref: DiffAvg: "322.17" xref: DiffFormula: "C 9 H 11 N 2 O 9 P 1" xref: DiffMono: "322.020217" xref: Formula: "C 18 H 20 N 3 O 11 P 1" xref: MassAvg: "485.34" xref: MassMono: "485.083545" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:292" is_a: MOD:00611 ! iodouridine monophosphate derivatized residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01249 name: iodouridine monophosphate derivatized tryptophan def: "A protein modification that is produced by reaction of iodouridine monophosphate with an L-tryptophan residue." [PubMed:11112526, PubMed:11567090, PubMed:6540775, Unimod:292#W] comment: This has a carbon-nitrogen linkage and not a phosphodiester linkage with UMP. synonym: "Cross-link of (Iodo)-uracil MP with W,F,Y" RELATED Unimod-description [] synonym: "IodoU-AMP" RELATED PSI-MS-label [] xref: DiffAvg: "322.17" xref: DiffFormula: "C 9 H 11 N 2 O 9 P 1" xref: DiffMono: "322.020217" xref: Formula: "C 20 H 21 N 4 O 10 P 1" xref: MassAvg: "508.38" xref: MassMono: "508.099530" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:292" is_a: MOD:00611 ! iodouridine monophosphate derivatized residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01250 name: iodouridine monophosphate derivatized phenylalanine def: "A protein modification that is produced by reaction of iodouridine monophosphate with an L-phenylalanine residue." [PubMed:11112526, PubMed:11567090, PubMed:6540775, Unimod:292#F] comment: This has a carbon-carbon linkage and not a phosphodiester linkage with UMP. synonym: "Cross-link of (Iodo)-uracil MP with W,F,Y" RELATED Unimod-description [] synonym: "IodoU-AMP" RELATED PSI-MS-label [] xref: DiffAvg: "322.17" xref: DiffFormula: "C 9 H 11 N 2 O 9 P 1" xref: DiffMono: "322.020217" xref: Formula: "C 18 H 20 N 3 O 10 P 1" xref: MassAvg: "469.34" xref: MassMono: "469.088630" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:292" is_a: MOD:00611 ! iodouridine monophosphate derivatized residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:01251 name: N6-[3-(carboxamidomethylthio)propanoyl]lysine def: "A protein modification that effectively converts an L-lysine residue to N6-[3-(carboxamidomethylthio)propanoyl]lysine." [PubMed:15121203, Unimod:293#K] synonym: "3-(carbamidomethylthio)propanoyl" RELATED Unimod-description [] synonym: "CAMthiopropanoyl" RELATED PSI-MS-label [] xref: DiffAvg: "145.18" xref: DiffFormula: "C 5 H 7 N 1 O 2 S 1" xref: DiffMono: "145.019749" xref: Formula: "C 11 H 19 N 3 O 3 S 1" xref: MassAvg: "273.35" xref: MassMono: "273.114712" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:293" is_a: MOD:00612 ! 3-(carboxamidomethylthio)propanoylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01252 name: 5-hydro-5-methylimidazol-4-one, methylglyoxal arginine adduct (+54 amu) def: "OBSOLETE because redundant and identical to MOD:00933. Remap to MOD:00933." [PubMed:9448752, Unimod:319#R] synonym: "Delta:H(2)C(3)O(1)" RELATED PSI-MS-label [] synonym: "MDA adduct +54" RELATED Unimod-description [] xref: DiffAvg: "54.05" xref: DiffFormula: "C 3 H 2 O 1" xref: DiffMono: "54.010565" xref: Formula: "C 9 H 14 N 4 O 2" xref: MassAvg: "210.24" xref: MassMono: "210.111676" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00933" xref: Unimod: "Unimod:319" is_obsolete: true [Term] id: MOD:01253 name: malondialdehyde lysine adduct (+54 amu) def: "modification from Unimod Chemical derivative - Malondialdehyde (MDA) adduct" [Unimod:319#K] synonym: "Delta:H(2)C(3)O(1)" RELATED PSI-MS-label [] synonym: "MDA adduct +54" RELATED Unimod-description [] xref: DiffAvg: "54.05" xref: DiffFormula: "C 3 H 2 O 1" xref: DiffMono: "54.010565" xref: Formula: "C 9 H 14 N 2 O 2" xref: MassAvg: "182.22" xref: MassMono: "182.105528" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:319" is_a: MOD:00630 ! C3-H2-O adduct (+54 amu) of malondialdehyde with lysine or methylglyoxal with arginine. is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01254 name: 4x(2)H labeled dimethylated L-lysine def: "A protein modification that effectively converts an L-lysine residue to 4x(2)H labeled dimethylated L-lysine." [OMSSA:189, PubMed:14670044, Unimod:199#K] subset: PSI-MOD-slim synonym: "DiMethyl-CHD2" RELATED Unimod-description [] synonym: "Dimethyl:2H(4)" RELATED PSI-MS-label [] synonym: "mod189" EXACT OMSSA-label [] xref: DiffAvg: "32.06" xref: DiffFormula: "C 2 (2)H 4" xref: DiffMono: "32.056407" xref: Formula: "C 8 H 12 (2)H 4 N 2 O 1" xref: MassAvg: "160.15" xref: MassMono: "160.151370" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:199" is_a: MOD:00552 ! 4x(2)H labeled dimethylated residue is_a: MOD:00912 ! modified L-lysine residue relationship: derives_from MOD:00084 ! N6,N6-dimethyl-L-lysine [Term] id: MOD:01255 name: S-(2-sulfanylethyl)cysteine (Ser) def: "A protein modification that effectively converts an L-serine residue to S-(2-sulfanylethyl)cysteine." [PubMed:11507762, Unimod:200#S] synonym: "EDT" RELATED Unimod-description [] synonym: "Ethanedithiol" RELATED PSI-MS-label [] synonym: "S-(2-mercaptoethyl)cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "76.18" xref: DiffFormula: "C 2 H 4 O -1 S 2" xref: DiffMono: "75.980528" xref: Formula: "C 5 H 9 N 1 O 1 S 2" xref: MassAvg: "163.25" xref: MassMono: "163.012556" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:200" is_a: MOD:00553 ! 1,2-ethanedithiol modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01256 name: 3-methyl-S-(2-sulfanylethyl)cysteine (Thr) def: "A protein modification that effectively converts an L-threonine residue to 3-methyl-S-(2-sulfanylethyl)cysteine." [PubMed:11507762, Unimod:200#T] synonym: "beta-methyl-S-(2-mercaptoethyl)cysteine" EXACT PSI-MOD-alternate [] synonym: "EDT" RELATED Unimod-description [] synonym: "Ethanedithiol" RELATED PSI-MS-label [] xref: DiffAvg: "76.18" xref: DiffFormula: "C 2 H 4 O -1 S 2" xref: DiffMono: "75.980528" xref: Formula: "C 6 H 11 N 1 O 1 S 2" xref: MassAvg: "177.28" xref: MassMono: "177.028206" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:200" is_a: MOD:00553 ! 1,2-ethanedithiol modified residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01257 name: 6-aminoquinolyl-N-hydroxysuccinimidyl carbamate - site K def: "modification from Unimod Chemical derivative -" [PubMed:12716131, PubMed:14997490, Unimod:194#K] synonym: "6-aminoquinolyl-N-hydroxysuccinimidyl carbamate" RELATED Unimod-description [] synonym: "AccQTag" RELATED PSI-MS-label [] xref: DiffAvg: "170.17" xref: DiffFormula: "C 10 H 6 N 2 O 1" xref: DiffMono: "170.048013" xref: Formula: "C 16 H 18 N 4 O 2" xref: MassAvg: "298.35" xref: MassMono: "298.142976" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:194" is_a: MOD:00547 ! 6-aminoquinolyl-N-hydroxysuccinimidyl carbamate [Term] id: MOD:01258 name: N-methylmaleimide modified L-cysteine def: "modification from Unimod Chemical derivative -" [PubMed:9448752, Unimod:314#C] synonym: "Nmethylmaleimide" RELATED PSI-MS-label [] synonym: "Nmethylmaleimide" RELATED Unimod-description [] xref: DiffAvg: "111.10" xref: DiffFormula: "C 5 H 5 N 1 O 2" xref: DiffMono: "111.032028" xref: Formula: "C 8 H 10 N 2 O 3 S 1" xref: MassAvg: "214.24" xref: MassMono: "214.041213" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:314" is_a: MOD:00625 ! N-methylmaleimide derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01259 name: N-methylmaleimide modified L-lysine def: "modification from Unimod Chemical derivative -" [PubMed:9448752, Unimod:314#K] synonym: "Nmethylmaleimide" RELATED PSI-MS-label [] synonym: "Nmethylmaleimide" RELATED Unimod-description [] xref: DiffAvg: "111.10" xref: DiffFormula: "C 5 H 5 N 1 O 2" xref: DiffMono: "111.032028" xref: Formula: "C 11 H 17 N 3 O 3" xref: MassAvg: "239.27" xref: MassMono: "239.126991" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:314" is_a: MOD:00625 ! N-methylmaleimide derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01260 name: nucleophilic addtion to cytopiloyne - site Y def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:270#Y] synonym: "Cytopiloyne" RELATED PSI-MS-label [] synonym: "nucleophilic addtion to cytopiloyne" RELATED Unimod-description [] xref: DiffAvg: "362.38" xref: DiffFormula: "C 19 H 22 O 7" xref: DiffMono: "362.136553" xref: Formula: "C 28 H 31 N 1 O 9" xref: MassAvg: "525.55" xref: MassMono: "525.199882" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:270" is_obsolete: true [Term] id: MOD:01261 name: nucleophilic addtion to cytopiloyne - site S def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:270#C] synonym: "Cytopiloyne" RELATED PSI-MS-label [] synonym: "nucleophilic addtion to cytopiloyne" RELATED Unimod-description [] xref: DiffAvg: "362.38" xref: DiffFormula: "C 19 H 22 O 7" xref: DiffMono: "362.136553" xref: Formula: "C 22 H 27 N 1 O 9" xref: MassAvg: "449.46" xref: MassMono: "449.168581" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:270" is_obsolete: true [Term] id: MOD:01262 name: nucleophilic addition to cytopiloyne - site R def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:12590383, PubMed:15549660, Unimod:270#R] synonym: "Cytopiloyne" RELATED PSI-MS-label [] synonym: "nucleophilic addtion to cytopiloyne" RELATED Unimod-description [] xref: DiffAvg: "362.38" xref: DiffFormula: "C 19 H 22 O 7" xref: DiffMono: "362.136553" xref: Formula: "C 25 H 34 N 4 O 8" xref: MassAvg: "518.57" xref: MassMono: "518.237664" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:270" is_obsolete: true [Term] id: MOD:01263 name: nucleophilic addtion to cytopiloyne - site K def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:270#K] synonym: "Cytopiloyne" RELATED PSI-MS-label [] synonym: "nucleophilic addtion to cytopiloyne" RELATED Unimod-description [] xref: DiffAvg: "362.38" xref: DiffFormula: "C 19 H 22 O 7" xref: DiffMono: "362.136553" xref: Formula: "C 25 H 34 N 2 O 8" xref: MassAvg: "490.55" xref: MassMono: "490.231516" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:270" is_obsolete: true [Term] id: MOD:01264 name: nucleophilic addtion to cytopiloyne - site C def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:270#C] synonym: "Cytopiloyne" RELATED PSI-MS-label [] synonym: "nucleophilic addtion to cytopiloyne" RELATED Unimod-description [] xref: DiffAvg: "362.38" xref: DiffFormula: "C 19 H 22 O 7" xref: DiffMono: "362.136553" xref: Formula: "C 22 H 27 N 1 O 8 S 1" xref: MassAvg: "465.52" xref: MassMono: "465.145738" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:270" is_obsolete: true [Term] id: MOD:01265 name: nucleophilic addtion to cytopiloyne - site P def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:270#P] synonym: "Cytopiloyne" RELATED PSI-MS-label [] synonym: "nucleophilic addtion to cytopiloyne" RELATED Unimod-description [] xref: DiffAvg: "362.38" xref: DiffFormula: "C 19 H 22 O 7" xref: DiffMono: "362.136553" xref: Formula: "C 24 H 29 N 1 O 8" xref: MassAvg: "459.50" xref: MassMono: "459.189317" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:270" is_obsolete: true [Term] id: MOD:01266 name: nucleophilic addition to cytopiloyne+H2O - site C def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:271#C] synonym: "Cytopiloyne+water" RELATED PSI-MS-label [] synonym: "nucleophilic addition to cytopiloyne+H2O" RELATED Unimod-description [] xref: DiffAvg: "380.39" xref: DiffFormula: "C 19 H 24 O 8" xref: DiffMono: "380.147118" xref: Formula: "C 22 H 29 N 1 O 9 S 1" xref: MassAvg: "483.53" xref: MassMono: "483.156303" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:271" is_obsolete: true [Term] id: MOD:01267 name: nucleophilic addition to cytopiloyne+H2O - site K def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:11746907, PubMed:15549660, Unimod:271#K] synonym: "Cytopiloyne+water" RELATED PSI-MS-label [] synonym: "nucleophilic addition to cytopiloyne+H2O" RELATED Unimod-description [] xref: DiffAvg: "380.39" xref: DiffFormula: "C 19 H 24 O 8" xref: DiffMono: "380.147118" xref: Formula: "C 25 H 36 N 2 O 9" xref: MassAvg: "508.57" xref: MassMono: "508.242081" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:271" is_obsolete: true [Term] id: MOD:01268 name: nucleophilic addition to cytopiloyne+H2O - site T def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:271#T] synonym: "Cytopiloyne+water" RELATED PSI-MS-label [] synonym: "nucleophilic addition to cytopiloyne+H2O" RELATED Unimod-description [] xref: DiffAvg: "380.39" xref: DiffFormula: "C 19 H 24 O 8" xref: DiffMono: "380.147118" xref: Formula: "C 23 H 31 N 1 O 10" xref: MassAvg: "481.50" xref: MassMono: "481.194796" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:271" is_obsolete: true [Term] id: MOD:01269 name: nucleophilic addition to cytopiloyne+H2O - site R def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:271#R] synonym: "Cytopiloyne+water" RELATED PSI-MS-label [] synonym: "nucleophilic addition to cytopiloyne+H2O" RELATED Unimod-description [] xref: DiffAvg: "380.39" xref: DiffFormula: "C 19 H 24 O 8" xref: DiffMono: "380.147118" xref: Formula: "C 25 H 36 N 4 O 9" xref: MassAvg: "536.58" xref: MassMono: "536.248229" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:271" is_obsolete: true [Term] id: MOD:01270 name: nucleophilic addition to cytopiloyne+H2O - site S def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:14670044, PubMed:15549660, Unimod:271#S] synonym: "Cytopiloyne+water" RELATED PSI-MS-label [] synonym: "nucleophilic addition to cytopiloyne+H2O" RELATED Unimod-description [] xref: DiffAvg: "380.39" xref: DiffFormula: "C 19 H 24 O 8" xref: DiffMono: "380.147118" xref: Formula: "C 22 H 29 N 1 O 10" xref: MassAvg: "467.47" xref: MassMono: "467.179146" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:271" is_obsolete: true [Term] id: MOD:01271 name: nucleophilic addition to cytopiloyne+H2O - site Y def: "OBSOLETE because there is no evidence in the literature of covalent modification of polypeptides with cytopiloyne or cytopiloyne+H2O. Modifications could potentially happen, but are not experimentally verified. [PMT] modification from Unimod Chemical derivative -" [PubMed:15549660, Unimod:271#Y] synonym: "Cytopiloyne+water" RELATED PSI-MS-label [] synonym: "nucleophilic addition to cytopiloyne+H2O" RELATED Unimod-description [] xref: DiffAvg: "380.39" xref: DiffFormula: "C 19 H 24 O 8" xref: DiffMono: "380.147118" xref: Formula: "C 28 H 33 N 1 O 10" xref: MassAvg: "543.57" xref: MassMono: "543.210446" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:271" is_obsolete: true [Term] id: MOD:01272 name: iminobiotinylation - site K def: "modification from Unimod Chemical derivative -" [PubMed:9750125, Unimod:89#K] synonym: "Iminobiotin" RELATED PSI-MS-label [] synonym: "Iminobiotinylation" RELATED Unimod-description [] xref: DiffAvg: "225.31" xref: DiffFormula: "C 10 H 15 N 3 O 1 S 1" xref: DiffMono: "225.093583" xref: Formula: "C 16 H 27 N 5 O 2 S 1" xref: MassAvg: "353.49" xref: MassMono: "353.188546" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:89" is_a: MOD:00467 ! iminobiotinyl modified residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01273 name: O-[4-(2-aminoethyl)benzenesulfonyl] serine def: "A protein modification that is produced by formation of an adduct with 4-(2-aminoethyl)benzenesulfonyl fluoride, AEBS, and an L-serine residue." [PubMed:15283597, PubMed:8597590, Unimod:276#S] synonym: "AEBS" RELATED PSI-MS-label [] synonym: "Aminoethylbenzenesulfonylation" RELATED Unimod-description [] xref: DiffAvg: "183.23" xref: DiffFormula: "C 8 H 9 N 1 O 2 S 1" xref: DiffMono: "183.035400" xref: Formula: "C 11 H 14 N 2 O 4 S 1" xref: MassAvg: "270.30" xref: MassMono: "270.067428" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:276" is_a: MOD:00596 ! 4-(2-aminoethyl)benzenesulfonyl fluoride derivatized residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01274 name: N'-[4-(2-aminoethyl)benzenesulfonyl] derivatized histidine def: "A protein modification that is produced by formation of an adduct with 4-(2-aminoethyl)benzenesulfonyl fluoride, AEBS, and an L-histidine residue." [PubMed:8597590, Unimod:276#H] synonym: "AEBS" RELATED PSI-MS-label [] synonym: "Aminoethylbenzenesulfonylation" RELATED Unimod-description [] xref: DiffAvg: "183.23" xref: DiffFormula: "C 8 H 9 N 1 O 2 S 1" xref: DiffMono: "183.035400" xref: Formula: "C 14 H 16 N 4 O 3 S 1" xref: MassAvg: "320.37" xref: MassMono: "320.094311" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:276" is_a: MOD:00596 ! 4-(2-aminoethyl)benzenesulfonyl fluoride derivatized residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:01275 name: N6-[4-(2-aminoethyl)benzenesulfonyl]lysine def: "A protein modification that is produced by formation of an adduct with 4-(2-aminoethyl)benzenesulfonyl fluoride, AEBS, and an L-lysine residue." [PubMed:8597590, Unimod:276#K] synonym: "AEBS" RELATED PSI-MS-label [] synonym: "Aminoethylbenzenesulfonylation" RELATED Unimod-description [] xref: DiffAvg: "183.23" xref: DiffFormula: "C 8 H 9 N 1 O 2 S 1" xref: DiffMono: "183.035400" xref: Formula: "C 14 H 21 N 3 O 3 S 1" xref: MassAvg: "311.40" xref: MassMono: "311.130363" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:276" is_a: MOD:00596 ! 4-(2-aminoethyl)benzenesulfonyl fluoride derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01276 name: O4'-[4-(2-aminoethyl)benzenesulfonyl]tyrosine def: "A protein modification that is produced by formation of an adduct with 4-(2-aminoethyl)benzenesulfonyl fluoride, AEBS, and an L-tyrosine residue." [PubMed:10906242, PubMed:8597590, Unimod:276#Y] synonym: "AEBS" RELATED PSI-MS-label [] synonym: "Aminoethylbenzenesulfonylation" RELATED Unimod-description [] xref: DiffAvg: "183.23" xref: DiffFormula: "C 8 H 9 N 1 O 2 S 1" xref: DiffMono: "183.035400" xref: Formula: "C 17 H 18 N 2 O 4 S 1" xref: MassAvg: "346.40" xref: MassMono: "346.098728" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:276" is_a: MOD:00596 ! 4-(2-aminoethyl)benzenesulfonyl fluoride derivatized residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01277 name: crotonylated L-cysteine def: "modification from Unimod Other -" [PubMed:11283024, Unimod:253#C] synonym: "Crotonaldehyde" RELATED PSI-MS-label [] synonym: "Crotonaldehyde" RELATED Unimod-description [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 O 1" xref: DiffMono: "70.041865" xref: Formula: "C 7 H 11 N 1 O 2 S 1" xref: MassAvg: "173.23" xref: MassMono: "173.051050" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:253" is_a: MOD:00576 ! crotonylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01278 name: crotonylated L-lysine def: "modification from Unimod Other -" [PubMed:11283024, Unimod:253#K] synonym: "Crotonaldehyde" RELATED PSI-MS-label [] synonym: "Crotonaldehyde" RELATED Unimod-description [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 O 1" xref: DiffMono: "70.041865" xref: Formula: "C 10 H 18 N 2 O 2" xref: MassAvg: "198.27" xref: MassMono: "198.136828" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:253" is_a: MOD:00576 ! crotonylated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01279 name: crotonylated L-histidine def: "modification from Unimod Other -" [PubMed:11283024, PubMed:1443554, Unimod:253#H] synonym: "Crotonaldehyde" RELATED PSI-MS-label [] synonym: "Crotonaldehyde" RELATED Unimod-description [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 O 1" xref: DiffMono: "70.041865" xref: Formula: "C 10 H 13 N 3 O 2" xref: MassAvg: "207.23" xref: MassMono: "207.100777" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:253" is_a: MOD:00576 ! crotonylated residue is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:01280 name: EDT-iodo-PEO-biotin - site T def: "modification from Unimod Chemical derivative -" [PubMed:11857757, PubMed:12175151, Unimod:118#T] synonym: "EDT-iodo-PEO-biotin" RELATED Unimod-description [] synonym: "EDT-iodoacetyl-PEO-biotin" RELATED PSI-MS-label [] xref: DiffAvg: "490.70" xref: DiffFormula: "C 20 H 34 N 4 O 4 S 3" xref: DiffMono: "490.174219" xref: Formula: "C 24 H 41 N 5 O 6 S 3" xref: MassAvg: "591.80" xref: MassMono: "591.221897" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:118" is_a: MOD:00490 ! EDT-iodo-PEO-biotin is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01281 name: EDT-iodo-PEO-biotin - site S def: "modification from Unimod Chemical derivative -" [PubMed:16335955, Unimod:118#S] synonym: "EDT-iodo-PEO-biotin" RELATED Unimod-description [] synonym: "EDT-iodoacetyl-PEO-biotin" RELATED PSI-MS-label [] xref: DiffAvg: "490.70" xref: DiffFormula: "C 20 H 34 N 4 O 4 S 3" xref: DiffMono: "490.174219" xref: Formula: "C 23 H 39 N 5 O 6 S 3" xref: MassAvg: "577.77" xref: MassMono: "577.206247" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:118" is_a: MOD:00490 ! EDT-iodo-PEO-biotin is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01282 name: acrolein addition +56 - site H def: "OBSOLETE because this modification is not supported by the linked literature [PMT]" [PubMed:10825247, PubMed:15541752, Unimod:206#H] synonym: "Acrolein addition +56" RELATED Unimod-description [] synonym: "Delta:H(4)C(3)O(1)" RELATED PSI-MS-label [] xref: DiffAvg: "56.06" xref: DiffFormula: "C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "C 9 H 11 N 3 O 2" xref: MassAvg: "193.21" xref: MassMono: "193.085127" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:206" is_obsolete: true [Term] id: MOD:01283 name: acrolein addition +56 - site K def: "OBSOLETE because this modification is not supported by the linked literature [PMT]" [PubMed:10825247, PubMed:15541752, Unimod:206#K] synonym: "Acrolein addition +56" RELATED Unimod-description [] synonym: "Delta:H(4)C(3)O(1)" RELATED PSI-MS-label [] xref: DiffAvg: "56.06" xref: DiffFormula: "C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "C 9 H 16 N 2 O 2" xref: MassAvg: "184.24" xref: MassMono: "184.121178" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:206" is_obsolete: true [Term] id: MOD:01284 name: acrolein addition +56 - site C def: "OBSOLETE because this modification is not supported by the linked literature [PMT]" [PubMed:10825247, PubMed:15541752, PubMed:9254591, Unimod:206#C] synonym: "Acrolein addition +56" RELATED Unimod-description [] synonym: "Delta:H(4)C(3)O(1)" RELATED PSI-MS-label [] xref: DiffAvg: "56.06" xref: DiffFormula: "C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "C 6 H 9 N 1 O 2 S 1" xref: MassAvg: "159.20" xref: MassMono: "159.035400" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:206" is_obsolete: true [Term] id: MOD:01285 name: 6x(13)C,1x(15)N labeled L-leucine def: "A protein modification that effectively converts an L-leucine residue to 6x(13)C,1x(15)N isotope labeled L-leucine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:695#L] synonym: "13C(6) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "7.02" xref: DiffFormula: "(12)C -6 (13)C 6 (14)N -1 (15)N 1" xref: DiffMono: "7.017164" xref: Formula: "(13)C 6 H 11 (15)N 1 O 1" xref: MassAvg: "120.10" xref: MassMono: "120.101228" xref: Origin: "L" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:695" is_a: MOD:00911 ! modified L-leucine residue is_a: MOD:01370 ! 6x(13)C,1x(15)N labeled residue [Term] id: MOD:01286 name: 6x(13)C,1x(15)N labeled L-isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to 6x(13)C,1x(15)N isotope labeled L-isoleucine." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:695#I] synonym: "13C(6) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "7.02" xref: DiffFormula: "(12)C -6 (13)C 6 (14)N -1 (15)N 1" xref: DiffMono: "7.017164" xref: Formula: "(13)C 6 H 11 (15)N 1 O 1" xref: MassAvg: "120.10" xref: MassMono: "120.101228" xref: Origin: "I" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:695" is_a: MOD:00910 ! modified L-isoleucine residue is_a: MOD:01370 ! 6x(13)C,1x(15)N labeled residue [Term] id: MOD:01287 name: Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, heavy form - site K def: "modification from Unimod Isotopic label -" [PubMed:11857757, PubMed:15602776, Unimod:364#K] synonym: "Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, heavy form" RELATED Unimod-description [] synonym: "ICPL:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "111.04" xref: DiffFormula: "(13)C 6 H 3 N 1 O 1" xref: DiffMono: "111.041593" xref: Formula: "C 6 (13)C 6 H 15 N 3 O 2" xref: MassAvg: "239.14" xref: MassMono: "239.136556" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:364" is_a: MOD:00789 ! Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, heavy form is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01288 name: acetaldehyde +28 - site H def: "OBSOLETE because this is not supported by the literature [PMT]" [Unimod:255#H] synonym: "Acetaldehyde +28" RELATED Unimod-description [] synonym: "Delta:H(4)C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 11 N 3 O 1" xref: MassAvg: "165.20" xref: MassMono: "165.090212" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:255" is_obsolete: true [Term] id: MOD:01289 name: acetaldehyde +28 - site K def: "OBSOLETE because this is not supported by the literature [PMT]" [Unimod:255#K] synonym: "Acetaldehyde +28" RELATED Unimod-description [] synonym: "Delta:H(4)C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 16 N 2 O 1" xref: MassAvg: "156.23" xref: MassMono: "156.126263" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:255" is_obsolete: true [Term] id: MOD:01290 name: dihydroxylated residue - site F def: "OBSOLETE because redundant and identical to MOD:00465. Remap to MOD:00465." [PubMed:11857757, PubMed:12175151, PubMed:12686488, PubMed:9252331, Unimod:425] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "O 2" xref: DiffMono: "31.989829" xref: Formula: "C 9 H 9 N 1 O 3" xref: MassAvg: "179.17" xref: MassMono: "179.058243" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:425" xref: Remap: "MOD:00465" is_obsolete: true [Term] id: MOD:01291 name: dihydroxylated residue - site W def: "OBSOLETE because redundant and identical to MOD:00464. Remap to MOD:00464." [PubMed:12643539, PubMed:12686488, PubMed:6273432, PubMed:9252331, Unimod:425] synonym: "dihydroxy" RELATED Unimod-description [] synonym: "Dioxidation" RELATED PSI-MS-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "O 2" xref: DiffMono: "31.989829" xref: Formula: "C 11 H 10 N 2 O 3" xref: MassAvg: "218.21" xref: MassMono: "218.069142" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00464" xref: Unimod: "Unimod:425" is_obsolete: true [Term] id: MOD:01292 name: dimethylation of proline residue def: "OBSOLETE because redundant and identical to MOD:00075. Map to MOD:00075." [Unimod:529] synonym: "Delta:H(5)C(2)" RELATED PSI-MS-label [] synonym: "Dimethylation of proline residue" RELATED Unimod-description [] xref: DiffAvg: "29.06" xref: DiffFormula: "C 2 H 5" xref: DiffMono: "29.039125" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00075" xref: Unimod: "Unimod:529" is_obsolete: true [Term] id: MOD:01293 name: 1x(18)O labeled deamidated L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to L-aspartic acid with one (18)O." [OMSSA:139, PubMed:8382902, Unimod:366#N] subset: PSI-MOD-slim synonym: "Deamidated:18O(1)" RELATED PSI-MS-label [] synonym: "Deamidation in presence of O18" RELATED Unimod-description [] synonym: "oxy18" EXACT OMSSA-label [] xref: DiffAvg: "2.99" xref: DiffFormula: "H -1 N -1 (18)O 1" xref: DiffMono: "2.988262" xref: Formula: "C 4 H 5 N 1 (16)O 2 (18)O 1" xref: MassAvg: "117.03" xref: MassMono: "117.031189" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:366" is_a: MOD:00852 ! 1x(18)O labeled deamidated residue relationship: derives_from MOD:00684 ! deamidated L-asparagine [Term] id: MOD:01294 name: deamidation in presence of O18 -site Q def: "OBSOLETE identical and redundant with MOD:00791. Remap to MOD:00791." [PubMed:8382902] synonym: "Deamidated:18O(1)" RELATED PSI-MS-label [] synonym: "Deamidation in presence of O18" RELATED Unimod-description [] xref: DiffAvg: "2.99" xref: DiffFormula: "H -1 N -1 (18)O 1" xref: DiffMono: "2.988262" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Q" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00791" is_obsolete: true [Term] id: MOD:01295 name: monosodium L-aspartate def: "A protein modification that effectively converts an L-aspartic acid residue to monosodium L-aspartate." [PubMed:12216740, Unimod:30#D] subset: PSI-MOD-slim synonym: "Cation:Na" RELATED PSI-MS-label [] synonym: "Na1Asp" EXACT PSI-MOD-label [] synonym: "Sodium adduct" RELATED Unimod-description [] xref: DiffAvg: "21.98" xref: DiffFormula: "H -1 Na 1" xref: DiffMono: "21.981944" xref: Formula: "C 4 H 4 N 1 Na 1 O 3" xref: MassAvg: "137.07" xref: MassMono: "137.008887" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:30" is_a: MOD:00423 ! monosodium salt is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:01296 name: monosodium L-glutamate def: "A protein modification that effectively converts an L-glutamic acid residue to monosodium L-glutamate." [PubMed:12216740, Unimod:30#E] subset: PSI-MOD-slim synonym: "Cation:Na" RELATED PSI-MS-label [] synonym: "MSG" EXACT PSI-MOD-alternate [] synonym: "Na1Glu" EXACT PSI-MOD-label [] synonym: "Sodium adduct" RELATED Unimod-description [] xref: DiffAvg: "21.98" xref: DiffFormula: "H -1 Na 1" xref: DiffMono: "21.981944" xref: Formula: "C 5 H 6 N 1 Na 1 O 3" xref: MassAvg: "151.10" xref: MassMono: "151.024537" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:30" is_a: MOD:00423 ! monosodium salt is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01297 name: 5x(13)C labeled L-proline def: "A protein modification that effectively converts an L-proline residue to 5x(13)C labeled L-proline." [PubMed:12716131, Unimod:772#P] comment: In PubMed:12716131, fully (13)C labeled proline apparently resulted from the catabolic conversion of (13)C labeled L-arginine during SILAC. synonym: "13C(5) Silac label" RELATED Unimod-description [] synonym: "Label:13C(5)" RELATED PSI-MS-label [] xref: DiffAvg: "5.02" xref: DiffFormula: "(12)C -5 (13)C 5" xref: DiffMono: "5.016774" xref: Formula: "(13)C 5 H 7 N 1 O 1" xref: MassAvg: "102.07" xref: MassMono: "102.069538" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:772" is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01832 ! 5x(13)C-labeled residue [Term] id: MOD:01298 name: reduced cysteine 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of an L-cysteine residue with 4-hydroxynonenal artificially reduced by a reagent such as NaBH4." [PubMed:11910026, PubMed:15133838, Unimod:335#C] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "HNE+Delta:H(2)" RELATED PSI-MS-label [] synonym: "reduced 4-Hydroxynonenal" RELATED Unimod-description [] xref: DiffAvg: "158.24" xref: DiffFormula: "C 9 H 18 O 2" xref: DiffMono: "158.130680" xref: Formula: "C 12 H 23 N 1 O 3 S 1" xref: MassAvg: "261.38" xref: MassMono: "261.139865" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:335" is_a: MOD:00642 ! reduced 4-hydroxynonenal adduct is_a: MOD:00905 ! modified L-cysteine residue relationship: derives_from MOD:01237 ! cysteine 4-hydroxynonenal adduct [Term] id: MOD:01299 name: reduced lysine 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of an L-histidine residue with 4-hydroxynonenal artificially reduced by a reagent such as NaBH4." [PubMed:11910026, PubMed:12148805, PubMed:15133838, Unimod:335#K] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "HNE+Delta:H(2)" RELATED PSI-MS-label [] synonym: "reduced 4-Hydroxynonenal" RELATED Unimod-description [] xref: DiffAvg: "158.24" xref: DiffFormula: "C 9 H 18 O 2" xref: DiffMono: "158.130680" xref: Formula: "C 15 H 30 N 2 O 3" xref: MassAvg: "286.42" xref: MassMono: "286.225643" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:335" is_a: MOD:00642 ! reduced 4-hydroxynonenal adduct is_a: MOD:00912 ! modified L-lysine residue relationship: derives_from MOD:01238 ! lysine 4-hydroxynonenal adduct [Term] id: MOD:01300 name: reduced histidine 4-hydroxynonenal adduct def: "A protein modification produced by formation of an adduct of an L-histidine residue with 4-hydroxynonenal artificially reduced by a reagent such as NaBH4." [PubMed:11910026, PubMed:12148805, PubMed:15133838, Unimod:335#H] comment: 4-hydroxynonenal, a toxic lipid aldehyde, is a product of the hydroperoxide beta-cleavage degradation of omega-6 polyunsaturated fatty acids, such as arachidonic and linoleic acids [JSG]. synonym: "HNE+Delta:H(2)" RELATED PSI-MS-label [] synonym: "reduced 4-Hydroxynonenal" RELATED Unimod-description [] xref: DiffAvg: "158.24" xref: DiffFormula: "C 9 H 18 O 2" xref: DiffMono: "158.130680" xref: Formula: "C 15 H 25 N 3 O 3" xref: MassAvg: "295.38" xref: MassMono: "295.189592" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:335" is_a: MOD:00642 ! reduced 4-hydroxynonenal adduct is_a: MOD:00909 ! modified L-histidine residue relationship: derives_from MOD:01239 ! histidine 4-hydroxynonenal adduct [Term] id: MOD:01301 name: methylamine Michael addition derivatized threonine def: "A protein modification that effectively converts an L-threonine residue to 2-amino-3-(methylamino)butanoic acid." [PubMed:11743741, Unimod:337#T] comment: In PubMed:11743741 phosphothreonine is converted to dehydrobutyrine in base, then by Michael addition of methylamine to 2-amino-3-(methylamino)butanoic acid. synonym: "Methylamine" RELATED PSI-MS-label [] synonym: "Michael addition with methylamine" RELATED Unimod-description [] xref: DiffAvg: "13.04" xref: DiffFormula: "C 1 H 3 N 1 O -1" xref: DiffMono: "13.031634" xref: Formula: "C 5 H 10 N 2 O 1" xref: MassAvg: "114.15" xref: MassMono: "114.079313" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:337" is_a: MOD:00643 ! methylamine Michael addition derivatized residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01302 name: methylamine Michael addition derivatized serine def: "A protein modification that effectively converts an L-serine residue to 2-amino-3-(methylamino)propanoic acid." [PubMed:11743741, Unimod:337#S] comment: In PubMed:11743741 phosphoserine is converted to dehydroalanine in base, then by Michael addition of methylamine to 2-amino-3-(methylamino)propanoic acid. synonym: "Methylamine" RELATED PSI-MS-label [] synonym: "Michael addition with methylamine" RELATED Unimod-description [] xref: DiffAvg: "13.04" xref: DiffFormula: "C 1 H 3 N 1 O -1" xref: DiffMono: "13.031634" xref: Formula: "C 4 H 8 N 2 O 1" xref: MassAvg: "100.12" xref: MassMono: "100.063663" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:337" is_a: MOD:00643 ! methylamine Michael addition derivatized residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01303 name: N4-hexosaminylated asparagine def: "A protein modification that effectively converts an L-asparagine residue to an N4-hexosaminyl-L-asparagine." [PubMed:11467524, Unimod:454#N] comment: The natural modifications are N4-(N-acetylamino)galactosyl-L-asparagine (MOD:00832) or N4-(N-acetylamino)glucosyl-L-asparagine (MOD:00831) [JSG]. synonym: "HexN" RELATED PSI-MS-label [] synonym: "Hexosamine" RELATED Unimod-description [] xref: DiffAvg: "161.16" xref: DiffFormula: "C 6 H 11 N 1 O 4" xref: DiffMono: "161.068808" xref: Formula: "C 10 H 17 N 3 O 6" xref: MassAvg: "275.26" xref: MassMono: "275.111735" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:454" is_a: MOD:00160 ! N4-glycosyl-L-asparagine is_a: MOD:00876 ! hexosaminylated residue [Term] id: MOD:01304 name: N6-hexosaminylated lysine def: "A protein modification that effectively converts an L-lysine residue to an N4-hexosaminyl-L-lysine, as a synthetic peptide protectting group." [Unimod:454#K] synonym: "HexN" RELATED PSI-MS-label [] synonym: "Hexosamine" RELATED Unimod-description [] xref: DiffAvg: "161.16" xref: DiffFormula: "C 6 H 11 N 1 O 4" xref: DiffMono: "161.068808" xref: Formula: "C 12 H 23 N 3 O 5" xref: MassAvg: "289.33" xref: MassMono: "289.163771" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:454" is_a: MOD:00876 ! hexosaminylated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01305 name: N1'-hexosaminylated tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to N1'-hexosaminyl-L-tryptophan." [Unimod:454#W] comment: The natural modification is N1'-mannosyl-L-tryptophan (MOD:00165) [JSG]. synonym: "HexN" RELATED PSI-MS-label [] synonym: "Hexosamine" RELATED Unimod-description [] xref: DiffAvg: "161.16" xref: DiffFormula: "C 6 H 11 N 1 O 4" xref: DiffMono: "161.068808" xref: Formula: "C 17 H 21 N 3 O 5" xref: MassAvg: "347.37" xref: MassMono: "347.148121" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:454" is_a: MOD:00876 ! hexosaminylated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01306 name: O-hexosaminylated threonine def: "A protein modification that effectively converts an L-threonine residue to O-hexosaminyl-L-threonine." [Unimod:454#T] comment: The natural modifications are O-(N-acetylaminogalactosyl)-L-threonine (MOD:00164) or O-(N-acetylaminoglucosyl)-L-threonine (MOD:00806) [JSG]. synonym: "HexN" RELATED PSI-MS-label [] synonym: "Hexosamine" RELATED Unimod-description [] xref: DiffAvg: "161.16" xref: DiffFormula: "C 6 H 11 N 1 O 4" xref: DiffMono: "161.068808" xref: Formula: "C 10 H 18 N 2 O 6" xref: MassAvg: "262.26" xref: MassMono: "262.116486" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:454" is_a: MOD:00005 ! O-glycosyl-L-threonine is_a: MOD:00876 ! hexosaminylated residue [Term] id: MOD:01307 name: thiophosphate labeled with biotin-HPDP -site S def: "modification from Unimod Chemical derivative -" [Unimod:332#S] synonym: "Thiophos-S-S-biotin" RELATED PSI-MS-label [] synonym: "thiophosphate labeled with biotin-HPDP" RELATED Unimod-description [] xref: DiffAvg: "525.66" xref: DiffFormula: "C 19 H 34 N 4 O 5 P 1 S 3" xref: DiffMono: "525.142895" xref: Formula: "C 22 H 39 N 5 O 7 P 1 S 3" xref: MassAvg: "612.74" xref: MassMono: "612.174923" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:332" is_a: MOD:00639 ! thiophosphate labeled with biotin-HPDP is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01308 name: thiophosphate labeled with biotin-HPDP -site T def: "modification from Unimod Chemical derivative -" [Unimod:332#T] synonym: "Thiophos-S-S-biotin" RELATED PSI-MS-label [] synonym: "thiophosphate labeled with biotin-HPDP" RELATED Unimod-description [] xref: DiffAvg: "525.66" xref: DiffFormula: "C 19 H 34 N 4 O 5 P 1 S 3" xref: DiffMono: "525.142895" xref: Formula: "C 23 H 41 N 5 O 7 P 1 S 3" xref: MassAvg: "626.76" xref: MassMono: "626.190573" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:332" is_a: MOD:00639 ! thiophosphate labeled with biotin-HPDP is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01309 name: thiophosphate labeled with biotin-HPDP - site Y def: "modification from Unimod Chemical derivative - " [Unimod:332#Y] synonym: "Thiophos-S-S-biotin" RELATED PSI-MS-label [] synonym: "thiophosphate labeled with biotin-HPDP" RELATED Unimod-description [] xref: DiffAvg: "525.66" xref: DiffFormula: "C 19 H 34 N 4 O 5 P 1 S 3" xref: DiffMono: "525.142895" xref: Formula: "C 28 H 43 N 5 O 7 P 1 S 3" xref: MassAvg: "688.83" xref: MassMono: "688.206223" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:332" is_a: MOD:00639 ! thiophosphate labeled with biotin-HPDP is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01310 name: quaternary amine labeling reagent light form N6-L-lysine def: "A protein modification that effectively replaces a lysine N6-hydrogen with a quaternary amine reagent light form group." [PubMed:11857757, Unimod:60#K] synonym: "GIST-Quat" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent light form (N-term & K)" RELATED Unimod-description [] xref: DiffAvg: "59.07" xref: DiffFormula: "C 3 (1)H 9 N 1" xref: DiffMono: "59.073499" xref: Formula: "C 9 (1)H 21 N 3 O 1" xref: MassAvg: "187.17" xref: MassMono: "187.168462" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:60" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01311 name: quaternary amine labeling reagent heavy form (+3amu) N6-L-lysine def: "A protein modification that effectively replaces a lysine N6-hydrogen with a quaternary amine reagent heavy (+3amu) form group." [PubMed:11698400, PubMed:11857757, PubMed:11914093, Unimod:61#K] synonym: "GIST-Quat:2H(3)" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent heavy (+3amu) form, N-term & K" RELATED Unimod-description [] xref: DiffAvg: "62.09" xref: DiffFormula: "C 3 (1)H 6 (2)H 3 N 1" xref: DiffMono: "62.092330" xref: Formula: "C 9 (1)H 18 (2)H 3 N 3 O 1" xref: MassAvg: "190.19" xref: MassMono: "190.187293" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:61" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01312 name: quaternary amine labeling reagent heavy form (+6amu) N6-L-lysine def: "A protein modification that effectively replaces a lysine N6-hydrogen with a quaternary amine reagent heavy (+6amu) form group." [PubMed:11857757, Unimod:62#K] comment: Apparently incorrect parent [JSG]. synonym: "GIST-Quat:2H(6)" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent heavy form (+6amu), N-term & K" RELATED Unimod-description [] xref: DiffAvg: "65.11" xref: DiffFormula: "C 3 (1)H 3 (2)H 6 N 1" xref: DiffMono: "65.111160" xref: Formula: "C 9 (1)H 15 (2)H 6 N 3 O 1" xref: MassAvg: "193.21" xref: MassMono: "193.206123" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:62" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01313 name: quaternary amine labeling reagent heavy form (+9amu) N6-L-lysine def: "A protein modification that effectively replaces a lysine N6-hydrogen with a quaternary amine reagent heavy (+9amu) form group." [PubMed:11857757, Unimod:63#K] synonym: "GIST-Quat:2H(9)" RELATED PSI-MS-label [] synonym: "Quaternary amine labeling reagent heavy form (+9amu), N-term & K" RELATED Unimod-description [] xref: DiffAvg: "68.13" xref: DiffFormula: "C 3 (2)H 9 N 1" xref: DiffMono: "68.129990" xref: Formula: "C 9 (1)H 12 (2)H 9 N 3 O 1" xref: MassAvg: "196.22" xref: MassMono: "196.224953" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:63" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01314 name: 4x(1)H,4x(12)C-labeled N6-succinyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 4x(1)H,4x(12)C-labeled N6-succinyl-L-lysine." [PubMed:11857757, PubMed:12175151, PubMed:12716131, Unimod:64#K] synonym: "Succinic anhydride labeling reagent light form (K)" RELATED Unimod-description [] synonym: "Succinyl" RELATED PSI-MS-label [] xref: DiffAvg: "100.02" xref: DiffFormula: "(12)C 4 (1)H 4 O 3" xref: DiffMono: "100.016044" xref: Formula: "(12)C 10 H 16 N 2 O 4" xref: MassAvg: "228.11" xref: MassMono: "228.111007" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:64" relationship: derives_from MOD:01819 ! N6-succinyl-L-lysine is_a: MOD:00670 ! N-acylated residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01315 name: 4x(2)H labeled N6-succinyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 4x(2)H-labeled N6-succinyl-L-lysine." [PubMed:11344537, PubMed:11857757, PubMed:12175151, PubMed:15189151, Unimod:65#K] synonym: "Succinic anhydride labeling reagent, heavy form (+4amu, 4H2), N-term & K" RELATED Unimod-description [] synonym: "Succinyl:2H(4)" RELATED PSI-MS-label [] xref: DiffAvg: "104.04" xref: DiffFormula: "C 4 (2)H 4 O 3" xref: DiffMono: "104.041151" xref: Formula: "C 10 (1)H 12 (2)H 4 N 2 O 4" xref: MassAvg: "232.14" xref: MassMono: "232.136114" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:65" relationship: derives_from MOD:01819 ! N6-succinyl-L-lysine is_a: MOD:00670 ! N-acylated residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01316 name: 4x(13)C labeled N6-succinyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 4x(13)C labeled N6-succinyl-L-lysine." [PubMed:11344537, PubMed:11857757, PubMed:12175151, PubMed:15189151, Unimod:66#K] synonym: "Succinic anhydride labeling reagent, heavy form (+4amu, 4C13), K" RELATED Unimod-description [] synonym: "Succinyl:13C(4)" RELATED PSI-MS-label [] xref: DiffAvg: "104.03" xref: DiffFormula: "(13)C 4 H 4 O 3" xref: DiffMono: "104.029463" xref: Formula: "(12)C 6 (13)C 4 H 16 N 2 O 4" xref: MassAvg: "232.12" xref: MassMono: "232.124426" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:66" relationship: derives_from MOD:01819 ! N6-succinyl-L-lysine is_a: MOD:00670 ! N-acylated residue is_a: MOD:01428 ! (13)C isotope tagged reagent [Term] id: MOD:01317 name: phosphorylation to amine thiol - site T def: "modification from Unimod Chemical derivative -" [PubMed:12216740, Unimod:178#T] synonym: "DAET" RELATED PSI-MS-label [] synonym: "phosphorylation to amine thiol" RELATED Unimod-description [] xref: DiffAvg: "87.18" xref: DiffFormula: "C 4 H 9 N 1 O -1 S 1" xref: DiffMono: "87.050656" xref: Formula: "C 8 H 16 N 2 O 1 S 1" xref: MassAvg: "188.29" xref: MassMono: "188.098334" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:178" is_a: MOD:00535 ! phosphorylation to amine thiol is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01318 name: phosphorylation to amine thiol - site S def: "modification from Unimod Chemical derivative -" [PubMed:11510821, PubMed:12216740, PubMed:12422359, Unimod:178#S] synonym: "DAET" RELATED PSI-MS-label [] synonym: "phosphorylation to amine thiol" RELATED Unimod-description [] xref: DiffAvg: "87.18" xref: DiffFormula: "C 4 H 9 N 1 O -1 S 1" xref: DiffMono: "87.050656" xref: Formula: "C 7 H 14 N 2 O 1 S 1" xref: MassAvg: "174.26" xref: MassMono: "174.082684" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:178" is_a: MOD:00535 ! phosphorylation to amine thiol is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01319 name: Michael addition of BHT quinone methide to histidine def: "modification from Unimod Other" [PubMed:11510821, PubMed:12422359, PubMed:9448752, Unimod:176#H] comment: Secondary adduct, much less common than cysteine. [Unimod] synonym: "BHT" RELATED PSI-MS-label [] synonym: "Michael addition of BHT quinone methide to Cysteine and Lysine" RELATED Unimod-description [] xref: DiffAvg: "218.34" xref: DiffFormula: "C 15 H 22 O 1" xref: DiffMono: "218.167065" xref: Formula: "C 21 H 29 N 3 O 2" xref: MassAvg: "355.48" xref: MassMono: "355.225977" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:176" is_a: MOD:00534 ! Michael addition of BHT quinone methide to cysteine and lysine is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:01320 name: Michael addition of BHT quinone methide to lysine def: "modification from Unimod Other" [PubMed:16078144, PubMed:9448752, Unimod:176#K] comment: Secondary adduct, much less common than cysteine. [Unimod] synonym: "BHT" RELATED PSI-MS-label [] synonym: "Michael addition of BHT quinone methide to Cysteine and Lysine" RELATED Unimod-description [] xref: DiffAvg: "218.34" xref: DiffFormula: "C 15 H 22 O 1" xref: DiffMono: "218.167065" xref: Formula: "C 21 H 34 N 2 O 2" xref: MassAvg: "346.51" xref: MassMono: "346.262028" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:176" is_a: MOD:00534 ! Michael addition of BHT quinone methide to cysteine and lysine is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01321 name: Michael addition of BHT quinone methide to cysteine def: "modification from Unimod Other" [PubMed:11510821, PubMed:12422359, PubMed:9448752, Unimod:176#C] comment: Primary adduct formed. [Unimod] synonym: "BHT" RELATED PSI-MS-label [] synonym: "Michael addition of BHT quinone methide to Cysteine and Lysine" RELATED Unimod-description [] xref: DiffAvg: "218.34" xref: DiffFormula: "C 15 H 22 O 1" xref: DiffMono: "218.167065" xref: Formula: "C 18 H 27 N 1 O 2 S 1" xref: MassAvg: "321.48" xref: MassMono: "321.176250" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:176" is_a: MOD:00534 ! Michael addition of BHT quinone methide to cysteine and lysine is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01322 name: propionaldehyde +40 - site K def: "OBSOLETE because not supported by the linked literature [PMT]. modification from Unimod Other -" [PubMed:15549660, Unimod:256#K] synonym: "Delta:H(4)C(3)" RELATED PSI-MS-label [] synonym: "Propionaldehyde +40" RELATED Unimod-description [] xref: DiffAvg: "40.06" xref: DiffFormula: "C 3 H 4" xref: DiffMono: "40.031300" xref: Formula: "C 9 H 16 N 2 O 1" xref: MassAvg: "168.24" xref: MassMono: "168.126263" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:256" is_obsolete: true [Term] id: MOD:01323 name: propionaldehyde +40 - site H def: "OBSOLETE because not supported by the linked literature [PMT]. modification from Unimod Other -" [Unimod:256#H] synonym: "Delta:H(4)C(3)" RELATED PSI-MS-label [] synonym: "Propionaldehyde +40" RELATED Unimod-description [] xref: DiffAvg: "40.06" xref: DiffFormula: "C 3 H 4" xref: DiffMono: "40.031300" xref: Formula: "C 9 H 11 N 3 O 1" xref: MassAvg: "177.21" xref: MassMono: "177.090212" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:256" is_obsolete: true [Term] id: MOD:01324 name: acetaldehyde +26 - site H def: "OBSOLETE because this is not supported by the linked literature [PMT]" [PubMed:7744761, Unimod:254#H] synonym: "Acetaldehyde +26" RELATED Unimod-description [] synonym: "Delta:H(2)C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "26.04" xref: DiffFormula: "C 2 H 2" xref: DiffMono: "26.015650" xref: Formula: "C 8 H 9 N 3 O 1" xref: MassAvg: "163.18" xref: MassMono: "163.074562" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:254" is_obsolete: true [Term] id: MOD:01325 name: acetaldehyde +26 - site K def: "OBSOLETE because this is not supported by the linked literature [PMT]" [PubMed:7744761, Unimod:254#K] synonym: "Acetaldehyde +26" RELATED Unimod-description [] synonym: "Delta:H(2)C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "26.04" xref: DiffFormula: "C 2 H 2" xref: DiffMono: "26.015650" xref: Formula: "C 8 H 14 N 2 O 1" xref: MassAvg: "154.21" xref: MassMono: "154.110613" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:254" is_obsolete: true [Term] id: MOD:01326 name: 9x(13)C labeled L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 9x(13)C labeled L-tyrosine." [PubMed:11510821, PubMed:12422359, PubMed:12716131, Unimod:184#Y] synonym: "13C(9) Silac label" RELATED Unimod-description [] synonym: "Label:13C(9)" RELATED PSI-MS-label [] xref: DiffAvg: "9.03" xref: DiffFormula: "(12)C -9 (13)C 9" xref: DiffMono: "9.030194" xref: Formula: "(13)C 9 H 9 N 1 O 2" xref: MassAvg: "172.09" xref: MassMono: "172.093522" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:184" is_a: MOD:00540 ! 9x(13)C labeled residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01327 name: 9x(13)C labeled L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to 9x(13)C labeled L-phenylalanine." [PubMed:12716131, Unimod:184#F] synonym: "13C(9) Silac label" RELATED Unimod-description [] synonym: "Label:13C(9)" RELATED PSI-MS-label [] xref: DiffAvg: "9.03" xref: DiffFormula: "(12)C -9 (13)C 9" xref: DiffMono: "9.030194" xref: Formula: "(13)C 9 H 9 N 1 O 1" xref: MassAvg: "156.10" xref: MassMono: "156.098607" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:184" is_a: MOD:00540 ! 9x(13)C labeled residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:01328 name: iodoacetic acid - site W def: "modification from Unimod Chemical derivative - hydroxylethanone" [PubMed:17525468, Unimod:6#W] comment: There is no citation for this Unimod entry. Iodoacetic acid derivatization of tryptophan is not mentioned in the citation [JSG]. synonym: "Carboxymethyl" RELATED PSI-MS-label [] synonym: "Iodoacetic acid derivative" RELATED Unimod-description [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 O 2" xref: DiffMono: "58.005479" xref: Formula: "C 13 H 12 N 2 O 3" xref: MassAvg: "244.25" xref: MassMono: "244.084792" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:6" is_a: MOD:00399 ! iodoacetic acid derivatized residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01329 name: iodoacetic acid - site C def: "OBSOLETE because duplicate and redundant with MOD:01061. Remap to MOD:01061" [DeltaMass:197] comment: Modification from Unimod Chemical derivative, Unimod:6 site C synonym: "Carboxymethyl" RELATED PSI-MS-label [] synonym: "Iodoacetic acid derivative" RELATED Unimod-description [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 O 2" xref: DiffMono: "58.005479" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01061" xref: Unimod: "Unimod:6" is_obsolete: true [Term] id: MOD:01330 name: iodoacetic acid -site K def: "OBSOLETE because identical with MOD:01094. Remap to MOD:01094" [PubMed:18688235] comment: a modification from Unimod:6 synonym: "Carboxymethyl" RELATED PSI-MS-label [] synonym: "Iodoacetic acid derivative" RELATED Unimod-description [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 O 2" xref: DiffMono: "58.005479" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:01094" xref: Unimod: "Unimod:6" is_obsolete: true [Term] id: MOD:01331 name: 6x(13)C labeled L-arginine def: "A protein modification that effectively converts an L-arginine residue to 6x(13)C labeled L-arginine." [OMSSA:136, PubMed:12716131, Unimod:188#R] subset: PSI-MOD-slim synonym: "13C(6) Silac label" RELATED Unimod-description [] synonym: "arg-13c6" EXACT OMSSA-label [] synonym: "Label:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "6.02" xref: DiffFormula: "(12)C -6 (13)C 6" xref: DiffMono: "6.020129" xref: Formula: "(13)C 6 H 12 N 4 O 1" xref: MassAvg: "162.12" xref: MassMono: "162.121240" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:188" is_a: MOD:00544 ! 6x(13)C labeled residue [Term] id: MOD:01332 name: 6x(13)C labeled L-leucine def: "A protein modification that effectively converts an L-leucine residue to 6x(13)C labeled L-leucine." [PubMed:12716131, Unimod:188#L] subset: PSI-MOD-slim synonym: "13C(6) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "6.02" xref: DiffFormula: "(12)C -6 (13)C 6" xref: DiffMono: "6.020129" xref: Formula: "(13)C 6 H 11 N 1 O 1" xref: MassAvg: "119.10" xref: MassMono: "119.104193" xref: Origin: "L" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:188" is_a: MOD:00544 ! 6x(13)C labeled residue [Term] id: MOD:01333 name: 6x(13)C labeled L-isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to 6x(13)C labeled L-isoleucine." [PubMed:12716131, PubMed:12766232, Unimod:188#I] subset: PSI-MOD-slim synonym: "13C(6) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "6.02" xref: DiffFormula: "(12)C -6 (13)C 6" xref: DiffMono: "6.020129" xref: Formula: "(13)C 6 H 11 N 1 O 1" xref: MassAvg: "119.10" xref: MassMono: "119.104193" xref: Origin: "I" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:188" is_a: MOD:00544 ! 6x(13)C labeled residue [Term] id: MOD:01334 name: 6x(13)C labeled L-lysine def: "A protein modification that effectively converts an L-lysine residue to 6x(13)C labeled L-lysine." [OMSSA:138, PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:12716131, Unimod:188#K] subset: PSI-MOD-slim synonym: "13C(6) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)" RELATED PSI-MS-label [] synonym: "lys-13c6" EXACT OMSSA-label [] xref: DiffAvg: "6.02" xref: DiffFormula: "(12)C -6 (13)C 6" xref: DiffMono: "6.020129" xref: Formula: "(13)C 6 H 12 N 2 O 1" xref: MassAvg: "134.12" xref: MassMono: "134.115092" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:188" is_a: MOD:00544 ! 6x(13)C labeled residue [Term] id: MOD:01335 name: 6x(13)C labeled 4-sulfophenyl isothiocyanate derivatized lysine def: "modification from Unimod Chemical derivative -" [PubMed:11467524, PubMed:16526082, Unimod:464#K] synonym: "4-sulfophenyl isothiocyanate (Heavy C13)" RELATED Unimod-description [] synonym: "SPITC:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "220.99" xref: DiffFormula: "(12)C 1 (13)C 6 H 5 N 1 O 3 S 2" xref: DiffMono: "220.991214" xref: Formula: "(12)C 7 (13)C 6 H 17 N 3 O 4 S 2" xref: MassAvg: "349.09" xref: MassMono: "349.086177" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:464" is_a: MOD:00880 ! 6x(13)C labeled 4-sulfophenyl isothiocyanate derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01336 name: deamidation followed by a methylation -site Q def: "OBSOLETE - identical and redundant with MOD:00657. Remap to MOD:00657." [PubMed:18688235] comment: Modification from Unimod Post-translational - Unimod:528. synonym: "Deamidation followed by a methylation" RELATED Unimod-description [] synonym: "Methyl+Deamidated" RELATED PSI-MS-label [] xref: DiffAvg: "15.01" xref: DiffFormula: "C 1 H 1 N -1 O 1" xref: DiffMono: "14.999666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00657" xref: Unimod: "Unimod:528" is_obsolete: true [Term] id: MOD:01337 name: deamidated 4-methyl esterified asparagine def: "A protein modification that effectively converts an L-asparagine residue to L-aspartate 4-methyl ester." [Unimod:528#N] comment: The deamidation and methylation of L-asparagine has not been reported as a natural modification. It is extremely unlikely that eukaryotes produce this modification, because a natural process that would form L-aspartic acid 4-methyl ester from either L-aspartic acid or L-asparagine would interfere with the D-aspartyl peptide repair mechanism [JSG]. synonym: "Deamidation followed by a methylation" RELATED Unimod-description [] synonym: "Methyl+Deamidated" RELATED PSI-MS-label [] xref: DiffAvg: "15.01" xref: DiffFormula: "C 1 H 1 N -1 O 1" xref: DiffMono: "14.999666" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "N" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:528" relationship: derives_from MOD:01181 ! L-aspartic acid 4-methyl ester is_a: MOD:01369 ! deamidated and methyl esterified residue [Term] id: MOD:01338 name: N6-ethyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-ethyl-L-lysine." [PubMed:9629898, Unimod:280#K] comment: The Unimod citation refers to the formation of glutamate ethyl ester and not to either lysine or N-terminal alkylation [JSG]. synonym: "Ethyl" RELATED PSI-MS-label [] synonym: "Ethylation" RELATED Unimod-description [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 16 N 2 O 1" xref: MassAvg: "156.23" xref: MassMono: "156.126263" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:280" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01339 ! ethylated residue [Term] id: MOD:01339 name: ethylated residue def: "A protein modification that effectively replaces a hydrogen atom with an ethyl group." [PubMed:9629898, Unimod:280] comment: From DeltaMass: Average Mass: 28 with no citation. The Unimod citation refers to the formation of glutamate ethyl ester and not to either lysine or N-terminal alkylation [JSG]. synonym: "Ethyl" RELATED PSI-MS-label [] synonym: "Ethylation" RELATED Unimod-description [] synonym: "EtRes" EXACT PSI-MOD-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:280" is_a: MOD:00001 ! alkylated residue [Term] id: MOD:01340 name: ESP-Tag heavy d10 - site K def: "modification from Unimod Isotopic label -" [PubMed:11078590, PubMed:11085420, PubMed:11821862, Unimod:91#K] synonym: "ESP-Tag heavy d10" RELATED Unimod-description [] synonym: "ESP:2H(10)" RELATED PSI-MS-label [] xref: DiffAvg: "348.24" xref: DiffFormula: "C 16 (1)H 16 (2)H 10 N 4 O 2 S 1" xref: DiffMono: "348.240415" xref: Formula: "C 22 (1)H 28 (2)H 10 N 6 O 3 S 1" xref: MassAvg: "476.34" xref: MassMono: "476.335378" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:91" is_a: MOD:00469 ! ESP-Tag heavy d10 is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01341 name: ESP-Tag light d0 - site K def: "modification from Unimod Isotopic label -" [Unimod:90#K] synonym: "ESP" RELATED PSI-MS-label [] synonym: "ESP-Tag light d0" RELATED Unimod-description [] xref: DiffAvg: "338.47" xref: DiffFormula: "C 16 H 26 N 4 O 2 S 1" xref: DiffMono: "338.177647" xref: Formula: "C 22 H 38 N 6 O 3 S 1" xref: MassAvg: "466.64" xref: MassMono: "466.272610" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:90" is_a: MOD:00468 ! ESP-Tag light d0 is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01342 name: selenium substitution for sulfur - site M def: "OBSOLETE because redundant and identical to MOD:00530. Remap to MOD:00530." [PubMed:12148805, Unimod:162] synonym: "Delta:S(-1)Se(1)" RELATED PSI-MS-label [] synonym: "Selenium replaces sulphur" RELATED Unimod-description [] xref: DiffAvg: "46.91" xref: DiffFormula: "S -1 Se 1" xref: DiffMono: "47.944450" xref: Formula: "C 5 H 9 N 1 O 1 S 0 Se 1" xref: MassAvg: "178.10" xref: MassMono: "178.984935" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00530" xref: Unimod: "Unimod:162" is_obsolete: true [Term] id: MOD:01343 name: selenium substitution for sulfur - site C def: "OBSOLETE because redundant and identical to MOD:00686. Remap to MOD:00686." [PubMed:12148805, Unimod:162] synonym: "Delta:S(-1)Se(1)" RELATED PSI-MS-label [] synonym: "Selenium replaces sulphur" RELATED Unimod-description [] xref: DiffAvg: "46.91" xref: DiffFormula: "S -1 Se 1" xref: DiffMono: "47.944450" xref: Formula: "C 3 H 5 N 1 O 1 S 0 Se 1" xref: MassAvg: "150.05" xref: MassMono: "150.953635" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00686" xref: Unimod: "Unimod:162" is_obsolete: true [Term] id: MOD:01344 name: dehydrogenated residue - site S def: "OBSOLETE because redundant and identical with MOD:00835. Remap to MOD:00835." [PubMed:9252331, PubMed:9276974, Unimod:401] synonym: "2-amino-3-oxo-butanoic_acid" RELATED Unimod-description [] synonym: "Didehydro" RELATED PSI-MS-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "H -2" xref: DiffMono: "-2.015650" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00835" xref: Unimod: "Unimod:401" is_obsolete: true [Term] id: MOD:01345 name: 2-amino-3-oxobutanoic acid def: "A protein modification that effectively converts an L-threonine residue to 2-amino-3-oxobutanoic acid." [OMSSA:23, PubMed:12716131, PubMed:9252331, Unimod:401#T] comment: There is no citation for this modification in the Unimod entry. Although mentioned in PubMed:9252331, there is no citation for it there [JSG]. synonym: "2-amino-3-ketobutyric acid" EXACT PSI-MOD-alternate [] synonym: "2-amino-3-oxo-butanoic_acid" RELATED Unimod-description [] synonym: "3-ketobutyrine" EXACT PSI-MOD-alternate [] synonym: "Didehydro" RELATED PSI-MS-label [] synonym: "twoamino3oxobutanoicacid" EXACT OMSSA-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "H -2" xref: DiffMono: "-2.015650" xref: Formula: "C 4 H 5 N 1 O 2" xref: MassAvg: "99.09" xref: MassMono: "99.032028" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:401" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01888 ! didehydrogenated residue [Term] id: MOD:01346 name: N4-hexosylated asparagine def: "A protein modification that effectively converts an L-asparagine residue to an N4-hexosyl-L-asparagine." [PubMed:11112526, PubMed:11567090, PubMed:15279557, PubMed:6540775, Unimod:41#N] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 10 H 16 N 2 O 7" xref: MassAvg: "276.25" xref: MassMono: "276.095751" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" is_a: MOD:00160 ! N4-glycosyl-L-asparagine is_a: MOD:00434 ! hexosylated residue [Term] id: MOD:01347 name: hexose glycated L-lysine def: "A modification produced in a non-enzymatic reaction between a carbohydrate carbonyl group (C1 of aldohexose or C2 of fructose) and an L-lysine residue to form a Schiff-base or an Amadori ketosamine lysine adduct." [DeltaMass:0, PubMed:15279557, Unimod:41#K] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 12 H 22 N 2 O 6" xref: MassAvg: "290.32" xref: MassMono: "290.147786" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" is_a: MOD:00767 ! glycated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01348 name: O-hexosylated threonine def: "A protein modification that effectively converts an L-threonine residue to an O-hexosyl-L-threonine." [PubMed:15279557, PubMed:8597590, Unimod:41#T] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 10 H 17 N 1 O 7" xref: MassAvg: "263.25" xref: MassMono: "263.100502" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" is_a: MOD:00005 ! O-glycosyl-L-threonine is_a: MOD:00434 ! hexosylated residue [Term] id: MOD:01349 name: hydrolyzed N-ethylmaleimide cysteine adduct def: "modification from Unimod Chemical derivative -" [Unimod:320#C] comment: Hydolyzed N-ethylmaeimide adduct, a mixture of isobaric 2- and 3-(S-cysteinyl)-4-(ethylamino)-4-oxobutanoic acid [JSG]. synonym: "Nethylmaleimide+water" RELATED PSI-MS-label [] synonym: "Nethylmaleimidehydrolysis" RELATED Unimod-description [] xref: DiffAvg: "143.14" xref: DiffFormula: "C 6 H 9 N 1 O 3" xref: DiffMono: "143.058243" xref: Formula: "C 9 H 14 N 2 O 4 S 1" xref: MassAvg: "246.28" xref: MassMono: "246.067428" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:320" is_a: MOD:00631 ! hydrolyzed N-ethylmaleimide adduct is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01350 name: hydrolyzed N-ethylmaleimide lysine adduct def: "modification from Unimod Chemical derivative -" [Unimod:320#K] comment: Hydolyzed N-ethylmaeimide adduct, a mixture of isobaric 2- and 3-(N6-lysyl)-4-(ethylamino)-4-oxobutanoic acid [JSG]. synonym: "Nethylmaleimide+water" RELATED PSI-MS-label [] synonym: "Nethylmaleimidehydrolysis" RELATED Unimod-description [] xref: DiffAvg: "143.14" xref: DiffFormula: "C 6 H 9 N 1 O 3" xref: DiffMono: "143.058243" xref: Formula: "C 12 H 21 N 3 O 4" xref: MassAvg: "271.32" xref: MassMono: "271.153206" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:320" is_a: MOD:00631 ! hydrolyzed N-ethylmaleimide adduct [Term] id: MOD:01351 name: nitrated L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to a nitrated L-tryptophan." [OMSSA:85, PubMed:8839040, PubMed:9252331, Unimod:354#W] comment: One or more isobaric isomers are produced by nitration with peroxynitrite reagent [JSG]. synonym: "Nitro" RELATED PSI-MS-label [] synonym: "nitrow" EXACT OMSSA-label [] synonym: "Oxidation to nitro" RELATED Unimod-description [] xref: DiffAvg: "45.00" xref: DiffFormula: "H -1 N 1 O 2" xref: DiffMono: "44.985078" xref: Formula: "C 11 H 9 N 3 O 3" xref: MassAvg: "231.21" xref: MassMono: "231.064391" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:354" is_a: MOD:00461 ! nitrated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01352 name: nitrated L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to a nitrated L-tyrosine." [OMSSA:86, PubMed:14678012, PubMed:8839040, PubMed:9252331, Unimod:354#Y] comment: One or more isobaric isomers are produced by nitration with peroxynitrite reagent [JSG]. subset: PSI-MOD-slim synonym: "Nitro" RELATED PSI-MS-label [] synonym: "nitroy" EXACT OMSSA-label [] synonym: "Oxidation to nitro" RELATED Unimod-description [] xref: DiffAvg: "45.00" xref: DiffFormula: "H -1 N 1 O 2" xref: DiffMono: "44.985078" xref: Formula: "C 9 H 8 N 2 O 4" xref: MassAvg: "208.17" xref: MassMono: "208.048407" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:354" xref: UniProt: "PTM-0213" is_a: MOD:00461 ! nitrated residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01353 name: amidination of lysines or N-terminal amines with methyl acetimidate - site K def: "modification from Unimod Chemical derivative -" [PubMed:12643539, PubMed:15602776, PubMed:6273432, Unimod:141#K] synonym: "amidination of lysines or N-terminal amines with methyl acetimidate" RELATED Unimod-description [] synonym: "Amidine" RELATED PSI-MS-label [] xref: DiffAvg: "41.05" xref: DiffFormula: "C 2 H 3 N 1" xref: DiffMono: "41.026549" xref: Formula: "C 8 H 15 N 3 O 1" xref: MassAvg: "169.23" xref: MassMono: "169.121512" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:141" is_a: MOD:00509 ! amidination of lysines or N-terminal amines with methyl acetimidate is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01354 name: Hex1HexNAc1NeuAc1 N4-glycosylated asparagine def: "A protein modification that effectively replaces an N4 hydrogen atom of an asparagine residue with a carbohydrate-like group composed of Hex1HexNAc1NeuAc1 linked through a glycosidic bond." [PubMed:11698400, Unimod:149#N] synonym: "Hex(1)HexNAc(1)NeuAc(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc1" RELATED Unimod-description [] xref: DiffAvg: "657.60" xref: DiffFormula: "C 25 H 41 N 2 O 18" xref: DiffMono: "657.235437" xref: Formula: "C 29 H 47 N 4 O 20" xref: MassAvg: "771.70" xref: MassMono: "771.278365" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:149" is_a: MOD:00517 ! Hex1HexNAc1NeuAc1 glycosylated residue is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:01355 name: Hex1HexNAc1NeuAc1 O-glycosylated threonine def: "A protein modification that effectively replaces an O3 hydrogen atom of a threonine residue with a carbohydrate-like group composed of Hex1HexNAc1NeuAc1 linked through a glycosidic bond." [Unimod:149#T] synonym: "Hex(1)HexNAc(1)NeuAc(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc1" RELATED Unimod-description [] xref: DiffAvg: "657.60" xref: DiffFormula: "C 25 H 41 N 2 O 18" xref: DiffMono: "657.235437" xref: Formula: "C 29 H 48 N 3 O 20" xref: MassAvg: "758.70" xref: MassMono: "758.283116" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:149" is_a: MOD:00517 ! Hex1HexNAc1NeuAc1 glycosylated residue is_a: MOD:00005 ! O-glycosyl-L-threonine [Term] id: MOD:01356 name: Hex1HexNAc1NeuAc1 O-glycosylated serine def: "A protein modification that effectively replaces an O3 hydrogen atom of a serine residue with a carbohydrate-like group composed of Hex1HexNAc1NeuAc1 linked through a glycosidic bond." [PubMed:7856876, Unimod:149#S] synonym: "Hex(1)HexNAc(1)NeuAc(1)" RELATED PSI-MS-label [] synonym: "Hex1HexNAc1NeuAc1" RELATED Unimod-description [] xref: DiffAvg: "657.60" xref: DiffFormula: "C 25 H 41 N 2 O 18" xref: DiffMono: "657.235437" xref: Formula: "C 28 H 46 N 3 O 20" xref: MassAvg: "744.68" xref: MassMono: "744.267466" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:149" is_a: MOD:00517 ! Hex1HexNAc1NeuAc1 glycosylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01357 name: 2x(13)C,4x(2)H labeled dimethylated L-lysine def: "A protein modification that effectively replaces two hydrogen atoms of an L-lysine residue containing common isotopes with two (13)C,3x(2)H labeled methyl groups to form a 2x(13)C,6x(2)H labeled dimethylated L-lysine." [PubMed:12686488, PubMed:16335955, Unimod:510#K] synonym: "DiMethyl-C13HD2" RELATED Unimod-description [] synonym: "Dimethyl:2H(4)13C(2)" RELATED PSI-MS-label [] xref: DiffAvg: "34.06" xref: DiffFormula: "(13)C 2 (2)H 4" xref: DiffMono: "34.063117" xref: Formula: "(12)C 6 (13)C 2 (1)H 12 (2)H 4 N 2 O 1" xref: MassAvg: "162.16" xref: MassMono: "162.158080" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:510" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:00927 ! 2x(13)C,4x(2)H labeled dimethylated residue relationship: derives_from MOD:00084 ! N6,N6-dimethyl-L-lysine [Term] id: MOD:01358 name: Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, medium form - site N-term def: "modification from Unimod Isotopic label - Use when labelling post-digest" [PubMed:15602776, Unimod:687#N-term] synonym: "Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, medium form" RELATED Unimod-description [] synonym: "ICPL:2H(4)" RELATED PSI-MS-label [] xref: DiffAvg: "109.05" xref: DiffFormula: "C 6 (1)H -1 (2)H 4 N 1 O 1" xref: DiffMono: "109.046571" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:687" is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01359 name: Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, medium form - site K def: "modification from Unimod Isotopic label - Use when labelling post-digest" [PubMed:15602776, Unimod:687#K] synonym: "Bruker Daltonics SERVA-ICPL(TM) quantification chemistry, medium form" RELATED Unimod-description [] synonym: "ICPL:2H(4)" RELATED PSI-MS-label [] xref: DiffAvg: "109.05" xref: DiffFormula: "C 6 (1)H -1 (2)H 4 N 1 O 1" xref: DiffMono: "109.046571" xref: Formula: "C 12 (1)H 11 (2)H 4 N 3 O 2" xref: MassAvg: "237.14" xref: MassMono: "237.141534" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:687" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01360 name: 4-sulfophenyl isothiocyanate N6-derivatized lysine def: "A protein modification that effectively converts an L-lysine residue to the 4-sulfophenyl isothiocyanate adduct, N6-[(4-sulfophenyl)carbamothioyl]lysine." [PubMed:14689565, PubMed:14745769, PubMed:15549660, PubMed:16526082, Unimod:261#K] synonym: "4-sulfophenyl isothiocyanate" RELATED Unimod-description [] synonym: "N6-[(4-sulfophenyl)carbamothioyl]lysine" EXACT PSI-MOD-alternate [] synonym: "SPITC" RELATED PSI-MS-label [] xref: DiffAvg: "215.24" xref: DiffFormula: "C 7 H 5 N 1 O 3 S 2" xref: DiffMono: "214.971085" xref: Formula: "C 13 H 17 N 3 O 4 S 2" xref: MassAvg: "343.42" xref: MassMono: "343.066048" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:261" is_a: MOD:00584 ! 4-sulfophenyl isothiocyanate derivatized residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01361 name: O-thiophospho-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-thiophospho-L-threonine." [PubMed:11507762, PubMed:12110917, Unimod:260#T] synonym: "Thiophospho" RELATED PSI-MS-label [] synonym: "Thiophosphorylation" RELATED Unimod-description [] xref: DiffAvg: "96.04" xref: DiffFormula: "H 1 O 2 P 1 S 1" xref: DiffMono: "95.943487" xref: Formula: "C 4 H 8 N 1 O 4 P 1 S 1" xref: MassAvg: "197.14" xref: MassMono: "196.991165" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:260" is_a: MOD:00583 ! thiophosphorylated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01362 name: O-thiophospho-L-serine def: "A protein modification that effectively converts an L-serine residue to O-thiophospho-L-serine." [PubMed:11507762, PubMed:12110917, Unimod:260#S] synonym: "Thiophospho" RELATED PSI-MS-label [] synonym: "Thiophosphorylation" RELATED Unimod-description [] xref: DiffAvg: "96.04" xref: DiffFormula: "H 1 O 2 P 1 S 1" xref: DiffMono: "95.943487" xref: Formula: "C 3 H 6 N 1 O 4 P 1 S 1" xref: MassAvg: "183.12" xref: MassMono: "182.975515" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:260" is_a: MOD:00583 ! thiophosphorylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01363 name: O4'-thiophospho-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to O4'-thiophospho-L-tyrosine." [PubMed:12110917, PubMed:15549660, Unimod:260#Y] synonym: "Thiophospho" RELATED PSI-MS-label [] synonym: "Thiophosphorylation" RELATED Unimod-description [] xref: DiffAvg: "96.04" xref: DiffFormula: "H 1 O 2 P 1 S 1" xref: DiffMono: "95.943487" xref: Formula: "C 9 H 10 N 1 O 4 P 1 S 1" xref: MassAvg: "259.22" xref: MassMono: "259.006815" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:260" is_a: MOD:00583 ! thiophosphorylated residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01364 name: fluorescein-5-thiosemicarbazide - site S def: "modification from Unimod Chemical derivative -" [PubMed:11467524, Unimod:478#S] synonym: "fluorescein-5-thiosemicarbazide" RELATED Unimod-description [] synonym: "FTC" RELATED PSI-MS-label [] xref: DiffAvg: "421.43" xref: DiffFormula: "C 21 H 15 N 3 O 5 S 1" xref: DiffMono: "421.073242" xref: Formula: "C 24 H 20 N 4 O 7 S 1" xref: MassAvg: "508.51" xref: MassMono: "508.105270" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:478" is_a: MOD:00626 ! fluorescein-5-thiosemicarbazide modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01365 name: fluorescein-5-thiosemicarbazide - site C def: "modification from Unimod Chemical derivative -" [Unimod:478#C] synonym: "fluorescein-5-thiosemicarbazide" RELATED Unimod-description [] synonym: "FTC" RELATED PSI-MS-label [] xref: DiffAvg: "421.43" xref: DiffFormula: "C 21 H 15 N 3 O 5 S 1" xref: DiffMono: "421.073242" xref: Formula: "C 24 H 20 N 4 O 6 S 2" xref: MassAvg: "524.57" xref: MassMono: "524.082426" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:478" is_a: MOD:00626 ! fluorescein-5-thiosemicarbazide modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01366 name: fluorescein-5-thiosemicarbazide - site K def: "modification from Unimod Chemical derivative -" [Unimod:478#K] synonym: "fluorescein-5-thiosemicarbazide" RELATED Unimod-description [] synonym: "FTC" RELATED PSI-MS-label [] xref: DiffAvg: "421.43" xref: DiffFormula: "C 21 H 15 N 3 O 5 S 1" xref: DiffMono: "421.073242" xref: Formula: "C 27 H 27 N 5 O 6 S 1" xref: MassAvg: "549.60" xref: MassMono: "549.168205" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:478" is_a: MOD:00626 ! fluorescein-5-thiosemicarbazide modified residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01367 name: fluorescein-5-thiosemicarbazide - site P def: "modification from Unimod Chemical derivative -" [Unimod:478#P] synonym: "fluorescein-5-thiosemicarbazide" RELATED Unimod-description [] synonym: "FTC" RELATED PSI-MS-label [] xref: DiffAvg: "421.43" xref: DiffFormula: "C 21 H 15 N 3 O 5 S 1" xref: DiffMono: "421.073242" xref: Formula: "C 26 H 22 N 4 O 6 S 1" xref: MassAvg: "518.54" xref: MassMono: "518.126005" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:478" is_a: MOD:00626 ! fluorescein-5-thiosemicarbazide modified residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:01368 name: fluorescein-5-thiosemicarbazide - site R def: "modification from Unimod Chemical derivative -" [PubMed:15525938, Unimod:478#R] synonym: "fluorescein-5-thiosemicarbazide" RELATED Unimod-description [] synonym: "FTC" RELATED PSI-MS-label [] xref: DiffAvg: "421.43" xref: DiffFormula: "C 21 H 15 N 3 O 5 S 1" xref: DiffMono: "421.073242" xref: Formula: "C 27 H 27 N 7 O 6 S 1" xref: MassAvg: "577.62" xref: MassMono: "577.174353" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:478" is_a: MOD:00626 ! fluorescein-5-thiosemicarbazide modified residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:01369 name: deamidated and methyl esterified residue def: "A protein modification that effectively replaces a carboxamido group with a carboxyl methyl ester group." [Unimod:528] subset: PSI-MOD-slim synonym: "Deamidation followed by a methylation" RELATED Unimod-description [] synonym: "Methyl+Deamidated" RELATED PSI-MS-label [] xref: DiffAvg: "15.01" xref: DiffFormula: "C 1 H 1 N -1 O 1" xref: DiffMono: "14.999666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:528" is_a: MOD:00393 ! O-methylated residue relationship: contains MOD:00400 ! deamidated residue [Term] id: MOD:01370 name: 6x(13)C,1x(15)N labeled residue def: "A protein modification that effectively converts a residue containing common isotopes to a 6x(13)C,1x(15)N labeled residue." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:695] synonym: "13C(6) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(6)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "7.02" xref: DiffFormula: "(12)C -6 (13)C 6 (14)N -1 (15)N 1" xref: DiffMono: "7.017164" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:695" is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00843 ! (15)N labeled residue [Term] id: MOD:01371 name: deamidation in presence of O18 def: "OBSOLETE bcecause identical and redundant with MOD:00851. Remap to MOD:00851." [PubMed:8382902] synonym: "Deamidated:18O(1)" RELATED PSI-MS-label [] synonym: "Deamidation in presence of O18" RELATED Unimod-description [] xref: DiffAvg: "2.99" xref: DiffFormula: "H -1 N -1 (18)O 1" xref: DiffMono: "2.988262" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00851" is_obsolete: true [Term] id: MOD:01372 name: (2S)-4-hydroxyleucine def: "A protein modification that effectively converts an L-leucine residue to a (2S)-4-hydroxyleucine." [PubMed:363352, PubMed:9164839, RESID:AA0442, ChEBI:141825] synonym: "(2S)-2-amino-4-hydroxy-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "(2S)-4-hydroxyleucine" EXACT RESID-name [] synonym: "gamma-hydroxyleucine" EXACT RESID-alternate [] synonym: "MOD_RES (2S)-4-hydroxyleucine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 11 N 1 O 2" xref: MassAvg: "129.16" xref: MassMono: "129.078979" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0665" is_a: MOD:01411 ! monohydroxylated leucine [Term] id: MOD:01373 name: (2S,4R)-5-hydroxyleucine def: "A protein modification that effectively converts an L-leucine residue to a (2S,4R)-5-hydroxyleucine." [PubMed:16858410, PubMed:7690768, PubMed:9164839, RESID:AA0443, ChEBI:141824] synonym: "(2S,4R)-2-amino-5-hydroxy-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "(2S,4R)-5-hydroxyleucine" EXACT RESID-name [] synonym: "(4R)-5-hydroxyleucine" EXACT RESID-alternate [] synonym: "delta-hydroxyleucine" EXACT RESID-alternate [] synonym: "MOD_RES (4R)-5-hydroxyleucine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 11 N 1 O 2" xref: MassAvg: "129.16" xref: MassMono: "129.078979" xref: Origin: "L" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0491" is_a: MOD:01411 ! monohydroxylated leucine [Term] id: MOD:01374 name: (2S,4R)-5-oxoleucine def: "A modification that effectively oxygenates C5 of an L-leucine residue to form a (2S,4R)-5-oxoleucine." [ChEBI:43739, PubMed:16858410, RESID:AA0444] synonym: "(2S,4R)-2-amino-4-methyl-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(2S,4R)-5-oxoleucine" EXACT RESID-name [] synonym: "(4R)-5-oxo-L-leucine" EXACT RESID-alternate [] xref: DiffAvg: "13.98" xref: DiffFormula: "C 0 H -2 N 0 O 1" xref: DiffMono: "13.979265" xref: Formula: "C 6 H 9 N 1 O 2" xref: MassAvg: "127.14" xref: MassMono: "127.063329" xref: Origin: "L" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0492" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00911 ! modified L-leucine residue [Term] id: MOD:01375 name: (2S,4R)-4,5-dihydroxyleucine def: "A protein modification that effectively converts an L-leucine residue to a (2S,4R)-4,5-dihydroxyleucine." [PubMed:6010785, PubMed:6893271, RESID:AA0445, ChEBI:141823] synonym: "(2S,4R)-2-amino-4,5-dihydroxy-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "(2S,4R)-4,5-dihydroxyleucine" EXACT RESID-name [] synonym: "(4R)-4,5-dihydroxyleucine" EXACT RESID-alternate [] synonym: "gamma,delta-dihydroxyleucine" EXACT RESID-alternate [] synonym: "MOD_RES (4R)-4,5-dihydroxyleucine" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 11 N 1 O 3" xref: MassAvg: "145.16" xref: MassMono: "145.073893" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0340" is_a: MOD:01412 ! dihydroxylated leucine [Term] id: MOD:01376 name: (2S,3S,4R)-3,4-dihydroxyisoleucine def: "A protein modification that effectively converts an L-isoleucine residue to a (2S,3S,4R)-3,4-dihydroxyisoleucine." [PubMed:11320328, RESID:AA0447, ChEBI:141827] synonym: "(2S,3S,4R)-2-amino-3,4-dihydroxy-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "(2S,3S,4R)-3,4-dihydroxyisoleucine" EXACT RESID-name [] synonym: "(3S,4R)-3,4-dihydroxyisoleucine" EXACT RESID-alternate [] synonym: "beta,gamma-dihydroxyisoleucine" EXACT RESID-alternate [] synonym: "MOD_RES (3S,4R)-3,4-dihydroxyisoleucine" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 11 N 1 O 3" xref: MassAvg: "145.16" xref: MassMono: "145.073893" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0343" is_a: MOD:01416 ! dihydroxylated isoleucine [Term] id: MOD:01377 name: (2S,3R,4S)-4-hydroxyisoleucine def: "A protein modification that effectively converts an L-isoleucine residue to a (2S,3R,4S)-4-hydroxyisoleucine." [PubMed:363352, RESID:AA0448, ChEBI:141844] synonym: "(2S,3R,4S)-2-amino-3-methyl-4-hydroxyvaleric acid" EXACT RESID-alternate [] synonym: "(2S,3R,4S)-2-amino-4-hydroxy-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R,4S)-4-hydroxyisoleucine" EXACT RESID-name [] synonym: "(3R,4S)-4-hydroxyisoleucine" EXACT RESID-alternate [] synonym: "gamma-hydroxyisoleucine" EXACT RESID-alternate [] synonym: "MOD_RES (3R,4S)-4-hydroxyisoleucine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 11 N 1 O 2" xref: MassAvg: "129.16" xref: MassMono: "129.078979" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0337" is_a: MOD:01415 ! monohydroxylated isoleucine [Term] id: MOD:01378 name: (2S,3R,4R)-4,5-dihydroxyisoleucine def: "A protein modification that effectively converts an L-isoleucine residue to a (2S,3R,4R)-4,5-dihydroxyisoleucine." [PubMed:11805306, PubMed:18552824, PubMed:363352, RESID:AA0449, ChEBI:141826] synonym: "(2S,3R,4R)-2-amino-4,5-dihydroxy-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R,4R)-4,5-dihydroxyisoleucine" EXACT RESID-name [] synonym: "(3R,4R)-4,5-dihydroxyisoleucine" EXACT RESID-alternate [] synonym: "gamma,delta-dihydroxyisoleucine" EXACT RESID-alternate [] synonym: "MOD_RES (3R,4R)-4,5-dihydroxyisoleucine" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 11 N 1 O 3" xref: MassAvg: "145.16" xref: MassMono: "145.073893" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0336" is_a: MOD:01416 ! dihydroxylated isoleucine [Term] id: MOD:01379 name: 2'-methylsulfonyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 2'-methylsulfonyl-L-tryptophan." [PubMed:6893271, RESID:AA0450] synonym: "2'-methylsulfonyl-L-tryptophan" EXACT RESID-name [] synonym: "2-methylsulfonyl-3-((2S)-2-amino-2-carboxyethyl)-1H-indole" EXACT RESID-systematic [] synonym: "MOD_RES 2'-methylsulfonyltryptophan" EXACT UniProt-feature [] xref: DiffAvg: "78.09" xref: DiffFormula: "C 1 H 2 N 0 O 2 S 1" xref: DiffMono: "77.977550" xref: Formula: "C 12 H 12 N 2 O 3 S 1" xref: MassAvg: "264.30" xref: MassMono: "264.056863" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0304" is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01380 name: 2'-(S-L-cysteinyl)-6'-hydroxy-L-tryptophan sulfoxide def: "A protein modification that effectively cross-links an L-cysteine residue and an L-tryptophan residue by a thioether bond to form 2'-(S-L-cysteinyl)-6'-hydroxy-L-tryptophan sulfoxide." [PubMed:11805306, PubMed:18552824, PubMed:363352, PubMed:4865716, RESID:AA0451] comment: Cross-link 2. synonym: "2'-(S-L-cysteinyl)-6'-hydroxy-L-tryptophan sulfoxide" EXACT RESID-name [] synonym: "2-((2R)-2-amino-2carboxyethyl)sulfinyl-3-((2S)-2-amino-2-carboxyethyl)-1H-indole" EXACT RESID-systematic [] synonym: "6'-hydroxy-S-oxo-tryptathionine" EXACT RESID-alternate [] synonym: "CROSSLNK 2'-cysteinyl-6'-hydroxytryptophan sulfoxide (Trp-Cys)" EXACT UniProt-feature [] xref: DiffAvg: "29.98" xref: DiffFormula: "C 0 H -2 N 0 O 2 S 0" xref: DiffMono: "29.974179" xref: Formula: "C 14 H 13 N 3 O 4 S 1" xref: MassAvg: "319.33" xref: MassMono: "319.062677" xref: Origin: "C, W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0338" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:02057 ! crosslinked L-tryptophan residue [Term] id: MOD:01381 name: O-palmitoleyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-palmitoleyl-L-serine." [OMSSA:186, PubMed:17141155, RESID:AA0455] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-((9Z)-9-hexadecenoyloxy)propanoic acid" EXACT RESID-systematic [] synonym: "L-serine cis-9-hexadecenoate ester" EXACT RESID-alternate [] synonym: "LIPID O-palmitoleyl serine" EXACT UniProt-feature [] synonym: "mod186" EXACT OMSSA-label [] synonym: "O-palmitoleyl-L-serine" EXACT RESID-name [] synonym: "O3-palmitoleyl-serine" EXACT RESID-alternate [] xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1" xref: DiffMono: "236.214016" xref: Formula: "C 19 H 33 N 1 O 3" xref: MassAvg: "323.48" xref: MassMono: "323.246044" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0493" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01768 ! O-palmitoleylated residue [Term] id: MOD:01382 name: N,N,N-trimethyl-L-methionine def: "A protein modification that effectively converts an L-methionine residue to N,N,N-trimethyl-L-methionine." [PubMed:18611379, RESID:AA0456] subset: PSI-MOD-slim synonym: "(1S)-1-carboxy-N,N,N-trimethyl-3-(methylsulfanyl)propanaminium" EXACT RESID-systematic [] synonym: "(1S)-1-carboxy-N,N,N-trimethyl-3-(methylsulfanyl)propanazanium" EXACT RESID-alternate [] synonym: "2-trimethylammonio-4-(methylthio)butanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N,N,N-trimethylmethionine" EXACT UniProt-feature [] synonym: "N,N,N-trimethyl-L-methionine" EXACT RESID-name [] synonym: "N,N,N-trimethylmethionine cation" EXACT RESID-alternate [] synonym: "N,N,N-trimethylmethioninium" EXACT RESID-alternate [] synonym: "N2Me3+Met" EXACT PSI-MOD-label [] xref: DiffAvg: "43.09" xref: DiffFormula: "C 3 H 7 N 0 O 0 S 0" xref: DiffMono: "43.054227" xref: FormalCharge: "1+" xref: Formula: "C 8 H 17 N 1 O 1 S 1" xref: MassAvg: "175.29" xref: MassMono: "175.102537" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0503" is_a: MOD:01463 ! N-methylated methionine is_a: MOD:01698 ! alpha-amino trimethylated protonated-residue [Term] id: MOD:01383 name: L-cystine S-oxide def: "A protein modification that effectively cross-links two L-cysteine residues and oxidizes a sulfur to form L-cystine S-oxide." [RESID:AA0457] comment: Cross-link 2. synonym: "(2R)-2-amino-3-[([(2R)-2-amino-2-carboxyethyl]sulfanyl)sulfinyl]propanoic acid" EXACT RESID-systematic [] synonym: "CROSSLNK S-cysteinyl 3-(oxidosulfanyl)alanine (Cys-Cys)" EXACT UniProt-feature [] synonym: "cystine sulfoxide" EXACT RESID-alternate [] synonym: "L-cystine S-oxide" EXACT RESID-name [] synonym: "S-[(2R)-2-amino-3-oxopropyl] (2R)-2-amino-3-oxopropane-1-sulfinothioate" EXACT RESID-alternate [] synonym: "S-cysteinyl 3-(oxidosulfanyl)alanine" EXACT RESID-alternate [] xref: DiffAvg: "13.98" xref: DiffFormula: "C 0 H -2 N 0 O 1 S 0" xref: DiffMono: "13.979265" xref: Formula: "C 6 H 8 N 2 O 3 S 2" xref: MassAvg: "220.26" xref: MassMono: "219.997634" xref: Origin: "C, C" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0324" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:00689 ! disulfide crosslinked residues [Term] id: MOD:01384 name: aminomalonic acid (Ser) def: "A protein modification that effectively converts an L-serine residue to an aminomalonic acid." [PubMed:1621954, PubMed:5415959, PubMed:6366787, PubMed:7457858, RESID:AA0458] synonym: "2-carboxyglycine" EXACT RESID-alternate [] synonym: "Ama" EXACT RESID-alternate [] synonym: "aminomalonic acid" EXACT RESID-name [] synonym: "aminopropanedioic acid" EXACT RESID-systematic [] synonym: "MOD_RES Aminomalonic acid (Ser)" EXACT UniProt-feature [] xref: DiffAvg: "13.98" xref: DiffFormula: "C 0 H -2 N 0 O 1 S 0" xref: DiffMono: "13.979265" xref: Formula: "C 3 H 3 N 1 O 3" xref: MassAvg: "101.06" xref: MassMono: "101.011293" xref: Origin: "S" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0321" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01385 name: 3-hydroxy-L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to 3-hydroxy-L-phenylalanine." [ChEBI:16795, OMSSA:63, PubMed:10625477, PubMed:15651011, PubMed:16734421, PubMed:1880060, PubMed:7398618, PubMed:7844053, RESID:AA0462] synonym: "(2S,3S)-2-amino-3-hydroxy-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "3-hydoxyphenylalanine" EXACT RESID-alternate [] synonym: "3-hydroxy-L-phenylalanine" EXACT RESID-name [] synonym: "3-phenyl-L-serine" EXACT RESID-alternate [] synonym: "3HyPhe" EXACT PSI-MOD-label [] synonym: "beta-hydroxyphenylalanine" EXACT RESID-alternate [] synonym: "beta-phenylserine" EXACT RESID-alternate [] synonym: "hydroxylationf" EXACT OMSSA-label [] synonym: "L-threo-3-phenylserine" EXACT RESID-alternate [] synonym: "MOD_RES 3-hydroxyphenylalanine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 9 H 9 N 1 O 2" xref: MassAvg: "163.18" xref: MassMono: "163.063329" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0346" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:01386 name: 3-hydroxy-L-valine def: "A protein modification that effectively converts an L-valine residue to 3-hydroxy-L-valine." [PubMed:7328054, RESID:AA0463, ChEBI:141793] synonym: "(2S)-2-amino-3-hydroxy-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "3-hydroxy-L-valine" EXACT RESID-name [] synonym: "3-hydroxyvaline" EXACT RESID-alternate [] synonym: "3HyVal" EXACT PSI-MOD-label [] synonym: "MOD_RES 3-hydroxyvaline" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 9 N 1 O 2" xref: MassAvg: "115.13" xref: MassMono: "115.063329" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0347" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00920 ! modified L-valine residue [Term] id: MOD:01387 name: O-methyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-methyl-L-threonine." [PubMed:7328054, RESID:AA0464] synonym: "(2S,3R)-2-amino-3-methoxybutanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES O-methylthreonine" EXACT UniProt-feature [] synonym: "O-methyl threonine" EXACT RESID-alternate [] synonym: "O-methyl-L-threonine" EXACT RESID-name [] synonym: "OMeThr" EXACT PSI-MOD-label [] synonym: "threonine methyl ether" EXACT RESID-alternate [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 5 H 9 N 1 O 2" xref: MassAvg: "115.13" xref: MassMono: "115.063329" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0356" is_a: MOD:01803 ! O-methylated threonine [Term] id: MOD:01388 name: 1-amino-2-propanol def: "A protein modification that effectively converts an L-threonine residue into 1-amino-2-propanol." [ChEBI:15675, PubMed:7328054, RESID:AA0465] synonym: "(2R)-1-aminopropan-2-ol" EXACT RESID-systematic [] synonym: "1-amino-2-hydroxypropane" EXACT RESID-alternate [] synonym: "1-amino-2-propanol" EXACT RESID-name [] synonym: "1-methyl-2-aminoethanol" EXACT RESID-alternate [] synonym: "2-amino-1-methylethanol" EXACT RESID-alternate [] synonym: "2-hydroxy-1-propylamine" EXACT RESID-alternate [] synonym: "2-hydroxypropanamine" EXACT RESID-alternate [] synonym: "2-hydroxypropylamine" EXACT RESID-alternate [] synonym: "alpha-aminoisopropyl alcohol" EXACT RESID-alternate [] synonym: "dCbxThr" EXACT PSI-MOD-label [] synonym: "decarboxylated threonine" EXACT RESID-alternate [] synonym: "isopropanolamine" EXACT RESID-alternate [] synonym: "MOD_RES Decarboxylated threonine" EXACT UniProt-feature [] synonym: "threamine" EXACT RESID-alternate [] xref: DiffAvg: "-44.01" xref: DiffFormula: "C -1 H 0 N 0 O -2" xref: DiffMono: "-43.989829" xref: Formula: "C 3 H 8 N 1 O 1" xref: MassAvg: "74.10" xref: MassMono: "74.060589" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0354" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:00960 ! decarboxylated residue [Term] id: MOD:01389 name: L-isoleucine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-isoleucine residue to form L-isoleucine thiazole-4-carboxylic acid." [PubMed:11320328, RESID:AA0466] comment: Cross-link 2. synonym: "2-[(1S,2S)-1-amino-2-methylbutyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-zanyl-2-methylbutyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Ile-Cys)" EXACT UniProt-feature [] synonym: "L-isoleucine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 9 H 12 N 2 O 1 S 1" xref: MassAvg: "196.27" xref: MassMono: "196.067034" xref: Origin: "C, I" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0361" is_a: MOD:02049 ! crosslinked L-isoleucine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01390 name: L-valine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-valine residue to form L-valine thiazole-4-carboxylic acid." [PubMed:7328054, RESID:AA0467] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-methylpropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-methylpropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Val-Cys)" EXACT UniProt-feature [] synonym: "L-valine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 8 H 10 N 2 O 1 S 1" xref: MassAvg: "182.24" xref: MassMono: "182.051384" xref: Origin: "C, V" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0365" is_a: MOD:02059 ! crosslinked L-valine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01391 name: L-valine 5-(methoxymethyl)thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-valine residue, and C-5 methoxymethylates to form L-valine 5-(methoxymethyl)thiazole-4-carboxylic acid." [PubMed:10625477, PubMed:1880060, PubMed:7844053, RESID:AA0468] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-methylpropyl]-5-(methoxymethyl)-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-methylpropyl]-5-(methoxymethyl)-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK 5-(methoxymethyl)thiazole-4-carboxylic acid (Val-Cys)" EXACT UniProt-feature [] synonym: "L-valine 5-(methoxymethyl)thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "24.02" xref: DiffFormula: "C 2 H 0 N 0 O 0 S 0" xref: DiffMono: "24.000000" xref: Formula: "C 10 H 14 N 2 O 2 S 1" xref: MassAvg: "226.29" xref: MassMono: "226.077599" xref: Origin: "C, V" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0373" is_a: MOD:02059 ! crosslinked L-valine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues [Term] id: MOD:01392 name: L-asparagine 5-methylthiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-asparagine residue, and C-4 methylates to form L-asparagine 5-methylthiazole-4-carboxylic acid." [PubMed:10625477, PubMed:1880060, PubMed:7844053, RESID:AA0469] comment: Cross-link 2. synonym: "2-[(1S)-1,3-bisazanyl-3-oxopropyl]-5-methyl-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "2-[(1S)-1,3-diamino-3-oxopropyl]-5-methyl-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "CROSSLNK 5-methylthiazole-4-carboxylic acid (Asn-Cys)" EXACT UniProt-feature [] synonym: "L-asparagine 5-methylthiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-6.00" xref: DiffFormula: "C 1 H -2 N 0 O -1 S 0" xref: DiffMono: "-6.010565" xref: Formula: "C 8 H 9 N 3 O 2 S 1" xref: MassAvg: "211.24" xref: MassMono: "211.041548" xref: Origin: "C, N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0352" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues relationship: derives_from MOD:00656 ! C-methylated residue [Term] id: MOD:01393 name: L-cysteine pyridine-2,5-dicarboxylic acid def: "A protein modification that crosslinks two serine residues and a cysteine residue by formation of a pyridine-2,5-dicarboxylic acid." [PubMed:10625477, PubMed:1880060, PubMed:7844053, RESID:AA0470] comment: Cross-link 3. synonym: "6-[(1R)-1-amino-2-sulfanylethyl]pyridine-2,5-dicarboxylic acid" EXACT RESID-systematic [] synonym: "L-cysteine pyridine-2,5-dicarboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-70.07" xref: DiffFormula: "C 0 H -8 N -1 O -3 S 0" xref: DiffMono: "-70.050418" xref: Formula: "C 9 H 7 N 2 O 2 S 1" xref: MassAvg: "207.23" xref: MassMono: "207.022823" xref: Origin: "C, S, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0358" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01425 ! pyridinyl ring crosslinked residues [Term] id: MOD:01394 name: L-cysteine 5-amino-3,4,5,6-tetrahydropyridine-2,5-dicarboxylic acid def: "A protein modification that crosslinks two serine residues and a cysteine residue by formation of a 5-amino-3,4,5,6-tetrahydropyridine-2,5-dicarboxylic acid." [PubMed:11320328, RESID:AA0471] comment: Cross-link 3. synonym: "(5R,6R)-5-amino-6-[(1R)-1-amino-2-sulfanylethyl]-3,4,5,6-tetrahydropyridine-2,5-dicarboxylic acid" EXACT RESID-systematic [] synonym: "L-cysteine 5-amino-3,4,5,6-tetrahydropyridine-2,5-dicarboxylic acid" EXACT RESID-name [] synonym: "L-cysteine 5-aminopiperideine-2,5-dicarboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK 5-amino-piperideine-2,5-dicarboxylic acid" RELATED UniProt-feature [] xref: DiffAvg: "-53.04" xref: DiffFormula: "C 0 H -5 N 0 O -3 S 0" xref: DiffMono: "-53.023869" xref: Formula: "C 9 H 11 N 3 O 2 S 1" xref: MassAvg: "225.27" xref: MassMono: "225.057198" xref: Origin: "C, S, S" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0348" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01425 ! pyridinyl ring crosslinked residues [Term] id: MOD:01395 name: 4-(1-hydroxyethyl)-7-isoleucino-2-(threonin-O3-ylcarbonyl)-7,8-dihydroquinolin-8-ol def: "A protein modification that effectively results from forming an adduct between an isoleucine residue, a threonine residue and the quinaldate compound 2-carboxy-4-(1-hydroxyethyl)--7,8-dihydroquinolin-8-ol." [PubMed:11320328, RESID:AA0472] comment: Cross-link 2. synonym: "(7R,8S)-7-[(1S,2S)-1-carboxy-2-methylbutyl]amino-2-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)carbonyl-8-hydroxy-4-[(1S)-1-hydroxyethyl]-7,8-dihydroquinoline" EXACT RESID-systematic [] synonym: "4-(1-hydroxyethyl)-7-isoleucino-2-(threonin-O3-ylcarbonyl)-7,8-dihydroquinolin-8-ol" EXACT RESID-name [] synonym: "BINDING 4-(1-hydroxyethyl)-7,8-dihydroquinolin-8-ol (covalent; via 2 links)" EXACT UniProt-feature [] xref: DiffAvg: "215.21" xref: DiffFormula: "C 12 H 9 N 1 O 3" xref: DiffMono: "215.058243" xref: Formula: "C 22 H 28 N 3 O 6" xref: MassAvg: "430.48" xref: MassMono: "430.197811" xref: Origin: "I, T" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:02049 ! crosslinked L-isoleucine residue is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01424 ! quinaldate modified residue [Term] id: MOD:01396 name: 5-hydroxy-3-methyl-L-proline (Pro) def: "A protein modification that effectively converts an L-proline residue to a 5-hydroxy-3-methyl-L-proline." [PubMed:7592021, PubMed:8557573, RESID:AA0473] comment: This entry is for the hypothetical formation of 5-hydroxy-3-methyl-L-proline from proline. For the natural production from L-isoleucine, use MOD:01897 [JSG]. synonym: "(2S,3S,5Xi)-5-hydroxy-3-methylpyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "5-hydroxy-3-methyl-L-proline" EXACT RESID-name [] synonym: "5-hydroxy-3-methylproline" EXACT RESID-alternate [] synonym: "5Hy3MePro" EXACT PSI-MOD-label [] synonym: "beta-methyl-delta-hydroxyproline" EXACT RESID-alternate [] synonym: "MOD_RES 5-hydroxy-3-methylproline (Ile)" EXACT UniProt-feature [] xref: DiffAvg: "30.03" xref: DiffFormula: "C 1 H 2 N 0 O 1" xref: DiffMono: "30.010565" xref: Formula: "C 6 H 9 N 1 O 2" xref: MassAvg: "127.14" xref: MassMono: "127.063329" xref: Origin: "P" xref: Source: "artifactual" xref: TermSpec: "none" is_a: MOD:00915 ! modified L-proline residue relationship: has_functional_parent MOD:01024 ! monohydroxylated proline relationship: has_functional_parent MOD:01417 ! monomethylated proline [Term] id: MOD:01397 name: L-serine 5-methyloxazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-serine residue and an L-threonine residue to form L-serine 5-methyloxazole-4-carboxylic acid." [PubMed:7592021, PubMed:8557573, RESID:AA0474] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-hydroxyethyl]-5-methyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-hydroxyethyl]-5-methyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK 5-methyloxazole-4-carboxylic acid (Ser-Thr)" EXACT UniProt-feature [] synonym: "L-serine 5-methyloxazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "C 7 H 8 N 2 O 3" xref: MassAvg: "168.15" xref: MassMono: "168.053492" xref: Origin: "S, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0386" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01422 ! oxazole/oxazoline ring crosslinked residues (Thr) is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01398 name: N6-propanoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-propanoyl-L-lysine." [PubMed:17267393, PubMed:17684016, PubMed:20715035, RESID:AA0475, Unimod:58#K] comment: The binding of histone peptides with propanoylated lysine to nuclear bromodomain proteins is non-specific and weaker than binding to the corresponding acetylated lysine peptides [JSG]. subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(propanoylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-amino-6-propionylaminocaproic acid" EXACT RESID-alternate [] synonym: "epsilon-propanoyl-L-lysine" EXACT RESID-alternate [] synonym: "epsilon-propionyl-L-lysine" EXACT RESID-alternate [] synonym: "N(zeta)-propanoyllysine" EXACT RESID-alternate [] synonym: "N6-(1-oxopropyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-propanoyl-L-lysine" EXACT RESID-name [] synonym: "N6-propionyllysine" EXACT RESID-alternate [] synonym: "MOD_RES N6-propionyllysine" EXACT UniProt-feature [] xref: DiffAvg: "56.06" xref: DiffFormula: "C 3 H 4 N 0 O 1" xref: DiffMono: "56.026215" xref: Formula: "C 9 H 16 N 2 O 2" xref: MassAvg: "184.24" xref: MassMono: "184.121178" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:58" xref: UniProt: "PTM-0642" is_a: MOD:01155 ! lipoconjugated residue is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:01894 ! propanoylated residue [Term] id: MOD:01399 name: N6-(ADP-ribosyl)-L-lysine def: "A protein modification that effectively converts an L-lysine residue to an N6-(ADP-ribosyl)-L-lysine." [PubMed:18436469, RESID:AA0476] synonym: "(S)-2-amino-6-([adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with alpha-D-ribofuranosyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-amino-6-(ADP-ribosyl)amino-hexanoic acid" EXACT RESID-alternate [] synonym: "epsilon-ADP-ribosyllysine" EXACT RESID-alternate [] synonym: "MOD_RES N6-(ADP-ribosyl)lysine" EXACT UniProt-feature [] synonym: "N(zeta)-ADP-ribosyllysine" EXACT RESID-alternate [] synonym: "N6-(ADP-ribosyl)-L-lysine" EXACT RESID-name [] synonym: "N6-[alpha-D-ribofuranoside 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)]-L-lysine" EXACT RESID-alternate [] synonym: "N6-alpha-D-ribofuranosyl-L-lysine 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2" xref: DiffMono: "541.061109" xref: Formula: "C 21 H 33 N 7 O 14 P 2" xref: MassAvg: "669.48" xref: MassMono: "669.156072" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0355" is_a: MOD:00752 ! adenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01400 name: L-lysyl-poly(ADP-ribose) def: "A protein modification that effectively converts an L-lysine residue to an L-lysyl-poly(ADP-ribose)." [PubMed:6772638, RESID:AA0477] synonym: "L-lysyl-poly(ADP-ribose)" EXACT RESID-name [] synonym: "MOD_RES Lysyl poly(ADP-ribose)" EXACT UniProt-feature [] synonym: "poly[2'-adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with 1alpha-D-ribofuranosyl] (2S)-2,6-diaminohexanoate" EXACT RESID-systematic [] xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:02087 ! adenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01401 name: (2S,3S)-3-hydroxyasparagine def: "A protein modification that effectively converts an L-asparagine residue to a (2S,3S)-3-hydroxyasparagine." [ChEBI:50789, PubMed:11823643, PubMed:12042299, PubMed:12215170, PubMed:17573339, RESID:AA0478, ChEBI:138107] subset: PSI-MOD-slim synonym: "(2S,3S)-2,4-diamino-3-hydroxy-4-oxobutanoic acid" EXACT RESID-alternate [] synonym: "(2S,3S)-2-amino-3-hydroxy-4-butanediamic acid" EXACT RESID-systematic [] synonym: "(2S,3S)-3-hydroxyasparagine" EXACT RESID-name [] synonym: "(3S)3HyAsn" EXACT PSI-MOD-label [] synonym: "L-threo-beta-hydroxyasparagine" EXACT RESID-alternate [] synonym: "MOD_RES (3S)-3-hydroxyasparagine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 4 H 6 N 2 O 3" xref: MassAvg: "130.10" xref: MassMono: "130.037842" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0370" is_a: MOD:01688 ! 3-hydroxy-L-asparagine [Term] id: MOD:01402 name: (2S,3R,4R)-3,4-dihydroxyproline def: "A protein modification that effectively converts an L-proline residue to a (2S,3R,4R)-3,4-dihydroxyproline." [PubMed:6893271, RESID:AA0479, ChEBI:141805] synonym: "(2S,3R,4R)-3,4-dihydroxyproline" EXACT RESID-name [] synonym: "(2S,3R,4R)-3,4-dihydroxypyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "2,3-trans-3,4-trans-3,4-dihydroxy-L-proline" EXACT RESID-alternate [] synonym: "2-alpha-3-beta-4-alpha-3,4-dihydroxyproline" EXACT RESID-alternate [] synonym: "MOD_RES (3R,4R)-3,4-dihydroxyproline" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0368" is_a: MOD:00866 ! dihydroxylated proline [Term] id: MOD:01403 name: (2S)-4,5,5'-trihydroxyleucine def: "A protein modification that effectively converts an L-leucine residue to a (2S)-4,5,5'-trihydroxyleucine." [PubMed:6893271, RESID:AA0480] synonym: "(2S)-2-amino-4,5-dihydroxy-4-(hydroxymethyl)pentanoic acid" EXACT RESID-systematic [] synonym: "(2S)-4,5,5'-trihydroxyleucine" EXACT RESID-name [] synonym: "4,5,5'-trihydroxyleucine" EXACT RESID-alternate [] synonym: "gamma,delta,delta'-trihydroxyleucine" EXACT RESID-alternate [] synonym: "MOD_RES 4,5,4'-trihydroxyleucine" EXACT UniProt-feature [] xref: DiffAvg: "48.00" xref: DiffFormula: "C 0 H 0 N 0 O 3" xref: DiffMono: "47.984744" xref: Formula: "C 6 H 11 N 1 O 4" xref: MassAvg: "161.16" xref: MassMono: "161.068808" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0372" is_a: MOD:01413 ! trihydroxylated leucine [Term] id: MOD:01404 name: L-asparagine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-asparagine residue to form L-asparagine thiazole-4-carboxylic acid." [PubMed:7592021, PubMed:8557573, RESID:AA0481] comment: Cross-link 2. synonym: "2-[(1S)-1,3-diamino-3-oxopropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1,3-bisazanyl-3-oxopropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Asn-Cys)" EXACT UniProt-feature [] synonym: "L-asparagine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 7 H 7 N 3 O 2 S 1" xref: MassAvg: "197.21" xref: MassMono: "197.025897" xref: Origin: "C, N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0359" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01405 name: L-proline thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-proline residue to form L-proline thiazole-4-carboxylic acid." [PubMed:7592021, PubMed:8557573, RESID:AA0482] comment: Cross-link 2. synonym: "2-[(2S)-pyrrolidin-2-yl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Pro-Cys)" EXACT UniProt-feature [] synonym: "L-proline thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 8 H 8 N 2 O 1 S 1" xref: MassAvg: "180.22" xref: MassMono: "180.035734" xref: Origin: "C, P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02054 ! crosslinked L-proline residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01406 name: L-threonine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-threonine residue to form L-threonine thiazole-4-carboxylic acid." [PubMed:11320328, RESID:AA0483] comment: Cross-link 2. synonym: "2-[(1S,2R)-1-amino-2-hydroxypropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-hydroxypropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Thr-Cys)" EXACT UniProt-feature [] synonym: "L-threonine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 7 H 8 N 2 O 2 S 1" xref: MassAvg: "184.21" xref: MassMono: "184.030649" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0364" is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01407 name: L-phenylalanine thiazoline-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-phenylalanine residue to form L-phenylalanine thiazoline-4-carboxylic acid." [PubMed:7592021, PubMed:8557573, RESID:AA0484] comment: Cross-link 2. synonym: "(4R)-2-[(1S)-1-amino-2-phenylethyl]-4,5-dihydro-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-phenylethyl]-4,5-dihydro-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazoline-4-carboxylic acid (Phe-Cys)" EXACT UniProt-feature [] synonym: "L-phenylalanine thiazoline-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 12 H 12 N 2 O 1 S 1" xref: MassAvg: "232.30" xref: MassMono: "232.067034" xref: Origin: "C, F" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0366" is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01408 name: L-threonine thiazoline-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-threonine residue to form L-threonine thiazoline-4-carboxylic acid." [PubMed:11320328, RESID:AA0485] comment: Cross-link 2. synonym: "(4S)-2-[(1S,2R)-1-amino-2-hydroxypropyl]-4,5-dihydro-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[1-azanyl-2-hydroxypropyl]-4,5-dihydro-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK (4S)-thiazoline-4-carboxylic acid (Thr-Cys)" EXACT UniProt-feature [] synonym: "L-threonine (4S)-thiazoline-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 10 N 2 O 2 S 1" xref: MassAvg: "186.23" xref: MassMono: "186.046299" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0392" is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01409 name: trihydroxylated residue def: "A protein modification that effectively replaces three hydrogen atoms with three hydroxyl groups." [PubMed:18688235] synonym: "Hy3Res" EXACT PSI-MOD-label [] xref: DiffAvg: "48.00" xref: DiffFormula: "C 0 H 0 N 0 O 3" xref: DiffMono: "47.984744" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00677 ! hydroxylated residue [Term] id: MOD:01410 name: hydroxylated leucine def: "A protein modification that effectively converts an L-leucine residue to an hydroxylated leucine." [PubMed:18688235] synonym: "HyLeu" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "L" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00911 ! modified L-leucine residue [Term] id: MOD:01411 name: monohydroxylated leucine def: "A protein modification that effectively converts an L-leucine residue to a monohydroxylated leucine." [PubMed:18688235] synonym: "Hy1Leu" EXACT PSI-MOD-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 11 N 1 O 2" xref: MassAvg: "129.16" xref: MassMono: "129.078979" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:01410 ! hydroxylated leucine [Term] id: MOD:01412 name: dihydroxylated leucine def: "A protein modification that effectively converts an L-leucine residue to a dihydroxylated leucine." [PubMed:18688235] synonym: "Hy2Leu" EXACT PSI-MOD-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 11 N 1 O 3" xref: MassAvg: "145.16" xref: MassMono: "145.073893" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00428 ! dihydroxylated residue is_a: MOD:01410 ! hydroxylated leucine [Term] id: MOD:01413 name: trihydroxylated leucine def: "A protein modification that effectively converts an L-leucine residue to a trihydroxylated leucine." [PubMed:18688235] synonym: "Hy3Leu" EXACT PSI-MOD-label [] xref: DiffAvg: "48.00" xref: DiffFormula: "C 0 H 0 N 0 O 3" xref: DiffMono: "47.984744" xref: Formula: "C 6 H 11 N 1 O 4" xref: MassAvg: "161.16" xref: MassMono: "161.068808" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01409 ! trihydroxylated residue is_a: MOD:01410 ! hydroxylated leucine [Term] id: MOD:01414 name: hydroxylated isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to an hydroxylated isoleucine." [PubMed:18688235] synonym: "HyIle" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "I" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00677 ! hydroxylated residue is_a: MOD:00910 ! modified L-isoleucine residue [Term] id: MOD:01415 name: monohydroxylated isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to a monohydroxylated isoleucine." [PubMed:18688235] synonym: "Hy1Ile" EXACT PSI-MOD-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 11 N 1 O 2" xref: MassAvg: "129.16" xref: MassMono: "129.078979" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:01414 ! hydroxylated isoleucine [Term] id: MOD:01416 name: dihydroxylated isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to a dihydroxylated isoleucine." [PubMed:18688235] synonym: "Hy2Ile" EXACT PSI-MOD-label [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 11 N 1 O 3" xref: MassAvg: "145.16" xref: MassMono: "145.073893" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00428 ! dihydroxylated residue is_a: MOD:01414 ! hydroxylated isoleucine [Term] id: MOD:01417 name: monomethylated proline def: "A protein modification that effectively converts an L-proline residue to a monomethylated proline." [PubMed:18688235] subset: PSI-MOD-slim synonym: "Me1Pro" EXACT PSI-MOD-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 6 H 10 N 1 O 1" xref: MassAvg: "112.15" xref: MassMono: "112.076239" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00712 ! methylated proline [Term] id: MOD:01418 name: methylated threonine def: "A protein modification that effectively converts an L-threonine residue to a methylated threonine, such as O-methyl-L-threonine." [PubMed:18688235] synonym: "MeThr" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00427 ! methylated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01419 name: oxazole/oxazoline ring crosslinked residues def: "A protein modification that crosslinks two residues by condensation of a serine or threonine hydroxyl with the carbonyl of the preceding residue to form an oxazole or oxazoline ring, or by rearrangement and condensation of a cysteine with the carbonyl of the preceding residue to form a 1,3-oxazole-4-carbothionic acid." [PubMed:18688235] is_a: MOD:00690 ! oxazole/thiazole ring crosslinked residues [Term] id: MOD:01420 name: thiazole/thiazoline ring crosslinked residues def: "A protein modification that crosslinks two residues by condensation of a cysteine thiol with the carbonyl of the preceding residue to form a thiazole or thiazoline ring." [PubMed:18688235] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:00690 ! oxazole/thiazole ring crosslinked residues [Term] id: MOD:01421 name: oxazole/oxazoline ring crosslinked residues (Ser) def: "A protein modification that crosslinks two residues by condensation of a serine hydroxyl with the carbonyl of the preceding residue to form an oxazole or oxazoline ring." [PubMed:18688235] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01419 ! oxazole/oxazoline ring crosslinked residues [Term] id: MOD:01422 name: oxazole/oxazoline ring crosslinked residues (Thr) def: "A protein modification that crosslinks two residues by condensation of a threonine hydroxyl with the carbonyl of the preceding residue to form a 5-methyloxazole or 5-methyloxazoline ring." [PubMed:18688235] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01419 ! oxazole/oxazoline ring crosslinked residues [Term] id: MOD:01423 name: palmitoleylated residue def: "A protein modification that effectively replaces a hydrogen atom with a palmitoleyl group." [Unimod:431] subset: PSI-MOD-slim xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1" xref: DiffMono: "236.214016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:431" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:01424 name: quinaldate modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a quinaldate, kynurenate, or xanthurenate group." [PubMed:18688235] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01425 name: pyridinyl ring crosslinked residues def: "A protein modification that crosslinks three residues by formation of a pyridinyl ring, such as pyridine-2,5-dicarboxylic acid or 5-aminopiperideine-2,5-dicarboxylic acid." [PubMed:18688235] comment: Cross-link 3. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:01426 name: isotope tagged reagent derivatized residue def: "A protein modification that forms an adduct with a particular isotope labeled compound used as a reagent." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01427 name: 2-aminobutanoic acid (Abu) def: "OBSOLETE because redundant and identical to MOD:00819. Remap to MOD:00819." [PubMed:18688235] synonym: "Abu" EXACT DeltaMass-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 4 H 7 N 1 O 1" xref: MassAvg: "85.11" xref: MassMono: "85.052764" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Remap: "MOD:00819" is_obsolete: true [Term] id: MOD:01428 name: (13)C isotope tagged reagent def: "A protein modification that forms an adduct with a (13)C labeled compound used as a reagent." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:00842 ! (13)C labeled residue [Term] id: MOD:01429 name: (15)N isotope tagged reagent def: "A protein modification that forms an adduct with a (15)N labeled compound used as a reagent." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:00843 ! (15)N labeled residue [Term] id: MOD:01430 name: (18)O isotope tagged reagent def: "A protein modification that forms an adduct with a (13)C labeled compound used as a reagent." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:00844 ! (18)O labeled residue [Term] id: MOD:01431 name: (2)H deuterium tagged reagent def: "A protein modification that forms an adduct with a (2)H labeled compound used as a reagent." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:00839 ! (2)H deuterium labeled residue [Term] id: MOD:01432 name: (2S,4S)-4,5-dihydroxyleucine def: "A protein modification that effectively converts an L-leucine residue to a (2S,4S)-4,5-dihydroxyleucine." [PubMed:3718926, RESID:AA0446, ChEBI:141819] synonym: "(2S,4S)-2-amino-4,5-dihydroxy-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "(2S,4S)-4,5-dihydroxyleucine" EXACT RESID-name [] synonym: "(4S)-4,5-dihydroxyleucine" EXACT RESID-alternate [] synonym: "gamma,delta-dihydroxyleucine" EXACT RESID-alternate [] synonym: "MOD_RES (4S)-4,5-dihydroxyleucine" EXACT UniProt-feature [] xref: DiffAvg: "32.00" xref: DiffFormula: "C 0 H 0 N 0 O 2" xref: DiffMono: "31.989829" xref: Formula: "C 6 H 11 N 1 O 3" xref: MassAvg: "145.16" xref: MassMono: "145.073893" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0666" is_a: MOD:01412 ! dihydroxylated leucine [Term] id: MOD:01433 name: 1-amino-2-propanone def: "A protein modification that effectively converts an L-threonine residue into 1-amino-2-propanone." [ChEBI:17906, PubMed:12715872, PubMed:19196969, RESID:AA0486] synonym: "1-amino-2-propanone" EXACT RESID-name [] synonym: "1-aminopropan-2-one" EXACT RESID-alternate [] synonym: "1-aminopropanone" EXACT RESID-systematic [] synonym: "aminoacetone" EXACT RESID-alternate [] synonym: "MOD_RES 1-amino-2-propanone" EXACT UniProt-feature [] xref: DiffAvg: "-46.03" xref: DiffFormula: "C -1 H -2 N 0 O -2" xref: DiffMono: "-46.005479" xref: Formula: "C 3 H 6 N 1 O 1" xref: MassAvg: "72.09" xref: MassMono: "72.044939" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0379" is_a: MOD:00683 ! dehydrogenated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01434 name: 4-hydroxy-L-glutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to a 4-hydroxy-L-glutamic acid." [PubMed:893891, RESID:AA0487, ChEBI:141845] synonym: "(2S,4Xi)-2-amino-4-hydroxypentanedioic acid" EXACT RESID-systematic [] synonym: "4-hydroxy-L-glutamic acid" EXACT RESID-name [] synonym: "gamma-hydroxy glutaminic acid" EXACT RESID-alternate [] synonym: "MOD_RES 4-hydroxyglutamate" EXACT UniProt-feature [] synonym: "threo-4-hydroxy-L-glutamic acid" EXACT RESID-alternate [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 7 N 1 O 4" xref: MassAvg: "145.11" xref: MassMono: "145.037508" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0453" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01435 name: 2-(cystein-S-ylcarbonyl)-3-methyl-4-(glutam-5-yloxy)methylindole def: "A protein modification that effectively results from forming an adduct between a cysteine residue, a glutamic acid residue and the indole compound 2-carboxy-3-methyl-4-hydroxymethyl--indole." [PubMed:893891, RESID:AA0488] comment: Cross-link 2. synonym: "2-([(1R)-1-amino-1-carboxyeth-2-yl]sulfanyl)carbonyl-3-methyl-4-([(1S)-1-amino-1-carboxy-4-oxobutan-4-yl]oxy)methyl-1H-indole" EXACT RESID-systematic [] synonym: "2-(cystein-S-ylcarbonyl)-3-methyl-4-(glutam-5-yloxy)methylindole" EXACT RESID-name [] synonym: "2-(cystein-S-ylcarbonyl)-4-[(glutam-5-yloxy)methyl]-3-methyl-1H-indole" EXACT RESID-alternate [] synonym: "BINDING 3-methyl-4-hydroxymethylindole-2-carboxylic acid (covalent; via 2 links)" EXACT UniProt-feature [] xref: DiffAvg: "169.18" xref: DiffFormula: "C 11 H 7 N 1 O 1 S 0" xref: DiffMono: "169.052764" xref: Formula: "C 19 H 19 N 3 O 5 S 1" xref: MassAvg: "401.44" xref: MassMono: "401.104542" xref: Origin: "C, E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00672 ! S-acylated residue is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02045 ! crosslinked L-glutamic acid residue [Term] id: MOD:01436 name: cyclo[(prolylserin)-O-yl] cysteinate (Cys) def: "A protein modification that effectively converts an L-cysteine residue to cyclo[(prolylserin)-O-yl] cysteinate." [PubMed:7961166, RESID:AA0489#CYS] synonym: "(3,6-dioxopyrrolo[4,5-a]piperazin-2-yl)methyl cysteinate" EXACT RESID-alternate [] synonym: "[(3S,8aS)-1,4-dioxooctahydropyrrolo[1,2-a]pyrazin-3-yl]methyl (2R)-2-amino-3-sulfanylpropanoate" EXACT RESID-systematic [] synonym: "cyclo[(prolylserin)-O-yl] cysteinate" EXACT RESID-name [] synonym: "MOD_RES Cyclo[(prolylserin)-O-yl] cysteinate" EXACT UniProt-feature [] xref: DiffAvg: "166.18" xref: DiffFormula: "C 8 H 10 N 2 O 2 S 0" xref: DiffMono: "166.074228" xref: Formula: "C 11 H 16 N 3 O 4 S 1" xref: MassAvg: "286.33" xref: MassMono: "286.086152" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:01629 ! cyclo[(prolylserin)-O-yl] cysteinate [Term] id: MOD:01437 name: cyclo[(prolylserin)-O-yl] cysteinate (Cys-Pro-Ser cross-link) def: "A protein modification that effectively converts an L-cysteine residue, an L-proline residue, and an L-serine residue to cyclo[(prolylserin)-O-yl] cysteinate." [PubMed:7961166, RESID:AA0489#TRI] comment: Cross-link 3. synonym: "(3,6-dioxopyrrolo[4,5-a]piperazin-2-yl)methyl cysteinate" EXACT RESID-alternate [] synonym: "[(3S,8aS)-1,4-dioxooctahydropyrrolo[1,2-a]pyrazin-3-yl]methyl (2R)-2-amino-3-sulfanylpropanoate" EXACT RESID-systematic [] synonym: "cyclo[(prolylserin)-O-yl] cysteinate" EXACT RESID-name [] synonym: "MOD_RES Cyclo[(prolylserin)-O-yl] cysteinate" EXACT UniProt-feature [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 11 H 16 N 3 O 4 S 1" xref: MassAvg: "286.33" xref: MassMono: "286.086152" xref: Origin: "C, P, S" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0380" is_a: MOD:02054 ! crosslinked L-proline residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01629 ! cyclo[(prolylserin)-O-yl] cysteinate is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01438 name: S-[2-(pyridin-2-yl)ethyl]-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-[2-(pyridin-2-yl)ethyl]-L-cysteine." [PubMed:18369855, PubMed:18688235] comment: From DeltaMass: (name misspelled "Pyridylethyl Cystenyl", and formula incorrect, N and O reversed) Formula: C10H12O2N1S1 Monoisotopic Mass Change: 208.067 Average Mass Change: 208.286 synonym: "2-PEC" EXACT PSI-MOD-alternate [] synonym: "2-vinylpyridine derivatized cysteine residue" EXACT PSI-MOD-alternate [] synonym: "Pyridylethyl" RELATED PSI-MS-label [] synonym: "Pyridylethyl Cystenyl" EXACT DeltaMass-label [] synonym: "S-(pyridin-2-ylethyl)-L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-pyridylethylation" RELATED Unimod-description [] xref: DiffAvg: "105.14" xref: DiffFormula: "C 7 H 7 N 1" xref: DiffMono: "105.057849" xref: Formula: "C 10 H 12 N 2 O 1 S 1" xref: MassAvg: "208.28" xref: MassMono: "208.067034" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00424 ! S-pyridylethyl-L-cysteine [Term] id: MOD:01439 name: S-[2-(pyridin-4-yl)ethyl]-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-[2-(pyridin-4-yl)ethyl]-L-cysteine." [PubMed:18688235, PubMed:6528972] synonym: "4-PEC" EXACT PSI-MOD-alternate [] synonym: "Pyridylethyl" RELATED PSI-MS-label [] synonym: "Pyridylethyl Cystenyl" EXACT DeltaMass-label [] synonym: "S-(pyridin-4-ylethyl)-L-cysteine" EXACT PSI-MOD-alternate [] synonym: "S-pyridylethylation" RELATED Unimod-description [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00424 ! S-pyridylethyl-L-cysteine [Term] id: MOD:01440 name: glutamyl semialdehyde def: "A protein modification that effectively converts a source amino acid residue to an L-glutamyl semialdehyde." [PubMed:18688235] synonym: "(S)-2-amino-5-oxopentanoic acid" EXACT PSI-MOD-alternate [] synonym: "L-glutamic gamma-semialdehyde" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:00594 ! residues isobaric at 113.047678 Da [Term] id: MOD:01441 name: natural, standard, encoded residue def: "A protein modification that inserts or replaces a residue with a natural, standard, encoded residue." [PubMed:18688235, PubMed:6692818] subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00009 ! natural residue [Term] id: MOD:01442 name: 3-(O4'-L-tyrosyl)-L-valine def: "A protein modification that effectively cross-links an L-valine residue and an L-tyrosine residue by an ether bond to form 3-(O4'-L-tyrosyl)-L-valine." [PubMed:19321420, RESID:AA0490] comment: Cross-link 2. synonym: "(2S)-2-amino-3-(4-[(2S)-2-amino-2-carboxyethyl]phenoxy)-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "3-(O4'-L-tyrosyl)-L-valine" EXACT RESID-name [] synonym: "CROSSLNK 3-(O4'-tyrosyl)-valine (Val-Tyr)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 14 H 16 N 2 O 3" xref: MassAvg: "260.29" xref: MassMono: "260.116092" xref: Origin: "V, Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0390" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02058 ! crosslinked L-tyrosine residue is_a: MOD:02059 ! crosslinked L-valine residue [Term] id: MOD:01443 name: tetrakis-L-glutamato bis-L-N1'-histidino lipid carboxylato manganese iron oxide def: "A protein modification that effectively converts four L-glutamic acid residues and two L-histidine residues to tetrakis-L-glutamato bis-L-N1'-histidino lipid carboxylato manganese iron oxide." [PubMed:19321420, RESID:AA0491] comment: Cross-link 6. It is not clear whether the lipid carboxylate is a cofactor or a substrate, and its identity is not certain. It was modeled as myristic acid [JSG]. xref: DiffAvg: "350.12" xref: DiffFormula: "C 14 Fe 1 H 23 Mn 1 N 0 O 3" xref: DiffMono: "350.038251" xref: FormalCharge: "1-" xref: Formula: "C 46 Fe 1 H 65 Mn 1 N 10 O 17" xref: MassAvg: "1140.86" xref: MassMono: "1140.326447" xref: Origin: "E, E, E, E, H, H" xref: Source: "natural" xref: TermSpec: "none" relationship: contains MOD:00438 ! myristoylated residue is_a: MOD:00738 ! iron containing modified residue is_a: MOD:00740 ! manganese containing modified residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:01444 name: L-3,3-dihydroxyoalanine (Cys) def: "A protein modification that effectively converts an L-cysteine residue to L-3,3-dihydroxyoalanine." [PubMed:11435113, PubMed:17558559, RESID:AA0492#CYS] synonym: "(S)-2-amino-3,3-dihydroxypropanoic acid" EXACT RESID-systematic [] synonym: "2-(dihydroxymethyl)glycine" EXACT RESID-alternate [] synonym: "3,3-dihydroxy-L-alanine" EXACT RESID-name [] synonym: "3,3-dihydroxyalanine" EXACT RESID-alternate [] synonym: "3-hydroxy-L-serine" EXACT RESID-alternate [] synonym: "3-oxoalanine hydrate" EXACT RESID-alternate [] synonym: "C(alpha)-formylglycine hydrate" RELATED RESID-misnomer [] xref: DiffAvg: "-0.06" xref: DiffFormula: "C 0 H 0 N 0 O 2 S -1" xref: DiffMono: "0.017758" xref: Formula: "C 3 H 5 N 1 O 3" xref: MassAvg: "103.08" xref: MassMono: "103.026943" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01448 ! L-3,3-dihydroxyoalanine [Term] id: MOD:01445 name: L-3,3-dihydroxyoalanine (Ser) def: "A protein modification that effectively converts an L-serine residue to L-3,3-dihydroxyoalanine." [PubMed:11435113, PubMed:17558559, RESID:AA0492#SER] synonym: "(S)-2-amino-3,3-dihydroxypropanoic acid" EXACT RESID-systematic [] synonym: "2-(dihydroxymethyl)glycine" EXACT RESID-alternate [] synonym: "3,3-dihydroxy-L-alanine" EXACT RESID-name [] synonym: "3,3-dihydroxyalanine" EXACT RESID-alternate [] synonym: "3-hydroxy-L-serine" EXACT RESID-alternate [] synonym: "3-oxoalanine hydrate" EXACT RESID-alternate [] synonym: "C(alpha)-formylglycine hydrate" RELATED RESID-misnomer [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 3 H 5 N 1 O 3" xref: MassAvg: "103.08" xref: MassMono: "103.026943" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01448 ! L-3,3-dihydroxyoalanine [Term] id: MOD:01446 name: N-(dihydroxymethyl)-L-methionine (fMet) def: "A protein modification that effectively converts an N-formyl-Lmethionine residue to N-(dihydroxymethyl)-L-methionine." [PubMed:12595263, PubMed:9159480, RESID:AA0493] synonym: "(2S)-2-[(dihydroxymethyl)amino]-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "N-(dihydroxymethyl)-L-methionine" EXACT RESID-name [] synonym: "N-formyl-L-methionine hydrate" EXACT RESID-alternate [] synonym: "N-orthoformylmethionine" EXACT RESID-alternate [] xref: DiffAvg: "18.02" xref: DiffFormula: "C 0 H 2 N 0 O 1 S 0" xref: DiffMono: "18.010565" xref: Formula: "C 6 H 12 N 1 O 3 S 1" xref: MassAvg: "178.23" xref: MassMono: "178.053789" xref: Origin: "MOD:00030" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:01450 ! modified N-formyl-L-methionine residue relationship: derives_from MOD:00030 ! N-formyl-L-methionine residue [Term] id: MOD:01447 name: N-(dihydroxymethyl)-L-methionine (Met) def: "A protein modification that effectively converts an L-methionine residue to N-(dihydroxymethyl)-L-methionine (not known as a natural, post-translational modification process)." [PubMed:12595263, PubMed:9159480, RESID:AA0493] comment: This entry is for the artifactual formation of N-(dihydroxymethyl)-L-methionine from methionine. For N-(dihydroxymethyl)-L-methionine derived from encoded N-formyl-L-methionine, use MOD:01446. synonym: "(2S)-2-[(dihydroxymethyl)amino]-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "N-(dihydroxymethyl)-L-methionine" EXACT RESID-name [] synonym: "N-formyl-L-methionine hydrate" EXACT RESID-alternate [] synonym: "N-orthoformylmethionine" EXACT RESID-alternate [] xref: DiffAvg: "46.03" xref: DiffFormula: "C 1 H 2 N 0 O 2 S 0" xref: DiffMono: "46.005479" xref: Formula: "C 6 H 12 N 1 O 3 S 1" xref: MassAvg: "178.23" xref: MassMono: "178.053789" xref: Origin: "M" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:01448 name: L-3,3-dihydroxyoalanine def: "A protein modification that effectively converts a source amino acid residue to L-3,3-dihydroxyoalanine." [PubMed:11435113, PubMed:17558559, RESID:AA0492] synonym: "(S)-2-amino-3,3-dihydroxypropanoic acid" EXACT RESID-systematic [] synonym: "2-(dihydroxymethyl)glycine" EXACT RESID-alternate [] synonym: "3,3-dihydroxy-L-alanine" EXACT RESID-name [] synonym: "3,3-dihydroxyalanine" EXACT RESID-alternate [] synonym: "3-hydroxy-L-serine" EXACT RESID-alternate [] synonym: "3-oxoalanine hydrate" EXACT RESID-alternate [] synonym: "C(alpha)-formylglycine hydrate" RELATED RESID-misnomer [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 3 H 5 N 1 O 3" xref: MassAvg: "103.08" xref: MassMono: "103.026943" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01449 name: L-3,3-dihydroxyoalanine (Oxoalanine) def: "A protein modification that effectively converts an L-3-oxoalanine residue to L-3,3-dihydroxyoalanine." [PubMed:11435113, PubMed:17558559, PubMed:18688235] xref: DiffAvg: "18.02" xref: DiffFormula: "C 0 H 2 N 0 O 1" xref: DiffMono: "18.010565" xref: Formula: "C 3 H 5 N 1 O 3" xref: MassAvg: "103.08" xref: MassMono: "103.026943" xref: Origin: "MOD:01169" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01448 ! L-3,3-dihydroxyoalanine relationship: derives_from MOD:01169 ! L-3-oxoalanine [Term] id: MOD:01450 name: modified N-formyl-L-methionine residue def: "A protein modification that modifies an N-formyl-L-methionine residue." [PubMed:18688235] xref: Origin: "MOD:00030" xref: TermSpec: "N-term" is_a: MOD:01157 ! protein modification categorized by amino acid modified relationship: derives_from MOD:00030 ! N-formyl-L-methionine residue [Term] id: MOD:01451 name: O-phospho-L-serine arising from O-phosphopantetheine-L-serine after neutral loss of pantetheine def: "A protein modification that converts an L-serine residue to O-phosphopantetheine-L-serine with secondary neutral loss of pantetheine resulting in O-phospho-L-serine." [PubMed:17042494, PubMed:18688235] comment: Phosphoserine is generated and detected after the facile elimination of pantetheine from the phosphopantetheine tertiary phosphodiester. See MOD:01452 for alternate origin. subset: PSI-MOD-slim xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 3 H 6 N 1 O 5 P 1" xref: MassAvg: "167.06" xref: MassMono: "166.998359" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00916 ! modified L-serine is_a: MOD:00431 ! modified residue with a secondary neutral loss relationship: derives_from MOD:00159 ! O-phosphopantetheine-L-serine [Term] id: MOD:01452 name: O-phosphopantetheine-L-serine with neutral loss of pantetheine def: "Covalent modification of a peptide or protein amino acid O-phosphopantetheine-L-serine with secondary neutral loss of pantetheine resulting in O-phospho-L-serine." [PubMed:17042494, PubMed:18688235] comment: Phosphoserine is generated and detected after the facile elimination of pantethiene from the phosphopantethiene tertiary phosphodiester. See MOD:01451 for alternate origin. subset: PSI-MOD-slim xref: DiffAvg: "-260.35" xref: DiffFormula: "C -11 H -20 N -2 O -3 P 0 S -1" xref: DiffMono: "-260.119464" xref: Formula: "C 3 H 6 N 1 O 5 P 1" xref: MassAvg: "167.06" xref: MassMono: "166.998359" xref: Origin: "MOD:00159" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00916 ! modified L-serine is_a: MOD:00431 ! modified residue with a secondary neutral loss relationship: derives_from MOD:00159 ! O-phosphopantetheine-L-serine [Term] id: MOD:01453 name: L-glutamic acid 5-methyl ester def: "A protein modification that effectively converts a source amino acid residue to L-glutamate 5-methyl ester." [RESID:AA0072] subset: PSI-MOD-slim synonym: "(2S)-2-amino-5-methoxy-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(5)-methyl L-hydrogen glutamate" EXACT RESID-alternate [] synonym: "2-aminopentanedioic acid 5-methyl ester" EXACT RESID-alternate [] synonym: "5-methyl esterified L-glutamic acid" EXACT PSI-MOD-alternate [] synonym: "5-methyl L-2-aminoglutarate" EXACT RESID-alternate [] synonym: "5-methyl L-glutamate" EXACT RESID-alternate [] synonym: "glutamic acid 5-methyl ester" EXACT RESID-alternate [] synonym: "glutamic acid gamma-methyl ester" EXACT RESID-alternate [] synonym: "L-glutamic acid 5-methyl ester" EXACT RESID-name [] synonym: "O-methyl Glutamyl" EXACT DeltaMass-label [] synonym: "O5MeGlu" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 9 N 1 O 3" xref: MassAvg: "143.14" xref: MassMono: "143.058243" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00393 ! O-methylated residue is_a: MOD:00599 ! monomethylated residue is_a: MOD:00713 ! methylated glutamic acid is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01454 name: N-(DNA-1',2'-dideoxyribos-1'-ylidene)-L-prolinium def: "A protein modification that effectively crosslinks an N-terminal L-proline residue and a strand of DNA at the C-1 of a ribose, freeing the nucleotide base and forming N-(DNA-1',2'-dideoxyribos-1'-ylidene)-L-prolinium." [PubMed:10833024, PubMed:11847126, PubMed:9030608, RESID:AA0494] comment: This linkage is not a Schiff-base [JSG]. synonym: "(1Z,2S)-2-carboxy-1-[(3R,4R)-3,4-dihydroxy-5-(phosphonooxy)pentylidene]pyrrolidinium" EXACT RESID-systematic [] synonym: "DNA glycosylase proline Schiff base intermediate" RELATED RESID-misnomer [] synonym: "N-(DNA-1',2'-dideoxyribos-1'-ylidene)-L-prolinium" EXACT RESID-name [] xref: FormalCharge: "1+" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00750 ! deoxyribonucleic acid linked residue is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:01455 name: O-phosphorylated residue def: "A protein modification that effectively replaces a residue hydroxyl or carboxyl hydrogen with a phosphono group (H2PO3 or 'phosphate')." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OPhosRes" EXACT PSI-MOD-label [] xref: DiffAvg: "79.98" xref: DiffFormula: "H 1 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00696 ! phosphorylated residue [Term] id: MOD:01456 name: N-phosphorylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue amino or imino group with a phosphono group (H2PO3 or 'phosphate')." [PubMed:18688235] subset: PSI-MOD-slim synonym: "NPhosRes" EXACT PSI-MOD-label [] xref: DiffAvg: "79.98" xref: DiffFormula: "H 1 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00696 ! phosphorylated residue [Term] id: MOD:01457 name: L-cysteine (Ser) def: "A protein modification that effectively converts an L-serine residue to L-cysteine (not known as a natural, post-translational modification process)." [PubMed:1849824, PubMed:18688235] synonym: "Cys(Ser)" EXACT PSI-MOD-label [] xref: DiffAvg: "-16.06" xref: DiffFormula: "C 0 H 0 N 0 O 1 S -1" xref: DiffMono: "-15.977156" xref: Formula: "C 3 H 5 N 1 O 1 S 1" xref: MassAvg: "103.14" xref: MassMono: "103.009185" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00749 ! sulfur substitution for oxygen is_a: MOD:00916 ! modified L-serine residue is_a: MOD:02088 ! natural, standard, encoded residue substitution [Term] id: MOD:01458 name: alpha-amino acetylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with an acetyl group." [OMSSA:10, Unimod:1#N-term] subset: PSI-MOD-slim synonym: "N2AcRes" EXACT PSI-MOD-label [] synonym: "ntermacetyl" EXACT OMSSA-label [] xref: DiffAvg: "42.04" xref: DiffFormula: "C 2 H 2 N 0 O 1" xref: DiffMono: "42.010565" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:1" is_a: MOD:00408 ! mono N-acetylated residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:01459 name: 4x(2)H labeled alpha-dimethylamino N-terminal residue def: "A protein modification that effectively converts an N-terminal residue to an 4x(2)H labeled alpha-dimethylamino N-terminal residue." [OMSSA:190, PubMed:14670044, Unimod:199#N-term] comment: Supposed to be alpha-amino and Lys-N6 derivatized by C(2)H2O and reduction. subset: PSI-MOD-slim synonym: "DiMethyl-CHD2" RELATED Unimod-description [] synonym: "Dimethyl:2H(4)" RELATED PSI-MS-label [] synonym: "mod190" EXACT OMSSA-label [] xref: DiffAvg: "32.06" xref: DiffFormula: "C 2 (2)H 4" xref: DiffMono: "32.056407" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:199" is_a: MOD:00552 ! 4x(2)H labeled dimethylated residue [Term] id: MOD:01460 name: alpha-amino methylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a methyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "N2MeRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00602 ! N-methylated residue [Term] id: MOD:01461 name: N-methylated alanine def: "A protein modification that effectively replaces an L-alanine alpha amino hydrogen with a methyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00665 ! methylated alanine is_a: MOD:01460 ! alpha-amino methylated residue [Term] id: MOD:01462 name: N-methylated proline def: "A protein modification that effectively replaces an L-proline alpha imino hydrogen with a methyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00712 ! methylated proline is_a: MOD:01460 ! alpha-amino methylated residue [Term] id: MOD:01463 name: N-methylated methionine def: "A protein modification that effectively replaces an L-methionine alpha amino hydrogen with a methyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00716 ! methylated methionine is_a: MOD:01460 ! alpha-amino methylated residue [Term] id: MOD:01464 name: protonated L-methionine (L-methioninium) residue def: "A protein modification that effectively converts an L-methionine residue to an L-methioninium (protonated L-methionine)." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0 S 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "C 5 H 11 N 1 O 1 S 1" xref: MassAvg: "133.21" xref: MassMono: "133.055586" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01700 ! alpha-amino protonated residue [Term] id: MOD:01465 name: N,N,N-trimethyl-L-methionine (from L-methioninium) def: "A protein modification that effectively converts an L-methioninium (protonated L-methionine) residue to an N6,N6,N6-trimethyl-L-methionine." [PubMed:18688235] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with an aminium, protonated primary amino, group. This process accounts only for trimethylation and not protonation. The alternative N2Me3+Met process (MOD:01382) accounts for both protonation and trimethylation. subset: PSI-MOD-slim synonym: "N2Me3Met" EXACT PSI-MOD-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6 N 0 O 0 S 0" xref: DiffMono: "42.046402" xref: FormalCharge: "1+" xref: Formula: "C 8 H 17 N 1 O 1 S 1" xref: MassAvg: "175.29" xref: MassMono: "175.102537" xref: Origin: "MOD:001464" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:01687 ! alpha-amino trimethylated residue relationship: derives_from MOD:01464 ! protonated L-methionine (L-methioninium) residue [Term] id: MOD:01466 name: menadione quinone derivative - site C def: "modification from Unimod Chemical derivative" [PubMed:15939799, Unimod:302#K] synonym: "Menadione" RELATED Unimod-interim [] synonym: "Menadione quinone derivative" RELATED Unimod-description [] xref: DiffAvg: "170.17" xref: DiffFormula: "C 11 H 6 O 2" xref: DiffMono: "170.036779" xref: Formula: "C 14 H 11 N 1 O 3 S 1" xref: MassAvg: "273.31" xref: MassMono: "273.045964" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:302" is_a: MOD:00621 ! menadione quinone derivative is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01467 name: menadione quinone derivative - site K def: "modification from Unimod Chemical derivative" [PubMed:15939799, Unimod:302#K] synonym: "Menadione" RELATED Unimod-interim [] synonym: "Menadione quinone derivative" RELATED Unimod-description [] xref: DiffAvg: "170.17" xref: DiffFormula: "C 11 H 6 O 2" xref: DiffMono: "170.036779" xref: Formula: "C 17 H 18 N 2 O 3" xref: MassAvg: "298.34" xref: MassMono: "298.131742" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:302" is_a: MOD:00621 ! menadione quinone derivative is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01468 name: L-selenocysteinyl molybdenum bis(molybdopterin guanine dinucleotide) (Cys) def: "A protein modification that effectively converts an L-cysteine residue to L-selenocysteinyl molybdenum bis(molybdopterin guanine dinucleotide) (not known as a natural, post-translational modification process)." [PubMed:14235557, PubMed:2211698, PubMed:8052647, PubMed:9036855, RESID:AA0248#CYS, Unimod:415] comment: This entry is for the artifactual formation of L-selenocysteinyl molybdenum bis(molybdopterin guanine dinucleotide) from cysteine. For natural formation from L-selenocysteine, use MOD:00253. synonym: "2-amino-5,6-dimercapto-7-methyl-3,7,8a,9-tetrahydro-8-oxa-1,3,9,10-tetraazaanthracen-4-one guanosine dinucleotide" EXACT RESID-alternate [] synonym: "bis[8-amino-1a,2,4a,5,6,7,10-heptahydro-2-(trihydrogen diphosphate 5'-ester with guanosine)methyl-6-oxo-3,4-disulfanyl-pteridino[6,7-5,6]pyranoato-S3,S4]-selenocysteinyl-Se-molybdenum" EXACT RESID-systematic [] synonym: "formate dehydrogenase selenocysteine molybdenum cofactor" EXACT RESID-alternate [] synonym: "L-selenocysteinyl molybdenum bis(molybdopterin guanine dinucleotide)" RELATED Unimod-description [] synonym: "L-selenocysteinyl molybdenum bis(molybdopterin guanine dinucleotide)" EXACT RESID-name [] synonym: "molybdopterin-se" RELATED Unimod-interim [] synonym: "MolybdopterinGD+Delta:S(-1)Se(1)" RELATED PSI-MS-label [] xref: DiffAvg: "1618.93" xref: DiffFormula: "C 40 H 47 Mo 1 N 20 O 26 P 4 S 3 Se 1" xref: DiffMono: "1620.930226" xref: Formula: "C 43 H 52 Mo 1 N 21 O 27 P 4 S 4 Se 1" xref: MassAvg: "1722.07" xref: MassMono: "1723.939410" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:415" is_a: MOD:00744 ! molybdenum pterin containing modification is_a: MOD:02073 ! metal or metal cluster coordinated L-selenocysteine residue [Term] id: MOD:01469 name: L-selenocysteinyl tungsten bis(molybdopterin guanine dinucleotide) (Cys) def: "A protein modification that effectively converts an L-cysteine residue to L-selenocysteinyl tungsten bis(molybdopterin guanine dinucleotide) (not known as a natural, post-translational modification process)." [PubMed:11372198, PubMed:12220497, RESID:AA0376#CYS] comment: This entry is for the artifactual formation of L-selenocysteinyl tungsten bis(molybdopterin guanine dinucleotide) from cysteine. For natural formation from L-selenocysteine, use MOD:00381. xref: DiffAvg: "1738.88" xref: DiffFormula: "C 40 H 47 N 20 O 26 P 4 S 4 Se 1 W 1" xref: DiffMono: "1738.947820" xref: Formula: "C 43 H 52 N 21 O 27 P 4 S 5 Se 1 W 1" xref: MassAvg: "1842.02" xref: MassMono: "1841.957004" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00746 ! tungsten containing modified residue is_a: MOD:00748 ! pterin modified residue is_a: MOD:02073 ! metal or metal cluster coordinated L-selenocysteine residue [Term] id: MOD:01470 name: (E)-dehydrobutyrine (Thr) def: "A protein modification that effectively converts an L-threonine residue to (E)-dehydrobutyrine." [DeltaMass:0, PubMed:1547888, PubMed:20805503, PubMed:3769923, RESID:AA0547] subset: PSI-MOD-slim synonym: "(2E)-2-aminobut-2-enoic acid" EXACT RESID-systematic [] synonym: "(E)-2-amino-2-butenoic acid" EXACT RESID-alternate [] synonym: "(E)-2-aminobutenoic acid" EXACT RESID-alternate [] synonym: "(E)-dehydrobutyrine" EXACT RESID-name [] synonym: "(E)dHAbu" EXACT PSI-MOD-label [] synonym: "2,3-didehydrobutyrine" EXACT RESID-alternate [] synonym: "3-methyldehydroalanine" EXACT RESID-alternate [] synonym: "alpha,beta-dehydroaminobutyric acid" EXACT RESID-alternate [] synonym: "anhydrothreonine" EXACT RESID-alternate [] synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] synonym: "Dehydroamino butyric acid" EXACT DeltaMass-label [] synonym: "Dhb" EXACT RESID-alternate [] synonym: "methyl-dehydroalanine" EXACT RESID-alternate [] synonym: "MOD_RES (E)-2,3-didehydrobutyrine" EXACT UniProt-feature [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 4 H 5 N 1 O 1" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0441" is_a: MOD:00190 ! dehydrobutyrine (Thr) [Term] id: MOD:01471 name: (Z)-dehydrobutyrine (Thr) def: "A protein modification that effectively converts an L-threonine residue to (Z)-dehydrobutyrine." [DeltaMass:0, PubMed:1547888, PubMed:3769923, RESID:AA0182] subset: PSI-MOD-slim synonym: "(2Z)-2-aminobut-2-enoic acid" EXACT RESID-systematic [] synonym: "(Z)-2-amino-2-butenoic acid" EXACT RESID-alternate [] synonym: "(Z)-2-aminobutenoic acid" EXACT RESID-alternate [] synonym: "(Z)-dehydrobutyrine" EXACT RESID-name [] synonym: "(Z)dHAbu" EXACT PSI-MOD-label [] synonym: "2,3-didehydrobutyrine" EXACT RESID-alternate [] synonym: "3-methyldehydroalanine" EXACT RESID-alternate [] synonym: "alpha,beta-dehydroaminobutyric acid" EXACT RESID-alternate [] synonym: "anhydrothreonine" EXACT RESID-alternate [] synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] synonym: "Dehydroamino butyric acid" EXACT DeltaMass-label [] synonym: "Dhb" EXACT RESID-alternate [] synonym: "methyl-dehydroalanine" EXACT RESID-alternate [] synonym: "MOD_RES (Z)-2,3-didehydrobutyrine" EXACT UniProt-feature [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 4 H 5 N 1 O 1" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0440" is_a: MOD:00190 ! dehydrobutyrine (Thr) [Term] id: MOD:01472 name: reduced residue def: "A protein modification that effectively either adds neutral hydrogen atoms (proton and electron), or removes oxygen atoms from a residue with or without the addition of hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim synonym: "RedRes" EXACT PSI-MOD-label [] is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01473 name: hydrogenated residue def: "A protein modification that effectively adds neutral hydrogen atoms (proton and electron) to a residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "HRes" EXACT PSI-MOD-label [] is_a: MOD:01472 ! reduced residue [Term] id: MOD:01474 name: O-[S-(carboxymethyl)phosphopantetheine]-L-serine def: "A protein modification that effectively converts an L-serine residue to O-[S-(carboxymethyl)phosphopantetheine]-L-serine." [PubMed:18688235] comment: This modification results from the derivatization of the pantetheine sulfhydryl with iodoacetic acid [JSG]. xref: DiffAvg: "398.37" xref: DiffFormula: "C 13 H 23 N 2 O 8 P 1 S 1" xref: DiffMono: "398.091273" xref: Formula: "C 16 H 28 N 3 O 10 P 1 S 1" xref: MassAvg: "485.44" xref: MassMono: "485.123302" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:00399 ! iodoacetic acid derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue relationship: derives_from MOD:00159 ! O-phosphopantetheine-L-serine [Term] id: MOD:01475 name: O-[S-(carboxamidomethyl)phosphopantetheine]-L-serine def: "A protein modification that effectively converts an L-serine residue to O-[S-(carboxamidomethyl)phosphopantetheine]-L-serine." [PubMed:18688235] comment: This modification results from the derivatization of the pantetheine sulfhydryl with iodoacetamide [JSG]. xref: DiffAvg: "397.38" xref: DiffFormula: "C 13 H 24 N 3 O 7 P 1 S 1" xref: DiffMono: "397.107258" xref: Formula: "C 16 H 29 N 4 O 9 P 1 S 1" xref: MassAvg: "484.46" xref: MassMono: "484.139286" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:00397 ! iodoacetamide derivatized residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue relationship: derives_from MOD:00159 ! O-phosphopantetheine-L-serine [Term] id: MOD:01476 name: 2'-fluoro-L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to an 2'-fluoro-L-fluorophenylalanine." [PubMed:18688235, PubMed:8172898] synonym: "2-fluorophenylalanine" EXACT PSI-MOD-alternate [] synonym: "o-fluorophenylalanine" EXACT PSI-MOD-alternate [] synonym: "ortho-fluorophenylalanine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "17.99" xref: DiffFormula: "C 0 F 1 H -1 N 0 O 0" xref: DiffMono: "17.990578" xref: Formula: "C 9 F 1 H 8 N 1 O 1" xref: MassAvg: "165.17" xref: MassMono: "165.058992" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01227 ! monofluorinated L-phenylalanine [Term] id: MOD:01477 name: 3'-fluoro-L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue to an 3'-fluoro-L-fluorophenylalanine." [PubMed:18688235, PubMed:8172898] synonym: "3-fluorophenylalanine" EXACT PSI-MOD-alternate [] synonym: "m-fluorophenylalanine" EXACT PSI-MOD-alternate [] synonym: "meta-fluorophenylalanine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "17.99" xref: DiffFormula: "C 0 F 1 H -1 N 0 O 0" xref: DiffMono: "17.990578" xref: Formula: "C 9 F 1 H 8 N 1 O 1" xref: MassAvg: "165.17" xref: MassMono: "165.058992" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01227 ! monofluorinated L-phenylalanine [Term] id: MOD:01478 name: 4'-fluoro-L-phenylalanine def: "A protein modification that effectively converts an L-phenylalanine residue into an 4'-fluoro-L-fluorophenylalanine." [PubMed:18688235, PubMed:8172898] synonym: "4-fluorophenylalanine" EXACT PSI-MOD-alternate [] synonym: "p-fluorophenylalanine" EXACT PSI-MOD-alternate [] synonym: "para-fluorophenylalanine" EXACT PSI-MOD-alternate [] synonym: "rho-fluorophenylalanine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "17.99" xref: DiffFormula: "C 0 F 1 H -1 N 0 O 0" xref: DiffMono: "17.990578" xref: Formula: "C 9 F 1 H 8 N 1 O 1" xref: MassAvg: "165.17" xref: MassMono: "165.058992" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01227 ! monofluorinated L-phenylalanine [Term] id: MOD:01479 name: 4'-fluoro-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue into an 4'-fluoro-L-tryptophan." [PubMed:18688235, PubMed:8172898] synonym: "4-fluorotryptophan" EXACT PSI-MOD-alternate [] xref: DiffAvg: "17.99" xref: DiffFormula: "F 1 H -1" xref: DiffMono: "17.990578" xref: Formula: "C 11 F 1 H 9 N 2 O 1" xref: MassAvg: "204.20" xref: MassMono: "204.069891" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01226 ! monofluorinated L-tryptophan [Term] id: MOD:01480 name: 5'-fluoro-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue into an 5'-fluoro-L-tryptophan." [PubMed:18688235, PubMed:8172898] synonym: "5-fluorotryptophan" EXACT PSI-MOD-alternate [] xref: DiffAvg: "17.99" xref: DiffFormula: "F 1 H -1" xref: DiffMono: "17.990578" xref: Formula: "C 11 F 1 H 9 N 2 O 1" xref: MassAvg: "204.20" xref: MassMono: "204.069891" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01226 ! monofluorinated L-tryptophan [Term] id: MOD:01481 name: 6'-fluoro-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue into an 6'-fluoro-L-tryptophan." [PubMed:18688235, PubMed:8172898] synonym: "6-fluorotryptophan" EXACT PSI-MOD-alternate [] xref: DiffAvg: "17.99" xref: DiffFormula: "F 1 H -1" xref: DiffMono: "17.990578" xref: Formula: "C 11 F 1 H 9 N 2 O 1" xref: MassAvg: "204.20" xref: MassMono: "204.069891" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01226 ! monofluorinated L-tryptophan [Term] id: MOD:01482 name: calcium containing modified residue def: "A protein modification that effectively substitutes a calcium atom or a cluster containing calcium for hydrogen atoms, or that coordinates a calcium ion." [PubMed:18688235] subset: PSI-MOD-slim synonym: "CaRes" EXACT PSI-MOD-label [] is_a: MOD:00698 ! metal or metal cluster containing modified residue [Term] id: MOD:01483 name: O-formylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with a formyloxy group." [PubMed:18688235] synonym: "OFoRes" EXACT PSI-MOD-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 O 1" xref: DiffMono: "27.994915" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00493 ! formylated residue is_a: MOD:00671 ! O-acylated residue [Term] id: MOD:01484 name: N6-(L-isoglutamyl)-L-lysine (Glu) def: "A protein modification that effectively crosslinks an L-glutamic acid residue and an L-lysine residue by an isopeptide bond to form N6-(L-isoglutamyl)-L-lysine and the release of water." [ChEBI:21863, PubMed:19015515, RESID:AA0124#GLU] comment: Cross-link 2. This cross-link is usually made by glutamine and releases ammonia, rather than glutamic acid and requiring the consumption of ATP. synonym: "(2S)-2-amino-6-([(4S)-4-amino-4-carboxybutanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-6-([4-azanyl-4-carboxybutanoyl]azanyl)hexanoic acid" EXACT RESID-alternate [] synonym: "5-glutamyl N6-lysine" EXACT RESID-alternate [] synonym: "N alpha -(gamma-Glutamyl)-lysine" EXACT DeltaMass-label [] synonym: "N(epsilon)-(gamma-glutamyl)lysine" EXACT RESID-alternate [] synonym: "N6-(L-isoglutamyl)-L-lysine" EXACT RESID-name [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 11 H 17 N 3 O 3" xref: MassAvg: "239.27" xref: MassMono: "239.126991" xref: Origin: "K, E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01630 ! N6-(L-isoglutamyl)-L-lysine [Term] id: MOD:01485 name: iTRAQ4plex-114 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ4plex-114 reporter+balance group." [Unimod:532] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 114" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ114" RELATED Unimod-interim [] synonym: "iTRAQ4plex114" RELATED PSI-MS-label [] xref: DiffAvg: "144.11" xref: DiffFormula: "(12)C 5 (13)C 2 H 12 N 2 (18)O 1" xref: DiffMono: "144.105919" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:532" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01430 ! (18)O isotope tagged reagent is_a: MOD:01516 ! modifications with monoisotopic mass diferences that are nominally equal at 144.099-144.106 Da. is_a: MOD:01518 ! iTRAQ4plex reporter+balance reagent acylated residue [Term] id: MOD:01486 name: iTRAQ4plex-114 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ4plex-114 reporter+balance group." [OMSSA:167, Unimod:532#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 114" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ114" RELATED Unimod-interim [] synonym: "iTRAQ114nterm" EXACT OMSSA-label [] synonym: "iTRAQ4plex114" RELATED PSI-MS-label [] xref: DiffAvg: "144.11" xref: DiffFormula: "(12)C 5 (13)C 2 H 12 N 2 (18)O 1" xref: DiffMono: "144.105919" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:532" is_a: MOD:01485 ! iTRAQ4plex-114 reporter+balance reagent acylated residue is_a: MOD:01711 ! iTRAQ4plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01487 name: iTRAQ4plex-114 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ4plex-114 reporter+balance group." [OMSSA:168, Unimod:532#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 114" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ114" RELATED Unimod-interim [] synonym: "iTRAQ114K" EXACT OMSSA-label [] synonym: "iTRAQ4plex114" RELATED PSI-MS-label [] xref: DiffAvg: "144.11" xref: DiffFormula: "(12)C 5 (13)C 2 H 12 N 2 (18)O 1" xref: DiffMono: "144.105919" xref: Formula: "(12)C 11 (13)C 2 H 24 N 4 (16)O 1 (18)O 1" xref: MassAvg: "272.20" xref: MassMono: "272.200882" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:532" is_a: MOD:01485 ! iTRAQ4plex-114 reporter+balance reagent ac ylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01488 name: iTRAQ4plex-114 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ4plex-114 reporter+balance group." [OMSSA:169, Unimod:532#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 114" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ114" RELATED Unimod-interim [] synonym: "iTRAQ114Y" EXACT OMSSA-label [] synonym: "iTRAQ4plex114" RELATED PSI-MS-label [] xref: DiffAvg: "144.11" xref: DiffFormula: "(12)C 5 (13)C 2 H 12 N 2 (18)O 1" xref: DiffMono: "144.105919" xref: Formula: "(12)C 14 (13)C 2 H 21 N 3 (16)O 2 (18)O 1" xref: MassAvg: "307.17" xref: MassMono: "307.169248" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:532" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01485 ! iTRAQ4plex-114 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01489 name: iTRAQ4plex-114 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ4plex-114 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex114" RELATED PSI-MS-label [] xref: DiffAvg: "144.11" xref: DiffFormula: "(12)C 5 (13)C 2 H 12 N 2 (18)O 1" xref: DiffMono: "144.105919" xref: Formula: "(12)C 11 (13)C 2 H 19 N 5 O 1 (18)O 1" xref: MassAvg: "281.16" xref: MassMono: "281.164831" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01485 ! iTRAQ4plex-114 reporter+balance reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue [Term] id: MOD:01490 name: iTRAQ4plex-114 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ4plex-114 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex114" RELATED PSI-MS-label [] xref: DiffAvg: "144.11" xref: DiffFormula: "(12)C 5 (13)C 2 H 12 N 2 (18)O 1" xref: DiffMono: "144.105919" xref: Formula: "(12)C 8 (13)C 2 H 17 N 3 O 2 (18)O 1" xref: MassAvg: "231.14" xref: MassMono: "231.137947" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01485 ! iTRAQ4plex-114 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01491 name: iTRAQ4plex-114 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ4plex-114 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex114" RELATED PSI-MS-label [] xref: DiffAvg: "144.11" xref: DiffFormula: "(12)C 5 (13)C 2 H 12 N 2 (18)O 1" xref: DiffMono: "144.105919" xref: Formula: "(12)C 9 (13)C 2 H 19 N 3 O 2 (18)O 1" xref: MassAvg: "245.15" xref: MassMono: "245.153598" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01485 ! iTRAQ4plex-114 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01492 name: iTRAQ4plex-115 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ4plex-115 reporter+balance group." [Unimod:533] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ115" RELATED Unimod-interim [] synonym: "iTRAQ4plex115" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 6 (13)C 1 H 12 (14)N 1 (15)N 1 (18)O 1" xref: DiffMono: "144.099599" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:533" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01430 ! (18)O isotope tagged reagent is_a: MOD:01516 ! modifications with monoisotopic mass diferences that are nominally equal at 144.099-144.106 Da. is_a: MOD:01518 ! iTRAQ4plex reporter+balance reagent acylated residue [Term] id: MOD:01493 name: iTRAQ4plex-115 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ4plex-115 reporter+balance group." [OMSSA:170, Unimod:533#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ115" RELATED Unimod-interim [] synonym: "iTRAQ115nterm" EXACT OMSSA-label [] synonym: "iTRAQ4plex115" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 6 (13)C 1 H 12 (14)N 1 (15)N 1 (18)O 1" xref: DiffMono: "144.099599" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:533" is_a: MOD:01492 ! iTRAQ4plex-115 reporter+balance reagent acylated residue is_a: MOD:01711 ! iTRAQ4plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01494 name: iTRAQ4plex-115 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ4plex-115 reporter+balance group." [OMSSA:171, Unimod:533#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ115" RELATED Unimod-interim [] synonym: "iTRAQ115K" EXACT OMSSA-label [] synonym: "iTRAQ4plex115" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 6 (13)C 1 H 12 (14)N 1 (15)N 1 (18)O 1" xref: DiffMono: "144.099599" xref: Formula: "(12)C 12 (13)C 1 H 24 (14)N 3 (15)N 1 (16)O 1 (18)O 1" xref: MassAvg: "272.19" xref: MassMono: "272.194562" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:533" is_a: MOD:01492 ! iTRAQ4plex-115 reporter+balance reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01495 name: iTRAQ4plex-115 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ4plex-115 reporter+balance group." [OMSSA:172, Unimod:533#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ115" RELATED Unimod-interim [] synonym: "iTRAQ115Y" EXACT OMSSA-label [] synonym: "iTRAQ4plex115" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 6 (13)C 1 H 12 (14)N 1 (15)N 1 (18)O 1" xref: DiffMono: "144.099599" xref: Formula: "(12)C 15 (13)C 1 H 21 (14)N 2 (15)N 1 (16)O 2 (18)O 1" xref: MassAvg: "307.16" xref: MassMono: "307.162928" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:533" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01492 ! iTRAQ4plex-115 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01496 name: iTRAQ4plex-115 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ4plex-115 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex115" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 6 (13)C 1 H 12 (14)N 1 (15)N 1 (18)O 1" xref: DiffMono: "144.099599" xref: Formula: "(12)C 12 (13)C 1 H 19 (14)N 4 (15)N 1 (16)O 1 (18)O 1" xref: MassAvg: "281.16" xref: MassMono: "281.158511" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01492 ! iTRAQ4plex-115 reporter+balance reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue [Term] id: MOD:01497 name: iTRAQ4plex-115 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ4plex-115 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex115" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 6 (13)C 1 H 12 (14)N 1 (15)N 1 (18)O 1" xref: DiffMono: "144.099599" xref: Formula: "(12)C 9 (13)C 1 H 17 N 1 (14)N 1 (15)N 1 (16)O 2 (18)O 1" xref: MassAvg: "231.13" xref: MassMono: "231.131628" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01492 ! iTRAQ4plex-115 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01498 name: iTRAQ4plex-115 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ4plex-115 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex115" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 6 (13)C 1 H 12 (14)N 1 (15)N 1 (18)O 1" xref: DiffMono: "144.099599" xref: Formula: "(12)C 10 (13)C 1 H 19 (14)N 2 (15)N 1 (16)O 2 (18)O 1" xref: MassAvg: "245.15" xref: MassMono: "245.147278" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01492 ! iTRAQ4plex-115 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01499 name: iTRAQ4plex-116 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ4plex-116 reporter+balance group." [Unimod:214] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01517 ! modifications with monoisotopic mass differences that are nominally equal at 144.102062 Da is_a: MOD:01518 ! iTRAQ4plex reporter+balance reagent acylated residue [Term] id: MOD:01500 name: iTRAQ4plex-116 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ4plex-116 reporter+balance group." [OMSSA:173, Unimod:214#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ116nterm" EXACT OMSSA-label [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:214" is_a: MOD:01499 ! iTRAQ4plex-116 reporter+balance reagent acylated residue is_a: MOD:01711 ! iTRAQ4plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01501 name: iTRAQ4plex-116 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ4plex-116 reporter+balance group." [OMSSA:174, Unimod:214#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ116K" EXACT OMSSA-label [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 10 (13)C 3 H 24 N 2 (14)N 1 (15)N 1 O 1 (16)O 1" xref: MassAvg: "272.20" xref: MassMono: "272.197025" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" is_a: MOD:01499 ! iTRAQ4plex-116 reporter+balance reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01502 name: iTRAQ4plex-116 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ4plex-116 reporter+balance group." [OMSSA:175, Unimod:214#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ116Y" EXACT OMSSA-label [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 13 (13)C 3 H 21 N 1 (14)N 1 (15)N 1 O 2 (16)O 1" xref: MassAvg: "307.17" xref: MassMono: "307.165391" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01499 ! iTRAQ4plex-116 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01503 name: iTRAQ4plex-116 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ4plex-116 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 10 (13)C 3 H 19 N 3 (14)N 1 (15)N 1 (16)O 2" xref: MassAvg: "281.16" xref: MassMono: "281.160974" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01499 ! iTRAQ4plex-116 reporter+balance reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue [Term] id: MOD:01504 name: iTRAQ4plex-116 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ4plex-116 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 7 (13)C 3 H 17 (14)N 2 (15)N 1 (16)O 3" xref: MassAvg: "231.13" xref: MassMono: "231.134091" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01499 ! iTRAQ4plex-116 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01505 name: iTRAQ4plex-116 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ4plex-116 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 8 (13)C 3 H 19 (14)N 2 (15)N 1 (16)O 3" xref: MassAvg: "245.15" xref: MassMono: "245.149741" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01499 ! iTRAQ4plex-116 reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01506 name: iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ4plex-117 reporter+balance group." [Unimod:214, Unimod:889] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "mTRAQ heavy" RELATED Unimod-description [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" xref: Unimod: "Unimod:889" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01517 ! modifications with monoisotopic mass differences that are nominally equal at 144.102062 Da is_a: MOD:01518 ! iTRAQ4plex reporter+balance reagent acylated residue is_a: MOD:01863 ! mTRAQ reporter+balance reagent acylated residue [Term] id: MOD:01507 name: iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ4plex-117 reporter+balance group." [OMSSA:176, OMSSA:211, Unimod:214#N-term, Unimod:889#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ117nterm" EXACT OMSSA-label [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "mTRAQ heavy" RELATED Unimod-description [] synonym: "mTRAQ heavy on nterm" EXACT OMSSA-label [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:214" xref: Unimod: "Unimod:889" is_a: MOD:01506 ! iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue is_a: MOD:01711 ! iTRAQ4plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01508 name: iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ4plex-117 reporter+balance group." [OMSSA:177, OMSSA:212, Unimod:214#K, Unimod:889#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ117K" EXACT OMSSA-label [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "mTRAQ heavy" RELATED Unimod-description [] synonym: "mTRAQ heavy on K" EXACT OMSSA-label [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 10 (13)C 3 H 24 N 2 (14)N 1 (15)N 1 O 1 (16)O 1" xref: MassAvg: "272.20" xref: MassMono: "272.197025" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" is_a: MOD:01506 ! iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01509 name: iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ4plex-117 reporter+balance group." [OMSSA:178, OMSSA:213, Unimod:214#Y, Unimod:889#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] synonym: "iTRAQ117Y" EXACT OMSSA-label [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] synonym: "mTRAQ heavy" RELATED Unimod-description [] synonym: "mTRAQ heavy on Y" EXACT OMSSA-label [] synonym: "Representative mass and accurate mass for 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 13 (13)C 3 H 21 N 1 (14)N 1 (15)N 1 O 2 (16)O 1" xref: MassAvg: "307.17" xref: MassMono: "307.165391" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" xref: Unimod: "Unimod:889" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01506 ! iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01510 name: iTRAQ4plex-117 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ4plex-117 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 10 (13)C 3 H 19 (14)N 4 (15)N 1 (16)O 2" xref: MassAvg: "281.16" xref: MassMono: "281.160974" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01506 ! iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue [Term] id: MOD:01511 name: iTRAQ4plex-117 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ4plex-117 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 7 (13)C 3 H 17 (14)N 2 (15)N 1 (16)O 3" xref: MassAvg: "231.13" xref: MassMono: "231.134091" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01506 ! iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01512 name: iTRAQ4plex-117 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ4plex-117 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ4plex" RELATED PSI-MS-label [] xref: DiffAvg: "144.10" xref: DiffFormula: "(12)C 4 (13)C 3 H 12 (14)N 1 (15)N 1 (16)O 1" xref: DiffMono: "144.102062" xref: Formula: "(12)C 8 (13)C 3 H 19 (14)N 2 (15)N 1 (16)O 3" xref: MassAvg: "245.15" xref: MassMono: "245.149741" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01506 ! iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue is_a: MOD:01713 ! iTRAQ4plex reporter+balance reagent O-acylated residue [Term] id: MOD:01513 name: modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.1 Da def: "Modifications that have monoisotopic mass differences from their respective origins that are nominally equal (sometimes called isobaric) at a resolution below 0.1 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00538 ! protein modification categorized by isobaric sets [Term] id: MOD:01514 name: modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.01 Da def: "Modifications that have monoisotopic mass differences from their respective origins that are nominally equal (sometimes called isobaric) at a resolution below 0.01 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01513 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.1 Da [Term] id: MOD:01515 name: modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.000001 Da def: "Modifications that have monoisotopic mass differences from their respective origins that are nominally equal (sometimes called isobaric) at a resolution below 0.000001 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01514 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.01 Da [Term] id: MOD:01516 name: modifications with monoisotopic mass diferences that are nominally equal at 144.099-144.106 Da. def: "Modifications that have monoisotopic mass differences from their respective origins of 144.099-144.106 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01514 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.01 Da [Term] id: MOD:01517 name: modifications with monoisotopic mass differences that are nominally equal at 144.102062 Da def: "Modifications that have monoisotopic mass differences from their respective origins of 144.102062 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01515 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.000001 Da is_a: MOD:01516 ! modifications with monoisotopic mass diferences that are nominally equal at 144.099-144.106 Da. [Term] id: MOD:01518 name: iTRAQ4plex reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with one of the Applied Biosystems iTRAQ4plex reagent reporter+balance groups." [Unimod:214] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:01705 ! isotope tagged reagent acylated residue [Term] id: MOD:01519 name: reporter fragment def: "A distinct molecular entity produced from a protein or a protein modification as the result of a fragmentation process." [PubMed:18688235] comment: The reporter fragment is either itself a modification consisting of atoms derived from the original amino acid residues, or its detection can be taken as evidence that particular modified residues had been present. subset: PSI-MOD-slim is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01520 name: modification reporter fragment def: "A distinct molecular entity produced as the result of a fragmentation process performed on a particular modified residue." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01519 ! reporter fragment [Term] id: MOD:01521 name: iTRAQ4plex reporter fragment def: "A protein modification reporter fragment produced by an Applied Biosystems iTRAQ4plex reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01520 ! modification reporter fragment [Term] id: MOD:01522 name: iTRAQ4plex-114 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ4plex 114 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 5 (13)C 1 H 13 (14)N 2" xref: MassAvg: "114.11" xref: MassMono: "114.110680" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01521 ! iTRAQ4plex reporter fragment relationship: derives_from MOD:01485 ! iTRAQ4plex-114 reporter+balance reagent acylated residue [Term] id: MOD:01523 name: iTRAQ4plex-115 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ4plex 115 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 5 (13)C 1 H 13 (14)N 1 (15)N 1" xref: MassAvg: "115.11" xref: MassMono: "115.107715" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01521 ! iTRAQ4plex reporter fragment relationship: derives_from MOD:01492 ! iTRAQ4plex-115 reporter+balance reagent acylated residue [Term] id: MOD:01524 name: iTRAQ4plex-116 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ4plex 116 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 4 (13)C 2 H 13 (14)N 1 (15)N 1" xref: MassAvg: "116.11" xref: MassMono: "116.111069" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01521 ! iTRAQ4plex reporter fragment relationship: derives_from MOD:01499 ! iTRAQ4plex-116 reporter+balance reagent acylated residue [Term] id: MOD:01525 name: iTRAQ4plex-117, mTRAQ heavy, reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ4plex 117 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 3 (13)C 3 H 13 (14)N 1 (15)N 1" xref: MassAvg: "117.11" xref: MassMono: "117.114424" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01521 ! iTRAQ4plex reporter fragment is_a: MOD:01870 ! mTRAQ reporter fragment relationship: derives_from MOD:01506 ! iTRAQ4plex-117, mTRAQ heavy, reporter+balance reagent acylated residue [Term] id: MOD:01526 name: iTRAQ8plex reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with one of the Applied Biosystems iTRAQ8plex reagent reporter+balance groups." [Unimod:730] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:01705 ! isotope tagged reagent acylated residue [Term] id: MOD:01527 name: residue reporter fragment def: "A distinct molecular entity produced from a particular amino acid residue as the result of a fragmentation process." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01519 ! reporter fragment [Term] id: MOD:01528 name: iTRAQ8plex-113 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-113 reporter+balance group." [Unimod:730] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01591 ! modifications with monoisotopic mass differences that are nominally equal at 304.205359 Da [Term] id: MOD:01529 name: iTRAQ8plex-113 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-113 reporter+balance group." [Unimod:730#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:730" is_a: MOD:01528 ! iTRAQ8plex-113 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01530 name: iTRAQ8plex-113 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-113 reporter+balance group." [Unimod:730#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 36 (14)N 5 (15)N 1 (16)O 4" xref: MassAvg: "432.30" xref: MassMono: "432.300322" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01528 ! iTRAQ8plex-113 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01531 name: iTRAQ8plex-113 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-113 reporter+balance group." [Unimod:730#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 16 (13)C 7 H 33 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "467.27" xref: MassMono: "467.268688" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01528 ! iTRAQ8plex-113 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01532 name: iTRAQ8plex-113 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-113 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 31 (14)N 6 (15)N 1 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.264271" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01528 ! iTRAQ8plex-113 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01533 name: iTRAQ8plex-113 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-113 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 10 (13)C 7 H 29 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "391.24" xref: MassMono: "391.237388" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01528 ! iTRAQ8plex-113 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01534 name: iTRAQ8plex-113 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-113 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 11 (13)C 7 H 31 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.253038" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01528 ! iTRAQ8plex-113 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01535 name: iTRAQ8plex-114 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-114 reporter+balance group." [Unimod:730] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01591 ! modifications with monoisotopic mass differences that are nominally equal at 304.205359 Da [Term] id: MOD:01536 name: iTRAQ8plex-114 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-114 reporter+balance group." [Unimod:730#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:730" is_a: MOD:01535 ! iTRAQ8plex-114 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01537 name: iTRAQ8plex-114 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-114 reporter+balance group." [Unimod:730#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 36 (14)N 5 (15)N 1 (16)O 4" xref: MassAvg: "432.30" xref: MassMono: "432.300322" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01535 ! iTRAQ8plex-114 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01538 name: iTRAQ8plex-114 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-114 reporter+balance group." [Unimod:730#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 16 (13)C 7 H 33 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "467.27" xref: MassMono: "467.268688" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01535 ! iTRAQ8plex-114 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01539 name: iTRAQ8plex-114 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-114 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 31 (14)N 6 (15)N 1 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.264271" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01535 ! iTRAQ8plex-114 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01540 name: iTRAQ8plex-114 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-114 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 10 (13)C 7 H 29 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "391.24" xref: MassMono: "391.237388" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01535 ! iTRAQ8plex-114 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01541 name: iTRAQ8plex-114 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-114 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 11 (13)C 7 H 31 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.253038" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01535 ! iTRAQ8plex-114 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01542 name: iTRAQ8plex-115 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-115 reporter+balance group." [Unimod:731] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01584 ! modifications with monoisotopic mass differences that are nominally equal at 304.199039 Da [Term] id: MOD:01543 name: iTRAQ8plex-115 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-115 reporter+balance group." [Unimod:731#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:731" is_a: MOD:01542 ! iTRAQ8plex-115 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01544 name: iTRAQ8plex-115 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-115 reporter+balance group." [Unimod:731#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 36 (14)N 4 (15)N 2 (16)O 4" xref: MassAvg: "432.29" xref: MassMono: "432.294002" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01542 ! iTRAQ8plex-115 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01545 name: iTRAQ8plex-115 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-115 reporter+balance group." [Unimod:731#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 17 (13)C 6 H 33 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "467.26" xref: MassMono: "467.262368" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01542 ! iTRAQ8plex-115 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01546 name: iTRAQ8plex-115 reporter+balance reagent N'-derivatized histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-115 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 31 (14)N 5 (15)N 2 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.257951" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01542 ! iTRAQ8plex-115 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01547 name: iTRAQ8plex-115 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-115 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 11 (13)C 6 H 29 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "391.23" xref: MassMono: "391.231068" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01542 ! iTRAQ8plex-115 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01548 name: iTRAQ8plex-115 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-115 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 12 (13)C 6 H 31 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.246718" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01542 ! iTRAQ8plex-115 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01549 name: iTRAQ8plex-116 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-116 reporter+balance group." [Unimod:730] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01591 ! modifications with monoisotopic mass differences that are nominally equal at 304.205359 Da [Term] id: MOD:01550 name: iTRAQ8plex-116 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-116 reporter+balance group." [Unimod:730#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:730" is_a: MOD:01549 ! iTRAQ8plex-116 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01551 name: iTRAQ8plex-116 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-116 reporter+balance group." [Unimod:730#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 36 (14)N 5 (15)N 1 (16)O 4" xref: MassAvg: "432.30" xref: MassMono: "432.300322" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01549 ! iTRAQ8plex-116 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01552 name: iTRAQ8plex-116 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-116 reporter+balance group." [Unimod:730#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 16 (13)C 7 H 33 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "467.27" xref: MassMono: "467.268688" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01549 ! iTRAQ8plex-116 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01553 name: iTRAQ8plex-116 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-116 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 31 (14)N 6 (15)N 1 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.264271" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01549 ! iTRAQ8plex-116 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01554 name: iTRAQ8plex-116 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-116 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 10 (13)C 7 H 29 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "391.24" xref: MassMono: "391.237388" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01549 ! iTRAQ8plex-116 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01555 name: iTRAQ8plex-116 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-116 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 11 (13)C 7 H 31 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.253038" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01549 ! iTRAQ8plex-116 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01556 name: iTRAQ8plex-117 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-117 reporter+balance group." [Unimod:730] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01591 ! modifications with monoisotopic mass differences that are nominally equal at 304.205359 Da [Term] id: MOD:01557 name: iTRAQ8plex-117 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-117 reporter+balance group." [Unimod:730#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:730" is_a: MOD:01556 ! iTRAQ8plex-117 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01558 name: iTRAQ8plex-117 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-117 reporter+balance group." [Unimod:730#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 36 (14)N 5 (15)N 1 (16)O 4" xref: MassAvg: "432.30" xref: MassMono: "432.300322" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:01556 ! iTRAQ8plex-117 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01559 name: iTRAQ8plex-117 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-117 reporter+balance group." [Unimod:730#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex" RELATED Unimod-interim [] synonym: "iTRAQ8plex:13C(7)15N(1)" RELATED Unimod-alternate [] synonym: "Representative mass and accurate mass for 113, 114, 116 & 117" RELATED Unimod-description [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 16 (13)C 7 H 33 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "467.27" xref: MassMono: "467.268688" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:730" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01556 ! iTRAQ8plex-117 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01560 name: iTRAQ8plex-117 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-117 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 13 (13)C 7 H 31 (14)N 6 (15)N 1 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.264271" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01556 ! iTRAQ8plex-117 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01561 name: iTRAQ8plex-117 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-117 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 10 (13)C 7 H 29 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "391.24" xref: MassMono: "391.237388" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01556 ! iTRAQ8plex-117 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01562 name: iTRAQ8plex-117 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-117 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.21" xref: DiffFormula: "(12)C 7 (13)C 7 H 24 (14)N 3 (15)N 1 (16)O 3" xref: DiffMono: "304.205359" xref: Formula: "(12)C 11 (13)C 7 H 31 (14)N 4 (15)N 1 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.253038" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01556 ! iTRAQ8plex-117 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01563 name: iTRAQ8plex-118 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-118 reporter+balance group." [Unimod:731] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01584 ! modifications with monoisotopic mass differences that are nominally equal at 304.199039 Da [Term] id: MOD:01564 name: iTRAQ8plex-118 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-118 reporter+balance group." [Unimod:731#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:731" is_a: MOD:01563 ! iTRAQ8plex-118 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01565 name: iTRAQ8plex-118 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-118 reporter+balance group." [Unimod:731#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 36 (14)N 4 (15)N 2 (16)O 4" xref: MassAvg: "432.29" xref: MassMono: "432.294002" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01563 ! iTRAQ8plex-118 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01566 name: iTRAQ8plex-118 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-118 reporter+balance group." [Unimod:731#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 17 (13)C 6 H 33 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "467.26" xref: MassMono: "467.262368" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01563 ! iTRAQ8plex-118 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01567 name: iTRAQ8plex-118 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-118 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 31 (14)N 5 (15)N 2 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.257951" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01563 ! iTRAQ8plex-118 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01568 name: iTRAQ8plex-118 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-118 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 11 (13)C 6 H 29 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "391.23" xref: MassMono: "391.231068" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01563 ! iTRAQ8plex-118 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01569 name: iTRAQ8plex-118 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-118 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 12 (13)C 6 H 31 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.246718" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01563 ! iTRAQ8plex-118 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01570 name: iTRAQ8plex-119 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-119 reporter+balance group." [Unimod:731] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01584 ! modifications with monoisotopic mass differences that are nominally equal at 304.199039 Da [Term] id: MOD:01571 name: iTRAQ8plex-119 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-119 reporter+balance group." [Unimod:731#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:731" is_a: MOD:01570 ! iTRAQ8plex-119 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01572 name: iTRAQ8plex-119 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-119 reporter+balance group." [Unimod:731#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 36 (14)N 4 (15)N 2 (16)O 4" xref: MassAvg: "432.29" xref: MassMono: "432.294002" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01570 ! iTRAQ8plex-119 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01573 name: iTRAQ8plex-119 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-119 reporter+balance group." [Unimod:731#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 17 (13)C 6 H 33 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "467.26" xref: MassMono: "467.262368" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01570 ! iTRAQ8plex-119 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01574 name: iTRAQ8plex-119 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-119 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 31 (14)N 5 (15)N 2 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.257951" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01570 ! iTRAQ8plex-119 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01575 name: iTRAQ8plex-119 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-119 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 11 (13)C 6 H 29 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "391.23" xref: MassMono: "391.231068" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01570 ! iTRAQ8plex-119 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01576 name: iTRAQ8plex-119 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-119 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 12 (13)C 6 H 31 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.246718" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01570 ! iTRAQ8plex-119 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01577 name: iTRAQ8plex-121 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems iTRAQ8plex-121 reporter+balance group." [Unimod:731] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01526 ! iTRAQ8plex reporter+balance reagent acylated residue is_a: MOD:01584 ! modifications with monoisotopic mass differences that are nominally equal at 304.199039 Da [Term] id: MOD:01578 name: iTRAQ8plex-121 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems iTRAQ8plex-121 reporter+balance group." [Unimod:731#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:731" is_a: MOD:01577 ! iTRAQ8plex-121 reporter+balance reagent acylated residue is_a: MOD:01712 ! iTRAQ8plex reporter+balance reagent acylated N-terminal [Term] id: MOD:01579 name: iTRAQ8plex-121 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Applied Biosystems iTRAQ8plex-121 reporter+balance group." [Unimod:731#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 36 (14)N 4 (15)N 2 (16)O 4" xref: MassAvg: "432.29" xref: MassMono: "432.294002" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:01577 ! iTRAQ8plex-121 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01580 name: iTRAQ8plex-121 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems iTRAQ8plex-121 reporter+balance group." [Unimod:731#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Accurate mass for 115, 118, 119 & 121" RELATED Unimod-description [] synonym: "Applied Biosystems iTRAQ(TM) multiplexed quantitation chemistry" RELATED Unimod-alternate [] synonym: "iTRAQ8plex:13C(6)15N(2)" RELATED Unimod-interim [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 17 (13)C 6 H 33 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "467.26" xref: MassMono: "467.262368" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:731" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01577 ! iTRAQ8plex-121 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01581 name: iTRAQ8plex-121 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Applied Biosystems iTRAQ8plex-121 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 14 (13)C 6 H 31 (14)N 5 (15)N 2 (16)O 4" xref: MassAvg: "441.26" xref: MassMono: "441.257951" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01577 ! iTRAQ8plex-121 reporter+balance reagent acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01582 name: iTRAQ8plex-121 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Applied Biosystems iTRAQ8plex-121 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 11 (13)C 6 H 29 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "391.23" xref: MassMono: "391.231068" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01577 ! iTRAQ8plex-121 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01583 name: iTRAQ8plex-121 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Applied Biosystems iTRAQ8plex-121 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.20" xref: DiffFormula: "(12)C 8 (13)C 6 H 24 (14)N 2 (15)N 2 (16)O 3" xref: DiffMono: "304.199039" xref: Formula: "(12)C 12 (13)C 6 H 31 (14)N 3 (15)N 2 (16)O 5" xref: MassAvg: "405.25" xref: MassMono: "405.246718" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01577 ! iTRAQ8plex-121 reporter+balance reagent acylated residue is_a: MOD:01714 ! iTRAQ8plex reporter+balance reagent O-acylated residue [Term] id: MOD:01584 name: modifications with monoisotopic mass differences that are nominally equal at 304.199039 Da def: "Modifications that have monoisotopic mass differences from their respective origins of 304.199039 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01515 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.000001 Da is_a: MOD:01592 ! modifications with monoisotopic mass differences that are nominally equal at 304.199-304.206 Da [Term] id: MOD:01585 name: O-glycyl-L-serine def: "A protein modification that effectively crosslinks an L-serine residue and a glycine residue by an ester bond to form O-glycyl-L-serine." [PubMed:17502423, RESID:AA0495] comment: Cross-link 2. synonym: "(2S)-2-amino-3-[(aminoacetyl)oxy]propanoic acid" EXACT RESID-systematic [] synonym: "O-(glycyl)-L-serine" EXACT RESID-name [] synonym: "O3-(aminoacetyl)serine" EXACT RESID-alternate [] synonym: "serine glycinate ester" EXACT RESID-alternate [] synonym: "CROSSLNK Glycyl serine ester (Ser-Gly) (interchain with G-...)" EXACT UniProt-feature [] synonym: "CROSSLNK Glycyl serine ester (Gly-Ser) (interchain with S-...)" EXACT UniProt-feature [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 7 N 2 O 3" xref: MassAvg: "143.12" xref: MassMono: "143.045667" xref: Origin: "G, S" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0422" is_a: MOD:00885 ! ester crosslinked residues is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01586 name: O-glycyl-L-threonine def: "A protein modification that effectively crosslinks an L-threonine residue and a glycine residue by an ester bond to form O-glycyl-L-threonine." [PubMed:17502423, RESID:AA0496] comment: Cross-link 2. synonym: "(2S,3R)-2-amino-3-[(aminoacetyl)oxy]butanoic acid" EXACT RESID-systematic [] synonym: "O-(glycyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(2-aminoacetyl)threonine" EXACT RESID-alternate [] synonym: "threonine glycinate ester" EXACT RESID-alternate [] synonym: "CROSSLNK Glycyl threonine ester (Thr-Gly) (interchain with G-...)" EXACT UniProt-feature [] synonym: "CROSSLNK Glycyl threonine ester (Gly-Thr) (interchain with T-...)" EXACT UniProt-feature [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 9 N 2 O 3" xref: MassAvg: "157.15" xref: MassMono: "157.061317" xref: Origin: "G, T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0423" is_a: MOD:00885 ! ester crosslinked residues is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01587 name: O-(2-aminoethylphosphoryl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(2-aminoethylphosphoryl)-L-serine." [PubMed:15249686, PubMed:16825186, PubMed:16949362, RESID:AA0497] synonym: "(2S)-2-amino-3-([(2-aminoethoxy)(hydroxy)phosphoryl]oxy)propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES O-(2-aminoethylphosphoryl)serine" EXACT UniProt-feature [] synonym: "O-(2-aminoethylphosphoryl)-L-serine" EXACT RESID-name [] synonym: "O3-(2-aminoethylphosphoryl)-L-serine" EXACT RESID-alternate [] synonym: "O3-(phosphoethanolamine)-L-serine" EXACT RESID-alternate [] synonym: "serine ethanolamine phosphate" EXACT RESID-alternate [] synonym: "serine ethanolamine phosphodiester" EXACT RESID-alternate [] xref: DiffAvg: "123.05" xref: DiffFormula: "C 2 H 6 N 1 O 3 P 1" xref: DiffMono: "123.008530" xref: Formula: "C 5 H 11 N 2 O 5 P 1" xref: MassAvg: "210.13" xref: MassMono: "210.040558" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0399" is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01588 name: O-cholinephosphoryl-L-serine def: "A protein modification that effectively converts an L-serine residue to O-cholinephosphoryl-L-serine." [PubMed:15249686, PubMed:16825186, PubMed:16949362, RESID:AA0498] synonym: "2-[([(2S)-2-amino-2-carboxyethoxy][hydroxy]phosphoryl)oxy]-N,N,N-trimethylethanaminium" EXACT RESID-systematic [] synonym: "2-[([(2S)-2-azanyl-2-carboxyethoxy][hydroxy]phosphoryl)oxy]-N,N,N-trimethylethanazanium" EXACT RESID-alternate [] synonym: "MOD_RES O-(2-cholinephosphoryl)serine" EXACT UniProt-feature [] synonym: "O-cholinephosphoryl-L-serine" EXACT RESID-name [] synonym: "O3-[(2-[trimethylammonio]ethyl)phosphoryl]-L-serine" EXACT RESID-alternate [] synonym: "O3-phosphocholine-L-serine" EXACT RESID-alternate [] synonym: "serine choline phosphate" EXACT RESID-alternate [] synonym: "serine choline phosphodiester" EXACT RESID-alternate [] xref: DiffAvg: "166.14" xref: DiffFormula: "C 5 H 13 N 1 O 3 P 1" xref: DiffMono: "166.062756" xref: FormalCharge: "1+" xref: Formula: "C 8 H 18 N 2 O 5 P 1" xref: MassAvg: "253.21" xref: MassMono: "253.094785" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0400" is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01589 name: O-(2,4-diacetamido-2,4-dideoxyglucosyl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(2,4-diacetamido-2,4-dideoxyglucosyl)-L-serine." [PubMed:15249686, PubMed:16949362, RESID:AA0499] synonym: "(2S)-2-amino-3-[(2,4-diacetamido-2,4-dideoxy-beta-D-glucopyranosyl)oxy]propanoic acid" EXACT RESID-systematic [] synonym: "DADDGlc" EXACT RESID-alternate [] synonym: "O-(2,4-diacetamido-2,4-dideoxy-beta-D-glucopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "O-(2,4-diacetamido-2,4-dideoxy-D-glucosyl)-L-serine" EXACT RESID-name [] synonym: "O-[2,4-bis(acetylamino)]glucosyl-L-serine" EXACT RESID-alternate [] synonym: "O-seryl-beta-2,4-bis(acetylamino)glucoside" EXACT RESID-alternate [] synonym: "O3-(2,4-diacetamido-2,4-dideoxy-beta-D-glucopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "CARBOHYD O-linked (DADDGlc) serine" EXACT UniProt-feature [] xref: DiffAvg: "244.25" xref: DiffFormula: "C 10 H 16 N 2 O 5" xref: DiffMono: "244.105922" xref: Formula: "C 13 H 21 N 3 O 7" xref: MassAvg: "331.33" xref: MassMono: "331.137950" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0547" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:01590 name: 3'-farnesyl-2',3'-dihydro-2',N2-cyclo-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 3'-farnesyl-2',3'-dihydro-2',N2-cyclo-L-tryptophan." [ChEBI:52950, PubMed:18323630, RESID:AA0500] synonym: "(2S,3aR,8aS)-3a-[(2E,6E)-3,7,11-trimethyldodeca-2,6,10-trien-1-yl]-1,2,3,3a,8,8a-hexahydropyrrolo[2,3-b]indole-2-carboxylic acid" EXACT RESID-systematic [] synonym: "3'-farnesyl-2',3'-dihydro-2',N2-cyclo-L-tryptophan" EXACT RESID-name [] synonym: "LIPID 3'-farnesyl-2',N2-cyclotryptophan" EXACT UniProt-feature [] xref: DiffAvg: "204.36" xref: DiffFormula: "C 15 H 24 N 0 O 0" xref: DiffMono: "204.187801" xref: Formula: "C 26 H 34 N 2 O 1" xref: MassAvg: "390.57" xref: MassMono: "390.267114" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00437 ! farnesylated residue is_a: MOD:00601 ! cyclized residue is_a: MOD:01115 ! isoprenylated tryptophan [Term] id: MOD:01591 name: modifications with monoisotopic mass differences that are nominally equal at 304.205359 Da def: "Modifications that have monoisotopic mass differences from their respective origins of 304.205359 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01515 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.000001 Da is_a: MOD:01592 ! modifications with monoisotopic mass differences that are nominally equal at 304.199-304.206 Da [Term] id: MOD:01592 name: modifications with monoisotopic mass differences that are nominally equal at 304.199-304.206 Da def: "Modifications that have monoisotopic mass differences from their respective origins of 304.199-304.206 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01514 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.01 Da [Term] id: MOD:01593 name: iTRAQ8plex reporter fragment def: "A protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] is_a: MOD:01520 ! modification reporter fragment [Term] id: MOD:01594 name: iTRAQ8plex-113 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-113 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 6 H 13 (14)N 2" xref: MassAvg: "113.11" xref: MassMono: "113.107325" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01528 ! iTRAQ8plex-113 reporter+balance reagent acylated residue [Term] id: MOD:01595 name: iTRAQ8plex-114 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-114 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 5 (13)C 1 H 13 (14)N 2" xref: MassAvg: "114.11" xref: MassMono: "114.110680" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01535 ! iTRAQ8plex-114 reporter+balance reagent acylated residue [Term] id: MOD:01596 name: iTRAQ8plex-115 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-115 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 5 (13)C 1 H 13 (14)N 1 (15)N 1" xref: MassAvg: "115.11" xref: MassMono: "115.107715" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01542 ! iTRAQ8plex-115 reporter+balance reagent acylated residue [Term] id: MOD:01597 name: iTRAQ8plex-116 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-116 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 4 (13)C 2 H 13 (14)N 1 (15)N 1" xref: MassAvg: "116.11" xref: MassMono: "116.111069" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01549 ! iTRAQ8plex-116 reporter+balance reagent acylated residue [Term] id: MOD:01598 name: iTRAQ8plex-117 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-117 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 3 (13)C 3 H 13 (14)N 1 (15)N 1" xref: MassAvg: "117.11" xref: MassMono: "117.114424" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01556 ! iTRAQ8plex-117 reporter+balance reagent acylated residue [Term] id: MOD:01599 name: iTRAQ8plex-118 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-118 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 3 (13)C 3 H 13 (15)N 2" xref: MassAvg: "118.11" xref: MassMono: "118.111459" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01563 ! iTRAQ8plex-118 reporter+balance reagent acylated residue [Term] id: MOD:01600 name: iTRAQ8plex-119 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-119 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 2 (13)C 4 H 13 (15)N 2" xref: MassAvg: "119.11" xref: MassMono: "119.114814" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01570 ! iTRAQ8plex-119 reporter+balance reagent acylated residue [Term] id: MOD:01601 name: iTRAQ8plex-121 reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems iTRAQ8plex-121 reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(13)C 6 H 13 (15)N 2" xref: MassAvg: "121.12" xref: MassMono: "121.121524" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01593 ! iTRAQ8plex reporter fragment relationship: derives_from MOD:01577 ! iTRAQ8plex-121 reporter+balance reagent acylated residue [Term] id: MOD:01602 name: S-(L-lysyl)-L-methionine sulfilimine def: "A protein modification that effectively converts an L-lysine residue, and an L-methionine residue to S-(L-lysyl)-L-methionine sulfilimine." [PubMed:12011424, PubMed:15951440, PubMed:19729652, RESID:AA0501] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(E)-[(3S)-3-amino-3-carboxypropyl](methyl)-lambda(4)-sulfanylidene]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "(E)-N6-([(3S)-3-amino-3-carboxypropyl](methyl)-lambda(4)-sulfanylidene)-L-lysine" EXACT RESID-alternate [] synonym: "S-(L-lysyl)-L-methionine sulfilimine" EXACT RESID-name [] synonym: "S-lysyl-methionine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 11 H 19 N 3 O 2 S 1" xref: MassAvg: "257.35" xref: MassMono: "257.119798" xref: Origin: "K, M" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0401" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:02052 ! crosslinked L-methionine residue [Term] id: MOD:01603 name: 2x(15)N labeled L-lysine def: "A protein modification that effectively converts an L-lysine residue to 2x(15)N labeled L-lysine." [PubMed:18688235, URL:http\://www.sigmaaldrich.com/catalog/ProductDetail.do?N4=609021|ALDRICH&N5=SEARCH_CONCAT_PNO|BRAND_KEY&F=SPEC&lang=en_US0.000000E+000] subset: PSI-MOD-slim xref: DiffAvg: "1.99" xref: DiffFormula: "(14)N -2 (15)N 2" xref: DiffMono: "1.994070" xref: Formula: "C 6 H 12 (15)N 2 O 1" xref: MassAvg: "130.09" xref: MassMono: "130.089033" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:995" is_a: MOD:00843 ! (15)N labeled residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01604 name: 4x(15)N labeled L-arginine def: "A protein modification that effectively converts an L-arginine residue to 4x(15)N labeled L-arginine." [PubMed:18688235, URL:http\://www.sigmaaldrich.com/catalog/ProductDetail.do?N4=600113|ALDRICH&N5=SEARCH_CONCAT_PNO|BRAND_KEY&F=SPEC&lang=en_US0.000000E+000] subset: PSI-MOD-slim xref: DiffAvg: "3.99" xref: DiffFormula: "(14)N -4 (15)N 4" xref: DiffMono: "3.988140" xref: Formula: "C 6 H 12 (15)N 4 O 1" xref: MassAvg: "160.09" xref: MassMono: "160.089251" xref: Origin: "R" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00843 ! (15)N labeled residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:01605 name: 5-glutamyl 2-aminoadipic acid def: "A protein modification that effectively converts an L-glutamic acid residue to 5-glutamyl 2-aminoadipic acid." [PubMed:19620981, RESID:AA0502, ChEBI:78503] synonym: "(2S)-2-([(4S)-4-amino-4-carboxybutanoyl]amino)hexanedioic acid" EXACT RESID-systematic [] synonym: "5-glutamyl 2-aminoadipic acid" EXACT RESID-name [] synonym: "MOD_RES 5-glutamyl 2-aminoadipic acid" EXACT UniProt-feature [] synonym: "N2-(gamma-glutamyl)-2-aminoadipic acid" EXACT RESID-alternate [] synonym: "N2-(isoglutamyl)-2-aminoadipic acid" EXACT RESID-alternate [] xref: DiffAvg: "143.14" xref: DiffFormula: "C 6 H 9 N 1 O 3" xref: DiffMono: "143.058243" xref: Formula: "C 11 H 16 N 2 O 6" xref: MassAvg: "272.26" xref: MassMono: "272.100836" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0406" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01606 name: 5-glutamyl 2-aminoadipic 6-phosphoric anhydride def: "A protein modification that effectively converts an L-glutamic acid residue to 5-glutamyl 2-aminoadipic 6-phosphoric anhydride." [PubMed:19620981, RESID:AA0503] synonym: "(2S)-2-([(4S)-4-amino-4-carboxybutanoyl]amino)-6-oxo-6-(phosphonooxy)hexanoic acid" EXACT RESID-systematic [] synonym: "5-glutamyl 2-aminoadipic 6-phosphoric anhydride" EXACT RESID-name [] xref: DiffAvg: "223.12" xref: DiffFormula: "C 6 H 10 N 1 O 6 P 1" xref: DiffMono: "223.024574" xref: Formula: "C 11 H 17 N 2 O 9 P 1" xref: MassAvg: "352.24" xref: MassMono: "352.067167" xref: Origin: "E" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01607 name: 5-glutamyl allysine def: "A protein modification that effectively converts an L-glutamic acid residue to 5-glutamyl allysine." [PubMed:19620981, RESID:AA0504] synonym: "(2S)-2-([(4S)-4-amino-4-carboxybutanoyl]amino)-6-oxohexanoic acid" EXACT RESID-systematic [] synonym: "2-(5-glutamyl)amino-6-oxohexanoic acid" EXACT RESID-alternate [] synonym: "5-glutamyl allysine" EXACT RESID-name [] synonym: "alpha-(gamma-glutamyl)allysine" EXACT RESID-alternate [] synonym: "N2-(gamma-glutamyl)allysine" EXACT RESID-alternate [] synonym: "N2-(isoglutamyl)allysine" EXACT RESID-alternate [] xref: DiffAvg: "127.14" xref: DiffFormula: "C 6 H 9 N 1 O 2" xref: DiffMono: "127.063329" xref: Formula: "C 11 H 16 N 2 O 5" xref: MassAvg: "256.26" xref: MassMono: "256.105922" xref: Origin: "E" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01608 name: N2-(L-isoglutamyl)-L-lysine def: "A protein modification that effectively converts an L-glutamic acid residue to N2-(L-isoglutamyl)-L-lysine. This is not an isopeptide cross-link." [PubMed:19620981, RESID:AA0505] synonym: "(2S)-6-amino-2-([(4S)-4-amino-4-carboxybutanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "5-glutamyl N2-lysine" EXACT RESID-alternate [] synonym: "alpha-(gamma-glutamyl)lysine" EXACT RESID-alternate [] synonym: "gamma-glutamyl N2-lysine" EXACT RESID-alternate [] synonym: "MOD_RES 5-glutamyl N2-lysine" EXACT UniProt-feature [] synonym: "N2-(gamma-glutamyl)lysine" EXACT RESID-alternate [] synonym: "N2-(L-isoglutamyl)-L-lysine" EXACT RESID-name [] xref: DiffAvg: "128.18" xref: DiffFormula: "C 6 H 12 N 2 O 1" xref: DiffMono: "128.094963" xref: Formula: "C 11 H 19 N 3 O 4" xref: MassAvg: "257.29" xref: MassMono: "257.137556" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0407" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01609 name: 7'-hydroxy-2'-alpha-mannosyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 7'-hydroxy-2'-alpha-mannosyl-L-tryptophan." [PubMed:19584055, RESID:AA0506] synonym: "(2S)-2-amino-3-[7-hydroxy-2-(alpha-D-mannopyranosyl)-1H-indol-3-yl]propanoic acid" EXACT RESID-systematic [] synonym: "7'-hydroxy-2'-alpha-mannosyl-L-tryptophan" EXACT RESID-name [] synonym: "CARBOHYD C-linked (Man) hydroxytryptophan" EXACT UniProt-feature [] xref: DiffAvg: "178.14" xref: DiffFormula: "C 6 H 10 N 0 O 6" xref: DiffMono: "178.047738" xref: Formula: "C 17 H 20 N 2 O 7" xref: MassAvg: "364.35" xref: MassMono: "364.127051" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0504" is_a: MOD:00918 ! modified L-tryptophan residue relationship: has_functional_parent MOD:00222 ! 2'-alpha-mannosyl-L-tryptophan relationship: has_functional_parent MOD:01664 ! 7'-hydroxy-L-tryptophan [Term] id: MOD:01610 name: L-threonine methyl ester def: "A protein modification that effectively converts an L-threonine residue to L-threonine methyl ester." [PubMed:19745839, RESID:AA0507] synonym: "L-threonine methyl ester" EXACT RESID-name [] synonym: "methyl (2S,3R)-2-amino-3-hydroxybutanoate" EXACT RESID-systematic [] synonym: "methyl L-threoninate" EXACT RESID-alternate [] synonym: "MOD_RES Threonine methyl ester" EXACT UniProt-feature [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 5 H 10 N 1 O 3" xref: MassAvg: "132.14" xref: MassMono: "132.066068" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0412" is_a: MOD:01689 ! alpha-carboxyl methylated residue is_a: MOD:01803 ! O-methylated threonine [Term] id: MOD:01611 name: 6-(S-L-cysteinyl)-8alpha-(-3'-L-histidino)-FMN def: "A protein modification that crosslinks a cysteine and a histidine residue by forming the adduct 6-(S-L-cysteinyl)-8alpha-(-3'-L-histidino)-FMN." [PubMed:17935335, RESID:AA0508] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "6-((R)-2-amino-2-carboxyethyl)sulfanyl-8alpha-[4-((S)-2-amino-2-carboxyethyl)imidazol-3-yl]-riboflavin 5'-trihydrogen phosphate" EXACT RESID-systematic [] synonym: "6-(S-cysteinyl)-8alpha-(N(delta)-histidyl)-FMN" EXACT RESID-alternate [] synonym: "6-(S-cysteinyl)-8alpha-(N(pi)-histidyl)-FMN" EXACT RESID-alternate [] synonym: "6-(S-cysteinyl)-8alpha-(N3'-histidyl)-FMN" EXACT RESID-alternate [] synonym: "6-(S-cysteinyl)-8alpha-(pros-histidyl)-FMN" EXACT RESID-alternate [] synonym: "6-(S-L-cysteinyl)-8alpha-(N3'-L-histidino)-FMN" EXACT RESID-name [] synonym: "BINDING FMN (covalent; via 2 links)" EXACT UniProt-feature [] synonym: "BINDING FMN (covalent; via 2 links, pros nitrogen)" EXACT UniProt-feature [] xref: DiffAvg: "452.32" xref: DiffFormula: "C 17 H 17 N 4 O 9 P 1 S 0" xref: DiffMono: "452.073315" xref: Formula: "C 26 H 29 N 8 O 11 P 1 S 1" xref: MassAvg: "692.60" xref: MassMono: "692.141411" xref: Origin: "C, H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02048 ! crosslinked L-histidine residue is_a: MOD:01621 ! flavin crosslinked residues [Term] id: MOD:01612 name: 3'-iodo-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 3'-iodo-L-tyrosine." [ChEBI:27847, PubMed:8995307, RESID:AA0509] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(4-hydroxy-3-iodophenyl)propanoic acid" EXACT RESID-systematic [] synonym: "3'-iodo-L-tyrosine" EXACT RESID-name [] synonym: "3-iodo-L-tyrosine" EXACT RESID-alternate [] synonym: "3-iodotyrosine" EXACT RESID-alternate [] synonym: "4-hydroxy-3-iodo-phenylalanine" EXACT RESID-alternate [] synonym: "MIT" EXACT RESID-alternate [] synonym: "MOD_RES Iodotyrosine" EXACT UniProt-feature [] xref: DiffAvg: "125.90" xref: DiffFormula: "C 0 H -1 I 1 N 0 O 0" xref: DiffMono: "125.896648" xref: Formula: "C 9 H 8 I 1 N 1 O 2" xref: MassAvg: "289.07" xref: MassMono: "288.959976" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0411" is_a: MOD:01228 ! monoiodinated tyrosine [Term] id: MOD:01613 name: 3',5'-diiodo-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 3',5'-diiodo-L-tyrosine." [ChEBI:15768, PubMed:8995307, RESID:AA0510] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(4-hydroxy-3,5-diiodophenyl)propanoic acid" EXACT RESID-systematic [] synonym: "3',5'-diiodo-L-tyrosine" EXACT RESID-name [] synonym: "3,5-diiodo-L-tyrosine" EXACT RESID-alternate [] synonym: "3,5-diiodotyrosine" EXACT RESID-alternate [] synonym: "DIT" EXACT RESID-alternate [] synonym: "iodogorgoic acid" EXACT RESID-alternate [] synonym: "MOD_RES Diiodotyrosine" EXACT UniProt-feature [] xref: DiffAvg: "251.79" xref: DiffFormula: "C 0 H -2 I 2 N 0 O 0" xref: DiffMono: "251.793295" xref: Formula: "C 9 H 7 I 2 N 1 O 2" xref: MassAvg: "414.97" xref: MassMono: "414.856624" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0408" is_a: MOD:01140 ! diiodinated tyrosine [Term] id: MOD:01614 name: glycyl phospho-5'-adenosine def: "A protein modification that effectively converts a glycine residue to glycyl phospho-5'-adenosine." [PubMed:16388576, PubMed:9632726, RESID:AA0511] synonym: "(2-aminoacetyl)oxy-([(2R,3R,4R,5R)-5-(6-aminopurin-9-yl)-3,4-dihydroxy-oxolan-2-yl]methoxy)phosphinic acid" EXACT RESID-alternate [] synonym: "([(2R,3S,4R,5R)-5-(6-aminopurin-9-yl)-3,4-dihydroxy-oxolan-2-yl]methoxy-hydroxy-phosphoryl)-2-aminoethanoate" EXACT RESID-alternate [] synonym: "5'-adenylic-glyinate" EXACT RESID-alternate [] synonym: "aminoacetyl [5-(6-amino-9H-purin-9-yl)-3,4-dihydroxytetrahydrofuran-2-yl]methyl hydrogen phosphate" EXACT RESID-systematic [] synonym: "glycine monoanhydride with 5'-adenylic acid" EXACT RESID-alternate [] synonym: "glycyl 5'-adenylate" EXACT RESID-alternate [] synonym: "glycyl adenosine-5'-phosphate" EXACT RESID-alternate [] synonym: "glycyl phospho-5'-adenosine" EXACT RESID-name [] synonym: "glycyladenylate" EXACT RESID-alternate [] synonym: "MOD_RES Glycyl adenylate" EXACT UniProt-feature [] xref: DiffAvg: "329.21" xref: DiffFormula: "C 10 H 12 N 5 O 6 P 1" xref: DiffMono: "329.052520" xref: Formula: "C 12 H 16 N 6 O 8 P 1" xref: MassAvg: "403.27" xref: MassMono: "403.076723" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0409" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01165 ! adenylated residue [Term] id: MOD:01615 name: glycyl cysteine dithioester def: "A protein modification that effectively crosslinks an L-cysteine residue and a glycine residue by a dithioester bond to form glycyl cysteine dithioester." [PubMed:11438688, PubMed:16388576, RESID:AA0512] comment: Cross-link 2. synonym: "(2R)-2-amino-3-[(aminoacetyl)disulfanyl]propanoic acid" EXACT RESID-systematic [] synonym: "2-(glycyldithio)alanine" EXACT RESID-alternate [] synonym: "glycyl cysteine dithioester" EXACT RESID-name [] synonym: "S-glycyl cysteine persulfide" EXACT RESID-alternate [] synonym: "S-glycyl thiocysteine" EXACT RESID-alternate [] synonym: "thioglycine cysteine disulfide" EXACT RESID-alternate [] xref: DiffAvg: "14.05" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 1" xref: DiffMono: "13.961506" xref: Formula: "C 5 H 7 N 2 O 2 S 2" xref: MassAvg: "191.24" xref: MassMono: "190.994894" xref: Origin: "C, G" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0410" is_a: MOD:00395 ! thioester crosslinked residues is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01616 name: trithiocystine def: "A protein modification that effectively cross-links two L-cysteine residues and adds three sulfur atoms to form trithiocystine." [PubMed:19438211, RESID:AA0513] comment: Cross-link 2. synonym: "(2R,2'R)-3,3'-pentasulfane-1,5-diylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "3,3'-pentathiobisalanine" EXACT RESID-alternate [] synonym: "bis(2-amino-2-carboxyethyl)pentasulfide" EXACT RESID-alternate [] synonym: "trithiocystine" EXACT RESID-name [] xref: DiffAvg: "94.16" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 3" xref: DiffMono: "93.900563" xref: Formula: "C 6 H 8 N 2 O 2 S 5" xref: MassAvg: "300.44" xref: MassMono: "299.918933" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0417" is_a: MOD:01620 ! polysulfide crosslinked residues [Term] id: MOD:01617 name: O-(6-phosphomannosyl)-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-(6-phosphomannosyl)-L-threonine." [PubMed:20044576, RESID:AA0514] synonym: "(2S,3R)-2-amino-3-[6-phosphonooxy-alpha-D-mannopyranosyloxy]butanoic acid" EXACT RESID-systematic [] synonym: "O-(6-phosphomannosyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(6-phosphomannosyl)threonine" EXACT RESID-alternate [] synonym: "CARBOHYD O-linked (Man6P) threonine" EXACT UniProt-feature [] xref: DiffAvg: "242.12" xref: DiffFormula: "C 6 H 11 N 0 O 8 P 1" xref: DiffMono: "242.019154" xref: Formula: "C 10 H 18 N 1 O 10 P 1" xref: MassAvg: "343.22" xref: MassMono: "343.066832" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0596" is_a: MOD:00005 ! O-glycosyl-L-threonine is_a: MOD:01804 ! glycosylphosphorylated residue [Term] id: MOD:01618 name: L-alanyl-L-isoaspartyl cyclopeptide def: "A protein modification that effectively converts an L-alaine residue and an L-asparagine residue to L-alanyl-L-isoaspartyl cyclopeptide." [PubMed:19928958, PubMed:3207697, RESID:AA0515] comment: Cross-link 2. synonym: "(2S,5S)-2-methyl-3,7-dioxo-1,4-diazepane-5-carboxylic acid" EXACT RESID-systematic [] synonym: "1,4.2-anhydro(L-alanyl-L-aspartic acid)" EXACT RESID-alternate [] synonym: "CROSSLNK Alanine isoaspartyl cyclopeptide (Ala-Asn)" EXACT UniProt-feature [] synonym: "L-alanyl-L-isoaspartyl cyclopeptide" EXACT RESID-name [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 7 H 9 N 2 O 3" xref: MassAvg: "169.16" xref: MassMono: "169.061317" xref: Origin: "A, N" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0418" is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:02040 ! crosslinked L-alanine residue is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia [Term] id: MOD:01619 name: multisulfide crosslinked residues def: "A protein modification that crosslinks two cysteine residues by formation of a chain of two or more bonded sulfur atoms." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00033 ! crosslinked residues is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:01620 name: polysulfide crosslinked residues def: "A protein modification that crosslinks two cysteine residues by formation of a chain of three or more bonded sulfur atoms." [PubMed:18688235] is_a: MOD:00860 ! sulfur containing modified residue is_a: MOD:01619 ! multisulfide crosslinked residues [Term] id: MOD:01621 name: flavin crosslinked residues def: "A protein modification that crosslinks two or more amino acid residues by forming an adduct with a compound containing a flavin group." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00033 ! crosslinked residues is_a: MOD:00697 ! flavin modified residue [Term] id: MOD:01622 name: monohydroxylated tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to one of several monohydroxylated tryptophan residues, including 3-hydroxy-L-tryptophan and 7'-hydroxy-L-tryptophan." [OMSSA:90, Unimod:35#W] synonym: "Oxidation" RELATED PSI-MS-label [] synonym: "oxyw" EXACT OMSSA-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 11 H 10 N 2 O 2" xref: MassAvg: "202.21" xref: MassMono: "202.074228" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01623 name: 1-thioglycine (C-terminal) def: "A protein modification that effectively converts a glycine residue to a C-terminal 1-thioglycine." [PubMed:11463785, PubMed:19145231, PubMed:9367957, RESID:AA0265#var] subset: PSI-MOD-slim xref: DiffAvg: "16.06" xref: DiffFormula: "C 0 H 0 N 0 O -1 S 1" xref: DiffMono: "15.977156" xref: Formula: "C 2 H 3 N 1 S 1" xref: MassAvg: "73.11" xref: MassMono: "72.998620" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:01625 ! 1-thioglycine [Term] id: MOD:01624 name: (2-aminosuccinimidyl)acetic acid (Asn) def: "A protein modification that crosslinks an asparagine and the following glycine residue with the formation of (2-aminosuccinimidyl)acetic acid and the release of ammonia." [PubMed:10801322, PubMed:2015294, RESID:AA0441#ASN] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "(2-aminosuccinimidyl)acetic acid" EXACT RESID-name [] synonym: "(3-amino-2,5-dioxo-1-pyrrolidinyl)acetic acid" EXACT RESID-alternate [] synonym: "[(3S)-3-amino-2,5-dioxopyrrolidin-1-yl]acetic acid" EXACT RESID-systematic [] synonym: "anhydroaspartyl glycine" EXACT RESID-alternate [] synonym: "aspartimide glycine" EXACT RESID-alternate [] synonym: "CROSSLNK (2-aminosuccinimidyl)acetic acid (Asn-Gly)" EXACT UniProt-feature [] synonym: "N-(2-aminosuccinyl)glycine" EXACT RESID-alternate [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 6 H 6 N 2 O 3" xref: MassAvg: "154.13" xref: MassMono: "154.037842" xref: Origin: "G, N" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0450" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia is_a: MOD:01628 ! (2-aminosuccinimidyl)acetic acid [Term] id: MOD:01625 name: 1-thioglycine def: "A protein modification that effectively converts a glycine residue to 1-thioglycine." [PubMed:11463785, PubMed:9367957, RESID:AA0265] comment: This modification occurs naturally in two forms. At an interior peptide location (MOD:00270) it exists as aminoethanethionic acid, or aminoethanethioic O-acid. At the C-terminal (MOD:01623) it exists as aminoethanethiolic acid, or aminoethanethioic S-acid [JSG]. subset: PSI-MOD-slim synonym: "1-thioglycine" EXACT RESID-name [] synonym: "2-amino-1-sulfanylethanone" EXACT RESID-alternate [] synonym: "aminoethanethioic acid" EXACT RESID-systematic [] synonym: "aminothioacetic acid" EXACT RESID-alternate [] synonym: "Carboxy->Thiocarboxy" RELATED PSI-MS-label [] synonym: "MOD_RES 1-thioglycine" EXACT UniProt-feature [] synonym: "S(O)Gly" EXACT PSI-MOD-label [] synonym: "thiocarboxylic acid" RELATED Unimod-description [] xref: DiffAvg: "16.06" xref: DiffFormula: "C 0 H 0 N 0 O -1 S 1" xref: DiffMono: "15.977156" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "G" xref: Source: "natural" is_a: MOD:00749 ! sulfur substitution for oxygen is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:01626 name: L-cystine def: "A protein modification that forms L-cystine by forming a disulfide bond that either cross-links two peptidyl L-cysteine residues, or modifies a peptidyl cysteine with a free cysteine." [ChEBI:16283, PubMed:1988019, PubMed:2001356, PubMed:2076469, PubMed:3083866, PubMed:366603, PubMed:7918467, PubMed:8344916, RESID:AA0025] comment: This modification occurs naturally in two forms. It exists as a disulfide cross-link of two cysteine residues (MOD:00034), or as a disulfide cross-link of a cysteine residues and a free cysteine (MOD:00765). subset: PSI-MOD-slim synonym: "(2R,2'R)-3,3'-disulfane-1,2-diylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "2-amino-3-(2-amino-2-carboxy-ethyl)disulfanyl-propanoic acid" RELATED RESID-misnomer [] synonym: "3,3'-disulfane-1,2-diylbis(2-azanylpropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-dithiobis(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "3,3'-dithiobisalanine" EXACT RESID-alternate [] synonym: "3,3'-dithiodialanine" EXACT RESID-alternate [] synonym: "beta,beta'-diamino-beta,beta'-dicarboxydiethyldisulfide" EXACT RESID-alternate [] synonym: "beta,beta'-dithiodialanine" EXACT RESID-alternate [] synonym: "bis(alpha-aminopropionic acid)-beta-disulfide" EXACT RESID-alternate [] synonym: "bis(beta-amino-beta-carboxyethyl)disulfide" EXACT RESID-alternate [] synonym: "Cys2" EXACT PSI-MOD-label [] synonym: "Cystine ((Cys)2)" EXACT DeltaMass-label [] synonym: "dicysteine" EXACT RESID-alternate [] synonym: "L-cystine" EXACT RESID-name [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "none" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01627 name: L-cysteinyl-L-selenocysteine def: "A protein modification that forms L-cysteinyl-L-selenocysteine either by the natural process of cross-linking an L-cysteine residue and an L-selenocysteine residue, or by the hypothetical process of substituting a selenium for a sulfur atom in cystine." [PubMed:12911312, PubMed:18688235] comment: Cross-link 2. subset: PSI-MOD-slim xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 8 N 2 O 2 S 1 Se 1" xref: MassAvg: "251.17" xref: MassMono: "251.947170" xref: Origin: "C, X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:01628 name: (2-aminosuccinimidyl)acetic acid def: "A protein modification that forms (2-aminosuccinimidyl)acetic acid by crosslinking either an aspartic acid residue or an asparagine residue with the following glycine residue." [PubMed:10801322, PubMed:18688235] comment: Cross-link 2; this cross-link is formed by the condensation of an aspartic acid residue or an asparagine residue with the alpha-amido of the following residue. subset: PSI-MOD-slim xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 6 N 2 O 3" xref: MassAvg: "154.13" xref: MassMono: "154.037842" xref: Origin: "G, X" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:01944 ! 2-aminosuccinimide ring crosslinked residues [Term] id: MOD:01629 name: cyclo[(prolylserin)-O-yl] cysteinate def: "A protein modification that forms cyclo[(prolylserin)-O-yl] cysteinate by the natural process of cross-linking an L-cysteine residue an L-proline residue, and an L-serine residue, or by effectively modifying a cysteine residue." [PubMed:7961166, RESID:AA0489] synonym: "(3,6-dioxopyrrolo[4,5-a]piperazin-2-yl)methyl cysteinate" EXACT RESID-alternate [] synonym: "[(3S,8aS)-1,4-dioxooctahydropyrrolo[1,2-a]pyrazin-3-yl]methyl (2R)-2-amino-3-sulfanylpropanoate" EXACT RESID-systematic [] synonym: "cyclo[(prolylserin)-O-yl] cysteinate" EXACT RESID-name [] synonym: "MOD_RES Cyclo[(prolylserin)-O-yl] cysteinate" EXACT UniProt-feature [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 11 H 16 N 3 O 4 S 1" xref: MassAvg: "286.33" xref: MassMono: "286.086152" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:02044 ! crosslinked L-cysteine residue [Term] id: MOD:01630 name: N6-(L-isoglutamyl)-L-lysine def: "A protein modification that effectively crosslinks either an L-glutamine residue or an L-glutamic acid residue with an L-lysine residue by an isopeptide bond to form N6-(L-isoglutamyl)-L-lysine ." [ChEBI:21863, DeltaMass:0, PubMed:2461365, PubMed:5637041, PubMed:5656070, PubMed:8598899, RESID:AA0124] comment: Cross-link 2. subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-([(4S)-4-amino-4-carboxybutanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-6-([4-azanyl-4-carboxybutanoyl]azanyl)hexanoic acid" EXACT RESID-alternate [] synonym: "5-glutamyl N6-lysine" EXACT RESID-alternate [] synonym: "N alpha -(gamma-Glutamyl)-lysine" EXACT DeltaMass-label [] synonym: "N(epsilon)-(gamma-glutamyl)lysine" EXACT RESID-alternate [] synonym: "N6-(L-isoglutamyl)-L-lysine" EXACT RESID-name [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 11 H 17 N 3 O 3" xref: MassAvg: "239.27" xref: MassMono: "239.126991" xref: Origin: "K, X" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0397" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01631 name: L-alanine removal def: "A protein modification that effectively removes or replaces an L-alanine." [PubMed:18688235] comment: This represents the loss or replacement of an L-alanine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-71.08" xref: DiffFormula: "C -3 H -5 N -1 O -1" xref: DiffMono: "-71.037114" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00901 ! modified L-alanine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01632 name: L-arginine removal def: "A protein modification that effectively removes or replaces an L-arginine." [PubMed:18688235] comment: This represents the loss or replacement of an L-arginine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-156.19" xref: DiffFormula: "C -6 H -12 N -4 O -1" xref: DiffMono: "-156.101111" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00902 ! modified L-arginine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01633 name: L-asparagine removal def: "A protein modification that effectively removes or replaces an L-asparagine." [PubMed:18688235] comment: This represents the loss or replacement of an L-asparagine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-114.10" xref: DiffFormula: "C -4 H -6 N -2 O -2" xref: DiffMono: "-114.042927" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00903 ! modified L-asparagine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01634 name: L-aspartic acid removal def: "A protein modification that effectively removes or replaces an L-aspartic acid." [PubMed:18688235] comment: This represents the loss or replacement of an L-aspartic acid residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-115.09" xref: DiffFormula: "C -4 H -5 N -1 O -3" xref: DiffMono: "-115.026943" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01635 name: L-cysteine removal def: "A protein modification that effectively removes or replaces an L-cysteine." [PubMed:18688235] comment: This represents the loss or replacement of an L-cysteine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-103.14" xref: DiffFormula: "C -3 H -5 N -1 O -1 S -1" xref: DiffMono: "-103.009185" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01636 name: L-glutamic acid removal def: "A protein modification that effectively removes or replaces an L-glutamic acid." [PubMed:18688235] comment: This represents the loss or replacement of an L-glutamic acid residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-129.12" xref: DiffFormula: "C -5 H -7 N -1 O -3" xref: DiffMono: "-129.042593" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01637 name: L-glutamine removal def: "A protein modification that effectively removes or replaces an L-glutamine." [PubMed:18688235] comment: This represents the loss or replacement of an L-glutamine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-128.13" xref: DiffFormula: "C -5 H -8 N -2 O -2" xref: DiffMono: "-128.058578" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00907 ! modified L-glutamine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01638 name: glycine removal def: "A protein modification that effectively removes or replaces a glycine." [PubMed:18688235] comment: This represents the loss or replacement of an glycine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-57.05" xref: DiffFormula: "C -2 H -3 N -1 O -1" xref: DiffMono: "-57.021464" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01639 name: L-histidine removal def: "A protein modification that effectively removes or replaces an L-histidine." [PubMed:18688235] comment: This represents the loss or replacement of an L-histidine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-137.14" xref: DiffFormula: "C -6 H -7 N -3 O -1" xref: DiffMono: "-137.058912" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01640 name: L-isoleucine removal def: "A protein modification that effectively removes or replaces an L-isoleucine." [PubMed:18688235] comment: This represents the loss or replacement of an L-isoleucine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-113.16" xref: DiffFormula: "C -6 H -11 N -1 O -1" xref: DiffMono: "-113.084064" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00910 ! modified L-isoleucine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01641 name: L-leucine removal def: "A protein modification that effectively removes or replaces an L-leucine." [PubMed:18688235] comment: This represents the loss or replacement of an L-leucine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-113.16" xref: DiffFormula: "C -6 H -11 N -1 O -1" xref: DiffMono: "-113.084064" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "L" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00911 ! modified L-leucine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01642 name: L-lysine removal def: "A protein modification that effectively removes or replaces an L-lysine." [PubMed:18688235] comment: This represents the loss or replacement of an L-lysine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-128.18" xref: DiffFormula: "C -6 H -12 N -2 O -1" xref: DiffMono: "-128.094963" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01643 name: L-methionine removal def: "A protein modification that effectively removes or replaces an L-methionine." [OMSSA:9, PubMed:3327521, Unimod:765] comment: This represents the loss or replacement of an L-methionine residue in a polypeptide, including initiator methionine removal in eukaryotes. It may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution [JSG]. subset: PSI-MOD-slim synonym: "Met-loss" RELATED Unimod-interim [] synonym: "ntermmcleave" EXACT OMSSA-label [] xref: DiffAvg: "-131.19" xref: DiffFormula: "C -5 H -9 N -1 O -1 S -1" xref: DiffMono: "-131.040485" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:765" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01644 name: L-phenylalanine removal def: "A protein modification that effectively removes or replaces an L-phenylalanine." [PubMed:18688235] comment: This represents the loss or replacement of an L-phenylalanine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-147.18" xref: DiffFormula: "C -9 H -9 N -1 O -1" xref: DiffMono: "-147.068414" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "F" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00914 ! modified L-phenylalanine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01645 name: L-proline removal def: "A protein modification that effectively removes or replaces an L-proline." [PubMed:18688235] comment: This represents the loss or replacement of an L-proline residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-97.12" xref: DiffFormula: "C -5 H -7 N -1 O -1" xref: DiffMono: "-97.052764" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01646 name: L-serine removal def: "A protein modification that effectively removes or replaces an L-serine." [PubMed:18688235] comment: This represents the loss or replacement of an L-serine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-87.08" xref: DiffFormula: "C -3 H -5 N -1 O -2" xref: DiffMono: "-87.032028" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01647 name: L-threonine removal def: "A protein modification that effectively removes or replaces an L-threonine." [PubMed:18688235] comment: This represents the loss or replacement of an L-threonine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-101.10" xref: DiffFormula: "C -4 H -7 N -1 O -2" xref: DiffMono: "-101.047678" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01648 name: L-tryptophan removal def: "A protein modification that effectively removes or replaces an L-tryptophan." [PubMed:18688235] comment: This represents the loss or replacement of an L-tryptophan residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-186.21" xref: DiffFormula: "C -11 H -10 N -2 O -1" xref: DiffMono: "-186.079313" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00918 ! modified L-tryptophan residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01649 name: L-tyrosine removal def: "A protein modification that effectively removes or replaces an L-tyrosine." [PubMed:18688235] comment: This represents the loss or replacement of an L-tyrosine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-163.18" xref: DiffFormula: "C -9 H -9 N -1 O -2" xref: DiffMono: "-163.063329" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01650 name: L-valine removal def: "A protein modification that effectively removes or replaces an L-valine." [PubMed:18688235] comment: This represents the loss or replacement of an L-valine residue in a polypeptide, and may be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: DiffAvg: "-99.13" xref: DiffFormula: "C -5 H -9 N -1 O -1" xref: DiffMono: "-99.068414" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00920 ! modified L-valine residue is_a: MOD:01651 ! natural, standard, encoded residue removal [Term] id: MOD:01651 name: natural, standard, encoded residue removal def: "A protein modification that effectively removes a natural, standard, encoded residue." [PubMed:18688235] comment: This represents the loss of an encoded residue in a polypeptide. subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00009 ! natural residue is_a: MOD:01156 ! protein modification characterized by chemical process [Term] id: MOD:01652 name: sulfonyl halide reagent derivatized residue def: "A protein modification that is produced by formation of an adduct with a sulfonyl halide compound used as a reagent." [PubMed:18688235] comment: These reagents typically react with N6-amino group of lysine residues and a free alpha-amino group of a peptide. xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01653 name: dansyl chloride derivatized residue def: "A protein modification that is produced by formation of an adduct with 5-dimethylaminonaphthalene-1-sulfonyl chloride, dansyl chloride." [DeltaMass:0, Unimod:139] synonym: "5-dimethylaminonaphthalene-1-sulfonyl" RELATED Unimod-description [] synonym: "Dansyl" RELATED PSI-MS-label [] synonym: "Dansyl (Dns)" EXACT DeltaMass-label [] synonym: "DansylRes" EXACT PSI-MOD-label [] xref: DiffAvg: "233.29" xref: DiffFormula: "C 12 H 11 N 1 O 2 S 1" xref: DiffMono: "233.051050" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:139" is_a: MOD:01652 ! sulfonyl halide reagent derivatized residue [Term] id: MOD:01654 name: N6-Dansyl derivatized lysine def: "A protein modification that is produced by reaction with 5-dimethylaminonaphthalene-1-sulfonyl chloride, dansyl chloride, to form N6-Dansyl-lysine." [Unimod:139#K] synonym: "5-dimethylaminonaphthalene-1-sulfonyl" RELATED Unimod-description [] synonym: "Dansyl" RELATED PSI-MS-label [] synonym: "N6DansylLys" EXACT PSI-MOD-label [] xref: DiffAvg: "233.29" xref: DiffFormula: "C 12 H 11 N 1 O 2 S 1" xref: DiffMono: "233.051050" xref: Formula: "C 18 H 23 N 3 O 3 S 1" xref: MassAvg: "361.46" xref: MassMono: "361.146013" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:139" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01653 ! dansyl chloride derivatized residue [Term] id: MOD:01655 name: alpha-amino-Dansyl derivatized residue def: "A protein modification that is produced by reaction with 5-dimethylaminonaphthalene-1-sulfonyl chloride, dansyl chloride, to form an alpha-amino-Dansyl-derivatized residue." [Unimod:139#N-term] synonym: "5-dimethylaminonaphthalene-1-sulfonyl" RELATED Unimod-description [] synonym: "Dansyl" RELATED PSI-MS-label [] synonym: "N2DansylRes" EXACT PSI-MOD-label [] xref: DiffAvg: "233.29" xref: DiffFormula: "C 12 H 11 N 1 O 2 S 1" xref: DiffMono: "233.051050" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:139" is_a: MOD:01653 ! dansyl chloride derivatized residue [Term] id: MOD:01656 name: Dabsyl chloride derivatized residue def: "A protein modification that is produced by formation of an adduct with 4-(4-dimethylaminophenylazo)benzenesulfonyl chloride, Dabsyl chloride." [PubMed:18688235] synonym: "4-([4-(dimethylamino)phenyl]diazenyl)benzenesulfonyl" EXACT PSI-MOD-alternate [] synonym: "DabsylRes" EXACT PSI-MOD-label [] xref: DiffAvg: "287.34" xref: DiffFormula: "C 14 H 13 N 3 O 2 S 1" xref: DiffMono: "287.072848" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01652 ! sulfonyl halide reagent derivatized residue [Term] id: MOD:01657 name: N6-Dabsyl derivatized lysine def: "A protein modification that is produced by reaction with 4-(4-dimethylaminophenylazo)benzenesulfonyl chloride, dabsyl chloride, to form N6-Dabsyl-lysine." [PubMed:18688235] synonym: "N6-[4-([4-(dimethylamino)phenyl]diazenyl)benzenesulfonyl]lysine" EXACT PSI-MOD-alternate [] synonym: "N6DabsylLys" EXACT PSI-MOD-label [] xref: DiffAvg: "287.34" xref: DiffFormula: "C 14 H 13 N 3 O 2 S 1" xref: DiffMono: "287.072848" xref: Formula: "C 20 H 25 N 5 O 3 S 1" xref: MassAvg: "415.51" xref: MassMono: "415.167811" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01656 ! Dabsyl chloride derivatized residue [Term] id: MOD:01658 name: alpha-amino-Dabsyl derivatized residue def: "A protein modification that is produced by reaction with 4-(4-dimethylaminophenylazo)benzenesulfonyl chloride, dabsyl chloride, to form an alpha-amino-Dabsyl-derivatized residue." [PubMed:18688235] synonym: "N2DabsylRes" EXACT PSI-MOD-label [] xref: DiffAvg: "287.34" xref: DiffFormula: "C 14 H 13 N 3 O 2 S 1" xref: DiffMono: "287.072848" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:01656 ! Dabsyl chloride derivatized residue [Term] id: MOD:01659 name: Uniblue A derivatized residue def: "A protein modification that is produced by formation of an adduct with 1-amino-4-{[3-(ethenylsulfonyl)phenyl]amino}-9,10-dioxo-9,10-dihydroanthracene-2-sulfonate, Uniblue A." [PubMed:18688235] comment: This reagent has a reactive sulfonyl vinyl and typically reacts with the free thiol group of cysteine residues. synonym: "1-amino-4-{[3-(ethenylsulfonyl)phenyl]amino}-9,10-dioxo-9,10-dihydroanthracene-2-sulfonic acid" EXACT PSI-MOD-alternate [] synonym: "1-amino-9,10-dioxo-4-{[3-(vinylsulfonyl)phenyl]amino}-9,10-dihydroanthracene-2-sulfonic acid" EXACT PSI-MOD-alternate [] synonym: "Uniblue A" EXACT PSI-MOD-alternate [] synonym: "UniblueARes" EXACT PSI-MOD-label [] xref: DiffAvg: "484.50" xref: DiffFormula: "C 22 H 16 N 2 O 7 S 2" xref: DiffMono: "484.039893" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01660 name: Uniblue A derivatized cysteine def: "A protein modification that is produced by reaction with 1-amino-4-{[3-(ethenylsulfonyl)phenyl]amino}-9,10-dioxo-9,10-dihydroanthracene-2-sulfonate, Uniblue A, to form Uniblue A cysteine adduct." [PubMed:18688235] subset: PSI-MOD-slim synonym: "1-amino-4-{[3-(ethenylsulfonyl)phenyl]amino}-9,10-dioxo-9,10-dihydroanthracene-2-sulfonate" EXACT PSI-MOD-alternate [] synonym: "1-amino-9,10-dioxo-4-{[3-(vinylsulfonyl)phenyl]amino}-9,10-dihydroanthracene-2-sulfonate" EXACT PSI-MOD-alternate [] synonym: "SUniblueACys" EXACT PSI-MOD-label [] synonym: "Uniblue A" EXACT PSI-MOD-alternate [] xref: DiffAvg: "484.50" xref: DiffFormula: "C 22 H 16 N 2 O 7 S 2" xref: DiffMono: "484.039893" xref: Formula: "C 25 H 21 N 3 O 8 S 3" xref: MassAvg: "587.64" xref: MassMono: "587.049078" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01659 ! Uniblue A derivatized residue [Term] id: MOD:01661 name: pyruvic acid (Tyr) def: "A protein modification that effectively converts an L-tyrosine residue to pyruvic acid." [PubMed:10085076, PubMed:3042771, PubMed:500639, PubMed:8464063, RESID:AA0127#TYR] synonym: "2-oxopropanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES Pyruvic acid (Tyr)" EXACT UniProt-feature [] synonym: "pyruvic acid" EXACT RESID-name [] xref: DiffAvg: "-93.13" xref: DiffFormula: "C -6 H -7 N -1 O 0" xref: DiffMono: "-93.057849" xref: Formula: "C 3 H 3 O 2" xref: MassAvg: "71.06" xref: MassMono: "71.013304" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0662" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01154 ! pyruvic acid [Term] id: MOD:01662 name: N5-(ADP-ribosyl)-L-glutamine def: "A protein modification that effectively converts an L-glutamine residue to N5-(ADP-ribosyl)-L-glutamine." [PubMed:20185726, RESID:AA0518] synonym: "(S)-2-amino-4-([adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with alpha-D-ribofuranosyl]amino)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "N5-(ADP-ribosyl)-L-glutamine" EXACT RESID-name [] synonym: "N5-[alpha-D-ribofuranoside 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)]-L-glutamine" EXACT RESID-alternate [] synonym: "N5-alpha-D-ribofuranosyl-L-glutamine 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2" xref: DiffMono: "541.061109" xref: Formula: "C 20 H 29 N 7 O 15 P 2" xref: MassAvg: "669.43" xref: MassMono: "669.119687" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00752 ! adenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:01663 name: O-(ADP-ribosyl)-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-(ADP-ribosyl)-L-threonine." [PubMed:20185726, RESID:AA0519] synonym: "(S)-2-amino-3-([adenosine 5'-(trihydrogen diphosphate) 5'->5'-ester with alpha-D-ribofuranosyl]oxy)-butanoic acid" EXACT RESID-systematic [] synonym: "O-(ADP-ribosyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(ADP-ribosyl)-L-threonine" EXACT RESID-alternate [] synonym: "O3-[alpha-D-ribofuranoside 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)]-L-threonine" EXACT RESID-alternate [] synonym: "O3-alpha-D-ribofuranosyl-L-threonine 5'->5'-ester with adenosine 5'-(trihydrogen diphosphate)" EXACT RESID-alternate [] xref: DiffAvg: "541.30" xref: DiffFormula: "C 15 H 21 N 5 O 13 P 2" xref: DiffMono: "541.061109" xref: Formula: "C 19 H 28 N 6 O 15 P 2" xref: MassAvg: "642.41" xref: MassMono: "642.108787" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00752 ! adenosine diphosphoribosyl (ADP-ribosyl) modified residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:01664 name: 7'-hydroxy-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to a 7'-hydroxy-L-tryptophan." [PubMed:20223990, RESID:AA0520] synonym: "(2S)-2-amino-3-(7-hydroxy-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "7'-hydroxy-L-tryptophan" EXACT RESID-name [] synonym: "7-hydroxy-L-tryptophan" EXACT RESID-alternate [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 11 H 10 N 2 O 2" xref: MassAvg: "202.21" xref: MassMono: "202.074228" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0427" is_a: MOD:01622 ! monohydroxylated tryptophan [Term] id: MOD:01665 name: N-(DNA-1',2'-dideoxyribos-1'-ylidene)-L-valine def: "A protein modification that effectively crosslinks an N-terminal L-valine residue and a strand of DNA at the C-1 of a ribose, freeing the nucleotide base and forming N-(DNA-1',2'-dideoxyribos-1'-ylidene)-L-valine." [PubMed:20185759, RESID:AA0521] synonym: "(2S)-2-[(3R,4R)-3,4-dihydroxy-5-(phosphonooxy)pentylidene]amino-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE Schiff-base intermediate with DNA; via amino nitrogen" EXACT UniProt-feature [] synonym: "DNA glycosylase valine Schiff base intermediate" EXACT RESID-alternate [] synonym: "N-(DNA-1',2'-dideoxyribos-1'-ylidene)-L-valine" EXACT RESID-name [] xref: Origin: "V" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:00750 ! deoxyribonucleic acid linked residue is_a: MOD:00920 ! modified L-valine residue [Term] id: MOD:01666 name: epicocconone derivatized residue def: "A protein modification that is produced by formation of an adduct with epicocconone." [PubMed:18688235] synonym: "(6S,9aS)-6-(hydroxymethyl)-3-[(1Z,4E,6E,8E)-1-hydroxy-3-oxodeca-1,4,6,8-tetraen-1-yl]-9a-methyl-5,6-dihydro-2H-furo[3,2-g]isochromene-2,9(9aH)-dione" EXACT PSI-MOD-alternate [] synonym: "Deep Purple" EXACT PSI-MOD-alternate [] synonym: "LavaPurple" EXACT PSI-MOD-alternate [] synonym: "Lightning Fast" EXACT PSI-MOD-alternate [] xref: DiffAvg: "410.42" xref: DiffFormula: "C 23 H 22 O 7" xref: DiffMono: "410.136553" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01667 name: N6-epicoccononyl lysine adduct def: "A protein modification that is produced by formation of an adduct with epicocconone." [PubMed:18688235] synonym: "(6Z,7aS)-3-[(1Z,4E,6E,8E)-1-hydroxy-3-oxodeca-1,4,6,8-tetraen-1-yl]-7a-methyl-6-[([(1S)-1-amino-1-carboxylpentyl]amino)methylidene]-5-[(2S)-2,3-dihydroxypropyl]-1-benzofuran-2,7(6H,7aH)-dione" EXACT PSI-MOD-alternate [] synonym: "DeepPurple" EXACT PSI-MOD-alternate [] synonym: "LavaPurple" EXACT PSI-MOD-alternate [] synonym: "Lightning Fast" EXACT PSI-MOD-alternate [] xref: DiffAvg: "410.42" xref: DiffFormula: "C 23 H 22 O 7" xref: DiffMono: "410.136553" xref: Formula: "C 29 H 34 N 2 O 8" xref: MassAvg: "538.60" xref: MassMono: "538.231516" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01666 ! epicocconone derivatized residue [Term] id: MOD:01668 name: O4-(8alpha-FAD)-L-aspartate def: "A protein modification that effectively converts an L-aspartic acid residue to O4-(8alpha-FAD)-L-aspartate." [PubMed:20080101, RESID:AA0522] subset: PSI-MOD-slim synonym: "(2S)-2-amino-4-oxo-4-[8alpha-riboflavin 5'-(trihydrogen diphosphate) 5'->5'-ester with adenosine]oxybutanoic acid" EXACT RESID-systematic [] synonym: "8alpha-[(4-aspartyl)oxy]FAD" EXACT RESID-alternate [] synonym: "O4-(8alpha-FAD)-L-aspartate" EXACT RESID-name [] xref: DiffAvg: "783.54" xref: DiffFormula: "C 27 H 31 N 9 O 15 P 2" xref: DiffMono: "783.141485" xref: Formula: "C 31 H 36 N 10 O 18 P 2" xref: MassAvg: "898.63" xref: MassMono: "898.168428" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00895 ! FAD modified residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:01669 name: trimethyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to N(omega),N(omega),N'(omega)-trimethyl-L-arginine." [OMSSA:117, PubMed:11704273, PubMed:602668, RESID:AA0523, Unimod:37#R] synonym: "(2S)-2-amino-5-([(dimethylamino)(methylamino)methylidene]amino)pentanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-amino-5-([(dimethylamino)(methylimino)methyl]amino)pentanoic acid" EXACT RESID-alternate [] synonym: "2-[(4S)-4-amino-5-oxopentyl]-1,1,3-trimethylguanidine" EXACT RESID-alternate [] synonym: "N(G)-trimethylarginine" EXACT RESID-alternate [] synonym: "N5-[(dimethylamino)(imino)methyl]ornithine" EXACT RESID-alternate [] synonym: "NoNoNo'Me3Arg" EXACT PSI-MOD-label [] synonym: "omega-N,omega-N,omega-N'-trimethyl-L-arginine" EXACT RESID-name [] synonym: "tri-Methylation" RELATED Unimod-description [] synonym: "Trimethyl" RELATED PSI-MS-label [] synonym: "trimethylationr" EXACT OMSSA-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6 N 0 O 0" xref: DiffMono: "42.046950" xref: Formula: "C 9 H 18 N 4 O 1" xref: MassAvg: "198.27" xref: MassMono: "198.148061" xref: Origin: "R" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:37" is_a: MOD:00430 ! trimethylated residue is_a: MOD:00602 ! N-methylated residue is_a: MOD:00658 ! methylated arginine [Term] id: MOD:01670 name: N6-chloro-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-methyl-L-lysine." [PubMed:16091367, PubMed:16195462, PubMed:17260957, RESID:AA0524] synonym: "(2S)-2-amino-6-(chloroamino)hexanoic acid" EXACT RESID-systematic [] synonym: "epsilon-chlorolysine" EXACT RESID-alternate [] synonym: "lysine chloramine" EXACT RESID-alternate [] synonym: "N(zeta)-chlorolysine" EXACT RESID-alternate [] synonym: "N6-chloro-L-lysine" EXACT RESID-name [] synonym: "N6ClLys" EXACT PSI-MOD-label [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "C 6 Cl 1 H 11 N 2 O 1" xref: MassAvg: "162.62" xref: MassMono: "162.055991" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01672 ! halogenated lysine is_a: MOD:01911 ! monochlorinated residue [Term] id: MOD:01671 name: O-(L-isoaspartyl)-L-threonine (active site intermediate) def: "A protein modification that effectively converts an L-threonine residue to O-(L-isoaspartyl)-L-threonine, using free L-asparagine and releasing ammonia." [PubMed:8706862, RESID:AA0525#THR] comment: This is a threonine active intermediate and not an ester cross-link of peptides [JSG]. synonym: "(2S)-2-amino-4-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-2-amino-3-([(4S)-3-amino-3-carboxypropanoyl]oxy)propanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE O-isoaspartyl threonine intermediate" EXACT UniProt-feature [] synonym: "O(beta)-(beta-aspartyl)threonine" EXACT RESID-alternate [] synonym: "O-(L-isoaspartyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(isoaspartyl)-threonine" EXACT RESID-alternate [] xref: DiffAvg: "115.09" xref: DiffFormula: "C 4 H 5 N 1 O 3" xref: DiffMono: "115.026943" xref: Formula: "C 8 H 12 N 2 O 5" xref: MassAvg: "216.19" xref: MassMono: "216.074621" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00671 ! O-acylated residue is_a: MOD:01978 ! O-(L-isoaspartyl)-L-threonine [Term] id: MOD:01672 name: halogenated lysine def: "A protein modification that effectively substitutes a hydrogen atom of an L-lysine residue with a halogen atom." [PubMed:18688235] xref: Origin: "K" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00694 ! halogen containing residue [Term] id: MOD:01673 name: N-acetylaminohexosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an N-acetylaminohexose group through a glycosidic bond." [Unimod:43] subset: PSI-MOD-slim synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "HexNAcRes" EXACT PSI-MOD-label [] synonym: "N-Acetylhexosamine" RELATED Unimod-description [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:43" is_a: MOD:00436 ! N-acetylhexosaminylated residue [Term] id: MOD:01674 name: N4-(N-acetylamino)hexosyl-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-(N-acetaminohexosyl)-L-asparagine." [OMSSA:182, Unimod:43#N] subset: PSI-MOD-slim synonym: "(S)-2-amino-4-(2-acetamido-2-deoxy-beta-D-hexopyranosyl)amino-4-oxobutanoic acid" EXACT PSI-MOD-alternate [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "HexNAcAsn" EXACT PSI-MOD-label [] synonym: "hexNAcN" EXACT OMSSA-label [] synonym: "N-Acetylhexosamine" RELATED Unimod-description [] synonym: "N4-(2-acetamido-2-deoxy-beta-D-hexopyranosyl)-L-asparagine" EXACT PSI-MOD-alternate [] synonym: "N4-(2-acetylamino-2-deoxy-beta-D-hexopyranosyl)-L-asparagine" EXACT PSI-MOD-alternate [] synonym: "N4-(N-acetylhexosaminyl)asparagine" EXACT PSI-MOD-alternate [] synonym: "N4-asparagine-beta-N-acetylhexosaminide" EXACT PSI-MOD-alternate [] synonym: "N4-glycosyl-L-asparagine" EXACT PSI-MOD-alternate [] synonym: "N4-glycosylasparagine" EXACT PSI-MOD-alternate [] synonym: "N4HexNAcAsn" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 12 H 19 N 3 O 7" xref: MassAvg: "317.30" xref: MassMono: "317.122300" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:43" is_a: MOD:00160 ! N4-glycosyl-L-asparagine is_a: MOD:01673 ! N-acetylaminohexosylated residue [Term] id: MOD:01675 name: O-(N-acetylamino)hexosyl-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-(N-acetylaminohexosyl)-L-serine." [OMSSA:184, Unimod:43#S] subset: PSI-MOD-slim synonym: "(S)-2-amino-3-(2-acetamido-2-deoxy-beta-D-hexopyranosyloxy)propanoic acid" EXACT PSI-MOD-alternate [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "hexNAcS" EXACT OMSSA-label [] synonym: "N-Acetylhexosamine" RELATED Unimod-description [] synonym: "O-(2-acetylamino-2-deoxy-beta-D-hexopyranosyl)-L-serine" EXACT PSI-MOD-alternate [] synonym: "O-(N-acetylhexosaminyl)serine" EXACT PSI-MOD-alternate [] synonym: "O-glycosylserine" EXACT PSI-MOD-alternate [] synonym: "O-seryl-beta-N-acetylhexosaminide" EXACT PSI-MOD-alternate [] synonym: "O3-(2-acetamido-2-deoxy-beta-D-hexopyranosyl)-L-serine" EXACT PSI-MOD-alternate [] synonym: "OHexNAcSer" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 11 H 18 N 2 O 7" xref: MassAvg: "290.27" xref: MassMono: "290.111401" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:43" is_a: MOD:00002 ! O-glycosyl-L-serine is_a: MOD:01673 ! N-acetylaminohexosylated residue [Term] id: MOD:01676 name: O-(N-acetylamino)hexosyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O3-(N-acetylaminohexosyl)-L-threonine." [OMSSA:185, Unimod:43#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-(alpha-D-2-acetamido-2-deoxyhexopyranosyloxy)butanoic acid" EXACT PSI-MOD-alternate [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "hexNAcT" EXACT OMSSA-label [] synonym: "N-Acetylhexosamine" RELATED Unimod-description [] synonym: "O-(N-acetylhexcosaminyl)-L-threonine" EXACT PSI-MOD-alternate [] synonym: "O-glycosylthreonine" EXACT PSI-MOD-alternate [] synonym: "O3-(N-acetylhexosaminyl)threonine" EXACT PSI-MOD-alternate [] synonym: "OHexNAcThr" EXACT PSI-MOD-label [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 12 H 20 N 2 O 7" xref: MassAvg: "304.30" xref: MassMono: "304.127051" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:43" is_a: MOD:00005 ! O-glycosyl-L-threonine is_a: MOD:01673 ! N-acetylaminohexosylated residue [Term] id: MOD:01677 name: O4-(N-acetylamino)hexosyl-L-hydroxyproline def: "A protein modification that effectively converts an L-proline residue to O4-(N-acetylamino)hexosyl-L-hydroxyproline." [PubMed:18688235] comment: secondary to RESID:AA0030 subset: PSI-MOD-slim synonym: "(2S,4R)-4-[2-acetamido-2-deoxy-alpha-D-hexopyranosyloxy]pyrrolidine-2-carboxylic acid" EXACT PSI-MOD-alternate [] synonym: "4-(N-acetylhexosaminyloxy)proline" EXACT PSI-MOD-alternate [] synonym: "4-[(2-N-acetylamino)-alpha-D-hexopyranosyl]oxyproline" EXACT PSI-MOD-alternate [] synonym: "alpha-2-(N-acetylamino)hexopyranosyl-4-hydroxyproline" EXACT PSI-MOD-alternate [] synonym: "HexNAc" RELATED PSI-MS-label [] synonym: "O4-glycosyl-hydroxyproline" EXACT PSI-MOD-alternate [] synonym: "O4HexNAcHyPro" EXACT PSI-MOD-label [] xref: DiffAvg: "219.19" xref: DiffFormula: "C 8 H 13 N 1 O 6" xref: DiffMono: "219.074287" xref: Formula: "C 13 H 20 N 2 O 7" xref: MassAvg: "316.31" xref: MassMono: "316.127051" xref: Origin: "P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00915 ! modified L-proline residue relationship: contains MOD:01673 ! N-acetylaminohexosylated residue [Term] id: MOD:01678 name: N6-carbamoyl-L-lysine def: "A protein modification that effectively coverts L-lysine to N6-carbamoyl-L-lysine." [DeltaMass:56, OMSSA:31, PubMed:10978403, PubMed:12203680, Unimod:5#K, ChEBI:144369] comment: This modification can be produced by hydrogen cyanate, either as a reagent or as released by urea degradation in solution [JSG]. subset: PSI-MOD-slim synonym: "2-amino-6-ureido-hexanoic acid" EXACT PSI-MOD-alternate [] synonym: "Carbamyl" RELATED Unimod-interim [] synonym: "Carbamylation" RELATED Unimod-description [] synonym: "carbamylk" EXACT OMSSA-label [] synonym: "homocitrulline" EXACT PSI-MOD-alternate [] synonym: "N6-(aminocarbonyl)-L-lysine" EXACT PSI-MOD-alternate [] synonym: "N6CbmLys" EXACT PSI-MOD-label [] synonym: "MOD_RES N6-carbamoyllysine" EXACT UniProt-feature [] xref: DiffAvg: "43.02" xref: DiffFormula: "C 1 H 1 N 1 O 1" xref: DiffMono: "43.005814" xref: Formula: "C 7 H 13 N 3 O 2" xref: MassAvg: "171.20" xref: MassMono: "171.100777" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:5" xref: UniProt: "PTM-0675" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:00398 ! carbamoylated residue [Term] id: MOD:01679 name: alpha-aminocarbamoylated residue def: "A protein modification that effectively replaces a residue alpha amino or imino hydrogen with a carbamoyl group." [DeltaMass:56, OMSSA:32, PubMed:10978403, PubMed:12203680, Unimod:5#N-term] comment: This modification can be produced by hydrogen cyanate, either as a reagent or as released by urea degradation. This modification effectively blocks Edman degradation, and because it can dehydrate to a cyanate group and react with another peptide N-terminal, it can effectively block two peptide molecules [JSG]. subset: PSI-MOD-slim synonym: "Carbamyl" RELATED Unimod-interim [] synonym: "Carbamylation" RELATED Unimod-description [] synonym: "N2CbmRes" EXACT PSI-MOD-label [] synonym: "ntermcarbamyl" EXACT OMSSA-label [] xref: DiffAvg: "43.02" xref: DiffFormula: "C 1 H 1 N 1 O 1" xref: DiffMono: "43.005814" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:5" is_a: MOD:00398 ! carbamoylated residue [Term] id: MOD:01680 name: alpha-amino monomethylated residue def: "A protein modification that effectively replaces one residue alpha amino or imino hydrogen with one methyl group." [OMSSA:11, OMSSA:76, Unimod:34#N-term] comment: Polypeptides with monomethylated amino terminals can undergo premature cleavage during the coupling step of an Edman degradation. This can result in "preview" with both a residue and the following residue being seen from the first step on through a sequence [JSG]. subset: PSI-MOD-slim synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "N2Me1Res" EXACT PSI-MOD-label [] synonym: "ntermmethyl" EXACT OMSSA-label [] synonym: "ntermpepmethyl" EXACT OMSSA-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:34" is_a: MOD:00599 ! monomethylated residue is_a: MOD:01460 ! alpha-amino methylated residue [Term] id: MOD:01681 name: monomethylated L-aspartic acid def: "A protein modification that effectively replaces one hydrogen atom of an L-aspartic acid residue with one methyl group." [OMSSA:16, Unimod:34#D] synonym: "Me1Asp" EXACT PSI-MOD-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "methyld" EXACT OMSSA-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 5 H 7 N 1 O 3" xref: MassAvg: "129.12" xref: MassMono: "129.042593" xref: Origin: "D" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:34" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00887 ! methylated aspartic acid [Term] id: MOD:01682 name: monomethylated L-cysteine def: "A protein modification that effectively replaces one hydrogen atom of an L-cysteine residue with one methyl group." [OMSSA:73, Unimod:34#C] subset: PSI-MOD-slim synonym: "Me1Cys" EXACT PSI-MOD-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "methylc" EXACT OMSSA-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 4 H 7 N 1 O 1 S 1" xref: MassAvg: "117.17" xref: MassMono: "117.024835" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00660 ! methylated cysteine [Term] id: MOD:01683 name: monomethylated L-lysine def: "A protein modification that effectively replaces one hydrogen atom of an L-lysine residue with one methyl group." [OMSSA:0] subset: PSI-MOD-slim synonym: "Me1Lys" EXACT PSI-MOD-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methylation" RELATED Unimod-description [] synonym: "methylk" EXACT OMSSA-label [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 15 N 2 O 2" xref: MassAvg: "159.21" xref: MassMono: "159.113353" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00663 ! methylated lysine [Term] id: MOD:01684 name: palmitoylated-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to a palmitoylated-L-cysteine, such as N-palmitoyl-L-cysteine or S-palmitoyl-L-cysteine." [OMSSA:92, Unimod:47] subset: PSI-MOD-slim synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" RELATED Unimod-description [] synonym: "palmitoylationc" EXACT OMSSA-label [] synonym: "PamCys" EXACT PSI-MOD-label [] synonym: "Hexadecanoylated L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1 S 0" xref: DiffMono: "238.229666" xref: Formula: "C 19 H 35 N 1 O 2 S 1" xref: MassAvg: "341.55" xref: MassMono: "341.238850" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:47" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01685 name: alpha-amino palmitoylated residue def: "A protein modification that effectively replaces a residue alpha-amino group with a alpha-palmitoylamino group." [Unimod:47#N-term] subset: PSI-MOD-slim synonym: "N2PamRes" EXACT PSI-MOD-label [] synonym: "Palmitoyl" RELATED PSI-MS-label [] synonym: "Palmitoylation" RELATED Unimod-description [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1 S 0" xref: DiffMono: "238.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:47" is_a: MOD:00651 ! N-palmitoylated residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:01686 name: alpha-amino dimethylated residue def: "A protein modification that effectively replaces two alpha amino hydrogen atoms with two methyl group." [OMSSA:38, Unimod:36#N-term] comment: For alpha-amino acids, both N-alpha-monomethylation and complete N-alpha protonation and trimethylation have been observed, but incomplete dimethylation has not been reported as a natural process. For N-terminal proline residues, dimethylation can only be effectively accomplished with a protonated imino group, whereas this process accounts only for dimethylation and not protonation. See MOD:00889. synonym: "di-Methylation" RELATED Unimod-description [] synonym: "Dimethyl" RELATED PSI-MS-label [] synonym: "N2Me2Res" EXACT PSI-MOD-label [] synonym: "ntermpepdimethyl" EXACT OMSSA-label [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4" xref: DiffMono: "28.031300" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "N-term" xref: Unimod: "Unimod:36" is_a: MOD:00429 ! dimethylated residue is_a: MOD:01460 ! alpha-amino methylated residue [Term] id: MOD:01687 name: alpha-amino trimethylated residue def: "A protein modification that effectively replaces an alpha-aminium group with a trimethylaminium group." [OMSSA:12, Unimod:37#N-term] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with an aminium, protonated primary amino, group. This process accounts only for trimethylation and not protonation. The alternative N2Me3+Res process (MOD:01698) accounts for both protonation and trimethylation. subset: PSI-MOD-slim synonym: "N2Me3Res" EXACT PSI-MOD-label [] synonym: "ntermtrimethyl" EXACT OMSSA-label [] synonym: "tri-Methylation" RELATED Unimod-description [] synonym: "Trimethyl" RELATED PSI-MS-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6 N 0 O 0" xref: DiffMono: "42.046402" xref: FormalCharge: "1+" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:37" is_a: MOD:00430 ! trimethylated residue is_a: MOD:01460 ! alpha-amino methylated residue relationship: derives_from MOD:01700 ! alpha-amino protonated residue [Term] id: MOD:01688 name: 3-hydroxy-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to one of the diastereomeric 3-hydroxy-L-asparagine residues." [OMSSA:61, Unimod:35#N] subset: PSI-MOD-slim synonym: "3HyAsn" EXACT PSI-MOD-label [] synonym: "hydroxylationn" EXACT OMSSA-label [] synonym: "monohydroxylated asparagine" EXACT PSI-MOD-alternate [] synonym: "Oxidation" RELATED PSI-MS-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 4 H 6 N 2 O 3" xref: MassAvg: "130.10" xref: MassMono: "130.037842" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:01689 name: alpha-carboxyl methylated residue def: "A protein modification that effectively converts a carboxyl-terminal residue to an alpha-carboxyl (1-carboxyl) methyl ester." [OMSSA:18, OMSSA:68, Unimod:34#C-term] subset: PSI-MOD-slim synonym: "C1OMeRes" EXACT PSI-MOD-label [] synonym: "ctermpepmeester" EXACT OMSSA-label [] synonym: "ctermpepmethyl" EXACT OMSSA-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "Methyl" RELATED Unimod-alternate [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0 S 0" xref: DiffMono: "14.015650" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "C-term" xref: Unimod: "Unimod:34" is_a: MOD:00393 ! O-methylated residue [Term] id: MOD:01690 name: N-[(12R)-12-hydroxymyristoyl]-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-[(12R)-12-hydroxymyristoyl]-L-cysteine." [RESID:AA0516] synonym: "2-[(12R)-12-hydroxytetradecanoyl]amino-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "LIPID N-[(12R)-12-hydroxymyristoyl]cysteine" EXACT UniProt-feature [] synonym: "N-[(12R)-12-hydroxymyristoyl]-L-cysteine" EXACT RESID-name [] synonym: "N-[(12R)-12-hydroxytetradecanoyl]cysteine" EXACT RESID-alternate [] xref: DiffAvg: "226.36" xref: DiffFormula: "C 14 H 26 N 0 O 2 S 0" xref: DiffMono: "226.193280" xref: Formula: "C 17 H 32 N 1 O 3 S 1" xref: MassAvg: "330.51" xref: MassMono: "330.210290" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0419" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:01691 name: N-(12-ketomyristoyl)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to N-(12-ketomyristoyl)-L-cysteine." [PubMed:19053188, RESID:AA0517] synonym: "2-(12-oxotetradecanoyl)amino-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "LIPID N-(12-oxomyristoyl)cysteine" EXACT UniProt-feature [] synonym: "N-(12-ketomyristoyl)-L-cysteine" EXACT RESID-name [] synonym: "N-(12-oxotetradecanoyl)cysteine" EXACT RESID-alternate [] xref: DiffAvg: "224.34" xref: DiffFormula: "C 14 H 24 N 0 O 2 S 0" xref: DiffMono: "224.177630" xref: Formula: "C 17 H 30 N 1 O 3 S 1" xref: MassAvg: "328.49" xref: MassMono: "328.194640" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0420" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:01692 name: glutamyl semialdehyde (Glu) def: "A protein modification that effectively converts an L-glutamic acid residue to L-glutamyl semialdehyde." [PubMed:18688235, PubMed:743268] synonym: "Deoxy" RELATED PSI-MS-label [] synonym: "gamma-glutamyl semialdehyde" EXACT PSI-MOD-alternate [] synonym: "glutamyl 5-semialdehyde" EXACT PSI-MOD-alternate [] synonym: "glutamyl aldehyde" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-16.00" xref: DiffFormula: "C 0 H 0 N 0 O -1" xref: DiffMono: "-15.994915" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue is_a: MOD:01161 ! deoxygenated residue is_a: MOD:01440 ! glutamyl semialdehyde [Term] id: MOD:01693 name: alpha-amino pyridylacetylated residue def: "A protein modification that effectively replaces a residue alpha amino or imino hydrogen with a (pyrid-3-yl)acetyl group." [OMSSA:107, PubMed:9276974, Unimod:25#N-term] comment: Produced by reaction with N-[(pyrid-3-yl)acetyl]oxy-succinimide [JSG]. synonym: "ntermpeppyridyl" EXACT OMSSA-label [] synonym: "Pyridylacetyl" RELATED PSI-MS-label [] synonym: "pyridylacetyl" RELATED Unimod-description [] xref: DiffAvg: "119.12" xref: DiffFormula: "C 7 H 5 N 1 O 1" xref: DiffMono: "119.037114" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:25" is_a: MOD:00418 ! pyridylacetylated residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:01694 name: S-(coelenterazin-3a-yl)-L-cysteine def: "A protein modification that effectively results from forming an adduct between an L-cysteine residue and the bioluminescent compound didehydrocoelenterazine to form S-(coelenterazin-3a-yl)-L-cysteine." [ChEBI:2311, PubMed:18997450, RESID:AA0526] synonym: "(2R)-2-amino-3-([(4-hydroxyphenyl)(8-benzyl-3-oxo-6-[4-hydroxyphenyl]-3,7-dihydroimidazo[1,2-a]pyrazin-2-yl)methyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "dehydrocoelenterazine cysteine adduct" EXACT RESID-alternate [] synonym: "MOD_RES S-(coelenterazin-3a-yl)cysteine" EXACT UniProt-feature [] synonym: "S-(coelenterazin-3a-yl)-L-cysteine" EXACT RESID-name [] synonym: "symplectin chromophore" EXACT RESID-alternate [] xref: DiffAvg: "421.46" xref: DiffFormula: "C 26 H 19 N 3 O 3 S 0" xref: DiffMono: "421.142641" xref: Formula: "C 29 H 24 N 4 O 4 S 1" xref: MassAvg: "524.60" xref: MassMono: "524.151826" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0428" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01695 name: alpha-amino 3-(carboxamidomethylthio)propanoylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with an 3-(carboxamidomethylthio)propanoyl group." [PubMed:15121203, Unimod:293#N-term] synonym: "3-(carbamidomethylthio)propanoyl" RELATED Unimod-description [] synonym: "CAMthiopropanoyl" RELATED PSI-MS-label [] xref: DiffAvg: "145.18" xref: DiffFormula: "C 5 H 7 N 1 O 2 S 1" xref: DiffMono: "145.019749" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:293" is_a: MOD:00612 ! 3-(carboxamidomethylthio)propanoylated residue is_a: MOD:01696 ! alpha-amino acylated residue [Term] id: MOD:01696 name: alpha-amino acylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with an acyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00670 ! N-acylated residue [Term] id: MOD:01697 name: alpha-amino 4-(2-aminoethyl)benzenesulfonylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with an 4-(2-aminoethyl)benzenesulfonyl group." [DeltaMass:235, PubMed:8597590, Unimod:276#N-term] comment: See the comment for MOD:00596 [JSG]. synonym: "AEBS" RELATED PSI-MS-label [] synonym: "Aminoethylbenzenesulfonylation" RELATED Unimod-description [] xref: DiffAvg: "183.23" xref: DiffFormula: "C 8 H 9 N 1 O 2 S 1" xref: DiffMono: "183.035400" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:276" is_a: MOD:00596 ! 4-(2-aminoethyl)benzenesulfonyl fluoride derivatized residue [Term] id: MOD:01698 name: alpha-amino trimethylated protonated-residue def: "A protein modification that effectively replaces an amino group with a trimethylaminium group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "N2Me3+Res" EXACT PSI-MOD-label [] synonym: "tri-Methylation" RELATED Unimod-description [] synonym: "Trimethyl" RELATED PSI-MS-label [] xref: DiffAvg: "43.09" xref: DiffFormula: "C 3 H 7 N 0 O 0 S 0" xref: DiffMono: "43.054227" xref: FormalCharge: "1+" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00711 ! trimethylated protonated-residue is_a: MOD:01460 ! alpha-amino methylated residue [Term] id: MOD:01699 name: protonated residue def: "A protein modification that effectively adds a hydrogen cation, a proton, forming a cationic residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "H+NRes" EXACT PSI-MOD-label [] xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01700 name: alpha-amino protonated residue def: "A protein modification that effectively adds a proton to a residue alpha-amnino or alpha-imino group forming an alpha-aminium or alpha-iminium group, respectively." [PubMed:18688235] subset: PSI-MOD-slim synonym: "N2H+NRes" EXACT PSI-MOD-label [] xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:01699 ! protonated residue [Term] id: MOD:01701 name: deprotonated residue def: "A protein modification that effectively removes a hydrogen cation, a proton, forming an anionic residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "H-NRes" EXACT PSI-MOD-label [] xref: DiffAvg: "-1.01" xref: DiffFormula: "C 0 H -1 N 0 O 0" xref: DiffMono: "-1.007276" xref: FormalCharge: "1-" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:01702 name: alpha-carboxyl deprotonated residue def: "A protein modification that effectively removes a proton from a residue 1-carboxyl group (referred to as the alpha-carboxyl), forming a carboxylate anion." [PubMed:18688235] subset: PSI-MOD-slim synonym: "C1H-NRes" EXACT PSI-MOD-label [] xref: DiffAvg: "-1.01" xref: DiffFormula: "C 0 H -1 N 0 O 0" xref: DiffMono: "-1.007276" xref: FormalCharge: "1-" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:01701 ! deprotonated residue [Term] id: MOD:01703 name: dehydrobutyrine def: "A protein modification that effectively converts a source amino acid residue to dehydrobutyrine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "beta-elim-t" EXACT OMSSA-label [] synonym: "Dehydrated" RELATED PSI-MS-label [] synonym: "Dehydrated" RELATED Unimod-interim [] synonym: "Dehydration" RELATED Unimod-description [] synonym: "dehydro" EXACT OMSSA-label [] synonym: "Dehydroamino butyric acid" EXACT DeltaMass-label [] synonym: "dHAbu" EXACT PSI-MOD-label [] synonym: "phospholosst" EXACT OMSSA-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 4 H 5 N 1 O 1" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01704 name: dehydrobutyrine (Met) def: "A protein modification that effectively converts an L-methionine residue to dehydrobutyrine, by neutral loss of methyl sulfide." [PubMed:18688235] comment: It is expected that this neutral loss will produce a mix of (E)- and (Z)-isomers [JSG]. subset: PSI-MOD-slim synonym: "dHAbu(Met)" EXACT PSI-MOD-label [] xref: DiffAvg: "-48.10" xref: DiffFormula: "C -1 H -4 N 0 O 0 S -1" xref: DiffMono: "-48.003371" xref: Formula: "C 4 H 5 N 1 O 1" xref: MassAvg: "83.09" xref: MassMono: "83.037114" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01703 ! dehydrobutyrine [Term] id: MOD:01705 name: isotope tagged reagent acylated residue def: "A protein modification that effectively replaces a residue hydrogen with an isotope tagged reagent acyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue [Term] id: MOD:01706 name: isotope tagged reagent N-acylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with an isotope tagged reagent acyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue [Term] id: MOD:01707 name: isotope tagged reagent O-acylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with an isotope tagged reagent acyloxy group." [PubMed:18688235] xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00671 ! O-acylated residue [Term] id: MOD:01708 name: isotope tagged reagent alpha-amino acylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with an isotope tagged reagent acyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:01696 ! alpha-amino acylated residue is_a: MOD:01705 ! isotope tagged reagent acylated residue is_a: MOD:01706 ! isotope tagged reagent N-acylated residue [Term] id: MOD:01709 name: iTRAQ4plex reporter+balance reagent N-acylated residue def: "A protein modification that effectively replaces a residue amino- or imino-hydrogen with one of the Applied Biosystems iTRAQ4plex reagent reporter+balance groups." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01706 ! isotope tagged reagent N-acylated residue [Term] id: MOD:01710 name: iTRAQ8plex reporter+balance reagent N-acylated residue def: "A protein modification that effectively replaces a residue amino- or imino-hydrogen with one of the Applied Biosystems iTRAQ8plex reagent reporter+balance groups." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01706 ! isotope tagged reagent N-acylated residue [Term] id: MOD:01711 name: iTRAQ4plex reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with one of the Applied Biosystems iTRAQ4plex reagent reporter+balance groups." [Unimod:214#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:214" is_a: MOD:01708 ! isotope tagged reagent alpha-amino acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue [Term] id: MOD:01712 name: iTRAQ8plex reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with one of the Applied Biosystems iTRAQ8plex reagent reporter+balance groups." [Unimod:214#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:214" is_a: MOD:01708 ! isotope tagged reagent alpha-amino acylated residue is_a: MOD:01710 ! iTRAQ8plex reporter+balance reagent N-acylated residue [Term] id: MOD:01713 name: iTRAQ4plex reporter+balance reagent O-acylated residue def: "A protein modification that effectively replaces a residue hydroxyl with one of the Applied Biosystems iTRAQ4plex reagent reporter+balance acyloxy groups." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01707 ! isotope tagged reagent O-acylated residue [Term] id: MOD:01714 name: iTRAQ8plex reporter+balance reagent O-acylated residue def: "A protein modification that effectively replaces a residue hydroxyl with one of the Applied Biosystems iTRAQ8plex reagent reporter+balance acyloxy groups." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01707 ! isotope tagged reagent O-acylated residue [Term] id: MOD:01715 name: TMT6plex reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with a Proteome Sciences TMT6plex reporter+balance group." [Unimod:214] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:214" is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01705 ! isotope tagged reagent acylated residue [Term] id: MOD:01716 name: TMT6plex reporter fragment def: "The protein modification reporter fragment produced by an Proteome Sciences TMT6plex-126 reagent acylated residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "2,6-dimethyl-1-methylidenepiperidinium" EXACT PSI-MOD-alternate [] synonym: "cysTMT6plex reporter fragment" EXACT PSI-MOD-alternate [] is_a: MOD:01520 ! modification reporter fragment relationship: derives_from MOD:01715 ! TMT6plex reporter+balance reagent acylated residue relationship: derives_from MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01717 name: TMT6plex reporter+balance reagent N-acylated residue def: "A protein modification that effectively replaces a residue amino- or imino-hydrogen with a Proteome Sciences TMT6plex reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01706 ! isotope tagged reagent N-acylated residue [Term] id: MOD:01718 name: TMT6plex reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a Proteome Sciences TMT6plex reporter+balance group." [Unimod:214#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:214" is_a: MOD:01708 ! isotope tagged reagent alpha-amino acylated residue is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue [Term] id: MOD:01719 name: TMT6plex reporter+balance reagent O-acylated residue def: "A protein modification that effectively replaces a residue hydroxyl with one of the Proteome Sciences TMT6plex reagent reporter+balance acyloxy groups." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01707 ! isotope tagged reagent O-acylated residue [Term] id: MOD:01720 name: TMT6plex-126 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Proteome Sciences TMT6plex-126 reporter+balance group." [Unimod:737] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01715 ! TMT6plex reporter+balance reagent acylated residue [Term] id: MOD:01721 name: TMT6plex-126 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Proteome Sciences TMT6plex-126 reporter+balance group." [Unimod:737#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:737" is_a: MOD:01718 ! TMT6plex reporter+balance reagent acylated N-terminal is_a: MOD:01720 ! TMT6plex-126 reporter+balance reagent acylated residue [Term] id: MOD:01722 name: TMT6plex-126 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Proteome Sciences TMT6plex-126 reporter+balance group." [Unimod:737#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 32 (14)N 3 (15)N 1 O 3" xref: MassAvg: "357.26" xref: MassMono: "357.257895" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01720 ! TMT6plex-126 reporter+balance reagent acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01723 name: TMT6plex-126 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Proteome Sciences TMT6plex-126 reporter+balance group." [Unimod:737#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 17 (13)C 4 H 29 (14)N 2 (15)N 1 O 4" xref: MassAvg: "392.23" xref: MassMono: "392.226261" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01720 ! TMT6plex-126 reporter+balance reagent acylated residue [Term] id: MOD:01724 name: TMT6plex-126 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Proteome Sciences TMT6plex-126 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 27 (14)N 4 (15)N 1 O 3" xref: MassAvg: "366.22" xref: MassMono: "366.221844" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01720 ! TMT6plex-126 reporter+balance reagent acylated residue [Term] id: MOD:01725 name: TMT6plex-126 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Proteome Sciences TMT6plex-126 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 11 (13)C 4 H 25 (14)N 2 (15)N 1 O 4" xref: MassAvg: "316.19" xref: MassMono: "316.194961" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01720 ! TMT6plex-126 reporter+balance reagent acylated residue [Term] id: MOD:01726 name: TMT6plex-126 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Proteome Sciences TMT6plex-126 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 12 (13)C 4 H 27 (14)N 2 (15)N 1 O 4" xref: MassAvg: "330.21" xref: MassMono: "330.210611" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01720 ! TMT6plex-126 reporter+balance reagent acylated residue [Term] id: MOD:01727 name: TMT6plex-126 reporter fragment def: "The protein modification reporter fragment produced by an Proteome Sciences TMT6plex-126 reagent acylated residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "2,6-dimethyl-1-methylidenepiperidinium" EXACT PSI-MOD-alternate [] synonym: "cysTMT6plex-126 reporter fragment" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 8 H 16 (14)N 1" xref: MassAvg: "126.13" xref: MassMono: "126.127726" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01716 ! TMT6plex reporter fragment relationship: derives_from MOD:01720 ! TMT6plex-126 reporter+balance reagent acylated residue relationship: derives_from MOD:01822 ! cysTMT6plex-zero reporter+balance reagent cysteine disulfide relationship: derives_from MOD:01823 ! cysTMT6plex-126 reporter+balance reagent cysteine disulfide [Term] id: MOD:01728 name: TMT6plex-127 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Proteome Sciences TMT6plex-127 reporter+balance group." [Unimod:737] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01715 ! TMT6plex reporter+balance reagent acylated residue [Term] id: MOD:01729 name: TMT6plex-127 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Proteome Sciences TMT6plex-127 reporter+balance group." [Unimod:737#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:01718 ! TMT6plex reporter+balance reagent acylated N-terminal is_a: MOD:01728 ! TMT6plex-127 reporter+balance reagent acylated residue [Term] id: MOD:01730 name: TMT6plex-127 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Proteome Sciences TMT6plex-127 reporter+balance group." [Unimod:737#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 32 (14)N 3 (15)N 1 O 3" xref: MassAvg: "357.26" xref: MassMono: "357.257895" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01728 ! TMT6plex-127 reporter+balance reagent acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01731 name: TMT6plex-127 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Proteome Sciences TMT6plex-127 reporter+balance group." [Unimod:737#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: MassAvg: "229.16" xref: MassMono: "229.162932" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01728 ! TMT6plex-127 reporter+balance reagent acylated residue [Term] id: MOD:01732 name: TMT6plex-127 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Proteome Sciences TMT6plex-127 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 27 (14)N 4 (15)N 1 O 3" xref: MassAvg: "366.22" xref: MassMono: "366.221844" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01728 ! TMT6plex-127 reporter+balance reagent acylated residue [Term] id: MOD:01733 name: TMT6plex-127 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Proteome Sciences TMT6plex-127 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 11 (13)C 4 H 25 (14)N 2 (15)N 1 O 4" xref: MassAvg: "316.19" xref: MassMono: "316.194961" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01728 ! TMT6plex-127 reporter+balance reagent acylated residue [Term] id: MOD:01734 name: TMT6plex-127 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Proteome Sciences TMT6plex-127 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 12 (13)C 4 H 27 (14)N 2 (15)N 1 O 4" xref: MassAvg: "330.21" xref: MassMono: "330.210611" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01728 ! TMT6plex-127 reporter+balance reagent acylated residue [Term] id: MOD:01735 name: TMT6plex-127 reporter fragment def: "The protein modification reporter fragment produced by an Proteome Sciences TMT6plex-127 reagent acylated residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "2,6-dimethyl-1-methylidenepiperidinium" EXACT PSI-MOD-alternate [] synonym: "cysTMT6plex-127 reporter fragment" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 7 (13)C 1 H 16 (14)N 1" xref: MassAvg: "127.13" xref: MassMono: "127.131081" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01716 ! TMT6plex reporter fragment relationship: derives_from MOD:01728 ! TMT6plex-127 reporter+balance reagent acylated residue relationship: derives_from MOD:01824 ! cysTMT6plex-127 reporter+balance reagent cysteine disulfide [Term] id: MOD:01736 name: TMT6plex-128 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Proteome Sciences TMT6plex-128 reporter+balance group." [Unimod:737] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01715 ! TMT6plex reporter+balance reagent acylated residue [Term] id: MOD:01737 name: TMT6plex-128 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Proteome Sciences TMT6plex-128 reporter+balance group." [Unimod:737#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:737" is_a: MOD:01718 ! TMT6plex reporter+balance reagent acylated N-terminal is_a: MOD:01736 ! TMT6plex-128 reporter+balance reagent acylated residue [Term] id: MOD:01738 name: TMT6plex-128 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Proteome Sciences TMT6plex-128 reporter+balance group." [Unimod:737#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 32 (14)N 3 (15)N 1 O 3" xref: MassAvg: "357.26" xref: MassMono: "357.257895" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01736 ! TMT6plex-128 reporter+balance reagent acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01739 name: TMT6plex-128 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Proteome Sciences TMT6plex-128 reporter+balance group." [Unimod:737#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 17 (13)C 4 H 29 (14)N 2 (15)N 1 O 4" xref: MassAvg: "392.23" xref: MassMono: "392.226261" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01736 ! TMT6plex-128 reporter+balance reagent acylated residue [Term] id: MOD:01740 name: TMT6plex-128 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Proteome Sciences TMT6plex-128 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 27 (14)N 4 (15)N 1 O 3" xref: MassAvg: "366.22" xref: MassMono: "366.221844" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01736 ! TMT6plex-128 reporter+balance reagent acylated residue [Term] id: MOD:01741 name: TMT6plex-128 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Proteome Sciences TMT6plex-128 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 11 (13)C 4 H 25 (14)N 2 (15)N 1 O 4" xref: MassAvg: "316.19" xref: MassMono: "316.194961" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01736 ! TMT6plex-128 reporter+balance reagent acylated residue [Term] id: MOD:01742 name: TMT6plex-128 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Proteome Sciences TMT6plex-128 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 12 (13)C 4 H 27 (14)N 2 (15)N 1 O 4" xref: MassAvg: "330.21" xref: MassMono: "330.210611" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01736 ! TMT6plex-128 reporter+balance reagent acylated residue [Term] id: MOD:01743 name: TMT6plex-128 reporter fragment def: "The protein modification reporter fragment produced by an Proteome Sciences TMT6plex-128 reagent acylated residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "2,6-dimethyl-1-methylidenepiperidinium" EXACT PSI-MOD-alternate [] synonym: "cysTMT6plex-128 reporter fragment" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 6 (13)C 2 H 16 (14)N 1" xref: MassAvg: "128.13" xref: MassMono: "128.134436" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01716 ! TMT6plex reporter fragment relationship: derives_from MOD:01736 ! TMT6plex-128 reporter+balance reagent acylated residue relationship: derives_from MOD:01825 ! cysTMT6plex-128 reporter+balance reagent cysteine disulfide [Term] id: MOD:01744 name: TMT6plex-129 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Proteome Sciences TMT6plex-129 reporter+balance group." [Unimod:737] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01715 ! TMT6plex reporter+balance reagent acylated residue [Term] id: MOD:01745 name: TMT6plex-129 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Proteome Sciences TMT6plex-129 reporter+balance group." [Unimod:737#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:737" is_a: MOD:01718 ! TMT6plex reporter+balance reagent acylated N-terminal is_a: MOD:01744 ! TMT6plex-129 reporter+balance reagent acylated residue [Term] id: MOD:01746 name: TMT6plex-129 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Proteome Sciences TMT6plex-129 reporter+balance group." [Unimod:737#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 32 (14)N 3 (15)N 1 O 3" xref: MassAvg: "357.26" xref: MassMono: "357.257895" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01744 ! TMT6plex-129 reporter+balance reagent acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01747 name: TMT6plex-129 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Proteome Sciences TMT6plex-129 reporter+balance group." [Unimod:737#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 17 (13)C 4 H 29 (14)N 2 (15)N 1 O 4" xref: MassAvg: "392.23" xref: MassMono: "392.226261" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01744 ! TMT6plex-129 reporter+balance reagent acylated residue [Term] id: MOD:01748 name: TMT6plex-129 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Proteome Sciences TMT6plex-129 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 27 (14)N 4 (15)N 1 O 3" xref: MassAvg: "366.22" xref: MassMono: "366.221844" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01744 ! TMT6plex-129 reporter+balance reagent acylated residue [Term] id: MOD:01749 name: TMT6plex-129 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Proteome Sciences TMT6plex-129 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 11 (13)C 4 H 25 (14)N 2 (15)N 1 O 4" xref: MassAvg: "316.19" xref: MassMono: "316.194961" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01744 ! TMT6plex-129 reporter+balance reagent acylated residue [Term] id: MOD:01750 name: TMT6plex-129 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Proteome Sciences TMT6plex-129 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 12 (13)C 4 H 27 (14)N 2 (15)N 1 O 4" xref: MassAvg: "330.21" xref: MassMono: "330.210611" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01744 ! TMT6plex-129 reporter+balance reagent acylated residue [Term] id: MOD:01751 name: TMT6plex-129 reporter fragment def: "The protein modification reporter fragment produced by an Proteome Sciences TMT6plex-129 reagent acylated residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "2,6-dimethyl-1-methylidenepiperidinium" EXACT PSI-MOD-alternate [] synonym: "cysTMT6plex-129 reporter fragment" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 5 (13)C 3 H 16 (14)N 1" xref: MassAvg: "129.14" xref: MassMono: "129.137790" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01716 ! TMT6plex reporter fragment relationship: derives_from MOD:01744 ! TMT6plex-129 reporter+balance reagent acylated residue relationship: derives_from MOD:01826 ! cysTMT6plex-129 reporter+balance reagent cysteine disulfide [Term] id: MOD:01752 name: TMT6plex-130 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Proteome Sciences TMT6plex-130 reporter+balance group." [Unimod:737] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01715 ! TMT6plex reporter+balance reagent acylated residue relationship: derives_from MOD:01827 ! cysTMT6plex-130 reporter+balance reagent cysteine disulfide [Term] id: MOD:01753 name: TMT6plex-130 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Proteome Sciences TMT6plex-130 reporter+balance group." [Unimod:737#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:737" is_a: MOD:01718 ! TMT6plex reporter+balance reagent acylated N-terminal is_a: MOD:01752 ! TMT6plex-130 reporter+balance reagent acylated residue [Term] id: MOD:01754 name: TMT6plex-130 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Proteome Sciences TMT6plex-130 reporter+balance group." [Unimod:737#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 32 (14)N 3 (15)N 1 O 3" xref: MassAvg: "357.26" xref: MassMono: "357.257895" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01752 ! TMT6plex-130 reporter+balance reagent acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01755 name: TMT6plex-130 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Proteome Sciences TMT6plex-130 reporter+balance group." [Unimod:737#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 17 (13)C 4 H 29 (14)N 2 (15)N 1 O 4" xref: MassAvg: "392.23" xref: MassMono: "392.226261" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01752 ! TMT6plex-130 reporter+balance reagent acylated residue [Term] id: MOD:01756 name: TMT6plex-130 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Proteome Sciences TMT6plex-130 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 27 (14)N 4 (15)N 1 O 3" xref: MassAvg: "366.22" xref: MassMono: "366.221844" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01752 ! TMT6plex-130 reporter+balance reagent acylated residue [Term] id: MOD:01757 name: TMT6plex-130 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Proteome Sciences TMT6plex-130 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 11 (13)C 4 H 25 (14)N 2 (15)N 1 O 4" xref: MassAvg: "316.19" xref: MassMono: "316.194961" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01752 ! TMT6plex-130 reporter+balance reagent acylated residue [Term] id: MOD:01758 name: TMT6plex-130 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Proteome Sciences TMT6plex-130 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 12 (13)C 4 H 27 (14)N 2 (15)N 1 O 4" xref: MassAvg: "330.21" xref: MassMono: "330.210611" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01752 ! TMT6plex-130 reporter+balance reagent acylated residue [Term] id: MOD:01759 name: TMT6plex-130 reporter fragment def: "The protein modification reporter fragment produced by an Proteome Sciences TMT6plex-130 reagent acylated residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "2,6-dimethyl-1-methylidenepiperidinium" EXACT PSI-MOD-alternate [] synonym: "cysTMT6plex-130 reporter fragment" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 4 (13)C 4 H 16 (14)N 1" xref: MassAvg: "130.14" xref: MassMono: "130.141145" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01716 ! TMT6plex reporter fragment relationship: derives_from MOD:01752 ! TMT6plex-130 reporter+balance reagent acylated residue [Term] id: MOD:01760 name: TMT6plex-131 reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Proteome Sciences TMT6plex-131 reporter+balance group." [Unimod:737] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "cysTMT6plex-131 reporter fragment" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01715 ! TMT6plex reporter+balance reagent acylated residue relationship: derives_from MOD:01828 ! cysTMT6plex-131 reporter+balance reagent cysteine disulfide [Term] id: MOD:01761 name: TMT6plex-131 reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Proteome Sciences TMT6plex-131 reporter+balance group." [Unimod:737#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:737" is_a: MOD:01718 ! TMT6plex reporter+balance reagent acylated N-terminal is_a: MOD:01760 ! TMT6plex-131 reporter+balance reagent acylated residue [Term] id: MOD:01762 name: TMT6plex-131 reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6'-hydrogen atom of a lysine residue with the Proteome Sciences TMT6plex-131 reporter+balance group." [Unimod:737#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 32 (14)N 3 (15)N 1 O 3" xref: MassAvg: "357.26" xref: MassMono: "357.257895" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01760 ! TMT6plex-131 reporter+balance reagent acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01763 name: TMT6plex-131 reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Proteome Sciences TMT6plex-131 reporter+balance group." [Unimod:737#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 17 (13)C 4 H 29 (14)N 2 (15)N 1 O 4" xref: MassAvg: "392.23" xref: MassMono: "392.226261" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:737" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01760 ! TMT6plex-131 reporter+balance reagent acylated residue [Term] id: MOD:01764 name: TMT6plex-131 reporter+balance reagent N'-acylated histidine def: "A protein modification that effectively replaces an N'-hydrogen atom of a histidine residue with the Proteome Sciences TMT6plex-131 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 14 (13)C 4 H 27 (14)N 4 (15)N 1 O 3" xref: MassAvg: "366.22" xref: MassMono: "366.221844" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01717 ! TMT6plex reporter+balance reagent N-acylated residue is_a: MOD:01760 ! TMT6plex-131 reporter+balance reagent acylated residue [Term] id: MOD:01765 name: TMT6plex-131 reporter+balance reagent O3-acylated serine def: "A protein modification that effectively replaces an O3-hydrogen atom of a serine residue with the Proteome Sciences TMT6plex-131 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 11 (13)C 4 H 25 (14)N 2 (15)N 1 O 4" xref: MassAvg: "316.19" xref: MassMono: "316.194961" xref: Origin: "S" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02003 ! O3-acylated L-serine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01760 ! TMT6plex-131 reporter+balance reagent acylated residue [Term] id: MOD:01766 name: TMT6plex-131 reporter+balance reagent O3-acylated threonine def: "A protein modification that effectively replaces an O3-hydrogen atom of a threonine residue with the Proteome Sciences TMT6plex-131 reporter+balance group." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "3-[(2,6-dimethylpiperidin-1-yl)acetyl]amino)propanoyl" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "229.16" xref: DiffFormula: "(12)C 8 (13)C 4 H 20 (14)N 1 (15)N 1 O 2" xref: DiffMono: "229.162932" xref: Formula: "(12)C 12 (13)C 4 H 27 (14)N 2 (15)N 1 O 4" xref: MassAvg: "330.21" xref: MassMono: "330.210611" xref: Origin: "T" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01719 ! TMT6plex reporter+balance reagent O-acylated residue is_a: MOD:01760 ! TMT6plex-131 reporter+balance reagent acylated residue [Term] id: MOD:01767 name: TMT6plex-131 reporter fragment def: "The protein modification reporter fragment produced by an Proteome Sciences TMT6plex-131 reagent acylated residue." [PubMed:18688235] synonym: "2,6-dimethyl-1-methylidenepiperidinium" EXACT PSI-MOD-alternate [] synonym: "Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "TMT6plex" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 4 (13)C 4 H 16 (15)N 1" xref: MassAvg: "131.14" xref: MassMono: "131.138180" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01716 ! TMT6plex reporter fragment relationship: derives_from MOD:01760 ! TMT6plex-131 reporter+balance reagent acylated residue [Term] id: MOD:01768 name: O-palmitoleylated residue def: "A protein modification that effectively replaces a residue hydroxyl group with a palmitoleyloxy group." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1" xref: DiffMono: "236.214016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00671 ! O-acylated residue is_a: MOD:01423 ! palmitoleylated residue [Term] id: MOD:01769 name: O-palmitoleyl-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-palmitoleyl-L-threonine." [OMSSA:188, PubMed:6642431, PubMed:8413602, RESID:AA0079#var, Unimod:431#T] subset: PSI-MOD-slim synonym: "(2S,3R)-2-amino-3-((Z)-9-hexadecenoyloxy)butanoic acid" EXACT PSI-MOD-alternate [] synonym: "L-threonine cis-9-hexadecenoate ester" EXACT PSI-MOD-alternate [] synonym: "mod188" EXACT OMSSA-label [] synonym: "O-palmitoleylated L-threonine" EXACT PSI-MOD-alternate [] synonym: "O3-palmitoleyl-threonine" EXACT PSI-MOD-alternate [] synonym: "Palmitoleyl" RELATED PSI-MS-label [] synonym: "palmitoleyl" RELATED Unimod-description [] xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1" xref: DiffMono: "236.214016" xref: Formula: "C 20 H 35 N 1 O 3" xref: MassAvg: "337.50" xref: MassMono: "337.261694" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:431" is_a: MOD:02004 ! O3-acylated L-threonine is_a: MOD:01768 ! O-palmitoleylated residue [Term] id: MOD:01770 name: O-palmitoyl-L-threonine amide def: "A protein modification that effectively converts an L-threonine residue to O-palmitoyl-L-threonine amide." [PubMed:8413602, RESID:AA0079#var, RESID:AA0097#var] synonym: "(2S,3R)-2-amino-3-(hexadecanoyloxy)butanamide" EXACT PSI-MOD-alternate [] synonym: "OPamThrN" EXACT PSI-MOD-label [] xref: DiffAvg: "254.44" xref: DiffFormula: "C 16 H 32 N 1 O 1" xref: DiffMono: "254.248390" xref: Formula: "C 20 H 39 N 2 O 3" xref: MassAvg: "355.54" xref: MassMono: "355.296068" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:02004 ! O3-acylated L-threonine relationship: has_functional_parent MOD:00088 ! O-palmitoyl-L-threonine relationship: has_functional_parent MOD:00106 ! L-threonine amide [Term] id: MOD:01771 name: farnesyl reporter fragment def: "The farnesyl cation protein modification reporter fragment produced by fragmentation of some farnesyl modified residues." [PubMed:15609361, PubMed:18688235] subset: PSI-MOD-slim synonym: "(2E,6E)-3,7,11-trimethyldodeca-2,6,10-trien-1-ylium" EXACT PSI-MOD-alternate [] synonym: "Farn+" EXACT PSI-MOD-label [] synonym: "farnesyl cation" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "C 15 H 25" xref: MassAvg: "205.36" xref: MassMono: "205.195077" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01520 ! modification reporter fragment relationship: derives_from MOD:00437 ! farnesylated residue [Term] id: MOD:01772 name: palmityl reporter fragment def: "The palmityl cation protein modification reporter fragment produced by fragmentation of some palmitoyl modified residues." [PubMed:18688235, PubMed:8413602] subset: PSI-MOD-slim synonym: "palmityl cation" RELATED PSI-MS-label [] synonym: "Pam+" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "C 16 H 31 O 1" xref: MassAvg: "239.42" xref: MassMono: "239.236942" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01520 ! modification reporter fragment relationship: derives_from MOD:00440 ! palmitoylated residue [Term] id: MOD:01773 name: N6,N6,N6-trimethyl-L-lysine with neutral loss of trimethylamine def: "Covalent modification of a trimethyllysine residue with secondary loss of a neutral trimethylamine molecular fragment." [PubMed:17205979, PubMed:18688235] subset: PSI-MOD-slim synonym: "dMe3N6Me3+Lys" EXACT PSI-MOD-label [] xref: DiffAvg: "-59.11" xref: DiffFormula: "C -3 H -9 N -1 O 0" xref: DiffMono: "-59.074048" xref: FormalCharge: "1+" xref: Formula: "C 6 H 10 N 1 O 1" xref: MassAvg: "112.15" xref: MassMono: "112.075690" xref: Origin: "MOD:00083" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00431 ! modified residue with a secondary neutral loss is_a: MOD:00912 ! modified L-lysine residue relationship: derives_from MOD:00083 ! N6,N6,N6-trimethyl-L-lysine [Term] id: MOD:01774 name: N6-octanoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-octanoyl-L-lysine." [PubMed:12591875, PubMed:2215217, RESID:AA0527] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-(octanoylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "epsilon-octanoyllysine" EXACT RESID-alternate [] synonym: "N(zeta)-octanoyllysine" EXACT RESID-alternate [] synonym: "N6-(1-oxooctyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-octanoyl-L-lysine" EXACT RESID-name [] xref: DiffAvg: "126.20" xref: DiffFormula: "C 8 H 14 N 0 O 1" xref: DiffMono: "126.104465" xref: Formula: "C 14 H 26 N 2 O 2" xref: MassAvg: "254.37" xref: MassMono: "254.199428" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00666 ! octanoylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01775 name: 5-glutamyl serotonin def: "A protein modification that effectively converts an L-glutamine residue to 5-glutamyl serotonin." [PubMed:11805836, PubMed:14697203, RESID:AA0528] synonym: "(2S)-2-amino-5-([2-(5-hydroxy-1H-indol-3-yl)ethyl]amino)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "5-glutamyl serotonin" EXACT RESID-name [] synonym: "N2-(gamma-glutamyl)-5-hydoxytryptamine" EXACT RESID-alternate [] synonym: "N5-[2-(5-hydroxy-3-indolyl)ethyl]glutamine" EXACT RESID-alternate [] xref: DiffAvg: "159.19" xref: DiffFormula: "C 10 H 9 N 1 O 1" xref: DiffMono: "159.068414" xref: Formula: "C 15 H 17 N 3 O 3" xref: MassAvg: "287.32" xref: MassMono: "287.126991" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:01776 name: S-methylthiocarbonylaminoethylcysteine (Cys) def: "A protein modification that effectively converts an L-cysteine residue to S-methylthiocarbonylaminoethylcysteine." [PubMed:18688235, PubMed:20608637] comment: This modified residue is a chemical analog of N6-acetyl-L-lysine produced from L-cysteine by methylthiocarbonylaziridine (MTCA, S-methyl aziridine-1-carbothioate). synonym: "(2R)-2-amino-3-([2-([(methylsulfanyl)carbonyl]amino)ethyl]sulfanyl)propanoic acid" EXACT PSI-MOD-alternate [] synonym: "L-cysteine N-(methylthiocarbonyl)aziridine adduct" EXACT PSI-MOD-alternate [] synonym: "MTCTK" EXACT PSI-MOD-alternate [] synonym: "N6-methylthiocarbonyl-4-thialysine" EXACT PSI-MOD-alternate [] synonym: "S-[2-([(methylthio)carbonyl]amino)ethyl]-L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "117.17" xref: DiffFormula: "C 4 H 7 N 1 O 1 S 1" xref: DiffMono: "117.024835" xref: Formula: "C 7 H 12 N 2 O 2 S 2" xref: MassAvg: "220.31" xref: MassMono: "220.034020" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01777 name: S-(glycyl)-L-cysteine (Gly) def: "A protein modification that effectively converts a C-terminal glycine residue to S-(glycyl)-L-cysteine by forming a thioester bond with a free L-cysteine." [ChEBI:22050, PubMed:17726030, PubMed:18359941, PubMed:18771296, PubMed:18799456, PubMed:18842002, PubMed:3306404, RESID:AA0206] comment: This is not the cross-linking of two peptides, but the modification of a C-terminal glycine by formation of an thioester bond with a free cysteine. For the cross-linking of two peptide see MOD:00211 [JSG]. synonym: "(2R)-2-amino-3-[(aminoacetyl)sulfanyl]propanoic acid" EXACT RESID-systematic [] synonym: "1-(cystein-S-yl)-glycinate" EXACT RESID-alternate [] synonym: "glycine cysteine thioester" EXACT RESID-alternate [] synonym: "MOD_RES CysO-cysteine adduct" EXACT UniProt-feature [] synonym: "S-(2-amino-1-oxoethyl)cysteine" EXACT RESID-alternate [] synonym: "S-(glycyl)-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "103.14" xref: DiffFormula: "C 3 H 5 N 1 O 1 S 1" xref: DiffMono: "103.009185" xref: Formula: "C 5 H 9 N 2 O 3 S 1" xref: MassAvg: "177.20" xref: MassMono: "177.033388" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:01778 name: N-(glycyl)-L-cysteine def: "A protein modification that effectively converts a C-terminal glycine residue to N-(glycyl)-L-cysteine by forming a peptide bond with a free L-cysteine." [PubMed:18771296, PubMed:18799456, PubMed:18842002, RESID:AA0529] synonym: "(2R)-2-[(aminoacetyl)amino]-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES CysO-cysteine adduct" EXACT UniProt-feature [] synonym: "N-(2-amino-1-oxoethyl)cysteine" EXACT RESID-alternate [] synonym: "N-(glycyl)-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "103.14" xref: DiffFormula: "C 3 H 5 N 1 O 1 S 1" xref: DiffMono: "103.009185" xref: Formula: "C 5 H 9 N 2 O 3 S 1" xref: MassAvg: "177.20" xref: MassMono: "177.033388" xref: Origin: "G" xref: Source: "hypothetical" xref: TermSpec: "C-term" xref: UniProt: "PTM-0433" is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:01779 name: N6-(L-lysyl)-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-(L-lysyl)-L-lysine by formation of an isopeptide bond between the carboxyl group of a free lysine and the N6-amino group of the peptidyl L-lysine." [PubMed:18201202, PubMed:20729861, RESID:AA0530] comment: This is not the cross-linking of two peptides, but the modification of a peptidyl lysine by formation of an isopeptide bond with a free lysine [JSG]. synonym: "(2S)-2-amino-6-([(2S)-2,6-diaminohexanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "N6-(alpha-lysyl)-lysine" EXACT RESID-alternate [] synonym: "N6-(L-lysyl)-L-lysine" EXACT RESID-name [] xref: DiffAvg: "128.18" xref: DiffFormula: "C 6 H 12 N 2 O 1" xref: DiffMono: "128.094963" xref: Formula: "C 12 H 24 N 4 O 2" xref: MassAvg: "256.35" xref: MassMono: "256.189926" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01780 name: N6-(beta-lysyl)-L-5-hydroxylysine def: "A protein modification that effectively converts an L-lysine residue to N6-(beta-lysyl)-L-5-hydroxylysine by formation of an isopeptide bond between the carboxyl group of a free beta-lysine and the N6-amino group of a peptidyl L-lysine." [PubMed:18201202, PubMed:20729861, RESID:AA0531] synonym: "(2S)-2-amino-6-([(3R)-3,6-diaminohexanoyl]amino)-5-hydroxyhexanoic acid" EXACT RESID-systematic [] synonym: "5-hydroxy-N6-(beta-lysyl)-L-lysine" EXACT RESID-name [] synonym: "5-hydroxy-N6-[(3R)-beta-lysyl]lysine" EXACT RESID-alternate [] synonym: "EF-P lysine derivative" EXACT RESID-alternate [] synonym: "lysyl spermidine derivative [misidentification]" EXACT RESID-alternate [] synonym: "MOD_RES N6-(3,6-diaminohexanoyl)-5-hydroxylysine" EXACT UniProt-feature [] synonym: "N6-[(3R)-3,6-diaminohexanoyl]-L-5-hydroxylysine" EXACT RESID-alternate [] xref: DiffAvg: "144.17" xref: DiffFormula: "C 6 H 12 N 2 O 2" xref: DiffMono: "144.089878" xref: Formula: "C 12 H 24 N 4 O 3" xref: MassAvg: "272.35" xref: MassMono: "272.184841" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0474" relationship: derives_from MOD:00037 ! 5-hydroxy-L-lysine is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01781 name: N6-butanoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-butanoyl-L-lysine." [PubMed:17267393, PubMed:20715035, RESID:AA0532, Unimod:1289] comment: The binding of histone peptides with butanoylated lysine to nuclear bromodomain proteins is non-specific and weaker than binding to the corresponding acetylated lysine peptides [JSG]. synonym: "(2S)-2-amino-6-(butanoylamino)hexanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-azanyl-6-(butanoylamino)hexanoic acid" EXACT RESID-alternate [] synonym: "2-amino-6-butyrylaminocaproic acid" EXACT RESID-alternate [] synonym: "epsilon-butanoyl-L-lysine" EXACT RESID-alternate [] synonym: "epsilon-butyryl-L-lysine" EXACT RESID-alternate [] synonym: "N(zeta)-butanoyllysine" EXACT RESID-alternate [] synonym: "N6-(1-oxobutyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-butanoyl-L-lysine" EXACT RESID-name [] synonym: "N6-butyryllysine" EXACT RESID-alternate [] synonym: "MOD_RES N6-butyryllysine" EXACT UniProt-feature [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 N 0 O 1" xref: DiffMono: "70.041865" xref: Formula: "C 10 H 18 N 2 O 2" xref: MassAvg: "198.27" xref: MassMono: "198.136828" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" xref: Unimod: "Unimod:1289" xref: UniProt: "PTM-0637" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:01997 ! N-butanoylated residue [Term] id: MOD:01782 name: N-methyl-L-serine def: "A protein modification that effectively converts an L-serine residue to N-methyl-L-serine." [PubMed:20668449, RESID:AA0533] subset: PSI-MOD-slim synonym: "(2S)-3-hydroxy-2-(methylamino)propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES N-methylserine" EXACT UniProt-feature [] synonym: "N-methyl-L-serine" EXACT RESID-name [] synonym: "N-methylserine" EXACT RESID-alternate [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 4 H 7 N 1 O 2" xref: MassAvg: "101.10" xref: MassMono: "101.047678" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0432" is_a: MOD:01680 ! alpha-amino monomethylated residue is_a: MOD:01800 ! N-methylated serine [Term] id: MOD:01783 name: N,N-dimethyl-L-serine def: "A protein modification that effectively converts an L-serine residue to N,N-dimethyl-L-serine." [PubMed:20668449, RESID:AA0534] synonym: "(2S)-2-(dimethylamino)propanoic acid" EXACT RESID-systematic [] synonym: "MOD_RES N,N-dimethylserine" EXACT UniProt-feature [] synonym: "N,N-dimethyl-L-serine" EXACT RESID-name [] synonym: "N,N-dimethylserine" EXACT RESID-alternate [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 5 H 10 N 1 O 2" xref: MassAvg: "116.14" xref: MassMono: "116.071154" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0431" is_a: MOD:01686 ! alpha-amino dimethylated residue is_a: MOD:01800 ! N-methylated serine [Term] id: MOD:01784 name: N,N,N-trimethyl-L-serine def: "A protein modification that effectively converts an L-serine residue to N,N,N-trimethyl-L-serine." [PubMed:20668449, PubMed:3979397, RESID:AA0535] subset: PSI-MOD-slim synonym: "(1S)-1-carboxy-2-hydroxy-N,N,N-trimethylethanaminium" EXACT RESID-systematic [] synonym: "(1S)-1-carboxy-2-hydroxy-N,N,N-trimethylethanazanium" EXACT RESID-alternate [] synonym: "(2S)-2-trimethylammonio-3-hydroxypropanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N,N,N-trimethylserine" EXACT UniProt-feature [] synonym: "N,N,N-trimethyl-L-serine" EXACT RESID-name [] synonym: "N,N,N-trimethylserine cation" EXACT RESID-alternate [] synonym: "N,N,N-trimethylserinium" EXACT RESID-alternate [] xref: DiffAvg: "43.09" xref: DiffFormula: "C 3 H 7 N 0 O 0" xref: DiffMono: "43.054227" xref: FormalCharge: "1+" xref: Formula: "C 6 H 13 N 1 O 2" xref: MassAvg: "131.17" xref: MassMono: "131.094080" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0430" is_a: MOD:01698 ! alpha-amino trimethylated protonated-residue is_a: MOD:01800 ! N-methylated serine [Term] id: MOD:01785 name: O-(L-isoglutamyl)-L-threonine (active site intermediate) def: "A protein modification that effectively converts an L-threonine residue to O-(L-isoglutamyl)-L-threonine, using free L-glutamine and releasing ammonia." [PubMed:8706862, RESID:AA0536#THR] comment: This is not an ester cross-link of peptides [JSG]. synonym: "(2S)-2-amino-5-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-2-amino-3-([(4S)-4-amino-4-carboxybutanoyl]oxy)-propanoic acid" EXACT RESID-alternate [] synonym: "5-(threon-O3-yl)glutamate" EXACT RESID-alternate [] synonym: "O(beta)-(gamma-glutamyl)threonine" EXACT RESID-alternate [] synonym: "O-(L-isoglutamyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(isoglutamyl)threonine" EXACT RESID-alternate [] xref: DiffAvg: "129.12" xref: DiffFormula: "C 5 H 7 N 1 O 3" xref: DiffMono: "129.042593" xref: Formula: "C 9 H 14 N 2 O 5" xref: MassAvg: "230.22" xref: MassMono: "230.090272" xref: Origin: "T" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00671 ! O-acylated residue is_a: MOD:01979 ! O-(L-isoglutamyl)-L-threonine [Term] id: MOD:01786 name: 3'-nitro-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to 3'-nitro-L-tyrosine." [ChEBI:44454, PubMed:16944230, PubMed:5339594, RESID:AA0537] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-(4-hydroxy-3-nitrophenyl)propanoic acid" EXACT RESID-systematic [] synonym: "3'-nitro-L-tyrosine" EXACT RESID-name [] synonym: "3-nitro-L-tyrosine" EXACT RESID-alternate [] synonym: "3-nitrotyrosine" EXACT RESID-alternate [] synonym: "m-nitrotyrosine" EXACT RESID-alternate [] synonym: "meta-nitrotyrosine" EXACT RESID-alternate [] synonym: "MOD_RES 3'-Nitrotyrosine" EXACT UniProt-feature [] xref: DiffAvg: "45.00" xref: DiffFormula: "C 0 H -1 N 1 O 2" xref: DiffMono: "44.985078" xref: Formula: "C 9 H 8 N 2 O 4" xref: MassAvg: "208.17" xref: MassMono: "208.048407" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0434" is_a: MOD:01352 ! nitrated L-tyrosine [Term] id: MOD:01787 name: 5'-(L-tyros-5'-yl)amino-L-tyrosine def: "A protein modification that effectively cross-links two L-tyrosine residues through their 5' positions by amine nitrogen to form 5'-(L-tyros-5'-yl)amino-L-tyrosine." [PubMed:18781570, RESID:AA0459] comment: Cross-link 2. synonym: "(2S,2'S)-3,3'-[iminobis(4-hydroxybenzene-3,1-diyl)]bis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "5'-(L-tyros-5'-yl)amino-L-tyrosine" EXACT RESID-name [] synonym: "5'-[(tyros-5'-yl)amino]tyrosine" EXACT RESID-alternate [] synonym: "5'-tyrosyl-5'-aminotyrosine" EXACT RESID-alternate [] synonym: "bis(LTQ) linkage" EXACT RESID-alternate [] synonym: "CROSSLNK 5'-tyrosyl-5'-aminotyrosine (Tyr-Tyr) (interchain)" EXACT UniProt-feature [] xref: DiffAvg: "13.00" xref: DiffFormula: "C 0 H -1 N 1 O 0" xref: DiffMono: "12.995249" xref: Formula: "C 18 H 17 N 3 O 4" xref: MassAvg: "339.35" xref: MassMono: "339.121906" xref: Origin: "Y, Y" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0320" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:01788 name: histidine immonium ion def: "A protein modification that effectively converts an N-terminal L-histidine residue to histidine immonium ion." [PubMed:17074506, PubMed:18688235] comment: This fragment corresponds to the first ion in an a+ series. subset: PSI-MOD-slim synonym: "2-(1H-imidazolyl)ethaniminium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-27.00" xref: DiffFormula: "C -1 H 1 N 0 O -1" xref: DiffMono: "-26.987638" xref: FormalCharge: "1+" xref: Formula: "C 5 H 8 N 3 O 0" xref: MassAvg: "110.14" xref: MassMono: "110.071274" xref: Origin: "H" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01527 ! residue reporter fragment [Term] id: MOD:01789 name: phenylalanine immonium ion def: "A protein modification that effectively converts an N-terminal L-phenylalanine residue to phenylalanine immonium ion." [PubMed:17074506, PubMed:18688235] comment: This fragment corresponds to the first ion in an a+ series. subset: PSI-MOD-slim synonym: "2-phenylethaniminium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-27.00" xref: DiffFormula: "C -1 H 1 N 0 O -1" xref: DiffMono: "-26.987638" xref: FormalCharge: "1+" xref: Formula: "C 8 H 10 N 1 O 0" xref: MassAvg: "120.17" xref: MassMono: "120.080776" xref: Origin: "F" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00914 ! modified L-phenylalanine residue is_a: MOD:01527 ! residue reporter fragment [Term] id: MOD:01790 name: tyrosine immonium ion def: "A protein modification that effectively converts an an N-terminal L-tyrosine residue to tyrosine immonium ion." [PubMed:17074506, PubMed:18688235] comment: This fragment corresponds to the first ion in an a+ series. subset: PSI-MOD-slim synonym: "2-(4-hydroxyphenyl)ethaniminium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-27.00" xref: DiffFormula: "C -1 H 1 N 0 O -1" xref: DiffMono: "-26.987638" xref: FormalCharge: "1+" xref: Formula: "C 8 H 10 N 1 O 1" xref: MassAvg: "136.17" xref: MassMono: "136.075690" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01527 ! residue reporter fragment [Term] id: MOD:01791 name: phosphohistidine immonium ion def: "A protein modification that effectively converts an N-terminal phosphohistidine residue to phosphohistidine immonium ion." [PubMed:17690871, PubMed:18688235, PubMed:20847263] comment: This fragment corresponds to the first ion in an a+ series. subset: PSI-MOD-slim synonym: "2-(1H-imidazolyl)ethaniminium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-27.00" xref: DiffFormula: "C -1 H 1 N 0 O -1" xref: DiffMono: "-26.987638" xref: FormalCharge: "1+" xref: Formula: "C 5 H 9 N 3 O 3 P 1" xref: MassAvg: "190.12" xref: MassMono: "190.037604" xref: Origin: "MOD:00890" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:01527 ! residue reporter fragment relationship: derives_from MOD:00890 ! phosphorylated L-histidine [Term] id: MOD:01792 name: phosphotyrosine immonium ion def: "A protein modification that effectively converts an N-terminal O4'-phospho-L-tyrosine residue to tyrosine immonium ion." [PubMed:17690871, PubMed:18688235] comment: This fragment corresponds to the first ion in an a+ series. subset: PSI-MOD-slim synonym: "2-(4-phosphonoxyphenyl)ethaniminium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-27.00" xref: DiffFormula: "C -1 H 1 N 0 O -1" xref: DiffMono: "-26.987638" xref: FormalCharge: "1+" xref: Formula: "C 8 H 11 N 1 O 4 P 1" xref: MassAvg: "216.15" xref: MassMono: "216.042021" xref: Origin: "MOD:00048" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01527 ! residue reporter fragment relationship: derives_from MOD:00048 ! O4'-phospho-L-tyrosine [Term] id: MOD:01793 name: S-carboxamidomethyl-L-cysteine sulfoxide def: "A protein modification that effectively converts an L-cysteine residue to S-carboxamidomethyl-L-cysteine sulfoxide." [PubMed:11212008, PubMed:17689096, PubMed:18306178, PubMed:18688235] synonym: "CamCO" EXACT PSI-MOD-alternate [] synonym: "S-carbamoylmethyl-L-cysteine sulfoxide" EXACT PSI-MOD-alternate [] xref: DiffAvg: "73.05" xref: DiffFormula: "C 2 H 3 N 1 O 2" xref: DiffMono: "73.016378" xref: Formula: "C 5 H 8 N 2 O 3 S 1" xref: MassAvg: "176.19" xref: MassMono: "176.025563" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00708 ! sulfur oxygenated L-cysteine is_a: MOD:01854 ! sulfur monooxygenated residue relationship: derives_from MOD:01060 ! S-carboxamidomethyl-L-cysteine [Term] id: MOD:01794 name: 1x(13)C,3x(2)H labeled monomethylated residue def: "A protein modification that effectively replaces the methyl group of a residue containing common isotopes with a 1x(13)C,3x(2)H labeled monomethylated residue." [PubMed:18688235] synonym: "Methyl:2H(3)13C(1)" RELATED PSI-MS-label [] xref: DiffAvg: "18.04" xref: DiffFormula: "(13)C 1 (1)H -1 (2)H 3" xref: DiffMono: "18.037835" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00839 ! (2)H deuterium labeled residue is_a: MOD:00842 ! (13)C labeled residue [Term] id: MOD:01795 name: 1x(13)C,3x(2)H C(6)-labeled L-methionine def: "A protein modification that effectively converts an L-methionine residue containing common isotopes to 1x(13)C,3x(2)H C(6)-labeled L-methionine." [PubMed:15782174, PubMed:18688235] synonym: "Methyl:2H(3)13C(1)" RELATED PSI-MS-label [] xref: DiffAvg: "4.02" xref: DiffFormula: "(12)C -1 (13)C 1 (1)H -3 (2)H 3" xref: DiffMono: "4.022185" xref: Formula: "(12)C 4 (13)C 1 (1)H 6 (2)H 3 N 1 O 1 S 1" xref: MassAvg: "135.06" xref: MassMono: "135.062670" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00839 ! (2)H deuterium labeled residue is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:01796 name: 1x(13)C,3x(2)H C(6)-labeled L-methionine sulfoxide def: "A protein modification that effectively converts an L-methionine residue containing common isotopes to 1x(13)C,3x(2)H C(6)-labeled L-methionine sulfoxide." [PubMed:15782174, PubMed:18688235] xref: DiffAvg: "20.02" xref: DiffFormula: "(12)C -1 (13)C 1 (1)H -3 (2)H 3 O 1" xref: DiffMono: "20.017100" xref: Formula: "(12)C 4 (13)C 1 (1)H 6 (2)H 3 N 1 O 2 S 1" xref: MassAvg: "151.06" xref: MassMono: "151.057585" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00839 ! (2)H deuterium labeled residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:01797 name: 1'-phosphohistidine immonium ion def: "A protein modification that effectively converts an N-terminal 1'-phosphohistidine residue to 1'-phosphohistidine immonium ion." [PubMed:17690871, PubMed:18688235, PubMed:20847263] comment: This fragment corresponds to the first ion in an a+ series. synonym: "2-((1-phosphono-1H-imidazol-4-yl)ethaniminium" EXACT PSI-MOD-alternate [] synonym: "Ntau-phosphorylated L-histidine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-27.00" xref: DiffFormula: "C -1 H 1 N 0 O -1" xref: DiffMono: "-26.987638" xref: FormalCharge: "1+" xref: Formula: "C 5 H 9 N 3 O 3 P 1" xref: MassAvg: "190.12" xref: MassMono: "190.037604" xref: Origin: "MOD:00044" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01791 ! phosphohistidine immonium ion relationship: derives_from MOD:00044 ! 1'-phospho-L-histidine [Term] id: MOD:01798 name: 3'-phosphohistidine immonium ion def: "A protein modification that effectively converts an N-terminal 3'-phosphohistidine residue to 3'-phosphohistidine immonium ion." [PubMed:18688235] comment: This fragment corresponds to the first ion in an a+ series. synonym: "2-(1-phosphono-1H-imidazol-5-yl)ethaniminium" EXACT PSI-MOD-alternate [] synonym: "Npi-phosphorylated L-histidine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-27.00" xref: DiffFormula: "C -1 H 1 N 0 O -1" xref: DiffMono: "-26.987638" xref: FormalCharge: "1+" xref: Formula: "C 5 H 9 N 3 O 3 P 1" xref: MassAvg: "190.12" xref: MassMono: "190.037604" xref: Origin: "MOD:00045" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01791 ! phosphohistidine immonium ion relationship: derives_from MOD:00045 ! 3'-phospho-L-histidine [Term] id: MOD:01799 name: methylated serine def: "A protein modification that effectively converts an L-alanine residue to a methylated serine, such as N-methylserine, N,N-dimethylserine, or N,N,N-trimethylserine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeSer" EXACT PSI-MOD-label [] xref: Origin: "S" is_a: MOD:00427 ! methylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01800 name: N-methylated serine def: "A protein modification that effectively replaces an L-serine alpha amino hydrogen with a methyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:01460 ! alpha-amino methylated residue is_a: MOD:01799 ! methylated serine [Term] id: MOD:01801 name: protonated L-serine (L-serinium) residue def: "A protein modification that effectively converts an L-serine residue to an L-serinium (protonated L-serine)." [PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "C 3 H 7 N 1 O 2" xref: MassAvg: "89.09" xref: MassMono: "89.047130" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01700 ! alpha-amino protonated residue [Term] id: MOD:01802 name: N,N,N-trimethyl-L-serine (from L-serinium) def: "A protein modification that effectively converts an L-serinium (protonated L-serine) residue to an N,N,N-trimethyl-L-serine." [PubMed:18688235] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with an aminium, protonated primary amino, group. This process accounts only for trimethylation and not protonation. The alternative N2Me3+Ser process (MOD:00071) accounts for both protonation and trimethylation. subset: PSI-MOD-slim synonym: "N2Me3Ala" EXACT PSI-MOD-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6 N 0 O 0" xref: DiffMono: "42.046402" xref: FormalCharge: "1+" xref: Formula: "C 6 H 13 N 1 O 2" xref: MassAvg: "131.17" xref: MassMono: "131.094080" xref: Origin: "MOD:01801" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:01687 ! alpha-amino trimethylated residue relationship: derives_from MOD:01801 ! protonated L-serine (L-serinium) residue [Term] id: MOD:01803 name: O-methylated threonine def: "A protein modification that effectively converts an L-threonine residue to a methylated threonine, such as O-methyl-L-threonine or L-threonine methyl ester." [PubMed:18688235] synonym: "OMeThr" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00393 ! O-methylated residue is_a: MOD:01418 ! methylated threonine [Term] id: MOD:01804 name: glycosylphosphorylated residue def: "A protein modification that effectively results from forming an adduct with a glycosylphosphate through a phosphodiester bond." [PubMed:18688235] is_a: MOD:00764 ! glycoconjugated residue is_a: MOD:00861 ! phosphorus containing modified residue [Term] id: MOD:01805 name: N-(L-isoaspartyl)-glycine (Asp) def: "A protein modification that effectively crosslinks an L-aspartic acid residue and a glycine residue by an isopeptide bond with formation of N-(L-isoaspartyl)-glycine and the release of water." [ChEBI:21479, PubMed:1826288, PubMed:18671394, RESID:AA0126] comment: Cross-link 2. synonym: "(2S)-2-amino-4-(carboxymethyl)amino-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-amino-N4-(carboxymethyl)-butanediamic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoaspartyl glycine isopeptide (Asp-Gly)" EXACT UniProt-feature [] synonym: "CROSSLNK Isoaspartyl glycine isopeptide (Gly-Asp)" EXACT UniProt-feature [] synonym: "isoaspartyl glycine" EXACT RESID-alternate [] synonym: "N-(L-isoaspartyl)-glycine" EXACT RESID-name [] synonym: "N-beta-aspartylglycine" EXACT RESID-alternate [] synonym: "N4-(carboxymethyl)-asparagine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 7 N 2 O 3" xref: MassAvg: "155.13" xref: MassMono: "155.045667" xref: Origin: "D, G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0490" is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01928 ! N-(L-isoaspartyl)-glycine [Term] id: MOD:01806 name: N,N-dimethyl-L-leucine def: "A protein modification that effectively converts an L-leucine residue to N,N-dimethyl-L-leucine." [PubMed:19522542, RESID:AA0538] synonym: "(2S)-2-(dimethylamino)-4-methylpentanoic acid" EXACT RESID-systematic [] synonym: "2-(dimethylamino)-4-methylvaleric acid" EXACT RESID-alternate [] synonym: "2-(dimethylazanyl)-4-methylpentanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N,N-dimethylleucine" EXACT UniProt-feature [] synonym: "N,N-dimethyl-L-leucine" EXACT RESID-name [] synonym: "N,N-dimethylleucine" EXACT RESID-alternate [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 16 N 1 O 1" xref: MassAvg: "142.22" xref: MassMono: "142.123189" xref: Origin: "L" xref: Source: "hypothetical" xref: TermSpec: "N-term" xref: UniProt: "PTM-0435" is_a: MOD:01686 ! alpha-amino dimethylated residue is_a: MOD:01808 ! N-methylated leucine [Term] id: MOD:01807 name: N-formyl-L-glutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to N-formyl-L-glutamic acid." [PubMed:18001127, RESID:AA0539] synonym: "(2S)-2-(formylamino)pentanedioic acid" EXACT RESID-systematic [] synonym: "2-(formylazanyl)pentanedioic acid" EXACT RESID-alternate [] synonym: "2-formamidopentanedioic acid" EXACT RESID-alternate [] synonym: "2-formylaminopentanedioic acid" EXACT RESID-alternate [] synonym: "N-formyl-L-glutamic acid" EXACT RESID-name [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 6 H 8 N 1 O 4" xref: MassAvg: "158.13" xref: MassMono: "158.045333" xref: Origin: "E" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00409 ! N-formylated residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01808 name: N-methylated leucine def: "A protein modification that effectively replaces an L-leucine alpha amino hydrogen with a methyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "MeLeu" EXACT PSI-MOD-label [] xref: Origin: "L" is_a: MOD:00662 ! methylated leucine is_a: MOD:01460 ! alpha-amino methylated residue [Term] id: MOD:01809 name: 5x(13)C,1x(15)N labeled residue def: "A protein modification that effectively converts a residue containing common isotopes to a 5x(13)C,1x(15)N labeled residue." [PubMed:12771378, Unimod:268] synonym: "13C(5) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(5)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "6.01" xref: DiffFormula: "(12)C -5 (13)C 5 (14)N -1 (15)N 1" xref: DiffMono: "6.013809" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:268" is_a: MOD:00842 ! (13)C labeled residue is_a: MOD:00843 ! (15)N labeled residue [Term] id: MOD:01810 name: 5x(13)C,1x(15)N labeled L-proline def: "A protein modification that effectively converts an L-proline residue to 5x(13)C,1x(15)N labeled L-proline." [PubMed:12771378, Unimod:268#P] synonym: "13C(5) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(5)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "6.01" xref: DiffFormula: "(12)C -5 (13)C 5 (14)N -1 (15)N 1" xref: DiffMono: "6.013809" xref: Formula: "(13)C 5 H 7 (15)N 1 O 1" xref: MassAvg: "103.07" xref: MassMono: "103.066573" xref: Origin: "P" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:268" is_a: MOD:00915 ! modified L-proline residue is_a: MOD:01809 ! 5x(13)C,1x(15)N labeled residue [Term] id: MOD:01811 name: 5x(13)C,1x(15)N labeled L-methionine def: "A protein modification that effectively converts an L-methionine residue to 5x(13)C,1x(15)N labeled L-methionine." [PubMed:12771378, Unimod:268#M] synonym: "13C(5) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(5)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "6.01" xref: DiffFormula: "(12)C -5 (13)C 5 (14)N -1 (15)N 1" xref: DiffMono: "6.013809" xref: Formula: "(13)C 5 H 9 (15)N 1 O 1 S 1" xref: MassAvg: "137.05" xref: MassMono: "137.054294" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:268" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01809 ! 5x(13)C,1x(15)N labeled residue [Term] id: MOD:01812 name: 5x(13)C,1x(15)N labeled L-methionine sulfoxide def: "A protein modification that effectively converts an L-methionine residue to 5x(13)C,1x(15)N labeled L-methionine sulfoxide." [PubMed:12771378, Unimod:268#M] synonym: "13C(5) 15N(1) Silac label" RELATED Unimod-description [] synonym: "Label:13C(5)15N(1)" RELATED PSI-MS-label [] xref: DiffAvg: "6.01" xref: DiffFormula: "(12)C -5 (13)C 5 (14)N -1 (15)N 1" xref: DiffMono: "6.013809" xref: Formula: "(13)C 5 H 9 (15)N 1 O 2 S 1" xref: MassAvg: "153.05" xref: MassMono: "153.049209" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:268" relationship: derives_from MOD:00719 ! L-methionine sulfoxide is_a: MOD:01809 ! 5x(13)C,1x(15)N labeled residue [Term] id: MOD:01813 name: morpholine-2-acetylated residue def: "A protein modification that effectively substitutes a morpholine-2-acetyl group for a hydrogen atom." [PubMed:10446193, Unimod:29] comment: The Unimod name "N-Succinimidyl-3-morpholine acetate" appears to have been a typographical error [JSG]. synonym: "N-Succinimidyl-2-morpholine acetate" RELATED Unimod-description [] synonym: "N-succinimidylmorpholine-2-acetate derivative" EXACT PSI-MOD-alternate [] synonym: "SMA" RELATED PSI-MS-label [] xref: DiffAvg: "127.14" xref: DiffFormula: "C 6 H 9 N 1 O 2" xref: DiffMono: "127.063329" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: Unimod: "Unimod:29" is_a: MOD:00649 ! acylated residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01814 name: L-cysteine 3-hydroxy-2,5-pyridinedicarboxylic acid def: "A protein modification that effectively cross-links a cysteine and two serine residues to form L-cysteine 3-hydroxy-2,5-pyridinedicarboxylic acid." [PubMed:18406324, PubMed:19678698, PubMed:893891, RESID:AA0540] comment: Cross-link 3. synonym: "6-[(1R)-1-amino-2-sulfanylethyl]-3-hydroxypyridine-2,5-dicarboxylic acid" EXACT RESID-systematic [] synonym: "6-[1-azanyl-2-sulfanylethyl]-3-hydroxypyridine-2,5-dicarboxylic acid" EXACT RESID-alternate [] synonym: "L-cysteine 3-hydroxy-2,5-pyridinedicarboxylic acid" EXACT RESID-name [] synonym: "CROSSLNK 3-hydroxypyridine-2,5-dicarboxylic acid (Ser-Cys)" RELATED UniProt-feature [] xref: DiffAvg: "-54.07" xref: DiffFormula: "C 0 H -8 N -1 O -2 S 0" xref: DiffMono: "-54.055504" xref: Formula: "C 9 H 7 N 2 O 3 S 1" xref: MassAvg: "223.23" xref: MassMono: "223.017738" xref: Origin: "C, S, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0454" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01425 ! pyridinyl ring crosslinked residues [Term] id: MOD:01815 name: L-glutamate thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-glutamic acid residue to form L-glutamate thiazole-4-carboxylic acid." [PubMed:18406324, PubMed:19678698, PubMed:893891, RESID:AA0541] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-3-carboxypropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[-1-azanyl-3-carboxypropyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Glu-Cys)" EXACT UniProt-feature [] synonym: "L-glutamate thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 8 H 8 N 2 O 3 S 1" xref: MassAvg: "212.22" xref: MassMono: "212.025563" xref: Origin: "C, E" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0456" is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01816 name: 2'-hydroxy-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to a 2'-hydroxy-L-tryptophan." [PubMed:11714714, RESID:AA0542] synonym: "(2S)-2-amino-3-(2-hydroxy-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "2'-hydroxy-L-tryptophan" EXACT RESID-name [] synonym: "2-azanyl-3-(2-hydroxy-1H-indol-3-yl)propanoic acid" EXACT RESID-alternate [] synonym: "2-hydroxy-L-tryptophan" EXACT RESID-alternate [] synonym: "2-hydroxy-tryptophan" EXACT RESID-alternate [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 11 H 10 N 2 O 2" xref: MassAvg: "202.21" xref: MassMono: "202.074228" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01622 ! monohydroxylated tryptophan [Term] id: MOD:01817 name: 2'-oxo-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to a 2'-oxo-L-tryptophan." [PubMed:9461080, RESID:AA0543] synonym: "(2S)-2-amino-3-[(3S)-2-oxo-2,3-dihydro-1H-indol-3-yl]propanoic acid" EXACT RESID-systematic [] synonym: "2'-oxo-L-tryptophan" EXACT RESID-name [] synonym: "2-azanyl-3-[(3S)-2-oxo-2,3-dihydro-1H-indol-3-yl]propanoic acid" EXACT RESID-alternate [] synonym: "2-oxo-L-tryptophan" EXACT RESID-alternate [] synonym: "2-oxotryptophan" EXACT RESID-alternate [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 11 H 10 N 2 O 2" xref: MassAvg: "202.21" xref: MassMono: "202.074228" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:01818 name: 1'-(L-tryptophan-3'-yl)-L-tryptophan def: "A protein modification that effectively cross-links two tryptophan residues to form 1'-(L-tryptophan-3'-yl)-L-tryptophan." [PubMed:20600836, RESID:AA0544] comment: Cross-link 2. synonym: "(2S,2'S)-3,3'-(3'H-1,3'-biindole-3,3'-diyl)bis(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "1-(L-tryptophan-3-yl)-L-tryptophan" EXACT RESID-name [] synonym: "2-amino-3-[2-[2-amino-3-(2-carboxyethyl)-1H-indol-4-yl]-1H-indol-3-yl]propanoic acid" EXACT RESID-alternate [] synonym: "3-[(2S)-2-amino-2-carboxyethyl]-3-(3-[(2S)-2-amino-2-carboxyethyl]-1H-indol-2-yl)-1H-indole" EXACT RESID-systematic [] synonym: "3-[2-azanyl-2-carboxyethyl]-3-(3-[2-azanyl-2-carboxyethyl]-1H-indol-2-yl)-1H-indole" EXACT RESID-alternate [] synonym: "ditryptophan" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 22 H 18 N 4 O 2" xref: MassAvg: "370.41" xref: MassMono: "370.142976" xref: Origin: "W, W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0544" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02057 ! crosslinked L-tryptophan residue [Term] id: MOD:01819 name: N6-succinyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-succinyl-L-lysine." [PubMed:16582421, PubMed:21151122, RESID:AA0545] subset: PSI-MOD-slim synonym: "(2S)-2-amino-6-[(3-carboxypropanoyl)amino]hexanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-6-[(3-carboxypropanoyl)azanyl]hexanoic acid" EXACT RESID-alternate [] synonym: "4-[[(5S)-5-amino-6-hydroxy-6-oxohexyl]amino]-4-oxobutanoate" EXACT RESID-alternate [] synonym: "MOD_RES N6-succinyllysine" EXACT UniProt-feature [] synonym: "N(epsilon)-(succinyl)lysine" EXACT RESID-alternate [] synonym: "N6-succinyl-L-lysine" EXACT RESID-name [] synonym: "succinyllysine" EXACT RESID-alternate [] xref: DiffAvg: "100.07" xref: DiffFormula: "C 4 H 4 N 0 O 3" xref: DiffMono: "100.016044" xref: Formula: "C 10 H 16 N 2 O 4" xref: MassAvg: "228.25" xref: MassMono: "228.111007" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0438" is_a: MOD:01029 ! succinylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01820 name: isotope tagged sufhydryl reagent modified cysteine def: "A protein modification that effectively replaces a cysteine sulhydryl hydrogen with an isotope tagged sulfhydryl reagent group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01821 name: cysTMT6plex reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex reporter+balance group." [Unimod:985, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysteine-reactive Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "cysTMT6plex" RELATED Unimod-interim [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:985" is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01429 ! (15)N isotope tagged reagent is_a: MOD:01820 ! isotope tagged sufhydryl reagent modified cysteine [Term] id: MOD:01822 name: cysTMT6plex-zero reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex-zero reporter+balance group." [Unimod:984, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysTMT" RELATED Unimod-interim [] synonym: "Native cysteine-reactive Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "299.17" xref: DiffFormula: "(12)C 14 H 25 (14)N 3 O 2 S 1" xref: DiffMono: "299.166748" xref: Formula: "(12)C 17 H 32 (14)N 4 O 4 S 2" xref: MassAvg: "420.19" xref: MassMono: "420.186498" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:984" is_a: MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01823 name: cysTMT6plex-126 reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex-126 reporter+balance group." [PubMed:18688235, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysteine-reactive Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "cysTMT6plex" RELATED Unimod-interim [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.18" xref: DiffFormula: "(12)C 10 (13)C 4 H 25 (14)N 2 (15)N 1 O 2 S 1" xref: DiffMono: "304.177202" xref: Formula: "(12)C 13 (13)C 4 H 32 (14)N 3 (15)N 1 O 4 S 2" xref: MassAvg: "425.20" xref: MassMono: "425.196952" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:985" is_a: MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01824 name: cysTMT6plex-127 reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex-127 reporter+balance group." [PubMed:18688235, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysteine-reactive Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "cysTMT6plex" RELATED Unimod-interim [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.18" xref: DiffFormula: "(12)C 10 (13)C 4 H 25 (14)N 2 (15)N 1 O 2 S 1" xref: DiffMono: "304.177202" xref: Formula: "(12)C 13 (13)C 4 H 32 (14)N 3 (15)N 1 O 4 S 2" xref: MassAvg: "425.20" xref: MassMono: "425.196952" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01825 name: cysTMT6plex-128 reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex-128 reporter+balance group." [PubMed:18688235, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysteine-reactive Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "cysTMT6plex" RELATED Unimod-interim [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.18" xref: DiffFormula: "(12)C 10 (13)C 4 H 25 (14)N 2 (15)N 1 O 2 S 1" xref: DiffMono: "304.177202" xref: Formula: "(12)C 13 (13)C 4 H 32 (14)N 3 (15)N 1 O 4 S 2" xref: MassAvg: "425.20" xref: MassMono: "425.196952" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01826 name: cysTMT6plex-129 reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex-129 reporter+balance group." [PubMed:18688235, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysteine-reactive Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "cysTMT6plex" RELATED Unimod-interim [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.18" xref: DiffFormula: "(12)C 10 (13)C 4 H 25 (14)N 2 (15)N 1 O 2 S 1" xref: DiffMono: "304.177202" xref: Formula: "(12)C 13 (13)C 4 H 32 (14)N 3 (15)N 1 O 4 S 2" xref: MassAvg: "425.20" xref: MassMono: "425.196952" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01827 name: cysTMT6plex-130 reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex-130 reporter+balance group." [PubMed:18688235, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysteine-reactive Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "cysTMT6plex" RELATED Unimod-interim [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.18" xref: DiffFormula: "(12)C 10 (13)C 4 H 25 (14)N 2 (15)N 1 O 2 S 1" xref: DiffMono: "304.177202" xref: Formula: "(12)C 13 (13)C 4 H 32 (14)N 3 (15)N 1 O 4 S 2" xref: MassAvg: "425.20" xref: MassMono: "425.196952" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01828 name: cysTMT6plex-131 reporter+balance reagent cysteine disulfide def: "A protein modification that effectively replaces a residue sulfhydryl hydrogen with a Thermo Scientific cysTMT6plex-131 reporter+balance group." [PubMed:18688235, URL:http\://www.piercenet.com/files/2162220.pdf] comment: The reagent consists of a reporter group, a balance group and a protein sulfhydryl reactive pyridine disulfanyl group. The reporter group, an isotopically labeled 1,2,6-trimethylpiperidine, is connected to a 3-(carbonylamino)propanoyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "cysteine-reactive Sixplex Tandem Mass Tag(TM)" RELATED Unimod-description [] synonym: "cysTMT6plex" RELATED Unimod-interim [] synonym: "S-(2-{3-[2-(2,6-dimethylpiperidin-1-yl)acetamido]propanamido}ethyl)sulfanyl" EXACT PSI-MOD-alternate [] xref: DiffAvg: "304.18" xref: DiffFormula: "(12)C 10 (13)C 4 H 25 (14)N 2 (15)N 1 O 2 S 1" xref: DiffMono: "304.177202" xref: Formula: "(12)C 13 (13)C 4 H 32 (14)N 3 (15)N 1 O 4 S 2" xref: MassAvg: "425.20" xref: MassMono: "425.196952" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01821 ! cysTMT6plex reporter+balance reagent cysteine disulfide [Term] id: MOD:01829 name: S-carboxymethyl-L-cysteine sulfoxide def: "A protein modification that effectively converts an L-cysteine residue to S-carboxymethyl-L-cysteine sulfoxide." [PubMed:17689096, PubMed:18688235] synonym: "CmCO" EXACT PSI-MOD-alternate [] xref: DiffAvg: "58.04" xref: DiffFormula: "C 2 H 2 N 0 O 2 S 0" xref: DiffMono: "58.005479" xref: Formula: "C 5 H 7 N 1 O 3 S 1" xref: MassAvg: "161.18" xref: MassMono: "161.014664" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00399 ! iodoacetic acid derivatized residue is_a: MOD:00708 ! sulfur oxygenated L-cysteine is_a: MOD:01854 ! sulfur monooxygenated residue relationship: derives_from MOD:01061 ! S-carboxymethyl-L-cysteine [Term] id: MOD:01830 name: S-carboxymethyl-L-cysteine sulfone def: "A protein modification that effectively converts an L-cysteine residue to S-carboxymethyl-L-cysteine sulfone." [PubMed:18688235] synonym: "CmCO2" EXACT PSI-MOD-label [] xref: DiffAvg: "74.03" xref: DiffFormula: "C 2 H 2 N 0 O 3 S 0" xref: DiffMono: "74.000394" xref: Formula: "C 5 H 7 N 1 O 4 S 1" xref: MassAvg: "177.17" xref: MassMono: "177.009579" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00708 ! sulfur oxygenated L-cysteine is_a: MOD:01855 ! sulfur dioxygenated residue relationship: derives_from MOD:01061 ! S-carboxymethyl-L-cysteine [Term] id: MOD:01831 name: S-carboxamidomethyl-L-cysteine sulfone def: "A protein modification that effectively converts an L-cysteine residue to S-carboxamidomethyl-L-cysteine sulfone." [PubMed:18688235] synonym: "CamCO2" EXACT PSI-MOD-label [] synonym: "S-carbamoylmethyl-L-cysteine sulfone" EXACT PSI-MOD-alternate [] xref: DiffAvg: "89.05" xref: DiffFormula: "C 2 H 3 N 1 O 3" xref: DiffMono: "89.011293" xref: Formula: "C 5 H 8 N 2 O 4 S 1" xref: MassAvg: "192.19" xref: MassMono: "192.020478" xref: Origin: "C" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00708 ! sulfur oxygenated L-cysteine is_a: MOD:01855 ! sulfur dioxygenated residue relationship: derives_from MOD:01060 ! S-carboxamidomethyl-L-cysteine [Term] id: MOD:01832 name: 5x(13)C-labeled residue def: "A protein modification that effectively converts a residue containing common isotopes to a 5x(13)C-labeled residue." [PubMed:12771378, Unimod:772] synonym: "13C(5) Silac label" RELATED Unimod-description [] synonym: "Label:13C(5)" RELATED PSI-MS-label [] xref: DiffAvg: "5.02" xref: DiffFormula: "(12)C -5 (13)C 5" xref: DiffMono: "5.016774" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:772" is_a: MOD:00842 ! (13)C labeled residue [Term] id: MOD:01833 name: 5x(13)C-labeled L-methionine def: "A protein modification that effectively converts an L-methionine residue containing common isotopes to 5x(13)C-labeled L-methionine." [PubMed:18688235, url:] xref: DiffAvg: "5.02" xref: DiffFormula: "(12)C -5 (13)C 5 H 0 N 0 O 0 S 0" xref: DiffMono: "5.016774" xref: Formula: "(13)C 5 H 9 N 1 O 1 S 1" xref: MassAvg: "136.06" xref: MassMono: "136.057259" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01832 ! 5x(13)C-labeled residue [Term] id: MOD:01834 name: 5x(13)C-labeled L-methionine sulfoxide def: "A protein modification that effectively converts an L-methionine residue containing common isotopes to 5x(13)C-labeled L-methionine sulfoxide." [PubMed:18688235] xref: DiffAvg: "5.02" xref: DiffFormula: "(12)C -5 (13)C 5 H 0 N 0 O 0 S 0" xref: DiffMono: "5.016774" xref: Formula: "(13)C 5 H 9 N 1 O 2 S 1" xref: MassAvg: "152.05" xref: MassMono: "152.052174" xref: Origin: "MOD:00719" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:00719 ! L-methionine sulfoxide is_a: MOD:01832 ! 5x(13)C-labeled residue [Term] id: MOD:01835 name: 5x(13)C-labeled L-methionine sulfone def: "A protein modification that effectively converts an L-methionine residue containing common isotopes to 5x(13)C-labeled L-methionine sulfone." [PubMed:18688235] xref: DiffAvg: "5.02" xref: DiffFormula: "(12)C -5 (13)C 5 H 0 N 0 O 0 S 0" xref: DiffMono: "5.016774" xref: Formula: "(13)C 5 H 9 N 1 O 3 S 1" xref: MassAvg: "168.05" xref: MassMono: "168.047088" xref: Origin: "MOD:00256" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:00256 ! L-methionine sulfone is_a: MOD:01832 ! 5x(13)C-labeled residue [Term] id: MOD:01836 name: N6-[([1-(6-nitro-2H-1,3-benzodioxol-5-yl)ethoxy]carbonyl]lysine def: "A protein modification that effectively converts an L-lysine residue to N6-[([1-(6-nitro-2H-1,3-benzodioxol-5-yl)ethoxy]carbonyl]lysine." [PubMed:18688235, PubMed:20218600, PubMed:21271704] synonym: "(2S)-2-amino-6-[([1-(6-nitro-1,3-benzodioxol-5-yl)ethoxy]carbonyl)amino]hexanoic acid" EXACT PSI-MOD-alternate [] synonym: "[(alpha-methyl-6-nitro-piperonyloxy)carbonyl]lysine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "237.17" xref: DiffFormula: "C 10 H 7 N 1 O 6" xref: DiffMono: "237.027337" xref: Formula: "C 16 H 19 N 3 O 7" xref: MassAvg: "365.34" xref: MassMono: "365.122300" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00848 ! reagent derivatized residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01837 name: L-lanthionine (Cys-Cys) def: "A protein modification that effectively cross-links two L-cysteine residues with a thioether bond to form L-lanthionine." [ChEBI:21347, PubMed:20805503, PubMed:6007887, RESID:AA0110#CYS2] comment: Cross-link 2. synonym: "(2R,2'R)-3,3'-sulfanediylbis(2-aminopropanoic acid)" EXACT RESID-systematic [] synonym: "(R)-S-(2-amino-2-carboxyethyl)-L-cysteine" EXACT RESID-alternate [] synonym: "(R,R)-2,6-diamino-4-thiaheptanedioic acid" EXACT RESID-alternate [] synonym: "(R,R)-3,3'-thiobis-(2-aminopropanoic acid)" EXACT RESID-alternate [] synonym: "(R,R)-bis(2-amino-2-carboxyethyl)sulfide" EXACT RESID-alternate [] synonym: "2-amino-3-(2-amino-2-carboxyethyl)sulfanylpropanoic acid" EXACT RESID-alternate [] synonym: "3,3'-thiobis-L-alanine" EXACT RESID-alternate [] synonym: "L-lanthionine" EXACT RESID-name [] xref: DiffAvg: "-34.08" xref: DiffFormula: "C 0 H -2 N 0 O 0 S -1" xref: DiffMono: "-33.987721" xref: Formula: "C 6 H 8 N 2 O 2 S 1" xref: MassAvg: "172.20" xref: MassMono: "172.030649" xref: Origin: "C, C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00687 ! thioether crosslinked residues [Term] id: MOD:01838 name: L-lysinoalanine (Lys) def: "A protein modification that effectively converts an L-lysine residue to L-lysinoalanine." [PubMed:19155267, PubMed:2544544, RESID:AA0123#LYS] comment: This entry is for the modification of peptidyl lysine by a free serine. For the crosslink of peptidyl serine and peptidyl lysine see MOD:00132. synonym: "(2R,9S)-lysinoalanine" EXACT RESID-alternate [] synonym: "(2S)-2-amino-6-([(2R)-2-amino-2-carboxyethyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "alaninolysine" EXACT RESID-alternate [] synonym: "L-lysinoalanine" EXACT RESID-name [] synonym: "LAL" EXACT RESID-alternate [] synonym: "lysino-D-alanine" EXACT RESID-alternate [] synonym: "MOD_RES Lysino-D-alanine (Lys)" EXACT UniProt-feature [] synonym: "N-epsilon-(2-amino-2-carboxyethyl)-L-lysine" EXACT RESID-alternate [] synonym: "N6-(2-amino-2-carboxyethyl)-L-lysine" EXACT RESID-alternate [] xref: DiffAvg: "87.08" xref: DiffFormula: "C 3 H 5 N 1 O 2" xref: DiffMono: "87.032028" xref: Formula: "C 9 H 17 N 3 O 3" xref: MassAvg: "215.25" xref: MassMono: "215.126991" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0439" is_a: MOD:01853 ! L-lysinoalanine [Term] id: MOD:01839 name: L-lanthionine def: "A protein modification that effectively cross-links either two L-cysteine residues, or an L-cysteine residue and an L-serine residue by a thioether bond to form L-lanthionine." [PubMed:18688235] comment: Cross-link 2. For the natural form of the lanthionine cross-link see MOD:00120 meso-lanthionine [JSG]. xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 8 N 2 O 2 S 1" xref: MassAvg: "172.20" xref: MassMono: "172.030649" xref: Origin: "C, X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:01841 ! lanthionine is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01840 name: L-allo-isoleucine def: "A protein modification that effectively converts an L-isoleucine residue to L-allo-isoleucine." [ChEBI:43433, PubMed:20805503, RESID:AA0546] synonym: "(2S,3R)-2-amino-3-methylpentanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-3-methylpentanoic acid" EXACT RESID-alternate [] synonym: "3-methyl-norvaline" EXACT RESID-alternate [] synonym: "allo-L-isoleucine" EXACT RESID-alternate [] synonym: "alpha-amino-beta-methylvaleric acid" EXACT RESID-alternate [] synonym: "L-allo-isoleucine" EXACT RESID-name [] synonym: "L-threo-isoleucine" EXACT RESID-alternate [] synonym: "MOD_RES L-allo-isoleucine" EXACT UniProt-feature [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 6 H 11 N 1 O 1" xref: MassAvg: "113.16" xref: MassMono: "113.084064" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0442" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00910 ! modified L-isoleucine residue is_a: MOD:00306 ! residues isobaric at 113.084064 Da [Term] id: MOD:01841 name: lanthionine def: "A protein modification that effectively cross-links either two or an L-cysteine residue and an L-serine residue by a thioether bond to form a lanthionine, either D- or L- or meso-lanthionine." [PubMed:18688235] comment: Cross-link 2. [JSG]. synonym: "2,6-diamino-4-thiaheptanedioic acid" EXACT PSI-MOD-alternate [] synonym: "2-amino-3-(2-amino-2-carboxyethyl)sulfanylpropanoic acid" EXACT PSI-MOD-alternate [] synonym: "3,3'-thiobis-(2-aminopropanoic acid)" EXACT PSI-MOD-alternate [] synonym: "3,3'-thiobis-L-alanine" EXACT PSI-MOD-alternate [] synonym: "bis(2-amino-2-carboxyethyl)sulfanediyl" EXACT PSI-MOD-alternate [] synonym: "bis(2-amino-2-carboxyethyl)sulfide" EXACT PSI-MOD-alternate [] synonym: "S-(2-amino-2-carboxyethyl)-L-cysteine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 6 H 8 N 2 O 2 S 1" xref: MassAvg: "172.20" xref: MassMono: "172.030649" xref: Origin: "C, X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01993 ! beta-carbon thioether crosslinked residues is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01842 name: S-(2-aminovinyl)-L-cysteine def: "A protein modification that effectively converts two L-cysteine residues to S-(2-aminovinyl)-L-cysteine." [PubMed:20805503, RESID:AA0548] comment: Cross-link 2. synonym: "(2R)-2-amino-3-([(Z)-2-aminoethenyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "(R,Z)-S-(2-aminovinyl)cysteine" EXACT RESID-alternate [] synonym: "S-(2-aminovinyl)-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "-80.10" xref: DiffFormula: "C -1 H -4 N 0 O -2 S -1" xref: DiffMono: "-79.993200" xref: Formula: "C 5 H 7 N 2 O 1 S 1" xref: MassAvg: "143.18" xref: MassMono: "143.027909" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0443" is_a: MOD:01851 ! S-(2-aminovinyl)-cysteine [Term] id: MOD:01843 name: 5'-chloro-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to 5'-chloro-L-tryptophan." [PubMed:18215770, RESID:AA0549] synonym: "(2S)-2-amino-3-(5-chloro-1H-indol-3-yl)propanoic acid" EXACT RESID-systematic [] synonym: "5'-chloro-L-tryptophan" EXACT RESID-name [] synonym: "MOD_RES 5'-chlorotryptophan" EXACT UniProt-feature [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "C 11 Cl 1 H 9 N 2 O 1" xref: MassAvg: "220.66" xref: MassMono: "220.040341" xref: Origin: "W" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0444" is_a: MOD:01913 ! monochlorinated L-tryptophan [Term] id: MOD:01844 name: 2-(3-methylbutanoyl)-5-hydroxyoxazole-4-carbothionic acid def: "A protein modification that effectively converts an L-cysteine residue and an L-leucine residue to 2-(3-methylbutanoyl)-5-hydroxyoxazole-4-carbothionic acid." [PubMed:15361623, PubMed:18729522, PubMed:20961038, PubMed:21254756, RESID:AA0550] comment: Cross-link 2. synonym: "(4Z)-4-[hydroxy(sulfanyl)methylidene]-2-(3-methylbutanoyl)-1,3-oxazol-5(4H)-one [tautomer]" EXACT RESID-alternate [] synonym: "2-(3-methylbutanoyl)-5-hydroxyoxazole-4-carbothionic acid" EXACT RESID-name [] synonym: "5-hydroxy-2-(3-methylbutanoyl)-1,3-oxazole-4-carbothioic O-acid" EXACT RESID-systematic [] synonym: "MOD_RES 2-(3-methylbutanoyl)-5-hydroxyoxazole-4-carbothionic acid (Leu-Cys)" EXACT UniProt-feature [] xref: DiffAvg: "-5.06" xref: DiffFormula: "C 0 H -7 N -1 O 1 S 0" xref: DiffMono: "-5.062935" xref: Formula: "C 9 H 10 N 1 O 3 S 1" xref: MassAvg: "212.24" xref: MassMono: "212.038139" xref: Origin: "C, L" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0448" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02050 ! crosslinked L-leucine residue is_a: MOD:01856 ! oxazole/oxazoline ring crosslinked residues (Cys) [Term] id: MOD:01845 name: L-proline 5-hydroxyoxazole-4-carbothionic acid def: "A protein modification that effectively converts an L-cysteine residue and an L-proline residue to L-proline 5-hydroxyoxazole-4-carbothionic acid." [PubMed:15361623, PubMed:18729522, PubMed:20961038, PubMed:21254756, RESID:AA0551] comment: Cross-link 2. synonym: "(4Z)-4-[hydroxy(sulfanyl)methylidene]-2-[(2S)-pyrrolidin-2-yl]-1,3-oxazol-5(4H)-one [tautomer]" EXACT RESID-alternate [] synonym: "5-hydroxy-2-[(2S)-pyrrolidin-2-yl]-1,3-oxazole-4-carbothioic O-acid" EXACT RESID-systematic [] synonym: "CROSSLNK Proline 5-hydroxy-oxazole-4-carbothionic acid (Pro-Cys)" EXACT UniProt-feature [] synonym: "L-proline 5-hydroxy-oxazole-4-carbothionic acid" EXACT RESID-name [] xref: DiffAvg: "-4.03" xref: DiffFormula: "C 0 H -4 N 0 O 0 S 0" xref: DiffMono: "-4.031300" xref: Formula: "C 8 H 8 N 2 O 2 S 1" xref: MassAvg: "196.22" xref: MassMono: "196.030649" xref: Origin: "C, P" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0449" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02054 ! crosslinked L-proline residue is_a: MOD:01856 ! oxazole/oxazoline ring crosslinked residues (Cys) [Term] id: MOD:01846 name: methanobactin OB3b copper complex def: "A protein modification that effectively converts two L-cysteine residues, and a copper atom to the methanobactin OB3b copper complex." [PubMed:15361623, PubMed:18729522, PubMed:20961038, PubMed:21254756, RESID:AA0552] comment: Cross-link 2. synonym: "bis[4-(hydroxy[sulfanyl-kappaS]methylidene)-1,3-oxazol-5(4H)-onato-kappaN]copper" EXACT RESID-systematic [] synonym: "METAL copper [Cu-methanobactin OB3b complex]" EXACT UniProt-feature [] synonym: "methanobactin OB3b copper complex" EXACT RESID-name [] xref: DiffAvg: "85.46" xref: DiffFormula: "C 0 Cu 1 H -10 N 0 O 2 S 0" xref: DiffMono: "84.841176" xref: Formula: "C 6 Cu 1 H 0 N 2 O 4 S 2" xref: MassAvg: "291.74" xref: MassMono: "290.859546" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00742 ! copper containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:01847 name: L-cysteine sulfinyl phosphate def: "A protein modification that effectively converts an L-cysteine residue to L-cysteine sulfinyl phosphate." [PubMed:16565085, RESID:AA0557] synonym: "(2R)-2-amino-3-[(phosphonooxy)sulfinyl]propanoic acid" EXACT RESID-systematic [] synonym: "cysteine sulfinic phosphoryl ester" EXACT RESID-alternate [] synonym: "L-cysteine sulfinyl phosphate" EXACT RESID-name [] xref: DiffAvg: "111.98" xref: DiffFormula: "C 0 H 1 N 0 O 5 P 1 S 0" xref: DiffMono: "111.956160" xref: Formula: "C 3 H 6 N 1 O 6 P 1 S 1" xref: MassAvg: "215.12" xref: MassMono: "214.965345" xref: Origin: "C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00708 ! sulfur oxygenated L-cysteine is_a: MOD:00861 ! phosphorus containing modified residue [Term] id: MOD:01848 name: S-(spermidinoglutathion-S-yl)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(spermidinoglutathion-S-yl)-L-cysteine." [ChEBI:16613, PubMed:20530482, RESID:AA0558] synonym: "(2R)-2-amino-3-([(2R)-2-([(4S)-4-amino-4-carboxybutanoyl]amino)-2-([2-([3-([4-aminobutyl]amino)propyl]carbamoyl)methyl]carbamoyl)ethyl]disulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "cysteine glutathionylspermidine disulfide" EXACT RESID-alternate [] synonym: "L-gamma-glutamyl-[S-(L-cystein-S-yl)]-L-cysteinyl-N-{3-[(4-aminobutyl)amino]propyl}glycinamide" EXACT RESID-alternate [] synonym: "S-(spermidinoglutathion-S-yl)-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "432.54" xref: DiffFormula: "C 17 H 32 N 6 O 5 S 1" xref: DiffMono: "432.215489" xref: Formula: "C 20 H 37 N 7 O 6 S 2" xref: MassAvg: "535.68" xref: MassMono: "535.224674" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01862 ! disulfide conjugated residue [Term] id: MOD:01849 name: S-(2-aminovinyl)-D-cysteine (Cys-Cys) def: "A protein modification that effectively cross-links two L-cysteine residues by a thioether bond to form S-(2-aminovinyl)-D-cysteine." [PubMed:20805503, RESID:AA0204#CYS2] comment: Cross-link 2. synonym: "(2S)-2-amino-3-([(Z)-2-aminoethenyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "(S,Z)-S-(2-aminovinyl)cysteine" EXACT RESID-alternate [] synonym: "CROSSLNK S-(2-aminovinyl)-D-cysteine (Cys-Cys)" EXACT UniProt-feature [] synonym: "S-(2-aminovinyl)-D-cysteine" EXACT RESID-name [] xref: DiffAvg: "-80.10" xref: DiffFormula: "C -1 H -4 N 0 O -2 S -1" xref: DiffMono: "-79.993200" xref: Formula: "C 5 H 7 N 2 O 1 S 1" xref: MassAvg: "143.18" xref: MassMono: "143.027909" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "C-term" xref: UniProt: "PTM-0446" is_a: MOD:01850 ! S-(2-aminovinyl)-D-cysteine [Term] id: MOD:01850 name: S-(2-aminovinyl)-D-cysteine def: "A protein modification that effectively cross-links either two L-cysteine residues, or an L-cysteine residue and an L-serine residue by a thioether bond to form S-(2-aminovinyl)-D-cysteine." [RESID:AA0204] comment: Cross-link 2. synonym: "(2S)-2-amino-3-([(Z)-2-aminoethenyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "(S,Z)-S-(2-aminovinyl)cysteine" EXACT RESID-alternate [] synonym: "S-(2-aminovinyl)-D-cysteine" EXACT RESID-name [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 7 N 2 O 1 S 1" xref: MassAvg: "143.18" xref: MassMono: "143.027909" xref: Origin: "C, X" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:01851 ! S-(2-aminovinyl)-cysteine [Term] id: MOD:01851 name: S-(2-aminovinyl)-cysteine def: "A protein modification that effectively cross-links either two L-cysteine residues, or an L-cysteine residue and an L-serine residue by a thioether bond to form S-(2-aminovinyl)-cysteine." [PubMed:18688235] comment: Cross-link 2. synonym: "2-amino-3-([2-aminoethenyl]sulfanyl)propanoic acid" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 5 H 7 N 2 O 1 S 1" xref: MassAvg: "143.18" xref: MassMono: "143.027909" xref: Origin: "C, X" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00687 ! thioether crosslinked residues is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01852 name: L-lysinoalanine (Lys-Cys) def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-lysine residue to release hydrogen sulfide and form 2-amino-6-(2-amino-2-carboxyethylamino)hexanoic acid." [DeltaMass:0] comment: Cross-link 2. This entry is for a crosslink of peptidyl cysteine and peptidyl lysine. For the modification of peptidyl lysine by a free serine see MOD:01838. From DeltaMass: Average Mass: -34 with no citation or formula. [JSG] synonym: "Lysinoalanine (from Cysteine)" EXACT DeltaMass-label [] xref: DiffAvg: "-34.08" xref: DiffFormula: "C 0 H -2 N 0 O 0 S -1" xref: DiffMono: "-33.987721" xref: Formula: "C 9 H 15 N 3 O 2" xref: MassAvg: "197.24" xref: MassMono: "197.116427" xref: Origin: "C, K" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01853 ! L-lysinoalanine [Term] id: MOD:01853 name: L-lysinoalanine def: "A protein modification that effectively converts an L-lysine residue to L-lysinoalanine either by forming a cross-link with peptidyl-cysteine or peptidyl-serine, or by condensation with free serine." [PubMed:18688235] xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01854 name: sulfur monooxygenated residue def: "A protein modification that effectively adds one oxygen atom to a sulfur atom of a residue without removing hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00680 ! sulfur oxygenated residue [Term] id: MOD:01855 name: sulfur dioxygenated residue def: "A protein modification that effectively adds two oxygen atoms to a sulfur atom of a residue without removing hydrogen atoms." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:00680 ! sulfur oxygenated residue [Term] id: MOD:01856 name: oxazole/oxazoline ring crosslinked residues (Cys) def: "A protein modification that crosslinks two residues by rearrangement and condensation of a cysteine with the carbonyl of the preceding residue to form a 1,3-oxazole-4-carbothionic acid." [PubMed:18688235] is_a: MOD:01419 ! oxazole/oxazoline ring crosslinked residues [Term] id: MOD:01857 name: 2-(L-cystein-S-yl)-methionine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-methionine residue by a thioether bond to form 2-(L-cystein-S-yl)-methionine." [PubMed:20805502, RESID:AA0559] comment: Cross-link 2. The chirality around the methionine alpha-carbon has not been determined. synonym: "(2R)-2-amino-2-([2-amino-2-carboxyethyl]sulfanyl)-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-(L-cystein-S-yl)-methionine" EXACT RESID-name [] synonym: "CROSSLNK 2-(S-cysteinyl)-methionine (Cys-Met)" EXACT UniProt-feature [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 8 H 12 N 2 O 2 S 2" xref: MassAvg: "232.32" xref: MassMono: "232.034020" xref: Origin: "C, M" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0495" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02052 ! crosslinked L-methionine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:01858 name: S-(N-acetylamino)glucosyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(N-acetylamino)glucosyl-L-cysteine." [ChEBI:61631, PubMed:21251913, PubMed:21395300, RESID:AA0560] synonym: "(2R)-2-amino-3-(2-acetamido-2-deoxy-beta-D-glucopyranosylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD S-linked (GlcNAc) cysteine" EXACT UniProt-feature [] synonym: "S-(N-acetylamino)glucosyl-L-cysteine" EXACT RESID-name [] synonym: "S-[(N-acetylamino)glycosyl]cysteine" EXACT RESID-alternate [] synonym: "S-[beta-D-(N-acetylamino)glucopyranosyl]cysteine" EXACT RESID-alternate [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5 S 0" xref: DiffMono: "203.079373" xref: Formula: "C 11 H 18 N 2 O 6 S 1" xref: MassAvg: "306.33" xref: MassMono: "306.088557" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0628" is_a: MOD:00426 ! S-glycosylated residue is_a: MOD:00448 ! mono-N-acetylaminoglucosylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01859 name: 4-amino-3-isothiazolidinone-L-phenylalanine def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-phenylalanine residue to form 4-amino-3-isothiazolidinone-L-phenylalanine." [PubMed:17502599, RESID:AA0562] comment: Cross-link 2. synonym: "(2S)-2-[(4R)-4-amino-3-oxo-1,2-thiazolidin-2-yl]-3-phenylpropanoic acid" EXACT RESID-systematic [] synonym: "2-(4-amino-3-oxo-isothiazolidin-2-yl)-3-phenylpropanoic acid" EXACT RESID-alternate [] synonym: "4-amino-3-isothiazolidinone-L-phenylalanine" EXACT RESID-alternate [] synonym: "CROSSLNK N,N-(cysteine-1,S-diyl)phenylalanine (Cys-Phe)" EXACT UniProt-feature [] synonym: "cysteinyl phenylalanine sulfenamide" EXACT RESID-alternate [] synonym: "N,N-(L-cysteine-1,S-diyl)-L-phenylalanine" EXACT RESID-name [] synonym: "phenylalanine-cysteine sulfenyl amide cross-link" EXACT RESID-alternate [] synonym: "phenylalanine-cysteine sulphenyl amide cross-link" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 12 H 12 N 2 O 2 S 1" xref: MassAvg: "248.30" xref: MassMono: "248.061949" xref: Origin: "C, F" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0451" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:01861 ! isothiazolidinone ring crosslinked residues [Term] id: MOD:01860 name: L-cysteine bacillithiol disulfide def: "A protein modification that effectively converts an L-cysteine residue to L-cysteine bacillithiol disulfide." [ChEBI:61338, PubMed:19578333, RESID:AA0563] synonym: "(2S)-(2-[S-(L-cystein-S-yl)-L-cysteinyl]amino-2-deoxy-alpha-D-glucopyranosyloxy)-butanedioic acid" EXACT RESID-systematic [] synonym: "BSH" EXACT RESID-alternate [] synonym: "L-cysteine bacillithiol disulfide" EXACT RESID-name [] synonym: "MOD_RES S-bacillithiol cysteine disulfide" EXACT UniProt-feature [] xref: DiffAvg: "396.37" xref: DiffFormula: "C 13 H 20 N 2 O 10 S 1" xref: DiffMono: "396.083866" xref: Formula: "C 16 H 25 N 3 O 11 S 2" xref: MassAvg: "499.51" xref: MassMono: "499.093051" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0452" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01862 ! disulfide conjugated residue [Term] id: MOD:01861 name: isothiazolidinone ring crosslinked residues def: "A protein modification that crosslinks two residues by condensation of a cysteine thiol with the amido nitrogen of the following residue to form an isothiazolidinone ring." [PubMed:18688235] comment: The isothiazolidinone ring is usually formed by the reaction of a cysteine sulfenic acid with the amido nitrogen releasing water. is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:01862 name: disulfide conjugated residue def: "A protein modification that effectively replaces the hydrogen atom of a cysteine sulfanyl group with a substituted sulfanyl group, forming a disulfide bond that does not cross-link two encoded peptide chains." [PubMed:18688235] subset: PSI-MOD-slim synonym: "S-thiolation" EXACT PSI-MOD-alternate [] xref: Origin: "C" xref: TermSpec: "none" is_a: MOD:01886 ! thiolated residue [Term] id: MOD:01863 name: mTRAQ reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with one of the Applied Biosystems mTRAQ reagent reporter+balance groups." [PubMed:18688235] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:01705 ! isotope tagged reagent acylated residue [Term] id: MOD:01864 name: mTRAQ light reporter+balance reagent acylated residue def: "A protein modification that effectively replaces a hydrogen atom of a residue with the Applied Biosystems mTRAQ light reporter+balance group." [Unimod:888] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "mTRAQ heavy" RELATED Unimod-description [] xref: DiffAvg: "140.09" xref: DiffFormula: "(12)C 7 H 12 (14)N 2 (16)O 1" xref: DiffMono: "140.094963" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:888" is_a: MOD:01863 ! mTRAQ reporter+balance reagent acylated residue is_a: MOD:01868 ! modifications with monoisotopic mass differences that are nominally equal at 140.094963 Da [Term] id: MOD:01865 name: mTRAQ light reporter+balance reagent acylated N-terminal def: "A protein modification that effectively replaces a hydrogen atom of a protein N-terminal with the Applied Biosystems mTRAQ light reporter+balance group." [OMSSA:208, Unimod:888#N-term] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "mTRAQ light" RELATED Unimod-description [] synonym: "mTRAQ light on nterm" EXACT OMSSA-label [] xref: DiffAvg: "140.09" xref: DiffFormula: "(12)C 7 H 12 (14)N 2 (16)O 1" xref: DiffMono: "140.094963" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:888" is_a: MOD:01864 ! mTRAQ light reporter+balance reagent acylated residue [Term] id: MOD:01866 name: mTRAQ light reporter+balance reagent N6-acylated lysine def: "A protein modification that effectively replaces the N6-amino hydrogen atom of a lysine residue with the Applied Biosystems mTRAQ light reporter+balance group." [OMSSA:209, Unimod:888#K] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "mTRAQ light" RELATED Unimod-description [] synonym: "mTRAQ light on K" EXACT OMSSA-label [] xref: DiffAvg: "140.09" xref: DiffFormula: "(12)C 7 H 12 (14)N 2 (16)O 1" xref: DiffMono: "140.094963" xref: Formula: "(12)C 13 H 24 N 2 (14)N 2 O 1 (16)O 1" xref: MassAvg: "268.19" xref: MassMono: "268.189926" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:888" is_a: MOD:01864 ! mTRAQ light reporter+balance reagent acylated residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01867 name: mTRAQ light reporter+balance reagent O4'-acylated tyrosine def: "A protein modification that effectively replaces the O4'-hydrogen atom of a tyrosine residue with the Applied Biosystems mTRAQ light reporter+balance group." [OMSSA:210, Unimod:888#Y] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "Applied Biosystems mTRAQ(TM) reagent" RELATED Unimod-alternate [] synonym: "mTRAQ light" RELATED Unimod-description [] synonym: "mTRAQ light on Y" EXACT OMSSA-label [] xref: DiffAvg: "140.09" xref: DiffFormula: "(12)C 7 H 12 (14)N 2 (16)O 1" xref: DiffMono: "140.094963" xref: Formula: "(12)C 16 H 21 (14)N 3 O 2 (16)O 1" xref: MassAvg: "303.16" xref: MassMono: "303.158292" xref: Origin: "Y" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:888" is_a: MOD:00919 ! modified L-tyrosine residue is_a: MOD:01864 ! mTRAQ light reporter+balance reagent acylated residue [Term] id: MOD:01868 name: modifications with monoisotopic mass differences that are nominally equal at 140.094963 Da def: "Modifications that have monoisotopic mass differences from their respective origins of 140.094963 Da." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01515 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.000001 Da [Term] id: MOD:01869 name: mTRAQ light reporter fragment def: "The protein modification reporter fragment produced by an Applied Biosystems mTRAQ light reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4-methyl-1-methylidenepiperazin-1-ium" EXACT PSI-MOD-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: FormalCharge: "1+" xref: Formula: "(12)C 6 H 13 (14)N 2" xref: MassAvg: "113.11" xref: MassMono: "113.107325" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01870 ! mTRAQ reporter fragment relationship: derives_from MOD:01864 ! mTRAQ light reporter+balance reagent acylated residue [Term] id: MOD:01870 name: mTRAQ reporter fragment def: "A protein modification reporter fragment produced by an Applied Biosystems mTRAQ reagent derivatized residue." [PubMed:18688235] subset: PSI-MOD-slim is_a: MOD:01520 ! modification reporter fragment [Term] id: MOD:01871 name: cyclized N-terminal S-carboxamidomethyl-L-cysteine def: "A protein modification that effectively cyclizes an S-carboxamidomethyl-L-cysteine residue to (R)-5-oxo-1,4-tetrahydrothiazine-3-carboxylic acid with the loss of ammonia." [DeltaMass:336, PubMed:12643538, Unimod:26] subset: PSI-MOD-slim synonym: "(R)-5-oxoperhydro-1,4-thiazine-3-carboxylic acid" EXACT DeltaMass-label [] synonym: "5-oxothiomorpholine-3-carboxylic acid" EXACT PSI-MOD-alternate [] synonym: "Otc" EXACT DeltaMass-label [] synonym: "Pyro-carbamidomethyl" RELATED Unimod-interim [] synonym: "S-carbamoylmethylcysteine cyclization (N-terminus)" RELATED Unimod-description [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0 S 0" xref: DiffMono: "-17.026549" xref: Formula: "C 5 H 6 N 1 O 2 S 1" xref: MassAvg: "144.17" xref: MassMono: "144.011924" xref: Origin: "MOD:01060" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:26" is_a: MOD:01160 ! deaminated residue relationship: contains MOD:00419 ! (R)-5-oxo-1,4-tetrahydrothiazine-3-carboxylic acid relationship: derives_from MOD:01060 ! S-carboxamidomethyl-L-cysteine [Term] id: MOD:01872 name: cyclized N-terminal S-carboxymethyl-L-cysteine def: "A protein modification that effectively cyclizes an S-carboxymethyl-L-cysteine residue to (R)-5-oxo-1,4-tetrahydrothiazine-3-carboxylic acid with the loss of water." [PubMed:12643538, Unimod:26] comment: Contrary to the impression given in Unimod entry 26, the cyclization of N-terminal S-carboxymethyl-L-cysteine is not reported in PubMed:1263538. The cyclization would be expected to proceed under strongly acidic conditions [JSG]. subset: PSI-MOD-slim synonym: "(R)-5-oxoperhydro-1,4-thiazine-3-carboxylic acid" EXACT DeltaMass-label [] synonym: "5-oxothiomorpholine-3-carboxylic acid" EXACT PSI-MOD-alternate [] synonym: "Otc" EXACT DeltaMass-label [] synonym: "Pyro-carbamidomethyl" RELATED Unimod-interim [] synonym: "S-carbamoylmethylcysteine cyclization (N-terminus)" RELATED Unimod-description [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 5 H 6 N 1 O 2 S 1" xref: MassAvg: "144.17" xref: MassMono: "144.011924" xref: Origin: "MOD:01061" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Unimod: "Unimod:26" is_a: MOD:00704 ! dehydrated residue relationship: contains MOD:00419 ! (R)-5-oxo-1,4-tetrahydrothiazine-3-carboxylic acid relationship: derives_from MOD:01061 ! S-carboxymethyl-L-cysteine [Term] id: MOD:01873 name: N-carboxy-L-alanine def: "A protein modification that effectively converts an L-alanine residue to N-carboxy-L-alanine." [PubMed:18688235, PubMed:4593770, PubMed:4647257, PubMed:8312270] comment: This metastable modification can be formed by a protein N-terminal in solutions with a high concentration of dissolved carbon dioxide [JSG]. synonym: "(S)-2-carboxyamino-propanoic acid" EXACT PSI-MOD-alternate [] synonym: "2-carbamic-propanoic acid" EXACT PSI-MOD-alternate [] synonym: "N-carboxymethionine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 H 0 N 0 O 2" xref: DiffMono: "43.989829" xref: Formula: "C 4 H 6 N 1 O 3" xref: MassAvg: "116.10" xref: MassMono: "116.034768" xref: Origin: "A" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00901 ! modified L-alanine residue is_a: MOD:01152 ! carboxylated residue [Term] id: MOD:01874 name: N-carboxy-L-valine def: "A protein modification that effectively converts an L-alanine residue to N-carboxy-L-valine." [PubMed:18688235, PubMed:4593770, PubMed:4647257, PubMed:8312270] comment: This metastable modification can be formed by a protein N-terminal in solutions with a high concentration of dissolved carbon dioxide [JSG]. synonym: "(S)-2-carboxyamino-propanoic acid" EXACT PSI-MOD-alternate [] synonym: "2-carbamic-propanoic acid" EXACT PSI-MOD-alternate [] synonym: "N-carboxymethionine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "44.01" xref: DiffFormula: "C 1 H 0 N 0 O 2" xref: DiffMono: "43.989829" xref: Formula: "C 6 H 10 N 1 O 3" xref: MassAvg: "144.15" xref: MassMono: "144.066068" xref: Origin: "V" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00920 ! modified L-valine residue is_a: MOD:01152 ! carboxylated residue [Term] id: MOD:01875 name: N6-acylated L-lysine def: "A protein modification that effectively replaces an N6-amino hydrogen atom of L-lysine with an acyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "N6AcylLys" EXACT PSI-MOD-label [] xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01876 name: 4x(1)H,4x(12)C-labeled alpha-amino succinylated residue def: "OBSOLETE because identical to MOD:00457" [PubMed:18688235] xref: DiffAvg: "100.02" xref: DiffFormula: "(12)C 4 (1)H 4 O 3" xref: DiffMono: "100.016044" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" xref: Remap: "MOD:00457" is_obsolete: true [Term] id: MOD:01877 name: 2-(4-guanidinobutanoyl)-5-hydroxyimidazole-4-carbothionic acid def: "A protein modification that effectively converts an L-cysteine residue and an L-arginine residue to 2-(4-guanidinobutanoyl)-5-hydroxyimidazole-4-carbothionic acid." [PubMed:20961038, RESID:AA0553] comment: Cross-link 2. synonym: "(4Z)-2-(4-guanidinobutanoyl)-5-oxo-4-(sulfanylmethylidene)-4,5-dihydro-1H-imidazole" EXACT RESID-alternate [] synonym: "2-(4-guanidinobutanoyl)-5-hydroxy-1H-imidazole-4-carbothioic O-acid" EXACT RESID-systematic [] synonym: "2-(4-guanidinobutanoyl)-5-hydroxy-4-thioformyl-1H-imidazole [tautomer]" EXACT RESID-alternate [] synonym: "2-(4-guanidinobutanoyl)-5-hydroxyimidazole-4-carbothionic acid" EXACT RESID-name [] synonym: "CROSSLNK 2-(4-guanidinobutanoyl)-5-hydroxyimidazole-4-carbothionic acid (Arg-Cys)" EXACT UniProt-feature [] xref: DiffAvg: "-6.05" xref: DiffFormula: "C 0 H -6 N 0 O 0 S 0" xref: DiffMono: "-6.046950" xref: Formula: "C 9 H 12 N 5 O 2 S 1" xref: MassAvg: "254.29" xref: MassMono: "254.071171" xref: Origin: "C, R" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0457" is_a: MOD:02041 ! crosslinked L-arginine residue is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:01883 ! 5-imidazolinone ring crosslinked residues (Cys) [Term] id: MOD:01878 name: L-threonine 5-hydroxyoxazole-4-carbonthionic acid def: "A protein modification that effectively converts an L-cysteine residue and an L-threonine residue to L-threonine 5-hydroxyoxazole-4-carbothionic acid." [PubMed:20961038, RESID:AA0554] comment: Cross-link 2. synonym: "(4Z)-2-[(1S,2R)-1-amino-2-hydroxypropyl]-4-(sulfanylmethylidene)-1,3-oxazol-5(4H)-one [tautomer]" EXACT RESID-alternate [] synonym: "2-[(1S,2R)-1-amino-2-hydroxypropyl]-5-hydroxy-1,3-oxazole-4-carbothioic O-acid" EXACT RESID-systematic [] synonym: "CROSSLNK Threonine 5-hydroxy-oxazole-4-carbonthionic acid (Thr-Cys)" EXACT UniProt-feature [] synonym: "L-threonine 5-hydroxy-oxazole-4-carbonthionic acid" EXACT RESID-name [] xref: DiffAvg: "-4.03" xref: DiffFormula: "C 0 H -4 N 0 O 0 S 0" xref: DiffMono: "-4.031300" xref: Formula: "C 7 H 8 N 2 O 3 S 1" xref: MassAvg: "200.21" xref: MassMono: "200.025563" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0458" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01856 ! oxazole/oxazoline ring crosslinked residues (Cys) [Term] id: MOD:01879 name: methanobactin SB2 copper complex def: "A protein modification that effectively converts two L-cysteine residues, an L-arginine residue, an L-threonine residue and a copper atom to the methanobactin SB2 copper complex." [PubMed:20961038, RESID:AA0555] comment: Cross-link 2. synonym: "[5-(hydroxy[sulfanyl-kappaS]methylene)-3,5-dihydro-4H-imidazol-4-onato-kappaN1][4-(hydroxy[sulfanyl-kappaS]methylene)-1,3-oxazol-5(4H)-onato-kappaN]copper" EXACT RESID-systematic [] synonym: "METAL copper [Cu-methanobactin SB2 complex]" EXACT UniProt-feature [] synonym: "methanobactin SB2 copper complex" EXACT RESID-name [] xref: DiffAvg: "84.48" xref: DiffFormula: "C 0 Cu 1 H -9 N 1 O 1 S 0" xref: DiffMono: "83.857161" xref: Formula: "C 6 Cu 1 H 1 N 3 O 3 S 2" xref: MassAvg: "290.76" xref: MassMono: "289.875530" xref: Origin: "C, C, R, T" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00742 ! copper containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:01880 name: L-deoxyhypusine def: "modification from RESID" [ChEBI:50038, PubMed:16452303, RESID:AA0564] synonym: "(2S)-2-amino-6-[(4-aminobutyl)amino]hexanoic acid" EXACT RESID-systematic [] synonym: "deoxyhypusine" EXACT RESID-alternate [] synonym: "L-deoxyhypusine" EXACT RESID-name [] synonym: "N6-(4-aminobutyl)lysine" EXACT RESID-alternate [] synonym: "MOD_RES Deoxyhypusine" EXACT UniProt-feature [] xref: DiffAvg: "71.12" xref: DiffFormula: "C 4 H 9 N 1 O 0" xref: DiffMono: "71.073499" xref: Formula: "C 10 H 21 N 3 O 1" xref: MassAvg: "199.30" xref: MassMono: "199.168462" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0684" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01884 ! 4-aminobutylated residue [Term] id: MOD:01881 name: 3-(L-phenylalan-2'-yl)-L-valine def: "A protein modification that effectively crosslinks an L-phenylalanine residue and an L-valine residue by a free radical process effectively releasing a hydrogen molecule and forming 3-(L-phenylalan-2'-yl)-L-valine." [PubMed:21596985, RESID:AA0565] comment: Cross-link 2. synonym: "(2S)-2-amino-4-(2-[(2S)-2-amino-2-carboxyethyl]phenyl)-3-methylbutanoic acid" EXACT RESID-systematic [] synonym: "3-(L-phenylalan-2'-yl)-L-valine" EXACT RESID-name [] synonym: "symerythrin valine-phenylalanine cross-link" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "C 14 H 16 N 2 O 2" xref: MassAvg: "244.29" xref: MassMono: "244.121178" xref: Origin: "F, V" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00692 ! uncategorized crosslinked residues is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:02059 ! crosslinked L-valine residue [Term] id: MOD:01882 name: 5-imidazolinone ring crosslinked residues (Gly) def: "A protein modification that effectively crosslinks the carbonyl of an amino acid residue at position n with the alpha amino of a glycine residue at position n+2 to form a 5-imidazolinone ring." [PubMed:18688235] is_a: MOD:00691 ! 5-imidazolinone ring crosslinked residues [Term] id: MOD:01883 name: 5-imidazolinone ring crosslinked residues (Cys) def: "A protein modification that crosslinks two residues by rearrangement and condensation of a cysteine with the carbonyl of the preceding residue to form a 5-imidazolinone ring." [PubMed:18688235] is_a: MOD:00691 ! 5-imidazolinone ring crosslinked residues [Term] id: MOD:01884 name: 4-aminobutylated residue def: "A protein modification that effectively replaces a hydrogen atom with a 4-aminobutyl group, usually derived from spermidine." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: TermSpec: "none" is_a: MOD:00001 ! alkylated residue [Term] id: MOD:01885 name: biotinylated residue def: "A protein modification that effectively replaces a hydrogen atom with a biotinyl group." [PubMed:18688235] subset: PSI-MOD-slim synonym: "5-((3aS,4S,6aR)-hexahydro-2-oxo-1H-thieno[3,4-d]imidazol-4-yl)-1-oxopentyl" EXACT PSI-MOD-alternate [] synonym: "Biotinylation" EXACT PSI-MOD-alternate [] synonym: "BtnRes" EXACT PSI-MOD-label [] xref: DiffAvg: "226.29" xref: DiffFormula: "C 10 H 14 N 2 O 2 S 1" xref: DiffMono: "226.077599" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue [Term] id: MOD:01886 name: thiolated residue def: "A protein modification that effectively replaces a hydrogen atom with an sulfanyl or substituted sulfanyl group." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "X" xref: TermSpec: "none" is_a: MOD:00860 ! sulfur containing modified residue [Term] id: MOD:01887 name: Uniblue A derivatized lysine def: "A protein modification that is produced by reaction with 1-amino-4-{[3-(ethenylsulfonyl)phenyl]amino}-9,10-dioxo-9,10-dihydroanthracene-2-sulfonate, Uniblue A, to form Uniblue A lysine adduct." [PubMed:18688235] subset: PSI-MOD-slim synonym: "1-amino-4-{[3-(ethenylsulfonyl)phenyl]amino}-9,10-dioxo-9,10-dihydroanthracene-2-sulfonate" EXACT PSI-MOD-alternate [] synonym: "1-amino-9,10-dioxo-4-{[3-(vinylsulfonyl)phenyl]amino}-9,10-dihydroanthracene-2-sulfonate" EXACT PSI-MOD-alternate [] synonym: "N6UniblueALys" EXACT PSI-MOD-label [] synonym: "Uniblue A" EXACT PSI-MOD-alternate [] xref: DiffAvg: "484.50" xref: DiffFormula: "C 22 H 16 N 2 O 7 S 2" xref: DiffMono: "484.039893" xref: Formula: "C 28 H 28 N 4 O 8 S 2" xref: MassAvg: "612.67" xref: MassMono: "612.134856" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01659 ! Uniblue A derivatized residue [Term] id: MOD:01888 name: didehydrogenated residue def: "A protein modification that effectively removes two neutral hydrogen atoms (proton and electron) from a residue." [Unimod:401] subset: PSI-MOD-slim synonym: "2dHRes" EXACT PSI-MOD-label [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0" xref: DiffMono: "-2.015650" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" xref: Unimod: "Unimod:401" is_a: MOD:00683 ! dehydrogenated residue [Term] id: MOD:01889 name: S-(2-succinyl)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(2-succinyl)-L-cysteine, by addition of either fumaric acid or maleic acid." [PubMed:16624247, PubMed:18448829, PubMed:20677745, RESID:AA0561, Unimod:957] synonym: "(2R)-2-amino-3-([(1R)-1,2-dicarboxyethyl]sulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "(2R)-2-{[(2R)-2-amino-2-carboxyethyl]sulfanyl}butanedioic acid" EXACT RESID-alternate [] synonym: "2-((2-amino-2-carboxyethyl)thio)butanedioic acid" EXACT RESID-alternate [] synonym: "2-amino-3-(1,2-dicarboxyethylthio)propanoic acid" EXACT RESID-alternate [] synonym: "S-(1,2-dicarboxyethyl)cysteine" EXACT RESID-alternate [] synonym: "S-(2-succinyl)-L-cysteine" EXACT RESID-name [] synonym: "S-(2-succinyl)cysteine" EXACT RESID-alternate [] synonym: "S-[(2R)-2-succinyl]-L-cysteine" EXACT RESID-alternate [] synonym: "MOD_RES S-(2-succinyl)cysteine" EXACT UniProt-feature [] xref: DiffAvg: "116.07" xref: DiffFormula: "C 4 H 4 N 0 O 4 S 0" xref: DiffMono: "116.010959" xref: Formula: "C 7 H 9 N 1 O 5 S 1" xref: MassAvg: "219.21" xref: MassMono: "219.020143" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:957" xref: UniProt: "PTM-0674" is_a: MOD:00001 ! alkylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01890 name: N-[(L-histidin-1'-yl)methyl]-L-methionine (fMet) def: "A protein modification that effectively crosslinks an N-formyl-L-methionine residue and an L-histidine residue to form N-[(L-histidin-1'-yl)methyl]-L-methionine." [PubMed:19622680, RESID:AA0566#FMET] comment: Cross-link 2. synonym: "(2S)-2-([(4-[(2S)-2-amino-2-carboxyethyl]-1H-imidazol-1-yl)methyl]amino)-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "N-[(L-histidin-1'-yl)methyl]-L-methionine" EXACT RESID-name [] xref: DiffAvg: "-16.00" xref: DiffFormula: "C 0 H 0 N 0 O -1 S 0" xref: DiffMono: "-15.994915" xref: Formula: "C 12 H 17 N 4 O 2 S 1" xref: MassAvg: "281.35" xref: MassMono: "281.107222" xref: Origin: "H, MOD:00030" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:02048 ! crosslinked L-histidine residue is_a: MOD:02062 ! crosslinked N-formyl-L-methionine residue [Term] id: MOD:01891 name: N-[(L-histidin-1'-yl)methyl]-L-methionine (Met) def: "A protein modification that effectively crosslinks an L-methionine residue and an L-histidine residue to form N-[(L-histidin-1'-yl)methyl]-L-methionine." [PubMed:19622680, RESID:AA0566#MET] comment: Cross-link 2. synonym: "(2S)-2-([(4-[(2S)-2-amino-2-carboxyethyl]-1H-imidazol-1-yl)methyl]amino)-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "N-[(L-histidin-1'-yl)methyl]-L-methionine" EXACT RESID-name [] xref: DiffAvg: "12.01" xref: DiffFormula: "C 1 H 0 N 0 O 0 S 0" xref: DiffMono: "12.000000" xref: Formula: "C 12 H 17 N 4 O 2 S 1" xref: MassAvg: "281.35" xref: MassMono: "281.107222" xref: Origin: "H, M" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:02048 ! crosslinked L-histidine residue is_a: MOD:02052 ! crosslinked L-methionine residue [Term] id: MOD:01892 name: N6-crotonyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-crotonyl-L-lysine." [PubMed:21925322, RESID:AA0567] synonym: "(2S)-2-amino-6-[(2E)-but-2-enamido]hexanoic acid" EXACT RESID-alternate [] synonym: "(2S)-2-amino-6-[(2E)-but-2-enoylamino]hexanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-azanyl-6-[(2E)-but-2-enoylazanyl]hexanoic acid" EXACT RESID-alternate [] synonym: "MOD_RES N6-crotonyl-L-lysine" EXACT UniProt-feature [] synonym: "N(epsilon)-crotonyllysine" EXACT RESID-alternate [] synonym: "N6-(E)-crotonyllysine" EXACT RESID-alternate [] synonym: "N6-[(2E)-2-butenoyl]-L-lysine" EXACT RESID-alternate [] synonym: "N6-crotonyl-L-lysine" EXACT RESID-name [] synonym: "N6-crotonyllysine" EXACT RESID-alternate [] synonym: "N6-trans-crotonyllysine" EXACT RESID-alternate [] xref: DiffAvg: "68.07" xref: DiffFormula: "C 4 H 4 N 0 O 1" xref: DiffMono: "68.026215" xref: Formula: "C 10 H 16 N 2 O 2" xref: MassAvg: "196.25" xref: MassMono: "196.121178" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0475" is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01893 name: N6-malonyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-malonyl-L-lysine." [PubMed:21908771, PubMed:8349414, RESID:AA0568] synonym: "(2S)-2-amino-6-[(carboxyacetyl)amino]hexanoic acid" EXACT RESID-systematic [] synonym: "2-azanyl-6-[(carboxyacetyl)azanyl]hexanoic acid" EXACT RESID-alternate [] synonym: "malonyllysine" EXACT RESID-alternate [] synonym: "MOD_RES N6-malonyllysine" EXACT UniProt-feature [] synonym: "N(epsilon)-(malonyl)lysine" EXACT RESID-alternate [] synonym: "N6-(carboxyacetyl)lysine" EXACT RESID-alternate [] synonym: "N6-malonyl-L-lysine" EXACT RESID-name [] synonym: "N6-malonyllysine" EXACT RESID-alternate [] xref: DiffAvg: "86.05" xref: DiffFormula: "C 3 H 2 N 0 O 3" xref: DiffMono: "86.000394" xref: Formula: "C 9 H 14 N 2 O 4" xref: MassAvg: "214.22" xref: MassMono: "214.095357" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0467" is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01894 name: propanoylated residue def: "A protein modification that effectively replaces a hydrogen atom with an propanoyl group." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:58] synonym: "Propionate labeling reagent light form (N-term & K)" RELATED Unimod-description [] synonym: "Propionyl" RELATED PSI-MS-label [] xref: DiffAvg: "56.06" xref: DiffFormula: "C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:58" is_a: MOD:00649 ! acylated residue [Term] id: MOD:01895 name: alpha-amino 3x(12)C-labeled propanoylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a 3x(12)C-labeled propanoyl group." [PubMed:11857757, PubMed:11999733, PubMed:12175151, Unimod:58#N-term] synonym: "Propionate labeling reagent light form (N-term & K)" RELATED Unimod-description [] synonym: "Propionyl" RELATED PSI-MS-label [] xref: DiffAvg: "56.03" xref: DiffFormula: "(12)C 3 H 4 O 1" xref: DiffMono: "56.026215" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:58" relationship: derives_from MOD:00451 ! alpha-amino propanoylated residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:01896 name: trifluoroacetic acid adduct def: "A protein modification produced by trifluoroacetic acid forming an adduct, either a salt or a hydrogen bonded carboxylic acid dimer, with an amino acid residue." [PubMed:18688235] comment: Trifluoroacetic acid has been observed to form adducts in both negative and positive mode analysis (Mark Collins, private communication) [JSG]. synonym: "TFA" EXACT DeltaMass-label [] xref: DiffAvg: "114.02" xref: DiffFormula: "C 2 F 3 H 1 O 2" xref: DiffMono: "113.992864" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00498 ! fluorinated residue is_a: MOD:00848 ! reagent derivatized residue [Term] id: MOD:01897 name: 5-hydroxy-3-methyl-L-proline (Ile) def: "A protein modification that effectively converts an L-isoleucine residue to 5-hydroxy-3-methyl-L-proline." [PubMed:21788474, PubMed:7592021, PubMed:8557573, RESID:AA0473] synonym: "(2S,3S,5Xi)-5-hydroxy-3-methylpyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "5-hydroxy-3-methyl-L-proline" EXACT RESID-name [] synonym: "5-hydroxy-3-methylproline" EXACT RESID-alternate [] synonym: "5Hy3MePro(Ile)" EXACT PSI-MOD-label [] synonym: "beta-methyl-delta-hydroxyproline" EXACT RESID-alternate [] synonym: "MOD_RES 5-hydroxy-3-methylproline (Ile)" EXACT UniProt-feature [] xref: DiffAvg: "13.98" xref: DiffFormula: "C 0 H -2 N 0 O 1" xref: DiffMono: "13.979265" xref: Formula: "C 6 H 9 N 1 O 2" xref: MassAvg: "127.14" xref: MassMono: "127.063329" xref: Origin: "I" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0466" is_a: MOD:00601 ! cyclized residue is_a: MOD:00679 ! carbon oxygenated residue is_a: MOD:00910 ! modified L-isoleucine residue is_a: MOD:01905 ! 5-hydroxy-3-methyl-L-proline [Term] id: MOD:01898 name: N2,N2-dimethyl-L-arginine def: "modification from RESID" [PubMed:21568297, PubMed:21950656, RESID:AA0569] synonym: "(2S)-5-[(diaminomethylidene)amino]-2-(dimethylamino)pentanoic acid" EXACT RESID-systematic [] synonym: "(2S)-5-carbamimidamido-2-(dimethylamino)pentanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "MOD_RES N2,N2-dimethylarginine" EXACT UniProt-feature [] synonym: "N(alpha),N(alpha)-dimethylarginine" EXACT RESID-alternate [] synonym: "N2,N2-dimethyl-L-arginine" EXACT RESID-name [] synonym: "N2,N2-dimethylarginine" EXACT RESID-alternate [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 8 H 17 N 4 O 1" xref: MassAvg: "185.25" xref: MassMono: "185.140236" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0459" is_a: MOD:00783 ! dimethylated L-arginine [Term] id: MOD:01899 name: L-arginine thiazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-arginine residue and an L-cysteine residue to form arginine thiazole-4-carboxylic acid." [PubMed:21568297, PubMed:21950656, RESID:AA0570] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-4-([diaminomethylidene]amino)butyl]-1,3-thiazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "CROSSLNK Thiazole-4-carboxylic acid (Arg-Cys)" EXACT UniProt-feature [] synonym: "L-arginine thiazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 9 H 13 N 5 O 1 S 1" xref: MassAvg: "239.30" xref: MassMono: "239.084081" xref: Origin: "C, R" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0460" is_a: MOD:02041 ! crosslinked L-arginine residue is_a: MOD:01420 ! thiazole/thiazoline ring crosslinked residues is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01900 name: L-cysteine 5-methyloxazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-cysteine residue and an L-threonine residue to form L-cysteine 5-methyloxazole-4-carboxylic acid." [PubMed:21568297, PubMed:21950656, RESID:AA0571] comment: Cross-link 2. synonym: "2-[(1R)-1-amino-2-sulfanylethyl]-5-methyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[(1R)-1-azanyl-2-sulfanylethyl]-5-methyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK 5-methyloxazole-4-carboxylic acid (Cys-Thr)" EXACT UniProt-feature [] synonym: "L-cysteine 5-methyloxazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1 S 0" xref: DiffMono: "-20.026215" xref: Formula: "C 7 H 8 N 2 O 2 S 1" xref: MassAvg: "184.21" xref: MassMono: "184.030649" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0461" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:01422 ! oxazole/oxazoline ring crosslinked residues (Thr) is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01901 name: L-threonine 5-methyloxazole-4-carboxylic acid def: "A protein modification that effectively crosslinks two L-threonine residues to form L-threonine 5-methyloxazole-4-carboxylic acid." [PubMed:21568297, PubMed:21950656, RESID:AA0572] comment: Cross-link 2. synonym: "2-[(1S,2R)-1-amino-2-hydroxypropyl]-5-methyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[(1S,2R)-1-azanyl-2-hydroxypropyl]-5-methyl-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK 5-methyloxazole-4-carboxylic acid (Thr-Thr)" EXACT UniProt-feature [] synonym: "L-threonine 5-methyloxazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "C 8 H 10 N 2 O 3" xref: MassAvg: "182.18" xref: MassMono: "182.069142" xref: Origin: "T, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0462" is_a: MOD:01422 ! oxazole/oxazoline ring crosslinked residues (Thr) is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01902 name: L-isoleucine oxazole-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-isoleucine residue and an L-serine residue to form L-cysteine oxazole-4-carboxylic acid." [PubMed:21568297, PubMed:21950656, RESID:AA0573] comment: Cross-link 2. synonym: "2-[(1S,2S)-1-amino-2-methylbutyl]-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[(1S,2S)-1-azanyl-2-methylbutyl]-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Oxazole-4-carboxylic acid (Ile-Ser)" EXACT UniProt-feature [] synonym: "L-isoleucine oxazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "C 9 H 12 N 2 O 2" xref: MassAvg: "180.21" xref: MassMono: "180.089878" xref: Origin: "I, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0463" is_a: MOD:02049 ! crosslinked L-isoleucine residue is_a: MOD:01421 ! oxazole/oxazoline ring crosslinked residues (Ser) is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01903 name: L-serine oxazole-4-carboxylic acid def: "A protein modification that effectively crosslinks two L-serine residues to form serine oxazole-4-carboxylic acid." [PubMed:21568297, PubMed:21950656, RESID:AA0574] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-hydroxyethyl]-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[(1S)-1-azanyl-2-hydroxyethyl]-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK Oxazole-4-carboxylic acid (Ser-Ser)" EXACT UniProt-feature [] synonym: "L-serine oxazole-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "C 6 H 6 N 2 O 3" xref: MassAvg: "154.13" xref: MassMono: "154.037842" xref: Origin: "S, S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0464" is_a: MOD:01421 ! oxazole/oxazoline ring crosslinked residues (Ser) is_a: MOD:02082 ! didehydrogenated and dehydrated residue [Term] id: MOD:01904 name: L-serine 5-methyloxazoline-4-carboxylic acid def: "A protein modification that effectively crosslinks an L-serine residue and an L-threonine residue to form L-serine 5-methyloxazoline-4-carboxylic acid." [PubMed:21568297, PubMed:21950656, RESID:AA0575] comment: Cross-link 2. synonym: "2-[(1S)-1-amino-2-hydroxyethyl]-5-methyl-1,3-oxazoline-4-carboxylic acid" EXACT RESID-alternate [] synonym: "2-[(1S)-1-amino-2-hydroxyethyl]-5-methyl-4,5-dihydro-1,3-oxazole-4-carboxylic acid" EXACT RESID-systematic [] synonym: "2-[(1S)-1-azanyl-2-hydroxyethyl]-5-methyl-4,5-dihydro-1,3-oxazole-4-carboxylic acid" EXACT RESID-alternate [] synonym: "CROSSLNK 5-methyloxazoline-4-carboxylic acid (Ser-Thr)" EXACT UniProt-feature [] synonym: "L-serine 5-methyloxazoline-4-carboxylic acid" EXACT RESID-name [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 10 N 2 O 3" xref: MassAvg: "170.17" xref: MassMono: "170.069142" xref: Origin: "S, T" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0465" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01422 ! oxazole/oxazoline ring crosslinked residues (Thr) is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01905 name: 5-hydroxy-3-methyl-L-proline def: "A protein modification that effectively converts a source amino acid residue to 5-hydroxy-3-methyl-L-proline." [PubMed:7592021, PubMed:8557573, RESID:AA0473] synonym: "(2S,3S,5Xi)-5-hydroxy-3-methylpyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "5-hydroxy-3-methyl-L-proline" EXACT RESID-name [] synonym: "5-hydroxy-3-methylproline" EXACT RESID-alternate [] synonym: "5Hy3MePro" EXACT PSI-MOD-label [] synonym: "beta-methyl-delta-hydroxyproline" EXACT RESID-alternate [] synonym: "MOD_RES 5-hydroxy-3-methylproline (Ile)" EXACT UniProt-feature [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 9 N 1 O 2" xref: MassAvg: "127.14" xref: MassMono: "127.063329" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues relationship: has_functional_parent MOD:01024 ! monohydroxylated proline [Term] id: MOD:01906 name: dehydromethionine def: "A protein modification that effectively converts an L-methionine residue to dehydromethionine." [PubMed:18688235, PubMed:19775156] synonym: "(3S)-3-carboxy-1-methylisothiazolidin-1-ium" EXACT PSI-MOD-alternate [] synonym: "L-dehydromethionine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-1.01" xref: DiffFormula: "C 0 H -1 N 0 O 0 S 0" xref: DiffMono: "-1.008374" xref: FormalCharge: "1+" xref: Formula: "C 5 H 9 N 1 O 1 S 1" xref: MassAvg: "131.19" xref: MassMono: "131.039936" xref: Origin: "M" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00601 ! cyclized residue is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:01907 name: dehydromethionine (from L-methioninium) def: "A protein modification that effectively converts an L-methioninium (protonated L-methionine) residue to dehydromethionine." [PubMed:18688235, PubMed:19775156] comment: This process accounts only for cyclizaation and not protonation. The alternative process (MOD:01906) accounts for both protonation and cyclization. synonym: "(3S)-3-carboxy-1-methylisothiazolidin-1-ium" EXACT PSI-MOD-alternate [] synonym: "L-dehydromethionine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.016199" xref: FormalCharge: "1+" xref: Formula: "C 5 H 9 N 1 O 1 S 1" xref: MassAvg: "131.19" xref: MassMono: "131.039936" xref: Origin: "MOD:001464" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:00601 ! cyclized residue is_a: MOD:00913 ! modified L-methionine residue relationship: derives_from MOD:01464 ! protonated L-methionine (L-methioninium) residue [Term] id: MOD:01908 name: 4-sulfophenyl isothiocyanate alpha-amino derivatized residue def: "A protein modification that effectively converts a residue to the 4-sulfophenyl isothiocyanate adduct, alpha-amino-[(4-sulfophenyl)carbamothioyl] residue." [PubMed:14689565, PubMed:14745769, PubMed:15549660, PubMed:16526082, Unimod:261#N-term] synonym: "4-sulfophenyl isothiocyanate" RELATED Unimod-description [] synonym: "alpha-amino-[(4-sulfophenyl)carbamothioyl] residue" EXACT PSI-MOD-alternate [] synonym: "SPITC" RELATED PSI-MS-label [] xref: DiffAvg: "215.24" xref: DiffFormula: "C 7 H 5 N 1 O 3 S 2" xref: DiffMono: "214.971085" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:261" is_a: MOD:00584 ! 4-sulfophenyl isothiocyanate derivatized residue [Term] id: MOD:01909 name: 6x(13)C labeled 4-sulfophenyl isothiocyanate alpha-amino derivatized residue def: "A protein modification that effectively converts a residue to the 6x(13)C labeled 4-sulfophenyl isothiocyanate adduct, alpha-amino-[(4-sulfophenyl)carbamothioyl] residue." [PubMed:11467524, PubMed:16526082, Unimod:464#N-term] synonym: "4-sulfophenyl isothiocyanate (Heavy C13)" RELATED Unimod-description [] synonym: "SPITC:13C(6)" RELATED PSI-MS-label [] xref: DiffAvg: "220.99" xref: DiffFormula: "(12)C 1 (13)C 6 H 5 N 1 O 3 S 2" xref: DiffMono: "220.991214" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:464" is_a: MOD:00880 ! 6x(13)C labeled 4-sulfophenyl isothiocyanate derivatized residue [Term] id: MOD:01910 name: monofluorinated residue def: "A protein modification that effectively substitutes one hydrogen atom of a residue with one fluorine atom." [Unimod:127] synonym: "F1Res" EXACT PSI-MOD-label [] xref: DiffAvg: "17.99" xref: DiffFormula: "C 0 F 1 H -1 N 0 O 0" xref: DiffMono: "17.990578" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:127" is_a: MOD:00498 ! fluorinated residue [Term] id: MOD:01911 name: monochlorinated residue def: "A protein modification that effectively substitutes one hydrogen atom of a residue with one chlorine atom." [Unimod:936] synonym: "Cl1Res" EXACT PSI-MOD-label [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:936" is_a: MOD:00753 ! chlorinated residue [Term] id: MOD:01912 name: monobrominated residue def: "A protein modification that effectively substitutes one hydrogen atom of a residue with one bromine atom." [Unimod:340] synonym: "Br1Res" EXACT PSI-MOD-label [] xref: DiffAvg: "78.90" xref: DiffFormula: "Br 1 C 0 H -1 N 0 O 0" xref: DiffMono: "77.910512" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" xref: Unimod: "Unimod:340" is_a: MOD:00754 ! brominated residue [Term] id: MOD:01913 name: monochlorinated L-tryptophan def: "A protein modification that effectively substitutes one hydrogen atom of an L-tryptophan residue with one chlorine atom." [PubMed:18688235] synonym: "Cl1Trp" EXACT PSI-MOD-label [] xref: DiffAvg: "34.44" xref: DiffFormula: "C 0 Cl 1 H -1 N 0 O 0" xref: DiffMono: "33.961028" xref: Formula: "C 11 Cl 1 H 9 N 2 O 1" xref: MassAvg: "220.66" xref: MassMono: "220.040341" xref: Origin: "W" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01068 ! halogenated tryptophan is_a: MOD:01911 ! monochlorinated residue [Term] id: MOD:01914 name: O5-galactosyl-L-hydroxylysine def: "A protein modification that effectively converts a 5-hydroxy-L-lysine residue to O5-galactosyl-L-hydroxylysine." [PMID:743239, PubMed:17516569, Unimod:907] comment: Secondary to RESID:AA0028. This intermediate is rarely observed [JSG]. subset: PSI-MOD-slim synonym: "Galactosyl hydroxylysine" RELATED Unimod-description [] synonym: "OGal5HyLys" EXACT PSI-MOD-label [] synonym: "CARBOHYD O-linked (Gal) hydroxylysine" EXACT UniProt-feature [] xref: DiffAvg: "162.14" xref: DiffFormula: "C 6 H 10 O 5" xref: DiffMono: "162.052823" xref: Formula: "C 16 H 22 N 2 O 7" xref: MassAvg: "354.36" xref: MassMono: "354.142701" xref: Origin: "MOD:00037" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:907" xref: UniProt: "PTM-0556" is_a: MOD:00476 ! monogalactosylated residue is_a: MOD:00396 ! O-glycosylated residue [Term] id: MOD:01915 name: N-formyl-L-alanine def: "A protein modification that effectively converts an L-alanine residue to N-formyl-L-alanine." [PubMed:9334739, RESID:AA0576] synonym: "(2S)-2-(formylamino)propanoic acid" EXACT RESID-systematic [] synonym: "2-formamidopropanoic acid" EXACT RESID-alternate [] synonym: "2-formamidopropionic acid" EXACT RESID-alternate [] synonym: "N-formyl-L-alanine" EXACT RESID-name [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 4 H 6 N 1 O 2" xref: MassAvg: "100.10" xref: MassMono: "100.039853" xref: Origin: "A" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:00409 ! N-formylated residue is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:01916 name: O4'-(N-acetylamino)galactosyl-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to O4'-(N-acetylamino)galactosyl-L-tyrosine." [PubMed:21712440, PubMed:21983924, RESID:AA0577] synonym: "(2S)-2-amino-3-(D-2-acetamido-2-deoxygalactopyranosyloxy)phenylpropanoic acid" EXACT RESID-systematic [] synonym: "CARBOHYD O-linked (GalNAc) tyrosine" EXACT UniProt-feature [] synonym: "mucin type O-glycosyltyrosine" EXACT RESID-alternate [] synonym: "O4'-(N-acetylamino)galactosyl-L-tyrosine" EXACT RESID-name [] synonym: "O4'-(N-acetylgalactosaminyl)tyrosine" EXACT RESID-alternate [] synonym: "O4'-glycosyl-L-tyrosine" EXACT RESID-alternate [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 17 H 22 N 2 O 7" xref: MassAvg: "366.37" xref: MassMono: "366.142701" xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0570" is_a: MOD:00563 ! mono-N-acetylaminogalactosylated residue is_a: MOD:01927 ! O-glycosyl-L-tyrosine [Term] id: MOD:01917 name: N6-(L-isoaspartyl)-L-lysine (Asp) def: "A protein modification that effectively crosslinks an L-aspartic acid residue and an L-lysine residue by an isopeptide bond with the formation of N6-(L-isoaspartyl)-L-lysine and the release of water." [ChEBI:21862, PubMed:11000116, PubMed:15044436, PubMed:18063798, PubMed:6503713, RESID:AA0294#ASP] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(3S)-3-amino-3-carboxypropanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "beta-(N6-lysyl)aspartyl acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoaspartyl lysine isopeptide (Lys-Asn)" EXACT UniProt-feature [] synonym: "isoaspartyl N6-lysine" EXACT RESID-alternate [] synonym: "N(epsilon)-(beta-aspartyl)lysine" EXACT RESID-alternate [] synonym: "N6-(L-isoaspartyl)-L-lysine" EXACT RESID-name [] synonym: "XLNK-4Asp-N6Lys(Asp)" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 10 H 15 N 3 O 3" xref: MassAvg: "225.25" xref: MassMono: "225.111341" xref: Origin: "D, K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0486" is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:01929 ! N6-(L-isoaspartyl)-L-lysine is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01918 name: (2S,5S)-5-hydroxylysine def: "A protein modification that effectively converts an L-lysine residue to (2S,5S)-5-hydroxylysine." [PubMed:19574390, PubMed:22238144, RESID:AA0578] subset: PSI-MOD-slim synonym: "(2S,5S)-2,6-diamino-5-hydroxyhexanoic acid" EXACT RESID-systematic [] synonym: "(2S,5S)-5-hydroxylysine" EXACT RESID-name [] synonym: "2,6-bisazanyl-5-hydroxyhexanoic acid" EXACT RESID-alternate [] synonym: "2,6-diamino-2,3,4,6-tetradeoxyhexonic acid" EXACT RESID-alternate [] synonym: "alpha,epsilon-diamino-delta-hydroxycaproic acid" EXACT RESID-alternate [] synonym: "L-allo-delta-hydroxylysine" EXACT RESID-alternate [] synonym: "L-threo-delta-hydroxylysine" EXACT RESID-alternate [] synonym: "MOD_RES (5S)-5-hydroxylysine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 12 N 2 O 2" xref: MassAvg: "144.17" xref: MassMono: "144.089878" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0472" is_a: MOD:00037 ! 5-hydroxy-L-lysine [Term] id: MOD:01919 name: (2S,3S)-3-hydroxyaspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to (2S,3S)-3-hydroxyaspartic acid." [ChEBI:10696, PubMed:21177872, RESID:AA0579, ChEBI:138111] subset: PSI-MOD-slim synonym: "(2S,3S)-2-amino-3-hydroxybutanedioic acid" EXACT RESID-systematic [] synonym: "(2S,3S)-3-hydroxyaspartic acid" EXACT RESID-name [] synonym: "(3S)-3-hydroxy-L-aspartic acid" EXACT RESID-alternate [] synonym: "2-amino-3-hydroxysuccinic acid" EXACT RESID-alternate [] synonym: "2-azanyl-3-hydroxybutanedioic acid" EXACT RESID-alternate [] synonym: "3-hydroxyaspartic acid" EXACT RESID-alternate [] synonym: "L-threo-3-hydroxyaspartic acid" EXACT RESID-alternate [] synonym: "L-threo-beta-hydroxyaspartic acid" EXACT RESID-alternate [] synonym: "MOD_RES (3S)-3-hydroxyaspartate" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 4 H 5 N 1 O 4" xref: MassAvg: "131.09" xref: MassMono: "131.021858" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0473" is_a: MOD:01926 ! 3-hydroxy-L-aspartic acid [Term] id: MOD:01920 name: 3-hydroxy-L-histidine def: "A protein modification that effectively converts an L-histidine residue to 3-hydroxy-L-histidine." [PubMed:21251231, RESID:AA0580, ChEBI:138021] synonym: "(2S)-2-amino-3-hydroxy-3-(1H-imidazol-4-yl)propanoic acid" EXACT RESID-systematic [] synonym: "3-hydroxy-L-histidine" EXACT RESID-name [] synonym: "MOD_RES (3S)-3-hydroxyhistidine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 7 N 3 O 2" xref: MassAvg: "153.14" xref: MassMono: "153.053826" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0477" is_a: MOD:00909 ! modified L-histidine residue is_a: MOD:00677 ! hydroxylated residue [Term] id: MOD:01921 name: D-aspartic acid (Asp) def: "A protein modification that effectively converts an L-aspartic acid residue to D-aspartic acid." [ChEBI:48094, PubMed:9384562, RESID:AA0190#ASP] synonym: "(2R)-2-aminobutanedioic acid" EXACT RESID-systematic [] synonym: "2-azanylbutanedioic acid" EXACT RESID-alternate [] synonym: "aminosuccinic acid" EXACT RESID-alternate [] synonym: "D-aspartic acid" EXACT RESID-name [] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "D" xref: Source: "artifactual" xref: TermSpec: "none" is_a: MOD:00904 ! modified L-aspartic acid residue is_a: MOD:01942 ! D-aspartic acid [Term] id: MOD:01922 name: 3-methoxydehydroalanine def: "A protein modification that effectively converts an L-serine residue to 3-methoxydehydroalanine." [PubMed:19745839, RESID:AA0582] synonym: "2-amino-3-methoxyprop-2-enoic acid" EXACT RESID-systematic [] synonym: "3-methoxydehydroalanine" EXACT RESID-name [] synonym: "3-methoxydidehydroalanine" EXACT RESID-alternate [] xref: DiffAvg: "12.01" xref: DiffFormula: "C 1 H 0 N 0 O 0" xref: DiffMono: "12.000000" xref: Formula: "C 4 H 5 N 1 O 2" xref: MassAvg: "99.09" xref: MassMono: "99.032028" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00916 ! modified L-serine residue relationship: has_functional_parent MOD:00189 ! dehydroalanine (Ser) [Term] id: MOD:01923 name: N6-(L-aspartyl)-L-lysine def: "A protein modification that effectively crosslinks an L-aspartic acid residue and an L-lysine residue by an isopeptide bond to form N6-(L-aspartyl)-L-lysine and the release of water." [PubMed:15044436, RESID:AA0583] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(2S)-2-amino-3-carboxypropanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "alpha-(N6-lysyl)aspartyl acid" EXACT RESID-alternate [] synonym: "aspartyl N6-lysine" EXACT RESID-alternate [] synonym: "N(epsilon)-(alpha-aspartyl)lysine" EXACT RESID-alternate [] synonym: "N6-(L-aspartyl)-L-lysine" EXACT RESID-name [] synonym: "XLNK-4Asp-N6Lys(Asp)" EXACT PSI-MOD-label [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 10 H 16 N 3 O 4" xref: MassAvg: "242.26" xref: MassMono: "242.114081" xref: Origin: "D, K" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01924 name: S-octanoyl-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-octanoyl-L-cysteine." [PubMed:12591875, PubMed:16342964, RESID:AA0584] synonym: "(2S)-2-amino-3-(octanoylsulfanyl)propanoic acid" EXACT RESID-systematic [] synonym: "2-amino-3-(octanoylthio)propanoic acid" EXACT RESID-alternate [] synonym: "ACT_SITE Acyl-thioester intermediate" EXACT UniProt-feature [] synonym: "cysteine octanoate thioester" EXACT RESID-alternate [] synonym: "S-octanoyl-L-cysteine" EXACT RESID-name [] xref: DiffAvg: "126.20" xref: DiffFormula: "C 8 H 14 N 0 O 1 S 0" xref: DiffMono: "126.104465" xref: Formula: "C 11 H 19 N 1 O 2 S 1" xref: MassAvg: "229.34" xref: MassMono: "229.113650" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00666 ! octanoylated residue is_a: MOD:00672 ! S-acylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01925 name: (2S,5R)-5-hydroxylysine def: "A protein modification that effectively converts an L-lysine residue to (2S,5R)-5-hydroxylysine." [ChEBI:18040, PubMed:13375629, PubMed:15504407, PubMed:16101297, PubMed:2857489, RESID:AA0028] subset: PSI-MOD-slim synonym: "(2S,5R)-2,6-diamino-5-hydroxyhexanoic acid" EXACT RESID-systematic [] synonym: "(2S,5R)-5-hydroxylysine" EXACT RESID-name [] synonym: "2,6-bisazanyl-5-hydroxyhexanoic acid" EXACT RESID-alternate [] synonym: "2,6-diamino-2,3,4,6-tetradeoxyhexonic acid" EXACT RESID-alternate [] synonym: "5-hydroxylated L-lysine" EXACT PSI-MOD-alternate [] synonym: "5HyLys" EXACT PSI-MOD-label [] synonym: "alpha,epsilon-diamino-delta-hydroxycaproic acid" EXACT RESID-alternate [] synonym: "L-erythro-delta-hydroxylysine" EXACT RESID-alternate [] synonym: "MOD_RES (2S,5R)-5-hydroxylysine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 12 N 2 O 2" xref: MassAvg: "144.17" xref: MassMono: "144.089878" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0471" is_a: MOD:00037 ! 5-hydroxy-L-lysine [Term] id: MOD:01926 name: 3-hydroxy-L-aspartic acid def: "A protein modification that effectively converts an L-aspartic acid residue to one of the diastereomeric 3-hydroxy-L-aspartic acid residues." [OMSSA:59, Unimod:35#D] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-hydroxybutanedioic acid" EXACT PSI-MOD-alternate [] synonym: "(2S)-3-hydroxyaspartic acid" EXACT PSI-MOD-alternate [] synonym: "3HyAsp" EXACT PSI-MOD-label [] synonym: "erythro-beta-hydroxylated L-aspartic acid" EXACT PSI-MOD-alternate [] synonym: "hydroxylationd" EXACT OMSSA-label [] synonym: "monohydroxylated aspartic acid" EXACT PSI-MOD-alternate [] synonym: "Oxidation" RELATED PSI-MS-label [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 4 H 5 N 1 O 4" xref: MassAvg: "131.09" xref: MassMono: "131.021858" xref: Origin: "D" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:35" is_a: MOD:00425 ! monohydroxylated residue is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:01927 name: O-glycosyl-L-tyrosine def: "A protein modification that effectively converts an L-tyrosine residue to O4'-glycosyltyrosine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "OGlycoTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00396 ! O-glycosylated residue is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:01928 name: N-(L-isoaspartyl)-glycine def: "A protein modification that effectively crosslinks either an L-asparagine residue or an L-aspartic acid residue with a glycine residue by an isopeptide bond with formation of N-(L-isoaspartyl)glycine." [ChEBI:21479, PubMed:1826288, RESID:AA0126] comment: Cross-link 2. synonym: "(2S)-2-amino-4-(carboxymethyl)amino-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "2-amino-N4-(carboxymethyl)-butanediamic acid" EXACT RESID-alternate [] synonym: "isoaspartyl glycine" EXACT RESID-alternate [] synonym: "N-(L-isoaspartyl)-glycine" EXACT RESID-name [] synonym: "N-beta-aspartylglycine" EXACT RESID-alternate [] synonym: "N4-(carboxymethyl)-asparagine" EXACT RESID-alternate [] synonym: "XLNK-4Asp-NGly" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 7 N 2 O 3" xref: MassAvg: "155.13" xref: MassMono: "155.045667" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:02047 ! crosslinked glycine residue [Term] id: MOD:01929 name: N6-(L-isoaspartyl)-L-lysine def: "A protein modification that effectively crosslinks an either an L-asparagine residue or an L-aspartic acid residue with an L-lysine residue by an isopeptide bond with the formation of N6-(L-isoaspartyl)-L-lysine." [ChEBI:21862, DeltaMass:0, PubMed:11000116, PubMed:6503713, RESID:AA0294] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(3S)-3-amino-3-carboxypropanoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "beta-(N6-lysyl)aspartyl acid" EXACT RESID-alternate [] synonym: "CROSSLNK Isoaspartyl lysine isopeptide (Lys-Asn)" EXACT UniProt-feature [] synonym: "isoaspartyl N6-lysine" EXACT RESID-alternate [] synonym: "N(epsilon)-(beta-aspartyl)lysine" EXACT RESID-alternate [] synonym: "N-(beta-Aspartyl)-Lysine (Crosslink)" EXACT DeltaMass-label [] synonym: "N6-(L-isoaspartyl)-L-lysine" EXACT RESID-name [] synonym: "XLNK-4Asp-N6Lys" EXACT PSI-MOD-label [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 10 H 15 N 3 O 3" xref: MassAvg: "225.25" xref: MassMono: "225.111341" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00688 ! isopeptide crosslinked residues is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01930 name: D-aspartic acid (Asn) def: "A protein modification that effectively converts an L-asparagine residue to D-aspartic acid." [ChEBI:48094, PubMed:9384562, RESID:AA0190#ASN] synonym: "(2R)-2-aminobutanedioic acid" EXACT RESID-systematic [] synonym: "2-azanylbutanedioic acid" EXACT RESID-alternate [] synonym: "aminosuccinic acid" EXACT RESID-alternate [] synonym: "D-aspartic acid" EXACT RESID-name [] xref: DiffAvg: "0.98" xref: DiffFormula: "C 0 H -1 N -1 O 1" xref: DiffMono: "0.984016" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "N" xref: Source: "artifactual" xref: TermSpec: "none" is_a: MOD:00903 ! modified L-asparagine residue is_a: MOD:01942 ! D-aspartic acid [Term] id: MOD:01931 name: N6-phospho-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-phospho-L-lysine." [PubMed:20144148, RESID:AA0585] synonym: "(2S)-2-amino-6-(phosphonoamino)hexanoic acid" EXACT RESID-systematic [] synonym: "(2S)-2-azanyl-6-(phosphonoamino)hexanoic acid" EXACT RESID-alternate [] synonym: "6-phospholysine" EXACT RESID-alternate [] synonym: "N(6)-phosphonolysine" EXACT RESID-alternate [] synonym: "N(epsilon)-phospholysine" EXACT RESID-alternate [] synonym: "N(epsilon)-phosphonolysine" EXACT RESID-alternate [] synonym: "N(epsilon)-phosphonyllysine" EXACT RESID-alternate [] synonym: "N(epsilon)-phosphoryllysine" EXACT RESID-alternate [] synonym: "N6-phospho-L-lysine" EXACT RESID-name [] xref: DiffAvg: "79.98" xref: DiffFormula: "C 0 H 1 N 0 O 3 P 1" xref: DiffMono: "79.966331" xref: Formula: "C 6 H 13 N 2 O 4 P 1" xref: MassAvg: "208.15" xref: MassMono: "208.061294" xref: Origin: "K" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue is_a: MOD:01456 ! N-phosphorylated residue [Term] id: MOD:01932 name: L-lysinonorleucine def: "A protein modification that effectively cross-links two lysine residues with a carbon-nitrogen bond to form L-lysinonorleucine.." [PubMed:5117030, PubMed:5817620, PubMed:5879466, PubMed:6030254, RESID:AA0586] comment: Cross-link 2. synonym: "(2S)-2-amino-6-([(5S)-5-amino-5-carboxypentyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "(2S,2'S)-6,6'-iminobis(2-aminohexanoic acid)" EXACT RESID-alternate [] synonym: "6-(N6-L-lysino)-L-norleucine" EXACT RESID-alternate [] synonym: "L-lysinonorleucine" EXACT RESID-name [] synonym: "lysinonorleucine" EXACT RESID-alternate [] synonym: "lysinorleucine [misspelling]" EXACT RESID-alternate [] synonym: "lysylnorleucine" EXACT RESID-alternate [] synonym: "N6-[(5S)-5-amino-5-carboxypentyl]-L-lysine" EXACT RESID-alternate [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 12 H 21 N 3 O 2" xref: MassAvg: "239.32" xref: MassMono: "239.163377" xref: Origin: "K, K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia [Term] id: MOD:01933 name: desmosine def: "A protein modification that effectively cross-links four L-lysine residues to form desmosine." [ChEBI:37629, PubMed:13941623, PubMed:14109938, PubMed:14109939, PubMed:5839176, RESID:AA0587] comment: Cross-link 4. synonym: "4-[(4S)-4-amino-4-carboxybutyl]-1-[(5S)-5-amino-5-carboxypentyl]-3,5-bis[(3S)-3-amino-3-carboxypropyl]pyridinium" EXACT RESID-systematic [] synonym: "6-[4-(4-amino-4-carboxybutyl)-3,5-bis(3-amino-3-carboxypropyl)pyridinio]norleucine" EXACT RESID-alternate [] synonym: "desmosine" EXACT RESID-name [] xref: DiffAvg: "-58.15" xref: DiffFormula: "C 0 H -16 N -3 O 0" xref: DiffMono: "-58.134971" xref: FormalCharge: "1+" xref: Formula: "C 24 H 32 N 5 O 4" xref: MassAvg: "454.55" xref: MassMono: "454.244881" xref: Origin: "K, K, K, K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01425 ! pyridinyl ring crosslinked residues [Term] id: MOD:01934 name: isodesmosine def: "A protein modification that effectively cross-links four L-lysine residues to form isodesmosine." [ChEBI:37629, PubMed:13941623, PubMed:14109938, PubMed:14109939, PubMed:5839176, RESID:AA0588] comment: Cross-link 4. synonym: "2-[(4S)-4-amino-4-carboxybutyl]-1-[(5S)-5-amino-5-carboxypentyl]-3,5-bis[(3S)-3-amino-3-carboxypropyl]pyridinium" EXACT RESID-systematic [] synonym: "6-[2-(4-amino-4-carboxybutyl)-3,5-bis(3-amino-3-carboxypropyl)pyridinio]norleucine" EXACT RESID-alternate [] synonym: "isodesmosine" EXACT RESID-name [] xref: DiffAvg: "-58.15" xref: DiffFormula: "C 0 H -16 N -3 O 0" xref: DiffMono: "-58.134971" xref: FormalCharge: "1+" xref: Formula: "C 24 H 32 N 5 O 4" xref: MassAvg: "454.55" xref: MassMono: "454.244881" xref: Origin: "K, K, K, K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01425 ! pyridinyl ring crosslinked residues [Term] id: MOD:01935 name: O-glucosyl-L-hydroxylysine def: "modification from RESID" [PubMed:22045808, RESID:AA0589] synonym: "(D-glucopyranosyl)oxy-L-lysine" EXACT RESID-systematic [] synonym: "O-glucosyl-L-hydroxylysine" EXACT RESID-name [] synonym: "CARBOHYD O-linked (Glc) hydroxylysine" EXACT UniProt-feature [] xref: DiffAvg: "178.14" xref: DiffFormula: "C 6 H 10 N 0 O 6" xref: DiffMono: "178.047738" xref: Formula: "C 12 H 22 N 2 O 7" xref: MassAvg: "306.32" xref: MassMono: "306.142701" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0572" relationship: derives_from MOD:01047 ! monohydroxylated lysine is_a: MOD:00396 ! O-glycosylated residue is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:01936 name: N6-oleoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-oleoyl-L-lysine." [PubMed:20942504, RESID:AA0590] synonym: "(2S)-2-amino-6-([(9Z)-octadec-9-enoyl]amino)hexanoic acid" EXACT RESID-systematic [] synonym: "N6-[(9Z)-1-oxo-9-octadecenyl]lysine" EXACT RESID-alternate [] synonym: "N6-oleoyl-L-lysine" EXACT RESID-name [] xref: DiffAvg: "264.45" xref: DiffFormula: "C 18 H 32 N 0 O 1" xref: DiffMono: "264.245316" xref: Formula: "C 24 H 44 N 2 O 2" xref: MassAvg: "392.63" xref: MassMono: "392.340279" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:02011 ! N-oleoylated residue [Term] id: MOD:01937 name: N-palmitoyl-L-methionine def: "A protein modification that effectively converts an L-methionine residue to N-palmitoyl-L-methionine." [PubMed:20942504, RESID:AA0591] synonym: "(2S)-2-(hexadecanoylamino)-4-(methylsulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "2-(hexadecanamido)-4-(methylsulfanyl)butanoic acid" EXACT RESID-alternate [] synonym: "LIPID N-palmitoyl methionine" EXACT UniProt-feature [] synonym: "N-(1-oxohexadecyl)methionine" EXACT RESID-alternate [] synonym: "N-palmitoyl-L-methionine" EXACT RESID-name [] xref: DiffAvg: "238.41" xref: DiffFormula: "C 16 H 30 N 0 O 1 S 0" xref: DiffMono: "238.229666" xref: Formula: "C 21 H 40 N 1 O 2 S 1" xref: MassAvg: "370.62" xref: MassMono: "370.277976" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00913 ! modified L-methionine residue is_a: MOD:01685 ! alpha-amino palmitoylated residue [Term] id: MOD:01938 name: 2-(2-aminosuccinimidyl)-3-sulfanylpropanoic acid (Asn) def: "A protein modification that crosslinks an asparagine and the following cysteine residue with the formation of (2-aminosuccinimidyl)-3-sulfanylpropanoic acid and the release of ammonia." [RESID:AA0592#ASN] comment: Cross-link 2. synonym: "(2R)-2-[(3S)-3-amino-2,5-dioxopyrrolidin-1-yl]-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-(2-aminosuccinimidyl)-3-sulfanylpropanoic acid" EXACT RESID-name [] synonym: "aspartimide cysteine" EXACT RESID-alternate [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0 S 0" xref: DiffMono: "-17.026549" xref: Formula: "C 7 H 8 N 2 O 3 S 1" xref: MassAvg: "200.21" xref: MassMono: "200.025563" xref: Origin: "C, N" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:01945 ! 2-(2-aminosuccinimidyl)-3-sulfanylpropanoic acid is_a: MOD:00946 ! crosslinked residues with loss of ammonia [Term] id: MOD:01939 name: 2-(2-aminosuccinimidyl)-3-sulfanylpropanoic acid (Asp) def: "A protein modification that crosslinks an aspartic acid and the following cysteine residue with the formation of (2-aminosuccinimidyl)-3-sulfanylpropanoic acid and the loss of a water molecule." [RESID:AA0592#ASP] comment: Cross-link 2. synonym: "(2R)-2-[(3S)-3-amino-2,5-dioxopyrrolidin-1-yl]-3-sulfanylpropanoic acid" EXACT RESID-systematic [] synonym: "2-(2-aminosuccinimidyl)-3-sulfanylpropanoic acid" EXACT RESID-name [] synonym: "aspartimide cysteine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 8 N 2 O 3 S 1" xref: MassAvg: "200.21" xref: MassMono: "200.025563" xref: Origin: "C, D" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:01945 ! 2-(2-aminosuccinimidyl)-3-sulfanylpropanoic acid is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01940 name: 2-(2-aminosuccinimidyl)pentanedioic acid (Asn) def: "A protein modification that crosslinks an asparagine and the following glutamic acid residue with the formation of (2-aminosuccinimidyl)pentanedioic acid and the release of ammonia." [RESID:AA0593#ASN] comment: Cross-link 2. synonym: "(4S)-4-[(3S)-3-amino-2,5-dioxopyrrolidin-1-yl]-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "2-(2-aminosuccinimidyl)pentanedioic acid" EXACT RESID-name [] synonym: "aspartimide glutamic acid" EXACT RESID-alternate [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 9 H 10 N 2 O 5" xref: MassAvg: "226.19" xref: MassMono: "226.058971" xref: Origin: "E, N" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02042 ! crosslinked L-asparagine residue is_a: MOD:01946 ! 2-(2-aminosuccinimidyl)pentanedioic acid is_a: MOD:00946 ! crosslinked residues with loss of ammonia [Term] id: MOD:01941 name: 2-(2-aminosuccinimidyl)pentanedioic acid (Asp) def: "A protein modification that crosslinks an aspartic acid and the following glycine residue with the formation of (2-aminosuccinimidyl)pentanedioic acid and the loss of a water molecule." [RESID:AA0593#ASP] comment: Cross-link 2. synonym: "(4S)-4-[(3S)-3-amino-2,5-dioxopyrrolidin-1-yl]-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "2-(2-aminosuccinimidyl)pentanedioic acid" EXACT RESID-name [] synonym: "aspartimide glutamic acid" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 9 H 10 N 2 O 5" xref: MassAvg: "226.19" xref: MassMono: "226.058971" xref: Origin: "D, E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:01946 ! 2-(2-aminosuccinimidyl)pentanedioic acid is_a: MOD:00954 ! crosslinked residues with loss of water [Term] id: MOD:01942 name: D-aspartic acid def: "A protein modification that effectively converts a source amino acid residue to D-aspartic acid." [ChEBI:48094, PubMed:9384562, RESID:AA0190] synonym: "(2R)-2-aminobutanedioic acid" EXACT RESID-systematic [] synonym: "2-azanylbutanedioic acid" EXACT RESID-alternate [] synonym: "aminosuccinic acid" EXACT RESID-alternate [] synonym: "D-aspartic acid" EXACT RESID-name [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 4 H 5 N 1 O 3" xref: MassAvg: "115.09" xref: MassMono: "115.026943" xref: Origin: "X" xref: Source: "artifactual" xref: TermSpec: "none" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01943 name: pyrrolidione ring crosslinked residues def: "A protein modification that crosslinks two adjacent residues by formation of a pyrrolidione ring." [PubMed:18688235] is_a: MOD:00033 ! crosslinked residues [Term] id: MOD:01944 name: 2-aminosuccinimide ring crosslinked residues def: "A protein modification that forms (2-aminosuccinimidyl)acetic acid by crosslinking either an aspartic acid residue or an asparagine residue with the following residue." [PubMed:18688235] comment: Cross-link 2; this cross-link is formed by the condensation of an aspartic acid residue or an asparagine residue with the alpha-amido of the following residue. subset: PSI-MOD-slim xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00033 ! crosslinked residues is_a: MOD:00859 ! modified residue that can arise from different natural residues [Term] id: MOD:01945 name: 2-(2-aminosuccinimidyl)-3-sulfanylpropanoic acid def: "A protein modification that forms (2-aminosuccinimidyl)-3-sulfanylpropanoic acid by crosslinking either an aspartic acid residue or an asparagine residue with the following cysteine residue." [PubMed:18688235] comment: Cross-link 2; this cross-link is formed by the condensation of an aspartic acid residue or an asparagine residue with the alpha-amido of the following residue. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 6 N 2 O 3" xref: MassAvg: "154.13" xref: MassMono: "154.037842" xref: Origin: "C, X" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:02044 ! crosslinked L-cysteine residue is_a: MOD:01944 ! 2-aminosuccinimide ring crosslinked residues [Term] id: MOD:01946 name: 2-(2-aminosuccinimidyl)pentanedioic acid def: "A protein modification that forms (2-aminosuccinimidyl)pentanedioicacid by crosslinking either an aspartic acid residue or an asparagine residue with the following glutamic acid\n residue." [PubMed:18688235] comment: Cross-link 2; this cross-link is formed by the condensation of an aspartic acid residue or an asparagine residue with the alpha-amido of the following residue. xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 6 H 6 N 2 O 3" xref: MassAvg: "154.13" xref: MassMono: "154.037842" xref: Origin: "E, X" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:02045 ! crosslinked L-glutamic acid residue is_a: MOD:01944 ! 2-aminosuccinimide ring crosslinked residues [Term] id: MOD:01947 name: O-(L-isoaspartyl)-L-threonine (cross-link) def: "A protein modification that effectively cross-links an L-threonine residue and an L-aspartic acid residue with an ester bond to form O-(L-isoaspartyl)-L-threonine." [PubMed:17157318, PubMed:8706862, RESID:AA0525#TDX] comment: Cross-link 2. synonym: "(2S)-2-amino-4-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-2-amino-3-([(4S)-3-amino-3-carboxypropanoyl]oxy)propanoic acid" EXACT RESID-alternate [] synonym: "CROSSLNK isoaspartyl threonine ester (Thr-Asp)" EXACT UniProt-feature [] synonym: "O(beta)-(beta-aspartyl)threonine" EXACT RESID-alternate [] synonym: "O-(L-isoaspartyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(isoaspartyl)-threonine" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1" xref: DiffMono: "-18.010565" xref: Formula: "C 8 H 10 N 2 O 4" xref: MassAvg: "198.18" xref: MassMono: "198.064057" xref: Origin: "D, T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00885 ! ester crosslinked residues is_a: MOD:02043 ! crosslinked L-aspartic acid residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01978 ! O-(L-isoaspartyl)-L-threonine [Term] id: MOD:01948 name: labionin def: "A protein modification that effectively cross-links an L-cysteine residue and two L-serine residues by a thioether bond and a carbon-carbon bond to form labionin." [PubMed:20082397, RESID:AA0594] comment: Cross-link 3. synonym: "(2S,4S)-2,4-diamino-2-[([(2R)-2-amino-2-carboxyethyl]sulfanyl)methyl]pentanedioic acid" EXACT RESID-systematic [] synonym: "(2S,4S,8R)-2,4,8-triamino-4-carboxy-6-thianonanedioic acid" EXACT RESID-alternate [] synonym: "(2S,4S,8R)-labionin" EXACT RESID-alternate [] synonym: "labionin" EXACT RESID-name [] xref: DiffAvg: "-36.03" xref: DiffFormula: "C 0 H -4 N 0 O -2 S 0" xref: DiffMono: "-36.021129" xref: Formula: "C 9 H 11 N 3 O 3 S 1" xref: MassAvg: "241.26" xref: MassMono: "241.052112" xref: Origin: "C, S, S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01993 ! beta-carbon thioether crosslinked residues [Term] id: MOD:01949 name: coelenterazine def: "A protein modification that effectively cross-links a phenylalanine and two tyrosine residues to form coelenterazine." [ChEBI:2311, PubMed:10830969, PubMed:11572972, PubMed:19833098, RESID:AA0595] comment: Cross-link 3. synonym: "8-benzyl-2-(4-hydroxybenzyl)-6-(4-hydroxyphenyl)imidazo[1,2-a]pyrazin-3(7H)-one" EXACT RESID-systematic [] synonym: "coelenterazine" EXACT RESID-name [] synonym: "Oplophorus luciferin" EXACT RESID-alternate [] xref: DiffAvg: "-50.06" xref: DiffFormula: "C -1 H -6 N 0 O -2" xref: DiffMono: "-50.036779" xref: Formula: "C 26 H 21 N 3 O 3" xref: MassAvg: "423.47" xref: MassMono: "423.158292" xref: Origin: "F, Y, Y" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:00033 ! crosslinked residues is_a: MOD:02053 ! crosslinked L-phenylalanine residue is_a: MOD:02058 ! crosslinked L-tyrosine residue [Term] id: MOD:01950 name: L-isoglutamyl histamine def: "A protein modification that effectively converts an L-glutamine residue to L-isoglutamyl histamine." [PubMed:23022564, RESID:AA0596] synonym: "(2S)-2-amino-5-([2-(1H-imidazol-5-yl)ethyl]amino)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(gamma-glutamyl)histamine" EXACT RESID-alternate [] synonym: "L-isoglutamyl histamine" EXACT RESID-name [] xref: DiffAvg: "94.12" xref: DiffFormula: "C 5 H 6 N 2 O 0" xref: DiffMono: "94.053098" xref: Formula: "C 10 H 14 N 4 O 2" xref: MassAvg: "222.25" xref: MassMono: "222.111676" xref: Origin: "Q" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0488" is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:01951 name: O-(L-isoglutamyl)-L-serine (Gln-Ser) def: "A protein modification that effectively crosslinks an L-glutamine residue and an L-serine residue by an ester bond and releasing ammonia to form O-(L-isoglutamyl)-L-serine." [PubMed:17051152, RESID:AA0597#QSX] comment: Cross-link 2. synonym: "(2S)-2-amino-5-[(2S)-2-amino-2-carboxyethoxy]-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "O(beta)-(gamma-glutamyl)serine" EXACT RESID-alternate [] synonym: "O-(L-isoglutamyl)-L-serine" EXACT RESID-name [] synonym: "O3-(isoglutamyl)-serine" EXACT RESID-alternate [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 8 H 10 N 2 O 4" xref: MassAvg: "198.18" xref: MassMono: "198.064057" xref: Origin: "Q, S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02046 ! crosslinked L-glutamine residue is_a: MOD:00946 ! crosslinked residues with loss of ammonia is_a: MOD:01977 ! O-(L-isoglutamyl)-L-serine [Term] id: MOD:01952 name: O-(L-isoglutamyl)-L-threonine (Gln-Thr) def: "A protein modification that effectively cross-links an L-threonine residue and an L-glutamine residue with an ester bond releasing ammonia to form O-(L-isoglutamyl)-L-threonine." [PubMed:17051152, RESID:AA0536#TQX] comment: Cross-link 2. synonym: "(2S)-2-amino-5-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-2-amino-3-([(4S)-4-amino-4-carboxybutanoyl]oxy)-propanoic acid" EXACT RESID-alternate [] synonym: "5-(threon-O3-yl)glutamate" EXACT RESID-alternate [] synonym: "O(beta)-(gamma-glutamyl)threonine" EXACT RESID-alternate [] synonym: "O-(L-isoglutamyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(isoglutamyl)threonine" EXACT RESID-alternate [] xref: DiffAvg: "-17.03" xref: DiffFormula: "C 0 H -3 N -1 O 0" xref: DiffMono: "-17.026549" xref: Formula: "C 9 H 12 N 2 O 4" xref: MassAvg: "212.20" xref: MassMono: "212.079707" xref: Origin: "Q, T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02046 ! crosslinked L-glutamine residue is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01979 ! O-(L-isoglutamyl)-L-threonine is_a: MOD:00885 ! ester crosslinked residues is_a: MOD:00946 ! crosslinked residues with loss of ammonia [Term] id: MOD:01953 name: tetrakis-L-cysteinyl tetrairon octanitrosyl def: "A protein modification that effectively converts four L-cysteine residues and a four-iron cluster to tetrakis-L-cysteinyl tetrairon octanitrosyl." [PubMed:21182249, RESID:AA0599] comment: Cross-link 4. xref: DiffAvg: "459.40" xref: DiffFormula: "C 0 Fe 4 H -4 N 8 O 8 S 0" xref: DiffMono: "459.692359" xref: Formula: "C 12 Fe 4 H 16 N 12 O 12 S 4" xref: MassAvg: "871.95" xref: MassMono: "871.729098" xref: Origin: "C, C, C, C" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00738 ! iron containing modified residue is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:01954 name: dehydroalanine (Sec) def: "A protein modification that effectively converts an L-selenocysteine residue to dehydroalanine." [ChEBI:17123, PubMed:10220322, PubMed:12781460, PubMed:1547888, PubMed:1815586, PubMed:20805503, PubMed:21420488, PubMed:22031445, PubMed:2914619, PubMed:7947813, PubMed:8239649, RESID:AA0181] synonym: "2,3-didehydroalanine" EXACT RESID-alternate [] synonym: "2-aminoacrylic acid" EXACT RESID-alternate [] synonym: "2-aminopropenoic acid" EXACT RESID-systematic [] synonym: "4-methylidene-imidazole-5-one (MIO) active site" EXACT RESID-alternate [] synonym: "anhydroserine" EXACT RESID-alternate [] synonym: "dehydroalanine" EXACT RESID-name [] synonym: "Dha" EXACT RESID-alternate [] xref: DiffAvg: "-80.99" xref: DiffFormula: "C 0 H -2 N 0 O 0 Se -1" xref: DiffMono: "-81.932171" xref: Formula: "C 3 H 3 N 1 O 1" xref: MassAvg: "69.06" xref: MassMono: "69.021464" xref: Origin: "U" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01158 ! modified L-selenocysteine residue is_a: MOD:01168 ! dehydroalanine [Term] id: MOD:01955 name: L-alaninato bis-L-aspartato tris-L-glutamato L-histidino calcium tetramanganese pentoxide def: "modification from RESID" [PubMed:21499260, RESID:AA0600] comment: Cross-link 7. synonym: "4Mn-Ca-5O cluster" EXACT RESID-alternate [] synonym: "L-alaninato bis-L-aspartato tris-L-glutamato L-histidino calcium tetramanganese pentoxide" EXACT RESID-name [] synonym: "mu2-alaninato-1kappaO(1),3kappaO(1')-mu2-aspartato-1kappaO(4),5kappaO(4')-mu2-aspartato-2kappaO(4),3kappaO(4')-mu2-glutamato-3kappaO(5),4kappaO(5')-mu2-glutamato-4kappaO(5),5kappaO(5')-mu-glutamato-2kappaO(5)-mu-histidino-2kappaN(tau)-mu4-oxido-1:2:4:5kappa(4)O-tri-mu3-oxido-1:2:3kappa(3)O;1:3:4kappa(3)O;2:3:4kappa(3)O;mu-oxido-4:5kappa(2)O-calciumtetramanganese" EXACT RESID-systematic [] synonym: "photosystem II catalytic cluster" EXACT RESID-alternate [] xref: DiffAvg: "333.78" xref: DiffFormula: "C 0 Ca 1 H -6 Mn 4 N 0 O 5" xref: DiffMono: "333.642394" xref: Formula: "C 32 Ca 1 H 38 Mn 4 N 9 O 23" xref: MassAvg: "1176.53" xref: MassMono: "1175.922825" xref: Origin: "A, D, D, E, E, E, H" xref: Source: "natural" xref: TermSpec: "C-term" is_a: MOD:00740 ! manganese containing modified residue is_a: MOD:01482 ! calcium containing modified residue is_a: MOD:02065 ! metal or metal cluster coordinated L-alanine residue is_a: MOD:02066 ! metal or metal cluster coordinated L-aspartic acid residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue is_a: MOD:02070 ! metal or metal cluster coordinated L-histidine residue [Term] id: MOD:01956 name: (3R)-3-hydroxy-L-arginine def: "A protein modification that effectively converts an L-arginine residue to (3R)-3-hydroxy-L-arginine." [PubMed:10094780, PubMed:23103944, PubMed:786730, RESID:AA0601] synonym: "(2S,3R)-2-amino-5-[(diaminomethylidene)amino]-3-hydroxypentanoic acid" EXACT RESID-systematic [] synonym: "(3R)-3-hydroxy-L-arginine" EXACT RESID-name [] synonym: "2-amino-5-(carbamimidamido)-3-hydroxypentanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-5-[(aminoiminomethyl)amino]-3-hydroxypentanoic acid [tautomer]" EXACT RESID-alternate [] synonym: "2-amino-5-guanidino-3-hydroxypentanoic acid" EXACT RESID-alternate [] synonym: "beta-hydroxyarginine" EXACT RESID-alternate [] synonym: "C(beta)-hydroxyarginine" EXACT RESID-alternate [] synonym: "MOD_RES (3R)-3-hydroxyarginine" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 6 H 12 N 4 O 2" xref: MassAvg: "172.19" xref: MassMono: "172.096026" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0476" is_a: MOD:00682 ! hydroxylated arginine [Term] id: MOD:01957 name: 2-hydroxyproline def: "A protein modification that effectively converts an L-proline residue to 2-hydroxyproline." [PubMed:23385463, RESID:AA0602, ChEBI:141809] synonym: "(2R)-2-hydroxypyrrolidine-2-carboxylic acid" EXACT RESID-systematic [] synonym: "2-hydroxyproline" EXACT RESID-name [] synonym: "2-oxidanylpyrrolidine-2-carboxylic acid" EXACT RESID-alternate [] synonym: "alpha-hydroxyproline" EXACT RESID-alternate [] synonym: "MOD_RES 2-hydroxyproline" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 7 N 1 O 2" xref: MassAvg: "113.12" xref: MassMono: "113.047678" xref: Origin: "P" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0668" is_a: MOD:01024 ! monohydroxylated proline [Term] id: MOD:01958 name: bis-L-cysteinyl bisglutathion-S-yl diiron disulfide def: "A protein modification that effectively converts four L-cysteine residues and a two-iron two-sulfur cluster to bis-L-cysteinyl bisglutathion-S-yl diiron disulfide." [PubMed:17121859, RESID:AA0603] comment: Cross-link 2. synonym: "bis-L-cysteinyl bisglutathion-S-yl diiron disulfide" EXACT RESID-name [] synonym: "di-mu-sulfido-bis(cysteinato)-1kappaS,2kappaS-bis(glutathionato)-1kappaS,2kappaS-diiron" EXACT RESID-systematic [] synonym: "mitochondrial glutaredoxin 2 dimer iron-sulfur cluster" EXACT RESID-alternate [] synonym: "plant glutaredoxin C1 dimer iron-sulfur cluster" EXACT RESID-alternate [] xref: DiffAvg: "786.42" xref: DiffFormula: "C 20 Fe 2 H 30 N 6 O 12 S 4" xref: DiffMono: "785.950329" xref: Formula: "C 26 Fe 2 H 40 N 8 O 14 S 6" xref: MassAvg: "992.70" xref: MassMono: "991.968699" xref: Origin: "C, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue [Term] id: MOD:01959 name: tris-L-cysteinyl L-glutamato tetrairon tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-glutamic acid and a four-iron four-sulfur cluster to tris-L-cysteinyl L-glutamato tetrairon tetrasulfide." [PubMed:21167158, RESID:AA0604] comment: Cross-link 4. synonym: "tris-L-cysteinyl L-glutamato tetrairon tetrasulfide" EXACT RESID-name [] synonym: "tris-mu3-sulfido-tris(cysteinato)-1kappaS,2kappaS,3kappaS-glutamato-4kappaO(5),4kappaO(5')-tetrairon" EXACT RESID-systematic [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.596734" xref: Formula: "C 14 Fe 4 H 18 N 4 O 6 S 7" xref: MassAvg: "786.12" xref: MassMono: "785.666881" xref: Origin: "C, C, C, E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02068 ! metal or metal cluster coordinated L-glutamic acid residue [Term] id: MOD:01960 name: tris-L-cysteinyl L-glutamin-O6-yl tetrairon tetrasulfide def: "A protein modification that effectively converts three L-cysteine residues, an L-glutamine residue and a four-iron four-sulfur cluster to tris-L-cysteinyl L-glutamin-O6-yl tetrairon tetrasulfide." [PubMed:11796730, RESID:AA0605] comment: Cross-link 4. synonym: "METAL Iron-sulfur (4Fe-4S)" EXACT UniProt-feature [] synonym: "tris-L-cysteinyl L-glutamin-O6-yl tetrairon tetrasulfide" EXACT RESID-name [] synonym: "tris-mu3-sulfido-tris(cysteinato)-1kappaS,2kappaS,3kappaS-glutaminato-4kappaN(5)-tetrairon" EXACT RESID-systematic [] xref: DiffAvg: "347.59" xref: DiffFormula: "C 0 Fe 4 H -4 N 0 O 0 S 4" xref: DiffMono: "347.596734" xref: Formula: "C 14 Fe 4 H 19 N 5 O 5 S 7" xref: MassAvg: "785.14" xref: MassMono: "784.682866" xref: Origin: "C, C, C, Q" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00739 ! iron-sulfur cluster containing modification is_a: MOD:02067 ! metal or metal cluster coordinated L-cysteine residue is_a: MOD:02069 ! metal or metal cluster coordinated L-glutamine residue [Term] id: MOD:01961 name: O-(L-isoglutamyl)-L-threonine (THR) def: "OBSOLETE because redundant and identical to MOD:01785. Remap to MOD:01785." [PubMed:16618936, PubMed:17051152, PubMed:17687277, PubMed:18555071, RESID:AA0536#THR] synonym: "(2S)-2-amino-5-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-2-amino-3-([(4S)-4-amino-4-carboxybutanoyl]oxy)-propanoic acid" EXACT RESID-alternate [] synonym: "5-(threon-O3-yl)glutamate" EXACT RESID-alternate [] synonym: "O(beta)-(gamma-glutamyl)threonine" EXACT RESID-alternate [] synonym: "O-(L-isoglutamyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(isoglutamyl)threonine" EXACT RESID-alternate [] xref: DiffAvg: "129.12" xref: DiffFormula: "C 5 H 7 N 1 O 3" xref: DiffMono: "129.042593" xref: Formula: "C 9 H 14 N 2 O 5" xref: MassAvg: "230.22" xref: MassMono: "230.090272" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:01785" is_obsolete: true [Term] id: MOD:01962 name: N4-(2,4-diacetamido-2,4,6-trideoxy-D-glucosyl)-L-asparagine def: "A protein modification that effectively converts an L-asparagine residue to N4-(2,4-diacetamido-2,4,6-trideoxy-D-glucosyl)-L-asparagine." [PubMed:12186869, PubMed:19236052, RESID:AA0606] synonym: "(2S)-2-amino-4-[(2,4-diacetylamino-2,4,6-trideoxy-beta-D-glucopyranosyl)amino]-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "DABA" EXACT RESID-alternate [] synonym: "DATDH" EXACT RESID-alternate [] synonym: "DiNAcBac" EXACT RESID-alternate [] synonym: "N4-(2,4-diacetamido-2,4,6-trideoxy-D-glucosyl)-L-asparagine" EXACT RESID-name [] synonym: "N4-[2,4-bis(acetylamino)-2,4,6-trideoxy-beta-D-glucopyranosyl]-L-asparagine" EXACT RESID-alternate [] synonym: "N4-[N,N-diacetylbacillosaminyl]asparagine" EXACT RESID-alternate [] synonym: "N4-[N2,N4-diacetylbacillosaminyl]asparagine" EXACT RESID-alternate [] synonym: "CARBOHYD N-linked (DATDGlc) asparagine" EXACT UniProt-feature [] xref: DiffAvg: "228.25" xref: DiffFormula: "C 10 H 16 N 2 O 4" xref: DiffMono: "228.111007" xref: Formula: "C 14 H 22 N 4 O 6" xref: MassAvg: "342.35" xref: MassMono: "342.153934" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0506" is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:01963 name: O-(2,4-diacetamido-2,4,6-trideoxy-D-glucosyl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(2,4-diacetamido-2,4,6-trideoxy-D-glucosyl)-L-serine." [PubMed:23030644, RESID:AA0607] synonym: "(2S)-2-amino-4-[(2,4-diacetamido-2,4,6-trideoxy-beta-D-glucopyranosyl)oxy]propanoic acid" EXACT RESID-systematic [] synonym: "DABA" EXACT RESID-alternate [] synonym: "DATDH" EXACT RESID-alternate [] synonym: "DiNAcBac" EXACT RESID-alternate [] synonym: "O-(2,4-diacetamido-2,4,6-trideoxy-D-glucosyl)-L-serine" EXACT RESID-name [] synonym: "O-[2,4-bis(acetylamino)-2,4,6-trideoxy-beta-D-glucopyranosyl]-L-serine" EXACT RESID-alternate [] synonym: "O-[N,N-diacetylbacillosaminyl]serine" EXACT RESID-alternate [] synonym: "O-[N2,N4-diacetylbacillosaminyl]serine" EXACT RESID-alternate [] synonym: "CARBOHYD O-linked (DATDGlc) serine" EXACT UniProt-feature [] xref: DiffAvg: "228.25" xref: DiffFormula: "C 10 H 16 N 2 O 4" xref: DiffMono: "228.111007" xref: Formula: "C 13 H 21 N 3 O 6" xref: MassAvg: "315.33" xref: MassMono: "315.143035" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0548" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:01964 name: O-(2-acetamido-4-glyceramido-2,4,6-trideoxy-D-glucosyl)-L-serine def: "A protein modification that effectively converts an L-serine residue to O-(2-acetamido-4-glyceramido-2,4,6-trideoxy-D-glucosyl)-L-serine." [PubMed:17804791, RESID:AA0608] synonym: "(2S)-2-amino-3-[(2-acetamido-4-glycerylamino-2,4,6-trideoxy-D-glucopyranosyl)oxy]propanoic acid" EXACT RESID-systematic [] synonym: "GATDH" EXACT RESID-alternate [] synonym: "O-(2-acetamido-4-glyceramido-2,4,6-trideoxy-D-glucopyranosyl)-L-serine" EXACT RESID-alternate [] synonym: "O-(2-acetamido-4-glyceramido-2,4,6-trideoxy-D-glucosyl)-L-serine" EXACT RESID-name [] synonym: "O-(N2-acetyl-N4-glycerylbacillosaminyl)-L-serine" EXACT RESID-alternate [] synonym: "CARBOHYD O-linked (GATDGlc) serine" EXACT UniProt-feature [] xref: DiffAvg: "274.27" xref: DiffFormula: "C 11 H 18 N 2 O 6" xref: DiffMono: "274.116486" xref: Formula: "C 14 H 23 N 3 O 8" xref: MassAvg: "361.35" xref: MassMono: "361.148515" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0549" is_a: MOD:00002 ! O-glycosyl-L-serine [Term] id: MOD:01965 name: 2xC(13),3x(2)H labeled N6-acetyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to 2xC(13),3x(2)H labeled N6-acetyl-L-lysine." [PubMed:18688235] synonym: "Acetate labeling reagent (K) (heavy form, +5amu)" EXACT PSI-MOD-alternate [] synonym: "COFRADIC heavy acetyl 13C2 2H3" EXACT PSI-MOD-alternate [] xref: DiffAvg: "47.04" xref: DiffFormula: "(13)C 2 (1)H -1 (2)H 3 O 1" xref: DiffMono: "47.036105" xref: Formula: "(12)C 6 (13)C 2 (1)H 11 (2)H 3 N 2 O 2" xref: MassAvg: "175.13" xref: MassMono: "175.131068" xref: Origin: "K" xref: Source: "artifact" xref: TermSpec: "none" relationship: derives_from MOD:00064 ! N6-acetyl-L-lysine is_a: MOD:01428 ! (13)C isotope tagged reagent is_a: MOD:01431 ! (2)H deuterium tagged reagent [Term] id: MOD:01966 name: L-methionine (R)-sulfoxide def: "OBSOLETE because redundant and identical to MOD:00720. Remap to MOD:00720." [ChEBI:45764, PubMed:21406390, PubMed:22116028, PubMed:23911929, RESID:AA0581] synonym: "(2S)-2-amino-4-[(R)-methylsulfinyl]butanoic acid" EXACT RESID-systematic [] synonym: "L-methionine (R)-S-oxide" EXACT RESID-alternate [] synonym: "L-methionine (R)-sulfoxide" EXACT RESID-name [] synonym: "MOD_RES Methionine (R)-sulfoxide" EXACT UniProt-feature [] xref: DiffAvg: "16.00" xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0" xref: DiffMono: "15.994915" xref: Formula: "C 5 H 9 N 1 O 2 S 1" xref: MassAvg: "147.19" xref: MassMono: "147.035400" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "none" xref: Remap: "MOD:00720" is_obsolete: true [Term] id: MOD:01967 name: omega-N-(N-acetylamino)glucosyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to omega-N-(N-acetylamino)glucosyl-L-arginine." [PubMed:23955153, RESID:AA0609] synonym: "(2S)-2-amino-5-[(amino[(2-N-acetylamino-2-deoxy-D-glucopyranosyl)amino]methylidene)amino]pentanoic acid" EXACT RESID-systematic [] synonym: "N(omega)-(2-acetamido-2-deoxy-D-glucopyranosyl)-L-arginine" EXACT RESID-alternate [] synonym: "N(omega)-(2-acetylamino-2-deoxy-D-glucopyranosyl)-L-arginine" EXACT RESID-alternate [] synonym: "N(omega)-(2-N-acetylaminoglucosyl)arginine" EXACT RESID-alternate [] synonym: "NG-(2-acetamido-2-deoxy-D-glucopyranosyl)-L-arginine" EXACT RESID-alternate [] synonym: "NG-(2-acetylamino-2-deoxy-D-glucopyranosyl)-L-arginine" EXACT RESID-alternate [] synonym: "NG-(2-N-acetylaminoglucosyl)arginine" EXACT RESID-alternate [] synonym: "omega-N-(2-acetamido-2-deoxy-D-glucopyranosyl)-L-arginine" EXACT RESID-alternate [] synonym: "omega-N-(2-acetylamino-2-deoxy-D-glucopyranosyl)-L-arginine" EXACT RESID-alternate [] synonym: "omega-N-(2-N-acetylaminoglucosyl)arginine" EXACT RESID-alternate [] synonym: "omega-N-(N-acetylamino)glucosyl-L-arginine" EXACT RESID-name [] synonym: "CARBOHYD N-linked (GlcNAc) arginine" EXACT UniProt-feature [] xref: DiffAvg: "203.19" xref: DiffFormula: "C 8 H 13 N 1 O 5" xref: DiffMono: "203.079373" xref: Formula: "C 14 H 25 N 5 O 6" xref: MassAvg: "359.38" xref: MassMono: "359.180484" xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0518" is_a: MOD:00448 ! mono-N-acetylaminoglucosylated residue is_a: MOD:01980 ! omega-N-glycosyl-L-arginine [Term] id: MOD:01968 name: (2R,3R,2'R)-3-methyllanthionine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-threonine residue by a thioether bond to form (2R,3R,2'R)-3-methyllanthionine." [PubMed:23314913, RESID:AA0610] comment: Cross-link 2. synonym: "(2R,3R)-2-amino-3-([(2R)-2-amino-2-carboxyethyl]sulfanyl)butanoic acid" EXACT RESID-systematic [] synonym: "(2R,3R,2'R)-2-amino-3-[(2-amino-2-carboxyethyl)thio]butanoic acid" EXACT RESID-alternate [] synonym: "(2R,3R,2'R)-3-methyllanthionine" EXACT RESID-name [] synonym: "(2R,3R,6R)-2,6-diamino-3-methyl-4-thiaheptanedioic acid" EXACT RESID-alternate [] synonym: "(2R,3R,6R)-3-methyllanthionine" EXACT RESID-alternate [] synonym: "2-azanyl-3-[(2-azanyl-2-carboxyethyl)sulfanyl]butanoic acid" EXACT RESID-alternate [] synonym: "3-methyl-L,L-lanthionine" EXACT RESID-alternate [] synonym: "cysteine-3-L-butyrine thioether" EXACT RESID-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 10 N 2 O 2 S 1" xref: MassAvg: "186.23" xref: MassMono: "186.046299" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01981 ! 3-methyllanthionine [Term] id: MOD:01969 name: S-(gamma-glutamyl-cysteinyl-glycyl)-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(gamma-glutamyl-cysteinyl-glycyl)-cysteine." [PubMed:9398217, RESID:AA0611] synonym: "(2S)-2-amino-5-([(2R)-1-([2-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-2-oxoethyl]amino)-1-oxo-3-sulfanylpropan-2-yl]amino)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "ACT_SITE S-(gamma-glutamyl-cysteinyl-glycyl)-cysteine intermediate" EXACT UniProt-feature [] synonym: "S-(gamma-glutamyl-cysteinyl-glycyl)-cysteine" EXACT RESID-name [] synonym: "S-(glutathion-1-yl)-L-cysteine" EXACT RESID-alternate [] xref: DiffAvg: "289.31" xref: DiffFormula: "C 10 H 15 N 3 O 5 S 1" xref: DiffMono: "289.073242" xref: Formula: "C 13 H 20 N 4 O 6 S 2" xref: MassAvg: "392.44" xref: MassMono: "392.082426" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00860 ! sulfur containing modified residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01970 name: 5-glutamyl glutamic acid def: "A protein modification that effectively converts an L-glutamic acid residue to 5-glutamyl glutamic acid, forming an isopeptide bond with a free glutamic acid." [PubMed:10747868, PubMed:15525938, PubMed:1680872, PubMed:23434852, RESID:AA0612, Unimod:450] synonym: "(2S)-2-([(4S)-4-amino-4-carboxybutanoyl]amino)pentanedioic acid" EXACT RESID-systematic [] synonym: "(2S)-2-[(4S)-4-amino-4-carboxybutanamido]pentanedioic acid" EXACT RESID-alternate [] synonym: "2-([4-azanyl-4-carboxybutanoyl]azanyl)pentanedioic acid" EXACT RESID-alternate [] synonym: "5-glutamyl glutamic acid" EXACT RESID-name [] synonym: "gamma-glutamylglutamate" EXACT RESID-alternate [] synonym: "Glu" RELATED Unimod-interim [] synonym: "isoglutamyl glutamic acid" EXACT RESID-alternate [] synonym: "isoglutamyl monoglutamic acid" EXACT RESID-alternate [] synonym: "MOD_RES 5-glutamyl glutamate" EXACT UniProt-feature [] synonym: "monoglutamyl" RELATED Unimod-description [] synonym: "N alpha -(gamma-Glutamyl)-Glu" EXACT DeltaMass-label [] synonym: "N-(gamma-L-glutamyl)-L-glutamic acid" EXACT RESID-alternate [] xref: DiffAvg: "129.12" xref: DiffFormula: "C 5 H 7 N 1 O 3" xref: DiffMono: "129.042593" xref: Formula: "C 10 H 14 N 2 O 6" xref: MassAvg: "258.23" xref: MassMono: "258.085186" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:450" xref: UniProt: "PTM-0479" is_a: MOD:00207 ! L-isoglutamyl-polyglutamic acid [Term] id: MOD:01971 name: 5-glutamyl N2-ornithine def: "A protein modification that effectively converts an L-glutamic acid residue to N2-ornithine." [PubMed:23434852, RESID:AA0613, ChEBI:136763] synonym: "(2S)-5-amino-2-([(4S)-4-amino-4-carboxybutanoyl]amino)pentanoic acid" EXACT RESID-alternate [] synonym: "(2S)-5-amino-2-[(4S)-4-amino-4-carboxybutanamido]pentanoic acid" EXACT RESID-systematic [] synonym: "4-amino-5-[(4-amino-1-carboxy-butyl)amino]-5-ketovaleric acid" EXACT RESID-alternate [] synonym: "4-amino-5-[(4-amino-1-carboxy-butyl)amino]-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "5-glutamyl N2-ornithine" EXACT RESID-name [] synonym: "gamma-glutamylornithine" EXACT RESID-alternate [] synonym: "MOD_RES 5-glutamyl N2-ornithine" EXACT UniProt-feature [] synonym: "N2-(gamma-glutamyl)ornithine" EXACT RESID-alternate [] synonym: "N2-(L-isoglutamyl)-L-ornithine" EXACT RESID-alternate [] xref: DiffAvg: "114.15" xref: DiffFormula: "C 5 H 10 N 2 O 1" xref: DiffMono: "114.079313" xref: Formula: "C 10 H 17 N 3 O 4" xref: MassAvg: "243.26" xref: MassMono: "243.121906" xref: Origin: "E" xref: Source: "hypothetical" xref: TermSpec: "none" xref: UniProt: "PTM-0478" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01972 name: 5-glutamyl coenzyme A thioester def: "A protein modification that effectively converts an L-glutamic acid residue to 5-glutamyl coenzyme A thioester." [PubMed:16253988, PubMed:20977214, PubMed:7915164, RESID:AA0614] synonym: "(2S)-2-amino-5-(2-[([3-([(2R)-2-hydroxy-3,3-dimethyl-4-([3'-phospho-adenosyl-5'-diphosphoryl]-oxy)-butanoyl]-amino)-propanoyl]-amino)-ethyl]-sulfanyl)-5-oxopentanoic acid" EXACT RESID-alternate [] synonym: "(2S)-2-amino-5-([2-(3-[(2R)-2-hydroxy-3,3-dimethyl-4-([3'-phospho-adenosyl-5'-diphosphoryl]-oxy)-butanamido]-propanamido)-ethyl]-sulfanyl)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "5-glutamyl 4-[(3'-phospho-adenosyl-5'-diphosphoryl)oxy]pantetheine thioester" EXACT RESID-alternate [] synonym: "5-glutamyl coenzyme A thioester" EXACT RESID-name [] synonym: "5-glutamyl coenzyme A thioester intermediate" EXACT UniProt-feature [] xref: DiffAvg: "749.52" xref: DiffFormula: "C 21 H 34 N 7 O 15 P 3 S 1" xref: DiffMono: "749.104644" xref: Formula: "C 26 H 41 N 8 O 18 P 3 S 1" xref: MassAvg: "878.63" xref: MassMono: "878.147237" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00860 ! sulfur containing modified residue is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:01973 name: N6-(3-phosphoglyceryl)-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-(3-phosphoglyceryl)-L-lysine." [PubMed:23908237, RESID:AA0615] synonym: "(2S)-2-amino-6-([(2R)-2-hydroxy-3-(phosphonooxy)propanoyl]amino)hexanoic acid" EXACT RESID-alternate [] synonym: "(2S)-2-amino-6-[(2R)-2-hydroxy-3-(phosphonooxy)propanamido]hexanoic acid" EXACT RESID-systematic [] synonym: "3-phosphoglyceryl-lysine" EXACT RESID-alternate [] synonym: "N6-(3-phosphoglyceryl)-L-lysine" EXACT RESID-name [] xref: DiffAvg: "168.04" xref: DiffFormula: "C 3 H 5 N 0 O 6 P 1" xref: DiffMono: "167.982375" xref: Formula: "C 9 H 17 N 2 O 7 P 1" xref: MassAvg: "296.22" xref: MassMono: "296.077338" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00861 ! phosphorus containing modified residue is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:01974 name: S-methyl-L-methionine def: "A protein modification that effectively converts an L-methionine residue to S-methyl-L-methionine." [ChEBI:17728, PubMed:23532849, RESID:AA0616] synonym: "(2S)-2-amino-4-(dimethylsulfonio)butanoate" EXACT RESID-alternate [] synonym: "(3S)-(3-amino-3-carboxypropyl)dimethylsulfanium" EXACT RESID-systematic [] synonym: "[(3S)-3-amino-3-carboxypropyl](dimethyl)sulfonium" EXACT RESID-alternate [] synonym: "S-methyl-L-methionine" EXACT RESID-name [] synonym: "S-methylmethionine" EXACT RESID-alternate [] synonym: "S-methylmethioninium" EXACT RESID-alternate [] synonym: "vitamin U" EXACT RESID-alternate [] xref: DiffAvg: "15.03" xref: DiffFormula: "C 1 H 3 N 0 O 0 S 0" xref: DiffMono: "15.022927" xref: FormalCharge: "1+" xref: Formula: "C 6 H 12 N 1 O 1 S 1" xref: MassAvg: "146.23" xref: MassMono: "146.063411" xref: Origin: "M" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0636" is_a: MOD:00716 ! methylated methionine [Term] id: MOD:01975 name: S-poly(3-hydroxybutyrate)-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to S-(poly-3-hydroxybutyrate)-L-cysteine." [PubMed:19711985, PubMed:9888824, RESID:AA0617] synonym: "(alpha)-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-(omega)-[(3R)-3-hydroxybutanoyl]-poly([(3R)-3-methyl-1-oxopropane-1,3-diyl]oxy)" EXACT RESID-systematic [] synonym: "S-poly(3-hydroxybutanoate)cysteine" EXACT RESID-alternate [] synonym: "S-poly(3-hydroxybutanoic acid)cysteine" EXACT RESID-alternate [] synonym: "S-poly(3-hydroxybutyrate)-L-cysteine" EXACT RESID-name [] synonym: "S-poly(3-hydroxybutyrate)cysteine" EXACT RESID-alternate [] synonym: "S-poly(3-hydroxybutyric acid)cysteine" EXACT RESID-alternate [] synonym: "S-poly(beta-hydroxybutyrate)cysteine" EXACT RESID-alternate [] synonym: "S-poly[(R)-3-hydroxybutyrate]cysteine" EXACT RESID-alternate [] synonym: "MOD_RES S-poly(beta-hydroxybutyryl)lysine" EXACT UniProt-feature [] xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0641" is_a: MOD:00672 ! S-acylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:01976 name: O3-(poly-3-hydroxybutyrate)-L-serine def: "A protein modification that effectively converts an L-serine residue to O3-(poly-3-hydroxybutyrate)-L-serine." [PubMed:17659252, PubMed:20004640, RESID:AA0618] subset: PSI-MOD-slim synonym: "(2S)-2-amino-3-[([(3R)-3-hydroxybutanoyl]oxy)-poly([(3R)-3-methyl-1-oxopropane-1,3-diyl]oxy)]propanoic acid" EXACT RESID-systematic [] synonym: "O3-(poly-3-hydroxybutyrate)-L-serine" EXACT RESID-name [] synonym: "O3-poly(3-hydroxybutanoate)serine" EXACT RESID-alternate [] synonym: "O3-poly(3-hydroxybutanoic acid)serine" EXACT RESID-alternate [] synonym: "O3-poly(3-hydroxybutyrate)serine" EXACT RESID-alternate [] synonym: "O3-poly(3-hydroxybutyric acid)serine" EXACT RESID-alternate [] synonym: "O3-poly(beta-hydroxybutyrate)serine" EXACT RESID-alternate [] synonym: "O3-poly[(R)-3-hydroxybutyrate]serine" EXACT RESID-alternate [] synonym: "MOD_RES O3-poly(beta-hydroxybutyryl)lysine" EXACT UniProt-feature [] xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0640" is_a: MOD:00671 ! O-acylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:01977 name: O-(L-isoglutamyl)-L-serine def: "A protein modification that effectively crosslinks either an L-glutamine residue or an L-glutamic acid residue with an L-serine residue by an ester bond to form O-(L-isoglutamyl)-L-serine." [PubMed:17051152, RESID:AA0597] comment: Cross-link 2. synonym: "(2S)-2-amino-5-[(2S)-2-amino-2-carboxyethoxy]-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "O(beta)-(gamma-glutamyl)serine" EXACT RESID-alternate [] synonym: "O-(L-isoglutamyl)-L-serine" EXACT RESID-name [] synonym: "O3-(isoglutamyl)-serine" EXACT RESID-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 8 H 10 N 2 O 4" xref: MassAvg: "198.18" xref: MassMono: "198.064057" xref: Origin: "S, X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:00885 ! ester crosslinked residues is_a: MOD:02055 ! crosslinked L-serine residue [Term] id: MOD:01978 name: O-(L-isoaspartyl)-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-(L-isoaspartyl)-L-threonine, using either free L-asparagine and releasing ammonia or using a peptidyl L-aspartic acid residue and releasing water." [PubMed:8706862, RESID:AA0525] comment: This is a threonine active intermediate and not an ester cross-link of peptides [JSG]. synonym: "(2S)-2-amino-4-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-2-amino-3-([(4S)-3-amino-3-carboxypropanoyl]oxy)propanoic acid" EXACT RESID-alternate [] synonym: "O(beta)-(beta-aspartyl)threonine" EXACT RESID-alternate [] synonym: "O-(L-isoaspartyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(isoaspartyl)-threonine" EXACT RESID-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 8 H 12 N 2 O 5" xref: MassAvg: "216.19" xref: MassMono: "216.074621" xref: Origin: "T, X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:02056 ! crosslinked L-threonine residue [Term] id: MOD:01979 name: O-(L-isoglutamyl)-L-threonine def: "A protein modification that effectively converts an L-threonine residue to O-(L-isoglutamyl)-L-threonine, using free L-glutamine and releasing ammonia, or using a peptidyl L-glutamine and releasing ammonia." [PubMed:8706862, RESID:AA0536] comment: This is not an ester cross-link of peptides [JSG]. synonym: "(2S)-2-amino-5-([(1S,2R)-1-amino-1-carboxypropan-2-yl]oxy)-5-oxopentanoic acid" EXACT RESID-systematic [] synonym: "(2S,3R)-2-amino-3-([(4S)-4-amino-4-carboxybutanoyl]oxy)-propanoic acid" EXACT RESID-alternate [] synonym: "5-(threon-O3-yl)glutamate" EXACT RESID-alternate [] synonym: "O(beta)-(gamma-glutamyl)threonine" EXACT RESID-alternate [] synonym: "O-(L-isoglutamyl)-L-threonine" EXACT RESID-name [] synonym: "O3-(isoglutamyl)threonine" EXACT RESID-alternate [] xref: DiffAvg: "none" xref: DiffFormula: "none" xref: DiffMono: "none" xref: Formula: "C 9 H 14 N 2 O 5" xref: MassAvg: "230.22" xref: MassMono: "230.090272" xref: Origin: "T, X" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:00859 ! modified residue that can arise from different natural residues is_a: MOD:02056 ! crosslinked L-threonine residue [Term] id: MOD:01980 name: omega-N-glycosyl-L-arginine def: "A protein modification that effectively converts an L-arginine residue to N4-glycosyl-arginine." [PubMed:15279557, PubMed:8521968, PubMed:9536051, RESID:AA0327, Unimod:41#R] synonym: "(2S)-2-amino-5-(beta-D-glucopyranosyl[imino(methylamino)methyl]amino)pentanoic acid" EXACT RESID-systematic [] synonym: "Hex" RELATED PSI-MS-label [] synonym: "Hexose" RELATED Unimod-description [] synonym: "NG-beta-D-glucosylarginine" EXACT RESID-alternate [] synonym: "omega-N-(beta-D-glucosyl)-L-arginine" EXACT RESID-alternate [] synonym: "omega-N-glucosyl-L-arginine" EXACT RESID-name [] synonym: "omega-N-glycosyl-L-arginine" EXACT RESID-alternate [] xref: Origin: "R" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:41" is_a: MOD:00006 ! N-glycosylated residue is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:01981 name: 3-methyllanthionine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-threonine residue by a thioether bond to form 3-methyllanthionine with unresolved stereospecificity." [PubMed:18688235] comment: Cross-link 2. synonym: "2,6-diamino-3-methyl-4-thiaheptanedioic acid" EXACT PSI-MOD-alternate [] synonym: "2-amino-3-([2-amino-2-carboxyethyl]sulfanyl)butanoic acid" EXACT PSI-MOD-alternate [] synonym: "2-amino-3-[(2-amino-2-carboxyethyl)thio]butanoic acid" EXACT PSI-MOD-alternate [] synonym: "2-azanyl-3-[(2-azanyl-2-carboxyethyl)sulfanyl]butanoic acid" EXACT PSI-MOD-alternate [] synonym: "3-methyllanthionine" EXACT PSI-MOD-alternate [] synonym: "cysteine-3-L-butyrine thioether" EXACT PSI-MOD-alternate [] xref: DiffAvg: "-18.02" xref: DiffFormula: "C 0 H -2 N 0 O -1 S 0" xref: DiffMono: "-18.010565" xref: Formula: "C 7 H 10 N 2 O 2 S 1" xref: MassAvg: "186.23" xref: MassMono: "186.046299" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:00954 ! crosslinked residues with loss of water is_a: MOD:01993 ! beta-carbon thioether crosslinked residues [Term] id: MOD:01982 name: N,N,N-trimethylglycine def: "modification from RESID" [ChEBI:17750, PubMed:23818633, PubMed:23978223, RESID:AA0619] subset: PSI-MOD-slim synonym: "(trimethylammonio)ethanoic acid" EXACT RESID-alternate [] synonym: "1-carboxy-N,N,N-trimethylmethanazanium" EXACT RESID-alternate [] synonym: "2-trimethylammonioacetate" EXACT RESID-alternate [] synonym: "betaine" EXACT RESID-alternate [] synonym: "carboxy-N,N,N-trimethylmethanaminium" EXACT RESID-systematic [] synonym: "carboxymethyl-trimethylazanium" EXACT RESID-alternate [] synonym: "glycine betaine" EXACT RESID-alternate [] synonym: "MOD_RES N,N,N-trimethylglycine" EXACT UniProt-feature [] synonym: "N,N,N-trimethylglycine cation" EXACT RESID-alternate [] synonym: "N,N,N-trimethylglycinium" EXACT RESID-alternate [] synonym: "N2Me3+Gly" EXACT PSI-MOD-label [] xref: DiffAvg: "43.09" xref: DiffFormula: "C 3 H 7 N 0 O 0" xref: DiffMono: "43.054775" xref: FormalCharge: "1+" xref: Formula: "C 5 H 11 N 1 O 1" xref: MassAvg: "101.15" xref: MassMono: "101.084064" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0485" is_a: MOD:00714 ! methylated glycine is_a: MOD:01698 ! alpha-amino trimethylated protonated-residue [Term] id: MOD:01983 name: N,N-dimethylglycine def: "A protein modification that effectively converts a glycine residue to N,N-dimethyllglycine." [ChEBI:17724, PubMed:23818633, PubMed:23978223, RESID:AA0620] synonym: "(dimethylamino)ethanoic acid" EXACT RESID-systematic [] synonym: "1-carboxy-N,N-dimethylaminomethane" EXACT RESID-alternate [] synonym: "2-(dimethylamino)acetic acid" EXACT RESID-alternate [] synonym: "MOD_RES N,N-dimethylglycine" EXACT UniProt-feature [] synonym: "vitamin B16" EXACT RESID-alternate [] xref: DiffAvg: "28.05" xref: DiffFormula: "C 2 H 4 N 0 O 0" xref: DiffMono: "28.031300" xref: Formula: "C 4 H 8 N 1 O 1" xref: MassAvg: "86.11" xref: MassMono: "86.060589" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" xref: UniProt: "PTM-0484" is_a: MOD:00714 ! methylated glycine is_a: MOD:01686 ! alpha-amino dimethylated residue [Term] id: MOD:01984 name: 2-(L-cystein-S-yl)-L-alanine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-alanine residue by a thioether bond to form 2-(S-L-cysteinyl)-L-alanine." [PubMed:21526839, RESID:AA0621] comment: Cross-link 2. synonym: "(2R)-2-amino-2-[(2R)-2-amino-2-carboxyethyl]sulfanyl-3-hydroxybutanoic acid" EXACT RESID-systematic [] synonym: "(2R,5R)-2,5-diamino-5-methyl-4-thiahexanedioic acid" EXACT RESID-alternate [] synonym: "alpha-(L-cystein-S-yl)-L-alanine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 2 S 1" xref: MassAvg: "172.20" xref: MassMono: "172.030649" xref: Origin: "A, C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02040 ! crosslinked L-alanine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:01985 name: 2-(L-cystein-S-yl)-D-asparagine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-asparagine residue by a thioether bond to form 2-(S-L-cysteinyl)-D-asparagine." [PubMed:21786372, RESID:AA0622] comment: Cross-link 2. synonym: "(2S)-2,4-diamino-2-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-4-oxobutanoic acid" EXACT RESID-systematic [] synonym: "alpha-(L-cystein-S-yl)-D-asparagine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 7 H 9 N 3 O 3 S 1" xref: MassAvg: "215.23" xref: MassMono: "215.036462" xref: Origin: "C, N" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:02060 ! crosslinked D-asparagine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:01986 name: 2-(L-cystein-S-yl)-L-serine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-serine residue by a thioether bond to form 2-(S-L-cysteinyl)-L-serine." [PubMed:21526839, RESID:AA0623] comment: Cross-link 2. synonym: "(2R)-2-amino-2-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-3-hydroxypropanoic acid" EXACT RESID-systematic [] synonym: "(2R,5R)-2,5-diamino-5-carboxy-6-hydroxy-4-thiahexanoic acid" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 3 S 1" xref: MassAvg: "188.20" xref: MassMono: "188.025563" xref: Origin: "C, S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02055 ! crosslinked L-serine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:01987 name: 2-(L-cystein-S-yl)-D-serine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-serine residue by a thioether bond to form 2-(S-L-cysteinyl)-D-serine." [PubMed:21786372, RESID:AA0624] comment: Cross-link 2. synonym: "(2R,5S)-2,5-diamino-5-carboxy-6-hydroxy-4-thiahexanoic acid" EXACT RESID-alternate [] synonym: "(2S)-2-amino-2-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-3-hydroxypropanoic acid" EXACT RESID-systematic [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 6 H 8 N 2 O 3 S 1" xref: MassAvg: "188.20" xref: MassMono: "188.025563" xref: Origin: "C, S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:02064 ! crosslinked D-serine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:01988 name: 2-(L-cystein-S-yl)-L-threonine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-threonine residue by a thioether bond to form 2-(S-L-cysteinyl)-L-threonine." [PubMed:21526839, RESID:AA0625] comment: Cross-link 2. synonym: "(2R,3R)-2-amino-2-[(2R)-2-amino-2-carboxyethyl]sulfanyl-3-hydroxybutanoic acid" EXACT RESID-systematic [] synonym: "(2R,5R,6R)-2,5-diamino-5-carboxy-6-hydroxy-4-thiaheptanoic acid" EXACT RESID-alternate [] synonym: "alpha-(L-cystein-S-yl)-L-threonine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 7 H 10 N 2 O 3 S 1" xref: MassAvg: "202.23" xref: MassMono: "202.041213" xref: Origin: "C, T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02056 ! crosslinked L-threonine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:01989 name: 2-(L-cystein-S-yl)-D-tyrosine def: "A protein modification that effectively cross-links an L-cysteine residue and an L-tyrosine residue by a thioether bond to form 2-(S-L-cysteinyl)-D-tyrosine." [PubMed:21526839, RESID:AA0626] comment: Cross-link 2. synonym: "(2R,5S)-2,5-diamino-5-carboxyl-6-(hydroxyphenyl)-4-thiahexanoic acid" EXACT RESID-alternate [] synonym: "(2S)-2-amino-2-([(2R)-2-amino-2-carboxyethyl]sulfanyl)-3-(4-hydroxyphenyl)propanoic acid" EXACT RESID-systematic [] synonym: "alpha-(L-cystein-S-yl)-D-tyrosine" EXACT RESID-alternate [] xref: DiffAvg: "-2.02" xref: DiffFormula: "C 0 H -2 N 0 O 0 S 0" xref: DiffMono: "-2.015650" xref: Formula: "C 12 H 12 N 2 O 3 S 1" xref: MassAvg: "264.30" xref: MassMono: "264.056863" xref: Origin: "C, Y" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00664 ! stereoisomerized residue is_a: MOD:02058 ! crosslinked L-tyrosine residue is_a: MOD:01992 ! alpha-carbon thioether crosslinked residues [Term] id: MOD:01990 name: protonated glycine (glycinium) residue def: "A protein modification that effectively converts a glycine residue to a glycinium (protonated glycine)." [ChEBI:64723, PubMed:18688235] subset: PSI-MOD-slim xref: DiffAvg: "1.01" xref: DiffFormula: "C 0 H 1 N 0 O 0" xref: DiffMono: "1.007276" xref: FormalCharge: "1+" xref: Formula: "C 2 H 5 N 1 O 1" xref: MassAvg: "59.07" xref: MassMono: "59.036565" xref: Origin: "G" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:00908 ! modified glycine residue is_a: MOD:01700 ! alpha-amino protonated residue [Term] id: MOD:01991 name: N,N,N-trimethylglycine (from glycinium) def: "A protein modification that effectively converts a glycinium (protonated glycine) residue to an N,N,N-trimethylglycine." [ChEBI:17750, PubMed:23818633, PubMed:23978223, RESID:AA0619] comment: For amino acids residues, amine trimethylation can effectively only be accomplished with an aminium, protonated primary amino, group. This process accounts only for trimethylation and not protonation. The alternative N2Me3+Gly process (MOD:01982) accounts for both protonation and trimethylation. subset: PSI-MOD-slim synonym: "N2Me3Gly" EXACT PSI-MOD-label [] xref: DiffAvg: "42.08" xref: DiffFormula: "C 3 H 6 N 0 O 0" xref: DiffMono: "42.046402" xref: FormalCharge: "1+" xref: Formula: "C 5 H 11 N 1 O 1" xref: MassAvg: "101.15" xref: MassMono: "101.083515" xref: Origin: "MOD:01990" xref: Source: "natural" xref: TermSpec: "N-term" is_a: MOD:01687 ! alpha-amino trimethylated residue relationship: derives_from MOD:01990 ! protonated glycine (glycinium) residue [Term] id: MOD:01992 name: alpha-carbon thioether crosslinked residues def: "A protein modification that crosslinks two residues by formation of a thioether bond between a cysteine thiol and the alpha-carbon of another amino acid residue." [PubMed:18688235] is_a: MOD:00687 ! thioether crosslinked residues [Term] id: MOD:01993 name: beta-carbon thioether crosslinked residues def: "A protein modification that crosslinks two residues by formation of a thioether bond between a cysteine thiol and the beta-carbon of another amino acid residue." [PubMed:18688235] comment: These are typical lanthionine-like crosslinks. is_a: MOD:00687 ! thioether crosslinked residues [Term] id: MOD:01994 name: N1'-formyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to N1'-formyl-L-tryptophan." [PubMed:18688235] comment: This modifications has not been reported as commonly encountered [JSG]. synonym: "N1'FoTrp" EXACT PSI-MOD-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 12 H 10 N 2 O 2" xref: MassAvg: "214.22" xref: MassMono: "214.074228" xref: Origin: "W" xref: Source: "hypothetical" xref: TermSpec: "none" is_a: MOD:01106 ! N-formyl-L-tryptophan [Term] id: MOD:01995 name: N2-formyl-L-tryptophan def: "A protein modification that effectively converts an L-tryptophan residue to N2-formyl-L-tryptophan." [PubMed:18688235] comment: This modifications has not been reported as commonly encountered [JSG]. synonym: "N2FoTrp" EXACT PSI-MOD-label [] xref: DiffAvg: "28.01" xref: DiffFormula: "C 1 H 0 N 0 O 1" xref: DiffMono: "27.994915" xref: Formula: "C 12 H 11 N 2 O 2" xref: MassAvg: "215.23" xref: MassMono: "215.082053" xref: Origin: "W" xref: Source: "hypothetical" xref: TermSpec: "N-term" is_a: MOD:01106 ! N-formyl-L-tryptophan [Term] id: MOD:01996 name: butanoylated residue def: "A protein modification that effectively replaces a hydrogen atom with an butanoyl group." [PubMed:18688235] comment: Amino hydrogens are replaced to produce amides; hydroxyl hydrogens are replaced to produce esters; and hydrosulfanyl (thiol) hydrogens are replaced to produce sulfanyl esters (thiol esters). synonym: "ButRes" EXACT PSI-MOD-label [] synonym: "Butyryl" RELATED Unimod-interim [] synonym: "butyrylation" EXACT PSI-MOD-alternate [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 O 1" xref: DiffMono: "70.041865" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue [Term] id: MOD:01997 name: N-butanoylated residue def: "A protein modification that effectively replaces a residue amino or imino hydrogen with a butanoyl group." [PubMed:18688235] synonym: "N-butanoyl" EXACT PSI-MOD-alternate [] synonym: "N-butanoylation" EXACT PSI-MOD-alternate [] synonym: "N-butyryl" EXACT PSI-MOD-alternate [] synonym: "N-butyrylation" EXACT PSI-MOD-alternate [] synonym: "NButRes" EXACT PSI-MOD-label [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 N 0 O 1" xref: DiffMono: "70.041865" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:01996 ! butanoylated residue [Term] id: MOD:01998 name: alpha-amino butanoylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a butanoyl group." [PubMed:18688235] synonym: "N2ButRes" EXACT PSI-MOD-label [] xref: DiffAvg: "70.09" xref: DiffFormula: "C 4 H 6 N 0 O 1" xref: DiffMono: "70.041865" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "N-term" is_a: MOD:01997 ! N-butanoylated residue [Term] id: MOD:01999 name: N6-(11-cis)-retinylidene-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-retinylidene-(11-cis)-L-lysine." [PubMed:18688235] synonym: "(2S)-2-amino-6-[(2E,4Z,6E,8E)-3,7-dimethyl-9-(2,6,6-trimethylcyclohex-1-en-1-yl)-2,4,6,8-nonatetraenylidene]aminohexanoic acid" EXACT PSI-MOD-alternate [] xref: DiffAvg: "266.43" xref: DiffFormula: "C 20 H 26 N 0 O 0" xref: DiffMono: "266.203451" xref: Formula: "C 26 H 38 N 2 O 1" xref: MassAvg: "394.60" xref: MassMono: "394.298414" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02000 ! N6-retinylidene-L-lysine (unspecified geometric isomer) [Term] id: MOD:02000 name: N6-retinylidene-L-lysine (unspecified geometric isomer) def: "A protein modification that effectively converts an L-lysine residue to N6-retinylidene-L-lysine (unspecified geometric isomer)." [PubMed:18688235] synonym: "(2S)-2-amino-6-[3,7-dimethyl-9-(2,6,6-trimethylcyclohex-1-en-1-yl)-2,4,6,8-nonatetraenylidene]aminohexanoic acid" EXACT PSI-MOD-alternate [] xref: DiffAvg: "266.43" xref: DiffFormula: "C 20 H 26 N 0 O 0" xref: DiffMono: "266.203451" xref: Formula: "C 26 H 38 N 2 O 1" xref: MassAvg: "394.60" xref: MassMono: "394.298414" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:02001 name: stearoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a stearoyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "266.47" xref: DiffFormula: "C 18 H 34 O 1" xref: DiffMono: "266.260966" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:02002 name: S-palmitoleylated residue def: "A protein modification that effectively replaces a residue sulfanyl group with a palmitoleylsulfanyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1" xref: DiffMono: "236.214016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00672 ! S-acylated residue is_a: MOD:01423 ! palmitoleylated residue [Term] id: MOD:02003 name: O3-acylated L-serine def: "A protein modification that effectively replaces an O3-hydroxy hydrogen atom of L-serine with an acyl group." [] subset: PSI-MOD-slim xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00671 ! O-acylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:02004 name: O3-acylated L-threonine def: "A protein modification that effectively replaces an O3-hydroxy hydrogen atom of L-threonine with an acyl group." [] subset: PSI-MOD-slim xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00671 ! O-acylated residue is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:02005 name: S-acylated L-cysteine def: "A protein modification that effectively replaces an sulfanyl hydrogen atom of L-cysteine with an acyl group." [] subset: PSI-MOD-slim xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00672 ! S-acylated residue is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:02006 name: S-stearoylated residue def: "A protein modification that effectively replaces a residue sulfanyl group with a stearoylsulfanyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "266.47" xref: DiffFormula: "C 18 H 34 O 1" xref: DiffMono: "266.260966" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00672 ! S-acylated residue is_a: MOD:02001 ! stearoylated residue [Term] id: MOD:02007 name: N6-palmitoleyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-palmitoleyl-L-lysine." [] subset: PSI-MOD-slim xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1" xref: DiffMono: "236.214016" xref: Formula: "C 22 H 40 N 2 O 2" xref: MassAvg: "364.58" xref: MassMono: "364.308979" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:02008 ! N-palmitoleylated residue [Term] id: MOD:02008 name: N-palmitoleylated residue def: "A protein modification that effectively replaces a residue amino group with a palmitoleylamino group." [] subset: PSI-MOD-slim xref: DiffAvg: "236.40" xref: DiffFormula: "C 16 H 28 N 0 O 1" xref: DiffMono: "236.214016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:01423 ! palmitoleylated residue [Term] id: MOD:02009 name: N6-stearoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-stearoyl-L-lysine." [] subset: PSI-MOD-slim xref: DiffAvg: "266.47" xref: DiffFormula: "C 18 H 34 O 1" xref: DiffMono: "266.260966" xref: Formula: "C 24 H 46 N 2 O 2" xref: MassAvg: "394.65" xref: MassMono: "394.355929" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:02010 ! N-stearoylated residue [Term] id: MOD:02010 name: N-stearoylated residue def: "A protein modification that effectively replaces a residue amino group with a stearoylamino group." [] subset: PSI-MOD-slim xref: DiffAvg: "266.47" xref: DiffFormula: "C 18 H 34 O 1" xref: DiffMono: "266.260966" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:02001 ! stearoylated residue [Term] id: MOD:02011 name: N-oleoylated residue def: "A protein modification that effectively replaces a residue amino group with a oleoylamino group." [] subset: PSI-MOD-slim xref: DiffAvg: "264.45" xref: DiffFormula: "C 18 H 32 N 0 O 1" xref: DiffMono: "264.245316" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:02012 ! oleoylated residue [Term] id: MOD:02012 name: oleoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a oleoyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "264.45" xref: DiffFormula: "C 18 H 32 N 0 O 1" xref: DiffMono: "264.245316" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:02013 name: N6-linoloyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-linoloyl-L-lysine." [] subset: PSI-MOD-slim xref: DiffAvg: "262.45" xref: DiffFormula: "C 18 H 30 N 0 O 1" xref: DiffMono: "262.229666" xref: Formula: "C 24 H 42 N 2 O 2" xref: MassAvg: "390.63" xref: MassMono: "390.324629" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:02014 ! N-linoloylated residue [Term] id: MOD:02014 name: N-linoloylated residue def: "A protein modification that effectively replaces a residue amino group with a linoloylamino group." [] subset: PSI-MOD-slim xref: DiffAvg: "262.45" xref: DiffFormula: "C 18 H 30 N 0 O 1" xref: DiffMono: "262.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:02015 ! linoloylated residue [Term] id: MOD:02015 name: linoloylated residue def: "A protein modification that effectively replaces a hydrogen atom with a linoloyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "262.45" xref: DiffFormula: "C 18 H 30 N 0 O 1" xref: DiffMono: "262.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:02016 name: N6-arachidonoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-arachidonoyl-L-lysine." [] subset: PSI-MOD-slim xref: DiffAvg: "286.49" xref: DiffFormula: "C 20 H 30 N 0 O 1" xref: DiffMono: "286.229666" xref: Formula: "C 26 H 42 N 2 O 2" xref: MassAvg: "414.67" xref: MassMono: "414.324629" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:02017 ! N-arachidonoylated residue [Term] id: MOD:02017 name: N-arachidonoylated residue def: "A protein modification that effectively replaces a residue amino group with an arachidonoylamino group." [] subset: PSI-MOD-slim xref: DiffAvg: "286.49" xref: DiffFormula: "C 20 H 30 N 0 O 1" xref: DiffMono: "286.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:02018 ! arachidonoylated residue [Term] id: MOD:02018 name: arachidonoylated residue def: "A protein modification that effectively replaces a hydrogen atom with an arachidonoyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "286.49" xref: DiffFormula: "C 20 H 30 N 0 O 1" xref: DiffMono: "286.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:02019 name: N6-timnodonoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-timnodonoyl-L-lysine." [] subset: PSI-MOD-slim xref: DiffAvg: "284.48" xref: DiffFormula: "C 20 H 28 N 0 O 1" xref: DiffMono: "284.214016" xref: Formula: "C 26 H 40 N 2 O 2" xref: MassAvg: "412.66" xref: MassMono: "412.308979" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:02020 ! N-timnodonoylated residue [Term] id: MOD:02020 name: N-timnodonoylated residue def: "A protein modification that effectively replaces a residue amino group with a timnodonoylamino group." [] subset: PSI-MOD-slim xref: DiffAvg: "284.48" xref: DiffFormula: "C 20 H 28 N 0 O 1" xref: DiffMono: "284.214016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:02021 ! timnodonoylated residue [Term] id: MOD:02021 name: timnodonoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a timnodonoyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "284.48" xref: DiffFormula: "C 20 H 28 N 0 O 1" xref: DiffMono: "284.214016" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:02022 name: N6-cervonoyl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-cervonoyl-L-lysine." [] subset: PSI-MOD-slim xref: DiffAvg: "310.53" xref: DiffFormula: "C 22 H 30 N 0 O 1" xref: DiffMono: "310.229666" xref: Formula: "C 28 H 42 N 2 O 2" xref: MassAvg: "438.71" xref: MassMono: "438.324629" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:01875 ! N6-acylated L-lysine is_a: MOD:02023 ! N-cervonoylated residue [Term] id: MOD:02023 name: N-cervonoylated residue def: "A protein modification that effectively replaces a residue amino group with a cervonoylamino group." [] subset: PSI-MOD-slim xref: DiffAvg: "310.53" xref: DiffFormula: "C 22 H 30 N 0 O 1" xref: DiffMono: "310.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00670 ! N-acylated residue is_a: MOD:02024 ! cervonoylated residue [Term] id: MOD:02024 name: cervonoylated residue def: "A protein modification that effectively replaces a hydrogen atom with a cervonoyl group." [] subset: PSI-MOD-slim xref: DiffAvg: "310.53" xref: DiffFormula: "C 22 H 30 N 0 O 1" xref: DiffMono: "310.229666" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue is_a: MOD:01155 ! lipoconjugated residue [Term] id: MOD:02025 name: 5-glutaminyl glutamic acid def: "A protein modification that effectively converts the alpha amino group of a glutamine residue to glutaminyl glutamic acid by forming an isopeptide bond with the side chain carboxyl group of a free glutamic acid." [PubMed:28801462] xref: DiffAvg: "128.13" xref: DiffFormula: "C 5 H 8 N 2 O 2" xref: DiffMono: "128.058576" xref: Formula: "C 10 H 15 N 3 O 5" xref: MassAvg: "257.24" xref: MassMono: "257.101167" xref: Origin: "E" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:02026 name: S-(cysteinyl-glycyl)-L-cysteine def: "A protein modification that effectively cross-links an L-cysteinyl-L-glycine dipeptide and an L-cysteine residue by a disulfide bond to form S-(cysteinyl-glycyl)-L-cysteine." [PubMed:27936627, PubMed:20594348, PubMed:29627744] comment: Glutamyl-transpeptidase cleaves glutathione into cysteinylglycine (Cys-Gly) and a Glu residue. [PubMed:28537416] xref: DiffAvg: "176.17" xref: DiffFormula: "C 5 H 8 N 2 O 3 S 1" xref: DiffMono: "176.025563" xref: Formula: "C 8 H 13 N 3 O 4 S 2" xref: MassAvg: "279.33" xref: MassMono: "279.034748" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:01862 ! disulfide conjugated residue relationship: part_of MOD:00234 ! L-cysteine glutathione disulfide [Term] id: MOD:02027 name: urmylated lysine def: "A protein modification that effectively crosslinks the N6-amino of a peptidyl lysine with the carboxyl-terminal glycine of a URM1 protein." [PubMed:10713047, PubMed:21209336] subset: PSI-MOD-slim xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:02047 ! crosslinked glycine residue is_a: MOD:02051 ! crosslinked L-lysine residue is_a: MOD:01875 ! N6-acylated L-lysine relationship: contains MOD:00134 ! N6-glycyl-L-lysine [Term] id: MOD:02028 name: iTRAQ4plex reporter+balance reagent acylated residue, average mass modification def: "A protein modification that effectively replaces a hydrogen atom of a residue with one of the Applied Biosystems iTRAQ4plex reagent reporter+balance groups." [Unimod:214] comment: The reagent consists of a reporter group, a balance group and a protein reactive N-oxysuccinimide group. The reporter group, an isotopically labeled 1,4-dimethylpiperazine, is connected to a carbonyl balance group that is isotopically labeled to produce a nominally isobaric combined modification. Four versions of chemically identical iTRAQ4plex moyeties, but with different isotope distribution. This modification is calculated as the average of the four species. It has no isotopic distribution reality, the exact mass does not correspond to any real isotopic distribution. subset: PSI-MOD-slim synonym: "(4-methylpiperazin-1-yl)acetyl" EXACT PSI-MOD-alternate [] synonym: "iTRAQ" RELATED Unimod-interim [] xref: DiffAvg: "144.10" xref: DiffFormula: "none" xref: DiffMono: "144.102411" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:01426 ! isotope tagged reagent derivatized residue is_a: MOD:01705 ! isotope tagged reagent acylated residue is_a: MOD:01709 ! iTRAQ4plex reporter+balance reagent N-acylated residue is_a: MOD:01513 ! modifications with monoisotopic mass differences that are nominally equal at a resolution below 0.1 Da [Term] id: MOD:02029 name: cis-peptidyl-L-proline def: "A protein modification that effectively specifies the boundary conformation of two adjacent source amino acid residues, the second (C-term side) being a L-proline, where the carbonyl group of the amide bond of the N-side of the L-proline is positioned such that the organodiyl group is in the cis orientation (omega=0)" [ChEBI:83833, PubMed:15735342, PubMed:15311922, PubMed:24116866, PubMed:5485910] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Origin: "X, P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:02030 name: trans-peptidyl-L-proline def: "A protein modification that effectively specifies the boundary conformation of two adjacent source amino acid residues, the second (C-term side) being a L-proline, where the carbonyl group of the amide bond of the N-side of the L-proline is positioned such that the organodiyl group is in the trans orientation (omega=180)" [ChEBI:83834, PubMed:15735342, PubMed:15311922, PubMed:24116866, PubMed:5485910] xref: DiffAvg: "0.00" xref: DiffFormula: "C 0 H 0 N 0 O 0" xref: DiffMono: "0.000000" xref: Origin: "X, P" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:02031 name: dHex1Hex4HexNAc5 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex Hex(4) HexNAc(5)" [PubMed:33135055, Unimod:1519] synonym: "dHex Hex(4) HexNAc(5)" RELATED Unimod-description [] xref: DiffAvg: "1810.68" xref: DiffFormula: "C 70 H 115 N 5 O 49" xref: DiffMono: "1809.666065" xref: Formula: "C 74 H 121 N 7 O 51" xref: MassAvg: "1924.78" xref: MassMono: "1923.708993" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1519" xref: GNOme: "GNO:G03382KH" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:02032 name: dHex2Hex4HexNAc5 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex(2) Hex(4) HexNAc(5)" [PubMed:33135055, Unimod:1785] synonym: "dHex(2) Hex(4) HexNAc(5)" RELATED Unimod-description [] xref: DiffAvg: "1956.82" xref: DiffFormula: "C 76 H 125 N 5 O 53" xref: DiffMono: "1955.723974" xref: Formula: "C 80 H 131 N 7 O 55" xref: MassAvg: "2070.92" xref: MassMono: "2069.766901" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1785" xref: GNOme: "GNO:G70418MS" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:02033 name: dHex1Hex5HexNAc3 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex Hex(5) HexNAc(3)" [PubMed:33135055, Unimod:1484] synonym: "dHex Hex(5) HexNAc(3)" RELATED Unimod-description [] xref: DiffAvg: "1566.43" xref: DiffFormula: "C 60 H 99 N 3 O 44" xref: DiffMono: "1565.560143" xref: Formula: "C 64 H 105 N 5 O 46" xref: MassAvg: "1680.53" xref: MassMono: "1679.603071" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1484" xref: GNOme: "GNO:G82119TF" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:02034 name: dHex1Hex3HexNAc6 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex Hex(3) HexNAc(6)" [PubMed:33135055, Unimod:1781] synonym: "dHex Hex(3) HexNAc(6)" RELATED Unimod-description [] xref: DiffAvg: "1851.73" xref: DiffFormula: "C 72 H 118 N 6 O 49" xref: DiffMono: "1850.692614" xref: Formula: "C 76 H 124 N 8 O 51" xref: MassAvg: "1965.83" xref: MassMono: "1964.735542" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1781" xref: GNOme: "GNO:G50757KG" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:02035 name: dHex1Hex6HexNAc3 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, dHex Hex(6) HexNAc(3)" [PubMed:33135055, Unimod:1509] synonym: "dHex Hex(6) HexNAc(3)" RELATED Unimod-description [] xref: DiffAvg: "1728.57" xref: DiffFormula: "C 66 H 109 N 3 O 49" xref: DiffMono: "1727.612967" xref: Formula: "C 70 H 115 N 5 O 51" xref: MassAvg: "1842.67" xref: MassMono: "1841.655894" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1509" xref: GNOme: "GNO:G84820NF" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:02036 name: Hex9HexNAc2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, Hex(9)HexNAc(2)" [PubMed:33135055, Unimod:1531] synonym: "M9/Man9" RELATED Unimod-description [] xref: DiffAvg: "1865.66" xref: DiffFormula: "C 70 H 116 N 2 O 55" xref: DiffMono: "1864.634156" xref: Formula: "C 74 H 122 N 4 O 57" xref: MassAvg: "1979.76" xref: MassMono: "1978.677083" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1531" xref: GNOme: "GNO:G70101JE" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:02037 name: Hex7HexNAc2 N4-glycosylated asparagine def: "modification from Unimod N-linked glycosylation, Hex(7) HexNAc(2)" [PubMed:33135055, Unimod:1480] synonym: "M7/Man7" RELATED Unimod-description [] xref: DiffAvg: "1541.38" xref: DiffFormula: "C 58 H 96 N 2 O 45" xref: DiffMono: "1540.528509" xref: Formula: "C 62 H 102 N 4 O 47" xref: MassAvg: "1655.48" xref: MassMono: "1654.571436" xref: MassMono: "1654.571436" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1480" xref: GNOme: "GNO:G05724UK" is_a: MOD:00725 ! complex glycosylation is_a: MOD:00160 ! N4-glycosyl-L-asparagine [Term] id: MOD:02038 name: monomethylated L-histidine def: "A protein modification that effectively replaces one hydrogen atom of an L-histidine residue with one methyl group." [DeltaMass:215, OMSSA:77, Unimod:34#H] subset: PSI-MOD-slim synonym: "Me1His" EXACT PSI-MOD-label [] synonym: "Methyl" RELATED PSI-MS-label [] synonym: "methylh" EXACT OMSSA-label [] synonym: "MOD_RES Methylhistidine" EXACT UniProt-feature [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 7 H 9 N 3 O 1" xref: MassAvg: "151.17" xref: MassMono: "151.074562" xref: Origin: "H" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:34" xref: UniProt: "PTM-0176" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00661 ! methylated histidine [Term] id: MOD:02039 name: aminated residue def: "A protein modification that effectively replaces a hydrogen group with a amino group" [] synonym: "AmRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:02040 name: crosslinked L-alanine residue def: "A protein modification that contains an L-alanine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkAla" EXACT PSI-MOD-label [] xref: Origin: "A" is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:02041 name: crosslinked L-arginine residue def: "A protein modification that contains an L-arginine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkArg" EXACT PSI-MOD-label [] xref: Origin: "R" is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:02042 name: crosslinked L-asparagine residue def: "A protein modification that contains an L-asparagine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkAsn" EXACT PSI-MOD-label [] xref: Origin: "N" is_a: MOD:00903 ! modified L-asparagine residue [Term] id: MOD:02043 name: crosslinked L-aspartic acid residue def: "A protein modification that contains an L-aspartic acid residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkAsp" EXACT PSI-MOD-label [] xref: Origin: "D" is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:02044 name: crosslinked L-cysteine residue def: "A protein modification that contains an L-cysteine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkCys" EXACT PSI-MOD-label [] xref: Origin: "C" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:02045 name: crosslinked L-glutamic acid residue def: "A protein modification that contains an L-glutamic acid residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkGlu" EXACT PSI-MOD-label [] xref: Origin: "E" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:02046 name: crosslinked L-glutamine residue def: "A protein modification that contains an L-glutamine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkGln" EXACT PSI-MOD-label [] xref: Origin: "Q" is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:02047 name: crosslinked glycine residue def: "A protein modification that contains a glycine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkGly" EXACT PSI-MOD-label [] xref: Origin: "G" is_a: MOD:00908 ! modified glycine residue [Term] id: MOD:02048 name: crosslinked L-histidine residue def: "A protein modification that contains an L-histidine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkHis" EXACT PSI-MOD-label [] xref: Origin: "H" is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:02049 name: crosslinked L-isoleucine residue def: "A protein modification that contains an L-isoleucine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkIle" EXACT PSI-MOD-label [] xref: Origin: "I" is_a: MOD:00910 ! modified L-isoleucine residue [Term] id: MOD:02050 name: crosslinked L-leucine residue def: "A protein modification that contains an L-leucine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkLeu" EXACT PSI-MOD-label [] xref: Origin: "L" is_a: MOD:00911 ! modified L-leucine residue [Term] id: MOD:02051 name: crosslinked L-lysine residue def: "A protein modification that contains an L-lysine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkLys" EXACT PSI-MOD-label [] xref: Origin: "K" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:02052 name: crosslinked L-methionine residue def: "A protein modification that contains an L-methionine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkMet" EXACT PSI-MOD-label [] xref: Origin: "M" is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:02053 name: crosslinked L-phenylalanine residue def: "A protein modification that contains an L-phenylalanine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkPhe" EXACT PSI-MOD-label [] xref: Origin: "F" is_a: MOD:00914 ! modified L-phenylalanine residue [Term] id: MOD:02054 name: crosslinked L-proline residue def: "A protein modification that contains an L-proline residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkPro" EXACT PSI-MOD-label [] xref: Origin: "P" is_a: MOD:00915 ! modified L-proline residue [Term] id: MOD:02055 name: crosslinked L-serine residue def: "A protein modification that contains an L-serine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkSer" EXACT PSI-MOD-label [] xref: Origin: "S" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:02056 name: crosslinked L-threonine residue def: "A protein modification that contains an L-threonine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkThr" EXACT PSI-MOD-label [] xref: Origin: "T" is_a: MOD:00917 ! modified L-threonine residue [Term] id: MOD:02057 name: crosslinked L-tryptophan residue def: "A protein modification that contains an L-tryptophan residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkTrp" EXACT PSI-MOD-label [] xref: Origin: "W" is_a: MOD:00918 ! modified L-tryptophan residue [Term] id: MOD:02058 name: crosslinked L-tyrosine residue def: "A protein modification that contains an L-tyrosine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkTyr" EXACT PSI-MOD-label [] xref: Origin: "Y" is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:02059 name: crosslinked L-valine residue def: "A protein modification that contains an L-valine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkVal" EXACT PSI-MOD-label [] xref: Origin: "V" is_a: MOD:00920 ! modified L-valine residue [Term] id: MOD:02060 name: crosslinked D-asparagine residue def: "A protein modification that contains an D-asparagine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkDAsn" EXACT PSI-MOD-label [] xref: Origin: "MOD:00203" is_a: MOD:02097 ! modified D-asparagine residue [Term] id: MOD:02061 name: crosslinked L-selenocysteine residue def: "A protein modification that contains an L-selenocysteine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "U" is_a: MOD:01158 ! modified L-selenocysteine residue [Term] id: MOD:02062 name: crosslinked N-formyl-L-methionine residue def: "A protein modification that contains an N-formyl-L-methionine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "MOD:00030" is_a: MOD:01450 ! modified N-formyl-L-methionine residue [Term] id: MOD:02063 name: crosslinked D-phenylalanine residue def: "A protein modification that contains an D-phenylalanine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkDPhe" EXACT PSI-MOD-label [] xref: Origin: "F" is_a: MOD:00201 ! D-phenylalanine [Term] id: MOD:02064 name: crosslinked D-serine residue def: "A protein modification that contains an D-serine residue crosslinked to one or more amino acid residues." [PubMed:18688235] subset: PSI-MOD-slim synonym: "XlnkDSer" EXACT PSI-MOD-label [] xref: Origin: "S" is_a: MOD:00202 ! D-serine (Ser) [Term] id: MOD:02065 name: metal or metal cluster coordinated L-alanine residue def: "A protein modification that contains an L-alanine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "A" is_a: MOD:00901 ! modified L-alanine residue [Term] id: MOD:02066 name: metal or metal cluster coordinated L-aspartic acid residue def: "A protein modification that contains an L-aspartic acid residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "D" is_a: MOD:00904 ! modified L-aspartic acid residue [Term] id: MOD:02067 name: metal or metal cluster coordinated L-cysteine residue def: "A protein modification that contains an L-cysteine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "C" is_a: MOD:00905 ! modified L-cysteine residue [Term] id: MOD:02068 name: metal or metal cluster coordinated L-glutamic acid residue def: "A protein modification that contains an L-glutamic acid residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "E" is_a: MOD:00906 ! modified L-glutamic acid residue [Term] id: MOD:02069 name: metal or metal cluster coordinated L-glutamine residue def: "A protein modification that contains an L-glutamine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "Q" is_a: MOD:00907 ! modified L-glutamine residue [Term] id: MOD:02070 name: metal or metal cluster coordinated L-histidine residue def: "A protein modification that contains an L-histidine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "H" is_a: MOD:00909 ! modified L-histidine residue [Term] id: MOD:02071 name: metal or metal cluster coordinated L-methionine residue def: "A protein modification that contains an L-methionine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "M" is_a: MOD:00913 ! modified L-methionine residue [Term] id: MOD:02072 name: metal or metal cluster coordinated L-serine residue def: "A protein modification that contains an L-serine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "S" is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:02073 name: metal or metal cluster coordinated L-selenocysteine residue def: "A protein modification that contains an L-selenocysteine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "U" is_a: MOD:01158 ! modified L-selenocysteine residue [Term] id: MOD:02074 name: metal or metal cluster coordinated L-lysine residue def: "A protein modification that contains an L-lysine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "K" is_a: MOD:00912 ! modified L-lysine residue [Term] id: MOD:02075 name: metal or metal cluster coordinated L-tyrosine residue def: "A protein modification that contains an L-tyrosine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "Y" is_a: MOD:00919 ! modified L-tyrosine residue [Term] id: MOD:02076 name: metal or metal cluster coordinated L-arginine residue def: "A protein modification that contains an L-arginine residue coordinated to one or more metal atoms or metal clusters." [PubMed:18688235] subset: PSI-MOD-slim xref: Origin: "R" is_a: MOD:00902 ! modified L-arginine residue [Term] id: MOD:02077 name: nitrosylated residue def: "A protein modification that effectively replaces a hydrogen atom with an nitrosyl (NO) group." [PubMed:10442087, PubMed:11562475, PubMed:15688001, PubMed:8626764, PubMed:8637569, Unimod:275] subset: PSI-MOD-slim synonym: "Nitrosyl" RELATED PSI-MS-label [] xref: DiffAvg: "29.00" xref: DiffFormula: "C 0 H -1 N 1 O 1 S 0" xref: DiffMono: "28.990164" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:275" is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:02078 name: acetylated residue def: "A protein modification that effectively replaces one or more hydrogen atoms with one or more acetyl groups." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136] subset: PSI-MOD-slim synonym: "Acetyl" RELATED PSI-MS-label [] synonym: "AcRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:00649 ! acylated residue [Term] id: MOD:02079 name: diacetylated residue def: "A protein modification that effectively replaces one hydrogen atom with one acetyl group." [PubMed:11857757, PubMed:11999733, PubMed:12175151, PubMed:14730666, PubMed:15350136, Unimod:1] comment: Amino hydrogens are replaced to produce amides; hydroxyl hydrogens are replaced to produce esters; and hydrosulfanyl (thiol) hydrogens are replaced to produce sulfanyl esters (thiol esters). From DeltaMass: Average Mass: 42 subset: PSI-MOD-slim synonym: "Diacetyl" RELATED PSI-MS-label [] synonym: "Ac2Res" EXACT PSI-MOD-label [] xref: DiffAvg: "84.07" xref: DiffFormula: "C 4 H 4 N 0 O 2" xref: DiffMono: "84.021129" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "artifact" xref: TermSpec: "none" is_a: MOD:02078 ! acetylated residue [Term] id: MOD:02080 name: diacetylated L-serine def: "A protein modification that effectively converts an L-serine residue to either N-acetyl-L-serine, O-acetyl-L-serine, or N,O-diacetyl-L-serine." [PubMed:18688235] subset: PSI-MOD-slim synonym: "Ac2Ser" EXACT PSI-MOD-label [] xref: DiffAvg: "84.07" xref: DiffFormula: "C 4 H 4 N 0 O 2" xref: DiffMono: "84.021129" xref: Formula: "C 7 H 10 N 1 O 4" xref: MassAvg: "172.16" xref: MassMono: "172.060983" xref: Origin: "S" xref: Source: "natural" is_a: MOD:02079 ! diacetylated residue is_a: MOD:00916 ! modified L-serine residue [Term] id: MOD:02081 name: alpha-amino succinylated residue def: "A protein modification that effectively replaces a residue alpha-amino- or alpha-imino-hydrogen with a succinyl group." [PubMed:11857757, PubMed:12175151, Unimod:64#N-term] synonym: "Succinyl" RELATED PSI-MS-label [] xref: DiffAvg: "100.07" xref: DiffFormula: "C 4 H 4 O 3" xref: DiffMono: "100.016044" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "N-term" xref: Unimod: "Unimod:64" is_a: MOD:01029 ! succinylated residue is_a: MOD:01696 ! alpha-amino acylated residue is_a: MOD:01426 ! isotope tagged reagent derivatized residue [Term] id: MOD:02082 name: didehydrogenated and dehydrated residue def: "A protein modification that effectively removes two neutral hydrogen atoms (proton and electron) and a water moiety from a residue." [Unimod:401] subset: PSI-MOD-slim synonym: "2dHdH2ORes" EXACT PSI-MOD-label [] xref: DiffAvg: "-20.03" xref: DiffFormula: "C 0 H -4 N 0 O -1" xref: DiffMono: "-20.026215" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00683 ! dehydrogenated residue [Term] id: MOD:02083 name: 4alpha-FMN modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a riboflavin phosphate (flavin mononucleotide, FMN) group through the 4-alpha position of FMN." [PubMed:18688235] subset: PSI-MOD-slim synonym: "4aFMNRes" EXACT PSI-MOD-label [] xref: DiffFormula: "C 17 H 21 N 4 O 9 P 1" xref: DiffAvg: "456.35" xref: DiffMono: "456.104615" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00896 ! FMN modified residue [Term] id: MOD:02084 name: 6-FMN modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a riboflavin phosphate (flavin mononucleotide, FMN) group through the 6 position of FMN." [PubMed:18688235] subset: PSI-MOD-slim synonym: "6-FMNRes" EXACT PSI-MOD-label [] xref: DiffAvg: "454.33" xref: DiffFormula: "C 17 H 19 N 4 O 9 P 1" xref: DiffMono: "454.088965" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00896 ! FMN modified residue [Term] id: MOD:02085 name: 8alpha-FMN modified residue def: "A protein modification that effectively results from forming an adduct with a compound containing a riboflavin phosphate (flavin mononucleotide, FMN) group through the 8-alpha position of FMN." [PubMed:18688235] subset: PSI-MOD-slim synonym: "8a-FMNRes" EXACT PSI-MOD-label [] xref: DiffAvg: "454.33" xref: DiffFormula: "C 17 H 19 N 4 O 9 P 1" xref: DiffMono: "454.088965" xref: Formula: "none" xref: MassAvg: "none" xref: MassMono: "none" xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00896 ! FMN modified residue [Term] id: MOD:02086 name: brominated phenylalanine def: "A protein modification that effectively substitutes a hydrogen atom of an L-phenylalanine residue with a bromine atom." [PubMed:18688235] synonym: "BrPhe" EXACT PSI-MOD-label [] xref: Origin: "F" xref: Source: "none" xref: TermSpec: "none" is_a: MOD:00754 ! brominated residue is_a: MOD:01066 ! halogenated phenylalanine [Term] id: MOD:02087 name: adenosine diphosphoribosyl (ADP-ribosyl) modified residue def: "A protein modification that effectively results from forming an adduct with one or more ADP-ribose moieties or to modified residues through formation of a glycosidic bond." [DeltaMass:0] subset: PSI-MOD-slim synonym: "ADPRibRes" EXACT PSI-MOD-label [] xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00701 ! nucleotide or nucleic acid modified residue [Term] id: MOD:02088 name: natural, standard, encoded residue substitution def: "A protein modification that effectively replaces a natural, standard, encoded residue." [PubMed:18688235] comment: This represents the replacement of an encoded residue in a polypeptide, and must be combined with the formula or mass of another entry that is the replacement residue to represent a mutation or substitution. subset: PSI-MOD-slim xref: Origin: "X" xref: Source: "natural" xref: TermSpec: "none" is_a: MOD:00009 ! natural residue is_a: MOD:01156 ! protein modification categorized by chemical process [Term] id: MOD:02089 name: O-(phospho-5'-uridine)-L-serine def: "A protein modification that effectively crosslinks an L-serine residue and 5'-phosphouridine through a phosphodiester bond to form O-(phospho-5'-uridine)-L-serine." [DeltaMass:0, PubMed:22504181, Unimod:417#S, ChEBI:156051] subset: PSI-MOD-slim synonym: "MOD_RES O-UMP-serine" EXACT UniProt-feature [] synonym: "OUMPSer" EXACT PSI-MOD-label [] synonym: "PhosphoUridine" RELATED PSI-MS-label [] xref: DiffAvg: "306.17" xref: DiffFormula: "C 9 H 11 N 2 O 8 P 1" xref: DiffMono: "306.025302" xref: Formula: "C 12 H 16 N 3 O 9 P 1" xref: MassAvg: "377.24" xref: MassMono: "377.062416" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:417" xref: UniProt: "PTM-0501" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01166 ! uridylated residue [Term] id: MOD:02090 name: O-(phospho-5'-uridine)-L-threonine def: "A protein modification that effectively modifies an L-threonine residue with 5'-phosphouridine through a phosphodiester bond to form O-(phospho-5'-uridine)-L-threonine." [DeltaMass:0, PubMed:22504181, Unimod:417#T, ChEBI:156052] subset: PSI-MOD-slim synonym: "MOD_RES O-UMP-threonine" EXACT UniProt-feature [] synonym: "OUMPThr" EXACT PSI-MOD-label [] synonym: "PhosphoUridine" RELATED PSI-MS-label [] xref: DiffAvg: "306.17" xref: DiffFormula: "C 9 H 11 N 2 O 8 P 1" xref: DiffMono: "306.025302" xref: Formula: "C 13 H 18 N 3 O 9 P 1" xref: MassAvg: "391.27" xref: MassMono: "391.078066" xref: Origin: "T" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:417" xref: UniProt: "PTM-0502" is_a: MOD:00917 ! modified L-threonine residue is_a: MOD:01166 ! uridylated residue [Term] id: MOD:02091 name: O-(phospho-5'-adenosine)-L-serine def: "A protein modification that effectively modifies an L-serine residue with 5'-phosphoadenosine through a phosphodiester bond to form O-(phospho-5'-adenosine)-L-serine." [PubMed:21472612, Unimod:405#S] subset: PSI-MOD-slim synonym: "MOD_RES O-AMP-serine" EXACT UniProt-feature [] synonym: "Phosphoadenosine" RELATED PSI-MS-label [] xref: DiffAvg: "329.21" xref: DiffFormula: "C 10 H 12 N 5 O 6 P 1" xref: DiffMono: "329.052520" xref: Formula: "C 13 H 17 N 6 O 8 P 1" xref: MassAvg: "416.28" xref: MassMono: "416.084549" xref: Origin: "S" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:405" xref: UniProt: "PTM-0651" is_a: MOD:00916 ! modified L-serine residue is_a: MOD:01165 ! adenylated residue [Term] id: MOD:02092 name: S-methylbutanedioic acid-L-cysteine def: "A protein modification that effectively converts an L-cysteine residue to form S-methylbutanedioic acid-L-cysteine by alkylation with itaconate through a thioether bond." [PubMed:29590092] subset: PSI-MOD-slim synonym: "MOD_RES S-(2,3-dicarboxypropyl)cysteine" EXACT UniProt-feature [] xref: DiffAvg: "130.10" xref: DiffFormula: "C 5 H 6 N 0 O 4 P 0 S 0" xref: DiffMono: "130.026609" xref: Formula: "C 8 H 11 N 1 O 5 P 0 S 1" xref: MassAvg: "233.24" xref: MassMono: "233.035793" xref: Origin: "C" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0676" is_a: MOD:00905 ! modified L-cysteine residue is_a: MOD:00001 ! alkylated residue [Term] id: MOD:02093 name: N6-(2-hydroxyisobutanoyl)-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-(2-hydroxyisobutanoyl)-L-lysine." [PubMed:29775581, PubMed:24681537, ChEBI:144968, Unimod:1849] synonym: "MOD_RES N6-(2-hydroxyisobutyryl)lysine" EXACT UniProt-feature [] xref: DiffAvg: "86.09" xref: DiffFormula: "C 4 H 6 N 0 O 2" xref: DiffMono: "86.036779" xref: Formula: "C 10 H 18 N 2 O 3" xref: MassAvg: "214.27" xref: MassMono: "214.131742" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: Unimod: "Unimod:1849" xref: UniProt: "PTM-0638" is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:02094 name: N6-((3R)-3-hydroxybutanoyl)-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-((3R)-3-hydroxybutanoyl)-L-lysine." [PubMed:27105115, ChEBI:149490] synonym: "MOD_RES N6-(beta-hydroxybutyryl)lysine" EXACT UniProt-feature [] xref: DiffAvg: "86.09" xref: DiffFormula: "C 4 H 6 N 0 O 2" xref: DiffMono: "86.036779" xref: Formula: "C 10 H 18 N 2 O 3" xref: MassAvg: "214.27" xref: MassMono: "214.131742" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0499" is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:02095 name: N6-glutaryl-L-lysine def: "A protein modification that effectively converts an L-lysine residue to N6-glutaryl-L-lysine." [PubMed:24703693, ChEBI:87828] synonym: "MOD_RES N6-glutaryllysine" EXACT UniProt-feature [] xref: DiffAvg: "114.10" xref: DiffFormula: "C 5 H 6 N 0 O 3" xref: DiffMono: "114.031694" xref: Formula: "C 11 H 18 N 2 O 4" xref: MassAvg: "242.28" xref: MassMono: "242.126657" xref: Origin: "K" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0487" is_a: MOD:01875 ! N6-acylated L-lysine [Term] id: MOD:02096 name: N4-methyl-D-asparagine def: "A protein modification that effectively converts a D-asparagine residue to N4-methyl-D-asparagine." [PubMed:22983711, ChEBI:149514] subset: PSI-MOD-slim synonym: "MOD_RES N4-methyl-D-asparagine" EXACT UniProt-feature [] synonym: "N4-methylated D-asparagine" EXACT PSI-MOD-alternate [] xref: DiffAvg: "14.03" xref: DiffFormula: "C 1 H 2 N 0 O 0" xref: DiffMono: "14.015650" xref: Formula: "C 5 H 8 N 2 O 2" xref: MassAvg: "128.13" xref: MassMono: "128.058578" xref: Origin: "N" xref: Source: "natural" xref: TermSpec: "none" xref: UniProt: "PTM-0691" is_a: MOD:00599 ! monomethylated residue is_a: MOD:00602 ! N-methylated residue is_a: MOD:00673 ! methylated asparagine is_a: MOD:02097 ! modified D-asparagine residue is_a: MOD:00894 ! residues isobaric at 128.058578 Da [Term] id: MOD:02097 name: modified D-asparagine residue def: "A protein modification that modifies a D-asparagine residue." [PubMed:18688235] subset: PSI-MOD-slim synonym: "ModDAsn" EXACT PSI-MOD-label [] is_a: MOD:00203 ! D-asparagine [Typedef] id: contains name: contains def: "'Entity A' contains 'Entity B' implies that 'Entity B' is a part of the structure of 'Entity A'." [PubMed:18688235] comment: The inverse relationship to "part of". is_transitive: true [Typedef] id: derives_from name: derives from def: "'Entity A' derives_from 'Entity B' implies that 'Entity A' is chemically derived from 'Entity B'." [PubMed:18688235] is_transitive: true [Typedef] id: has_functional_parent name: has functional parent def: "'Entity A' has_functional_parent 'Entity B' implies that 'Entity B' has at least one chacteristic group from which 'Entity A' can be derived by functional modification." [PubMed:18688235] comment: This relationship indicates that the formula and mass of the child are not inherited from the mass of the parent. is_transitive: true [Typedef] id: part_of name: part of def: "'Entity A' part_of 'Entity B' implies that 'Entity A' is a part of the structure of 'Entity B'." [PubMed:18688235] is_transitive: true libpappsomspp-0.9.20/src/testwin64/000755 001750 001750 00000000000 14533473271 020350 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/src/testwin64/CMakeLists.txt000644 001750 001750 00000001556 14346367014 023116 0ustar00rusconirusconi000000 000000 # CMake script for PAPPSOms++ library # Author: Olivier Langella # Created: 28/01/2017 IF (USEQT5) #qt5-default qtbase5-dev #IF (UNIX) FIND_PACKAGE( Qt5Core REQUIRED ) add_executable(testw64-qt5 test.cpp) target_include_directories (testw64-qt5 PUBLIC ${Qt5Core_INCLUDES}) SET_TARGET_PROPERTIES(testw64-qt5 PROPERTIES OUTPUT_NAME otestw64-qt5 CLEAN_DIRECT_OUTPUT 1 CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}" ) TARGET_LINK_LIBRARIES(testw64-qt5 ${Qt5Core_LIBRARIES}) ENDIF(USEQT5) IF (USEQT4) #qt5-default qtbase5-dev #IF (UNIX) FIND_PACKAGE( Qt4 COMPONENTS QTCORE REQUIRED ) add_executable(testw64 test.cpp) target_include_directories (testw64 PUBLIC ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(testw64 ${QT_QTCORE_LIBRARY} ) ENDIF(USEQT4) libpappsomspp-0.9.20/src/testwin64/test.cpp000644 001750 001750 00000000263 14526455546 022043 0ustar00rusconirusconi000000 000000 #include #include int main(int argc, const char **argv) { int *n = new int[10]; std::cout << QString("coucou").toStdString() << std::endl; return 0; } libpappsomspp-0.9.20/src/libpappsomsppresources.qrc000644 001750 001750 00000000362 14346367014 024034 0ustar00rusconirusconi000000 000000 resources/PSI-MOD.obo resources/icons/switch_off.svg resources/icons/switch_on.svg libpappsomspp-0.9.20/src/CMakeLists.txt000644 001750 001750 00000026006 14531326221 021233 0ustar00rusconirusconi000000 000000 # CMake script for PAPPSOms++ library # Author: Olivier Langella # Created: 03/03/2015 # Rework: April 2020 (Coronavirus confinement) message(\n${BoldRed}"Now configuring src/ for ${PROJECT_NAME}"${ColourReset}\n) configure_file (${CMAKE_SOURCE_DIR}/src/pappsomspp/config.h.cmake ${CMAKE_SOURCE_DIR}/src/pappsomspp/config.h) add_definitions(-DWITHOUT_MZ5) ######################################################## # Files set(CPP_FILES pappsomspp/utils.cpp pappsomspp/mzrange.cpp pappsomspp/precision.cpp pappsomspp/amino_acid/aa.cpp pappsomspp/amino_acid/aabase.cpp pappsomspp/amino_acid/aacode.cpp pappsomspp/amino_acid/aamodification.cpp pappsomspp/amino_acid/aastringcodec.cpp pappsomspp/amino_acid/aastringcodemassmatching.cpp pappsomspp/massspectrum/massspectrumid.cpp pappsomspp/massspectrum/massspectrum.cpp pappsomspp/massspectrum/qualifiedmassspectrum.cpp pappsomspp/fasta/fastafileindexer.cpp pappsomspp/fasta/fastareader.cpp pappsomspp/fasta/fastaoutputstream.cpp pappsomspp/grouping/grpexperiment.cpp pappsomspp/grouping/grppeptide.cpp pappsomspp/grouping/grpprotein.cpp pappsomspp/grouping/grpgroup.cpp pappsomspp/grouping/grpsubgroup.cpp pappsomspp/grouping/grppeptideset.cpp pappsomspp/grouping/grpmappeptidetogroup.cpp pappsomspp/grouping/grpmappeptidetosubgroupset.cpp pappsomspp/grouping/grpsubgroupset.cpp pappsomspp/grouping/grpgroupingmonitor.cpp pappsomspp/msfile/msfileaccessor.cpp pappsomspp/msfile/msfilereader.cpp pappsomspp/msfile/mzformatenumstr.cpp pappsomspp/msfile/pwizmsfilereader.cpp pappsomspp/msfile/timsmsfilereader.cpp pappsomspp/msfile/xymsfilereader.cpp pappsomspp/msrun/spectrumcollectionhandlerinterface.cpp pappsomspp/msrun/alignment/msrunretentiontime.cpp pappsomspp/msrun/alignment/template.cpp pappsomspp/msrun/output/mzxmloutput.cpp pappsomspp/msrun/output/mgfoutput.cpp pappsomspp/msrun/msrundatasettreenode.cpp pappsomspp/msrun/msrundatasettree.cpp pappsomspp/msrun/msrunid.cpp pappsomspp/msrun/msrunreader.cpp pappsomspp/msrun/msrunreadconfig.cpp pappsomspp/msrun/private/pwizmsrunreader.cpp pappsomspp/msrun/private/timsmsrunreader.cpp pappsomspp/msrun/private/timsframesmsrunreader.cpp pappsomspp/msrun/private/timsmsrunreaderms2.cpp pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp pappsomspp/msrun/xiccoord/ionmobilitygrid.cpp pappsomspp/msrun/xiccoord/xiccoord.cpp pappsomspp/msrun/xiccoord/xiccoordtims.cpp pappsomspp/msrun/xymsrunreader.cpp pappsomspp/obo/obopsimod.cpp pappsomspp/obo/obopsimodterm.cpp pappsomspp/obo/filterobopsimodsink.cpp pappsomspp/obo/filterobopsimodtermaccession.cpp pappsomspp/obo/filterobopsimodtermlabel.cpp pappsomspp/obo/filterobopsimodtermdiffmono.cpp pappsomspp/obo/filterobopsimodtermname.cpp pappsomspp/peptide/ion.cpp pappsomspp/peptide/peptideinterface.cpp pappsomspp/peptide/peptide.cpp pappsomspp/peptide/peptidefragment.cpp pappsomspp/peptide/peptidefragmention.cpp pappsomspp/peptide/peptidefragmentionlistbase.cpp pappsomspp/peptide/peptidenaturalisotope.cpp pappsomspp/peptide/peptidenaturalisotopelist.cpp pappsomspp/peptide/peptidenaturalisotopeaverage.cpp pappsomspp/peptide/peptideproformaparser.cpp pappsomspp/peptide/peptiderawfragmentmasses.cpp pappsomspp/peptide/peptidestrparser.cpp pappsomspp/processing/combiners/mzintegrationparams.cpp pappsomspp/processing/combiners/selectionpolygon.cpp pappsomspp/processing/combiners/tracecombiner.cpp pappsomspp/processing/combiners/traceminuscombiner.cpp pappsomspp/processing/combiners/tracepluscombiner.cpp pappsomspp/processing/combiners/massdatacombinerinterface.cpp pappsomspp/processing/combiners/massspectrumcombiner.cpp pappsomspp/processing/combiners/massspectrumpluscombiner.cpp pappsomspp/processing/combiners/massspectrumminuscombiner.cpp pappsomspp/processing/compartraces/cosinesimilarity.cpp pappsomspp/processing/detection/tracedetectionzivy.cpp pappsomspp/processing/detection/tracedetectionmoulon.cpp pappsomspp/processing/detection/tracepeak.cpp pappsomspp/processing/detection/tracepeaklist.cpp pappsomspp/processing/filters/filterchargedeconvolution.cpp pappsomspp/processing/filters/filtercomplementionenhancer.cpp pappsomspp/processing/filters/filterexclusionmz.cpp pappsomspp/processing/filters/filterlocalmaximum.cpp pappsomspp/processing/filters/filtermorpho.cpp pappsomspp/processing/filters/filternameinterface.cpp pappsomspp/processing/filters/filterpass.cpp pappsomspp/processing/filters/filterpeakdelta.cpp pappsomspp/processing/filters/filterremovec13.cpp pappsomspp/processing/filters/filterresample.cpp pappsomspp/processing/filters/filtersuite.cpp pappsomspp/processing/filters/filtersuitestring.cpp pappsomspp/processing/filters/filtertandemremovec13.cpp pappsomspp/processing/filters/filtertriangle.cpp pappsomspp/processing/filters/savgolfilter.cpp pappsomspp/processing/filters/filterflooramplitudepercentage.cpp pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp pappsomspp/processing/filters/filternormalizeintensities.cpp pappsomspp/processing/specglob/experimentalspectrum.cpp pappsomspp/processing/specglob/peptidemodel.cpp pappsomspp/processing/specglob/peptidespectrum.cpp pappsomspp/processing/specglob/posttreatment.cpp pappsomspp/processing/specglob/scorevalues.cpp pappsomspp/processing/specglob/spectralalignment.cpp pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp pappsomspp/processing/tandemwrapper/wraptandeminput.cpp pappsomspp/processing/tandemwrapper/wraptandemresults.cpp pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp pappsomspp/processing/uimonitor/uimonitortext.cpp pappsomspp/processing/uimonitor/uimonitortextpercent.cpp pappsomspp/processing/xml/xmlstreamreaderinterface.cpp pappsomspp/protein/enzyme.cpp pappsomspp/protein/peptidesizefilter.cpp pappsomspp/protein/peptidebuilder.cpp pappsomspp/protein/peptidevariablemodificationbuilder.cpp pappsomspp/protein/peptidevariablemodificationreplacement.cpp pappsomspp/protein/peptidefixedmodificationbuilder.cpp pappsomspp/protein/peptidemodificatorbase.cpp pappsomspp/protein/peptidemodificatortee.cpp pappsomspp/protein/peptidemethioninremove.cpp pappsomspp/protein/peptidemodificatorpipeline.cpp pappsomspp/protein/peptidesemienzyme.cpp pappsomspp/protein/protein.cpp pappsomspp/protein/proteinintegercode.cpp pappsomspp/psm/deepprot/deepprotenum.cpp pappsomspp/psm/experimental/ionisotoperatioscore.cpp pappsomspp/psm/features/psmfeatures.cpp pappsomspp/psm/morpheus/morpheusscore.cpp pappsomspp/psm/peakionmatch.cpp pappsomspp/psm/peakionisotopematch.cpp pappsomspp/psm/peptidespectrummatch.cpp pappsomspp/psm/peptideisotopespectrummatch.cpp pappsomspp/psm/xtandem/xtandemhyperscore.cpp pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp pappsomspp/trace/datapoint.cpp pappsomspp/trace/linearregression.cpp pappsomspp/trace/maptrace.cpp pappsomspp/trace/trace.cpp pappsomspp/vendors/tims/mzcalibration/cardano.cpp pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.cpp pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.cpp pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.cpp pappsomspp/vendors/tims/timsbindec.cpp pappsomspp/vendors/tims/timsdata.cpp pappsomspp/vendors/tims/timsframe.cpp pappsomspp/vendors/tims/timsframerawdatachunck.cpp pappsomspp/vendors/tims/timsframebase.cpp pappsomspp/vendors/tims/timsframetype1.cpp pappsomspp/vendors/tims/timsms2centroidfilter.cpp pappsomspp/xic/xic.cpp pappsomspp/xic/qualifiedxic.cpp pappsomspp/xic/xicpeptideinterface.cpp pappsomspp/xic/xicpeptidefragmention.cpp pappsomspp/xic/xicpeptidefragmentionnaturalisotope.cpp pappsomspp/xicextractor/private/msrunslice.cpp pappsomspp/xicextractor/private/msrunxicextractor.cpp pappsomspp/xicextractor/private/msrunxicextractordisk.cpp pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp pappsomspp/xicextractor/msrunxicextractorfactory.cpp pappsomspp/xicextractor/msrunxicextractorinterface.cpp ) set(pappsomspp_RCCS libpappsomsppresources.qrc) # generate rules for building source files from the resources qt6_add_resources(pappsomspp_RCC_SRCS ${pappsomspp_RCCS}) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) ############################################################# # Build the static lib add_library(pappsomspp-static STATIC ${CPP_FILES} ${pappsomspp_RCC_SRCS}) set_target_properties(pappsomspp-static PROPERTIES OUTPUT_NAME pappsomspp CLEAN_DIRECT_OUTPUT 1 LINK_FLAGS -Wl,--whole-archive ) target_include_directories(pappsomspp-static PUBLIC ${PwizLite_INCLUDE_DIRS} ${liblzf_INCLUDE_DIRS} ) message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}") target_compile_definitions(pappsomspp-static PRIVATE -DPMSPP_LIBRARY) target_link_libraries(pappsomspp-static Boost::iostreams Boost::filesystem Boost::thread Boost::chrono PwizLite::PwizLite SQLite::SQLite3 Qt6::Svg Qt6::Sql Qt6::Concurrent Qt6::Xml Qt6::Core5Compat Qt6::Core ZLIB::ZLIB Zstd::Zstd liblzf::liblzf ) # FIXME: should check that this still required. It was years ago. if(WIN32 OR _WIN32) target_link_libraries(pappsomspp-static stdc++ ) endif() ############################################################# # Build the shared lib add_library(pappsomspp-shared SHARED ${CPP_FILES} ${pappsomspp_RCC_SRCS}) set_target_properties(pappsomspp-shared PROPERTIES OUTPUT_NAME pappsomspp CLEAN_DIRECT_OUTPUT 1 VERSION ${PAPPSOMSPP_VERSION} SOVERSION ${PAPPSOMSPP_VERSION_MAJOR} LINK_FLAGS "${LINKER_FLAGS}" ) target_include_directories(pappsomspp-shared PUBLIC ${PwizLite_INCLUDE_DIRS} ${liblzf_INCLUDE_DIRS} ) message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}") target_compile_definitions(pappsomspp-shared PRIVATE -DPMSPP_LIBRARY) target_link_libraries(pappsomspp-shared PwizLite::PwizLite Boost::iostreams Boost::filesystem Boost::thread Boost::chrono SQLite::SQLite3 Qt6::PrintSupport Qt6::Gui Qt6::Svg Qt6::Sql Qt6::Concurrent Qt6::Xml Qt6::Core5Compat Qt6::Core ZLIB::ZLIB Zstd::Zstd liblzf::liblzf ) # Should check that this still required. It was years ago. if(WIN32 OR _WIN32) target_link_libraries(pappsomspp-shared stdc++ ) endif() # Install libs install(TARGETS pappsomspp-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # This one is for WIN32 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(TARGETS pappsomspp-static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) # Install headers install(DIRECTORY pappsomspp/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/pappsomspp FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp") add_subdirectory("pappsomspp/widget") libpappsomspp-0.9.20/tests/000755 001750 001750 00000000000 14533473271 017054 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/data/000755 001750 001750 00000000000 14533473271 017765 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/data/alignment/000755 001750 001750 00000000000 14533473271 021743 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/data/alignment/result_delta_rt.tsv000644 001750 001750 00000171255 14346367014 025707 0ustar00rusconirusconi000000 000000 651.379 -34.577 665.642 -36.504 678.975 -35.824 683.614 -60.405 700.533 -38.78 710.084 -37.665 712.093 -38.517 723.954 4.062 724.259 -42.865 727.807 -36.337 732.631 -38.089 738.031 -34.488 743.082 -34.006 743.829 -36.676 748.341 -35.576 748.54 -35.529 753.795 -34.323 758.165 -24.658 760.786 -32.479 761.397 -34.488 764.429 -30.313 764.581 -29.576 765.116 -27.251 765.422 -29.701 766.262 -28.176 766.414 -33.223 770.13 -27.468 772.872 -31.908 773.251 -33.886 780.246 -24.382 780.4 -29.791 781.441 -28.291 781.593 -29.629 782.331 -32.165 782.634 -30.262 784.369 -26.392 787.406 -25.109 788.451 -25.893 789.952 -34.849 794.422 -21.063 795.184 -23.581 796.074 -26.166 796.225 -30.06 798.258 -22.117 798.713 -27.265 798.866 -21.247 799.705 -32.268 800.426 -24.102 800.578 -25.859 802.181 -21.66 803.405 -19.442 803.557 -21.396 804.941 -22.946 807.131 -17.975 807.436 -22.656 809.875 -19.911 813.855 -26.734 815.377 -17.897 815.53 -19.974 817.169 -21.871 818.386 -18.308 818.996 -18.003 819.686 -16.703 820.984 -18.666 821.981 -18.911 823.434 -19.065 823.587 -20.37 825.114 -16.235 826.296 -18.736 827.593 -20.134 827.9 -7.757 829.045 -17.323 829.197 -14.302 829.35 -18.973 830.241 -15.248 830.926 -12.724 831.141 -19.553 835.304 -16.002 836.745 -15.616 838.19 -12.121 839.809 -16.737 840.113 -16.585 840.263 -14.49 840.567 -12.099 841.728 -12.874 842.566 -15.432 842.642 -18.485 842.793 -13.296 842.946 -13.905 843.097 -18.986 843.922 -17.705 844.378 -14.913 845.063 -12.323 845.751 -13.083 847.046 -14.733 847.975 -13.399 849.062 -12.413 850.327 -14.94 850.478 -14.33 851.837 -13.278 852.296 -15.907 855.756 -17.895 856.741 -42.508 856.893 -17.288 858.334 -14.023 860.681 -14.011 860.833 -18.857 866.042 -17.218 866.194 -15.773 866.345 -9.643 867.077 -11.059 867.359 -14.153 867.968 -12.026 871.221 -11.735 872.461 -9.965 873.445 -12.094 874.374 -8.428 874.485 -13.537 874.603 -15.091 874.907 -11.245 876.045 -12.434 878.989 -6.022 879.972 -2.301 880.351 -8.588 880.504 -5.188 880.656 -13.287 881.26 -10.94 882.296 -7.55 882.448 -10.056 884.316 -10.683 885.505 -16.304 885.659 -11.924 885.965 -9.338 886.34 -3.961 886.646 -6.842 887.932 -8.968 888.459 -12.417 888.916 -9.502 889.798 -10.775 890.101 -14.413 891.157 -15.761 891.619 -11.979 891.995 -12.438 893.866 -4.247 894.323 -6.706 895.737 -4.683 896.013 -5.917 898.527 -6.821 898.68 -11.406 899.67 -12.32 900.402 -10.14 901.392 -9.989 901.545 -13.39 901.698 -8.997 902.304 -11.257 902.683 -10.148 902.835 -6.259 902.91 -17.677 903.063 -6.49 903.671 -5.271 904.584 -4.816 904.891 -8.245 905.422 -8.445 905.951 -7.031 906.178 -7.231 906.331 -5.507 908.262 -8.241 909.856 -8.483 910.161 -3.553 911.54 -4.395 911.616 -6.417 911.81 -2.819 913.804 -33.858 915.855 -16.165 916.19 -3.827 917.702 -6.051 917.855 -8.526 918.008 -8.678 918.461 -11.64 919.368 -10.431 919.519 -8.304 919.672 -7.695 919.825 -8.611 920.735 -10.428 923.583 -12.984 924.704 -12.147 925.16 -12.675 927.461 -6.99 928.248 -7.021 928.399 -7.023 929.539 -9.132 930.749 -0.566 932.19 -7.7 932.496 -6.328 933.558 -11.35 933.633 -8.624 933.939 -9.613 934.091 -9.308 934.619 -7.373 935.062 -9.023 935.369 -7.652 935.745 -7.124 936.357 -7.882 937.438 -9.996 940.639 -5.734 941.099 -8.679 943.141 -7.165 943.751 -9.264 944.788 -9.166 946.465 -26.644 946.616 -8.249 946.769 -5.793 946.87 -10.463 947.022 -10.921 947.48 -10.615 947.857 -3.032 948.008 -11.489 949.442 -10.207 949.697 -20.8 950.002 -11.546 950.687 -12.532 950.849 -7.399 950.949 -8.852 951.254 -8.699 951.405 -9.687 951.781 -46.404 952.066 -10.317 952.178 -9.066 953.378 -11.286 953.527 -10.147 953.68 -8.246 954.989 -18.92 955.097 -9.415 955.25 -10.626 955.932 -3.227 957.486 -7.934 957.776 -10.227 958.08 -8.631 958.385 -9.919 959.289 -10.992 959.568 -12.143 959.722 -7.976 960.23 -10.572 960.606 -13.061 960.758 -10.197 961.287 -6.258 961.386 -9.264 961.691 -10.888 963.586 -2.972 964.114 -10.63 964.189 -9.568 964.591 -12.41 964.897 -11.269 965.647 -7.31 966.2 -18.068 966.879 -3.145 967.108 -10.974 967.263 -8.162 969.092 -11.565 969.218 -11.591 969.523 -15.112 970.053 -12.044 970.194 -11.75 970.422 -9.778 971.609 -6.379 971.685 -12.276 971.76 -12.726 972.609 -11.541 972.684 -12.067 973.211 -14.531 973.287 -3.866 973.402 -12.222 973.555 -12.372 973.694 -9.233 974.297 -11.175 974.372 -14.789 975.661 -7.569 976.265 -14.333 976.34 -15.422 976.715 -13.502 977.096 -12.593 977.888 2.768 979.339 -13.462 979.571 -7.642 979.646 -17.398 980.302 -10.601 981.745 -15.909 982.881 10.606 983.391 -15.628 983.668 -22.212 984.522 -18.228 984.674 -14.588 984.979 -18.081 986.121 -17.089 987.567 -13.803 988.326 -20.834 989.696 -14.994 990.001 -21.969 990.376 -11.534 991.057 -16.263 991.234 -14.526 991.339 -15.001 991.464 -15.786 991.943 -10.127 992.477 -15.983 993.158 -14.622 993.233 -19.217 993.429 -16.031 994.637 -19.033 994.797 -6.813 994.952 -17.808 995.105 -20.705 995.765 -19.095 996.448 -17.342 997.661 -19.879 998.34 -17.16 998.416 -18.034 999.334 -12.106 999.567 -17.033 1000.28 -16.95 1000.36 -17.02 1000.74 -16.39 1000.91 -18.22 1001.76 -18.06 1001.92 -18.55 1002.07 -19.59 1003.05 -21.02 1003.58 -18.76 1005 -20.33 1005.14 -17.44 1006.43 -21.87 1006.89 -21.57 1007.27 -9.7 1008.9 -21.18 1009.74 -20.07 1011.43 -14.33 1012.51 -18.86 1012.66 -18.86 1013.4 -20.05 1013.55 -17.66 1013.93 -18.84 1014.08 -21.22 1016.68 -18.93 1016.78 -16.82 1017.5 -13.08 1017.75 -18.82 1018.28 -18.44 1018.81 -15.09 1018.96 -15.97 1019.49 -16.7 1019.67 -16.06 1020.82 -26.4 1020.89 -19.8 1020.97 -23.4 1021.06 -19.51 1021.58 -20.65 1021.93 -20.41 1022.08 -21.15 1023.44 -21.08 1025.43 -25.32 1026.48 -19.25 1026.64 -23.95 1027.32 -21.19 1028 -17.88 1028.24 -21.24 1029.38 -20.26 1031.61 -25.06 1031.75 -25.91 1032.1 -22.7 1032.47 -16.72 1032.89 -17.02 1034.03 -22.27 1034.19 -21.95 1034.46 -27.19 1035.13 -22.99 1036.04 -16.83 1037.1 -15.92 1038.69 -22.28 1038.99 -23.79 1039.14 -22.09 1039.67 -22.13 1039.9 -22.58 1040.9 -18.4 1041.28 -16.23 1043.09 -20.96 1043.6 -19.03 1043.87 -24.16 1044.91 -24.31 1045.74 -20.28 1046.89 -22.18 1046.98 -18.04 1047.51 -22.52 1048.8 -21.81 1050.57 -21.43 1051.46 -23.95 1051.61 -22.74 1051.84 -24.08 1052.1 -22.4 1052.85 -23.82 1053.48 -23.68 1053.86 -23.15 1053.94 -25.21 1054.85 -23.08 1055.05 -24.21 1055.87 -24.4 1055.94 -22.06 1056.1 -23.26 1056.98 -22.54 1057.32 -15.71 1058.31 -24.38 1059.08 -14.1 1060.18 -22.96 1063.43 -23.29 1063.59 -21.85 1064.32 -20.96 1065.38 -18.18 1066.43 -21.48 1066.56 -24.83 1066.72 -21.74 1067.4 -24.74 1067.47 -22.36 1067.55 -20.49 1068.4 -22.71 1068.68 -21.44 1068.83 -21.6 1069.55 -19.97 1069.73 -20.55 1070.34 -32.66 1072.9 -62.82 1073.42 -20.73 1075.96 -22.42 1076.11 -20.28 1076.33 -25.76 1076.7 -24.24 1076.86 -23.11 1078.41 -20.34 1079.53 -19.45 1079.6 -24.49 1079.69 -24.32 1079.85 -24.54 1081.46 -13.22 1082.19 -24.66 1082.34 -21.34 1082.42 -22.65 1082.5 -18.16 1083.02 -19.82 1083.17 -23.53 1083.33 -24.35 1084.16 -19.37 1084.78 -25.43 1085.16 -24.65 1085.6 -26.14 1085.75 -8.25 1086.48 -18.52 1086.86 -19.68 1087.34 -23.25 1087.49 -19.73 1087.72 -23.1 1087.95 -28.1 1088.68 -22.21 1089.33 -24.52 1089.86 -27.53 1090.51 -24.32 1090.66 -21.23 1091.03 -17.18 1092.48 -18.58 1092.55 -22.05 1093.46 -24.46 1094.73 -22.23 1095.18 -24.04 1095.38 -21.86 1095.76 -24.6 1096.28 -21.95 1096.59 -22.32 1097.73 -30.62 1098.33 -20.28 1098.46 -33.22 1098.84 -23.55 1099.14 -24.37 1100.08 -24.79 1100.23 -22.82 1100.54 -25.06 1101.36 -31.86 1102.14 -1.77 1102.55 -22.75 1102.7 -23.05 1102.96 -37.46 1103.33 -19.57 1103.68 -21.47 1104.86 -23.65 1105.16 -27.13 1106.22 -24.16 1106.61 -27.9 1106.91 -20.53 1107.22 -22.18 1108.37 -28.39 1109.43 -21.26 1110.1 -52.2 1110.2 -26.88 1110.84 -28.13 1111.02 -25.97 1112.07 -28.2 1113.07 -26.21 1113.78 -24.48 1113.86 -26.75 1113.96 -27.11 1114.11 -31.64 1116.29 -26.36 1117 -24.22 1117.16 -29.21 1118.19 -31.85 1118.27 -24.83 1118.5 -23.63 1118.57 -14.25 1119.1 -27.42 1119.25 -23.03 1119.85 -25.45 1120 -23.86 1120.1 -26.12 1121.26 -28.09 1124.3 -25.66 1124.39 -19.24 1124.77 -24.96 1125.77 -22.31 1126.08 -21.62 1127.31 -23.41 1127.91 -26.69 1128.59 -69.41 1128.82 -26.65 1129.73 -27.09 1130.53 -19.89 1130.68 -27.7 1131.06 -18.06 1131.13 -24.25 1131.21 -29.64 1131.5 -28.19 1131.65 -26.42 1132.18 -20.61 1132.41 -27.03 1132.96 -24.69 1133.89 -26.28 1134.94 -24.82 1136.52 -24.64 1137.32 -26.43 1137.85 -23.77 1138.38 -27.41 1138.45 -18.06 1138.53 -25.06 1138.77 -26.04 1139.3 -29.97 1139.83 -26.27 1140.05 -26.35 1141.06 -29.27 1142.43 -29.6 1143.79 -25.93 1144.25 -35.99 1144.92 -27.97 1146.24 -26.02 1146.4 -23.62 1146.48 -26.25 1146.72 -25.86 1147.36 -25.9 1147.51 -27.52 1147.77 -28.59 1147.92 -26.81 1148.08 -27.78 1148.98 -25.9 1149.13 -27.83 1150.88 -30.95 1151.11 -31.12 1151.87 -28.29 1152.86 -28.62 1152.94 -28.98 1153.04 -25.56 1153.11 -28.97 1153.23 -24.18 1154.89 -24.67 1154.97 -30.67 1155.42 -25.31 1156.32 -29.17 1157.62 -26.66 1157.85 -25.89 1159.21 -27.57 1159.52 -27.19 1159.67 -33.16 1160.35 -24.39 1160.43 -27.16 1161.48 -31.04 1161.79 -26.4 1162.1 -25.72 1162.25 -26.25 1162.63 -30.73 1163.38 -30.43 1163.45 -19.92 1163.53 -23.34 1163.79 -26.43 1163.94 -25.71 1164.55 -29.63 1164.69 -31.7 1164.85 -24.95 1166.12 -29.06 1166.2 -28.12 1167.28 -52.58 1167.36 -27.47 1167.67 -19.73 1167.82 -27.66 1168.35 -28.35 1169.49 -29.04 1169.56 -29.19 1169.8 -29.1 1170.41 -19.66 1170.48 -29.56 1170.93 -19.97 1171.32 -29.81 1171.92 -29.41 1172 -27.89 1172.38 -29.74 1173.2 -29.52 1173.88 -29.6 1174.11 -28.76 1175.69 -26.74 1175.84 -28.01 1176.46 -26.94 1178.16 -30.63 1178.53 -28.07 1178.76 -32.64 1179.28 -28.45 1179.76 -30.49 1179.91 -27.45 1180.14 -35.64 1181.65 -27.45 1182.79 -26.16 1183.78 -31.7 1183.94 -32.37 1184.92 -27.39 1185.22 -29.22 1185.75 -26.79 1185.91 -27.99 1187.11 -26.94 1187.29 -26.15 1188.35 -22.97 1190.23 -27.38 1190.83 -31.99 1191.09 -29.21 1191.37 -28.11 1191.67 -29.3 1192.35 -30.32 1192.6 -39.47 1193.28 -33.78 1195.45 -34.36 1197.19 -29.13 1197.87 -32.62 1198.26 -38.28 1199.46 -32.76 1199.92 -49.62 1200.12 -28.12 1201.23 -27.47 1201.44 -35.2 1202.42 -31.01 1202.8 -27.8 1202.87 -32.34 1202.95 -28.21 1203.32 -32.26 1204.16 -32.79 1205.12 -30.2 1205.65 -38.19 1206.5 -29.76 1208.5 -33.47 1210.1 -31.57 1210.34 -28.05 1210.5 -16.85 1211.02 -33.85 1211.17 -37.01 1211.25 -31.75 1211.4 -31.41 1212.33 -32.91 1212.46 -31.6 1213.6 -35.31 1214.97 -33.37 1215.35 -32.08 1215.58 -33.49 1216.86 -33.91 1216.93 -35.47 1217.66 -32.51 1218.27 -33.15 1219.17 -33.99 1219.32 -35.26 1220.34 -44.05 1223.06 -32.05 1224.14 -31.51 1224.36 -34.77 1224.52 -31.78 1224.97 -27.96 1226.34 -32.87 1226.42 -32.18 1226.49 -34.2 1226.57 -33.52 1226.81 -31.06 1227.83 -29.54 1228.82 -30.92 1229.96 -38.74 1230.69 -31.75 1230.76 -41.4 1231.46 -39.87 1232.22 -30.59 1233.17 -32.13 1233.55 -31.44 1233.72 -31.42 1233.8 -33.29 1233.87 -32.54 1234.15 -36.35 1234.52 -33.65 1235.12 -32.35 1235.35 -37.87 1236.43 -33.7 1236.65 -41.14 1236.75 -34.05 1236.83 -39.61 1237.66 -29.96 1237.78 -37.88 1238.33 -31.35 1238.56 -36.94 1239.54 -33.24 1240.3 -12.26 1241.52 -38.58 1243.61 -28.18 1244.13 -31.9 1244.51 -33.35 1245.4 -33.72 1245.55 -21.47 1245.62 -34.93 1246.22 -32.75 1246.6 -40.75 1246.83 -33.12 1246.92 -32.66 1248.23 -32.47 1248.31 -36.19 1249.59 -35.67 1250.01 -37.49 1250.79 -30.75 1251.02 -36.86 1251.17 -35.81 1251.7 -30.68 1251.78 -42.36 1251.93 -36.87 1252.07 -38.16 1252.22 -34.08 1252.38 -40.85 1252.75 -35.44 1252.9 -28.18 1253.11 -30.99 1253.91 -37.21 1254.94 -43.14 1256.46 -35.51 1257.4 -36.36 1258.28 -36.8 1258.38 -32.89 1258.48 -33.19 1258.86 -40.48 1260.12 -38.69 1260.54 -39.44 1260.84 -34.62 1261.52 -31.86 1261.68 -35.79 1261.75 -39.21 1261.92 -36 1262.4 -38.41 1262.71 -47.37 1263.24 -32.94 1263.47 -33.92 1263.55 -36.1 1263.68 -34.83 1264.06 -31.7 1264.43 -28.07 1264.74 -40.78 1265.14 -34.36 1266.19 -31.12 1266.27 -35.88 1266.42 -37.28 1266.5 -34.39 1267.61 -34.76 1267.68 -35.73 1269.16 -33.31 1269.23 -34.63 1269.69 -44.36 1269.84 -37.9 1270.73 -37.24 1271.6 -35.99 1271.91 -36.83 1274 -32.9 1274.85 -34.31 1274.97 -30.7 1275.88 -54.7 1275.95 -34.22 1276.63 -33.69 1276.79 -32.22 1277.42 -33.64 1278.11 -31.89 1279.07 -33.59 1279.67 -32.58 1279.75 -35.36 1280.7 -39.02 1281.18 -40.99 1281.9 -35.57 1282.5 -36.04 1283.89 -30.31 1286.08 -33.33 1286.24 -36.84 1286.39 -33.48 1287.22 -40.23 1287.38 -34.55 1287.45 -32.12 1287.6 -30.66 1288.59 -32.27 1289.27 -34.81 1289.43 -32.27 1291 -32.84 1291.08 -32.84 1291.46 -34.5 1293.08 -28.24 1293.31 -32.93 1293.84 -36.37 1293.99 -32.85 1294.37 -28.86 1294.67 -35.23 1295.66 -31.1 1295.81 -33.03 1297.92 -29.01 1298.17 -36.06 1298.96 -32.15 1300.62 -31.44 1300.69 -30.58 1300.77 -28.9 1301 -26.17 1301.53 -38.17 1301.6 -31.69 1302.93 -31.15 1306.52 -28.24 1307.22 -25.31 1307.32 -30.4 1307.47 -27.9 1308.85 -32.9 1311.93 -33.81 1312.23 -28.53 1312.47 -37.6 1313.2 -30.22 1314.28 -30.07 1314.44 -31.14 1314.86 -21.59 1315.39 -22.49 1315.62 -28.48 1316.62 -24.25 1316.7 -28.8 1317.01 -26.56 1317.38 -28.53 1317.61 -24.93 1317.76 -29.08 1318.65 -29.79 1319.56 -36.99 1320.27 -28.3 1320.35 -29.13 1320.8 -34.69 1321.18 -25.96 1321.33 -30.36 1321.7 -35 1322.35 -36.09 1323.1 -28.25 1323.8 -25.87 1324.5 -27.03 1324.96 -27.58 1325.33 -23.54 1325.64 -25.11 1326.77 -24.51 1326.85 -27.36 1327 -28.04 1327.6 -27.96 1328.27 -27.75 1329.36 -33.31 1329.51 -23.45 1330.83 -26.25 1331.82 -26.95 1332.77 -28.81 1332.85 -27.43 1333.08 -24.83 1333.83 -25.09 1334.36 -29.02 1334.44 -25.92 1334.66 -25.79 1334.82 -21.05 1335.53 -30.49 1336.89 -20.72 1337.13 -23.76 1338.01 -23.88 1339.21 -30.01 1339.97 -23.85 1342.2 -26.14 1342.58 -24.25 1343.47 -20.5 1344 -23.55 1344.91 -23.27 1346.07 -22.42 1346.79 -19.47 1347.4 -20.68 1347.6 -19.64 1348.34 -5.78 1348.88 -31.37 1349.11 -25.26 1349.84 -20.82 1351.24 -19.57 1351.4 -21.28 1351.77 -19.19 1351.92 -28.88 1352.24 -21.5 1352.47 -26.87 1353.5 -19.93 1353.66 -19.92 1355.16 -23.35 1355.53 -23.97 1355.76 -21.26 1356.65 -23.53 1356.81 -21.92 1356.92 -22.05 1357.24 -20.19 1357.77 -26.89 1358.3 -22.09 1359.35 -13.45 1360.1 -22.08 1360.22 -28.06 1361.86 -21.38 1362.01 -20.39 1362.91 -24.58 1363.18 -20.64 1365.5 -16.51 1365.65 -20.55 1366.76 -21 1367.13 -20.21 1367.62 -20.29 1368.8 -19.97 1369.69 -25.47 1370.15 -24.05 1370.3 -20.71 1370.83 -18.79 1370.98 -29.32 1371.13 -14.28 1371.66 -11.05 1371.84 -21.9 1371.91 -22.47 1373.74 -23.3 1373.82 -20.81 1374.63 -20.68 1374.93 -22.04 1375.05 -20.75 1376.34 -20.54 1376.71 -21.57 1377.37 -22.47 1378.04 -22.33 1378.42 -18.86 1379.93 -20.22 1380.83 -20.3 1380.91 -21.31 1380.98 -26.04 1381.08 -16.88 1381.4 -16.04 1382.65 -25.14 1383.02 -20.59 1384.45 -22.65 1384.57 -22.85 1384.72 -20.64 1384.88 -18.47 1385.03 -17.87 1385.13 -19.86 1385.96 -22.2 1386.04 -23.29 1386.31 -19.51 1386.47 -17.82 1386.84 -25.97 1386.96 -21.45 1387.27 -18.4 1388.2 -14.92 1388.29 -21.55 1390.96 -23.94 1391.03 -21.63 1392.82 -21.93 1393.66 -25.33 1393.87 -22.12 1395.75 -5.45 1397.24 -16.7 1397.38 -25.5 1397.63 -23.54 1398.38 -21.24 1400.17 -19.75 1400.72 -24.37 1401.02 -15.12 1401.25 -21.94 1401.63 -22.62 1402.65 -15.73 1404.61 -18.12 1404.77 -20.85 1405 17.82 1407.06 -20.5 1407.59 -9.01 1407.89 -17.81 1408.73 -25.79 1409.9 -18.1 1410.05 -19.76 1410.33 -20.16 1411.01 -21.17 1411.46 -18.2 1411.84 -18.13 1412.07 -18.97 1412.69 -18.65 1412.89 -16.39 1413.87 -17.09 1413.95 -20.41 1414.43 -18.12 1416.22 -20.16 1416.31 -19.44 1416.84 -19.29 1416.92 -15.92 1416.99 -18.63 1417.07 -19.21 1417.22 -17.02 1417.53 -15.87 1419.24 -17.44 1419.31 -19.59 1419.46 -23.52 1420.24 -18.96 1420.4 -11.4 1420.55 -21.85 1422.12 -17.23 1422.4 -15.74 1422.77 -24.95 1423.11 -20.38 1423.92 -12.91 1424.31 -17.64 1424.61 -17.24 1425.25 -22.74 1425.32 -19.16 1425.41 -17.89 1425.48 -20.29 1425.88 -16.22 1426.25 -21.84 1426.56 -17.77 1427.52 -18.43 1427.6 -10.08 1427.75 -15.98 1428.51 -17.72 1428.59 -18.55 1428.66 -17.18 1428.74 -18.61 1429.68 -22.27 1429.76 -3.49 1430.43 -14.81 1430.95 -4.3 1431.22 -23.27 1431.3 -17.85 1431.45 -15.46 1432.66 -19.13 1432.84 -16 1432.91 -17.44 1436.76 -19.12 1437.06 -20.58 1437.81 -15.47 1438.1 -10.9 1439.24 -18 1439.49 -16.54 1440.02 -16.84 1440.17 -16.92 1440.32 -17.01 1440.77 -13.35 1441 -17.4 1441.08 -19.76 1441.45 -15.57 1441.68 -15.49 1442.54 -17.47 1442.85 -16.02 1442.93 -15.69 1443.69 -17.72 1443.84 -18.09 1444.75 -14.65 1445.63 -15.14 1447.07 -17.35 1448.35 -15.18 1448.5 -16.52 1450.17 -12.49 1451.17 -15.57 1451.4 -15.03 1452.13 -14.46 1452.43 -17.79 1454.26 284.62 1455.02 -13.91 1455.25 -15.65 1456.25 -12.3 1456.93 -14.05 1457.3 -15.05 1457.37 -15.52 1457.6 -13.84 1458.23 -16.02 1458.54 -18.07 1459.58 -14.82 1459.65 -12.87 1459.97 -19.6 1460.22 -13.04 1460.59 -14.82 1461.12 -10.85 1461.74 -9.4 1462.54 -14.97 1462.93 -11.8 1463.08 -15.43 1463.16 -16.97 1463.68 -11.57 1463.76 -13.04 1463.92 -14.85 1464.16 -9.25 1464.31 -16.2 1464.84 -17.73 1465.44 -16.76 1465.6 -10.11 1465.9 -6.38 1466.51 -6.54 1466.66 -10.25 1467.05 -14.62 1467.66 -15.3 1467.81 -13.23 1467.9 -16.82 1468.82 -14.3 1469.27 -16.8 1470.48 -14.16 1470.71 -8.75 1472.11 -15.82 1473.06 -12.56 1473.31 -11.52 1474.64 -9.32 1475.63 -7.1 1475.78 -13.19 1476.31 -9.92 1476.54 -18.19 1477.32 -14.93 1478.2 -18.77 1478.66 -10.16 1479.9 -12 1480.05 -23.04 1480.95 -11.93 1481.17 -10.2 1481.27 -14.56 1482.36 -10.92 1482.44 -21.05 1482.51 -9.47 1482.67 -10.36 1483.65 -11 1483.96 -7.13 1484.26 -11.87 1484.64 -13.53 1484.75 -18.47 1484.9 -15.72 1485.28 -13.64 1487.42 -13.35 1487.58 -17.16 1487.65 -9.84 1487.73 -15.12 1487.87 -10.14 1488.55 -18.83 1488.78 -12.37 1489.71 -6.73 1489.78 -13.14 1490.12 -15.4 1490.72 -11.68 1491.05 -11.95 1491.33 -15.35 1491.7 -13.98 1492.15 -14.99 1492.84 -9.03 1493.44 -25.65 1494.64 -10.48 1494.9 -9.46 1495.38 0.89 1496.62 -13.08 1496.77 -12.29 1497.71 -12.89 1497.86 -11.66 1498.06 -16.9 1498.43 -12.52 1499.1 -11.58 1499.33 -5.64 1499.62 -22.76 1499.7 -15.1 1500.22 -13.4 1500.38 -13.01 1501.06 -17.5 1501.6 20.74 1502.05 -16.36 1502.36 -15.59 1503.15 -8.4 1503.52 -12.77 1503.68 -14.12 1504.71 -4.74 1505.07 -4.3 1505.72 -15.16 1506.03 -17.12 1506.1 -13.91 1506.25 -17.12 1506.85 -10.35 1507.69 -15.3 1507.84 -12.51 1507.99 -21.38 1508.14 -16.15 1509.11 -20.5 1509.49 -14.28 1511.51 -14.55 1511.68 -13.85 1511.77 0.37 1511.88 -14.79 1512.26 -18.03 1512.56 -17.81 1513.4 -9.82 1513.48 -2.05 1513.64 -3.4 1514.15 -12.22 1514.45 -11.76 1514.6 -9.54 1515.28 -6.95 1515.81 -14.17 1515.88 -17.02 1516.19 -12.8 1516.34 -7.19 1517.02 -17.28 1517.14 -16.05 1518.85 -15.14 1518.92 -13.83 1519.65 -11.55 1519.73 -14.09 1519.84 -13.46 1519.92 -15.51 1519.99 -16.81 1520.71 -3.74 1521.08 -7.03 1521.44 -15.46 1521.71 -14.05 1521.87 -15.6 1522.39 -14.7 1523.05 -11.55 1523.43 -16.68 1524.13 -19.51 1525.1 -16.09 1525.18 -14.05 1525.25 -12.63 1525.4 -17.66 1525.64 -15 1525.71 -14.02 1526.09 -13.3 1526.42 -16.79 1526.57 -11 1526.8 -15.15 1527.17 -11.69 1527.47 -13.02 1528.25 -12.16 1528.48 -15.54 1529.13 -13.12 1529.57 -15.7 1529.88 -18.82 1530.61 -17 1530.91 -17.63 1531.37 -15.6 1531.77 -14.39 1532.07 -21.88 1533.36 -17.79 1533.82 -17.48 1534.97 -8.31 1535.11 -19.18 1535.34 -23.35 1535.87 -15.58 1536.25 -14.17 1536.71 -15.12 1537.23 -15.52 1537.67 -18.66 1538.35 -16.09 1538.96 -19.58 1539.27 -19.57 1539.74 -9.48 1540.08 -15.73 1540.55 -16.09 1540.71 -16.68 1540.87 -22.27 1541.94 -23.72 1542.09 -19.77 1542.17 -18.82 1542.42 -15.13 1543.1 0.12 1543.33 -16.87 1544.08 -18.89 1544.39 -23.91 1544.7 -10.58 1545.07 -18.23 1545.68 -12.4 1545.98 -12.25 1547.42 -18.47 1548.1 -15.66 1548.55 -23.95 1548.91 -20.17 1549.17 -12.92 1550.08 -0.19 1550.23 -18.69 1551.23 -21.12 1551.31 -21.42 1551.39 -18.9 1551.69 -15.8 1551.85 -19.28 1552.4 -20.41 1552.57 -21.01 1552.64 -19.03 1552.72 -22.12 1552.79 -18.44 1553.4 -20.25 1553.48 -16.58 1553.55 -20.43 1553.63 -21.14 1553.78 -13.86 1553.93 -12.26 1554.31 -17.28 1554.54 -17.28 1554.61 -15.95 1555.34 -19.28 1555.5 -19.5 1555.57 -20.34 1555.65 -19.44 1555.72 -20.27 1555.86 -20.88 1558.2 -16.49 1558.35 -14.61 1558.5 -18.79 1558.61 -18.81 1559.51 -18.41 1559.66 -19.48 1559.82 -17.98 1560.43 27.6 1560.84 -21.47 1560.91 -21.32 1560.99 -18.3 1561.44 -18.22 1561.64 -20.44 1561.72 -16.9 1561.88 -21.62 1562.04 -22.45 1562.11 1.19 1562.49 24.77 1562.79 -19.37 1563.62 -17.03 1563.77 -17.03 1563.85 44.07 1563.93 -20.87 1564.12 -19.54 1564.2 -18.22 1564.27 -20.37 1565.1 -20.63 1566.09 -18.25 1566.24 -24.87 1566.47 -16.5 1566.94 -18.54 1567.31 -19.98 1567.46 -20.64 1568.26 -18.39 1568.41 -17.72 1568.71 -20.56 1568.87 -22.55 1569.87 -21.93 1570.33 -21.16 1570.44 -22.04 1570.52 -19.66 1570.59 -19.67 1570.8 -22.23 1570.95 -19 1571.49 -22.3 1571.85 -19.41 1572.15 -17.43 1572.84 -21.45 1572.94 -19.75 1573.16 -19.17 1573.82 -20.62 1573.97 -12.84 1574.13 -18.43 1574.44 -19.12 1575.12 -21.22 1575.27 -20.08 1575.72 -21.64 1576.1 -20.01 1576.25 -21.18 1576.33 -19.7 1576.79 -18.94 1577.31 -19.67 1577.54 -36.9 1577.77 -16.36 1577.84 -20.83 1578.22 -19.39 1578.31 -19.41 1578.38 -21.54 1578.46 -19.05 1578.53 -21.46 1579.14 -18.73 1580.04 -19.8 1580.42 -20.94 1580.74 -18.79 1581.3 -19.91 1582.33 -22.17 1582.7 -20.02 1582.86 -17.81 1583.35 -26.17 1584.26 -18 1585.39 -19.57 1585.54 -21.29 1585.85 -18.19 1586.5 -20.64 1586.67 -20.55 1586.82 -25.55 1587.58 -20.7 1588.41 -23.63 1590.11 -20.92 1591.31 -19.27 1592.49 -22.48 1592.64 -20.34 1593.66 -18.16 1594.19 -22.89 1594.7 14.28 1595.48 -21.67 1596.67 -24.2 1596.93 -21.25 1597.31 -11.15 1598.47 -24.88 1598.56 -18.71 1598.81 -24.16 1599.27 -32.04 1599.8 -21.22 1600.38 -21.71 1600.77 -22.67 1601 -18.9 1601.61 -23.73 1601.68 -23.73 1602.6 106.92 1602.83 -25.85 1602.91 -21.53 1602.98 -24.51 1604.34 -20.55 1604.5 -23.08 1604.74 -23.04 1604.9 -18.69 1605.27 -18.77 1605.68 -18.67 1605.88 -23.3 1606.03 -19.15 1606.56 -7.41 1607.09 -26.19 1607.19 -21.69 1607.62 -20.84 1607.78 -18.42 1607.93 -26.28 1609 -23.1 1609.37 -20.64 1609.48 -14.72 1609.56 -48.42 1609.63 -23.8 1609.71 -23.8 1609.79 -22.22 1610 -19.63 1610.53 -19.95 1610.75 -24.59 1610.85 -24.73 1611.08 -25.12 1612.35 -22.79 1613.11 -23.25 1613.18 -21.26 1613.26 -20.35 1613.33 -25.2 1613.78 -25.01 1614.01 -20.05 1614.47 -21.36 1615.15 -22.62 1616.12 -24.29 1616.21 -22.72 1616.36 -33.62 1616.47 -25.5 1617.53 -23.63 1618.1 -24.55 1618.7 -25.73 1618.83 -21.95 1620.24 -29.36 1621.11 -23.49 1622.33 -25.8 1623.16 -20.21 1623.24 -25.18 1623.32 -21.18 1623.4 -26.93 1623.69 -25.07 1624.17 -22.65 1624.33 -28.62 1624.4 -19.95 1624.48 -21.15 1625.86 -20.76 1625.96 -20.96 1626.49 -26.99 1626.56 -25.94 1626.84 -26.26 1627.52 -25.21 1628.05 -33.48 1628.88 -18.19 1629.23 -23.62 1629.38 -21.26 1629.68 -29.19 1630.43 -22.15 1630.94 -23.83 1631.1 -24.87 1631.47 -22.53 1632.31 -23.51 1632.39 -25.11 1633.34 -26.34 1634.02 -22.23 1634.25 -24.26 1634.55 -19.91 1634.78 -24.39 1635.97 -22.71 1636.67 -24.7 1636.88 -26.56 1637.16 -21.86 1637.31 -22 1637.92 -24.82 1638.53 -26.35 1639.21 -24.76 1639.68 -23.51 1639.79 -26.15 1639.95 -26.76 1640.02 -23.02 1640.27 -25.14 1640.64 -23.18 1640.95 -16.14 1641.4 -24.16 1641.55 -26.21 1641.71 -25.96 1642.54 -23.32 1642.69 -21.88 1643.14 -14.26 1643.29 -22.73 1643.37 -23.56 1643.49 -24.42 1644.26 -17.95 1644.42 -23.89 1644.49 -25.9 1645.66 -24.05 1645.81 -23.64 1646.12 -17.23 1646.23 -24.51 1646.39 -24.26 1647.88 -20.58 1648.56 -28.23 1648.74 -25.53 1648.82 -25.68 1649.21 -26.11 1649.74 -22.78 1649.81 -25.38 1649.96 -28.71 1650.19 -25.43 1650.75 -25.06 1650.91 -21.99 1651.09 -26.23 1651.47 -28.36 1651.85 -24.71 1652.07 -25.41 1652.38 -26.14 1652.84 -23.35 1653.46 -24.38 1653.59 -26.96 1653.74 -30.75 1654.34 -23.06 1654.42 -24.33 1654.49 -24.11 1654.8 -24.62 1655.17 -24.91 1655.65 -27.61 1656.44 -24.26 1656.72 -37.86 1656.8 -24.58 1657.22 -24.37 1657.9 -26.9 1658.36 -25.45 1658.51 -25.15 1660.24 -26.5 1660.95 -19.22 1662.42 -25.36 1663.53 -26.54 1664.49 -25.72 1664.65 -25.8 1665.33 -25.57 1665.57 -24.42 1665.72 -26.36 1666.01 -22.79 1666.16 -27.61 1666.83 -25.93 1667.2 -34 1667.28 -25.55 1667.43 -25.48 1667.59 -30.02 1668.65 -28.56 1668.8 -23.13 1669.59 -21.69 1669.97 -24.54 1670.2 -28.51 1670.82 -24.76 1670.97 -24.08 1671.05 -27.29 1671.17 -31.39 1671.26 -24.8 1671.41 -24.8 1671.56 -24.8 1671.94 -29.57 1672.32 -26.11 1673.13 -22.75 1673.98 -25.83 1674.13 -26.24 1674.5 -25.05 1674.66 -27.38 1674.99 -0.03 1675.08 -27.23 1675.24 -26.12 1675.84 -25.21 1676 -28.51 1676.11 -28.12 1676.26 -33.74 1676.5 -23.72 1676.87 -28.39 1676.95 -22.44 1677.1 -18.63 1677.18 -26.74 1677.33 -22.74 1677.64 -25.23 1677.79 -23.11 1679.52 -24.48 1679.91 -27.21 1680.02 -26.95 1680.21 -27.87 1680.59 -27.34 1680.81 -25.96 1680.96 -27.59 1681.05 -26.73 1681.34 -24.53 1682.16 -26.3 1682.31 -22 1683.32 -26.77 1683.62 -27.61 1684.39 -24.93 1684.77 -27.84 1684.99 -24.17 1685.22 -29.79 1685.3 -27.56 1686.26 -26.51 1686.4 -28.08 1686.65 -26.37 1686.8 -22.89 1687.8 -27.71 1687.96 -31.04 1688.86 -29.99 1689.29 -26.06 1689.82 -24.07 1689.98 -19.03 1690.21 -26.21 1690.28 -24.92 1690.51 -30.75 1691.01 -28.37 1691.16 -26.93 1691.31 -29.8 1691.46 -27.08 1691.91 -26.29 1692.01 -25.03 1692.17 -26.53 1692.32 -21.85 1692.48 -24.93 1692.58 -27.01 1693.61 -23.12 1693.84 -31.02 1694.86 -31.13 1695.17 -33.11 1695.7 -22.73 1695.85 -28.83 1696.18 -26.09 1696.34 -29.13 1696.94 -28.89 1697.26 -26.43 1697.41 -26.01 1697.54 -28.07 1698.6 -31.73 1698.75 -27.01 1699.5 -27.64 1699.58 -27.64 1699.66 -28.77 1699.73 -27.56 1699.83 -28.8 1700.47 -27.13 1701.01 -33.4 1701.61 -26.9 1701.78 -27.52 1702.16 -27.48 1702.77 -27.94 1703.15 -32.78 1703.97 -38.89 1704.05 -28.03 1704.12 -26.66 1704.58 -26.35 1705.11 -26.82 1705.63 -27.95 1705.71 -28.93 1706.13 -27.6 1707.44 -27.58 1708.27 -29 1708.64 -27.6 1708.87 -28.28 1709.02 -43.06 1711.11 80.94 1711.56 -29.08 1711.71 -27.57 1712.47 -29.2 1712.86 -28.58 1713.39 -21.78 1714.08 -29.47 1714.24 -27.74 1714.61 -17.39 1714.99 -27.95 1715.22 -29.17 1715.48 -28.6 1716.37 -28.69 1716.52 -25.61 1717.68 -29.6 1717.77 -28.45 1718.35 -28.17 1719.01 -34.46 1719.16 -34.69 1719.47 -27.58 1720 -24.23 1720.08 -35.24 1720.23 -27.51 1720.38 -24.16 1720.54 -33.47 1720.69 -31.7 1721.37 -26.52 1721.45 -29.67 1721.7 -29.71 1722.76 -33.5 1723.91 -26.98 1724.2 -29.39 1724.5 -23.77 1724.81 -25.25 1725.19 -28.1 1725.88 -29.29 1727.04 -26.66 1727.34 -29.69 1728.19 -31.55 1728.38 -24.54 1729.49 -33.31 1729.95 -27.23 1730.33 -29.78 1730.48 -33 1730.92 -27.67 1732.16 -31.57 1733.12 -29.34 1733.2 -30.36 1734.01 -31.62 1734.18 -31.96 1734.5 -36.43 1735.03 -32.22 1735.18 -30.07 1735.26 -30.77 1735.34 -28.58 1735.97 -30.32 1736.09 -32.25 1736.23 -32.41 1736.38 -30.64 1736.73 -29.69 1737.1 -26.23 1737.25 -30.15 1737.41 -30.15 1737.8 -29.91 1738.48 -25.97 1738.63 -31.55 1739 -30.93 1739.31 -42.21 1740.52 -38.12 1740.67 -30.18 1740.93 -28.01 1741.39 -32.8 1741.99 -23.86 1742.15 -29.23 1742.71 -30.58 1743.09 -36.02 1743.5 -30.54 1744.61 -27.7 1744.7 -29.09 1745.42 -26.64 1745.51 -25.72 1745.74 -30.12 1746.04 -31.42 1746.87 -33.57 1747.13 -27.91 1747.44 -29.18 1748.06 -30.42 1748.2 -29.91 1748.29 -30.67 1748.37 -30.89 1748.44 -29.42 1749.38 -30.41 1749.63 -30.44 1751.15 -29.6 1751.3 -29.6 1751.58 -30.75 1752.76 -30.78 1752.86 -29.26 1753.03 -29.17 1753.18 -27.42 1753.6 -30.14 1753.98 -29.48 1754.45 -29.44 1754.61 -29.43 1755.29 -5.25 1755.52 -30.44 1755.59 -29.06 1755.96 -28.84 1757.06 -30.97 1757.59 -28.91 1758.04 -28.2 1758.21 -34.59 1758.9 -27.19 1759.13 -29.06 1759.59 -29.21 1760.65 -28.86 1760.96 -27.38 1761.11 -29.92 1761.26 -27.92 1762.1 -28.46 1762.6 -29.05 1762.79 -29.25 1762.94 -26.39 1763.4 -28.87 1764.68 -26.04 1764.83 -25.2 1764.99 -23.51 1765.62 -19.76 1765.99 -25.2 1766.15 -25.65 1766.25 -28.22 1767.07 -43.11 1767.38 -26.84 1767.45 -27.98 1768.21 -26.39 1768.74 -27.79 1769.35 -26 1769.5 -28.63 1771.16 -31.28 1771.31 -32 1772.08 -31.14 1772.23 -26.2 1774.1 -26.36 1774.35 -24.9 1774.97 -26.25 1776.12 -64.8 1776.42 -26.17 1778.34 -27.41 1779.27 -25.02 1779.35 -25.17 1779.44 -26.21 1779.7 -28.43 1780.23 -21.51 1780.68 -25.87 1781.29 -25.94 1781.9 -22.24 1782.68 -28.81 1782.83 -25.83 1783.71 -26.55 1783.86 -21.26 1784.1 -28.5 1784.4 -24.95 1785.38 -27.84 1785.46 -25.86 1785.98 -19.92 1786.53 -24.04 1786.83 -25.08 1787.92 -21.27 1788.52 -23.99 1788.67 -24.08 1789.22 -22.53 1789.37 -30.31 1789.46 -21.94 1790.51 -25.41 1791.34 -23.01 1791.43 -25.89 1792.27 -26.19 1792.5 -11.11 1792.68 -24.57 1792.98 -24.11 1793.82 -19.09 1795.01 -22.46 1795.16 -20.24 1795.75 -18.99 1797.84 -19.79 1797.99 -21.01 1798.67 -14.39 1798.98 -19.71 1799.28 -21.4 1799.58 -31.19 1800.49 -23.66 1800.86 -17.07 1801.09 -20.19 1802 0.94 1802.08 -20.45 1802.6 -21.4 1803.1 -24.09 1803.54 -22.24 1804.3 -18.38 1804.55 -18.29 1805.24 -21.77 1805.39 -20.7 1806.48 -23.68 1806.78 -21.47 1807.69 -19.17 1807.78 -21.77 1808.13 -19.29 1808.28 -16.18 1808.81 -16.11 1809.12 -18.98 1809.86 -16.91 1810.47 -19.54 1810.84 -19.85 1811.68 -27.28 1811.83 -27.29 1812.2 -14.42 1812.36 -21.75 1813.5 -20.51 1814.02 -42.66 1814.18 -15.67 1815.04 -15.97 1815.95 -15.21 1816.1 -17.04 1816.41 -19.32 1816.71 -16.8 1817.66 -11.8 1818.69 -15.05 1818.84 -21.05 1818.92 -17.7 1818.99 -18.61 1819.46 -18.82 1819.83 12.23 1820.06 -12.23 1820.35 -16.06 1820.8 -18.78 1821.32 -15.9 1821.47 -23.61 1822 -10.44 1822.19 -20.49 1822.5 -15.25 1822.65 -15.94 1822.8 -21.01 1823.18 -21.43 1823.33 -18.07 1823.7 -19.58 1824.08 -18.85 1824.38 -16.04 1826.29 -8.94 1826.6 -17.66 1827.43 -18.21 1827.88 -15.12 1828.09 -19.75 1828.32 -14.81 1828.47 -17.33 1828.93 -25.25 1829.31 -18.75 1829.62 -14.88 1829.78 -13.65 1830.15 -12.68 1830.31 -11.39 1830.43 -14.91 1830.69 -13.27 1831.83 -21.18 1832.2 -14.6 1832.43 -15.48 1832.7 -17.36 1832.85 -8.7 1833.23 -2.25 1833.45 -9.16 1833.61 -19.66 1833.74 -10.37 1833.9 -11.33 1835.31 -13.06 1835.39 -11.24 1835.53 -14.66 1835.98 -11.78 1836.51 -13.9 1836.59 -18.92 1836.74 -14.84 1838.03 -11.25 1838.77 -15.49 1839.14 -10.8 1839.67 -14.28 1839.82 -14.75 1839.94 -10.78 1840.22 -12.56 1840.37 -15.51 1840.52 -10.05 1841.28 -15.77 1841.58 -6.64 1841.85 -10.09 1842.93 -11.18 1843.46 -2.86 1843.55 -25.44 1844.08 -2.85 1844.23 -12.91 1844.31 -11.29 1844.46 -12.97 1845.45 8.68 1845.6 -12.67 1845.68 -9.76 1845.83 -13.73 1846.08 -6.54 1846.23 -12.5 1846.61 -19.6 1846.76 -10.83 1847.13 -12.83 1847.96 -9.94 1848.19 -10.31 1848.56 -26.16 1848.72 -11.39 1849.47 -11.43 1849.78 -11.57 1850.38 -9.11 1850.61 -6.67 1851.22 -9.98 1851.68 -14.69 1852.59 -15.42 1853.05 -9.21 1853.65 -12.8 1853.98 -15.97 1854.14 -9.67 1855.62 -10.07 1855.77 -5.28 1856.5 -8.67 1856.73 -13 1856.96 -9.95 1857.11 -9.49 1858.16 -11.36 1858.27 -9.58 1858.58 -5.99 1859.05 -9.11 1860.9 -13.22 1861.05 -5.7 1861.95 -11.85 1862.32 -15.74 1862.93 -6.72 1863.02 -13 1863.48 -8.99 1864.01 -13.12 1864.16 -15.22 1864.48 -7.84 1864.9 -9.75 1865.58 -5.98 1866.41 -8.77 1866.64 -14.07 1866.75 -9.58 1867.12 -10.13 1867.65 -8.21 1867.8 -12.76 1867.95 -7.08 1868.03 -11.43 1868.33 -12.77 1869.09 -7 1869.47 -9.26 1870.27 -5.98 1870.88 -10.89 1870.96 -7.43 1871.03 -10.99 1872.54 -2.79 1874.39 -9.68 1874.85 -8.04 1875 -14.34 1875.6 -6.02 1875.7 -8.69 1876.15 -9.08 1877.55 -12.32 1878.76 -6.62 1879.12 -5.16 1879.27 -0.61 1879.43 -5.26 1880.26 -6.63 1880.34 -8.46 1880.49 -6.32 1880.65 -8.06 1881.18 -13.58 1881.75 -9.07 1882.59 -0.76 1882.69 -9.96 1883 -7.02 1883.36 -7 1884.37 -9.53 1884.44 -9.57 1884.82 -8.69 1884.94 -7.95 1885.1 -6.53 1886.28 -4.23 1887.6 -11.23 1887.75 -4.3 1888.53 -6.94 1888.77 -1.9 1888.92 -4.75 1889.23 -7.6 1889.38 -7.98 1890.06 -56.1 1890.13 -7.41 1890.21 -8.78 1890.3 -7.47 1890.75 -6.69 1890.91 -4.41 1890.99 -7.93 1891.59 -6.34 1891.97 -23.13 1892.27 -10.12 1892.35 -8.67 1892.98 -9.18 1893.1 -10.59 1893.25 -11.12 1893.33 -22.72 1893.5 -6.37 1893.65 -14.12 1894.18 -3.03 1894.9 -6.04 1895.27 -9.39 1895.49 8.07 1895.72 -9.45 1896.54 -5.47 1896.77 -7.96 1897.01 -2.13 1897.16 -5.53 1898.08 -9.39 1898.65 -4.57 1899.4 -4.6 1899.71 -8.96 1900.02 -8.28 1900.39 -7.23 1900.55 -6.55 1900.84 -3.97 1900.93 -17.87 1901 -11.55 1902.51 -7.39 1902.74 -8.3 1902.97 -7.16 1903.12 -4.81 1903.6 -6.68 1903.75 -7.67 1903.91 -10.2 1904.31 -7.26 1905.22 -5.89 1905.38 -7.44 1906.57 -12.09 1907.18 -17.99 1907.55 -6.41 1907.71 -7.81 1907.9 -1.31 1908.05 -11.92 1908.51 -6.06 1908.89 -7.37 1909.56 -9.77 1909.72 -6.88 1909.81 -9.15 1909.88 -9.15 1910.01 -10.16 1910.58 -5.76 1910.73 -7.1 1910.88 -12.2 1911.04 -10.28 1911.31 -5.6 1912.14 -10.85 1912.21 -8.2 1913.58 -10.12 1913.73 -11.3 1914.41 -6.68 1914.57 -6.37 1914.94 -6.99 1915.25 -8.6 1916.25 -10.17 1917.72 -13.63 1917.87 -6.36 1918.02 -3.15 1918.26 -6.61 1918.73 -10.06 1918.89 1.61 1918.97 -7.1 1919.25 -11.47 1920.01 -8.86 1920.32 -8.92 1920.84 -9.08 1921.18 -6.78 1921.86 -4.86 1922.09 -5.56 1922.19 -7.98 1922.34 -5.47 1923.49 -9.85 1923.64 -6.93 1923.95 -2.93 1925.08 -7.72 1925.42 -6.08 1925.51 -6.61 1926.69 -10.32 1926.85 -7.3 1926.98 -7.63 1927.36 -4.61 1927.66 -6.21 1927.74 -7.47 1927.81 -10.19 1927.89 -6.06 1927.97 -4.98 1928.12 -11.7 1928.49 9.3 1928.65 -5.07 1928.8 -6.49 1929.87 -0.54 1929.95 -9.18 1930.25 -6.92 1930.34 -7.95 1930.81 -5.65 1930.97 -4.57 1931.04 -6.89 1931.12 -7.93 1931.21 -9.99 1931.3 -5.45 1932.61 -10.97 1932.9 -1.56 1933.28 -9.82 1933.73 -9.2 1934.5 -7.31 1934.72 -9.16 1935.13 -8.6 1935.5 -53.59 1935.65 -2.05 1935.75 -9.39 1935.83 -7.02 1935.9 -10.17 1936.06 -8.05 1936.29 -4.38 1936.8 -9.81 1937.19 -3.03 1937.65 -8.66 1938.02 -12.02 1938.18 -7.26 1938.33 -3.63 1938.41 -8.8 1938.48 -5.33 1938.56 -8.73 1938.71 -8.8 1939.08 -8.51 1939.16 -8.98 1939.24 -5.71 1939.6 -8.73 1940.06 -7.08 1940.21 -10.82 1940.36 -4.93 1940.53 -10.27 1940.6 -10.28 1940.88 -4.94 1941.26 -8.17 1941.61 -10.71 1941.76 -7.9 1942.07 -7.82 1943.02 -9.14 1943.42 -9.4 1944.1 -7.78 1944.18 -3.78 1944.25 -7.79 1944.35 -11.46 1944.82 -9.54 1944.97 15.95 1945.05 -6.91 1945.2 -8.36 1946.18 -8.79 1946.86 -15.4 1948.51 -8.57 1948.66 -8.57 1948.81 -10.39 1948.97 -9.77 1949.88 -10.99 1949.97 -10.98 1950.74 -7.32 1950.93 -6.01 1951.28 -8.23 1951.8 -12.66 1951.89 -8.15 1952.35 3.07 1953 -2.13 1953.46 -7.26 1953.76 -11.49 1953.92 -5.13 1954.71 -21.93 1955.34 5.83 1955.5 -9.9 1955.68 -6.78 1955.83 -6.91 1957.4 -6.25 1957.55 -12.24 1957.93 -9.96 1958.08 -7.69 1958.23 -9.06 1958.74 -7.95 1959.12 -11.77 1959.85 -7.37 1960.53 -8.95 1961.29 -5.25 1962.05 -6.97 1962.35 -23.46 1963.11 -5.83 1964.18 -8.73 1964.34 -5.29 1964.57 -16.06 1964.8 -9.46 1964.95 -7.27 1965.48 -5.87 1965.71 -7.68 1965.8 -6.58 1967.02 -10.17 1967.1 -12.47 1967.96 -9.52 1968.03 -9.06 1968.34 -6.23 1968.49 -7.38 1968.8 -4.66 1969.18 -9.39 1969.41 -5.54 1969.79 -7.15 1969.94 -8.48 1970.62 -7.38 1970.7 -6.32 1970.77 -31.02 1971.13 -12.85 1971.66 -7.74 1972.26 -9.87 1972.5 -11.86 1972.68 -10.7 1972.83 -11.99 1973.32 -11.19 1973.59 -7.35 1973.69 -8.04 1973.77 -8.52 1973.92 -7.44 1974.3 -13.13 1974.45 -8.46 1974.6 -10.07 1975.01 -14.85 1975.65 -7.96 1975.8 -14.21 1976.28 -10.21 1976.44 -9.67 1977.2 -9.51 1977.46 -15.28 1977.61 -20.21 1978.1 -8.54 1978.78 -4.44 1978.85 -13.69 1979.08 -16.28 1979.15 -6.81 1979.23 -14.78 1981.69 -7.86 1982.63 -5.17 1982.78 -13.32 1983.72 -5 1984.1 -9 1984.2 -8.64 1984.36 -9.94 1984.98 -10.68 1985.21 -11.57 1986.13 -13.11 1986.2 -10.75 1986.28 -10.6 1986.36 -12.72 1986.51 -13.9 1987.01 -9.7 1987.24 -10.49 1987.32 -15.47 1987.55 -10.08 1987.7 -10.7 1988.23 -10.7 1988.91 -15.26 1989.22 -14.61 1989.37 -14.69 1989.53 -6.29 1989.83 -15.03 1990.21 -19.95 1990.51 -9.98 1991.7 -11 1991.93 -12.01 1992.03 -10.96 1992.71 -22.24 1992.78 -13.78 1992.87 -12.38 1993.02 -7.78 1994.15 -15.48 1994.24 -13.61 1994.54 -19.35 1994.7 -11.54 1995.38 -15.13 1995.84 -13.22 1996.75 -16.49 1997 -25.61 1997.14 -13.52 1998.2 -18.2 1998.58 -13.14 1998.86 -12.1 2000.07 -20.03 2000.38 -16.99 2001.18 18.64 2001.31 -41.14 2001.46 -18.49 2002.59 -14.25 2002.69 -20.6 2003 -9.18 2004.21 -17.26 2004.67 -15.12 2005.35 -14.91 2005.58 -12.7 2005.85 -18.29 2006 -18.82 2006.15 -25.85 2006.83 -17.17 2006.98 -24.64 2007.14 -22.15 2007.24 -19.31 2007.39 -27.34 2007.55 -14.38 2009.79 -8.64 2009.94 -15.57 2010.47 -17.52 2010.62 -17.22 2011.04 -21.11 2011.18 -16.35 2011.33 -23.25 2011.86 -14.84 2012.39 -12.51 2012.89 -14.19 2013.04 -14.19 2013.19 -19.95 2014.03 -23.26 2014.55 -16.85 2015.31 -17.52 2015.46 -20.39 2015.75 -18.22 2015.9 -14.82 2016.71 42.03 2016.87 -19.14 2017.98 -17.06 2018.23 -17.92 2018.3 -26.5 2018.54 -20.45 2019.44 -39.22 2019.52 -18.02 2019.67 -20.3 2019.9 -25.99 2020.42 -19.86 2020.5 -20.92 2020.58 -21.06 2021.49 -8.77 2021.8 -15.18 2021.95 -18.18 2022.11 -28.06 2022.37 -21.97 2023.18 -13.95 2023.28 -14.14 2023.89 -17.38 2024.42 -15.25 2024.95 -20.69 2025.24 -20.5 2025.39 -22.07 2025.85 -16.89 2026.23 -25.98 2026.38 -16.97 2026.53 -20.77 2027.12 -25.25 2028.07 -23.99 2028.22 -23.47 2029.02 -20.74 2029.26 -18.5 2029.41 -23.2 2030.28 -25.51 2030.43 -17.18 2030.74 -20.1 2031.35 -20.94 2031.42 -19.5 2031.53 -21.33 2033.12 -19.62 2033.99 -29.57 2034.95 -18.29 2035.1 -18.74 2035.62 -33.36 2036.3 -13.57 2036.4 -22.49 2036.52 -24.72 2037.21 -17.77 2037.59 -13.09 2037.89 -28.73 2038.31 -19.82 2039 -19.82 2039.3 -25.4 2039.48 -24.23 2039.58 -18.09 2039.85 -17.68 2040.23 -9.45 2040.53 -21.02 2040.61 -26.08 2040.8 -18.4 2041.11 -21.77 2041.48 -25.67 2041.79 -31.81 2042.19 -31.56 2042.49 -18.91 2043.02 -20.24 2043.1 -10.58 2043.61 -13.24 2043.77 -14.52 2044.37 -25.52 2044.45 -20.48 2044.6 16.08 2044.9 -21.19 2045.58 -24.61 2046.21 -22.23 2047.15 -26.75 2048.11 -19.51 2048.37 -21.44 2048.52 -24.03 2048.98 -24.35 2050.04 -22.2 2050.65 -28.4 2050.8 -20.76 2051.49 36.77 2051.86 -26.43 2052.01 -17.12 2052.17 -27.92 2052.7 -20.11 2053.38 -21.36 2053.86 -23.49 2054.24 -28.05 2054.91 -19.15 2055.97 -23.96 2056.12 -19.95 2056.58 -21.86 2057.4 -18.52 2057.54 -24.14 2057.7 -26.04 2057.85 -29.62 2058.75 -22.69 2058.84 -24.22 2058.99 -18.67 2059.14 -24.98 2060.13 -12.55 2060.46 -21.52 2060.61 -21.22 2060.77 -21.37 2061.45 -22.98 2063.12 -13.11 2063.28 -21.45 2063.54 -26.58 2064.22 -27.58 2064.47 -21.47 2064.71 -18.88 2065.55 -21.08 2066.1 -18.79 2066.56 -26.32 2066.71 -23.25 2067.33 -9.27 2067.41 -21.19 2067.69 -25.04 2067.99 -23.12 2068.37 -16.82 2069 -24.19 2069.68 -21.28 2069.84 -21.66 2070.07 -25.7 2071.01 -21.63 2071.23 -23.29 2071.33 -22.76 2071.41 -13.63 2071.56 -25.58 2072.4 -20.63 2072.47 -23.15 2072.71 -91.22 2072.86 -22.04 2073.16 -22.77 2073.77 -21.78 2074.04 -25.73 2074.87 -17.62 2075.07 -21.76 2075.23 -21.53 2075.34 -24.52 2075.5 -21.8 2075.65 -25.47 2075.79 -20.81 2076.16 -22.65 2076.47 -30.24 2076.54 -23.14 2076.62 -13.65 2076.72 -18.71 2076.8 -23.76 2077.29 -17.99 2077.44 -25.68 2077.53 -23.24 2077.63 -26.79 2078.09 -19.36 2079.14 -21.74 2079.3 -21.67 2079.68 -25.72 2079.75 -18.76 2080.08 -23.44 2080.28 -23.35 2081.01 -25.77 2081.08 -24.55 2081.24 -20.89 2081.39 -21.2 2081.54 -20.74 2081.69 -23.03 2082.22 -21.57 2082.38 -28.35 2082.47 -23.35 2082.77 -22.1 2082.93 -25.05 2083.44 -25.15 2084.12 -25.38 2084.19 -22.67 2084.27 -19.89 2084.42 -25.85 2084.51 -25.22 2084.59 -21.48 2084.74 -24.01 2085.39 -28.56 2086 -15.89 2086.08 -23.74 2086.23 -24.27 2086.52 -24.46 2087.2 -18.36 2087.48 -25.41 2087.63 -23.81 2087.79 -22.63 2087.94 -24.68 2088.31 -22.51 2088.62 -24.16 2088.8 -23.18 2089.86 -20.03 2090.86 -25.87 2091.42 -20.3 2091.72 -20.16 2092.22 -25.6 2092.52 -23.38 2093.74 -23.53 2094.04 -23.63 2094.18 -24.55 2095.24 -21.87 2095.31 -45.16 2095.54 -26.16 2096.6 -23.43 2096.75 -22.29 2096.83 -27.87 2097.23 -21.96 2097.98 -25.62 2098.13 -19.84 2098.28 -23.88 2098.74 -23.88 2099.34 -19.24 2099.49 -24.19 2099.65 -22.36 2099.92 -13.25 2100.45 -7.68 2100.91 -21.55 2101.52 -25.24 2101.9 -18.59 2102.21 -22.3 2102.29 -21.16 2102.58 -25.09 2103.78 -21.83 2104.01 -25.69 2104.13 -21.1 2104.28 -21.56 2104.43 -22.55 2105.12 -18.4 2105.27 -23.29 2105.42 -14.92 2105.54 -21.76 2105.69 -23.02 2106.98 -18.71 2107.12 -20.99 2107.27 -19.18 2107.76 -66.2 2107.86 -19.94 2108.32 -23.29 2109.16 -22.29 2109.23 -15.36 2109.38 -20.25 2109.46 -22.3 2109.54 -19.93 2109.69 -22.15 2110.06 -17.9 2110.21 -19.95 2110.37 -22.3 2110.44 -20.1 2110.52 -22.38 2110.67 -19.64 2110.98 -23.03 2111.36 -19.11 2111.49 -20.65 2111.69 -22.17 2111.84 -12.59 2112.1 -21.26 2112.6 -10.77 2112.73 -20.53 2113.04 82.47 2113.2 -21.11 2113.46 -21.1 2113.83 -14.42 2113.91 -21.33 2113.99 -20.41 2114.14 -21.58 2114.3 -16.62 2114.58 -21.98 2115.26 -51.32 2115.55 -20.48 2116 -21.02 2116.98 -18.49 2117.21 -19.66 2118.26 -20.21 2118.45 -21.24 2119.81 -19.73 2119.92 -20.76 2120 -24.71 2120.79 -20.04 2120.94 -18.37 2121.03 -20.84 2121.94 -20.83 2122.17 -19.77 2122.24 -20 2123.13 -25.89 2123.59 -20.89 2123.74 -19.34 2123.9 -19.02 2124.05 -20.92 2124.96 -19.6 2125.09 -21.94 2125.24 -18.24 2125.39 -17 2125.47 -18.7 2125.84 -7.28 2126.07 -20.88 2126.53 -19.59 2127.29 -19.58 2127.36 -20.67 2127.52 -19.66 2127.76 -20.66 2128.29 -19.97 2128.42 -20.7 2129 -17.8 2129.69 -10.63 2129.84 23.29 2130.14 -18.51 2130.3 -17.66 2130.56 -15.4 2131.16 -14.49 2131.39 -25.67 2131.54 -18.36 2131.7 -17.76 2132.07 -19.59 2132.22 -18.76 2132.38 -19.97 2132.79 -21.29 2133.85 -20.46 2134.99 -22.93 2135.14 -17.45 2135.22 -18.05 2135.44 -16.75 2136.43 -19.59 2136.74 -24.37 2137.01 -22.2 2137.38 -22.61 2137.54 -19.77 2137.61 -18 2137.69 -16.86 2137.78 -15.72 2137.88 -15.47 2138.03 -17.89 2138.56 -18.6 2139.02 -21.94 2139.17 -16.37 2140.4 -16.5 2140.55 -17.68 2141.15 -18.45 2141.31 -13.54 2142.28 -18.54 2142.73 -21.66 2142.89 -18.69 2143.49 -24.14 2143.56 -16.13 2144.93 -4.27 2145.54 -16.56 2145.7 -18.38 2146.76 -14.51 2147.28 -16.96 2147.96 -16.96 2148.11 -17.04 2148.87 -16.35 2149.02 -11.5 2150.1 -17.66 2150.2 -18.62 2151.01 -20.1 2151.24 -40.67 2151.54 -17.06 2152.37 -20.86 2152.9 -19.35 2153.14 -19.56 2153.71 -15.27 2153.86 -15.42 2154.97 -17.88 2155.35 -12.72 2155.5 -14.93 2155.7 -16.68 2156.17 -14.57 2157.22 -20.28 2157.79 -11.87 2157.95 -18.86 2158.32 -16.17 2158.66 -16.31 2158.74 -17.54 2158.89 -17.3 2158.99 -21.83 2159.14 -15.98 2159.52 -23.2 2159.82 -10.77 2160.2 -15.76 2160.27 -15.77 2160.35 -12.23 2162.64 -17.76 2162.87 -14.46 2163.18 -14.47 2164.06 -17.52 2164.37 -21.59 2165.51 -14.21 2165.67 -15.3 2168.17 -17.52 2168.28 -20.55 2168.44 -11.59 2168.59 -19.4 2168.96 -19.56 2169.19 -13.98 2169.72 -14.06 2169.88 -21.05 2170.52 -14.76 2170.62 -19.06 2171 -20.76 2171.22 -16.92 2171.6 -14.21 2171.93 -16.36 2172.01 -7.31 2172.16 -11.17 2172.31 -11.32 2172.47 -14.83 2173.22 -16.29 2173.52 -15.16 2173.68 -11.76 2174.67 -9.95 2174.9 -13.32 2175.17 -13.23 2176.1 -13.7 2176.26 -13.69 2176.41 -8.5 2177.05 -14.78 2177.43 -31.55 2178.26 -16.55 2178.51 -12.26 2180.11 -15.22 2181.18 -20.65 2181.71 -12.58 2181.8 -15.34 2182.07 -13.72 2182.44 -11.39 2182.6 -10.08 2182.9 -12.74 2183.01 -14.24 2185.14 -12.19 2185.24 -14.89 2185.31 -13.6 2185.47 -15.14 2185.62 -12.67 2186.37 -12.69 2186.79 -10.25 2186.94 -16.49 2188 -12.47 2188.11 -11.18 2188.57 -11.02 2189.41 -13.41 2189.69 -11.38 2189.84 -10.93 2190.78 -15.43 2191.34 -11.78 2191.95 -14.13 2192.1 -12.47 2192.41 -11.32 2193.09 -12.91 2193.24 -11.93 2193.47 -12.89 2193.78 -13.68 2193.93 -11.77 2194.08 -13.54 2194.46 24.34 2195.23 -15.28 2196.22 -4.7 2197.56 -13.33 2197.71 -11.82 2197.94 -13.1 2198.05 -11.78 2198.2 -13.97 2198.58 24.74 2198.81 -14.04 2199.04 -10.23 2199.13 -12.51 2199.44 -12.88 2200.73 -10.45 2201.19 -14.48 2201.57 -13.95 2201.8 -12.7 2201.9 -12.7 2202 -10.47 2202.31 -11.28 2202.46 -13.98 2202.83 -7.16 2203.36 -9.95 2203.52 -9.48 2203.62 -21.19 2203.74 -14.26 2203.9 -9.25 2204.05 -13.5 2204.2 -12.39 2204.58 -12.7 2205.38 -10.75 2205.45 -26.48 2205.72 -11.99 2206.02 -12.66 2206.18 -15.37 2206.55 -15.99 2206.71 -12.38 2207.11 -12.97 2207.42 -8.56 2208.57 -11.92 2208.72 -8.25 2208.87 -10.53 2209.25 2.77 2209.78 -11.63 2210.07 -12.09 2210.19 -14.16 2210.34 -15.98 2211.15 -12.84 2211.41 -12.82 2212.18 -13.84 2213.01 -12.85 2213.59 -9.57 2214.12 -5.65 2214.46 -10.04 2214.77 -9.37 2215.29 -16.26 2215.44 -11.41 2215.6 -11.97 2215.97 -11.29 2216.95 -5.06 2217.26 -8.23 2218.41 10.33 2218.75 -9.96 2218.9 -8.52 2219.05 -11.34 2219.58 -12.12 2219.81 -10.75 2220.22 -9.48 2220.9 -12.49 2221.13 -13.48 2222.15 -14.86 2222.24 -8.24 2222.34 -12.54 2222.77 -11.08 2223.3 -13.4 2223.7 -11.07 2224.16 -14.22 2224.31 -11.1 2224.68 27.07 2225.37 -10.34 2225.48 -13.23 2225.67 -14.52 2225.82 -10.05 2225.97 -15.45 2226.13 -12.88 2226.81 -8.45 2227.57 -18.2 2228.09 -12.63 2228.33 -10.17 2228.56 -12.4 2228.67 -13.56 2228.77 5.77 2229.66 -10.26 2229.74 -13.55 2230.05 -13.6 2230.2 -14.13 2230.95 -9.85 2231.11 -8.89 2231.3 -11.26 2231.45 -9.66 2231.83 -13.11 2231.98 -7.71 2232.21 -10.85 2232.33 -11.17 2232.48 -10.21 2232.64 -11.32 2233.32 -6.52 2233.47 -8.92 2233.87 -9.35 2234.02 -10.77 2234.18 -12.99 2234.86 -10.39 2235.01 -12.32 2235.47 -35.99 2236.15 -11.63 2236.31 -10.49 2236.38 -0.71 2236.48 -9.7 2236.63 -12.81 2236.76 -13.14 2236.91 -12.83 2237.52 -13.59 2237.7 -11.6 2237.85 -14.25 2238 -8.08 2238.16 -11.89 2238.84 -10.75 2239.97 -10.76 2240.27 -12.23 2240.43 -10.99 2240.73 -11.92 2240.89 -11.35 2241.26 -11.55 2241.41 -9.47 2241.72 -15.13 2242.03 -20 2242.33 -12.07 2243.01 -15.33 2243.26 2.69 2244.24 -10.32 2244.31 -12.43 2244.47 -42.42 2244.56 -13.88 2244.79 -10.89 2245.32 -4.88 2245.99 -27.21 2246.82 -9.54 2246.97 -9.54 2247.05 -12.31 2247.48 -13.86 2248.39 -13.71 2248.51 -11.31 2248.79 -9.81 2249.27 -8.41 2249.55 -9.58 2249.63 -1.64 2250.53 -14.82 2250.83 -14.04 2250.93 -12.58 2251.08 -45.42 2251.23 -12.16 2251.39 -10.48 2252.12 -11.84 2252.49 -8.4 2252.64 -11.48 2252.8 -6.71 2252.92 -14.54 2253.07 -12.99 2254.13 -11.82 2254.22 -10.77 2254.68 -11.2 2254.83 -14.35 2255.2 -10.52 2255.51 -12.41 2255.61 -12.96 2256.59 -12.75 2257.04 -10.28 2257.63 -15.67 2258.39 -11.55 2258.69 -11.86 2259.37 -11.34 2259.61 -12.21 2259.73 -13.68 2259.83 -15.7 2260.11 -11.48 2260.26 -8.19 2260.86 -14.97 2261.51 -21.32 2262.08 -12.25 2262.18 -13.74 2262.44 -15.46 2262.68 -15.47 2263.05 -15.4 2263.17 -12.89 2263.25 -8.66 2263.56 -13.54 2263.86 -6.01 2264.02 -12.7 2264.39 -12.83 2264.55 -9.17 2264.69 -11.87 2265 -13.3 2265.15 -9.7 2265.31 -4.4 2266.06 -9.7 2266.22 -13.63 2266.37 -13.2 2266.68 -11.92 2266.83 -14.6 2267.21 -12.07 2267.36 -7.64 2267.6 -14.77 2268.58 -12.39 2268.89 -8.48 2269.05 -9.7 2269.35 -11.47 2270.03 -23.24 2270.65 -15.33 2270.95 -6 2271.11 -12.02 2272.05 -9.53 2272.14 -15.13 2272.45 -10.07 2272.95 -10.95 2273.11 -12.72 2273.18 -12.87 2273.26 -10.49 2273.34 -12.33 2273.45 -12.75 2273.61 -12.9 2274.14 -12.9 2274.27 -5.72 2274.38 -13.04 2274.53 -13.2 2274.69 -9.83 2274.84 -13.72 2274.99 -13.42 2275.75 -15.52 2276 -13.95 2276.15 -12.87 2276.3 -7.21 2276.68 -12.65 2276.83 -5.85 2277.59 -13.61 2278.43 -13 2278.58 -7.78 2278.74 -11.62 2279.19 -13.62 2279.8 -10.26 2279.88 -12.78 2279.96 -14.81 2280.11 -14.38 2280.27 -36.11 2280.42 -12.7 2280.95 -10.63 2281.18 -13.15 2281.63 -14.04 2282.39 -14.49 2282.54 -14.5 2282.69 -16.48 2282.98 -13.68 2283.51 -9.46 2283.66 -11.64 2283.74 -14.36 2283.89 -14.44 2284.04 -14.44 2284.35 -13.68 2284.5 -14.82 2284.88 -12.46 2285.03 -11.78 2285.11 -13.07 2285.26 -10.19 2285.38 -14.07 2286.21 -11.29 2286.51 -16.86 2286.82 -16.15 2287.28 -12.47 2287.88 -13.59 2288.13 -11.93 2288.29 -12.6 2288.44 -15.08 2288.59 -19.75 2289.27 -12.82 2289.35 -13.49 2289.66 -12.27 2289.81 -12.43 2290.49 -14.02 2290.64 -10.76 2290.76 -21.45 2290.86 -12.35 2291.02 -16.5 2291.7 -13.64 2291.93 -14.6 2292.18 -12.02 2292.31 -18.97 2292.47 -11.88 2293.68 -14.8 2294.01 -35.01 2294.16 -17.52 2295.3 -16.13 2295.45 -16.39 2296.6 -16.6 2296.75 -18.05 2297.05 -16 2297.21 -12.69 2297.89 -13 2298.65 -11.56 2298.96 -17.58 2299.49 -13.41 2299.75 -14.2 2299.87 -14.23 2299.99 -12.34 2300.11 -15.74 2300.64 -12.1 2300.8 -15.21 2300.87 -14.85 2301.03 -13.32 2301.94 -15.92 2302.14 -16.88 2302.67 -12.82 2303.1 -11.09 2303.63 -11.71 2303.94 -7.26 2305.23 -14.1 2305.39 -11.25 2305.54 -18.7 2305.84 -16.28 2306 -15.43 2306.92 -14.89 2307.75 -12.94 2307.89 -13.08 2308.22 -12.17 2308.75 -13.83 2309.05 -10.96 2309.13 -9.77 2309.28 -15.79 2309.43 -11.85 2309.59 -12.83 2309.71 -14.38 2310.09 -15.2 2310.32 -13.35 2310.63 -12.1 2311.61 -15.28 2311.77 -11.64 2311.84 -17.66 2312.15 -14.43 2312.3 -10.58 2313.23 -15.91 2313.36 -11.25 2313.51 -14.37 2313.67 -14.52 2314.42 -14.79 2314.51 -16.01 2315.49 -16.33 2316.09 -14.59 2316.4 -13.89 2316.55 -14.43 2317.16 -16.1 2317.43 -15.92 2317.68 -14.36 2318.75 -16.77 2319.02 -14.64 2319.39 -16.81 2319.55 -15.59 2319.85 -14.74 2320.25 -13.25 2320.4 -13.41 2320.93 -18.77 2321.16 -10.73 2321.61 -17.56 2322.14 -9.37 2322.67 -14.98 2322.82 -14.37 2322.98 -15.88 2323.49 -14.84 2323.64 -12.87 2323.74 -16.72 2324.15 -13.65 2324.42 -16.54 2324.8 -12.08 2325.06 -13.65 2325.29 -15.48 2326.44 -16.72 2326.59 -16.69 2326.74 -13.11 2327.96 -14.08 2328.1 -19.53 2328.26 -14.09 2328.41 -18.25 2328.79 -11.58 2329.17 -15.01 2329.72 -15.31 2330.09 -18.46 2330.36 -15.5 2330.47 -16.06 2330.58 -15.41 2330.73 -15.65 2331.02 -16.25 2331.4 -16.47 2331.71 -22.76 2331.79 -15.92 2333 -17.29 2333.26 -12.89 2333.42 -17.02 2333.57 -15.42 2333.94 -16.19 2334.46 -18.6 2334.61 -16.66 2335.14 -18.23 2335.45 -55 2335.6 -8.36 2335.91 -15.21 2336.59 -10.96 2336.82 -15.89 2336.9 -11.94 2337.05 -18.87 2338.01 -12.74 2338.12 -14.68 2339.74 -14.48 2340.04 -16.03 2340.2 -16.14 2340.35 -14.58 2340.8 -16.07 2341.18 -14.28 2341.55 -14.21 2341.76 -17.52 2341.91 -17.26 2342.06 -15.34 2344.1 -15.62 2344.4 -17.64 2345.23 -15.33 2345.54 -16.01 2346.22 -15.64 2346.74 -13.67 2350.12 -22.33 2351.34 -14.19 2351.55 -14.22 2351.7 -16.96 2352.01 -17.41 2352.38 -14.16 2352.69 -17.94 2353 -18.67 2353.15 -17.11 2354.14 -17.26 2354.42 -22.2 2354.72 -14.4 2355.79 -16.51 2355.94 -15.15 2356.4 -18.87 2356.82 -10.62 2357.2 -4.73 2357.35 -18.23 2357.53 -17.59 2357.99 -16.22 2358.14 -17.75 2358.74 -17.75 2358.82 -20.49 2359.28 -15.24 2359.44 -18.07 2359.81 -13.79 2360.03 -19.35 2360.18 -16.57 2360.79 -14.1 2361.41 -16.53 2361.53 -17.95 2361.66 -16.43 2361.82 -16.43 2362.87 -15.69 2363.02 -8.23 2363.18 -19.04 2363.46 -16.64 2363.99 -15.58 2364.52 -12.46 2365.09 -17.5 2365.77 -17.81 2366.52 -14.48 2366.98 -15.76 2367.14 -16.98 2367.67 -14.7 2367.89 -16.08 2368.51 -14.54 2370.1 -15.47 2371.03 5.11 2371.31 -8.63 2371.47 -14.26 2372.61 -24.64 2372.68 -16.75 2372.76 -16.74 2372.83 -15.38 2374.05 -16.79 2374.12 -16.85 2374.43 -14.09 2374.58 -15.19 2375.19 -17.31 2375.33 -17.05 2375.64 -15.79 2375.79 -9.47 2375.94 -17.24 2378.14 -16.71 2378.45 -17.99 2378.6 -14.89 2378.75 -14.89 2379.43 -21.74 2379.74 -15.73 2380.04 -17.98 2381.25 -11.4 2381.54 -16.17 2383.22 -16.85 2383.98 -12.31 2385.17 -16.84 2385.32 -12.24 2386.31 -12.69 2387.83 -16.11 2387.99 -16.25 2388.14 -16.41 2388.44 -17.8 2388.82 -10.65 2389.13 -18.55 2389.28 -15.43 2389.44 -14.96 2389.59 -16.19 2390.61 -15.02 2390.76 -14.1 2390.91 -15.18 2391.07 -14.41 2391.22 -16.84 2393.03 -19.22 2393.73 -25.56 2394.57 -17.37 2394.72 -14.43 2394.88 -14.12 2395.41 -14.2 2395.48 -16.31 2395.73 -13.11 2396.66 -16.27 2397.05 -13.84 2397.2 -12.26 2398.34 -14.9 2398.5 -16.09 2399.41 -15.94 2399.86 -9.44 2400.02 -17.81 2400.39 -19.87 2401.12 -14.15 2402.33 -15.57 2402.5 -13.43 2402.73 -9.37 2403.04 -15.13 2403.19 -13.27 2404.1 -12.59 2404.18 -14.91 2404.29 -15.15 2404.4 -13.62 2404.59 -15.79 2404.75 -5.67 2405.22 -14.51 2405.52 -12 2405.62 -13.96 2406.08 -16.16 2406.57 -16.35 2406.8 -16.34 2406.96 -13.57 2408.32 -5.82 2408.73 -15.83 2408.81 -10.36 2409.04 -17.21 2409.2 -14.1 2409.57 -14.71 2409.72 -16.04 2410.03 -8.98 2410.18 -13.27 2411.25 -16.46 2411.53 -15.1 2411.83 -17.25 2411.98 -16.8 2412.89 -16.65 2413.15 -8.94 2414.02 -12.31 2414.23 -11.9 2414.54 -15.68 2414.91 -16.18 2415.61 -14.88 2415.76 -12.34 2415.91 -18.12 2416.29 -0.32 2416.7 -11.09 2416.95 -15.32 2417.1 -15.57 2417.26 -15.26 2417.63 -15.19 2417.86 -16.25 2417.96 -14.16 2418.16 -20.2 2418.31 -14.67 2418.46 -15.8 2419.08 -17.53 2419.39 -19.27 2420.76 -15.75 2421.06 -16.68 2422.21 -14.85 2423.2 -17.78 2423.5 -16.37 2423.65 -17.05 2424.64 -13.41 2424.79 -16.34 2425.1 -9.32 2426.01 -13.43 2427.13 -19.55 2427.25 -12.34 2427.53 -15.23 2427.68 -16.63 2428.36 -13.45 2428.52 -14.4 2429.81 -13.94 2430.34 -15.2 2430.76 -13.7 2430.91 -14.78 2431.07 -13.7 2431.37 -15.92 2432.3 -14.69 2432.6 -17.75 2432.76 -9.85 2433.59 -16.61 2434.21 -14.53 2434.58 -13.39 2436.19 -13.54 2436.32 -16.42 2437.43 -12.62 2437.58 -11.85 2439.25 -10.64 2439.71 -13.34 2439.87 -14.47 2440.85 -13.65 2441.23 -12.81 2441.38 -14.33 2441.53 -12.66 2441.69 -14.63 2441.84 -9.5 2442 -1.07 2442.3 -15.69 2442.67 10.31 2443.36 -16.59 2443.74 -13.94 2443.9 -12.27 2444.05 -13.48 2444.21 -14.84 2444.36 -12.95 2445.04 -12.35 2445.2 -10.81 2445.6 -13.75 2446.12 -8.53 2446.28 -13.22 2446.41 -12.37 2447.4 -16.91 2447.93 -12.49 2448.24 -13.48 2448.39 -11.87 2448.54 -18.87 2448.7 -3.26 2449.22 -12.19 2449.53 -12.8 2449.98 -14.78 2450.29 -14.62 2450.82 -11.88 2450.97 -12.04 2451.35 -14.49 2451.5 -11.97 2451.65 -8.46 2451.81 -16.79 2451.96 -14.18 2452.42 -15.23 2452.8 -10.98 2452.95 -14.86 2453.1 -13.51 2453.33 -15.72 2454.47 -13.71 2454.93 -14.65 2455.46 -18.49 2455.87 -14.17 2457.39 -7.84 2457.5 -13.9 2457.81 -11.4 2458.65 -13.85 2459.86 -24.69 2459.95 -14.89 2460.11 -16.18 2460.26 -11.3 2460.57 -11.55 2460.88 -12.38 2461.78 -16.02 2462.04 -14.1 2462.19 -9.47 2462.5 -23.56 2462.65 -7.55 2463.79 -4.96 2463.86 -14.02 2464.01 -10.99 2464.09 -13.95 2464.24 -15.14 2465.15 -15.52 2465.46 -13.69 2465.76 -12.86 2466.29 -6.36 2466.45 -14.46 2466.55 -14.21 2466.65 -12.59 2466.81 -11.54 2467.11 -11.36 2468.06 -11.78 2468.21 -11.48 2468.37 -12.85 2469.31 -16.19 2469.54 -9.99 2469.64 -12.21 2469.8 -12.67 2470.46 -11.29 2470.83 -12.32 2470.99 -12.95 2471.14 -9.92 2471.3 -12.33 2471.82 -15.73 2472.03 -11.45 2472.89 -7.63 2473.35 -12.44 2473.44 -11.19 2473.6 -15.32 2474.13 -13.12 2474.28 -7.88 2474.74 -16.24 2475.57 -12.13 2476.48 -12.59 2477.77 -9.08 2478.92 -9.85 2479.23 -12.34 2479.38 -14.63 2479.91 -12.34 2480.06 -11.36 2480.74 -5.74 2480.9 -15.08 2481.18 -7.36 2481.45 -8.85 2481.98 -10.88 2482.29 -14.37 2482.74 -12.41 2482.89 -9.67 2483.05 -14.48 2484.71 -16.37 2485.18 -24.56 2486.14 -14.48 2486.82 -17.53 2487.26 -11.69 2487.56 -14.82 2487.87 -13.06 2488.47 -10.03 2488.7 -10.41 2488.86 -10.55 2489.46 -11.01 2489.61 -7.61 2490.68 -7 2490.98 -12.76 2491.14 -11.08 2491.67 -15.19 2491.98 -14.57 2492.13 -11.76 2493.21 -20.62 2494.36 -16.52 2494.51 -16.68 2494.88 4.89 2495.19 -17.53 2495.35 -18.05 2496.31 -17.67 2496.4 -11.36 2497.69 -14.87 2498.53 -13.5 2498.6 5.58 2498.98 -13.28 2499.37 -15.87 2499.78 -14.51 2500.15 -15.24 2500.31 -6.4 2501.3 -12.84 2501.45 -15.86 2501.61 -14.61 2501.76 -20.85 2502.6 -9.81 2502.69 -14.01 2502.85 -8.19 2503 -8.65 2503.16 -8.34 2503.31 -11.51 2503.69 -16.22 2503.91 -14.86 2504.03 -14.65 2504.15 -9.53 2504.31 -14.76 2504.99 -13.93 2505.22 -14.01 2505.69 -16.04 2506.98 -20.05 2508.43 -14.03 2508.58 -14.56 2508.74 -19.21 2508.89 -15.02 2509.27 -12.31 2509.52 -12.37 2509.76 -12.24 2510.57 -11.73 2510.8 -15.32 2510.91 -15.49 2511.02 -15.18 2511.17 -14.04 2512 -12.6 2512.25 -14.04 2512.4 -15.09 2512.55 -8.5 2512.71 -2.26 2513.08 3.64 2513.23 -16.38 2513.62 -21.22 2514.46 -15.99 2514.99 -16.88 2515.15 -16.19 2516.23 -14.65 2516.38 -16.72 2516.54 -12.1 2517.22 -11.57 2517.6 -11.86 2517.91 -14.64 2518.06 -16.25 2518.74 -16.84 2518.97 -16.15 2519.08 -13.56 2519.15 -15.01 2519.45 -17.42 2519.83 -15.44 2521.58 -19.87 2521.84 -18.1 2523.11 -21.74 2523.26 -17.45 2525.28 -22.83 2526.21 -12.9 2526.73 -17.28 2526.89 -7.57 2527.29 -15.73 2527.81 -16.89 2528.27 -14.44 2528.43 -16.11 2528.58 -16.95 2528.89 -16.49 2529.51 -7.21 2529.6 -11.72 2529.83 -15.86 2530.51 -11.4 2530.89 -7.5 2531.13 -17.14 2531.43 -11.74 2532.42 -16.62 2532.58 -8.66 2532.88 -15.85 2533.19 -12.8 2533.35 -14.24 2534.25 -15.71 2534.99 -18.25 2536.04 -8.19 2536.19 -12.23 2536.35 -14.98 2537.19 -17.72 2537.34 -21.96 2537.49 4.54 2538.79 -18.41 2539.77 -14.99 2539.92 -16.28 2540.08 -14.98 2540.39 -13.53 2541.22 -18.23 2541.34 -15.02 2542.55 -15.02 2542.79 -20.76 2544.16 -16.62 2544.47 -16.46 2544.62 -16.77 2545.08 -17.63 2545.61 -12.7 2545.84 -16.31 2545.98 -17.87 2546.1 -11.59 2546.25 -13.35 2546.4 -11.75 2546.55 -18.45 2547.24 -17.3 2547.48 -14.83 2547.89 -13.88 2548.27 -15.89 2548.42 -17.72 2548.56 -15.14 2548.67 -15.34 2548.83 -16.32 2549.13 -14.26 2549.82 -18.05 2549.97 -10.47 2550.1 -15.2 2550.26 -15.2 2550.41 -16.65 2551.4 -20.02 2551.86 -18 2552.01 -16.32 2552.54 -14.89 2552.79 -13.66 2553.56 -16.6 2553.93 -15.62 2554.32 -18.09 2554.47 -17.26 2555.31 -27.15 2555.57 -20.25 2556.03 -17.83 2556.87 -136.13 2557.32 -16.01 2557.48 -15.7 2557.63 -12.68 2558.47 -14.25 2558.57 -15.85 2559.03 -15.85 2559.18 -14.3 2559.56 -17.25 2559.86 -18.47 2560.24 -16.42 2560.39 -11.18 2560.51 -0.58 2561.26 -11.3 2561.63 -17.75 2561.79 -15.86 2561.86 -15.03 2562.28 -16.57 2562.96 -23.44 2563.12 -14.23 2563.21 -15.23 2563.52 -16.01 2563.83 -12.15 2563.98 -14.2 2564.36 -3.67 2564.51 -23.49 2564.58 -9.74 2564.74 -14.26 2565.04 -14.89 2565.2 -15.72 2566.48 -18.43 2566.64 -16.34 2567.55 -13.46 2567.7 -13.61 2567.85 -7.41 2568.01 -13.46 2568.31 -19.01 2569.61 -13.99 2570.97 -16.51 2571.44 -22.07 2571.89 -19.8 2572.95 -15.28 2573.21 -15.64 2573.51 -20.99 2573.66 -8.49 2574.04 -14.5 2574.27 -13.81 2574.42 -18.48 2574.57 -164.5 2574.88 -12.14 2575.72 -14.9 2575.87 -15.05 2575.97 -15.41 2576.13 -22.21 2576.44 -13.8 2576.96 -19.51 2577.22 -15.52 2577.37 -11.01 2577.53 -7.12 2577.83 -15.99 2578.48 -15.71 2579.09 -10.28 2579.25 -16.91 2579.77 -16.55 2580.2 -14.15 2581.34 -15.28 2581.48 -16.4 2581.64 -16.54 2583.22 -4.63 2583.38 -14.65 2583.83 -13.4 2584.52 -15.52 2584.67 -14.95 2584.82 -15.86 2585.13 -11.8 2585.81 -17.47 2585.97 -14.45 2586.12 -15.18 2586.27 -13.5 2587.41 -16.55 2587.87 -13.96 2588.55 -17.3 2588.81 -12.64 2588.97 -15.28 2590.33 -13.48 2590.48 -11.96 2590.94 -14.3 2591.1 -17.15 2591.25 -2.11 2591.94 -14.07 2592.55 -12.01 2593.08 -9.06 2593.23 -13.99 2593.37 -15.26 2593.52 -14.58 2594.67 -16.02 2594.82 -16.95 2595.13 -13.96 2595.93 -17.13 2596.15 -11.33 2596.46 -12.94 2596.61 -12.17 2596.99 -15.09 2597.45 -17.36 2597.91 -16.28 2598.06 -15.45 2598.44 -11.79 2599.27 -11.12 2599.53 -11.97 2599.69 -17.84 2600.67 -14.97 2600.91 -12.31 2601.33 -16.51 2601.48 -14.6 2602.62 -16.27 2603.83 -13.55 2604.14 -15.21 2604.29 -17.35 2605.5 -15.87 2605.58 -19.98 2605.7 -13.5 2606.15 -14.46 2607.05 -12.95 2607.16 -14.32 2607.62 -13.68 2608.31 -17.56 2608.46 -14.47 2608.92 -15.39 2610.28 -11.51 2610.54 -19.13 2611 -16.39 2611.61 -12.55 2611.77 -13 2612.38 -13.64 2613.15 -12.57 2614.67 -13.63 2614.77 -12.16 2614.92 -12.62 2615.91 -15.58 2616.22 -13.92 2617.36 -9.88 2617.52 -12.46 2617.98 -19.47 2618.81 -14.28 2619.12 -12.99 2620.26 -14.13 2620.57 -13.36 2620.72 -18.12 2620.88 -13.66 2621.4 -17.59 2621.63 -15.05 2621.78 -13.59 2621.94 -37.12 2622.24 -11.53 2622.4 -14.74 2622.77 -1.85 2623.3 -15.08 2623.98 -13.01 2625.5 -3.26 2625.81 -9.81 2626.11 4.17 2627.27 -11.88 2627.55 -9.75 2627.92 -12.9 2628.3 -12.13 2628.69 -29.47 2628.84 -11.36 2628.99 -11.36 2630.2 -10.93 2630.36 -14.35 2630.51 -15.96 2631.12 -13.74 2632.48 -13.52 2632.64 -13.52 2634.67 -15.36 2635.04 -13.03 2636.68 -6.49 2637.59 -14 2638.2 -8.57 2638.73 23.62 2639.19 -7.12 2639.34 -13.31 2641.63 -8.86 2642.64 -13.39 2642.9 -8.11 2643.85 -4.37 2645.72 -10.62 2645.87 -11.15 2646.02 -11.61 2646.79 -10.53 2647.46 -12.41 2647.77 -11.79 2647.92 -8.57 2648.6 -17.21 2649.36 -15.14 2650.04 -14.31 2650.44 -10.54 2651.28 -14.99 2651.43 -10.68 2651.58 -6.2 2652.04 -11.47 2652.72 -11.25 2653.1 -13.86 2653.53 -8.73 2654.52 -10.76 2654.89 -5.96 2655.05 -7.37 2655.2 -12.14 2655.28 -7.92 2656.27 -4.87 2657.72 -8.86 2658.4 -12.74 2659.92 -4.81 2660.16 -8.47 2660.85 -6.33 2660.92 16.64 2661.38 -4.74 2662.35 234.72 2664.45 -9.41 2664.6 -7.8 2665.29 -9.4 2666.04 -5.53 2667.19 -9.26 2667.34 -8.5 2668.33 -6.67 2669.1 -7.51 2669.86 8.04 2671.29 -3.86 2671.45 -8.58 2672.28 -1.73 2672.66 23.77 2672.96 -9.51 2673.12 -4.47 2673.27 -8.43 2674.26 -5.62 2674.37 -3.07 2674.53 -8.92 2674.68 -12.92 2674.83 -7.34 2676.13 -5.73 2676.97 25.54 2677.2 -7.5 2677.35 -12.45 2677.5 -10.25 2678.34 -6.97 2678.65 -7.81 2679.11 -6.58 2680.1 -9.47 2680.47 -6.97 2681.09 -10.47 2681.24 -6.97 2681.55 -7.34 2682.08 -6.66 2682.46 -6.96 2683.91 -11.41 2684.21 -8.19 2685.81 -7.31 2686.39 -5.85 2686.92 -6.66 2687.68 -7.07 2687.84 -7.18 2690.28 -4.35 2690.43 -9.36 2691.04 -8.9 2692.85 -7.24 2694.88 -6.89 2695.03 -5.67 2695.92 -11.08 2696.38 -1.99 2697.32 -6.47 2698.05 -4.18 2700.86 -8.84 2702.16 -14.39 2702.99 -8.46 2704.08 -3.6 2704.23 1.17 2704.91 -7.45 2705.44 -4.42 2707.95 29.37 2708.41 -8.51 2708.56 -6.3 2708.71 -6.31 2709.02 -4.32 2709.39 -2.43 2709.55 -0.61 2710.39 -5.01 2710.54 -8.4 2710.69 -15.11 2711 67.23 2711.99 -1.81 2713.89 -8.24 2714.35 -5.05 2715.34 -5.27 2715.49 -2.05 2715.65 -3.44 2715.8 -4.66 2715.95 -4.82 2717.17 -5.27 2717.47 -9.78 2717.63 -5.27 2717.93 1.54 2718.99 -5.05 2719.15 -5.35 2719.92 -27.4 2720.6 -4.9 2720.91 -4.43 2721.22 -2.97 2722.02 -0.27 2722.17 -4.62 2722.32 -6.69 2723.77 -4.32 2723.93 -1.26 2724.24 -2.86 2724.62 -5.69 2724.77 -6.75 2725.08 -3.78 2725.39 -7.58 2727.06 -10.71 2727.21 4.46 2727.36 -4.32 2727.82 -9.19 2728.2 -0.35 2728.47 -7.39 2728.93 -6.11 2729.09 -2.89 2729.92 -10.6 2730.08 -4.35 2730.23 -4.5 2730.54 -5.93 2730.69 -1.6 2731.53 1.07 2731.69 -4.04 2731.84 -6.08 2731.99 -1.45 2732.15 -1.44 2732.84 -3.17 2732.99 -5.92 2733.3 -6.23 2733.6 -0.52 2734.44 -5.77 2734.89 -3.19 2736.34 -8.43 2737.33 4.05 2737.49 -1.88 2741.39 -2.54 2741.7 -1.11 2741.85 -3.69 2744.53 229.4 2746.36 -3.78 2747.94 -4.11 2748.09 -2.57 2748.77 13.88 2749.08 -4.01 2749.39 2.76 2753.35 1.61 2754.23 36.54 2756.12 3.34 2757.01 1.05 2758.56 2.86 2758.67 3.09 2758.82 1.87 2759.35 3.5 2759.65 3.23 2760.27 4 2760.43 3.33 2761.11 3.55 2761.22 3.81 2761.61 2.99 2762.37 3.59 2762.62 2.27 2762.93 4 2763.08 2.45 2763.46 1.63 2763.9 3.42 2764 2.1 2764.08 3.16 2764.23 2.18 2764.61 2.86 2764.99 2.08 2765.07 2.23 2765.14 2.91 2765.83 2.77 2765.9 2.69 2765.98 2.2 2766.34 2.26 2766.86 2.12 2767.05 2.07 2767.16 2.33 2767.3 2.1 2768.01 2.65 2768.09 1.92 2768.3 2.45 2768.41 1.96 2768.94 0.75 2769.25 2.94 2769.32 3.24 2769.4 2.19 2769.55 2.26 2770.23 2.87 2770.46 2.11 2771.25 2.82 2771.33 2.08 2771.48 2.08 2771.56 2.08 2771.63 1.61 2772.01 2.46 2772.28 2.08 2772.35 1.11 2772.43 2.15 2772.5 2.14 2773.45 1.23 2774.07 0.62 2774.15 0.92 2774.22 0.84 2774.3 1.37 2774.39 0.85 2774.84 1.54 2775.1 1.95 2775.19 1.1 2775.27 1.07 2775.97 0.68 2776.06 -0.02 2776.44 0.92 2777.27 0.0799999999999 2778.56 0.96 2778.71 0.0300000000002 2779.18 1.33 2779.61 0.77 2782.42 0.5 2782.58 0.51 2782.73 0.51 2785.01 1.38 2807.82 42.73 2822.51 11.97 libpappsomspp-0.9.20/tests/data/alignment/result_rt_align.tsv000644 001750 001750 00000305567 14346367014 025715 0ustar00rusconirusconi000000 000000 0.289997 0.320456531508 0.724138 0.765187401409 1.08439 1.14616529685 1.4199 1.50058759413 1.75517 1.85432503515 2.09117 2.20879944654 2.42706 2.56319999379 2.7643 2.91892320986 3.09881 3.27189111248 3.43332 3.62478821083 3.7667 3.97653678268 4.1002 4.32839159722 4.43396 4.68050879636 4.76747 5.0323783801 5.1011 5.38438850809 5.43598 5.73917789824 5.85286 6.17646255141 6.21349 6.55743080264 6.54475 6.90747007594 6.87664 7.2576189562 7.2089 7.60813545186 7.54003 7.95751039138 7.87129 8.30702211784 8.20392 8.65791301584 8.53555 9.00781308538 8.86731 9.35782462841 9.19893 9.70767581062 9.52945 10.0564154367 9.86058 10.4057522226 10.1915 10.7548896475 10.5226 11.1042138594 10.8541 11.4539670533 11.1866 11.8047275844 11.5181 12.1544697725 11.8486 12.5031899489 12.1799 12.8527137938 12.5116 13.2026468104 12.8426 13.5518798269 13.1739 13.9014000033 13.5049 14.2506183453 13.8358 14.5997568648 14.1682 14.9503972185 14.4993 15.2997412409 14.8304 15.6490559144 15.1612 15.9980815936 15.4929 16.3480054386 15.8239 16.6972311179 16.1548 17.0463384541 16.4855 17.395291648 16.819 17.7470411733 17.1497 18.0959962016 17.4807 18.4452035378 17.8116 18.7943145426 18.1425 19.1434255474 18.4735 19.4926475581 18.805 19.8423640659 19.1356 20.1911842422 19.4668 20.5406227617 19.7993 20.891372287 20.1305 21.2408236466 20.4618 21.5903401543 20.7924 21.9391658336 21.1241 22.2890878443 21.4552 22.638433701 21.7871 22.9885777234 22.1187 23.3384107399 22.4492 23.6871547623 22.7817 24.0378877788 23.1127 24.3871391384 23.4442 24.7368721549 23.7757 25.0866235145 24.1077 25.4368822113 24.4396 25.7870464111 24.7714 26.1371051079 25.1031 26.4870803135 25.4359 26.8381500162 25.7674 27.1879178845 26.099 27.5377765814 26.4313 27.8883426154 26.7632 28.2385269926 27.0958 28.5894077011 27.4279 28.9398049184 27.7607 29.2908892955 28.0926 29.6411103588 28.4267 29.993513079 28.7585 30.3436139649 29.0903 30.6936836676 29.4227 31.0443478673 29.7542 31.3941102328 30.0859 31.7440670953 30.418 32.0944294607 30.7498 32.4444936605 31.0816 32.7945835405 31.4151 33.1463605804 31.7462 33.495741289 32.0782 33.8459999858 32.4105 34.1965696885 32.7422 34.5465320539 33.0738 34.8963889164 33.4058 35.246640276 33.7372 35.5962824641 34.0683 35.9456393266 34.4011 36.2966888519 34.7321 36.6459292057 35.0627 36.994754885 35.3947 37.3450172504 35.7277 37.6962997932 36.0594 38.0462786674 36.3912 38.3963336956 36.7229 38.7463290786 37.0568 39.0985299645 37.3889 39.4489363534 37.7209 39.7992133933 38.0532 40.1497941018 38.3855 40.5005545724 38.7273 40.8609287701 39.0658 41.2180176423 39.3989 41.5695487641 39.7321 41.921091839 40.0658 42.2731330797 40.3988 42.6244578116 40.7311 42.9750623661 41.0637 43.3259687549 41.3968 43.6773879839 41.7298 44.0287072129 42.0624 44.3796117674 42.3947 44.7302071504 42.7272 45.0811180947 43.0661 45.4384785654 43.4011 45.792105958 43.7427 46.1523480251 44.0824 46.5107597959 44.4212 46.8682183718 44.7599 47.2254613863 45.0933 47.5772943423 45.4261 47.9286171794 45.7697 48.2907455194 46.1034 48.6429720252 46.4361 48.9941123184 46.775 49.3515865162 47.116 49.711245092 47.4533 50.067240354 47.7942 50.4268227759 48.1345 50.7858528897 48.4744 51.1444536547 48.8137 51.5024544196 49.154 51.8613341203 49.4873 52.2131991464 49.8258 52.570188966 50.162 52.9248677797 50.4947 53.2759475409 50.8278 53.6274804969 51.1669 53.9866478209 51.5887 54.4290856146 51.9529 54.8139124024 52.2914 55.1714616857 52.6272 55.5258120375 52.9642 55.8812706738 53.2977 56.2331834525 53.631 56.5849622662 53.9716 56.9441713158 54.3122 57.3034720807 54.6505 57.6603884675 54.9865 58.0149002988 55.3214 58.3682534322 55.6565 58.7218395831 55.9943 59.0781752604 56.3319 59.4343824756 56.6709 59.7919401646 57.006 60.1455318185 57.34 60.4980124665 57.6784 60.8550086759 58.0198 61.2150122226 58.3542 61.568026775 58.6932 61.9255422749 59.0292 62.2801017982 59.366 62.6353787776 59.7005 62.9884107863 60.0395 63.3459317891 60.3757 63.700665632 60.7109 64.0544031436 61.0501 64.4121865128 61.3888 64.7694533733 61.7231 65.122213844 62.0565 65.4741165037 62.3975 65.8337053759 62.7365 66.1914226496 63.0769 66.5504885627 63.4151 66.9073361327 63.7531 67.2639305078 64.0906 67.6200157114 64.4283 67.9762257083 64.7622 68.328681563 65.1022 68.6872722694 65.4418 69.0455198395 65.7788 69.4011509007 66.1179 69.7588122583 66.4537 70.1131350954 66.7886 70.4665084062 67.125 70.821381717 67.4608 71.1756403533 67.7949 71.5281384575 68.128 71.879620053 68.4629 72.2329199915 68.798 72.5865666746 69.1391 72.9462298665 69.4749 73.3006279102 69.8119 73.656191102 70.1511 74.0139322822 70.4857 74.3671266573 70.8256 74.7256375412 71.1657 75.0844566492 71.5062 75.4436317338 71.8437 75.7997829725 72.1825 76.1571351585 72.5176 76.5107158065 72.8512 76.8627946203 73.1899 77.2200724866 73.5304 77.5792072165 73.8671 77.934563958 74.207 78.2930418244 74.5432 78.647893063 74.8839 79.0072241242 75.2227 79.3646771972 75.5601 79.7207009212 75.8992 80.0784191423 76.2377 80.4355575408 76.5762 80.7926904363 76.915 81.1500976516 77.2521 81.5058140384 77.5911 81.8633864018 77.9275 82.2183661024 78.265 82.5744182885 78.6025 82.9304558 78.9381 83.2845364481 79.2725 83.6373620669 79.607 83.9903647266 79.9468 84.3487059068 80.2833 84.7037580928 80.6184 85.0573735927 80.9562 85.4137221101 81.2945 85.7706348283 81.6331 86.1278292034 81.9699 86.4832529274 82.3098 86.8417766514 82.6484 87.1990517361 82.988 87.5573304893 83.3281 87.9160798936 83.6651 88.2716706001 84.0015 88.6266906555 84.3432 88.9870639058 84.6831 89.345648162 85.0201 89.70124804 85.3572 90.0569479181 85.6971 90.415453299 86.0344 90.7713843603 86.3729 91.1284879069 86.7113 91.4854841163 87.0482 91.8409711542 87.3862 92.1975361804 87.7234 92.5533103781 88.0608 92.9093212619 88.4008 93.2679541575 88.7392 93.6249760472 89.076 93.9803557479 89.4137 94.3366372828 89.7522 94.6937206521 90.0891 95.0491599979 90.4244 95.4029278058 90.759 95.7560414714 91.0984 96.1139954917 91.4359 96.4700568493 91.7709 96.8235374973 92.1059 97.1769631161 92.4404 97.5299694445 92.7798 97.8878739385 93.1147 98.2414178399 93.4568 98.6021103807 93.7934 98.9573579507 94.1313 99.3138596631 94.4709 99.6720980615 94.8095 100.029415335 95.1517 100.390272077 95.488 100.745173789 95.8236 101.099225088 96.1576 101.451661713 96.4931 101.805602006 96.8289 102.159897329 97.1659 102.517478259 97.6151 102.987748949 97.9776 103.371306799 98.3139 103.72659555 98.6503 104.081514719 98.9872 104.436943059 99.324 104.792262227 99.6599 105.14668323 99.9969 105.50235648 100.342 105.866333339 100.689 106.232265227 101.029 106.591011849 101.364 106.944611727 101.703 107.302138233 102.039 107.656756454 102.379 108.015429704 102.721 108.376139641 103.059 108.732886263 103.401 109.093522828 103.737 109.448196078 104.077 109.806777613 104.414 110.162414177 104.753 110.519977369 105.089 110.874522218 105.425 111.22903038 105.762 111.5845202 106.097 111.938083392 106.437 112.296719956 106.778 112.656448236 107.118 113.015213201 107.46 113.375886452 107.796 113.73048633 108.132 114.084976149 108.468 114.439576027 108.81 114.800212591 109.148 115.156940871 109.489 115.516540749 109.824 115.870085598 110.159 116.223538731 110.495 116.578010208 110.831 116.932481684 111.166 117.285934818 111.501 117.639424637 111.839 117.995969486 112.177 118.352514335 112.512 118.70609587 112.852 119.064732434 113.193 119.424479057 113.534 119.784133964 113.869 120.137697156 114.205 120.492186975 114.542 120.847695138 114.878 121.202313359 115.22 121.562913237 115.556 121.917641517 115.899 122.279388139 116.242 122.641263163 116.585 123.003028129 116.922 123.358664693 117.258 123.713227885 117.597 124.070754391 117.932 124.424280896 118.268 124.77873403 118.603 125.132205506 118.939 125.486732012 119.278 125.844386919 119.62 126.20506017 119.957 126.560678391 120.293 126.915186553 120.629 127.269749745 120.969 127.62838631 121.309 127.987151275 121.652 128.348952927 121.994 128.709772922 122.335 129.069482858 122.672 129.425174452 123.013 129.78477433 123.349 130.139465923 123.691 130.500047458 124.026 130.853628993 124.362 131.208118813 124.699 131.563626975 125.035 131.918153481 125.372 132.273643301 125.707 132.627188149 126.046 132.984879743 126.391 133.348754767 126.736 133.712556419 127.071 134.066192983 127.407 134.420646116 127.742 134.77409925 128.077 135.127570726 128.414 135.483060546 128.75 135.837568709 129.086 136.192168587 129.428 136.55286018 129.769 136.912698518 130.113 137.275445141 130.45 137.631191763 130.791 137.990920043 131.134 138.35281341 131.48 138.717743463 131.823 139.079563458 132.16 139.435181679 132.495 139.788671499 132.831 140.143142976 133.167 140.497632795 133.503 140.85221433 133.844 141.211795865 134.18 141.566359057 134.515 141.919830533 134.851 142.274320353 135.188 142.629828516 135.524 142.984355021 135.861 143.339881527 136.198 143.695408033 136.534 144.050007911 136.875 144.409681161 137.216 144.769354411 137.552 145.123935946 137.888 145.478572511 138.232 145.841355819 138.576 146.204139128 138.912 146.558775692 139.248 146.913265512 139.584 147.267755331 139.92 147.622245151 140.256 147.976716627 140.591 148.330188104 140.927 148.684677924 141.264 149.040167743 141.599 149.393657563 141.935 149.748129039 142.271 150.102618859 142.607 150.457090335 142.942 150.810543469 143.277 151.163978259 143.612 151.517468079 143.95 151.873994584 144.287 152.229539433 144.623 152.584065939 144.96 152.941261664 145.388 153.389952653 145.751 153.773625298 146.087 154.128628724 146.424 154.48415523 146.761 154.839681736 147.097 155.194171555 147.432 155.547661375 147.769 155.903151194 148.105 156.257659357 148.441 156.612149177 148.777 156.966638996 149.113 157.321147159 149.45 157.676673664 149.787 158.032181827 150.122 158.385671647 150.458 158.740143123 150.794 159.094651286 151.131 159.450159449 151.467 159.804667611 151.803 160.159157431 152.139 160.513683936 152.477 160.870210442 152.813 161.224718605 153.148 161.578190081 153.484 161.932624872 153.818 162.285059662 154.153 162.638494452 154.489 162.992947586 154.824 163.346400719 155.159 163.699872196 155.496 164.055343672 155.831 164.408815149 156.166 164.762249939 156.501 165.115684729 156.836 165.46911952 157.171 165.822572653 157.507 166.177025787 157.842 166.530442234 158.175 166.881877024 158.512 167.237311815 158.847 167.590764948 159.181 167.943163052 159.515 168.295561156 159.85 168.648977604 160.185 169.002394051 160.519 169.354773812 160.852 169.706153573 161.187 170.059533334 161.521 170.411931439 161.855 170.7643112 162.189 171.116690961 162.523 171.469070722 162.857 171.82143214 163.19 172.172793558 163.524 172.525154976 163.858 172.87755308 164.193 173.230951184 164.527 173.583349289 164.861 173.93572905 165.195 174.288108811 165.529 174.640561944 165.867 174.997106793 166.206 175.354835073 166.55 175.717673411 166.894 176.080621807 167.239 176.44460689 167.585 176.809463571 167.922 177.165155164 168.258 177.519644984 168.593 177.873098117 168.928 178.226551251 169.264 178.581004384 169.599 178.934457517 169.934 179.287928994 170.271 179.64340047 170.606 179.996853604 170.94 180.349270051 171.275 180.702686498 171.61 181.056121289 171.945 181.409556079 172.28 181.762990869 172.615 182.116444003 172.951 182.470878793 173.285 182.823313584 173.62 183.176730031 173.955 183.530164821 174.29 183.883599612 174.625 184.237034402 174.96 184.590469192 175.295 184.94388564 175.629 185.296338773 175.966 185.651773563 176.3 186.004190011 176.633 186.355551429 176.967 186.70793119 177.302 187.061347637 177.637 187.414745741 177.97 187.766143845 178.305 188.119505263 178.638 188.470921711 178.974 188.825319815 179.308 189.177754605 179.643 189.531152709 179.977 189.883550814 180.311 190.235930575 180.645 190.588291993 180.978 190.939653411 181.312 191.292033172 181.647 191.645431276 181.981 191.997811037 182.314 192.349190798 182.649 192.702552216 182.982 193.053931978 183.316 193.406275053 183.649 193.757636471 183.983 194.109979546 184.316 194.461359307 184.651 194.814720725 184.984 195.166100486 185.318 195.518443561 185.651 195.869804979 185.985 196.222148054 186.318 196.573491129 186.651 196.924815861 186.984 197.276158936 187.318 197.628520354 187.652 197.980881772 187.985 198.332224847 188.318 198.683567922 188.652 199.035910997 188.985 199.387254072 189.318 199.738578804 189.651 200.089903536 189.984 200.441228267 190.317 200.792571342 190.651 201.144914417 190.984 201.496275835 191.318 201.84861891 191.651 202.199980328 191.985 202.552323403 192.318 202.903648135 192.65 203.253972867 192.984 203.606279256 193.316 203.956622331 193.65 204.308947063 193.983 204.660290138 194.316 205.01161487 194.649 205.362921259 194.981 205.713227647 195.314 206.064534036 195.647 206.415858768 195.98 206.7671835 196.313 207.118526575 196.647 207.47086965 196.98 207.822231068 197.314 208.1745558 197.646 208.524898875 197.98 208.877205264 198.312 209.227548339 198.646 209.579873071 198.979 209.931216146 199.312 210.282559221 199.646 210.634902296 199.979 210.986245371 200.312 211.337570102 200.645 211.688913177 200.979 212.041256252 201.312 212.392580984 201.644 212.74286903 201.976 213.093193762 202.311 213.446518494 202.643 213.796861569 202.976 214.148149615 203.308 214.49986842 203.718 214.930100832 204.079 215.311351587 204.412 215.663171582 204.744 216.013496313 205.078 216.365821045 205.411 216.71716412 205.744 217.068488852 206.077 217.419813584 206.41 217.771138316 206.743 218.122444705 207.075 218.472751094 207.408 218.824039139 207.74 219.174363871 208.074 219.52667026 208.406 219.876976649 208.738 220.227264695 209.071 220.57855274 209.403 220.928859129 209.736 221.280147175 210.068 221.630453564 210.401 221.981778296 210.735 222.334121371 211.068 222.685464446 211.401 223.036789178 211.734 223.388095566 212.066 223.738401955 212.399 224.089690001 212.731 224.43999639 213.064 224.791284436 213.396 225.141609167 213.73 225.493915556 214.062 225.844240288 214.395 226.195528334 214.727 226.545834723 215.06 226.897122768 215.392 227.247429157 215.725 227.59869886 216.056 227.947968563 216.388 228.298256608 216.722 228.650562997 217.054 229.000887729 217.387 229.352175775 217.719 229.702482164 218.052 230.053770209 218.384 230.404149971 218.721 230.759658133 219.061 231.118349727 219.403 231.479169722 219.747 231.84200806 220.088 232.20191977 220.434 232.566813137 220.777 232.928706504 221.118 233.288526499 221.46 233.649328151 221.802 234.010148146 222.144 234.371004827 222.488 234.733843165 222.829 235.093699846 223.172 235.455556527 223.516 235.818413208 223.857 236.178343262 224.204 236.544199943 224.544 236.90309331 224.887 237.264748217 225.221 237.617293066 225.555 237.969672827 225.889 238.322052588 226.223 238.674414006 226.556 239.025757081 226.889 239.377100156 227.223 239.729461574 227.557 240.081822992 227.89 240.433147724 228.222 240.783490799 228.557 241.136833874 228.89 241.488195292 229.223 241.839520024 229.556 242.190826413 229.888 242.541132802 230.221 242.892420848 230.553 243.242727236 230.886 243.594143684 231.225 243.951780248 231.569 244.3145819 231.911 244.675475267 232.255 245.038313605 232.596 245.398115257 232.936 245.756843536 233.276 246.115571816 233.617 246.475318438 233.958 246.835046718 234.297 247.192774998 234.638 247.552466591 234.977 247.910158184 235.316 248.267794749 235.654 248.624449656 235.994 248.98308622 236.332 249.339741127 236.671 249.697359348 237.009 250.053977569 237.347 250.410540761 237.683 250.765067267 238.019 251.119557087 238.355 251.474028563 238.69 251.827463353 239.024 252.179916487 239.361 252.53536962 239.696 252.888804411 240.029 253.240220858 240.365 253.594600619 240.698 253.945998723 241.032 254.298341798 241.365 254.649703216 241.699 255.002082977 242.034 255.355481082 242.368 255.707879186 242.702 256.060258947 243.036 256.412620365 243.369 256.763945097 243.701 257.114269829 244.035 257.466612904 244.369 257.818992665 244.703 258.171354083 245.036 258.522678815 245.368 258.873040233 245.704 259.227419994 246.038 259.579799755 246.37 259.930087801 246.701 260.27933916 247.033 260.629608863 247.366 260.980896909 247.698 261.331203298 248.031 261.682509686 248.364 262.033852761 248.698 262.386177493 249.03 262.736502225 249.363 263.087790271 249.695 263.438078317 250.027 263.788366362 250.36 264.139691094 250.694 264.492089199 251.03 264.846505646 251.364 265.198922093 251.698 265.551301854 252.032 265.903681615 252.366 266.25602469 252.698 266.606367765 253.032 266.958692497 253.365 267.309998886 253.696 267.659286932 254.029 268.010574978 254.362 268.361918053 254.696 268.714224441 255.027 269.063512487 255.359 269.413800533 255.693 269.766088579 256.024 270.115394967 256.357 270.46666467 256.689 270.816989402 257.023 271.169332477 257.357 271.521693895 257.69 271.87303697 258.023 272.224343359 258.355 272.574668091 258.689 272.927011166 259.023 273.279390927 259.357 273.631734002 259.689 273.98209542 260.024 274.335401809 260.355 274.684708197 260.687 275.0349779 261.02 275.386265946 261.352 275.736553992 261.684 276.086823694 262.016 276.437093397 262.348 276.787399786 262.682 277.139706175 263.014 277.490030907 263.347 277.841355638 263.681 278.193717056 264.015 278.546041788 264.346 278.895329834 264.678 279.24561788 265.012 279.597942612 265.345 279.94930403 265.679 280.301647105 266.012 280.653026866 266.347 281.006388284 266.68 281.357768045 267.014 281.710129463 267.348 282.062509224 267.682 282.414888985 268.016 282.767250403 268.349 283.118630165 268.684 283.47197324 269.016 283.822334658 269.35 284.174641046 269.682 284.524984121 270.016 284.877327196 270.35 285.229725301 270.685 285.583123405 271.019 285.935558195 271.355 286.289956299 271.688 286.641372747 272.023 286.994734165 272.356 287.346113926 272.69 287.698457001 273.023 288.049818419 273.357 288.402216523 273.693 288.756614627 274.026 289.108031074 274.361 289.461410836 274.695 289.813790597 275.028 290.165170358 275.363 290.518568462 275.698 290.871966566 276.031 291.22336467 276.366 291.576726088 276.699 291.928142536 277.035 292.282558983 277.37 292.635993773 277.704 292.988355191 278.036 293.338679923 278.369 293.689986312 278.702 294.041329387 279.036 294.393672462 279.369 294.745052223 279.704 295.098450327 280.039 295.451866775 280.373 295.804283222 280.708 296.157699669 281.043 296.511116116 281.377 296.863514221 281.711 297.215893982 282.045 297.5682554 282.378 297.919671847 282.715 298.275106637 283.05 298.628541428 283.383 298.979939532 283.718 299.333337636 284.053 299.686754083 284.387 300.039133845 284.72 300.390513606 285.055 300.74391171 285.39 301.0973465 285.725 301.450762948 286.059 301.803197738 286.395 302.157614185 286.729 302.510030632 287.063 302.862428737 287.398 303.215845184 287.733 303.569298317 288.069 303.923751451 288.404 304.277222927 288.74 304.631694404 289.076 304.986147537 289.41 305.338600671 289.746 305.693017118 290.08 306.045470251 290.416 306.399905042 290.751 306.753358175 291.086 307.106847995 291.424 307.4633745 291.761 307.818901006 292.096 308.172372483 292.431 308.525807273 292.766 308.879260406 293.102 309.23371354 293.437 309.587166673 293.772 309.94063815 294.109 310.296146312 294.446 310.651672818 294.782 311.006199324 295.119 311.36172583 295.456 311.717252335 295.792 312.071778841 296.129 312.427287004 296.465 312.781795166 296.801 313.136321672 297.139 313.492848178 297.475 313.847374683 297.811 314.201882846 298.148 314.557409352 298.485 314.912935858 298.821 315.26744402 299.157 315.62193384 299.493 315.976405316 299.828 316.329931822 300.167 316.687476671 300.504 317.043058206 300.841 317.398621398 301.179 317.755184589 301.516 318.110766124 301.854 318.467347659 302.192 318.823947537 302.53 319.180529072 302.867 319.536147293 303.207 319.894765515 303.545 320.251402079 303.883 320.608001957 304.221 320.964583492 304.558 321.320165027 304.896 321.676746562 305.234 322.033328097 305.571 322.388946318 305.911 322.747582882 306.25 323.105237789 306.588 323.461837667 306.925 323.817437545 307.264 324.175037423 307.602 324.531655644 307.94 324.888292208 308.28 325.246928773 308.618 325.603620366 308.959 325.963311959 309.299 326.322003553 309.637 326.678695146 309.978 327.038368396 310.317 327.396078333 310.657 327.75473324 310.995 328.111406491 311.335 328.470043055 311.673 328.826752991 312.015 329.187444585 312.354 329.545154521 312.693 329.902827771 313.033 330.261501022 313.372 330.619174272 313.711 330.976847522 314.051 331.335557459 314.392 331.695267395 314.731 332.052995675 315.072 332.412687268 315.411 332.770397205 315.751 333.129088798 316.091 333.487798735 316.431 333.846527014 316.772 334.206255294 317.112 334.565020259 317.454 334.925803568 317.796 335.286586877 318.136 335.645351843 318.477 336.005080122 318.817 336.363808402 319.157 336.722536681 319.498 337.082264961 319.838 337.441011583 320.179 337.800758206 320.52 338.160523172 320.861 338.520288137 321.202 338.88003476 321.542 339.238781383 321.883 339.598528005 322.224 339.958292971 322.565 340.318021251 322.904 340.67574953 323.245 341.035459467 323.585 341.394242775 323.928 341.755989398 324.267 342.113772707 324.609 342.474500986 324.949 342.833247609 325.289 343.191957545 325.629 343.550667482 325.969 343.909377418 326.309 344.268105698 326.65 344.627833977 326.99 344.986562257 327.33 345.345272193 327.67 345.704018816 328.012 346.064747096 328.351 346.422512061 328.693 346.783221998 329.032 347.140950277 329.372 347.499678557 329.714 347.86042518 330.054 348.219171802 330.394 348.577881739 330.734 348.936591675 331.074 349.295319955 331.415 349.655048234 331.755 350.013776514 332.095 350.37248645 332.435 350.731251416 332.778 351.092998039 333.117 351.450744661 333.457 351.809472941 333.799 352.170219563 334.139 352.528966186 334.479 352.887694466 334.82 353.247459431 335.162 353.60824274 335.503 353.968007706 335.843 354.326754328 336.184 354.686482608 336.524 355.04522923 336.865 355.40495751 337.205 355.763722476 337.547 356.124450755 337.886 356.482179035 338.226 356.840888971 338.567 357.200635594 338.908 357.560363873 339.247 357.918110496 339.589 358.278857119 339.93 358.638640427 340.271 358.998423736 340.613 359.360601119 341.03 359.798182049 341.393 360.181726293 341.733 360.540876463 342.074 360.900604743 342.414 361.259333022 342.754 361.618042959 343.094 361.976771238 343.435 362.336517861 343.776 362.69630117 344.118 363.057121165 344.461 363.418959503 344.803 363.779797841 345.145 364.140599492 345.486 364.500382801 345.827 364.860147767 346.168 365.219931076 346.51 365.580732727 346.852 365.941589409 347.196 366.304464433 347.539 366.666321114 347.88 367.026122766 348.221 367.385887731 348.562 367.74567104 348.904 368.106491035 349.247 368.46831103 349.588 368.828167711 349.932 369.191024392 350.275 369.552899416 350.617 369.913756097 350.96 370.275594435 351.302 370.636451116 351.645 370.998326141 351.989 371.361201165 352.331 371.722057846 352.673 372.082914527 353.017 372.445807894 353.361 372.808737947 353.705 373.173245505 354.135 373.624138268 354.5 374.010086059 354.847 374.376493033 355.193 374.741569831 355.54 375.107720001 355.891 375.477998573 356.244 375.850423889 356.599 376.224940921 356.955 376.600531325 357.312 376.977085043 357.665 377.349583731 358.018 377.722009048 358.371 378.094507737 358.728 378.471006425 359.081 378.843596829 359.439 379.221058832 359.789 379.590539178 360.143 379.963964494 360.498 380.338408153 360.849 380.708870156 361.204 381.083277129 361.556 381.454757475 361.911 381.829201134 362.264 382.201644794 362.616 382.573033424 362.968 382.944385368 363.319 383.314682283 363.668 383.682942512 364.018 384.052184397 364.368 384.421481312 364.72 384.792741541 365.068 385.16000177 365.418 385.529206969 365.767 385.897485541 366.119 386.26874577 366.468 386.637024342 366.818 387.006082796 367.158 387.364957821 367.497 387.722612728 367.835 388.079267635 368.175 388.437904199 368.513 388.794559106 368.852 389.152177328 369.19 389.508777206 369.527 389.864322054 369.863 390.218830217 370.199 390.573320037 370.535 390.927828199 370.872 391.283354705 371.209 391.638881211 371.545 391.99337103 371.88 392.346824164 372.215 392.700277297 372.551 393.054748774 372.887 393.40922025 373.222 393.762691727 373.558 394.11714486 373.893 394.47063468 374.23 394.826106156 374.565 395.179577633 374.9 395.533030766 375.236 395.887483899 375.571 396.240937033 375.906 396.594390166 376.242 396.948861643 376.578 397.303351462 376.914 397.657804596 377.248 398.010257729 377.584 398.36469252 377.919 398.718145653 378.254 399.0715621 378.588 399.423996891 378.924 399.778413338 379.258 400.130848128 379.593 400.484282919 379.929 400.838754395 380.265 401.193207529 380.599 401.545660662 380.935 401.900113795 381.271 402.254585272 381.606 402.608038405 381.941 402.961491539 382.277 403.315981358 382.614 403.671489521 382.95 404.025997684 383.286 404.380487503 383.622 404.73495898 383.957 405.088430456 384.293 405.442901933 384.629 405.797391752 384.965 406.151881572 385.301 406.506353048 385.636 406.859824525 385.972 407.214314344 386.309 407.569804164 386.644 407.923293984 386.98 408.27776546 387.316 408.63225528 387.652 408.986745099 387.988 409.341234919 388.324 409.695761424 388.662 410.05228793 388.998 410.406814436 389.334 410.761304256 389.67 411.115794075 390.006 411.470265552 390.341 411.823755371 390.678 412.179245191 391.014 412.533771696 391.351 412.889279859 391.687 413.243806365 392.024 413.599296184 392.359 413.952804347 392.696 414.30831251 393.033 414.663839015 393.369 415.018365521 393.706 415.373873684 394.042 415.728418533 394.38 416.084963381 394.717 416.44050823 395.053 416.795016393 395.389 417.149524555 395.726 417.505032718 396.062 417.859559224 396.399 418.21508573 396.736 418.570667265 397.075 418.928230456 397.411 419.282811991 397.749 419.639338497 398.085 419.993901689 398.423 420.350446538 398.76 420.70600973 399.097 421.061554578 399.434 421.417099427 399.771 421.772699305 400.111 422.131299183 400.448 422.486880718 400.784 422.841425567 401.122 423.197970416 401.459 423.553533608 401.796 423.9090968 402.134 424.265659991 402.471 424.621259869 402.81 424.978859747 403.148 425.335477969 403.486 425.692077847 403.824 426.048677725 404.162 426.40525926 404.499 426.760840795 404.837 427.117403986 405.174 427.472985521 405.512 427.829567056 405.85 428.186166934 406.188 428.542766812 406.526 428.89936669 406.864 429.255984911 407.203 429.613584789 407.54 429.969203011 407.879 430.326802889 408.217 430.683439453 408.556 431.041057674 408.894 431.397657552 409.231 431.753239087 409.569 432.109820622 409.907 432.466402157 410.244 432.821983692 410.582 433.178546884 410.919 433.534165105 411.259 433.892783326 411.597 434.249401547 411.934 434.604964739 412.271 434.960527931 412.609 435.317109466 412.947 435.673691 413.284 436.029272535 413.622 436.385872413 413.961 436.743508978 414.3 437.101145542 414.638 437.457782106 414.977 437.81541867 415.316 438.173036891 415.653 438.528636769 415.991 438.885218304 416.329 439.241799839 416.666 439.597381374 417.004 439.953999595 417.344 440.312636159 417.682 440.669272724 418.02 441.025854259 418.357 441.381435793 418.695 441.738017328 419.033 442.09463555 419.372 442.452235428 419.709 442.807835306 420.047 443.164435184 420.386 443.522071748 420.725 443.879708312 421.063 444.236326533 421.401 444.592926411 421.739 444.949526289 422.077 445.30614451 422.416 445.663781074 422.755 446.021454325 423.095 446.380109232 423.433 446.736745796 423.771 447.093345674 424.109 447.449963895 424.448 447.807600459 424.787 448.165255367 425.126 448.522891931 425.464 448.879528495 425.803 449.237183402 426.143 449.595838309 426.481 449.952474874 426.819 450.309093095 427.158 450.666729659 427.497 451.02434788 427.834 451.379966101 428.173 451.737565979 428.511 452.094202543 428.85 452.451857451 429.19 452.810530701 429.529 453.168203951 429.868 453.525840515 430.206 453.882458736 430.544 454.239076958 430.883 454.596713522 431.222 454.954350086 431.56 455.311004993 431.9 455.669641557 432.238 456.026278122 432.576 456.382878 432.914 456.739496221 433.253 457.097132785 433.592 457.454769349 433.93 457.81138757 434.268 458.167987448 434.606 458.524624012 434.946 458.883242233 435.283 459.238860454 435.621 459.595423646 435.958 459.951005181 436.296 460.307586716 436.634 460.664204937 436.973 461.021841502 437.312 461.379496409 437.651 461.737169659 437.991 462.095824566 438.329 462.452442787 438.666 462.808024322 439.004 463.164605857 439.342 463.521224078 439.681 463.8788423 440.019 464.235460521 440.357 464.592060399 440.695 464.948660277 441.033 465.305260155 441.371 465.661878376 441.71 466.01951494 442.049 466.377151504 442.387 466.733751382 442.724 467.089332917 443.062 467.445914452 443.4 467.802551016 443.74 468.16118758 444.078 468.517842488 444.417 468.875460709 444.755 469.23207893 445.093 469.588697151 445.432 469.946315372 445.77 470.302933593 446.108 470.659533471 446.446 471.016188378 446.787 471.375824943 447.124 471.73147985 447.463 472.089061385 447.8 472.444661263 448.138 472.801242798 448.476 473.157861019 448.815 473.51547924 449.153 473.872097461 449.491 474.228715682 449.83 474.586333903 450.168 474.942970467 450.507 475.300607032 450.846 475.658243596 451.184 476.014861817 451.522 476.371461695 451.86 476.728079916 452.199 477.08571648 452.538 477.443353044 452.876 477.799989609 453.215 478.15760783 453.553 478.514226051 453.891 478.870807586 454.228 479.226389121 454.566 479.582970656 454.904 479.939588877 455.243 480.297207098 455.581 480.653825319 455.919 481.01044354 456.258 481.368061761 456.596 481.724698325 456.935 482.082316546 457.273 482.438916424 457.61 482.794497959 457.948 483.151097837 458.287 483.508752745 458.627 483.867425995 458.966 484.225062559 459.303 484.58068078 459.642 484.938280658 459.98 485.294898879 460.318 485.6515171 460.657 486.009153665 460.996 486.366826915 461.336 486.725481822 461.674 487.082118386 462.012 487.438718264 462.35 487.795318142 462.688 488.15191802 463.026 488.508536241 463.365 488.866154463 463.703 489.222772684 464.041 489.579409248 464.381 489.938045812 464.719 490.294682376 465.057 490.651300597 465.396 491.008918818 465.734 491.365555383 466.073 491.723155261 466.41 492.078773482 466.749 492.436410046 467.089 492.795064953 467.427 493.151701517 467.765 493.508301395 468.103 493.864901273 468.441 494.221501151 468.779 494.578119372 469.118 494.935737594 469.456 495.292374158 469.795 495.650047408 470.136 496.009739001 470.475 496.367430595 470.814 496.725085502 471.153 497.082740409 471.492 497.44041366 471.832 497.79908691 472.171 498.15676016 472.51 498.514433411 472.85 498.873106661 473.189 499.230779911 473.528 499.588434819 473.867 499.946108069 474.207 500.304781319 474.546 500.662436226 474.884 501.019054448 475.222 501.375709355 475.563 501.735382605 475.902 502.093074198 476.241 502.450710763 476.579 502.807347327 476.918 503.164983891 477.257 503.522638798 477.596 503.880275362 477.934 504.236911927 478.273 504.594585177 478.614 504.954258427 478.952 505.310931678 479.291 505.668568242 479.63 506.026223149 479.969 506.383878056 480.308 506.741551307 480.648 507.1002429 480.988 507.45897118 481.329 507.818681116 481.668 508.176372709 482.007 508.534027617 482.346 508.891682524 482.685 509.249337431 483.024 509.607010681 483.364 509.965702275 483.704 510.324412211 484.044 510.683122148 484.384 511.041795398 484.722 511.398450305 485.061 511.756105213 485.401 512.114796806 485.741 512.473506742 486.081 512.832235022 486.422 513.191963302 486.762 513.550728267 487.104 513.91147489 487.444 514.270239856 487.785 514.629986478 488.126 514.989733101 488.466 515.348479723 488.807 515.708208003 489.147 516.066936283 489.487 516.425646219 489.827 516.784392842 490.169 517.145139464 490.509 517.50390443 490.85 517.863651053 491.191 518.223416018 491.532 518.583162641 491.872 518.94189092 492.212 519.300600857 492.552 519.65934748 492.894 520.020094102 493.234 520.378840725 493.574 520.737569004 493.915 521.097297284 494.255 521.456043907 494.596 521.815772186 494.936 522.174518809 495.277 522.534302117 495.62 522.896085426 495.96 523.254868735 496.301 523.614615358 496.642 523.974380323 496.983 524.334145289 497.324 524.693891912 497.664 525.052656877 498.006 525.413421843 498.347 525.773241838 498.69 526.135025147 499.03 526.493826799 499.372 526.854610107 499.714 527.215411759 500.055 527.575580273 500.417 527.959298473 500.898 528.462456908 501.263 528.849670372 501.628 529.234811068 501.996 529.622988451 502.363 530.010220862 502.731 530.398471617 503.1 530.787795744 503.471 531.178679637 503.815 531.544012634 504.263 532.013162199 504.624 532.395715312 504.99 532.781415775 505.337 533.148226296 505.704 533.53500013 506.068 533.918755622 506.414 534.284382712 506.774 534.664083175 507.142 535.05209547 507.505 535.435217823 507.871 535.821230118 508.233 536.203297442 508.599 536.589309737 508.962 536.972377061 509.327 537.358618341 509.757 537.810244827 510.141 538.215889655 510.507 538.602250468 510.867 538.982226077 511.23 539.365165 511.594 539.749122265 511.955 540.130042845 512.316 540.510926738 512.678 540.892810631 513.039 541.273731211 513.402 541.656615104 513.762 542.036150479 514.104 542.397649167 514.465 542.778184542 514.827 543.161150677 515.247 543.602153498 515.61 543.986101289 515.969 544.365003526 516.332 544.749428237 516.778 545.216614489 517.124 545.58380074 517.487 545.966409488 517.847 546.345999892 518.192 546.710571953 518.554 547.0921807 518.916 547.474027907 519.274 547.851544939 519.618 548.215025284 519.978 548.594303856 520.325 548.960545742 520.667 549.321420766 521.007 549.680497564 521.365 550.05792288 521.726 550.438696715 522.085 550.817525579 522.446 551.197987582 522.787 551.558119409 523.128 551.917884375 523.469 552.277832771 523.82 552.647781168 524.161 553.007711221 524.501 553.36649453 524.844 553.728259495 525.184 554.08707949 525.527 554.448881142 525.869 554.809737823 526.212 555.171576161 526.554 555.532432842 526.897 555.894674728 527.261 556.278320161 527.625 556.666551363 528.218 557.283837595 528.585 557.67508714 528.947 558.058585224 529.39 558.523064964 529.756 558.911700319 530.181 559.358216746 530.563 559.762962159 530.996 560.217882133 531.376 560.619508619 531.742 561.00550257 532.086 561.368836171 532.43 561.731747882 532.773 562.093659592 533.117 562.456571302 533.461 562.819501356 533.805 563.182413066 534.148 563.544306433 534.491 563.9061998 534.835 564.269405 535.195 564.648610199 535.538 565.011127231 535.899 565.391295745 536.24 565.751409229 536.58 566.110394311 536.934 566.483709569 537.293 566.862171572 537.641 567.229688604 537.998 567.605783745 538.334 567.960970601 538.687 568.332772253 539.023 568.687537219 539.357 569.039898637 539.688 569.389168339 540.019 569.738383013 540.35 570.087561 540.679 570.434702301 541.008 570.78177023 541.335 571.127058276 541.676 571.487942169 542.092 571.924449727 542.453 572.305608766 542.775 572.645970184 543.093 572.983303785 543.507 573.417114306 543.855 573.784888141 544.171 574.118864355 544.487 574.452235247 544.802 574.784551109 545.115 575.115050403 545.441 575.458531353 545.755 575.790030647 546.069 576.12134651 546.385 576.454625686 546.697 576.783868177 547.009 577.113055638 547.322 577.443224756 547.633 577.771412217 547.946 578.101562993 548.257 578.429713768 548.568 578.757827857 548.879 579.085978632 549.192 579.416166093 549.505 579.74639024 549.818 580.076632731 550.132 580.407856878 550.444 580.737062683 550.756 581.066231801 551.068 581.395437605 551.382 581.726661752 551.695 582.058371689 552.088 582.470888721 552.446 582.849231191 552.804 583.227738749 553.206 583.650246307 553.564 584.027965112 553.879 584.361124756 554.196 584.695569021 554.515 585.032031628 554.831 585.365494235 555.148 585.700140273 555.477 586.047116487 555.811 586.39914773 556.131 586.737013885 556.451 587.07464158 556.772 587.413342647 557.096 587.755062058 557.417 588.093818154 557.74 588.434574251 558.064 588.776678866 558.404 589.134801824 558.728 589.476979811 559.055 589.821919338 559.382 590.166913895 559.709 590.511963481 560.039 590.860013066 560.366 591.205080995 560.694 591.551148924 561.024 591.899216853 561.351 592.244321468 561.681 592.59240774 562.01 592.939567384 562.341 593.288782058 562.674 593.640033417 563.005 593.989284777 563.336 594.338517793 563.668 594.688769153 564 595.039038856 564.332 595.389308558 564.664 595.739578261 564.996 596.08988465 565.33 596.442227725 565.664 596.794589143 565.997 597.145950561 566.331 597.498311979 566.665 597.850710083 567 598.204108187 567.334 598.556524635 567.669 598.909922739 568.003 599.262339186 568.338 599.615773976 568.674 599.970208767 569.008 600.322625214 569.342 600.675004975 569.676 601.027384736 570.01 601.385120675 570.636 602.03537022 570.998 602.421619766 571.332 602.77449479 571.665 603.125856208 571.999 603.47818094 572.331 603.828468985 572.662 604.177738688 572.995 604.529026734 573.328 604.88031478 573.659 605.229621168 573.993 605.588971298 574.71 606.33187172 575.071 606.718772142 575.405 607.073554846 575.843 607.532374236 576.206 607.916175283 576.539 608.26806865 576.873 608.620411725 577.206 608.9717548 577.539 609.323097875 577.873 609.675459293 578.207 610.02787574 578.543 610.382310531 578.878 610.73580035 579.215 611.091271827 579.55 611.444761646 579.886 611.799233123 580.222 612.153759628 580.56 612.510304477 580.897 612.867683634 581.333 613.324356279 581.687 613.699065611 582.026 614.056995664 582.365 614.414668914 582.705 614.773342165 583.044 615.131015415 583.383 615.488707008 583.724 615.848398602 584.063 616.206090195 584.402 616.563781789 584.743 616.923510068 585.084 617.283256691 585.424 617.641948284 585.762 617.998621534 586.102 618.357294785 586.442 618.715986378 586.781 619.073659629 587.12 619.431332879 587.46 619.790006129 587.799 620.149935578 588.261 620.633250231 588.622 621.015583227 588.962 621.374660025 589.301 621.732333275 589.64 622.090006526 589.98 622.448679776 590.319 622.806353026 590.658 623.164026277 590.998 623.524130287 591.415 623.961656188 591.777 624.344182089 592.117 624.70327723 592.456 625.060987166 592.797 625.420733789 593.139 625.781498754 593.479 626.140245377 593.819 626.49893697 594.158 626.856628564 594.498 627.2153385 594.839 627.57506678 595.179 627.933795059 595.519 628.292504996 595.859 628.651251619 596.201 629.011979898 596.54 629.369708178 596.88 629.728399771 597.22 630.087109707 597.56 630.445819644 597.9 630.804511237 598.239 631.16249632 598.595 631.537738206 598.949 631.911420325 599.312 632.295936752 599.768 632.773379807 600.118 633.144456 600.461 633.506477769 600.805 633.869371136 601.148 634.231264503 601.491 634.59315787 601.835 634.957408625 602.252 635.395026241 602.615 635.778607171 602.957 636.139812371 603.299 636.500632366 603.641 636.861415675 603.981 637.220198983 604.323 637.580982292 604.665 637.941802287 605.007 638.302603939 605.348 638.662350561 605.687 639.020060498 606.027 639.378733748 606.366 639.738406394 606.814 640.207519273 607.178 640.592668839 607.519 640.952800666 607.857 641.309473916 608.196 641.66711048 608.535 642.024747044 608.873 642.381365265 609.211 642.737965144 609.549 643.094565022 609.887 643.451128213 610.223 643.805691405 610.561 644.162217911 610.897 644.520926638 611.461 645.108075598 611.823 645.493242902 612.16 645.850677088 612.575 646.28609293 612.936 646.667545459 613.275 647.025567227 613.612 647.381148762 613.949 647.736693611 614.286 648.09223846 614.623 648.447801652 614.961 648.806657728 615.423 649.289935695 615.783 649.672846196 616.21 650.120904046 616.571 650.503934079 616.984 650.937771812 617.346 651.322260422 617.797 651.794758506 618.156 652.174798013 618.493 652.535717383 619.101 653.167691782 619.463 653.555427116 619.896 654.009851827 620.269 654.403799619 620.605 654.763975792 621.214 655.396950191 621.576 655.782942933 621.913 656.138909672 622.248 656.492417835 622.585 656.847907655 622.921 657.202397474 623.256 657.562802633 623.97 658.302666369 624.331 658.689530104 624.666 659.045899787 625.135 659.536269469 625.496 659.918602465 625.829 660.270459146 626.163 660.622820564 626.497 660.975200326 626.831 661.327561744 627.164 661.678923162 627.498 662.03266031 627.907 662.461929408 628.269 662.84416182 628.601 663.195000158 628.934 663.546288204 629.266 663.89652122 629.595 664.24371755 629.926 664.592858852 630.255 664.940036839 630.586 665.289233169 630.918 665.639466186 631.249 665.993706862 631.853 666.621424458 632.211 667.01099289 632.97 667.797085612 633.33 668.183609698 633.657 668.530750394 634.068 668.961927777 634.43 669.344068473 634.755 669.687741723 635.086 670.036809652 635.415 670.383950953 635.744 670.732908219 636.174 671.183379091 636.531 671.560794933 636.857 671.905321439 637.184 672.250352681 637.514 672.598493983 637.846 672.950836453 638.293 673.418765901 638.655 673.801677007 638.986 674.151423629 639.315 674.498583274 639.645 674.846761261 639.977 675.196994277 640.309 675.547245637 640.64 675.896533683 640.974 676.248821729 641.306 676.59914646 641.639 676.950507878 641.975 677.304905983 642.309 677.657304087 642.642 678.017066633 643.434 678.836342786 643.796 679.225637281 644.13 679.578567335 644.466 679.933002125 644.801 680.286473602 645.137 680.640926735 645.472 680.994398211 645.808 681.348851345 646.143 681.702322821 646.479 682.056775955 646.814 682.410229088 647.149 682.767864443 647.713 683.35499506 648.075 683.740144021 648.411 684.095074074 648.745 684.447472178 649.078 684.798833597 649.412 685.151176672 649.745 685.502519746 650.078 685.859769292 650.734 686.540477414 651.092 686.921648126 651.653 687.492223854 652.27 688.111318893 652.631 688.468787467 653.048 688.88290157 653.41 689.241901756 653.816 689.645046237 654.176 690.002046424 654.595 690.41816559 654.954 690.774350575 655.288 691.1057558 655.62 691.434143366 656.381 692.191457519 656.744 692.550771672 657.076 692.879432639 657.7 693.500136641 658.046 693.842840643 658.378 694.172086384 658.788 694.579291621 659.15 694.938496858 659.482 695.267689437 659.897 695.679892143 660.255 696.03509738 660.586 696.36351273 660.918 696.692295208 661.526 697.297004274 661.886 697.653019711 662.492 698.255660426 662.853 698.613374554 663.184 698.941784842 663.515 699.269693895 664.074 699.82552194 664.437 700.184777869 664.994 700.738535032 665.355 701.095299887 665.981 701.717220185 666.34 702.070933071 666.947 702.673299105 667.307 703.02876998 667.636 703.353911837 668.051 703.765053693 668.411 704.120339349 668.985 704.689817214 669.345 705.045399919 669.675 705.370493367 670.389 706.079590309 670.748 706.433390203 671.163 706.844423724 671.524 707.201279015 671.934 707.607326515 672.294 707.963496329 672.62 708.285963192 672.945 708.607555864 673.269 708.928152031 673.594 709.249381255 674.024 709.675491659 674.382 710.029619537 674.702 710.345184769 675.293 710.931750001 675.651 711.285046141 676.048 711.67816004 676.405 712.0314312 676.718 712.340995915 677.031 712.649914111 677.573 713.187517784 677.976 713.58597468 678.331 713.937078095 678.688 714.287975649 679.378 714.970800633 679.735 715.319190702 680.149 715.725881807 680.506 716.072410907 681.351 716.907302861 681.709 717.255473433 682.023 717.561309242 682.611 718.14114505 682.969 718.49069576 683.327 718.841500918 683.923 719.431812748 684.284 719.788068235 684.895 720.396068489 685.255 720.752546265 685.848 721.342589308 686.208 721.698173015 687.216 722.702283704 687.575 723.056840387 688.181 723.659858657 688.54 724.015444531 689.091 724.563586665 689.45 724.919291899 690.003 725.469429528 690.362 725.825648232 690.685 726.145531379 691.387 726.844414526 691.746 727.199439637 692.45 727.900234953 692.81 728.256604629 693.358 728.801749015 693.718 729.158118692 694.422 729.85891626 694.78 730.213797155 695.103 730.534540589 695.424 730.852160244 696.281 731.705694321 696.642 732.062714928 697.191 732.608859314 697.549 732.963231243 698.253 733.664031063 698.612 734.019060678 699.312 734.715867255 699.671 735.071673832 700.03 735.427405551 700.64 736.033201232 701 736.387154687 701.547 736.928014913 701.907 737.282073821 702.226 737.59624729 702.543 737.908629133 702.86 738.218442641 703.709 739.060057467 704.067 739.409567424 704.612 739.948456725 704.97 740.300190957 705.36 740.684836221 705.717 741.034843566 706.413 741.724010826 706.77 742.07438646 707.084 742.38250352 707.627 742.919620579 707.984 743.270524418 708.342 743.623329597 708.699 743.973273945 709.44 744.707223139 709.797 745.054809796 710.191 745.433922521 710.55 745.770725734 710.908 746.09698647 711.448 746.605297706 711.805 746.930023207 712.495 747.599293901 712.852 747.941154365 713.437 748.518550254 713.794 748.867940289 714.152 749.216521495 715.046 750.101090992 715.405 750.450666344 715.762 750.801086651 716.17 751.202495251 716.531 751.556909704 716.887 751.904532889 717.601 752.610179489 717.958 752.957737279 718.5 753.489171136 719.406 754.381303439 720.327 755.289512844 720.685 755.635108602 721.525 756.46403903 722.218 757.145975312 722.575 757.492526245 723.31 758.219038207 723.668 758.501179255 724.507 759.25701972 725.202 759.865045763 725.556 760.187491902 726.397 761.002414055 726.764 761.336624751 727.52 762.065963162 728.055 762.575947967 728.411 762.915061001 728.768 763.254414979 729.457 763.925756372 729.814 764.260163926 730.563 764.990737553 730.921 765.32521372 731.683 766.068611138 732.041 766.400788779 733.036 767.37575643 733.394 767.714153182 733.778 768.086474847 734.136 768.432807128 734.493 768.774391725 735.23 769.495976323 735.588 769.833390603 736.432 770.660839217 736.789 771.000353564 737.235 771.434016995 737.594 771.778728046 738.134 772.305340238 738.492 772.6495551 738.885 773.030667892 739.244 773.374182394 739.938 774.053071717 740.296 774.393594309 740.876 774.95971519 741.234 775.30384678 741.591 775.647406739 742.131 776.173955988 742.49 776.510158577 743.185 777.164471222 743.542 777.459760025 744.389 778.254497405 744.746 778.577268466 745.287 779.103289588 745.826 779.627279439 746.186 779.970028191 746.942 780.710663636 747.3 781.052902979 747.698 781.439311808 748.054 781.738013608 748.638 782.26199728 748.996 782.556038609 749.395 782.933651891 749.753 783.26389711 750.443 783.926947927 750.8 784.256365774 751.191 784.626190045 751.547 784.960975955 751.906 785.295980633 752.442 785.80796613 752.799 786.140970807 753.157 786.471038583 753.893 787.178759664 754.249 787.49772622 755.022 788.240696157 755.379 788.567666093 755.735 788.902022622 756.093 789.233407822 756.696 789.809793022 757.052 790.134247309 757.654 790.698036225 758.418 791.418956991 758.776 791.70736272 759.924 792.786458604 760.463 793.160077933 761.65 794.203105503 762.189 794.604853945 762.546 794.904621074 763.436 795.743220444 763.793 795.899112565 764.83 796.57905069 765.672 796.894327591 766.663 797.487642233 767.809 798.396923302 768.648 799.156825911 769.486 799.937807424 769.844 800.239155716 770.527 800.875418482 770.883 801.16270383 771.723 801.943526788 772.08 802.197242567 772.965 802.916662117 773.862 803.656001492 774.218 803.9035518 774.748 804.410912975 775.28 804.911684807 776.174 805.777202675 776.532 806.101036888 777.42 806.95579709 778.256 807.758589223 778.612 808.084622315 779.297 808.747302797 779.654 808.933640674 780.646 809.726414398 781.002 809.887607971 781.687 810.115209294 782.044 810.276402867 782.882 810.595002372 783.573 811.026063847 783.93 811.271287103 784.62 811.854029815 785.766 812.88369247 786.662 813.648903888 787.654 814.515406585 788.012 814.709846004 788.849 815.414575338 789.206 815.624036898 790.198 816.532428336 790.555 816.807034033 791.545 817.759894205 791.901 818.071666623 792.583 818.723265613 792.939 819.038309302 793.779 819.844440745 794.136 820.047444787 795.277 821.010425685 795.634 821.018184929 796.625 821.734494386 797.615 822.472911017 797.972 822.634104589 799.418 823.458490265 800.104 823.559314618 800.979 824.066058162 802.43 825.187325111 803.119 825.552849479 804.253 826.394618948 805.342 827.205280193 806.335 828.072356042 806.691 828.249845634 807.683 829.056479971 808.979 830.145470231 809.968 831.025424609 810.801 831.762431934 812.272 833.161212733 812.803 833.608441513 813.947 834.651605012 814.787 835.251772287 815.779 835.948989635 817.264 837.16640622 817.646 837.286851786 819.093 838.461453304 820.087 839.123082295 821.388 840.156879403 822.691 841.178126436 823.683 841.929420373 824.675 842.691577525 825.971 843.805886097 827.152 844.723014596 828.605 845.831004946 829.598 846.521935795 829.955 846.656651296 830.64 847.194997563 831.539 847.958017376 832.533 848.860631549 832.889 849.189945157 833.876 850.15031586 834.865 851.08790233 836.102 852.27412563 836.458 852.547575659 837.903 853.917112759 838.687 854.614084211 839.522 855.268734048 840.811 856.35365541 842.125 857.346613788 843.344 858.330622113 844.777 859.562871458 845.158 859.861006418 846.303 860.960667163 847.292 861.896902234 848.372 862.914692295 849.76 864.187163176 851.175 865.495749619 851.55 865.754452976 852.537 866.683545771 853.368 867.454179657 854.658 868.721110952 855.013 869.027284722 856.454 870.374659904 857.134 870.931235869 858.422 872.11682842 859.255 872.891755089 860.088 873.654250594 861.073 874.5751251 861.906 875.353874107 862.262 875.696185227 862.941 876.362067939 863.696 877.100433165 864.532 877.917966367 865.461 878.732365615 866.435 879.573501718 866.79 879.67839062 868.211 880.94275256 868.741 881.327656942 869.572 882.122697738 870.537 883.045609279 871.31 883.736113718 872.551 884.840813095 873.838 885.855111988 875.147 886.911744687 876.285 887.856248447 876.965 888.488317453 877.321 888.809297295 878.702 890.126551638 879.685 890.910276433 880.744 891.738555309 881.654 892.443339454 882.009 892.692543106 882.84 893.461553672 883.52 894.088632866 883.876 894.418741171 884.863 895.381451753 885.219 895.672251628 886.054 896.433079005 887.191 897.485963068 888.172 898.37769448 889.156 899.283940907 889.512 899.538120964 890.342 900.306632012 890.87 900.755927705 891.709 901.536603597 892.697 902.472729295 893.052 902.799887674 893.579 903.293237512 894.566 904.244960565 894.922 904.563261532 895.451 905.040926062 896.41 905.940623785 897.476 906.901235533 898.77 908.087787222 899.759 908.960230581 900.116 909.211352303 900.953 909.867814923 902.396 911.054457729 903.763 912.166332503 905.135 913.386620247 905.513 913.658166117 906.882 914.956940367 907.566 915.575777613 909.039 917.034782579 909.57 917.558888944 910.949 918.948461046 912.151 920.165605351 913.517 921.546563567 914.866 922.90077179 915.241 923.28091867 916.431 924.476171326 917.112 925.198105754 918.552 926.680002378 919.082 927.291467672 920.219 928.484212213 921.587 929.911853478 922.915 931.267462411 923.979 932.353528547 924.336 932.730312281 925.552 933.959008261 926.793 935.209662284 927.55 935.984597929 928.795 937.250573737 930.087 938.563625686 930.463 938.951497876 931.675 940.179915906 932.89 941.437020276 934.18 942.794637478 935.458 944.167024273 936.753 945.544080357 938.14 946.99040925 939.475 948.350299769 939.851 948.758332776 941.188 950.124525763 941.717 950.69079453 942.854 951.867964056 943.993 953.048661167 944.348 953.451636249 945.646 954.777807922 946.178 955.459367153 947.57 957.017772571 948.911 958.563641504 950.247 960.038932775 951.495 961.424743787 952.852 962.902495586 954.208 964.325633491 955.492 965.64901442 956.823 966.993405587 957.199 967.392101832 958.474 968.687662778 959.002 969.267660295 960.319 970.650994822 960.847 971.30169755 962.235 972.785158693 962.763 973.386897837 963.674 974.375877703 964.986 975.771019986 965.36 976.259131033 966.593 977.601972081 967.602 978.721605879 968.523 979.774081394 969.766 981.158648339 971.017 982.614797067 972.094 983.896700714 972.772 984.91310788 973.782 986.268993098 974.841 987.641744883 975.749 988.752675058 976.428 989.659330513 977.602 991.070233859 978.621 992.246126242 978.977 992.765322428 979.863 993.831731153 981.305 995.487296774 982.595 996.974921751 983.757 998.297083516 984.132 998.901478832 985.22 1000.16424757 986.362 1001.50885727 987.657 1002.95397322 988.873 1004.3538271 990.089 1005.74871069 990.62 1006.54308049 991.656 1007.83043129 992.72 1009.20469062 993.975 1010.63263956 994.351 1011.22060979 995.479 1012.49139558 996.161 1013.34427451 997.374 1014.64977282 998.054 1015.44561118 998.739 1016.27096896 999.808 1017.51265143 1000.45 1018.33528652 1001.33 1019.4044919 1002.46 1020.68730886 1003.3 1021.63735358 1004.29 1022.67286499 1004.64 1023.07495507 1005.49 1023.96147516 1005.84 1024.36398854 1006.98 1025.53739702 1007.52 1026.11039541 1008.19 1026.79468012 1008.54 1027.15383917 1008.99 1027.61416094 1009.45 1028.08750047 1009.98 1028.63374459 1010.76 1029.43567973 1011.82 1030.54141719 1012.9 1031.69555956 1013.64 1032.54592189 1014.58 1033.57091278 1014.93 1033.98231762 1016.01 1035.12587106 1017.22 1036.45957477 1018.37 1037.77926602 1019.2 1038.77899445 1020.15 1039.95985857 1021.3 1041.38752833 1022.62 1042.94580292 1023 1043.46346938 1024.17 1044.6926112 1025.52 1046.16390943 1026.73 1047.52143941 1027.71 1048.68366568 1028.61 1049.72019429 1029.62 1050.82129524 1029.98 1051.22618689 1030.96 1052.22979459 1031.32 1052.67391233 1032.18 1053.65502143 1033.13 1054.727481 1033.49 1055.19350007 1034.69 1056.464017 1035.6 1057.45410359 1036.66 1058.5586826 1037.87 1059.80307365 1038.4 1060.40085413 1039.38 1061.47072339 1040.07 1062.26637002 1040.99 1063.25870896 1041.83 1064.13774744 1042.18 1064.50979029 1042.73 1065.07304944 1043.32 1065.69139773 1043.96 1066.35974493 1044.31 1066.74255785 1045.3 1067.75902901 1046.25 1068.73527801 1046.6 1069.11517092 1047.07 1069.61478406 1047.76 1070.33631296 1048.44 1071.03940536 1049.5 1072.11375824 1049.86 1072.48790049 1050.66 1073.30137181 1051.18 1073.85506507 1052.19 1074.89596504 1053.19 1075.91272422 1054.25 1076.95795674 1055.35 1078.0224539 1056.47 1079.09727989 1057.72 1080.30005954 1058.57 1081.106018 1059.51 1082.00938121 1060.72 1083.19221436 1061.41 1083.86805393 1062.24 1084.69230372 1062.92 1085.35885784 1063.68 1086.10593162 1064.03 1086.43888752 1064.94 1087.3354254 1065.78 1088.16117984 1066.14 1088.4931528 1066.96 1089.27361598 1067.88 1090.14755197 1069.03 1091.28049336 1069.9 1092.15930629 1070.66 1092.93942586 1071.64 1093.93107863 1072 1094.29788074 1073.14 1095.44461509 1073.66 1095.97380945 1074.99 1097.31110829 1075.67 1098.02324061 1076.41 1098.81632794 1077.34 1099.80264089 1078.12 1100.61993984 1078.89 1101.40753179 1079.24 1101.81858378 1079.93 1102.56480765 1080.29 1102.98127563 1080.82 1103.52253857 1081.17 1103.89218028 1081.91 1104.67348555 1082.58 1105.37487335 1083.88 1106.69259335 1084.87 1107.67736192 1085.84 1108.6512021 1086.2 1109.03238419 1087.05 1109.9028143 1088.04 1110.90941615 1088.39 1111.26813978 1089.57 1112.46970121 1090.75 1113.6827598 1091.98 1114.95551807 1093.02 1116.02808505 1094.01 1117.04227977 1094.36 1117.41428189 1095.47 1118.54810616 1096 1119.11652127 1096.68 1119.84080876 1097.82 1121.06749632 1098.55 1121.94103068 1099.56 1123.19021793 1100.63 1124.51045621 1101.85 1126.03272317 1103.04 1127.48396129 1104.19 1128.91418826 1105.56 1130.45174247 1105.93 1131.01830401 1107.3 1132.51791864 1107.83 1133.1885141 1108.77 1134.18927988 1109.66 1135.17144286 1110.55 1136.15815559 1111.4 1137.09711903 1112.63 1138.37993281 1113.16 1138.97804997 1114.35 1140.21876296 1115.42 1141.33131498 1115.78 1141.68791072 1116.45 1142.35493436 1117.55 1143.45018129 1117.91 1143.78298371 1118.81 1144.63178901 1119.49 1145.22551188 1120.57 1146.24342297 1121.64 1147.27411206 1122.77 1148.40079902 1123.66 1149.28803268 1124.01 1149.63249469 1124.48 1150.09541218 1125.33 1150.93515848 1126.24 1151.83783621 1127.02 1152.61484848 1128.15 1153.75471996 1128.98 1154.6087957 1130.24 1155.91188519 1130.77 1156.54089827 1131.89 1157.78356463 1133.05 1159.05748193 1134.28 1160.33938711 1134.66 1160.74051402 1135.7 1161.79211383 1136.23 1162.35106683 1137.56 1163.71573297 1137.94 1164.23579631 1139.01 1165.46303466 1140.13 1166.73308994 1140.51 1167.16559315 1141.46 1168.14532042 1142.83 1169.5499524 1143.51 1170.28128013 1144.41 1171.23805652 1145.42 1172.30199731 1145.95 1172.91443793 1146.88 1173.96808222 1148.16 1175.37096953 1148.69 1175.98528674 1149.83 1177.14896566 1150.21 1177.55314858 1151.28 1178.63212479 1152.35 1179.70667054 1153.48 1180.83408724 1153.85 1181.19830548 1154.47 1181.80112502 1155.51 1182.82088143 1156.04 1183.32595828 1157.11 1184.38056707 1158.4 1185.65951134 1158.77 1186.03431531 1159.91 1187.19483401 1160.97 1188.2958417 1162.34 1189.71557217 1163.01 1190.50149914 1164.03 1191.68165836 1165.38 1193.18101772 1165.76 1193.68720101 1166.88 1194.95777494 1167.91 1196.16000184 1169.05 1197.46876479 1169.89 1198.42362329 1170.64 1199.27093559 1171.41 1200.08834218 1172.46 1201.14650407 1173.37 1202.05143839 1174.43 1203.10574282 1174.8 1203.47269498 1175.4 1204.06273377 1176.17 1204.8153946 1177.01 1205.63693232 1177.36 1205.97238858 1178.24 1206.84890272 1179 1207.62363775 1180.23 1208.87404313 1180.6 1209.26495667 1181.74 1210.41191613 1182.96 1211.65831804 1184.33 1213.09052715 1185.46 1214.33606858 1186.15 1215.14228173 1186.83 1215.94724623 1187.53 1216.75140775 1188.59 1217.90161441 1188.95 1218.31924045 1189.71 1219.13495707 1190.55 1220.17390969 1191.76 1221.65780824 1192.68 1222.86136056 1193.67 1223.99887372 1194.51 1224.90194936 1194.86 1225.28476659 1195.54 1225.99923738 1196.29 1226.80207098 1197.28 1227.91225341 1198.5 1229.24795604 1198.86 1229.73549977 1199.64 1230.63199807 1200.44 1231.54736667 1200.79 1232.04944908 1201.98 1233.34968139 1202.51 1234.1049783 1203.04 1234.83543017 1203.61 1235.6203026 1204.6 1236.73083207 1205.36 1237.59788214 1206.21 1238.53369737 1207.47 1239.85243574 1207.84 1240.25750484 1209.05 1241.4860328 1209.58 1242.05178184 1210.58 1243.11249739 1211.8 1244.41074923 1212.7 1245.37432907 1213.94 1246.64462944 1214.5 1247.23539238 1215.67 1248.43108984 1216.04 1248.82659946 1216.57 1249.36867129 1217.3 1250.11477493 1218.35 1251.17901851 1218.88 1251.71539427 1219.83 1252.6658292 1221 1253.83451415 1222.13 1254.96171248 1223.3 1256.12815827 1223.67 1256.50071107 1224.69 1257.52526496 1225.69 1258.53050748 1226.06 1258.91788944 1227.17 1260.04708162 1228.15 1261.05013161 1229.06 1261.9694427 1230.04 1262.95720136 1230.4 1263.32529417 1231.54 1264.47640367 1232.39 1265.34537182 1233.26 1266.26393695 1234.23 1267.28681839 1234.61 1267.73700164 1235.6 1268.76907826 1236.06 1269.30293115 1237 1270.29567459 1237.37 1270.73541118 1238.04 1271.46042849 1239.26 1272.74998766 1240.01 1273.56634727 1240.85 1274.45845106 1241.61 1275.25867911 1242.42 1276.09297885 1242.78 1276.48142215 1243.85 1277.61147623 1244.68 1278.50675672 1245.03 1278.98830897 1245.94 1280.01176058 1246.31 1280.58178278 1247.42 1281.81743136 1247.79 1282.34438232 1248.85 1283.47487181 1249.23 1283.96506001 1250.35 1285.22297969 1251.26 1286.44538333 1252.46 1287.98210793 1253.2 1288.99852608 1254.42 1290.32552768 1255.6 1291.54560338 1256.68 1292.64819386 1257.49 1293.4644573 1257.84 1293.78328975 1259.05 1294.95532258 1259.69 1295.52978495 1260.93 1296.67523297 1262 1297.61166971 1262.96 1298.3887752 1264.15 1299.40164156 1265.23 1300.3356421 1265.91 1300.89575932 1267.09 1301.98158084 1268.34 1303.14751841 1268.87 1303.58131418 1269.93 1304.56833368 1270.3 1304.8583981 1270.97 1305.49183606 1271.99 1306.47290081 1273.21 1307.66112672 1273.56 1307.9938012 1274.32 1308.71607668 1275.36 1309.69032782 1276.35 1310.58171177 1277.67 1311.81951899 1278.19 1312.26650413 1279.16 1313.15853254 1280.18 1314.08046802 1281.27 1315.07442322 1281.98 1315.71321697 1283.05 1316.73945489 1283.41 1317.06659978 1284.15 1317.78152256 1285.44 1319.04693327 1285.8 1319.33468712 1286.78 1320.15878506 1287.69 1320.88569905 1288.68 1321.69564154 1289.51 1322.42428877 1290.36 1323.19615643 1290.72 1323.46569991 1291.7 1324.35757982 1292.64 1325.1769492 1293.4 1325.81471314 1294.08 1326.31787559 1295.01 1327.04956895 1295.89 1327.77827729 1296.73 1328.5158834 1297.64 1329.30730824 1298.57 1330.10529998 1299.35 1330.75315526 1300.1 1331.28921336 1301.09 1332.00321261 1302.11 1332.74147827 1303.14 1333.64158032 1303.88 1334.33669842 1304.85 1335.27998772 1305.71 1336.1173304 1306.06 1336.43984615 1306.71 1336.96695121 1307.56 1337.676875 1308.33 1338.30461456 1309.09 1339.02215337 1309.45 1339.35065354 1310.23 1340.11182307 1310.58 1340.43604175 1311.49 1341.25467369 1312.56 1342.22357069 1312.92 1342.46678242 1313.77 1343.19393528 1314.95 1344.1879384 1316.18 1345.18258651 1317.09 1345.84852256 1318 1346.58028412 1318.36 1346.82655756 1318.81 1347.24488248 1319.28 1347.6861189 1319.73 1348.08889805 1320.44 1348.74291399 1320.89 1349.11070741 1321.42 1349.55874712 1322.06 1350.11270637 1322.59 1350.56890145 1323.19 1351.08716743 1324.21 1352.03283504 1324.59 1352.27083635 1325.73 1353.29182632 1326.26 1353.62248668 1327.09 1354.28421388 1327.98 1354.96655225 1329.07 1355.87355371 1329.75 1356.41032724 1330.28 1356.81253421 1331.22 1357.65361113 1332.05 1358.38711773 1332.4 1358.55621437 1333.17 1359.13160272 1333.92 1359.49348319 1334.9 1360.14463917 1335.69 1360.623372 1336.45 1361.18971717 1337.22 1361.80574183 1337.57 1361.98706378 1338.41 1362.73294624 1338.77 1362.99384465 1339.3 1363.4156702 1340.21 1364.22594374 1340.57 1364.48872559 1341.56 1365.43224794 1341.91 1365.66983219 1342.82 1366.44677985 1343.56 1366.99177107 1344.49 1367.76192644 1345.3 1368.42383735 1346.15 1369.17458544 1346.51 1369.43574045 1347.11 1369.90663667 1347.69 1370.36363867 1348.05 1370.6123586 1348.59 1371.05709191 1349.19 1371.56605233 1349.55 1371.85114273 1350 1372.26950125 1350.46 1372.66568904 1351.49 1373.54402624 1352.66 1374.56179052 1353.04 1374.79765416 1353.9 1375.60551696 1354.57 1376.21694943 1355.25 1376.82548277 1356.23 1377.71065059 1357.33 1378.72356259 1357.86 1379.20735061 1358.83 1380.15772042 1359.59 1380.89366452 1360.31 1381.59569541 1360.99 1382.25108681 1362.1 1383.34019167 1362.62 1383.82243125 1363.85 1385.02203692 1364.68 1385.82581201 1365.21 1386.3336675 1365.81 1386.91030914 1366.32 1387.39204301 1366.85 1387.88079643 1368.13 1389.11424454 1369.04 1389.98049922 1369.4 1390.31658217 1369.86 1390.75483624 1370.54 1391.40306928 1371.37 1392.19432492 1372 1392.79379145 1372.99 1393.76666334 1374.06 1394.83274937 1375.13 1395.89855242 1375.82 1396.58496496 1376.43 1397.19166029 1377.45 1398.20838861 1378.51 1399.2695342 1379.19 1399.9581662 1380.11 1400.89106829 1380.47 1401.29489548 1381.49 1402.36233634 1382.74 1403.6626866 1383.11 1404.05442665 1384.17 1405.17151695 1385.37 1406.44452386 1386.56 1407.71028467 1387.53 1408.70056137 1388.37 1409.5361262 1389.05 1410.20049857 1389.81 1410.95331199 1390.52 1411.6508833 1391.58 1412.69962597 1392.11 1413.21983781 1392.46 1413.56079126 1393.37 1414.45023617 1393.95 1415.00714659 1394.31 1415.34462194 1394.96 1415.98153626 1395.32 1416.32648948 1395.84 1416.82788578 1396.52 1417.4875507 1396.88 1417.76725895 1397.71 1418.49133366 1398.54 1419.20367438 1399.38 1419.98432811 1399.73 1420.28678544 1400.43 1420.8755453 1401.34 1421.64318252 1402.1 1422.2637826 1402.89 1422.98941574 1403.24 1423.30160083 1403.97 1424.00869102 1404.33 1424.28224304 1405.08 1424.94348277 1406 1425.77500052 1406.36 1426.10019203 1407.14 1426.79108968 1408.13 1427.65848549 1409.35 1428.68416974 1410.57 1429.73477892 1411.55 1430.54225527 1412.4 1431.28131993 1413.35 1432.12573219 1414.14 1432.83404959 1415.4 1434.03200125 1415.93 1434.51919266 1416.56 1435.10172655 1417.69 1436.18135371 1418.86 1437.29394846 1419.96 1438.33238953 1421.33 1439.63454394 1422.48 1440.72104355 1423.64 1441.81786894 1424.85 1442.91564865 1425.97 1443.9117464 1426.99 1444.79168274 1428.07 1445.74497594 1429.24 1446.79190987 1430.51 1447.9405066 1431.7 1449.05366897 1432.22 1449.49318988 1433.45 1450.68254713 1433.83 1451.02580366 1434.5 1451.68787879 1435.72 1452.90002374 1436.08 1453.22966926 1437.15 1454.26211591 1437.52 1454.5505399 1438.73 1455.66617544 1439.58 1456.3572617 1440.49 1457.0834588 1441.17 1457.56266337 1442.25 1458.46440319 1443.16 1459.22360334 1444.08 1460.02437535 1444.99 1460.85898601 1445.35 1461.16783561 1446.33 1462.10632947 1447.16 1462.88946181 1447.91 1463.57535899 1448.82 1464.4234368 1449.65 1465.19496233 1450.37 1465.88406336 1450.73 1466.19005332 1451.49 1466.89717661 1451.84 1467.1712631 1452.83 1468.11180041 1453.61 1468.84911334 1453.97 1469.18687405 1454.58 1469.75043395 1455.49 1470.61298698 1455.85 1470.9257315 1456.64 1471.60546251 1457.79 1472.596331 1458.94 1473.5895478 1459.29 1473.84437244 1460.31 1474.81433577 1460.68 1475.13158309 1461.34 1475.76183927 1462.1 1476.44648306 1463.24 1477.43891108 1464.4 1478.44656162 1464.93 1478.8349517 1465.99 1479.76843487 1467.14 1480.71207068 1468.3 1481.6792074 1469.67 1482.91895448 1470.19 1483.38706137 1470.9 1484.0682963 1471.6 1484.73301965 1472.62 1485.71568369 1473.55 1486.61136697 1473.9 1486.92337644 1474.96 1487.91152336 1476.02 1488.87682718 1476.71 1489.4674213 1477.56 1490.2630277 1477.91 1490.57758076 1478.89 1491.54022788 1480.14 1492.77680736 1480.52 1493.14824561 1481.55 1494.17298646 1481.92 1494.54562041 1483.14 1495.7763509 1484.35 1497.00425748 1484.99 1497.66517189 1485.99 1498.68559547 1486.98 1499.71629023 1487.96 1500.72778577 1489.27 1502.084269 1490.28 1503.1199428 1491.42 1504.2913314 1491.79 1504.66751598 1492.93 1505.80649283 1493.93 1506.81115233 1495.1 1507.99383356 1496.03 1508.94024453 1497.04 1509.97535254 1498.15 1511.12297343 1498.81 1511.88999519 1499.79 1513.00312458 1500.62 1513.97737941 1501.31 1514.8002111 1502.56 1516.15879923 1503.24 1516.94837137 1504.32 1518.0975649 1505.43 1519.30072503 1506.57 1520.51621576 1507.25 1521.2562085 1508.23 1522.25050137 1508.59 1522.61289715 1509.58 1523.59591876 1510.84 1524.81516692 1511.97 1525.8984291 1513.12 1527.0006319 1513.73 1527.60917721 1514.99 1528.87704764 1515.44 1529.33974213 1516.74 1530.65603648 1517.38 1531.31853202 1518.4 1532.37053032 1519.36 1533.37717742 1520.42 1534.48597061 1520.8 1534.98528233 1521.96 1536.28151205 1523.14 1537.63190911 1524.29 1538.8813954 1524.81 1539.53627938 1525.8 1540.68063675 1526.88 1541.96518548 1527.81 1543.05099272 1528.72 1544.11506361 1529.96 1545.46727439 1530.32 1545.95534391 1531.08 1546.84246487 1532.16 1548.04262038 1532.84 1548.82386255 1534 1550.03556278 1534.68 1550.80841151 1535.58 1551.82405268 1536.95 1553.32783735 1537.91 1554.39338568 1538.68 1555.27255732 1539.45 1556.18433104 1540.27 1557.19314139 1540.96 1558.02771294 1541.65 1558.89156699 1542.81 1560.20543635 1543.57 1561.17028011 1544.79 1562.52998068 1545.16 1563.04345828 1546.23 1564.21731416 1547.51 1565.60286501 1548.19 1566.41447993 1549.41 1567.80272585 1550.7 1569.33965449 1551.93 1570.75811706 1552.88 1571.85780291 1554.02 1573.03102157 1555.06 1574.03748725 1556.2 1575.11906927 1557.38 1576.24914208 1557.91 1576.74916432 1558.88 1577.66435654 1560.15 1578.86987837 1561.15 1579.88448279 1562.2 1581.01433495 1563.33 1582.31356257 1564.36 1583.48035448 1565.5 1584.76567314 1566.66 1586.04751003 1567.7 1587.23517714 1568.96 1588.61108635 1570.05 1589.81976775 1571.12 1590.95466971 1572.4 1592.27537962 1573.54 1593.38689366 1574.68 1594.50075621 1575.36 1595.16357575 1575.81 1595.61163589 1576.87 1596.69104958 1577.93 1597.82007665 1578.85 1598.82304517 1580.13 1600.19796888 1581.39 1601.51829008 1582.42 1602.6338339 1583.59 1603.88229962 1584.95 1605.35341307 1586.01 1606.54576964 1587.06 1607.72574383 1587.82 1608.5903433 1588.88 1609.69985067 1589.59 1610.44960832 1590.38 1611.28481417 1591.7 1612.65401772 1592.2 1613.24229471 1593.37 1614.48377842 1593.82 1615.0281881 1594.95 1616.21445071 1595.8 1617.11544986 1596.15 1617.50177465 1597.02 1618.4073156 1597.47 1618.89584538 1598.1 1619.58037166 1599.36 1620.89149513 1599.89 1621.48630402 1601.09 1622.73308794 1602.31 1623.98691586 1603.37 1625.06270567 1603.9 1625.62991335 1604.98 1626.80547245 1606.27 1628.19184106 1606.8 1628.82611386 1608.02 1630.11654266 1609.09 1631.40739678 1610.09 1632.69333018 1611.32 1634.21605384 1612.44 1635.60776237 1613.5 1636.87828561 1614.64 1638.23192979 1615.74 1639.49277554 1616.86 1640.75099597 1618.19 1642.21082595 1619.27 1643.34586552 1620.33 1644.43841188 1621.51 1645.63478674 1622.72 1646.86040502 1623.89 1648.06261314 1625.12 1649.30640208 1626.05 1650.2347196 1626.93 1651.08912549 1627.76 1651.9126458 1628.6 1652.75417666 1629.77 1653.92252632 1630.14 1654.26262695 1631.18 1655.27264415 1631.71 1655.77664317 1632.68 1656.74977376 1633.74 1657.81149871 1634.87 1658.94482516 1635.68 1659.75295907 1636.21 1660.28412148 1637.4 1661.45860508 1638.77 1662.80656965 1639.3 1663.32045648 1640.36 1664.3745467 1641.79 1665.81515902 1642.85 1666.92552768 1643.82 1667.98705481 1645 1669.2519687 1645.37 1669.74177468 1646.78 1671.24864942 1648.12 1672.7317299 1649.3 1674.02662055 1650.36 1675.23132293 1651.56 1676.55966372 1652.55 1677.65310381 1653.83 1679.00305158 1654.89 1680.10543025 1656.15 1681.39023132 1657.31 1682.58472911 1658.76 1684.06431335 1659.29 1684.61782957 1659.95 1685.28668878 1660.67 1686.02125673 1661.78 1687.1457039 1662.13 1687.50865031 1662.66 1688.04713732 1663.02 1688.42045529 1663.9 1689.32524494 1665.04 1690.5069603 1666.39 1691.8888735 1666.92 1692.44958072 1667.98 1693.5334472 1669.3 1694.89218031 1670.38 1696.01720647 1671.65 1697.33746051 1672.84 1698.59592589 1674.22 1700.07344994 1675.4 1701.39680325 1676.59 1702.76925702 1677.88 1704.19770938 1679.23 1705.64064411 1680.3 1706.78383781 1681.57 1708.13388647 1682.61 1709.23823201 1683.95 1710.59087145 1684.48 1711.11789576 1685.65 1712.28828592 1686.89 1713.53194108 1688.2 1714.85039188 1688.57 1715.22698835 1689.54 1716.21422419 1690.72 1717.45241535 1691.62 1718.46968191 1692.93 1719.89932505 1693.93 1721.00506811 1695.26 1722.4306083 1696.43 1723.73121516 1697.63 1725.05694784 1698.99 1726.53509031 1700.03 1727.6634181 1701.09 1728.79972926 1702.25 1729.99761708 1703.53 1731.31678067 1704.67 1732.49328018 1705.2 1733.07934284 1706.52 1734.44366123 1707.66 1735.62878848 1708.36 1736.37214191 1709.26 1737.30819976 1709.62 1737.69971138 1710.82 1738.92823584 1711.95 1740.10814162 1713.11 1741.33931527 1714.33 1742.62997791 1715.57 1743.94464627 1716.61 1745.03531519 1717.29 1745.77881316 1718.44 1747.00376541 1719.56 1748.25532619 1720.78 1749.61838065 1721.94 1750.90251376 1723.1 1752.13686126 1723.62 1752.76606949 1724.9 1754.17913837 1726.24 1755.67852649 1727.58 1757.13613372 1728.7 1758.37190495 1730.04 1759.85066408 1731.32 1761.25037056 1732.48 1762.50995705 1733.57 1763.6669372 1734.59 1764.77423708 1735.69 1765.96270203 1736.81 1767.13121733 1738.19 1768.50736025 1738.72 1769.00255906 1740.08 1770.33293856 1741.48 1771.69297435 1742.8 1772.97409348 1743.74 1773.88275884 1744.1 1774.22413688 1744.88 1774.96352123 1746.12 1776.16148011 1746.5 1776.48780686 1747.77 1777.68865277 1748.94 1778.77116124 1750.33 1780.09227366 1750.71 1780.41810869 1752.1 1781.77219313 1752.48 1782.06235159 1753.69 1783.16239289 1755 1784.2909123 1756.18 1785.32142484 1757.3 1786.28642106 1758.3 1787.14849105 1759.68 1788.40368582 1760.36 1788.89996735 1761.66 1790.05079413 1762.19 1790.33586453 1763.49 1791.49590685 1764.01 1791.82989999 1765.18 1792.89500184 1765.7 1793.22109068 1766.79 1794.10418605 1767.93 1795.04489531 1768.45 1795.44109735 1769.06 1795.96868791 1770.13 1796.93724759 1771.4 1798.08568642 1772.58 1799.17357385 1773.82 1800.32033692 1774.53 1800.94625579 1775.53 1801.82659627 1776.66 1802.86858573 1777.34 1803.49094758 1777.7 1803.82801559 1778.68 1804.73598438 1779.79 1805.72510125 1781 1806.7794073 1781.99 1807.60661142 1783.07 1808.566214 1783.42 1808.70757007 1784.79 1809.84911605 1785.7 1810.42142846 1787.08 1811.55179779 1788 1812.17035151 1788.93 1812.74052293 1790.01 1813.45580133 1790.89 1813.99175536 1791.98 1814.7432121 1793.23 1815.66175243 1794.21 1816.41081669 1794.57 1816.64129319 1795.25 1817.18950881 1796.14 1817.94374411 1796.98 1818.63038148 1798.38 1819.77109413 1799.67 1820.78072897 1800.58 1821.42527508 1801.71 1822.39277951 1802.32 1822.8508682 1802.81 1823.20873837 1803.78 1824.05553415 1804.8 1824.91201709 1806.04 1825.9893023 1807.18 1826.92568458 1808.37 1827.9057831 1809.21 1828.50035888 1810.55 1829.61654689 1811.39 1830.23177793 1811.92 1830.54918122 1812.54 1831.00087592 1813.22 1831.52844207 1814.42 1832.62093658 1815.66 1833.69205335 1817.11 1835.00259946 1818.4 1836.1132015 1819.54 1837.15051943 1820.89 1838.40090695 1821.56 1838.95641537 1822.89 1840.12987568 1823.42 1840.48447938 1824.77 1841.73202002 1825.85 1842.68207153 1827.14 1843.86371899 1827.52 1843.93819233 1828.64 1844.65056163 1829.87 1845.27105625 1831.23 1846.18888695 1831.92 1846.40743381 1832.94 1846.98433612 1834.29 1847.92410563 1834.82 1848.11260148 1836.07 1849.1001011 1837.44 1850.19982593 1838.22 1850.79211848 1839.38 1851.74962515 1840.77 1852.8914364 1841.94 1853.84654088 1843.17 1854.96852353 1843.79 1855.48357974 1845.16 1856.64651255 1846.32 1857.57855729 1847.68 1858.71596022 1848.96 1859.86587901 1849.87 1860.6598866 1850.93 1861.63382856 1851.77 1862.37564577 1853.14 1863.62479255 1854.34 1864.72018527 1855.04 1865.32442558 1855.86 1866.09570344 1856.22 1866.35275526 1857.35 1867.40351212 1857.72 1867.65996841 1858.77 1868.64722377 1860.14 1869.95010652 1861.29 1871.06472038 1862.41 1872.14197251 1863.72 1873.39108974 1864.99 1874.59376327 1866.12 1875.60285031 1867.36 1876.66399832 1868.57 1877.67794284 1869.86 1878.83046611 1870.51 1879.37183476 1871.64 1880.42456518 1872.01 1880.71796779 1873.3 1881.98364069 1873.83 1882.42872479 1875.09 1883.53496782 1876.39 1884.67928418 1876.77 1884.9488802 1877.85 1885.99382836 1878.38 1886.43247045 1879.66 1887.57170827 1880.89 1888.65253891 1882.15 1889.81168721 1883.45 1891.0740141 1884.53 1892.12930374 1885.68 1893.26944185 1886.86 1894.45462411 1888.09 1895.73262307 1889.47 1897.22757561 1890.47 1898.34139731 1891.68 1899.5962193 1892.69 1900.56971417 1893.74 1901.56785754 1894.98 1902.76235868 1896.26 1903.97778054 1897.56 1905.19743378 1898.74 1906.29501758 1900.1 1907.54769897 1901.29 1908.64992596 1902.13 1909.44687616 1903.31 1910.71701451 1904.7 1912.22590963 1906.05 1913.70175804 1907.27 1915.05354436 1908.6 1916.49575256 1909.13 1917.16303599 1910.29 1918.38281927 1911.55 1919.6895104 1912.7 1920.82487753 1913.82 1921.90997709 1914.66 1922.69748361 1915.56 1923.53049737 1916.95 1924.86542137 1917.33 1925.17159261 1918.44 1926.14178368 1919.49 1927.01116299 1920.56 1927.91211509 1921.57 1928.76960629 1922.89 1929.93770646 1924.34 1931.2659362 1924.72 1931.58317287 1925.84 1932.67970942 1927.07 1933.92790749 1928.21 1935.12847266 1929.31 1936.37241996 1930.53 1937.82643662 1931.69 1939.23613226 1932.99 1940.75119802 1934.05 1941.95796021 1935.21 1943.34392862 1936.38 1944.72662359 1937.74 1946.24369711 1938.8 1947.33150519 1939.77 1948.29879545 1940.97 1949.4894839 1942.27 1950.78468341 1943.51 1952.01768092 1944.53 1953.01382935 1945.9 1954.35791854 1946.42 1954.84619019 1947.6 1956.00022659 1949.06 1957.42458278 1950.3 1958.61064221 1951.51 1959.75288278 1952.71 1960.86949753 1954 1962.09186083 1955.06 1963.09400872 1956.38 1964.37021594 1957.64 1965.55616356 1958.83 1966.67512101 1959.93 1967.70889152 1961.38 1969.13401037 1962.59 1970.32858608 1963.9 1971.69395082 1965.19 1973.05748793 1966.43 1974.38612684 1967.52 1975.5772491 1968.89 1977.11778502 1970.18 1978.67123121 1971.22 1979.93105804 1971.9 1980.8401489 1972.92 1982.08444517 1974.01 1983.42807017 1975.36 1985.02341221 1976.53 1986.4079519 1977.81 1987.85307801 1978.49 1988.6412149 1979.42 1989.61169 1979.79 1990.01717196 1981.11 1991.3489751 1982.34 1992.61325891 1983.44 1993.81064708 1984.54 1995.05367892 1985.69 1996.49348116 1986.73 1997.93907276 1987.94 1999.53748708 1988.62 2000.58973598 1989.92 2002.18089091 1991.18 2003.83345891 1992.27 2005.35643959 1993.56 2007.21007562 1994.94 2009.12526631 1996.08 2010.77025293 1997.38 2012.36909758 1997.91 2013.1974351 1999.25 2014.73857187 2000.47 2016.26009967 2001.85 2017.84729952 2002.23 2018.48057192 2003.54 2019.98541768 2004.91 2021.6519382 2006.24 2023.27163527 2007.63 2024.88766767 2008.89 2026.27472685 2010.18 2027.657549 2011.42 2029.00602556 2012.1 2029.8567029 2013.43 2031.32634881 2014.79 2032.92179744 2016.14 2034.50025304 2017.54 2036.20654355 2018.77 2037.77849711 2019.98 2039.37348828 2021.21 2040.98411512 2022.61 2042.65193915 2023.98 2044.20613722 2024.66 2045.01752774 2025.94 2046.41275862 2026.62 2047.17285248 2027.78 2048.3432509 2028.46 2049.00015415 2029.6 2050.09773262 2030.83 2051.30328926 2032 2052.46093465 2032.68 2053.15573221 2034.08 2054.54235258 2035.34 2055.77948555 2036.02 2056.41608236 2037.3 2057.66948522 2038.71 2059.09423238 2039.94 2060.43271577 2041.19 2061.87087946 2042.58 2063.50227693 2043.85 2064.99415891 2045.14 2066.4649028 2045.82 2067.26509849 2046.45 2067.99622324 2047.82 2069.51524603 2049.22 2071.04375826 2049.6 2071.54110082 2051.05 2073.02894716 2051.58 2073.59702313 2052.94 2074.97308294 2053.95 2075.99962086 2055.31 2077.37090987 2055.68 2077.74716113 2056.67 2078.70330964 2058.09 2080.08570985 2058.46 2080.39650049 2059.85 2081.71363901 2061.01 2082.79015226 2062.46 2084.17907661 2063.78 2085.51587972 2065.11 2086.88340882 2065.64 2087.46260186 2066.8 2088.66990358 2068.08 2090.02062235 2069.4 2091.42795406 2070.72 2092.86210011 2071.95 2094.19623176 2073.25 2095.6123605 2074.58 2097.01731286 2075.87 2098.42910578 2077 2099.67966544 2078.33 2101.13785905 2079.39 2102.30270476 2080.49 2103.58332558 2081.78 2105.07139742 2083.15 2106.61302436 2083.83 2107.38983944 2084.95 2108.573283 2085.63 2109.3079193 2086.76 2110.46079436 2088.03 2111.73555065 2089.35 2113.04534597 2090.57 2114.21244147 2091.93 2115.49324308 2093.22 2116.66388974 2094.57 2117.87075799 2095.78 2118.96892169 2096.16 2119.2101804 2097.44 2120.32670678 2098.83 2121.47805188 2100.16 2122.58604475 2101.61 2123.79184582 2102.82 2124.82081437 2103.5 2125.25744959 2104.83 2126.35676475 2106.24 2127.50695171 2107.47 2128.55316495 2108.87 2129.80058097 2109.77 2130.52092146 2111.07 2131.67910594 2112.31 2132.84296238 2113.55 2134.07023126 2114.82 2135.31683776 2116.24 2136.70631575 2116.61 2137.04277134 2117.75 2138.14636181 2119 2139.35952959 2119.37 2139.67998054 2120.5 2140.74936437 2121.65 2141.80432162 2122.85 2142.83945072 2124.29 2144.0849863 2125.56 2145.1396502 2126.77 2146.16976021 2128.01 2147.27980354 2129.4 2148.57104576 2130.65 2149.72845514 2131.79 2150.74625498 2133.18 2152.04053625 2134.55 2153.32738192 2135.84 2154.50050648 2137.1 2155.52890628 2138.27 2156.43874143 2139.72 2157.66025088 2140.64 2158.4171979 2141.85 2159.48728042 2142.97 2160.48365245 2144.11 2161.5455105 2144.64 2162.02003326 2145.94 2163.28224492 2146.47 2163.75924391 2147.52 2164.76597969 2148.2 2165.3879201 2149.57 2166.70134721 2150.72 2167.7851091 2151.78 2168.79013056 2152.62 2169.5541628 2153.95 2170.82338478 2155.06 2171.83834921 2156.41 2173.13340677 2156.93 2173.58229059 2158.03 2174.60226277 2159.23 2175.70916961 2159.91 2176.2754861 2161.14 2177.43598115 2162.35 2178.54615144 2163.42 2179.55763607 2163.78 2179.84314177 2164.87 2180.89651044 2165.23 2181.19383356 2166.58 2182.49887666 2167.49 2183.29246369 2168.68 2184.34357063 2169.44 2184.86683352 2170.71 2185.91636571 2171.31 2186.20183554 2172.56 2187.22632692 2172.93 2187.33244249 2174.38 2188.60519254 2175.41 2189.3879304 2176.76 2190.54072425 2177.98 2191.5939738 2179.36 2192.89076681 2179.74 2193.22840026 2180.35 2193.81363605 2181.27 2194.66071155 2182.16 2195.43780975 2183.17 2196.34130723 2184.47 2197.52221196 2185.71 2198.68343107 2186.08 2198.95049963 2187.33 2200.13028427 2188.66 2201.35850402 2190.08 2202.70492231 2191.43 2204.01453128 2192.8 2205.37765961 2194.17 2206.7455009 2195.47 2208.04103247 2196.96 2209.53864424 2198.29 2210.89183936 2199.53 2212.15528674 2200.21 2212.84869081 2201.28 2213.89980866 2202.55 2215.14641666 2202.92 2215.48059889 2204.29 2216.82502493 2204.98 2217.45345814 2206.26 2218.63339358 2207.66 2219.89315306 2208.96 2221.06889514 2209.49 2221.44479766 2210.87 2222.68369345 2212.26 2223.93291439 2213.68 2225.24783173 2215.01 2226.45064453 2216.36 2227.6988022 2217.81 2229.12153079 2219.14 2230.51242198 2220.46 2231.92037443 2221.7 2233.27900499 2223.01 2234.73658179 2224.4 2236.2511118 2225.08 2236.9775306 2226.37 2238.240688 2227.81 2239.60190783 2228.99 2240.64893022 2230.29 2241.77203087 2231.54 2242.83591733 2232.88 2244.06213339 2234.27 2245.42588868 2235.71 2246.97963086 2237 2248.44746135 2238.24 2249.85414531 2239.68 2251.39449171 2240.97 2252.73529026 2242.42 2254.21256956 2243.8 2255.59759558 2245.03 2256.81328972 2246.38 2258.14487038 2247.72 2259.48708669 2248.99 2260.76443299 2250.24 2262.03016812 2251.58 2263.37956341 2252.2 2264.0464919 2253.61 2265.55787606 2254.92 2267.00053018 2256.31 2268.52254308 2257.71 2270.02672997 2259.09 2271.51834901 2260.35 2272.86957708 2261.6 2274.18574475 2262.77 2275.34798712 2264.1 2276.60035792 2265.55 2277.93945075 2266.92 2279.21869225 2268.3 2280.56388795 2269.75 2282.02474148 2271.2 2283.5230146 2272.54 2284.98523411 2273.7 2286.32271957 2275.08 2287.9009773 2276.39 2289.37439142 2277.84 2290.95772592 2279.28 2292.53944421 2280.51 2293.89441612 2281.87 2295.35618477 2283.22 2296.75181226 2284.59 2298.13980627 2285.92 2299.48159447 2287.37 2300.99427065 2288.68 2302.44369766 2290.05 2304.01738457 2291.41 2305.62184393 2292.71 2307.10101278 2293.39 2307.88334719 2294.71 2309.21057812 2296.16 2310.68419864 2297.6 2312.12457132 2299.05 2313.47650675 2300.36 2314.5720408 2301.43 2315.42140376 2302.38 2316.21736237 2303.34 2317.0791219 2304.64 2318.26010572 2306.09 2319.63434427 2307.16 2320.69827167 2308.46 2322.08721172 2309.8 2323.55362777 2311.18 2325.115552 2312.54 2326.67498086 2313.91 2328.22920293 2315.21 2329.68243551 2316.64 2331.22223931 2317.77 2332.43208279 2319.11 2333.8154409 2320.49 2335.24209082 2321.85 2336.67801825 2323.2 2338.13849358 2324.51 2339.57771559 2325.8 2341.00421483 2327.14 2342.48371399 2328.5 2343.99135752 2329.8 2345.46708882 2331.11 2346.91183399 2332.32 2348.20599266 2333.66 2349.55121556 2334.85 2350.71527362 2336.3 2352.12078098 2337.45 2353.22952966 2338.77 2354.52172939 2339.45 2355.21608376 2340.89 2356.68076909 2341.27 2357.11287412 2342.59 2358.4674856 2343.27 2359.20098195 2344.64 2360.63396846 2345.93 2361.99325462 2346.31 2362.443573 2347.67 2363.84005392 2348.04 2364.24501241 2349.45 2365.68385864 2350.82 2367.14324164 2352.1 2368.54648033 2353.39 2369.96956894 2354.81 2371.4663094 2355.5 2372.21337985 2356.91 2373.64606561 2358.23 2374.95840391 2359.52 2376.1571993 2360.88 2377.35466371 2362.2 2378.49040392 2363.55 2379.70866425 2364.08 2380.1674073 2365.49 2381.54723477 2366.01 2382.03387101 2367.38 2383.39335354 2368.75 2384.75820248 2369.43 2385.44735493 2370.74 2386.76050742 2372.17 2388.19159005 2373.38 2389.4193119 2374.67 2390.7510354 2376.03 2392.15584361 2377.48 2393.63159531 2377.85 2394.00144141 2378.84 2394.99820565 2380.28 2396.4405141 2380.97 2397.13156233 2382.4 2398.55493532 2382.93 2399.06449806 2384.38 2400.46459069 2385.71 2401.72258561 2387.13 2403.0283693 2388.53 2404.30322939 2389.98 2405.56507395 2391.31 2406.7565745 2392.75 2408.08577821 2393.82 2409.09689584 2394.97 2410.14667871 2396.22 2411.27474504 2397.44 2412.3688153 2398.74 2413.55418043 2400.11 2414.83623289 2401.52 2416.1919932 2402.05 2416.6848703 2403.28 2417.88625068 2403.81 2418.39352664 2404.93 2419.5292075 2406.28 2420.90473327 2407.66 2422.30849144 2408.03 2422.72172075 2409.28 2424.05940406 2410.73 2425.63919593 2412.07 2427.09942605 2413.37 2428.50549862 2414.63 2429.86002501 2416 2431.34609538 2417.35 2432.77864926 2418.55 2434.01655656 2419.94 2435.3955087 2420.47 2435.89576249 2421.92 2437.32265881 2422.61 2437.96681923 2424.04 2439.32527108 2425.34 2440.53824028 2426.54 2441.59317464 2427.92 2442.81597832 2429.37 2444.11068739 2430.05 2444.59590397 2431.46 2445.793993 2432.84 2446.93513385 2434.3 2448.25681223 2435.6 2449.45675529 2436.87 2450.63766951 2438.28 2451.97528871 2438.81 2452.42080899 2440.26 2453.80734733 2440.94 2454.33793651 2442.39 2455.66747765 2443.07 2456.18593058 2444.45 2457.49076593 2445.69 2458.69231513 2447.11 2460.1352749 2447.49 2460.59526249 2448.93 2462.14240812 2450.38 2463.72042101 2451.06 2464.54666736 2452.51 2466.15541502 2453.88 2467.67974946 2455.17 2469.07468509 2456.58 2470.52934364 2456.95 2470.91222515 2458.36 2472.30647253 2459.04 2472.9632727 2459.57 2473.40399544 2460.96 2474.70465982 2461.49 2475.07659668 2462.9 2476.39466535 2463.43 2476.75025009 2464.63 2477.79547954 2466.01 2478.93049369 2467.36 2480.07259651 2468.77 2481.30176614 2470.03 2482.44139535 2471.39 2483.72594401 2472.6 2484.88173887 2473.84 2486.11030612 2475.29 2487.55783282 2475.81 2488.08034144 2477.18 2489.44380021 2478.32 2490.55821345 2479.62 2491.833455 2480.3 2492.51527502 2481.69 2493.94856152 2483.13 2495.43706464 2484.12 2496.47240802 2485.42 2497.80237251 2486.54 2499.00192536 2487.96 2500.5552569 2488.94 2501.71872537 2490.01 2502.99580216 2491.38 2504.57078105 2492.53 2505.889448 2493.76 2507.2446797 2494.6 2508.18158432 2495.59 2509.27149853 2496.94 2510.70235083 2498.24 2512.06297759 2498.69 2512.6014856 2499.87 2513.88228751 2500.55 2514.66628824 2502 2516.14311084 2503.4 2517.53208838 2504.7 2518.83220269 2506.08 2520.24653373 2507.53 2521.7716266 2508.98 2523.28444586 2510.29 2524.70787957 2511.56 2526.15834211 2512.8 2527.62259876 2514.17 2529.21853976 2515.54 2530.79838441 2516.93 2532.39036018 2518.3 2533.97076592 2519.54 2535.34765466 2520.99 2536.89054414 2522.36 2538.29660613 2523.51 2539.47070058 2524.84 2540.79554574 2526.29 2542.17458279 2527.53 2543.28361536 2528.98 2544.57416029 2530.23 2545.70898485 2530.6 2545.99490538 2531.98 2547.34202886 2533.43 2548.76819594 2533.81 2549.16178495 2535.23 2550.58888411 2535.76 2551.1392596 2536.44 2551.8629668 2537.73 2553.20585971 2539.18 2554.75779482 2540.63 2556.30829486 2542.04 2557.81213878 2543.34 2559.1442537 2543.87 2559.69433577 2545.32 2561.18660128 2546.64 2562.55471836 2547.98 2563.93788674 2549.37 2565.34408675 2550.8 2566.78168459 2552.26 2568.25893715 2553.65 2569.68381776 2555.02 2571.0841565 2556.42 2572.46606375 2557.87 2573.8187782 2559.27 2575.09388067 2559.95 2575.60213325 2561.35 2576.82775078 2562.68 2577.97663873 2564.07 2579.2335724 2565.44 2580.53321631 2566.88 2581.94380495 2567.26 2582.3399681 2568.71 2583.81207782 2570.16 2585.28449095 2570.53 2585.66478372 2571.98 2587.12259974 2572.36 2587.54512146 2573.75 2589.0000077 2575.12 2590.43214388 2576.52 2591.85195817 2577.92 2593.22233747 2579.34 2594.58884546 2580.75 2595.91581016 2582.18 2597.28031216 2582.71 2597.73848908 2584.08 2599.01342619 2585.53 2600.31846594 2586.67 2601.31915932 2588.11 2602.6401065 2589.51 2603.9724494 2589.89 2604.28743001 2591.34 2605.70979337 2592.79 2607.15491178 2594.23 2608.63520631 2595.37 2609.83791595 2596.7 2611.24027448 2598.15 2612.74827422 2598.84 2613.48974414 2600.23 2614.89244363 2601.57 2616.23237777 2603.02 2617.6660907 2603.54 2618.15015729 2604.99 2619.51852448 2606.24 2620.68055373 2606.76 2621.10163888 2607.87 2622.11720371 2609.32 2623.47513209 2609.84 2623.91303569 2611.09 2625.10611742 2612.47 2626.41783884 2614.01 2627.91616721 2614.39 2628.24131625 2615.32 2629.10443547 2616.77 2630.45096877 2618.22 2631.79476665 2619.67 2633.10670968 2621.12 2634.39446124 2622.49 2635.62287751 2623.01 2636.053529 2623.7 2636.71077498 2625.06 2638.03334922 2626.36 2639.25259602 2627.63 2640.42438436 2628.01 2640.62953574 2629.39 2641.87896297 2629.76 2642.05965132 2631.21 2643.40974455 2631.74 2643.80895975 2633.18 2645.19704211 2633.86 2645.82884793 2634.39 2646.33548162 2635.28 2647.20531865 2635.63 2647.53223227 2636.77 2648.65770776 2637.3 2649.15795304 2638.44 2650.22869308 2639.74 2651.45727407 2640.73 2652.37963233 2642 2653.62216604 2642.36 2653.93899855 2643.14 2654.67766356 2643.93 2655.42603521 2644.77 2656.24502099 2645.12 2656.53004863 2646.11 2657.4119486 2647.18 2658.26273277 2648.31 2659.15632395 2649.76 2660.347186 2650.84 2661.1374311 2652.28 2662.32722121 2652.81 2662.58433722 2654.23 2663.85282432 2654.61 2663.92679536 2655.37 2664.41182734 2656.66 2665.38950722 2657.96 2666.51163409 2659.26 2667.61626541 2660.56 2668.65564731 2661.91 2669.7649033 2663.33 2671.01411272 2664.01 2671.58167818 2665 2672.46982298 2665.6 2672.95844681 2666.75 2674.04165656 2667.74 2674.97281123 2669.19 2676.37143886 2670.54 2677.67920476 2672 2679.10861195 2672.37 2679.44948678 2673.82 2680.90917776 2675.23 2682.34192501 2676.68 2683.84328361 2678.05 2685.23984976 2679.5 2686.70882324 2680.19 2687.39639862 2681.64 2688.83693637 2683.01 2690.18724195 2684.45 2691.60850966 2685.14 2692.27127857 2686.48 2693.58157257 2687.01 2694.05403766 2688.39 2695.38172041 2689.74 2696.64848162 2691.13 2697.97152948 2692.27 2699.04222302 2693.25 2699.99053787 2693.6 2700.31362678 2694.59 2701.2567615 2695.27 2701.88445106 2695.63 2702.15478247 2696.93 2703.35605141 2698.26 2704.58908908 2699.09 2705.36423679 2699.76 2706.01743964 2700.12 2706.35401108 2701.26 2707.45735361 2702.25 2708.39135056 2703.08 2709.12995855 2704.47 2710.42417867 2705.15 2711.01679847 2705.68 2711.49638648 2707.13 2712.91505548 2707.66 2713.32913756 2709.11 2714.63085885 2709.79 2715.08543306 2711.24 2716.39079059 2712.69 2717.73536105 2713.37 2718.37734649 2714.6 2719.55437382 2716.04 2720.94508805 2716.57 2721.42677966 2718.03 2722.86979472 2718.55 2723.36711757 2720.01 2724.79675462 2721.46 2726.19820004 2722.87 2727.54594339 2724.33 2728.9418922 2725.78 2730.34561004 2726.46 2730.95476397 2727.91 2732.28143583 2729.33 2733.49143271 2730.79 2734.64091808 2732.24 2735.59598711 2733.69 2736.47882412 2735.14 2737.43492681 2736.43 2738.32985 2737.89 2739.5324477 2739.03 2740.45843011 2740.49 2741.68122741 2741.94 2742.87403146 2743.39 2744.05149899 2744.78 2745.3022771 2745.92 2746.27677114 2747.37 2747.46903162 2748.49 2748.20976326 2749.94 2749.34105364 2750.47 2749.67291409 2751.46 2750.62806832 2751.99 2751.1261122 2752.35 2751.46503476 2752.7 2751.79684696 2753.06 2752.12178451 2753.59 2752.59557456 2753.95 2752.8735444 2754.54 2753.39189168 2754.9 2753.68700916 2755.48 2754.22144962 2755.84 2754.52032961 2756.37 2754.98382636 2756.72 2755.21638745 2758.02 2756.26611495 2759.06 2756.9138875 2760.52 2757.99287182 2761.85 2759.11061146 2763.17 2760.43265422 2764.32 2761.68357586 2765.4 2762.89812464 2766.43 2764.0554016 2767.51 2765.24193081 2768.66 2766.49838023 2769.75 2767.67990389 2770.7 2768.76318026 2771.72 2769.94560311 2772.67 2771.04739827 2773.61 2772.14075845 2774.55 2773.21307642 2775.51 2774.32276955 2776.53 2775.4386402 2777.68 2776.65506988 2778.9 2777.92257901 2780.3 2779.35717405 2781.73 2780.80969107 2782.97 2782.06190531 2784.42 2783.52263041 2785.56 2784.66569612 2787 2786.10696948 2788.14 2787.24757806 2789.58 2788.68804888 2790.11 2789.21845005 2790.79 2789.89878311 2791.78 2790.88908891 2792.13 2791.2393493 2792.51 2791.61951431 2792.87 2791.97975199 2793.7 2792.80998664 2794.06 2793.17024703 2794.59 2793.70043475 2794.94 2794.05067243 2795.63 2794.7409419 2796.37 2795.48130977 2797.37 2796.48162617 2797.72 2796.83193349 2798.4 2797.51228623 2799.7 2798.81271163 2800.53 2799.64311583 2801.07 2800.18337622 2801.42 2800.53362147 2802.15 2801.26383795 2802.5 2801.6140832 2803.04 2802.15427092 2803.39 2802.50446016 2803.75 2802.86464788 2804.28 2803.39483711 2804.64 2803.75505208 2805.17 2804.28524132 2805.53 2804.64542904 2805.88 2804.99559102 2806.24 2805.35575301 2806.6 2805.71592559 2807.02 2806.13609817 2807.38 2806.49629263 2807.91 2807.02646254 2808.27 2807.38661591 2808.62 2807.73673195 2808.98 2808.09686643 2809.51 2808.627002 2809.87 2808.9872048 2810.85 2809.96738916 2811.21 2810.32760823 2811.89 2811.00776006 2812.25 2811.36790539 2812.55 2811.6680095 2812.85 2811.96811578 2813.23 2812.34822749 2813.58 2812.69837498 2814.21 2813.3285203 2814.57 2813.68871768 2815.4 2814.51890422 2815.93 2815.04909075 2816.29 2815.40926102 2816.97 2816.08941285 2817.33 2816.44959938 2818.01 2817.12975121 2818.37 2817.48993883 2819.06 2818.18009609 2819.46 2818.58028913 2820.15 2819.2704453 2820.5 2819.62059171 2820.81 2819.93076089 2821.71 2820.83093116 2822.07 2821.19128918 2822.61 2821.73299098 2823.44 2822.56527891 2823.8 2822.92887367 2824.68 2823.81248579 2825.52 2824.65609791 2825.88 2825.0188591 2826.27 2825.41076936 2826.62 2825.76377368 2827.61 2826.75672589 2827.97 2827.1199907 2828.5 2827.65216145 2828.86 2828.01462741 2829.39 2828.54679816 2829.75 2828.90886471 2830.05 2829.21068814 2830.44 2829.6024942 2830.79 2829.95452602 2831.22 2830.38648838 2831.57 2830.73956216 2832.56 2831.73251437 2832.92 2832.09630016 2833.75 2832.92899188 2834.11 2833.29168361 2834.47 2833.65354177 2834.82 2834.00539993 2835.18 2834.36725809 2835.54 2834.72911625 2835.89 2835.08126963 2836.42 2835.61342301 2836.78 2835.97548957 2837.08 2836.27755612 2837.61 2836.80962267 2837.97 2837.17182815 2838.35 2837.55372104 2838.7 2837.90561393 2839.06 2838.2680278 2839.74 2838.95045904 2840.1 2839.3131855 2840.63 2839.84533888 2840.98 2840.19749226 2841.34 2840.55933306 2841.69 2840.91119122 2842.05 2841.27344879 2842.64 2841.86572374 2843 2842.22799868 2843.36 2842.58985684 2843.71 2842.941715 2844.07 2843.30386838 2844.6 2843.83603913 2844.96 2844.19902608 2845.79 2845.03171781 2846.15 2845.39470475 2846.68 2845.92685814 2847.03 2846.27984509 2847.87 2847.12253681 2848.23 2847.48580162 2848.91 2848.16823285 2849.27 2848.53069882 2849.65 2848.91260908 2850.01 2849.27450197 2850.36 2849.62636013 2850.72 2849.98825302 2851.1 2850.37016328 2851.46 2850.73205617 2851.81 2851.08391433 2852.17 2851.44575513 2852.52 2851.79792588 2853.06 2852.34007926 2853.41 2852.69225 2853.77 2853.05483754 2854.55 2853.83744243 2854.91 2854.19994313 2855.21 2854.50161027 2855.51 2854.80331213 2855.89 2855.1851182 2856.25 2855.54786202 2857.09 2856.39123102 2857.83 2857.13458266 2858.18 2857.48739594 2858.71 2858.01954933 2859.07 2858.38281413 2860.06 2859.37576635 2860.41 2859.72929164 2861.1 2860.42172288 2861.46 2860.78420621 2861.84 2861.16611647 2862.2 2861.52832195 2862.73 2862.06047533 2863.08 2862.41268081 2863.47 2862.80459107 2863.83 2863.16651869 2864.19 2863.52921042 2865.02 2864.36190215 2865.38 2864.72461124 2865.75 2865.09650413 2866.11 2865.45839702 2866.47 2865.82025518 2866.82 2866.17211334 2867.18 2866.53404097 2867.58 2866.93598596 2867.94 2867.29822617 2868.47 2867.83039692 2868.83 2868.1925503 2869.18 2868.54440846 2869.54 2868.90664867 2870.12 2869.48888888 2870.47 2869.84142431 2871 2870.3735777 2871.36 2870.73580054 2871.75 2871.1277108 2872.1 2871.48003784 2872.7 2872.08231278 2873.06 2872.44490032 2873.59 2872.97707106 2873.95 2873.33922444 2874.3 2873.6911347 2874.69 2874.08304496 2875.05 2874.44502468 2875.44 2874.83695231 2875.8 2875.19917515 2876.33 2875.73132853 2876.68 2876.08348191 2877.04 2876.44525324 2877.35 2876.75733716 2877.88 2877.28942108 2878.24 2877.65148763 2878.54 2877.95355418 2879.07 2878.48593332 2879.61 2879.02839929 2879.96 2879.38065687 2880.37 2879.79258449 2880.72 2880.14452948 2881.08 2880.50638764 2881.44 2880.8682458 2881.79 2881.22053811 2882.4 2881.83281306 2882.75 2882.18510536 2883.11 2882.54696352 2883.47 2882.90882168 2883.82 2883.26067984 2884.18 2883.62252064 2884.53 2883.97495188 2885.22 2884.66738311 2885.58 2885.03021377 2886.16 2885.61245398 2886.51 2885.96474629 2886.9 2886.35663918 2887.25 2886.70893149 2887.83 2887.2911717 2888.19 2887.65348138 2888.58 2888.045409 2888.94 2888.40763185 2889.47 2888.93980259 2889.83 2889.30244222 2890.46 2889.93478663 2890.82 2890.29758255 2891.44 2890.91990959 2891.8 2891.28261869 2892.38 2891.8648589 2892.73 2892.21718594 2893.14 2892.62913093 2893.5 2892.99147534 2894.08 2893.57371555 2894.43 2893.92649411 2895.1 2894.59889061 2895.46 2894.96168653 2896.04 2895.54392675 2896.39 2895.89606276 2896.69 2896.19785146 2897.07 2896.57965752 2897.43 2896.94155041 2897.78 2897.29372116 2898.32 2897.83587454 2898.67 2898.18861836 2899.36 2898.8810496 2899.72 2899.24379343 2900.25 2899.77608574 2900.68 2900.20837805 2901.04 2900.57040987 2901.42 2900.95232012 2901.78 2901.31423038 2902.14 2901.67674845 2902.87 2902.40926652 2903.23 2902.77261815 2904.07 2903.61530988 2904.42 2903.96791477 2904.73 2904.27958191 2905.03 2904.58166583 2905.62 2905.17381921 2905.97 2905.52664986 2906.66 2906.2190811 2907.02 2906.58182492 2907.55 2907.11399567 2907.91 2907.47616642 2908.27 2907.83802458 2908.62 2908.18996957 2909.03 2908.60191456 2909.39 2908.96377272 2909.69 2909.2659261 2910.27 2909.84807948 2910.63 2910.21033706 2910.99 2910.57228205 2911.39 2910.97422704 2911.75 2911.33674511 2912.44 2912.02917634 2912.79 2912.38160758 2913.15 2912.74346574 2913.51 2913.10563649 2914.04 2913.63780724 2914.4 2913.99997798 2914.76 2914.36188824 2915.14 2914.7437985 2915.5 2915.10570876 2915.86 2915.46756692 2916.21 2915.81951191 2916.62 2916.23143953 2916.97 2916.58329769 2917.28 2916.89498219 2917.59 2917.20697928 2918.12 2917.73913266 2918.52 2918.14137287 2918.88 2918.50369991 2919.46 2919.08594012 2919.81 2919.43849292 2920.35 2919.9806463 2920.7 2920.33281705 2921.06 2920.69467521 2921.42 2921.05653337 2921.77 2921.40851309 2922.2 2921.84049282 2922.56 2922.20290669 2923.16 2922.805199 2923.52 2923.1675434 2923.91 2923.55945366 2924.26 2923.91136392 2924.62 2924.27353467 2925.16 2924.81570541 2925.51 2925.16792826 2925.9 2925.55983852 2926.26 2925.92174878 2926.61 2926.27360694 2926.97 2926.63638549 2927.86 2927.52918141 2928.22 2927.89279354 2929.05 2928.72548527 2929.41 2929.08927105 2930.4 2930.08224063 2930.76 2930.44519285 2931.11 2930.79705101 2931.47 2931.15955171 2932.2 2931.89206978 2932.56 2932.25514356 2933.24 2932.93757479 2933.6 2933.30000603 2933.96 2933.66191629 2934.34 2934.04382655 2934.7 2934.40613622 2935.29 2934.9983938 2935.64 2935.35065138 2936 2935.71256163 2936.39 2936.10448926 2936.75 2936.46639952 2937.1 2936.81825768 2937.46 2937.18042842 2938 2937.72259917 2938.35 2938.07480465 2938.73 2938.45669754 2939.09 2938.8186078 2939.45 2939.18051806 2939.83 2939.56242832 2940.19 2939.92472063 2940.77 2940.5069782 2941.13 2940.86932261 2941.54 2941.28128497 2941.9 2941.64316049 2942.21 2941.95486236 2942.52 2942.26659896 2942.9 2942.64842238 2943.26 2943.01100991 2944.01 2943.76354535 2944.36 2944.11639337 2944.9 2944.65913719 2945.59 2945.35189838 2945.95 2945.71474641 2946.54 2946.3074555 2947.15 2946.92016459 2947.51 2947.28247427 2947.87 2947.6450097 2948.61 2948.38754513 2948.97 2948.75046262 2949.55 2949.3327202 2949.91 2949.6950125 2950.29 2950.07760004 2951.04 2950.83050015 2951.58 2951.37334818 2951.93 2951.72583151 2952.47 2952.26798489 2952.82 2952.62015564 2953.18 2952.98208326 2953.58 2953.38402825 2953.94 2953.74588641 2954.25 2954.05807453 2954.84 2954.65024527 2955.19 2955.00258968 2955.6 2955.41453467 2955.96 2955.7764102 2956.27 2956.08859831 2956.86 2956.68076906 2957.21 2957.03307873 2957.6 2957.42498899 2957.96 2957.78689925 2958.31 2958.13875741 2958.67 2958.50061557 2959.03 2958.86247373 2959.38 2959.21441872 2959.79 2959.62636371 2960.15 2959.98839553 2960.55 2960.39034052 2960.91 2960.75232024 2961.29 2961.1342305 2961.65 2961.49614076 2962.01 2961.85843307 2962.61 2962.46072537 2962.97 2962.82301768 2963.33 2963.18492794 2963.71 2963.5668382 2964.07 2963.92873109 2964.42 2964.28058925 2964.78 2964.64284683 2965.37 2965.23512177 2965.73 2965.59777877 2966.31 2966.18003634 2966.67 2966.54229392 2967.03 2966.90406525 2967.33 2967.20627073 2967.94 2967.81847621 2968.3 2968.18068169 2968.6 2968.48236619 2968.91 2968.79448484 2969.52 2969.40669032 2969.87 2969.75898263 2970.23 2970.12153543 2970.99 2970.88410559 2971.35 2971.24700571 2971.9 2971.79938485 2972.36 2972.26174662 2972.71 2972.61377844 2973.07 2972.9756366 2973.43 2973.33751213 2973.79 2973.69937029 2974.14 2974.05122845 2974.5 2974.41299978 2974.81 2974.72470165 2975.12 2975.03631668 2975.43 2975.34793172 2975.74 2975.65954675 2976.05 2975.97190853 2976.79 2976.71435713 2977.15 2977.07689256 2977.51 2977.43875072 2977.86 2977.79066098 2978.25 2978.18257124 2978.61 2978.54479409 2979.14 2979.07696483 2979.5 2979.43906612 2979.82 2979.76078535 2980.13 2980.07241775 2980.44 2980.38403279 2980.75 2980.69564782 2981.06 2981.00741915 2981.46 2981.40925995 2981.81 2981.76118757 2982.17 2982.12309783 2982.56 2982.51502545 2982.92 2982.87695308 2983.28 2983.23874177 2983.59 2983.55044364 2983.9 2983.86299644 2984.75 2984.71568816 2985.14 2985.10846672 2985.5 2985.47110635 2986.27 2986.24438852 2987.03 2987.00767069 2987.39 2987.37024086 2987.75 2987.73296732 2988.6 2988.58569377 2988.96 2988.94845497 2989.34 2989.33036522 2989.7 2989.69227548 2990.06 2990.05415101 2990.42 2990.41633912 2990.96 2990.9585967 2991.36 2991.36085428 2991.72 2991.72319868 2992.31 2992.31594251 2992.94 2992.94868633 2993.3 2993.31169065 2994.04 2994.05422608 2994.4 2994.41681361 2994.79 2994.80874124 2995.15 2995.17066886 2995.51 2995.5329438 2996.1 2996.12520138 2996.45 2996.47745896 2996.81 2996.83931712 2997.17 2997.20126211 2997.57 2997.6032071 2997.93 2997.96556887 2998.53 2998.56784381 2998.88 2998.92043134 2999.42 2999.46260209 2999.78 2999.82385244 libpappsomspp-0.9.20/tests/data/alignment/peptide_table.ods000644 001750 001750 00001077465 14533323122 025264 0ustar00rusconirusconi000000 000000 PK-lWl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPK-lWConfigurations2/accelerator/PK-lWConfigurations2/images/Bitmaps/PK-lWConfigurations2/toolpanel/PK-lWConfigurations2/progressbar/PK-lWConfigurations2/statusbar/PK-lWConfigurations2/toolbar/PK-lWConfigurations2/floater/PK-lWConfigurations2/popupmenu/PK-lWConfigurations2/menubar/PK-lW manifest.rdf͓n07V1WqU;>`rv܇(~)-`:;xW媿PK-PK-lW styles.xmlZn6\`v/8XuCa? d(-O>G_lbIQ&S$;H>'1iq5œ&Ȯ&zO?\4- 79*DŁ H/J\BذbA|Q Z‰.eڬYd-DnwQE>D X.Yϣ,J '_SbzqqicMhޣzImeqsp)Ɔo끧co]6byt#{okb_G)攀p22Udc-9 SB21Vmt7huǰ@MphE@3 iG 0!TŤ4SnuG6OƋϓ,+ŀ"JʄcbT\6@TmhHAv+x버ܶ4U|hqp)Fġ0!.d&mYa:,əRyj0A/^c}<[d8CTWa 7,%P[.h؃Xn$qGPRS,Ü?Ƶ[*Sc;*CѮqlf."B& d 바yr2$-2L0Pg쓯`^mjǂ(Sj)}q)E\J^.S9aVZECivF!:vvk~=z!A&=KQO]YOV݁rČ'-m#r ΰEmC!23LjLߨ\XF^u\zVsܱSg{/yc@8>¦ryL<"^jfB؀T;\MïNb gqϞ#Pܝ*C$xT T<&IS~DkV~ɘ#CW쩼 - W$LKhB=Mi,Qe|F^)IV~W翭xyJ&{-˪gxtrnN)4Ni?xjaMz8;3E%*th`clx4jn^;ulVoo_}ƍa~\PjG.˰OzǕah}~( uSG?g $Yf$wK_y4NE~5|!_/n`ΧŻeD#8.YoqcnTyuZ^yr8#ƮSYӿϘUME-}h, R,yz5 fal/G4 Ą!3xpvՏ?WGVN[@K<{$>bn^;mY6o9O w;p6+mՋ-/`A*?|Zl}lo(zʼb?NmNV)+>h8 &[(3/ݏFY}ވsHg ,nq=wv&Z+0AUUP+.$dn~ԯY7oV~زK|2=_]y2cQ2 axvCxKhzjIZW6ET C>V6U\Iiʦ\(Ex7cG6K8҅Cż_yTY2I4N^0DTW8П7?j-`eywEI8`wGzxufGMlj =O}+[Zq9doá|'*N?Fi_?~gCpȍ`dܗ$_Q׿om_>?sv.[Y"}wZ>q,ј}x48Qa_Z=,)f'꠼tÂq|mVgz[*I8C$ݿ{f }ǣՃuMO X t`8H*/X} 1/If0)F>*g>|O4O᠒Z[81zmW)!t;JXeI`*0f)fIyZ7Ʃ{*o_+J~Vpf7MџA ǯ~Zp֒U>4z[ S}հ>{"HR^_ HGx F{,Rz7)ڐ|>}1WSu}%KWΧ;yߟ{_BT}%K׼okym\Ϗonb2dTɨQ̈́QO4 um!h)H&{Ny^ywwF{9dđˆ۱fՃ')3  H|Zm%q: iz-40s3 Jk`f>h< ~ֹ8.sE[Nܺr99v47ٷ 7%y~ ~~گ/ &y.׾B;6ytMq1V c3/`YT]T}=Ǯ^4\,\[ltfzt6N_~/ף1בX\h:C";"p4MR*҅!YΧ)˧A&_I*^Q$]T]\Y[?C^5vgїY;cکu.P*ӦYsaVm_蚚6bU]T%u9kWtwH9[8y0g|};$t ރU/.` Hd|{?G~?&%<>T~Dq'̎KЯ *VݴFJdYב0%Clѣ$zrF#=)g 빘!z&$zMz p=,<=tqQR`Z3d(Bxro^=q+cY)Q+_ב ]Yu]'G$zHP_$z-z, !U7q Tetg_P9RjPp@1a: 9bÀS~Y5&,89XcǁRh4i5N״s6!; ,A\ZRpO4ݗBuv^mePDd)؅$ D892 ۻi6;NQ,1XհY+kVdqTBN`|f5ĠP *0bDAܯuguA? j*9zƈyskL!bŚYSMGBRyjk4ȼw@Iܽ<ͫVV6p@^/m/RO Y :C$E @-<,&RkmkO_n7}f~LaQPfXc9bb% 5ez0|IϢ:'l 4DIdpiGr/H T7=[>XqU^Xܥ)bXXmS)bXBR/2 .1(rR m@b]Jb>}s\-9=Б7DfM]JWX\@bͷӭ٦ݸz'i}iD iù˻eeU'iuاړd 7fI`F]N@'/aYΰ[}1NNY:2$Vqd==ǶVzlM-)ҋ;:YCމGk< )nף6jNծj;I݂{UG4$su kyϵ9}hc&%Rŵr=~IdR]cO@5t] Q^{Ϋ2ZN\)7؃.9úeH9hMIkZ~޴tQ; ( ;դCSM:+74e'ЯN7DbXрO L]k (Cs79Dz,Ju]pD&놖M \[/ruq_1MdwwӼ_r;W9mmo9y4IGz}Lj{HH<'޵o]Rɻu& QtE+bv6?sʩd~:,M?5c?Z6 u]`5]یؾ"۬?} "}ZtXĺ>ɞv|w18V )yc SȓM2XWਦuR¤aʻeNg&үSǬ̦RiDPN21(\D`Pj.|lS VhŬZ0ĺƠRx ,[ ,#DݻuHĹyNxk-ܴݴ+(^Wh緓+ѧ=)3-I&P"4v&Gagݝ7$X2k(Պ@+%xa0(bXX#N`b]cP@7wyJ.QH]Z<" {IJ9dm20'W'[d$V]s!+phjpjn{%3? W~j|h;Uk`OPG`J]N@=UP%"~E]վtCۜe2o8zT%\RPz.)bu"3u8P @uN:I1lbEBsSD-\D:IQ+%^u׃y"E-Q WoHQK#[٪@HI$ (@+-O >b}g!UƞIq+nUwb*֔ JOnYVh- =lSR_?;tLsETeS3tP-fN@"xC] _;;+tv:cLDУ}aH4ͺEoff\jϤJ {d~3)+:?%suJKpo{}&,(FU (y&Qo4x;H}=0FfV{&aMYR %Jյjw{[[7)オ?Uj^wJPPRE(-L %7ySMXWa)+%,xY9[v}ސ_:Fk?Vx5v'Z-PЯ2{;}tKankg^0\#/s]Ul8M$"#RRib:V>BJH!zN@Oxg8Ձ(;wT;2\ynΩl(H %N\@qQM7 9$PPD%w̩;`rX'k3oaWOA?z㱎G-3b*V p+[y^Y JXJ[ۛX]'Mp Fy;6 ;4MA4e`WB zQu=ckj h9; Ja{nmw7mIX7(T%3@uVI̝Q(];lGX=˹-x':=e <4G6*|[)վәN# Y(KTypj| z't)h݅PPnTS0B[@xj( [V\S@x Ʈ9RЯ!G\j;bovY$X@'2=̏;Cp.*|A!)QU(EI]b'lݳTݦןet6:koh$/A=L-ۅ/| %ĸ;[mFI?ˤW}sv.m0s k®<+1]̳b]`omJ..p瀒躆Q@H7n<;Nv=\ NaUւ(I?m]NΎ2@]F5z][kPPٴ&:% H .zJ+qR WFg2W }(?WՎ(\Ev&E(%G؝IQ"tU^<_E)ju%E(lLT+~L .\EQRpvT6\/B) kT zLU<XVg>;`?)^HGI } lnLfuPMkqL/}[u&WrwO?J/ dFPN扰Q8R/}>yӭz17?݅USӃlYqΆujp6ןey6|5NyR@v&i vJ -RZ:BKhᴪ<Z/jgRh -VӃ_ZB J^nB+nZB'DJ h1oЫ{BZB}QRh -V݀U))+Q|b-" QɄ(^3Z8^kZ/т[L[L5iS4 xJ5t[5:=)ǮOK=YYjb)jK7߻ *BI$[ĒX5KZQ2/Kuu]F )S/0coh)ȆTY=% =%USaQy %BP E<,o@uzs_"n+- %,.ٟȾ2:b(JC̳X[(!R@mFw3X4xɫO@L|3(gZPU6|8~evs[c)xVOx>+((Ax |N|x](6̳`]=F(ws?mg٧_FzznL z{Z{D=z+a]VgRFP/}MmُadFd{v( ,[ %ő8zr&ő8خEo|~xrE,^.΍\뵕WQ͢()׋au&zẆ5*Auh3gY6γyݧqK9:߈} T$z* [심d&AdJ5w 2~SdB;fnsR0m9Y#$<^mtqoqdg] niRRƇ] 7|Xl6 |BA?ʏcYcb)Xm]mJ <ش8bA%^9us=A@I?ˮW}';',s&S:eD,P34غ SЯfMR@xA-Xׇ^c֏i sl@M]ۿ{˪_)`'eMkCNz"|#ؿR۔2 @-Da(DJ- ?NɎ(]Dx*戬AշW,qH} Tf TaL=j r33<?53_gx Oh {d 3<?"PZA=<ac>;VRu:gժU`XbXepX vfl!X[X]Q"e*cêEĽnD.eX=Ïa'|2,C/@??iMЈ궥g1!로ʝ׼/ٶ9! a5 g0cBb5"0ca5VV9f}2Z "B&[X!F\a X=Ïrău 3?C\giZ49 &0P5CcQcyABXU ʌU x\Vfbړ]VƏ3KO5~PiX46ziA`'@W*hU eXeXag4$ؼRB^zz~ǹsGf-LҤ&hu >VZVrujv황"UY#3 <Ev$'#56Nfo yoePAIr}kkuyc7\ A],a;Xk.ۭ3:+Gj,9P唺iZl*C)p@ =HsyYm3:"cX"爃0vt(Y2ʶ@J/mWGP1AIsUAz(f^S9#2taPf3AV6T#H T&CVj( LGIVE+ d=v}HHiꐻ@˔5_zSDq PȵZ TYw GWUBu܏kNvz;j&I ܊fxB;)p_j dxD[?j Pb 7\Ee\= o/4vĹ@ȋ.l+܍7Y&ʻYm]m*D7C =LrYpW =>#64ȹ ҄rhx@ wmy*IPGC[?T#ȧK G8ũ=AJj{n%3S[ϧ23rtʺݑMt= %e=rnf;N 3l`oIQ{9 DS!/A!Upe\=P2&-q_u {mr. #sW'צ:r}f2ql*F1?p8O2~(YE)mݹN u?KL̀`%3SQtTN-D'-ov,@ [@$DE{",a7dl[78LRj[$(yaaڒvΨMop1ˉ‹X62!(\ X (y9ʹSs^u*-Ė谉 Ǣg5} 'ȼD˚oc j֒(r`GOܓ'ɡbb"+3UR #Q ݷU]1>[%\+; EɘƪABC1N+LisŒOxOƎ d|.`n > _$G;Iz?˵9NQDAEO2vGY5nh՞~v^vg` Pc(4 2IR?-vf׭<^qQoeB|= #%xVV~ş :$5"UxL$Ҍ'ȝKʺCJcoZeuUv3*Q'`2H|Ga@yjEVB 2%HS 8mjy:eqq/,P gIiu&(YM/ð ct$LkTb递Ym5*7ŰkN[QA$3c-S@ȋ Ҹ$ȤI-IVBk~Eq$*joS"ktPFO3lO- [ Ϲ\3<2cP!G40zxH &q"n!/Sv}RW`Ic#>=#jzm0Ӭ" $KCzN@HiN7z9"|y_NwYWhNy+YhU ʗ2fz{NDm8$t("u+}I Fk<&M 0Ñ _.q{@Q&VPB%(n\CONw:~vO JcV993jӛ?\`#*kANI%rfqraA9$F̶@W7`LP&WI=cQU' ׫ VL`FA؂0 !H͖x7N;rYa^='N!ٹ!^u#fv2;g/q4cgd~k٘u7PH8K$EՀ.LU$TQ9S >zG7H|@1|\n8قʌQ`|+TF?:lA>'e XÀaH=Î>7ȁ۷P~Ye&@P-Oj'uoz?#o%(MzӶ/m:Ϡ㭬knK.?n*׭kvV_f$sVAW$֒xM;"Bf|״i̎3=rX-|&Nzd`WJ^~'EKXKMBR|5fu}PÑDC Lhۊ:Eˣ@Ҥ2q~Gs=R7zPXdiLL^EY-}9oNqmjbN'Mhd0Qxz  <ÜO$,xgt@ }?^e9CZC_ Š+kGRf%do;+^EbY!B-S:#wlѦۧ/[OgfUk*U z#eX]O6ɡ#$(F)S8GW[MȋN;IRzf絭by%*q) A_,I~2Xja/(IuYۦu_"M#[7#ցNlQs{I<<{Z@Zfa~JZ2.q'#FBiJnRZqJ}pO86x؊R@>#Vz]6B4Uur7M*Cw@4qמks&γaiBMJs)}FyqQ|TǽrۺAmd5YĺcGj 4ޒXzS[ġ-U H`אo~I2 SH1vA)3uw5h#g'TJen"1aŝ;n9u AXRnj,Ӊ}[T<%ѦƛRWUF*˲0F.) )U2q' >HO!vgaDf"e&nyL$K֗x}IrPH18mlH% SGvqxK~9M,X$f+K$(NYwdvbC-oK{ ׶}uNka6(kP )su{ [q$:86o;60 ( w~rru^x¬>c^Ov'?ԁuHuQ!y QHu}0m. gЅR6 eB kW}qgF XVW'e`]BP@_t 0m-NeV$qwe}KU8s+؀N?Yv IyK0[! rdoGT3g4NNL0{1&V{p;0mp85`~M'5GB]w@TqumHUQn@4JˢF ח[_ɓ׽`V0f3qD1:o0RΦ%S}:a]d bY2q'@f?L`n^E/1\TMB zHB;[@KM$SnHwXL1?U5؜\?5dn2P{Sκ _nqIJ$r3Z㌢u* Z)=#lйsUЂѪA<кrs'4j}Wm$&xj5*ow\+vWbRRË{sf4{* ^?ëGG2(VFuBU4*S6yP~UFv5y4c- I蛞=zd#ᇈr) # *p Ӈz2s2_=3zDJo/\3U\bi:t[>{<(RE*~r4M]*p[Y*dd5 Yu Bf@{d/BX@P[)@u ȯFۑܓ5ۅw콕u HL=)3%$+R= Rfa}ӂOx/]?]bYc_^S/AǮ}f>qMˉHBPqO=O$,~AЈEWHAGlϗrܪ ~4"h!'a+%flP$,`p$k (7pRz]%4BXcwsF [ÐHbQủ$.L w al).U7F~ wK֧b)#.' ..^ۿG]@ yNX$_~ši4jkoyRA+T?hV)a( wmzV~!\a(Tft ) CQ2Ľ5}) C_A[CGuVz]E㶬nSFoD|5endP`"eal u DϧABrhWiwf>2Ê @1ĻMxyIPIf:=ylKJdEh.LEUF-Lk&d^sJ}=rFx-\"~`߳?& a1ְnЫSaPyt<`^z])7:Ɉ3P;[X[X!a0:֣0=Lo1UL)#u ;vulgRÜ_iN񐶙@,)X($hR5:~o2XKS@)5uZKpX`@ X0Xb"!^*̦KV k3),`놪_<к~F!ٔ.AF #ea(Jgtl3) C_1{+`/{s g)Ţwq+l"ea+)=-!eaGFVP>}I_#8UXc gY!%$,ʼno8KIX*6&NLb͵XpwL)ò{㥠_f`#aCr;jYk%aA B DԫAӡ*BQ<n:,~#e&.( M}0?Z/c\A*jh=$L{4=Zw)˧stv$+F0'CӀzPxea0C3dK<bMoV$2ڞZ-ɔAY2H>T#E;''I>zj k!a'>|xcWX͑ 35fkm XٸZEʰ\f/s=cI#_@-HM`Q.#ߥ b]`OÒi7nj m"s7DmԢIAa.qɮe^X.sJ7Wa7Ä?,1acGR a8g0J2+AIou-a@° ֹk ;B쁏 a]HX)ǿI:;u/h}l)0i?wu)_i3%až?H>V#hډKy||)q'%f 1H <w}j؈VfX AQfcya!A:SA›> ,A̕z*_ʰh}jZ̦OeԳ^S"IYJ /nIY*x3juGFǙ;K {6!aX6tׇqʚ24]"a'>|K/‚O&$Z sLQ Ru~ڵ=5N# 't9鰏舛W=4yiJŖ#eNbnQ!"PH@Y .E93R=}⺭zNH̛HY8K37WY8KB_zeT6^:}aA%!~ }q0ü0,V箍RV{K#eՌr5R⊹5\Mypu@͙& ?nNjs[I?{+0~x㚠Ln_h~)RƝ|'k)+ncˮ띤L4${1#X/'aCcwUeP(#a3APQ͘] "TˢԙJ \RTۃ$L4Ypф&mf;sYز#ApoG5I8;Ls?bk$ z(gIA`1=6FN, A RFtC AhYIBPq7f($,~ 'a&؂[$aCMdEԢM^XܺF4עlLA'='BQ' lb#e&H?t5"$ec9w?.}٭9̪6u;DqIqd3݉vVO^"aCsWdya;I 0;a:s5-IT\K䡺Aܟx-tr}kX (?F)̄"'hVjZ,½oKJ]J$;%6T(g^g7%h؀{Ӫ]8IByN^6:M4/:Ԇ|zvYԙHƔSGTa JzхDbv&l<Կ50Ǹa#=vy*a. Lh`ᅉ_R t°Dr\#20,ASU)$l^~0,Cۯ*n=93/ecyxf_xЏ~]=vŵ*Z^-Rfk8Tj 2gqlep1S/0yG#ovxaC1_Ob/Y=<#7>o) 5x9-#Hˉ ,EHsF,~'l~)3 5h9ÌxҋkE-j=&3Fu.}";01F`BP1H>B~_,~'"efق:׸KKDv' j\cFgIm/|:}Έ(Hυa:I8;YP6ݲrXױ|]zI[R#!m=͒0qnb'i누Ο숄YCzSpGUcd$L:y!HonH8R7#hy|qaٹE*EIk @ebۖo&HX*_a"kvx+#ۄ6N'iÃ<(34>SSi Q3Y3!,DsZw̼ÛYg3X֭Im;=֥`mG䱺A3kS;Si}#tz 2,V(c8u.v}-["u&I1_^ܢ́WPvNP4 }Z{ÜAAM% HPZ8I$ ByDZ*0qnbGPsgI+HP\ ~H]]Gt]G$ ˎ]= 无%w ^PԥQn?qU;+@dˎ8E)$+PvJP"Ucg5] L^YZ] နK2ikCSCZ(;0Du聄nS ٜ'!a.UrH'7hJP4aToӍʗXS??NO[3q@=>-\b<>@z(8?]:-6r2=EV|ȵV ?C|AYaTjG\!h{_G"2A߱:d !/VF樐" ≯e=D#22WmK=)"][p JP%-XB"3LU*֘W1} kgVJGqwS kP~)+&"0-1 ]J^=U#V@})+@D6# \ PahOe^1_!롘M]8RVGd%^͸W~%(EG"n7#rΥMv68ა̥ZSb"кrJrU+P^^MEP"ܵBC9 i\;"v0Ⱥ)̜|6uzPk0EQף|,I\n{bKz,^A}^!RD$WiDK@YIyȃK) `/e6D%*/MMD#7 킴sZtew+_{jp"< #֛ pw-G>A *[LnSE#7cR bM"ש^J^-{VoLUC Ҽ P Q3JPV*CdǹO1D{ێ>!!롼zf~r%|G!/9J*Er -"v"N_bڀIP (YE.&;um@Y #( [iy%d.t]!TRWru* "*?w33i^IՉdpSA=<-5-S4G df*)Z@H]@jGd(yuI@(PDP#v۩̟Ҝш GYEY-G&Em6ۥa%Âl'2pT̀\6j7w~É{&NiI\ m&d=MNL,EqX "Lx{zwʗQ[VZjG[3O(;Q]j9ufr)YŘM^g[Y( -KY -ƷGm|;EuCx@z(mmLak JE= A'rSDGT0othXD٦ Jˑ N̜re5+[yE<.ee?9 qPMclfUN%/D^>D)8y}:X_3`sI̧0ȟmP%nB2sn'"&DǾڝr I1o"d9i=vXՀjXee=bUb5#),)ca G+nm@X!"@D{K*5>H.%뱼`^ 1y yI J \E&qͭT0_Ŧ" sy>&;O:JP!BvuuXSbعOn"("ԂY g8wعh[D9qB@ *RƉ#d[WG42ne3(PVʴЧT@]t2HF]1pq T!*xmMN_fi2h{Aޏ@1H4파H\"&]Q %{J4ZVE$7`|@>NYI7=+kVfy ;bb~"R9OM WX t݌Kq$*]EhZ9/݄\[q Ykup[Jlڣ%/>x[}H$*cDDq40"˩ոn1 "kn%e%+#6KP@MEC- BCsicAYBCSv=xJcR2a孮 f(?D$&"Q#,t*yڃ~X%cuW!롘|BG&| #rU!Y)ܾ1Ch0NXxgx/vhà*:f6M#!+eSi7  U@X@Sz/Yanͩ3&l=EuAzs~b~94*z{F\oʥ̜ڤ4"uAz(NڰmV{ZJidip\ңL.x- 0%!DX-uÄ<uAxvFN%2ۮ6a^J<.{% D޺@;<7fvlq* d=z=e&똘S'*sg&xʱV6̈́ d=N쌸dNb& q7WvgEv0svhx{,RgڒPǴz<#'z/7W$r (+HD=uEN} ?4";H@YHoTaQpYF- -SY -ń[WZ=pnb^fA̐Z-@IS:Hk7`D8QN1, 'WL<#PgpV(t*ص<:6'OMDԼKg߇ JH䞅#}`B:@;<,Fҿۊ:_)9;P^!iz(3v4lyɇW"kr"&S49] e!FfBf4fiRk/+ g/t)s!^nSV}pq!P0uxh⏹(8T"RNP!_T"k:"] T8z.!z͵ߣLq_=GC|]3^xh#7q{B>F ׾URKM?VnC2n~n$KOFm7-v/(rK3_ҥ `Eq=S >>]qN@PVjl+tӄ5TNa%<:WJ 9qBTDQ/mp%&N30&\Fla ʰcNZEVX3‡L4^L|Hh@6l\QX.mR b>ks]"Kl"*!Z\I L"Mnwp[Ic?̗{,xED׸A[^phq׸ z(wn3Mu,.aP7ƣ~lq&=e Sqũqq 3<,qM?fne4e:jGi4"Lڜ)Ijҭ|VU 2}(#hoeXΗ?6RE$6 ^x1[d5 _W&T S @m"l/XpP]U 6adm:dmʠź]K}*_ /p/ őńOoea0U2 hlFs)w+>,Ξ~J$uwKZ1hfzﱏ_ C9륔fY䮽45 %pW LPmc4Bm{jOm6?!WdH,pu)3!H/ޙs KѢW%3;"_b; T B=RiT3#׬% )nQzbU*PFa@J _ؤl0MP_vk? Q`"CüyDMSVnec9$z^ YʂWjxQ:d~+ ^?ëp{ne6x=Vjy (1kmחs->OP|bÇzӀ|V| >4!,NBSkj/(1ZIGOa9QLJ5FY k:b,z^ @w,"퓣5ll/WEz[*Z]K3V( `F>32a*/e K`ϐhz@zj$ ߂ k R*i>w_W( ˎSݩ%·gD >p)˲z;Kp{ ALЄ&hʁ ڼN|[ nVPF wk?ʏ 6ܹPkH08cfP*6'!rrXb?@uX 9,F^8js^°9w8 V`E\X E% VqcE5!~y1q(DjfmZcd$ #aC9͝^·riȊ*bC4 u0}‡zE|:V=̡f7]Ĉ"8(61b҆vq04Z\nT\Z\aL=#s&YpaY6]VFĻa…&"kl֦1US+T؍ȧ@X*`A0 "(Y) 2,Cny5HU?OF#+ԫQwur+\j{UUC!5 <",ǟ|!(u,hņV[!㷲ZyFyP ZxY2a uo2,C0X#C= Pic4BݒF7(M~\IkU,UH˭ gHb4Bv|I$y묬H"Ibo2'Hq)(yYVaއ _&dc  H Q% z,k^n!#kq25 sPfic P̀,@P\T zXE0m!x̼k0/aXrԇrTGl='FG{Be2o4!; ղ٥ Y%P&C0N ^ V5&W;N >\C-O!ڄKoeXޜ|ԫ}ii6Y0+xN 7?0{'F_jgf>e`ox-FLjW]?"AX̹mT.F\QF+Է2}6 =aCyO?h\a5F^Zd bÚ-.kʷ`d$])ml LڄhI޿e50;8#;H-{,z!F~Lj\#/@V D\Qշw6ADIfäk*캋Ku_lVdaK=r'(@!y55r!$+xuKm ,x~g%/mEȼKaK*l@ޕv؇.e=D#8]%p z(X>TRf$v oFKeOc+c8!MO0+")WxUKH\$wǒTd̤EkA-" RD[ObP=Uf1FXwx%٣'\]aXȼJf-LEANM]ԙzF6)4 ]1[]fCiC`ԍ_ rIqy[Ȋ Ȣ݄͂a!&\6ad=#?Rj2,D~7vٵՑ=AƊ87mfc# z(HyJ%R.1o6a&C0jRW(04=2CG 4BG_;a~+s"!4r=ÂWe. ;\wL?5W=U5r(\a& ;VP@m-.eOF$/˪$9_)Ig(r1@W !TئN+K!KW 0(4NH{8;5V\ѿ QrjC0顨أ{&:qr@0l2Fw<̱L)F\g=9;巸 F%j里G.necV)oݮb&FQbۿ?b0"rLiLmSm!'>9V`QX6,kbjAH3S#~鴾&V?6HgiXcWAbLUN?lYEŠzsF#}A?V΂ZϠ?V~? ̟ʰwh ءiD`0XqP ս.yAV@=TèzŽʁ0C Kq1W#۠,#ǨےxCƴaghwNj+ȷb =/OaP]D]vA2m{鶨 [[Ĉ il9( 61jեnb (ӂ#ӏ(`U%gu#ӌe!p]D.^G~Н¤m^aw˽C58YRTz@τx0{zh"F9wHP&=y)ۼb`jٸQE1&e42-A^kMHcnWdDnL> ngB&=_MҬ C3rqV*Wh @XWh`6MÄwaC\~'ĚNs"c4BomWt&8Vh{&sO"xʊW_5 |AY ^qh48 Ӏm=i9oY^>؊hjxe)bfu0顼A9T7+?uFY[fO-?= !~?{)T~~gᴺ8|-+.{aCB(XN!~V=+?AG«B'VBM%ab;~KQNM< /%>޷Cgt/j^+n RotĖG /||gl[dG$2бG;`wTk)ne 1j:!.,Ȟ[~ Jhэ9"g\. 6_*nC/ʙ(R)eQqbla`]D&SeZ83|_qe8C5/QGm GX[x %uud3‹e1x]Q9qM>5݀TK:k.ˉQ_ VNaj|INUWҦV2mp+W+4W= ,*wm;\ai3{:WJ[e|0gC6qy ,8bL]@Lz,(!yR{Vdu|/|, %ҠiY uw5ifӻR?u^[-Kif9qgmJL8m Nq>LkTuQ͂l7("~5^r Lz(O+ ?z/@==!QKM*%4?F74+ΊiىRlFz{ ۓ2o6v絲g<lj+ԩ]q AX\i} K"uu7]1(aM1?2o./FM x#?0"j'uIR_L:HWSP3QG'+UPE;#{@?Uè}eZ;~vQn-"n1]D.?r)Lz(Ql*h!Cq|F~ہ0.‡QKqAM LOJb6R1=MpJQd Ǜ 'h ̝)Q <ᡍf,;\ i!x\8aEf9 w/Fo'YaCz+Obln\QfaHkbT&Nd ´LHu3{&Ԃ^/aL4-BP0{]ĮK-ۦA샎A%D=RȦ2鱨W4/* ?TV\QWW( ^L<@(B>܌i!jtGZhP&=Mh&գuF.(KP_M˄%T%([p@!wRz/\[9Bz)UZT@XBY: OCS`,\ "vF_),b4I=̂ ¤R= a ц6F33rGXʸnJwOβ H2-xG:ue!4vXNeEQO=+ \(+B- QgZhz[LKV|J8d,Vd JVFdQ6-r(K "!aJ0([l7K91D] "pŌ+rӂW>x#nP_Y euB=p+r!bΈWEt-fa<8%ZNPJKs(08G–ե@u =,}4;eZ~Yr ' kv*+>~?~҄} ҂ i Lnj1[]Uk\j.}k)ƅ _؎JP0Npȇ=̶Ůfgoq JLz,z%ͨC?oVEb4K>> 'PE(xw>FcKpfq$:d9 rD/M irT9a&AYGw1Q¤a7q)K\' (9$S͆-}it (\Ixi~՝ʴy'9{ZcaF60ۡE"A 9¤K`E]55 ̝aDdpUǙ =@Ǩ~B0xcRq[\ #u;z,\aZvax7 [:2%KkY U~onphb:rǕ$APحØ=$#݌\/Fp& ҽLz,Qje&fOÇz@"G@;>1ʱCŁ0-SpjWgh:d:Sa!{vM ̜,ӊ Qyzʤc5Sܑ$+۷۾&"]aĨuxm>Sb/Bw7e{2JAX"st+cLz,]DĽ&YCm5XS;=u_{۴ iyyv6='\Gٵ>ʞʤ"=[imnMƊكQNiʴTRejیڒhnp-m Lz(Z}0gDfF ܎ HROe>v?ݪ8_\Lsljh"b{4 ג#KK$fAG+}^\Fu* v^pQoh (+\?G.Qd´ Ey,Lmݒ[7C*TwwӀaP]D.&bnսAP::-P/vh##70svh7baAPnT!$Ak3 ۿɻMm4NX_9FXQ aaG=;`]%@X3FK*?\O3MȱIPfmZcEI=4cmJA6n_oŴ25}((s+OoژLJ'.@aCyN{` ' VN`vșV*XhaE1j._6uM7$vhzeKn$wc V[XĨˉop LK^k:;&ڠĨˉzE儻>0ܲeD&)OL\O<~1'N4Q?:( 6/}Tn, 9!Ek &Fw/yeZ(wZү/iޕ"1( 4uUG9ʤo2터/Ɉ''WNMU.QWK iAڼUz[!B&Q uYahLա}~[YXEp  5cpNe!p]DQ1 xs,X@PMZ9)*>LRp&+Ј1&5Hmhsǽ &ܓ0+YYE - JV%zAm ވlRcDqkAXAٍQ qhjZ$XMbǽ { deEq2lששJֽjٰ-&^#)ڴ,ȝ LPTVIf&XCmvȝà, 9z>}sĠLz,0k ҫսUx @?VSyTaw2X!m1XJ5l}2`ݩLQDG-b/Ve)t]i* >p<>oct;+kCTmc4BƥŽ0-]n"qtV2axu3"5ܙFTģ #>¤b&u Qɗ; ̜\hx':~ԥt*31Bx|jaH]ji a4ؠEy@?뛹nB>ց0lBM3:RdqQsfE0j$wM7!N2-?(!Ԯ4v5(61jK|װ`0 V>`Q'/& ZZl*\oXh6MWg? ~ˈfv >0{zHZ¯gP&=ն#F*+ZW0rPV*ZրFk(*geL(KXm2?ҼS^8+6ׇ>Vĩw.vLK&,o >F+vmP:Q*1-(+cY2F1vF޺@YuɆ,.є g3#G>OaCR VmR,X~Mfc7WS?o:XqZ)LUB݄LdQEWaT]O9]?.Kec9 ~(i'LHw7cPZ-tgˑݴ`ҩ(U7J9 ʊҟ4.senLz,B(k%5#8t=oFpVя(2fÈ J .; v xL_jj}ߪ" HCH3[9uʥ%&=)P87 J>'8{IEulj=^71xsp ̟|v5w@0-T6Mx)L*P7왺FNtȇ>g;C7%%Ux3pZMmDnPejX6RkeU:'(kkAY Eɍ~hꎷ YY(OƮRbږG0-DQR*:0 =FXG `u?m`I6`Ve6'ΘLr^IaF́2-V/':W;#+n.Q S^<'^<I$O*9|5oiM|z{gf ݩ̟bBﷃnJl)}܏)/˲8/e6!G>Qꖴo]G' ʴx~__9~%vQ&=32(Ѽڤ( GM4F(KB61ѤdI嗈e\r2.dEjF1PFE81.JuѪ.hN~Sʼ7W9ь-m9.J=c=;q4aMAY GbZǥ6APBTQ){">tcкb& O Ci@DC&@X Ei\qc/ :\MeėG(rf`Lz,q5^UjeWwbNQDny`W<;._'3nJb^kM %uHΩP{:I?ʊM3?7۝Ȋ![Ԃl][ޙӖi2O Lz(RX|`UpCf@X7b@>o!}{V.tme `]C^"#GX#ԱVƠa;, ƨc84ÀF2鱬,B8V3vy#u ;vg4,}bUI'xpVo ԋƾiB+i o5MR_ʤǢNXubwͨ(StgY#zdaL]6j 9Q&G^N'K!AcKݠ,!W8lad]P1KMnPRg!aiB'葆Lz,F8c *]׽j-`Ȳ%(:{bX.fZ$XL >*6Vof쿜[bbGۢV*MWXC47 >Mp|Pi2nmQUU媯\qYs]s.Q `՝@P0Y8zS8¤b ~{#mUK\]a@2D5Zͧz|F2C8-7gF|eZv1F![k!އT4K} Y@Yʎ/rkkz*+_?k萝Q,@bԾIl}9aUªW/աX4-=Š%;@¤"즞hڗ18Bze݋@XJw%mW9aZ6D:[laH] o3VxipKic4%El3͸f_&=_n2k*jdcH|W.Ɖ z\IC{-ϘVz*=ErCzf4D0-TL :,\YQE?!:mP /C~xpnhpi FŨ|®RLr#ކqJW7 Q7 @uY2∸ p’8vĩ74XLP&=ݦ߭0nb6 :HNe+7XqPV*^!AY ^qhop+&=٢:QWӿܸ oDZSd1^ *o"*:ڴ /@)}ǛDŽ4JVb;NHKX^߅]uŇmr4wϑwڠVٹ ¸Lyw(p)8+UPEezFRUBR90n‡ng ٴ;YaKz@9;ьр69p)XOXf=Kw^JD+>RVRFz4"WjTQ?(!$hrf\9Q׿I @=|rc)|z 7B9!F>Xݓ}nb޶y _/e\~٩8CsSR 9 2-9F=!TyL?75;q:RTbWpUC]qI q~>4޸JM0ޘ9uEU#KY F]kp$F=yί^hr<2pF`E$XAXXĨj0.A !e_{5EDi 2걨{F䑊3ŠuE/eXOA.2?u*w0Z5]v@eoxkuH{ CZwI, ,ʋ%|=T7{G{+9cYu9[M3`u2.;JUC-B+[,!ƨqm[b^i 2w.VvX; PF=} v(YڱV{_61#vrG\yM5rV"p+Y nBQ/&ʨbv5:]P ",|`TBT!3{͑_ mĨ1:-3nY楌z,V)!DFJYb7MȩPFM81F3&PF=Y!W<Xy?B-=q[g.B#h#_#+OM0'nY\ad| JxI37+IIRj۠Gɛأ"hgu/MG/u@ڬ2@9^VúeX_iv2.?NHPY8b.1{4{l9K/x@E\2~ {aԵBYLX˰z,n5V ,PV刺ۣrT9+l\PiͨU|ʨڸu2#χ[r.;ʨb $716cl/CԊil w)~Į%F}qv-S2lb^$q%ie%)a?rjJ_4o%Dr z q3p/>O%Sy#GEb؈cpmnbʌʨ!bK|QeQ,ц>F2 k z,9fnkU٦XO1s,ssa^J hz=*ƅ;/8.V&kG+=CYa4Fo] 'W@XǨ| /LbKIF㈵ecq^ҜyJ͈,v. GʨR~[)wivY?bz`cܻ k鐾N z(VcOhPÀkaE 'Bj RF=9JH)rb: 6(`.h1z%.}va\PVjijb ,gFgi-7gȏ ly,!VLG@;3rdQEn֚y}*osK>:|K`CmaK z z(*du(Uv.Vvcx2aٙ*;b"|Dvnecn2bL%uM]ۣ&"r:&we\x26/gk0Ũ)ƺ>ؖBiiٞ2ꐎ`:e `CIr6C|% h!IΗ nlᨇٕ ʸdi X,>XqE۩ FCoaL賽"P?!^2 pWaCy:1Pqs/$6JɊڻgz\ 61~Ai3(U0RC :]JE>WA1\Jz7oI|_bݱAF=m9w&~Lj{nY2hZ sg&xm0(By~i/NasmpUD| vJPmcԋI2eB%0x)q$R `u?3ii|z@P>JUazLsa/A=bA}Okvk9қ!P@XܹꩼNksF0c;G=5"K2걨Ms7F@\ULd\` țg,`AY6` ʒ$FN݌Tj!hmZ!sT ̟ƨUJ9hHVެȜ%`u?4c{2:Av{Za?_T"5"U@Y)rk_䪺KY$Rs!f}02gH=/Y SJ؋QdX{*U ,{bԝN\oh&\^/ ?0J-*A. QrUiU--QTu-9cVDk-.aD݄N1mvӄ,|0.:K!]璑4u2܍{ղrؤf'5KPF=+z792oa^$JZ;K 㲕+';jcDaCqM.)trL)AP)&+8<龟LyCuw;L/cʨǢ6gI(z&:_PVz*=?ѳ< S@Y'=@YDO7#KڠTz~gwOPVz{}\FJO@AYDπ{ JO'zJ3(+=虐hSRN o|:-^F ߂4ZE+ 9::Z5(@laB@]RfDMԢo~HecjZ'(F7RYtb&(+]ߢk@"λaFyU-FtU~iFAY ]7ahm4=T!/BT!SR MY)͸We1pB)z+hAp!_%(!K#{AXBፑeUSӂ@Xʄ)8w-XLZ~ ̝aނ:GAP^H)]}ܪn;2ggci^8O݊:_)?;Ю7<1QY"cE7ɑ%S @O23HX*F 5 s,r枀fSHPe־{cn>T fDBU |&!aPQ5͊dbn[BF.t&aPQ5U7%,Tyt#aPNAOy$Lȥ4'ecݍ*%^ܡpqM*5-CBV! &o@R"ݳ5ڵG54p6lJ6,dY]-kJ*dduBֳɚPMR Y0Y3v6=#rcAW ,,8v-Z)=/]UH>= o{ky(ghHSmđcrT@1[d k =dc83I rQJ%[on3\!wYzV#X$a*߄FD܀=dZW3Ɠ 2 oܮ y:FB&kAT <, hqRHs[I`+) A?A |j=܃uue)̘}֠7G,..[Ө]gU;,Ps l;E,PێCu=_&Dʠb&ri/Þo:RNkBɭD°HYk4>AD@wwmm@CND㸼Z=Չ*>S8N_W؋ 3Gk'cAPPu=B X#aX|x-<3Oa^; THX)xs S& sŨ4 ~5{!Q]E& MDdj8>KʠE8"Wz֞ b~o%e񦶈!<# z,9[ͪN`mUI`o aQ ` X[&mୡ&"d6o'@ _J=+0"x߇$a𦶈斸WRʬ"&iLi') ]ŽhAR ]EPKO_&"dޯLN OzJEoewmNR -p,he) Z@@&"f|U׀U *ϥs4*$ei3w02豈^nUF[<*EEwz8aSؗb`w1sf.`# Ua\m$,\%\WHU +0 (!>m!p8᝗BOgD'@_5E4ۢK{HX=/-b6hqTtq8Il^V*guŋhzQAľ9s@w^L bsu3U` ևYݩ(揽K0qA'yvh=$ Ώ?UXM+QwڱźPH<<,\~D_,tJ-QۏJBד"VLhRfC=EԿ96VR=u?!ޞYIi/݋ [jV-5#3E.bՌ`]a)󇒋&V7~DoT2yn'Ajxb$ z(ovH#8X3 &7EԲ^zBIXjꕑi8ą{ͩ=3I)R˛4-OXS.t0&R X(Xu BR=t^X"e: ٻK$أFF| {@@$ z(Kʚ~>HxL'^x\qO#}(FM t'aCYIQ̭mE) Q?QcݸI8Qͪia~ $nLQm`aM!2y(-YF4Q\ |%eWp 7H \7Q,8Bۀ^ z,FͬvyTgTpO Sw)7E4onľ>ʰP"9\i`Bx 4؍cGY*``MhS/)3&k{t)3 74E4o{>0衬?M RD ~W6 ӄ}Ǒ0yzxZD#BʠZ13">2un'.qe;KXos,/g DwiFj5w vm`;͹swۖ2bo(&"jg^)5uXeAԾ⽤x l#ecqd8xT_aȆ :3wP z,gQgIhM4; HPc߄l9I°8yx칉8J#,eT #20ZiU"Yo@UR&MD=7M=Shٍ*DzzĚH:<,.'怄./ևsBR6]*C_c$ ϡ!eCY0衈>:)HyڄYU`bM=%&:MzȒ2,eFB.۶Bգ"W]w- R&O=Dzo2,>&XK:Ec9bm+Gq4qzyؠGI.~cYCLV 4'ecQnQ>ˬ'gy|E@}Ěyܭ~SHXDznz{XxqHP*žRW"7-&Iagy p糩G{o/eXCܲ*pe 㟚"7u5FhQcNiՈ2,VVh%Dy;*JuϚ~905DʠbnvcL'LhaiÛ"~ujd c]^^47; ˸([?( 7b5ܥ VpzVtFd yN90޸tʥ Kپý[oXڼ.=--8:QfM4eIW v"ar0"?UMe2l:zi)'K8惗2l=P5 (7ed7=K O a5`)<` V V7ڛ;XODSu^/ecq\:~:IcټxBT8quh-Ěbc݋^x))*ƽ.Go*+pQ. ʤLZmauS yb'\<#N OhB:.=."< Fa-Θ]:Zv)Refݍُc5b(:ڮ"2HИ-0UwIG} >28ӝ[> և-j4N$|(K[%jPx|!adL}[LBLa$AFlIu}롘8]*!ApO?H9;L95`}D udR݈}0rnbG'7;6H; ߳Ûifmø3/3lGKJb);c[ j.9Xt)= i/hĐW%hawx!W7KC)γ)G"o?)%T%_ES Oq x#ISR[c$z(y<ދbiZL5[bfBM0Naf*310vnGکG&]Jmsߕ ;`#DʏY;$oZt )&9V7NNJK+e>ϡHˆ{pr7`L/e*;A(o%HXd67^Z5:bΉU3QTf2Z8Z]/ehĐ o0wGp)qi7qpTspꂈ⾕* Y}nAoK{>HPZ~V]Hſ |$e"pD S:sya$C.3C' 3C_03(CtS P[`vf2C1`M} aOu:EաSX묟fv3M/ +jE ~]$к!A=ᩭ@ )?ОP e=8Rf2C044h}*3C C_b0_SPЇRʬao+w)O/A# 7yjWNU6p+EѠz,;2<2YY K9/NKZL |%a@D '+oSVKXzN^vpb%Ȱĝv0ӤV=C=Hn!z>1nbI9\&Y sL*GpץL#ޔ'ľ-I_)ESU B{ NFI!vK*v^߀^źLYj)AFnRÛٜ}*#ÞeBTeU$I:W#zIJY0ӞPU5 TRf2C1ԣOef(Ho=:af34]Rf2C0h.;9e~c}z)`OFMϟ`9d|,NwXaO`#vHBlZž8? MOEm0p̟ᇷp2Fz,/_Zmm*4tt2s WKRf2W(WJ!F2~xv]n{IQ-WEt+LJ}F1H藪C맞BՀZ)NJHĎ7pԗٱq㟄Û51zp "loIH1?$@ȑA\6*p;sjtueY*qrU =9^;)QաTuxb.,k2U!SN<%aT݄ ;8o&C!^='S7=Gb)~LI!9+bz={nj4,vxPWX"F2w? `+& "e۱+LMT3u3u2UᦿzWHTTຝSU#mF~L/wLj5F:ĽDZ.ez̵wݢSIXfUV}fˆ{Уd0bq&rE::2]Ǯq2HVA]Iy'ݹՆv@fT!a(DC H P=0 8+lQ㞹_x0]JהU1O_.) ^,^` ˪wK`` pX7$GЀ{I號mŪR԰z^ڦœ)$z(_f.&(x3] ؅8 &|OۊE)ˣ!kQY!i7?Da͆uu|QL(0$Ŗ J}_->l#l θ60xZ6M1`\/WOu,JA2W5DBhM0#$z(79:[< o>Ԥ]NɌT\/RΨ _[p& G&vibGEG$z(?" S')DMVEU@$o`#z,Ǔ敦סgGwHh7)IZ71MRY6AIJ 0[@H 1ǡk8D,Mqt'M :8_JCYXu(-=z5EѢ3F0RFjq`0Fh]#œ)#+K Fw6m 37[k[窐1IES6)4=cQ=a&hK2y|X3Z@=Ҽ^Ĩ[PPq H:TГ48 ؗ C/jNzB=E9=HL֔6 I~SCﻝ~|*xn.Jn,IXUj6ulnz:7^帀8l+RgݽQwwRjeǴ,EcxLL˺:pkBQ)*0ݑ2xs]@MJ5y^H<({ eXO6K%R}N)>u^NZԾ22/뾔o'Fݠ`[qRo #*|GBe@'|xj𩍄ZRgӃۗ% 2ea^ӪZ6qR %``nf7+npQ zn HXp shg~ Iݻr!)6M*$I XyZ4ǜLz0 I2(65G l&2br" #[|:2)"eya`Y0GZ0\b-Yь j{*remE;e's,i|NJ+57%8IJK&^hR=9 O,jL7|ęZŽghG72f)kI)| _߼u( 0GRJ/MfoUߋoՠ[H_7"w!?vh!*Rt[AĞ:)To ݭ)=?JY{q,Ud\5z*~Osb_X + C+ * •prT؃4 s&[ gMiL.bc۪SXũ|nm\Nf|o̞b4ש0\| ̭WbLJI@r;-O|)xA^/Z zS) H_ )QW]ʷ𥅯*AK)|%B=;)/wTfw)&2c.$ } R5_JI@4o=wTR 5RU )$K:ּ$ Rҿw [:E%<z=c4 T ڑP( RU[m8 )A @@NaHN@NReKJbm:vfmݾpaBkSdY*yZ9y^n"oƴ0c`0)$cϕ5IJaL14e;c7 1wR,FSX6/b :C1bo2$z(Jmp?7z jANaqe@,̥T>롘I9!@Eڮ:Iu9 !z/91NEo̩Gp#: &7ͽ ]REjSo>Y-ggCȊGUJ!+!QVFJ!Kch\p),! &k,LR@M4oǾĺD׽w/>^rR3'ZtT DqBľH) DA٩?zd )-˾m%EVlq)9v5{<814Q!zL{#F . Lv4p"7+E _2#n")M摕5/=?9:̳*g3.f1n($OQS6Q7(&o09^e}(tzMOqgF6"a沐vq$p`SũƟH:S74&s@B]]M 74hy/ 8o) )HPR4^ʉ+pw! -@Na\P@-̟o= fkDR@5h|4;n>\) +<W1Qc"a\P+(+F!C^ZiӂP!}H B٭ X斤|8LdXZf{ mhP>O-MBNnlNP0MD aMl]0_`6HFҨ-p V`܁TH(X Vh UVj9/A}j2~ZgyYf,*|yĚraWhDJby=ݖw k6K`oj{,&_fgVoj$ a&u+.@yRjQ,qZ|Ly2ItgEXSH) a&l(?R a Wusϥ̊{P W7X}L/Hj"PѨ{,08oKG:׃0/Zr(krCЊ 4'Z^=GLкxS݁$Y2N)=&oJ h<7u8@B9;mv9T_o}$L h\l[~y1b`BGa)l=a>i?&ݏ@47N("v7 Q?C4`{vb2y9qge?!;+0iPW?.X -]cLzwh=#U c^wbDDҚR/)-s{MyW@4("8g]V_42BسgAb/qziJ*BoICaFF92vKAC1EhIL'jgGeZ||cs5ʲ{&Fz݊¤A {aV; c&Q[&A}Ez; @h*hy#FaҠG]ԇLu+mΊիU;._}+'(~k~B2iX6=FNb:UVފq5<hgmP鑻v+^5>,g0b4In@//Sϋ1DhlF e0DZrǞA4,{gZZlZVޕiF^Aζg>)hi^p- Lhs;C/+h3մbyZ3pMAA4,:9"Z|Ho.'`V اn@0oBQw8Z{ʴy7+~wg-C[5=0iPч []]j鐣P TUT XzFM'&ʤaJ!T柶]W3(1갤^3@4(YOmP-+T@EBUA@=Tè'-2%EaZzSC|6 mcM%dF_x"O ros pfN67#¤A_aD!\ ̙5s#NCmĩM|ա.W^zFo^9ӂu3yRO8w{w^vfDW!@Y"Q; EŊ6X TrhCv;3 6r5F& 1֟.uD52"-vYȍ‘U_eҰZ{>uSxsgǝż+đt_e=#0jse@n;ebvopB+>o%ve4b梲b}/Y@YI$w+@YIrFԓgLs;^zWjk3'ߞg) sF ͨLw !xDZ]ShC9EKU^[!C mj7¤AQrZ2KhEÁF7 +@y""=\32bj됙LK9i;.猓! 7gVlQ3r Dw[P& ˶`0M@0cىʼ١iLotA fqꚚ+0{'Fm=(¤A1N{]!& ̞Ǩ$ 3aiʩÒSǦf鐽̛)fm@4,NBBM?˞䳎Q 8ᦞ@0ΠU2-̤1ߢ]p7S ,(*AY{(ܔ2{zx y.eҰߠәy+!¾ҕ]m,v[(+]$F'@4(ySk+r˷3"ؐEh+\1moHԴr6m@4(~6ܻ|UYCz w ¼!,f+'BT1<]ZY'cU{w} zF}+ě1NKjC'%H-e]O%!46#6+BDdB.aa!5&uq i它*SVmH PfO3$7nc.u۠>Vq޹GrUˇ=U1?iPzUj krz#Fa 9*D. ʂ@"-xZOo&&EZt(FLuA!aL=O1t: L#rʝY[Y9Qa|I|72[c\%]ɪ{%B02ʤaك/-qWdW?@Q%@aTŸR.a>VCervb-&@X_ĨxwQ4(?%6qysF9| ŠObY pĨuˈaҠんBfË(<խ ny:Zy-yiI>ajҊtsQDuA& CmucԷKqL`NWǙ_^dQ7`X@YY 46,v͙¤A:?V' 9hZIӐnbھeZB]hsW}EU& Rv'\09tD;V0׫Dr]3wҤ9 e۵Zq*?#&~LlGbå%33ެXP& >{<2S1ӺmX2iXm?ʾh\o}U1RA_s+TeCwHv e0DYXMR?i6| G'!*^/K]c3a/ /qjU& )wC8+|P\ -nR?bRT& ?=iB_9MbvBSM¤AqBzNm/U:0"~둛AXFeQ.ҘbMmLV͚a3sV&+V+,VrXC0j^%aҠNn;%6{9c*\JI-9w;2El~]C!> 3r+JMak9 ZA)q GjpvwnĊ/ꏷW3 1' E{9<%rs_U&~]]b.`< %*eW|E+~MCZՊl|ʴXLkW|1B| <0 a8ӂ<40iP!V&`0MAMkUii+m[c{?V+/c_<T̰x7!۔@eX70 IbSBtpwp ,*e{j& a}D.8ڬĨeYeE?N>f%5=ײ#nC Lw:8+i_U=7HsfOmQ+d\.% }Sj'\sg!x5Pw ܯ2iX~Ok AYo'ĨQr2iXn-tOqs"Ƨ;(E%N+UXC:86%PfaQ82Q-Q%(kSK%cGM2iX1-AhWAb ҀkDbCf$PV*H$dWYHnFo&P_VZ8(+_E]{WY||a'@Y_πTΓpe=Q4,!ܡ5 X3ԯ2ovHZ1=Z@4(zԭ|:ga4)Nn @ %HWB|}uh""*nˮ EPdqT%I 6`ԣpF{$,2EnEV6v}FT@70-nWX+V-.0ᇑ@7!'OaX~0M5.V[ u  ʫknľҁ2豼,>~k}YE]})"vX@hIce0N@CǮ_Bq97<k3})˪r:. ^;#_nA:>YQc uPj{ /eX|i%ܼ6&ТX};YuCZN}, z,K{u{\kx3#&SY R @Y*  YB6fĬb4 Lls"ǥ@!'ӛw~}oK*\V![ @X("bǔ=PT(?!=A E7nFnhAXJ .5H9fM1r ȇ>@S4 P-Ewi3BQMn~PD{fC=W#[~A/0 íڊW쪇Enexu.sxQͨfNmTOH?hP=!>rFH#v^͊%( EΪ-͸с27:7a: Z^{^{PЊk}ʰPmƙ* K2Ƿ%oP \׌e'p-uE2/WՀ:Dv@ί2'(ޯ!ujk(!8%*.##Fm rw|#[cx s(sB61ꛣoNWCX:*FQǰ ʜ %F (t3(MIZ TiVC<ѥ/$CFQ)y1vL: ٸʰ0YgǘfXCdž"P&Nm~cL9o==eڂY-[< z(kUN$RVMrh=c}[oXc,Xp- ,``Vak}bԀG|eM? 1hC ̂ i4wrrh#ش Xx:dfM1 &75.0衬z})exG.>'T@T .R@ Td=U r&zOMћ%FmͪFΫ(Lz@OaLqڀ #° =LC gٌÀ P}36Rc20yn@ TcQOA\CR [@P!Na*+ waPDYc4g@HNM40:'SrІAz/0uvSY(7kFʛn8"m*@:Rh0zj|9ٱZ׸S#A:;,=%lڵzqH2}!^)*I#,1걥ml o-pA62Q+.qBo EQ=޲ˆ8}= 1:`Du °l}If6MY15 r@XJ)2T"P]`'Fm7oqYR=uF]/nbk.+/!@ EWWG Mp2豼r̳'["j'9ʰUUd Mn+z;aFʟiT-YEta@D9vR=m7Ҙ}l i  ۾{l7nFmrp}^aCr_>n^߃Mfߨ) Δ:Z SũGZ0unQ E aCqސC|C n LlM3\a픪vJL(a~6m$S;a8`+d΃7vqL0xiTHˇq%aօv~+LET@:S7M[;!0,La4qGSa^2,?TvD8A&m2hSMbk§z"W3|E Vw3B Jӌ{aCj/fv>"+oL v&(30ߌZvCʠ"׷z{ XF%xjaj9/(D5{Ϗȶ'=e޻~%U7hc=zYC\\#0LJ61s!n/ z(~¬*sVH |\9dGbHKCS@iwoGA!E|ˮ{cGv)C];JְC+cB )Qd GM!kP>uFˮ锍 yUf/JLq\ ~)_ d 8*WeBa X=O@fr"_~kd%ȶ@v^O?֊p"ZAn7$ C_$zL(hS"'@6eB %9p+Yò[m(ܲ VCF>ٔF[z@=r@VPq{ݎߤ*ct5aX=O@ĕŕ,A4kXӵ97FMQP-uMKd 1a-;R@`QtQi`.*e VS`ף2"(jlw?1;7=NIqR^oA!gbr0SO? O0~/}HD^n%kXriVl2XWeHS.P3T.N-aŦUۦ~zP4QW$L&C/$u[@;vG1T% yeP=CO2%˲nds%(y75FއgB:Уy2J'ֱTur+SNMC%/A2r[cjD8-U8 ,@͔^T M Q`LU4Tޡ.Xpsf2U8zdQf@f[U*3m]nfu,kz (Yò;_hi|# ~鱽RL(J,1JְLj)qBMLM d J|[> 1T(P0bPԔ&-Su]ކAomRp!E{5?#;@ލHTr89ӿ -|pY#y5Ȓ$3>iŒ!qw+Y"r_(f|JְH)t*?l3S{(ėc: 5i0DzTs$NO" @Ɍ-sW}+3WpE~Ƕ2sre\=P@5LM<AQ7͛M*f 3@4 M L ҫQ@nHB~Z݂Bz_/a'듢쑕%Pct8)=8R@=p} Az:c2dk%XŃ}yݙpeKVJ1Kc[=>gZ@MWC.![ղ{i5cdX4zw B֠_qz.ߤ ClPX#*@;=M=0~z( }Ukn!kPvչ+#%dU#v(YT˺:auQCmŋ]hp+RNZ'npm將N'6` w Оg-r5yr{m'BN&0cVHzZ%} W!kP}eN8aCK:ޠih!5(b{i:.EE!kPJ}bXLTć\|aP=CO@%Jro7|d")5K\h- eK}!8űG0`؝]-ή Xq%K`LoY ra1ڊIUKtq?x2rzhuQr!yZvF՝G3-p&fBm@0F܁Dz{C|ϼ"3W*af j,Cuf(3_q eiD] hTHOK X,b8]5m h8! /?ʀ견p/kwJh"y -⦂)qO)2 b(I)iA4{'ȟ7 ar=JְxnsJ-`#z#ț¿C%3`W6A2Y)wjWj`9C"=᪀月W!7WpWjq.CTȩPC4DlT-Ɵ^FrM} DJfm39Ԫ^F2-]Rf2]DW[J2]ԵVf2]F0?3]k(K ]aШr\!u+1&:ˉkYUe]B^yhLB"ضp# L'*Y0]c@]Jְ7;?8CIPf a6:ELg=yT8S:__) ELKǯ_7zݱBHYuѥL!s-e-dYg^p$zd<1]@9NiԺTF(,ԕ#R&ͩi[n%/[!CNw+usх+8LWdt͛@2ӕ3J4]ߤrz7tH PEsypJ!neQȽQ2C![(K<@Kֺ^yuRSd^Y?a"d=P@cW?5,V,cC ᦗb*Pf^mk(3CcC@C70w}w:{l ٪y آ>+;(3[?a |4z悉E!kPRj)?~tXM#w=*'uK܋0Y1=و dBP\bM 0(yse-ҋzXJIlU)L- R鿂4 M0%hL d ʢ<یԻRV30rb' b狪y쬙PNWr7#g(Kg3(Yò[o7if/,,4E}.pI>*mr hD_Q_zGiw+Y&Թ$w)|FBP G[ud ͛y2|Q4[_PqEKȋѿٰfBh@No0F[ x3@T~@@wdu݊ oi?94 m!hB)jC3#Kp A\3ꎣ19PF=v+)*BLP/(K@61ꃣ`(ulAKiLyr"z-b`#Y!ĨYy`@00RGePs]PR<͸*7+GrGSQͨ!nP2LiL&8[䷲<Ξ'<: PˮBɠ$z:*+=C&\ C = r,nOR/wJP<>ZZa.,^Y!wY4їYTrHоpM$BQ}BZ2JQ Vmc0Gc{.aC BBV?wE]@=D>:W9j ¸|كY<+M:>Gwcw֟Cx8=n :,>XaElNtXzr: 7WO/ ך !MkĖs#{OaSġjn>0{&@=<c!v 2eVmQJ*T Yi%` ?0_ߺ PVF=tj+>II!]5v jք_ԐB^"RWGFKXHa /aH=#o^/_rz,c\;O9PeJceJ~DZ28aPz}ඏ;}buJVNMs{?aC٭ϴ2+v ̜ڬƨ =P@P|9TM" ;AX^qĨc؝yf0.GΩC'TzF~jqfOmjcԙK~02걜¹vP<#=(@9TOsP.`z,]y-NDZ1 [辔T1~kg\ҭU~֕ `Dx99QP 2.]^(f=]TNüh`q;r)B2kN#jʨǢTx62,ȨDU3`K2걬~+#1Š#oeX=O1M3Oˏ>Qˆ+튱h ʨǢ幚OZwnR2hbr0꡼eM8Ď^#YCΊWaC1oHk4)G¦;N0G'0aA]ZJWf\ +AIDq JqAnc/1(/֬&1mfB;VT*hV 6#ʨr4Nsdcg5QIf=!Ǟpn7M%+5%B'v*(K0oج2H_h$ .e!Wp TeCm&A JU IU+!0g4In 0ꡈ*dZv!ܳ K0 ,ibKrUjhM&8t@9~-^VQ" af5FjY.K z(ker'YQA,pJBޓTٯo뚚*R"unR0waш8q;wAPشҟFbҸ_V31M#ʸ`?ھgw:81:- D}בm~!AXokc>ZoehIaEf8(q!h`ʨ6®ƺ Z,r|ZʨDzb??i9i_vQh|8*}Zv^2{(@41y"%l'\laĶt^"u +ӌ޳2G޳#X=O1F(K'a%F'˟{{JURy yRfO30rD:d7(˪xbyĦbLQƦ 0h!~aEuBbu K~yv7-nG#N%J53 yCJy!rA(UJ/F!*>zFŀ~.e\x>RjLF0&.(+Gp4xt)+Gk{)+GrDmZrT9] "{1/e%&kldeDEJV% Mք^;E^Cd=#+1bN뵑nԿ#21r{M5 6]*WYCJBAYʈ,{z`k U,[YɪdV3:B&MyQ%lo_l?UKԍ ˄ED"_~6\[^?XX!F:lե, Xb#DEq0.ILuc ("e} yJkN؀U^Ga0XkD>2U‚vT V 0!#@Y,zdW (Oۊ8_)å+WHE.CL޻%ZPw?Iu? ,,Xsݞw), c R Xy  F/#.0QN:ħgyX>ph?#3@ DBTf>&\x᳉G9]R#rIrz>XL̀< ~26rMW~:K0~Sqlj[MEObT1"5z:P&5~_u~U.!'[) C`hRʒ!D@) CbhB0$ P>|^>|. Ќ.e ,^zv2YV~w:jtzF-[5p=1:lF렚y•@ !|3X}d:n !zd%|%@ |H|.#ƯzF3G~]BJQ6 *U}{{Phqq ,{at) u Lj5jꣶb^ b QyzI<@w!7ԀH3mF yI2&nZ̨j,URzU}<JJQ5cGP.㩺FUG#L´u jm? #rFlҘu)995%ˮE .aR{uC#VT&&ax `hWT?^mTcƍDYoeZUKbE{ O&|aM@,q_̗=}foe]dJ!(CwJhF!HA#r!( 6f8}leZoI07(GEy@ %l[X5'n6n -l o( D|!¶R "p#K) D]Q.M<2 hc߄B.}+Ӳ*اK)`=,7}ŢK|Bӽk9֥,bwxnpP L̏vń܌/ iVUP;$plXT]U5vN"9S7hyiBŦ hk &0uXOJ)o'jlQiLC`{dR LM~G1QA.eR(^7{҇ 5SE &݀]{))oM\졏}UNgU%R YB,9跲A Nki[T[kۇsyˆzKx@) FƨupPihm@((2BTVf\N=3َ=߄3 Nu30Q6okffN{O\  &5ʡm 3jWy|fm8F% A41juNCB!K“"k ,hw{@YDtLzӌ21[.U\(\U]U/8P W8M,=R\:(  qysO|2+0‡xV{pJ}{!jvg-6[iy.=`V#r*(`E:'(=0ZF;6ؾK[ZhUnq";e 6FkCۈʤfq87[bH6aR|j=,BO3N>J>@hoi1&5ʶxFy"F+G [PNe.]'!~&*K|z(cYI;+_@,~٣[+j# qrc7vQ@5Lo@j͋5CRTؓsLj+߶z~H͈+ۼ y &uI;'U/eZܲթ-*lvI#?  "oبS#"A-ZVk3k]"к!Fmm$maR:,Ahg;d#%v% ¤F1WRPaOآ{AŨD|Mnp6߼6>ذIPEG |# ´hVe&pX*:wQn7 GsDVaF%J,$̛Q}dGQ@,D0),껄M\D  FoɥYaZ~_7gh&?s".! jI%lvߟQfM ٻ3u7 u;UZLj,FmN9e},KbDuhB<%D >ycLKgί#&G (%Ĩꬵ!Dߊik;d ¤Fq76jqV[S_nQu44Ȗ$P%\]8A4!mA)j"~@ۂ2YഠJ){,Ox1i (iYeR7-1c#«E>Rz^ѱ r#Fi:jWaZ{D<bUu5c+,{b4 G}G^{+eU>^%eL zd( 41nmʤfq3Ɵ_ƿ`@Ya(jpI:y.YC<44(gC ݩﻠLrz_?fBWV  @Y ]`h|BsD~܁2Ya̗{)H@ V^QfKYZ0h= S{gaRl?rAKW^2X;ۊ$=_)·KNS6._dd`/frDA]-B|m)liR4%4Y@]w "(rkR)o[Ԏ)㌼.e%l=QE+;#죌 )uztfeSBPX Cגu"wrڱA5,ȁBzqC42;C>ひ"")Lx{rAȋˏt|h[56!'0.SowfIͬbŮe\|~roC+\@5,xK[LֲCfo_\ь0H[0PF&̿~o/|:JVz24,릠:<8-%Duw+/(k 4%NmBH;zP7rkF#VƩpg(X ,4X}堬gg.jNKRB;]cID>}bO|%tT@#&a!5²<}Ǿ[2aϠCφ,@5(3vGҳ)73BҌio!dB .o.YV)p^7e(i`⍧v>eLjfڱ0S~LS;7w&iE`ksVH S?r0Qâ^[[{3e"к]Aʒ!Ɇ ݪ0Evn Ќl#!z~6' b(2[vP~!YAR /ZGǿm|vdʨa^veG6d(ˈK+[^ŀUBmu!@5(Vs%wS 3C[TW3O=Iq* )]&#GYZO04Kd0bW2jX9E^6qICX1o6PNaZv9EsQy o)Qwȉ͏2jX)/96z(!w'?GYAY-a(B{]j#?n*XJ+rϸ$F~ VАq=8xF T SO϶"G|AX>I-9Ci _¼/'uwELXT)Lfp lL5PL o332%(T:uR'ͳef)㔠m֙.U3@\0(Y.KIe"Kj>7of%\:}aӀe5Qfv~ޑx2.^b[=/bx]t-HU]^Ҷ⣬0n_E Rs]DTo/GU_}96J3^W+b1 Nmq6!z%t^2jX,۷job9weѦ:zkGJA*!_)dV|9jzz:|{ ʸ]';BypO g53XnRMews q?%}ံ/" !VMo>KF U*#$GVE}7|:{˟:P$xs "MyjmqMe԰VqmܩPw9~}>%9|Ǝ2jXJ2~zvlX5:Lg`lq:tpNקF -)/&S 9E¨A93hIy3;#QbyfIC|8̸Cj'!6h LmcB?QY]6UH\aT=OBmoϏd{>ԓ;n\CӪimiqɹ-)→n 8W*{(le浄:$t9ʨa//gyYIY_L q?]TMWR;>Qr uø!%rYk2jXS'WLXλA 4m= @Dކ]¿"?qӞ_E-nP6bړbDv} D =/&¸Yށ( qDQŽT|}UE)z(ok#'UJFBLyz-( jt ʲFƅVDT@9bwmOgJK{h+pz=g>^6YP1pNaPD^1&_zm%QCL{n<-N\)I3@ȑA}DBr.ʆeb" 0!aFW44quvq_JǢ[Yc {ʺ%L t#u74cݥIXX5x^\YI`e`:T= po)+NJлd#8֝C5W[: /i6DPf ൹_3C0>)`~AӷMNߒ0-.e̢.$S/)vs -x&cDcH!}eUeh,K!}YӮQS! "5&މH!}Q5 їm)3D jT&gEtl*2[qk+]Dغd\&Ǫ ~0KFG(:EŒNX}{GG2mY;-)3SQ0||q#eL [4#z,o76(3#Nep1Qf5X$a< $$ַ#-)KEQqm#)7 rahE]IPlJi$?fھ]k{CCMںbQ+{%R]H=D(EAŽ) !aPCit/=NcM>HOgBKhL"c4[fvEYw)3Y= 7depKY7!`\Y$)}# !XnF(DV RRf2B_ ԢQT-[P.w~kJ̄^#ЂNSF+|؃2 Z T&M g|ea);C34dd9=Rf2C_1ԀKR&U[]oe 5IP~DVf7v͈ݥHV7#"9,=V$g~9s.f~2?vJ&HwZkKz=nBG- VIoA'8?xQpS)l&Ty@?b!^ewnŬ*}:vf@KY7!$s/1?VdvA3S9;4ܟ4z,Rc:;觙u奔0̘e ̘Ŋg`3N2c1#ڪ&)&sgΎdGy (Rf;`}Rf2O੮`RfoA81H2 RVZ;1Q0wT cg@ G'O_=nz/jXJ\%E;ϗ oԞ W{(dnbH藡üv^:)o4 9d~ܪ9ުM^p{A#DJ\ftպ>V2bAE;Sb$+98)䌙^UIX- !lK!e(PZ.e(S5E]ƥL"֫ (nw%e*pC Cw!CVmB\DsѲ)ք&ȮHP^RM"86I``(Xm"`C (̶+z,5jg߁} {hnCХRs\4 cqa3TPNePDLR]{5IX~}]d MZSIjj;pإ H)q;^JǢil>Ma9DۘQS@^P%C 4s4Slv3YubyeJpC'涓NNS({Pz aĚ 7q ];]lD1).N;0!HЌ> R$z(eRa=BrDaifRwjT~SmN[4MAq;x^ywvJX cEj !zz;wl`ـ .e `CqOCYVjŽ2?R#8Xf#a p&6Qq(v:z=ɕ۔vg3Wū)LԧĂdA؀t0 xsnL2S^e]m@(:UDQ]stKϩLpԵWWag]cj.%澹2 7 jd/T lwgBTcv衺Aݙ˖/=?WmWr_*+ K~)3N_n'ej8ޟr_Ӊ^)@Jv#4QHq{ T)p*Fv0?=X<~qǡCY ↹= Ś1sÚbs5-)nR3j2jb7(?zp?L{[f < 8y 3<췉̉UJ; wQ![OeҰHNJE,-1r|UңEFذM<4 #6!};@4(嫍QY#@9QנèßzD;bADeҰxҽ;vS;6+m w4wޯnw+_oEb]I_DKRO;x-P& K[ųϫ{`E`۶R(׀2mCn-ơ$z4a}%,Gˆk1LTV sF,P*дުSntBFQ9*KcdNR}|ҕ箩A~U:uFZk[V@4(E/z][~#WLP , $W|_=rLLKXcEeղuk豥TTE | =vxT~! `&{87/& {CyaEnW32Kgn2& _ LPV*VHXyT5yE %FďwnHxO-ܗ3"nDEaD]f^d4LQ LKj?ބ3Eaf:*Mp& _Ce~D0k."ܶE/k_2mvi *@+Z&6&iJcM޿>Jb{caҠE|GEinNiF%caҠHeս\!d@9:Eti%O3P& ˢT^_&웩`*U5q FmĩyP&  8Di갯H8FFrwIbvN,!['$ 3'tQov eTǚuV q;IFI4`oEef'8P& O7#{Jle'pu e)p]C7귕{ʤa٭eWBib-aSfg]T+gދw{[aԽD>nit;IKw};9;YI#(y}*%HZ3&!/ӗOe%,C¨+{.V c¦W9%vJ:ɉG#@%' b1^Ŭ!DCVS|ZN6O I)7ǭ-Vn@Τa-' yrCܩLIaImE/˟%* YU%Pm/Fz߬fqG/(LJtcWv@H& ʾ/aRϤ$g o{;50rmG9¤A9sʻ^*YC<%{/Cz1rЦ9@X+lK +V+,VU ,k)4i ^Iw<ēu!=o,¤AqZo`X7Ȋ)}:H8gxhsBVH L RZd8R " ku@X D+ q\p¤A¿D,]Y0EaD]od4w=\aҠcZK#YCzaĽꂰd;vKNI^L4:B'ooT2iX@mAlVLrF٧2sIzCΗeҰ(}~1Ze6am^1smMaҠ,?׽Z:N͹&[12iXV!ݾ똝o̔%q44쨮U'GFSY9-G\dQt*ሴfMIT2iX%lJվe#P51j&B9`FeZ~z_) eŧ|zd !-;[^&& .,Z ry4aq\F>2#A4,?V.R,T>OlC]f3r$(+>!'r, 2#5qIr|aSXJ+}[B[MW0iP~qƊL4 ?}Aޤf&2iX\.HíAXDnVB, dE@q¤AY],9gb+y Pu >X܆ ¤A?%F6%DaҠE؈ .b -QX\PdB<C0iPRkᥐA{,e9EDz1P'S4,o)eY+ZJYL@YZ0&@|9=L0iP4j)qhz

+p& rufo~Z~5ʆBLdQ(bڽA7SèNЎhxx"[!6'oV*:5ܛ1|rҩL% ~S2HzJZ# (Q=le@V' 鉻aҠh^@*quOdr;5}!72iXz!YS {~@{"=S=z6Z_F9<:kuvSY \PTih[L& ʏ |,N~ו}]ʤaq^.W !Ԟǩ/Smv'P51P/|2iX2@ fE#һr*`c N2 ~0morJzX Ab5}3X F9V*VXK~Yi :,ˮX2noÌ3# (7V.j|D>0-Yat!%". #u;zǩ_Y.2iX>Z-#"?^+]Qsa:!$C#' " EXi 3=faQ=roGT(L%24VHUI kaV!37I0Vꠤ6LVQ{ۡGzģH5Fz\UV9MtF'N:2-@Fl>,+Pt׻%F MݣGkeA sMv-/k RyᲘ +ժ]%`u ?\NC,recO+_H^CwYAD=bBؙD#)9YAU:~kQXPꑻ0.ܣ¤AY<*9maMC2hY/%NvwZbrv/C$A"B9#箜rJEE 4-EPBᘽdݦ>db c:sW;:lt (Kq/°̰wf#08@_;wBl,Ө m溕Arfͱm¾;#)"$3? EyIA5y 9mEf2hYNΰb+BW|Ar+@E䫥= bjO .a<=NDf7vaQ'Jǵ8?vGģҰtH(ሲE$X=-S¸`Luf؅c?CDc=G~| Ey!Z:m;HVt:kLICZ)pgYn;{F V7#@UG\a\=PDIɾo6 ZRRiLFd?H(+?3!sHneEXgW7-rsQbGRDmV-LBp[sR(F B "mnyH{PekWFKI,kbyK|68@ c+IXWW-$-S(,n&p{ed=PD>Jc[ EW&C\VeuRRCFႰ[V]D,2!_zaТڦ)Ǧ6KLWeв0i١^5J 6'l;(l:*ƎK| ʠe gS43]\ZG0"Wx2@i.c6L"O NPm^I{0-]°Ti.Υ[X)C^a`=DPDKiōL L^GSDKHog[-+zgoWFnڤ{T3):tN'LK&moXI}ԮؔJ ˔y0ӥvx^7KOn> H\W ڮ6 YjeFv7P-Ul~uJ!(oeX|2\ֽSZ@7GS+E6~bs@,ouZك+'3\C6EV#1,t%- YbN> *vM@9;MɞK| -Rx3YJQaE|R=.`?t ?eS4b?@aж:!c@(;͕trtCw;ArHvORrA1,#>W΃~eв( ~Ed&w- E99*|}y{eXS)eADdQR$zr =Ar]F9 PX. 8y Z6SL(Qywi'CR0,=R&zY!njYNSNܴ  Ey1iKiݮ'UIQA ,΢.&Q44 -U:•L ya1p=DQD9V-dz-*"7WLa[qx_Š2|npS !~"6mKxA,h9&i>\MԀ 0 PB1+­/*j27̅!z"2kLSvN7ۘإJeв&.|.*k ԄʰNg9:Ź2[b-.*_j3vmWCqB<#T@(PQE;7 0{/ . Zv9!;5"/Be"T/ݭi`8yeE"ˊP" 6+K@ws@Qo-p&X!2iՏl9Cny q2.A;<,r Tw°LY&=SV*j:OC.A".R2vx%J,deD+wne%' V@CE8i]^X}<Й($#& U~?4e N=&4a^,rsL_kc&x}TD--r m]ogjlqyZya*hg_qV*VH9[yaX=S,9 wH|0hQضqlWXG4/̞ʖ6Ĕ=N2LȻqPJ)õ~ixjRDX8( w$*A#4!F]{Ja{@YAvDiw-Z E@QL!72U0͸ Ly@XLaj;`C{A+O!6]xшM QQGHUl[oe툢rӂ|3 E/#%;T`.paE+/h;8/ +Zo3b(SǙ @(}IqgL'3hY'7 EXj ZS3qM34(e譭3L`#(y@ PFGs)?tU~uɀ>^LQE}b!KhA 'vȍ Zh$zz9Vz}ȍ<^X ]N@]NI߭$P%?SFݪWz|vsWV| Ft)8 H. ҟ@[l6WVʴ ^Gޅ?*V\aТX)&+s!E{dMӈ|y#;cLYcӰ ȋP-ir5[ %cQkp ʪO8bҨ+K[;S#ȠnoRz=u?_sXu{h4qWq9  MQ/+pD=)3Go8>7 W[ G>y ȱ]65nud^uV2H Giro_ܟ83GQՀZH GN;Lu UR^QUS^:=o.L8vV XMlO{?ʙuyjJ6'A@q{['Vks\U[c$z(]'+V5=YHz A&(̲3=XչU6!%-j: U?o N bo;[ b0 LTph3 S G -ZQH#DŒWkxˀG}6]/I9ZsRNjsfܝ@ LeSIP PE;p5~LʟL5s^<{p[gO%#=+ Ԫ ]9%Jt&x[#T l"e&)=I5HI 9s+p[XyږImvs֭뱟6t* /=%e2|= ikv^e6Ne6=/ybO>`9~/ߗQ?g4HZ-FBb6wxűXQ3S aD=;FocYݡ;NbC=#j3oef4A* 4̐롼>'uc6dB5fφĪ$f2GMF'a'a,Ge_suIXqVJqgf+U}6Y2 HФ{  BкR'2s,GI2s9H G]M ;R˩mW۹)FT[-aGVTlqw—\df/;I[@4JrjrOPəz,JM漾farRFgn%1R  JX]i?9O{<-P)3[QŝH7x.2[VSiD-xe@B2K}|}2a鮼LV`d-Hddna&+Ք` 3YQ[m50$Ld/MЗ zRz=Y+u5S OF܎NL#<'ȏr+1c]Աkwrg-tc`w ޳2)bIY7\u-w@B$RB+TNMnPw}mT$LƩ03B@+0 cg!x5p ճR5 x_RFp = c5rerokR^܍]/8.*EQŽ漢ݾz dve9H8ݹO&P)ɮɽ] mz=IOF:" M*H?>eQ׷,c"cї;&,a}Lv3v4j뱬=i_4Aq}շ2~xoiq=h 'Q(&k%fbv@[uIhZ`z+@!T:u%:NVehɩtf]ҧ^Z3JRQW`8"eF)o(OL %I7M=z=cTEr7%)ޠ30 #G!vQ6z/;ץӚ԰Ӏƍo":@tzRz=kywݝ +LU߃tdGa~}N}NgVktah@~r+p*)3E_RT*|Zh1Qv 3[ž a"l=Qߩ/$z(Ӧf}nVJsSQt,O]c$Q2Yajf2YAꗄiBvuZWne;G]:I@M?E^לz,6em6qEE.2BHŀ78DBkBmcn$L!&JE~ߞAVF+ %HhZ'&C rpo6l̷_9?.U]' = V_ˮ_) BEE!@,e'ΙV(ըַmb~-nͯP73e*[Ìzb`Gcul猙-O&}ˁ0hP qlfR @Xʈ+*t#mU Մ/ge_w xDs7x?"zoxpṲW2 0oB'"9݈CA'l)@"@vE] Pȅ , SuD*i݂]z /L-"`AX@-"7=rUjm䯌xS*^D[YH.".}B /%*_[/e9|=RD^pfaРHnܩOSP=}pa'9zLןA==';Z6?6iQV1_{e+=6[Yʌ.:ﭬtU;8~) )Pi>{)%_F[MkIʯ[<*ȳA[Y ^Oq8McLS 6o~p|E9u++@rį|2hX܈NmƺU2ftaXO?JE4Kkeа^qyjfcRo+Q$Z7(+^E\G SvDέ2hX7J%H&t5o{uH _Tv CA4,'<ZS1ɱ**SXaegt!WBBz1 #n?3&8 bTf~@@X?mi8-5ȷ@E*WvDKXWь u[ }A4,⥤HlcHP;gne)VZ&= E:))X9;gE! < \ˣFElU/fT1 C!""nY=n9 )EM0"S+x , 2mj+X,4Xҗ VN`іnD:AXXT̨_7H.W D ތO +VVJZ\&zf҈|R\ԎLC}Fn l=%9pN]%M(~괊Ŝrʠaa`VqǴS.L;k., &ʒ7d2NXc̻a}۹E *`痲 ("9m gUaX89vű%w$ ,4%D[݊cV Ksq͕p\˷9ر o>>SL:R7R Au'- Ɓ0hPN鹔)ԒV>@XX4dޥnO Ҽ ʠa_Ä98; 7ћD T D%nɝKڱGʠaWr< 8c3v8(s!|"2R'遻ayf7SDPiArA=?U-"7qiBA'B}gWVl2'"7uijmP nw'.kOl$*[Lk"b4#aL=ODn8t3 L vJ"Bc'AYB-"S%Uwp Aby/& )aW\ʠaqLl] yheаxڳ׶ (yQEnݝ9 EDkL&-aРa(֩(z%VzuqS;=S=0{z(kLIϵ)a|!? A9RSSx ²LX9NQZ="'qVꑛ AUVʁGlD%VڈRoaРR;g1.k d0! [1nqw N9=`i9 ʠaZlmi!ku^]6 Ӏ3 0hPђ_84-(5mIy29]b2Q];t{߸ZrĦ#lgaР]JFf"[ޑ6&"ȉɝnF2hX4jww|^R=F/ KY F-\b0,[ZadZfg$wNz+0FʰrKbK!.s|VmyF'0b?WJ5S-sk}2UB1560wIvH;% l$VC؍k핡T Uae2 !MI ,!3vT7e7cWK2hX.fZ˾YoVU£5!_%CŸuvDʰ ]1؋qD}; 'voebW.eаxwjŷiqHVv˙Eg[ˠ Ι:4B+pp 8#}9(#s/$gۍg^*ϭc]w_΄!]@4(;?RU-`JU6Ts U,qR6!MNFoJ'=g\顭h БOvȱ'P eN86(qaX`Ok츎o)?fBQ Jh -gĖ,GnÏPW8 TLoSW͸n0m9Sd~Ů*YwQnWG0[T[Ll^(]uB_e)qLPp/sTb)k\93u <]Iq}av :y1r({FAP> = ӵYS*`~I2Oh +*mцR1k/ZeMd;I< Ӭc[q$2l+N:I6dB֠|C},RT!ٹC{ln{)Yòcexnx^B֠We$A/<5ȁ5( o5VYE!DEo?hxK\خZ(Ybר>w[ۗrA݈'zpu5Z["st;RBnUbHb2nH綹55(gWEm+<fO&jH5 y*yxr lkЕX΂pXl6]`44gS!ﳜsK%IN# JG9.RA[IÜ(W', XKhv=}7z}=v} ѧ2J2 B^Ȯ|mbx$rB֦@tHl0(z rs30{zh3A !o<oS9K~12)}̕^Ǽ> ?u6o6P&ȅBZdWչ}1v>X% R챺AboS7au;\oJ*>'QGCzf[f8 G5(\8Vm`OnMidnE_ه/}v]V}/r(3&zqT-gUҳxrZcs(ЈZU!WK 9A1-AۗMC$yMkܫyj5 KbEnQfq&ȧD|;x&PeSk6[ /0bcu?ؗo|d) o'bVϸ56' M35%ཊUZjo Cu=Nꪮ̞Ҥ$xBzlV꙳i՜d%yNh/I}|<!ۉ: J&Q됻tA9;',RB=z$PB{3/ ,8C,0n"Hτn@+*y⢵*:nzgl, íR(5׺Zi*1gU.PQ*G>P=PB60{nG˒>Ws?Gh ״ =)j򦯒5,A[MIVy*&~t.8YN. KM)0wxh4Av\{\c TJ"kĎYEtjdӥ|zBȪ(K &uȦ9uT!uoK==&✄]q/lfW/UX""> ,۠BNoa `AP[I٤^E"_aJְFzU u=ru($LDx=K;bffamyTGP&qDl(wٜGGY>%DQ*W3ʇmX KEPԢO977( ?w֏ ^`3+HpEE?O&& MLS=!kP ǺmNi-)=!(Ihq$>=A  "_3֤+anYWN='@HwKZ]3䆦5,mtQǨ!WYԶ;K YY'r@M j~8&fKܼq:8RP\U>An毲hHz*gոrYbۻ%eJW 졺AM3d Sv/|B6ANk)@-}[S}U< |ʄ)'\t Py t3uQ{Ɐ 9L^QMCJ^N5- M u)zr9`A^1y%4,S_!kP &™A A Q#u;fF.!kP[]p6LՁE.5%/YXvu]aߊA k e`DP1y@v@5aHfWa! p,3VjhPLO"ߜb c|!kP2?aGh;f&KtwY.THG5Ŭ d%+6%驧"=DuG  a>NEoWQ:yT, # 9baF|8Ua|{tB BIP q W*Y?wd "> PG@3r)28c rW?XJ &kYW*ֽICv=gC\+yWvEŔ7Jp1F騮\K-a9#3Ac2jcޙ,ARkE%hHOJ_lEo>Xi]ze-M j"^1MP}oNABsP7#Qh7A]Rķå& \@XX7TL U!˛ &_jB|Me_VrpM !j²KKPLR aݚ@%d+B^[A ĘX_(z@~fOź+ǎmA1Ř Vk#u;ސ ˪:_)`+$L3hEd~Xlv@kUn#i i۽Cm3rcYUgU_ ,XXas;X=ď ; ǧb2v. j+ eh@ea(Jry( CGClA\VGɎ_mA+Z:4Z]A+)“QfC =fg!/A?ˈW_a'B~hsXsc$?C?5 Z jP"Nk]+W_Boa*`; O[VM+\]wX(Y_GrZw r<(Yò\ZoEvJְ.mMСvk7au~u$'b[7#~D1}}F:+oĕ {I+ 3a;"g}aQ۹eAGvEu&H Pf@e%m! >9d ]VY^DAF~AMxڍ̅ɤ{d Pzl(y!ʘnKmآOQC L|@5S Jְņtw+H=ںY>l>SG'?PRJ";j2uGwcg;"mw{ݥWetur!.7(P#v (6 r$P՚5(|4N227[)ȉY)e':~3vEݭ,~\eQ&ZU/ rGUPJYcrƣM__y y ')yivF~!kPǮզvJ% dR$ -VJ^?m\X!Nj[%kX-gW_a^N͹u+sIXm V d UYuDv1F /C؆^;PX:SN&iF.!/@ʹv?slJaf4AO d ʪW^>ǿ(´zARȻ -wOlAwY2hs655B֠r޻eY UWJ+rA7‚U ՈB zAc{_AucuW!G#n=&6e3嫮'D^P`6" PMW2"H`C|+YrVWvj Dbjne (HI=%kXupךs 5(  y/HN AY@*  RH>W% P?_PE-=(_vr zl @4 8jվAa3vKRRgUW#׏0qbG!]97Y+LX"*v3bW9MhLijP 9 _JixyQDAcPG1D= _%q&AP⬿Ƭ]!Dmx*I9 DY)=3vg( NlpƓi•>Jְ]]|;-Cz1J=a"oR߾XhmS@_W[e6|=R6nqO<ZCd5IՒ 7wX+ܭd >bb[G/u͈mICy+$'P=> B֠6u'qx@:S#ȍKR{# AYڮxO\s9yf^nfJ$)@@8R#JI][@Kk[] /Ⱦˆڑȯ#'FIp&eFp4ƋBrHđzAJ㨭qec:*iA)Ao^.w66q.82s٠9!=2'È\Sq y ƾVV>6({{.P}tE.$'ijp,$ELy@le!gK>|H" r/QYvҠ Jְl_6Dں; ;-󎟪Ẅ́_'(@ > 2 _iDN(Y[Sӟ\E}'z!A9j初JְZDiT5VCq#v<5N d JZ+e ؃!P Ldž4H -d ʥ]B܃]AX̒oK>Api}=zl# eQ4 V"+ܠ,Q|+^!LnK pm K?(_qܕz ӧ!|OmLmVpkjOp8"w1!ϡ2h\>Nv5, =m'@|nO;ūU'rݖx wB֠ڜ2T"^'?c URW L ^ >  >C{B4mN4,xO8>5((c^׵ʕQo&[ɋϲiŇ͸ԴVMd!$C]%rB{|B֠~_rqf~pw | >r LJavS%ȑDOwnA\Rw-*d=Eք4YԳj$7YM<4Kd= o%ur*Povsr>xe㭜ׅ B^.Zzn5NJm[YߑG62hӛ 5O d anS]\yqGL@X6N Lڜw?JְZŜ>0/~:sٓX~) 1^vw{%AN9v<@Zl!QWu;,!%'H7Yu_[7Hg\UJQOZSCyѮ%/GxQDd*e.x=Q+"G!F~!kP Zug]FeGB'VHnaQ&Vגpj@!/Yq_@X$zIC>Jְ,׵N~gWdC+D!D˛>Mo Pdw(Ybz}SKdT(ǤbGU,z!A]US+5(ΘZ֞k"G .u֛Pd ۭ?Uл -#v ƭgۊ庮_)åiy֘`M4!R9v/~(#Cո|p^eZ1͹-v>aR:`56^Ye-t]QFF;! N_%kXv?Ǟ{&ޮdEhžgC!' eDZ2A%DJnN@:{שb@ ~b@pPh_!2 9ɯPvQORe ꭐ.#P.,.(#S9PD!zuB=:t !-#8)-gn6򤬃 ȜBk |AR8Qj~SIihg]ꫬ'ڳ/# qY5o`!և>4-QvNyYgׯT d 2٫!i+IX<='\VĨl"/3w?Ty[WTaT]O=vaqP'D=CCv찻@YCħ[5̶&$Zd ˟__P5̡Y[5(9&@vFr‡X;p}٥P7[u=ă,9" 6=ԉ|8rW[,26|)cFJV\G;/fpu@]ӂx Jfb~6 rWYuNTRE ea.r !&(yAY5*#SQۢ7!ȳBQaEޝ@[4#1\imi%/XLow0O# B֠WBE}3eVf~qC{e3!3xs좔RFTQ_f^PNEdd=!}3.'5(֪CAZ}J!2?Kat_\`B<[U5({F~f;/県ğ r~YQ^}@F!Cze5׋8/5=T!3WYq&oVUed^MLSYC6 M=r&-9(oH㌳5("p.^f!MALJ~䒤" ,%I0OIzB]v-!smX\aўm9mt3rvn6pT!l,五R 0G% #u;Xonݕ@X$, rN&WֽV=,%nA5(7..eDqŻ$,C-#-;ES9D'妌l OW#m[;#zȗ ȡ|8ڱi[A۵JEiT A{aeSZ͌J^̤ k2VWՂWpE}j܃ݯ|.(#' yAA ^mB^Hf5@ zfW>-~Ůe`]DPFb4#$!kPt6jtwDeDeƥOn5(V(ig9Y- YbCy-#~7"~hL'la9J{j`g.O2:Yƚ5J9iJְ7bvWB+7(ˑUȤd >ڏʣ :`ˊ7T UMA*K"|q m\ JުTTVnpÙ-A[VgR[Y2uʨG8Gm ˏ?O-+TM/y؁5,o+׾ 92Š =cu?0bρ5,g *yaD] Xf 'Pւ!WMwgBJT*~2{rG$8 d^yʕ lkwa>j; 9T wQt" :U귋(kdO9eb&e\]PF3oS@Mėx`V*2rAn*Yâj7{^t@vr5,cK/m|0^}ȱ$ړ.#{]a1%UDg.+W9UE Uc HqI+ _Wo5,1F"ߢʨyGԹ.u:1 nRyj=r LJXj:nAX>VW񓑡#!kP;}Cli'$,c-#{E%%^GqW. u|56=._";4! !3AADKPA]=iEC!kP6=/d61- Ro'*Hv5T7t Su>ݓLi DŽ!̽6=ipSr@X@Z5nF>'!kPyDRRSF^] qJְj@DGl 굺 Pٖ 5ʊJ^wcF ,jww"KLMEnE*YrM`yR[ |h3TFoj'܊k5(f *#. 9-d K'e Z=9vmKB֠HroJiqsTYOB֠X!x/7WTW++(䦽Uֻ((U]@W)_k%\PaO+cgJVpÌ+ "it3B^ro'HeLs f۬r)rfx d]Zz2Xc ;}pC{eP!.f.rNV^(|jVc_"iԍ-HB֠D| iO>c+t5(B[!+Gf;8={ 5Dy*,f B^>sR7KUs\‘z&c}a#?cCNV⑕˂ÛA1?:x'«2fQ6 ]2t+B֠.H-u%ڼTdnV< YrW^ޮ\;>HwWH+L:ע>]g POW'C,h?Sm^uAF9\""xDml"%> sБ@xJְH*8+f`95UWX5,J%He00 eL̊3Mv("2Q-Jގx}mwunQXt1 /d 5}J؍V&ȢN[Ⱥz{ɩGJ^Ah(coXOgoz\=foƜzGL8W?&}ѥo9 vM̔Q7g< H@8g~e͊*5ݙ_eT]O5[oKg6y^rS=qD^!kPT;pA;QtrjPoqg3jfUȹ7ҿ k[@Z8) R|7 WlOP> $W4˄]m퀼l !3(ҀjAB^AYH_xe .奵CD2:^튭=%CYߊ<_\rv:|i.(:#=*+aƾVV*aMATAHӄ.,b@o2N |_"_HYʎ/{ی.׎W/܀|5>) ,gf Iůa*WF Y; +FňTo5' +F?`Ԁ $,#{k;vs@¤A1~o/0B7e-Cu=1m~EaҠ,N/vkgHX='߱NVz*=Aψ=$̞bZЎ )-#:<*bRXzu&b."~+K $-NN=)?IC> x8Akx؀I4(}w--8œuDr{w )Fʤa {-cjTA u#%ee 1 !Pe7 )`4yp rW&o1bيLbvaV*SSvIܙ:IRq'nHg ]Z)uϺxIX&BGv"TB P C$+qOԨLˆkl_n,7,Slݷ2iX8ص#5J=~찃Ii9.-ތՏV*Zc/$,ԭ]3MGʴ] &t[9)+Cd{ܥ\ Cd(*`aqoeҰ6^?-/(سS!ehĐVmUPe -sQY$C-s >ϑ2Tm.8E0[j j=ЮpR& '? g~})oe`B,μbѓ0iPZ|_lO(txOvtQy͒uRׂʤa 6K볂u=fxFۮu3pz[Y``!`,Բ}5 R& ˢs/bN@>2w|x5A܏ I~Mݬsھ,nEŜ'U+* $YŹωy&(A~^fVVrBf6~,dc(>Nm %V#hjQW&als3yIfVc3ʁ }R?U.[݀ff z2Cu=$/Sۂ/ĤL8ނu6TRԡF'RV.J\'eR[8 "b;%i7RHW^Mş0eqśA~_2iXwvGvƩO%ZIYA.H >`RV*H4o-߱ڛI6| En Yu9t]ΘʤaqV>t<*FBPс,#MP# && K9!Q)MYSL$)iG􊀔Ir,*XsIM&tJTF'ȶ 5u$L(AL&y;|I;SHq?68IâhԉBPJTH&{qjqW[PahoGp3+ K$Sga : 3*塬ZV%8s Z7oep(̕l"aҠXg_aQ_z{MJֵ85} $U؛ ٠I{Y?auaUu\8WHql0o UVVo]an:& SawAYr$l?i{,;0iPv±K\3:йVI /LKQasFbQQ~2{~x7A~$v`K)eWQnM.)Ke./5`'%)+_ށIY_ԗckn݌V/*eYK21 &ps8 SuT'H: r\ X"aj϶l&ML  ,9Sp=#$s/NR& a%i2j Ii[ uAb.魬 U Fr@⭾UK䋔I{OSY‹;}xQNb:#A憄y$EW+Û+GJO`8 0dEai@8)=VT0e++oPrUB@k&)$~|v}L Ю\<դ-E?JV߃vLݎU+YW;)m Yg!$)ΝIvlK_l,PE8Ap ݊Aʴl=? e۽eu Ef;ahNʤaQ5WmZ^k%Ij:_y :G #eҰ؇]6-P)65z)GqzNGP&wJ&x ݔA>]N?gOoej~Rj}CmٜW %W;Qd'VV@I jcqw׿I}I@MSʌ=&%&~FeҰ{xu!7ߢBEe+;ؗ"4}&)帟H4(,J)fQZ%9S&p0[)վ(<d]+W5]3R@I 27`r"' IMC4+QY "⭒Y[扄I;Mr<<*qĹ$uSY hzW;lYb o'ޏ*͈+ su@tB=YOccSۓDfH: pQt+vU4(G#ޟat.gԗB]Y@,bx faeQƵƓC2Ɨ~7^ S'32YiCS y +4 UDuPn‚K?`cv))+"5 к~q YG7ǖ }lC(v(Nq{Q urnz7v!nwK0v@Y6-\ ¼#no*|{:9dj3>3.9 3tH|||eFr֢ߝ-Ty,XCE%bQ-qq]q[rA a 7F=/'oPf5˹IY!dgpd_s j"OBktL+Z4-3n_Fa^nkn{[ b4XB}dyPf54 N]z>6F#ԩ@(n^`8 PSkt |*)aL]O5nm3j}b۽x+S'6k\j8qMSeVcsocQ2oWZ턐B\0[!Vd;t ʬf C_>}p]P@V;9 0ԮB<9,$[=ぇ3 aFw8 2o\a[^`Qٜ,,X+bD}B_2Yn7xC}knN@Y8=AQ/ K (B<0?'na@v .bQ AM՟5В5N!;f5i؅4Ex!Ey#u;VSӌ tK*SǷK#> YVe5цR: Տ2/^QM͟ rP-^/}Og|OG0: "=([˩K_A,QlVzE ;yAY:UèK{R ʃ8#msw}xVOYw)1s ?Ѫi띈V_Ҋ9z݊eVl^XcBH$!D~yh#.> 2YAl" ?S>?B R֕b QVE\1* \YGt>^i1CP- /)[ {࣬K(8u[et"Jo fM+0އjsC}#Pq1vR̈́}tCE.ˆQ3?%)EEéŦ0(V`׃hcԌ] Ud۵F,c +RM bB 23D1AdXby@$zq5>;pRxneDnN²F ԇyYbi!I:w#O عNPVDmci@몒 pfmI)PE kأRkR'FGL: #x6oJˇ`A,6lzyjiEAY6TWè%5أԠKOxޭi>Χo') LJ81̤uJ}3 j >[ZUo[\ *|5hRgeV?tT{+1<ݍݷ"k/Wi9f5JAzOnaP]BOi*znsƮ=eV(kv'M7:(2{ P~uc ("LM\py) /ïs.8ʨ7ZdY!?N+G@Ճ aX]O5s8 Iob +61('?@(cZWBaV{RY嫖 ҙF3-Ĺe=@4" Ř>~b&skIY Eэќ@(v߅B{ip%ET3v0 ,¬Fuj6Fy@n'aV=E8v_FzV`yp @XXT8A?v48(%l.k]!Q;.a'2oi׺SlzWA -jw)PV% *'e'H_NxpK#uK 閒2YTKW9IXZ 07 u?7`!ww$Fb #v`6T?F37; ⹔Ya ц8FEaᄊ%3⹧G$v]Lh2oCtf*1*QoD#,둢0 u7 VRVE1 &4A A|L8 I ƨLnEZ@,&6}IY7sY]Ⱥj6 ͈K10QV~[Pў~Zq9AP]En'eݳʬf9t:%] ] 4ˀ_^^j%}Y͢phaEHw<"::9gQf5>MHw:"uwjIMknQ^qUnoW$,GQ5=qk>@(KLwE0#l oi0QvnT?iD" zz C wK Y.IXybH\XtɊ-9QEUX-2 0g.CzOqCK! }ߨ;+9ʬfAUoy+蝼u<%. w@4L.%a-QS7ܙ~sP*r'G/PHa탓 ^m`EeB6(2h^5߶Y52/d.G/c3+G~(@"S0Q_rߕ9˸2WTzi&t؛2=|Q^ݫ`Tu2YlT־_ qf+("[PVBmcT#WY$j#D)wsLhۙʼm]ノ1 +^AJ]2oWA-3[kQxEn{l))Nԭ5ʬf"*ڛ84+2-tL;Y".pj nm]e.TP| ނگUL"ƨC8.¼c. DPt|\T5Mӌh怑Zqs0@]JʼqލS22vNygؽX.-63d^Xm.bQgBe o! -r3F61Dnzd y*h &*ij?nvTe2`7^ 7^lˠzZ멱#vuؘyuvjuTW(#Ɋ+ bT}N;tj-\[[>-)̈́MjՔyťA"lCZOn]$j&yox#Fe.yD[6ʙ :j-l#fPE USX3 &o/;S[Y[eVDk}AVy.) z"0QN_T_JdUSNY YvHNޫ)(N챗2}&tB{T‡GCRgW7]¬FTV۽Rc+̍[kSˊ]bCK3#v7(SPev_ێ6_å*Ԇ<2e"be;IOv`$ Lc.+kɟ +|! Ⱥjpč͌>aC'$PC>y[*Fʚ%2 %KpOL/elӢz8"@3=uJE[3=F=q0V'h7̬r*uՌ7P,QB[1ʡŽQec1F챚̊%I!D5!G)AYBw\1-u?ʸvn=fW}ܒ \¸Jاݔ*6a+ӕ3^..ɺP q4g;͑md'omPݴCf z(^ /K*<(2H錸ʀU1}u]".?|g\vQ)Iݕlec|Mv#AŮbUQ) _40!CmRЀP#QaCYim>~OꐛrbG׌SBvtQqF: d5Uț1.7#rۥF/(.u3Ok̶]ЄFhbDSiR2BЯBe fXYT whV ѺZX˔do5`VP% u)zKVAP vVrYAVq2AYD2naQ&H]JNZ\~¨#bT]_Axk."'!rׂ 9QʨDzh%7Z94uʁav~bg6?mǶxBW?4|P2gٿlT@Yg"_@`PÄ|xey@ބ _R/8j#(#s2gq6c[Aɜݖ3{3ЃL@ɜ1g2?GKEPE@%4IcAXV5Zy/9n /iXltQXX+rP2V F]"ΪBFbpX5#JƊa XbpX -d+VebUxhB-ƬbhBHvq/Y 9R/h\8aC? Dv CzƮ5c^hQ5d`e %uA Jo. b/ vnPfT@}@1@_!@1@_!qLwq0@YdS?#v!bu"6E e2&@ Wj*'߾BNs0B<3dLȩ`|pe5FH3EĢnp+A1Es!@X ERB~cGӀ ¨]$q[Ҍ,X]OB&cX׺+}:#7|^R"Qc(MTFU[! =UWи%yn9y)dNrZXNshX-O)&<l~Fϑ́c6Lhڿ.e\ Oi7JKB #}W+|);"Fm@؋2(1F  #}Ħł$.a-db'j QE])ܡ̪ED!!?Զam'+?3E6c}?)v[B4Zu3"C$W!u+~5Zbd 52"ѾJhWWRձWRZ/q3BFv% D{%4ExPؒ]PF=字/SUYRE %4Ex\i¨T&/ =r<+C;cnqFD]NB3ĉxշ&sPF=laRJ!KZ55P2B/B_d_dh:%֗2,BE~XFދbhm%3%Cԏ}"*hH[FvヤQeF~Z3`ŮeA]DRB'ġ8(sQ&!*-m Qw<= ªÍV{X1Vhf,Vs X]O1}qu[sItv0,!-~8475¨ h0j\ Xc;,X]!`]DPBm*ԡg>אv?l(:e/, Ű1 d. ,AcJ=NՒ |¨"?!*$(x:\!Ó<ĕƍ߂ax O,*Qq,eQ(ˢ|C(%6!fӇ:31Im(N=N)5?C &aCj8{V ,~2Xwz4A>5gAYZ1P;qGe^b^b>߁ D 7D{%GҠz,NXeZnGoRd#׫L&kpP/e d]PBP-=Qş^oF09~@'r͛ S]㐋T$#H|PSJ+6Mm4+ecyh,Ns"U vKys.'(J /:PF=ufk&jT3242.XZ9VkP5)Wh?!n XPqh[s3(n]E{/m* !dJF(Gȇ,BA1B@ی M. vePF=C,ҫ62eSJZ~}0.=dfX;Bf'3vh3nB!\i2;ΜR(w6-0( #GT'37}J ;<_})qq bJcRIXnP }BƊb.AE$I] ;oޜyܾˆzK@XF\BĥnnJz,W_V*U2wz)NE$ԙDi ¨J)jvQLBࡽ9B <8,LVڡF02S"mDRPE@x{.'N7ڐ4~ƥ>m rRjU"6LLp[IWQaC Z\¸8"vnCqHBὉbB"(Ժ>r<+ ovdk7D{%T'~&\IQ㔇vVgo,V_:@` ,g9 Bƒ|a`]DPB{)欷>¯sFD-hZוإA̻m8*,t,8*@# |u-O QiR6oio 1Fcȑ>l-05I[O$|Eއ+~qo@4(B8ԙEy u(LSab/f~AbV11Cf}E<1QQwhIâW:xWHM e%Ԍ=@YA# C9SihwR?{VC; 졺FfMӌ~+><~+ƴMC{1ϒ[ (L]lJwQ3&ME0rFs/i|ؕ85D;@ε?ӖojnFֱA6V¬ӳb *2n95ɟ!|Ibʬgy *'u)eP]D~-uhphejz^8iF:e:d ߃=UD/1S?(e3I#W[rGYʊ-SAY٪l[3rGY[ATiz @0iPFYcIzB(ǘc=t!0E;nH=09SȔB^>'[ ֧y0iPV}KtsU2]J랐9>կDgw|)U-+ZI}R([QX58g/+V`E{9m9;c5,E02CO=F(LˏwϮ*?\ϟaF,a^krtG4,Oӻ9jP ėc LQy!*DŇ!44-n;mw2iXޛZgD+&ML'FO",`b)=qٙ@Q `CeA4 3;='e(L !߅7+m(3R ̲{N7hFw[P( Wd!R*@"NV*H!A ѦMvDZA´B09uqQԶy*@LϞYG?@wh:\Q& L̛t} Y\=e+/=QV*\׈.J˭@4(A;0f&^VP?Py 8Ea^kii#i20B սe^peqf% |NsFv P& 3~-ߒ\q9ù\Ib6VM5 %s.B7z8ӂδnda@X?7#K~ʤa¦ͩ By̓gciAv@YpKqyPE1Q-֗ Q+EϢaB@YE]1VpE'& __2u#`E2mknsr}orA[Q@3@ ﱫ@ENu_GYʎ/j"|U~/֕.i,^ pT& jr;W}DħQb (oz\Qe˅ nf-E 8"?@`k킲.ʛ=+ \Q5Jix ?@YQ(zʒP;IâጄcYQaGY$j1ȂGsB"¤A1/ηwn2BU|Z¼ѡY6-ʤaٜ:LVB1ʂH8y [ʤa/ y-7[7qSNM2m%2thF(`c=>< LY%WuPUGyF_Co;@4(ϧ?W`l|AX g?LJ6%bd µ-rJ}~ս{ XUXHeEc?a<Շ߫;sj%´5e p#BԞv(ˀ2=9YAsڲz[PK ŨK|d- eSj;{=[52{~h6F[g( rG4,`UMɰz0TB(Тmк!F9j;cDeҰxjn#ݔGYB 4t3(Ӓux*Xw; ( "5{g1;.ʊN7eE"3w[/@YB" w0iP)(m/WaZЛYUUāB T Cu=ŘN 9I97T:O7@\VjRhPu[ptk*Wq5"ӧr Wfn5LPE1LÈ ¤AAzx; ;2A VԎkeŪb ]cu?zoT$??w+c2z;J` 7xBeP% tΪq"3#Sl@Qx`3JL 2Z]2?"w҃.ˆ+n>jeҰȗ:cBPOtԍ߶G>ueҰo#RPUТ "кbڿMM,L_6fP&8/VQDB&PB5Ǩ?GwnG(%CnA.9 ~'HG(+a'lB6EE(G5>eҰz??ʮެp%S_& (ͪFŠf#;1̜%&^0"爃0iPtX!݊g%^8#nAE="aҠ?V#t01Ss+0-SFn:2E{-Uf E0S[2-;=ƯJ*gqV2DPj®[e9 ^qz(祥0iPv}}XNg[ZEp"=Irݞf>yڿ_yq¤AehNdrՂj\E.-.War 9S%pu@icMA;s Ljg*=nÍaij"UCO LKK)Ǥ#=gLaBVV?~+8㤽˗U CAY(U`ɣI 2-ly %䦤0b ."o?ʤaQ)>w߻"|nʊvu_|A,!$M Z2iX9z\5N<~pW嵝 tv1xP顽yMqȥmꝭG̑? սNvnqY"z=,."u3r(śsu^P& = 'nǩF9cBoΘoxCm A]f,Ze!p]D7p+2iXV[~~WHӛ;9*cB6En>Lͼ6RȠ!3IE]jqPEӘ[aڶ4v] #h'+@Hr8b17/+DPH͏!/BL{N\c¹)? W^p[dauEڻԕyEar*B78ƱA5c%.0=,V"4=+â .BQ:sBSo/!N& i(;QCsʴTgjUFWuX5C;!,b%‹U2iX^ָuݕ6B*sq'~7qQYC:SwH@4,9muVGY U8 hQaҡ?u?uͱx!ʂvNvrEv0-W^ev$1jτ@6~3Ix(s"1bu Lծ`u,E,WXy?,oˎ _) FE"r@2r [ufkd}/c` * F ga;R 'WH~bW5;;f0}2Šٷ F0uMsF>M¼;3v&/?8~FN^GNeְV$xuwV8XJ#r(_uJS]Ym`${swo/TK[<#%aPDO5=*|{)e8w} bςݻ =ت1w[ F.ը]vu]o v)׊Sh2<]VTvG(K&|Yrq-r("jaSypFȓ /Dh&N6 g~Pf 0x)6tٽpĩM׈- 2kXFC{o[yE} _d1uEJw\#E;]zh4-S' KXcd'[o2­^]rg:$,aѦy@!a֠x-?gJ4#C{1vȧI(L]/RTYaH#G%eְhͦRxA5(F|%gN&m <] +zDeFvpzhO4FvG;!;@5(?Zں> Um[ i>EM0bQ޶-rX(eauN-mo`ny(Q7HRքv#޾34;I5(6Z(tYQE~pT%aT݄O=f\7#;q/eְ(V# =zɈ"Sl/ExNq.FryPfv}*R/tE=pU+s'a^SYG4Ji5+ȇh5F ̷RY%9Gn 5uBq IIQi-4ňi&Z; cdP/ǼS(uJqS'SM02Qw38x@|IHy;p_ a WaLO2ʟ~Ca֠ʝQtÆQVYH—C\SZ$?I K]%mqٮY"6O M?G;_~^~\?)bԥMζ 2kX6V[n:d=+aM}Ⱥ !F]ܴi;1 ¼b)YQ-9Risi5A%Lu@X8R7èӖz`$eְ_2A.Z‡-Fo<7mbI|-=;a֠lo">K‘F߆{%eְnNӗNTNg h[NEq+R-GnB8%χUXAD /eQ^zA2Id}NlԿf Y"_ .:!S8-Ds-"&-jc;@5( ش_#݋G<֋-xVM Uc,݄;@5(^l[ +^  ȑ& !#B|1A5(!=jAwR*S":}xAXW7ţ^:a]Y?tat|h5FoRByYMFËnތv В47 3Jí5BIv#J0/>QD'ݩ~ˊ⯺YPaОj4Kv vgܒyg?9i&F%o=.5tVOgRc2kX i6x]B04^2o_կTi>NF'}'a^#Z+N)YI>㳖9>+ LJv4p*cSm Y"JT*˘! +9[l?.(&~)o#av f-c'M܃9itpJXQ"fVH\z\aHN5vh\=RK[=T!r7CiBbʬa Q=z%yp!)]~ ?.  \ \7Qhl+P55g}}9 y-ʙPܥ'`Fna֠:NsJu}8-ԫ$yKQyc_,*#\g)h:Fn 7lS(e_Ct*qڨ2|FNm,la^N Oٟ [P@<| %LJm:ȯK5,Rlkա0RhijFN/u;Rf ˖B͙|Lj w`IYA#p".e^2*۬"%M6(K&&thFNYO(W<#'9Ru۬ = OOlIȍ)  )o_e!.T n_|PL6I m$[;ɕGm~#Oz$;%5)b+SB !lpk) 79 YMgٶlaОlYbBk+>_ \r:BKY \7Q- =qj-~=lqrQxE)dlRRf K\Rj,0vҩ Ff }F>:yA=my!+/턝|/@(fN u҈V3w+IB7B\>' ̋7>xq"M0S}Z%Pf UF_z&v/eОh ޴)o&¬AˆI"<շH#u;#<4q36 |y>9$ LJ>NW K5,^RR#/_p @5(„CZ"T[Pցɖ/_.MwoSwoq? Lڥ"v?HY"5zhԖG)`N(ϷOmqlE9a;!LM۬MY< ,a@9 yZ1_g$mJbdْ/)Teְƫ=*uu%Y]3r(k &r%ýqa֠1.ŇBXg2⬨"[ Su>:neF7eְ`6+=8_@K;[PaꚚ,9 R-1ysb}p+Fuoj7-TE-v||nˆQ6= +U0sǣĨPIlt¬AZi*ċ+t  j¿xbiuȁhOj mA/eְS'bPHaDxVor倵w/efQD=P!@5(FJZ\?}ҶI5,VGizu{'%7LX;%)+"6[ֿ<>ȩ ˗.}%aq5]0MG4a֠x|6#>OQ@A[a߇]Wa֠{ۻQE#SSu >->]ڜ4Cf '}W+xhSO;㊒ ,󬭧{Z܇?)2< tnSˈKH 1ݮϚ;%v (DA}4env{iQ'7f_ʬa1*FbM2pA7m!Fa"xN?ylnBc9݈F2kX6{?O"1"\hz)+ T)I ,Pf Fh%kʘ?\7ˊ:_)`1 NٸHk}J)PK8p<g*&/6 $ Ktw4Pvei8u`$ \Vm2/D\P ^PS30o I &%iX+=Y¾7 pweRM 1j/A/7II `*B(Iɩa/4(?ZVni0Il!}܁V.Ã{1%A&Xq$ iI7b)/s:nfM0.A԰tA9WKnF ?oQiK*Tp[RX|e]&hRE )"#6VTaWHZ!Su>G$ مr_~II=?>$ewq*vǞV\!'%pu@jo3fL&!m-*su R2e:Omt^i:Nu]5$ ؖEH?l$+wqw"nRq*"NIH+D/2 8WI=V7è_%-?Qvkˏ [}.%em ͔]LMIIK֓SV37v}%uBʼi ̛m|wKI`w{JccDq7 { )s&|}HBZxqZ>[Es`@WT*T84C/]ʼ& o'AYR#Lž8 $)BZ7#Ė'FD{MV.8-72,5 #Ҕ3u 4+ƨz>IJҰhr.Ji:uDkxD>Z^$$ joZi-DIBToJ} ;Ӓp/LTB꺃NJҰXBURfM0OYKJҰ|:N+֝ $ imsI1 }%/tSRfM02 57ա6! ‹ gj' _՜(oMfh?)i(*SVE5V!_f^ 0/5NB.0/^Ha$N̑Fu9goQky۠l T9ƨW$ B er[yĨ%5`JwࣲrgXB*I?@]5*wqZmXqݿ6]1rۖh7)I3M=eo*SqePSݍ}IH?R p$;ZKHWjQgex'aHN1>e _%iXS*]\?/Ci_e m <'l\n5yRI+'Lw`I¼=ʩt]"%%iXza;;zR -mxX/+v1BH;;- vQ_ÚEJHA#D>kS/'NHR--2#.ךCb5b{[%) I|2E2GŸu64,:cub)/^ȓ2onqA9!!KLn$̞QeԂO!҉騯qׯ23b N&,`bTMAn&QnZ(6?N Y,u,qIN4,QN=ޚ") q wWIHeR /Ί)8}[y3u< u؆UҖy^_efk`7JR WN*KI=_ĨЂ~uoRCJoV- G~G0L0ֽ*Rm<89؇ZoIIZm|@垓K>a*i]ElAfq|${x'HGh+ݭ>JDt{Nfvn[ɤFXYX='#aW$$!1='nlMBZ$)ckLBrΗ櫾`IXW7TA7v}S` 6&6e$57aZ+R7 _%iX"(.>8B:k:0.) c ;m5_%-f1/fOf=x)jOfwUɱ\CyauGS!|/BOD9KCD]"V^ޤ,!+Eg++ a\YaNVjɋ+7ТH]#nQ8ŻϲhgYh1J<ĈI( ΝӃ{1jEOI drZKts =cuO|ˊ:_)`+WpEE:Z=}6D.R5r_p-井EԎ e԰\*+:FP;Vsn윋OmbcdǤ^ >[(:umF'*VU\Qf#u]nU@5(X!SB[w[aE(M8SV*BЊ]mBW얓A1^0F .ϴa%uܗǵ|UtfDnaЦ1F5h{\qjVhPv;35e5. lem&aeWl! , bd.3{+K۱[^6[9bzC;cgoe1:FNrO8QF iB~l*X}fŐ_ m _:NlYpb>ď ϟ Ś 6r-q^B8~fR`DT@XZ0s2P[%PF R޷`Ev[DzNvb[7!K0jPԩ&E1Lae*=}"٩L%ԀejȞad@!.9w@5(_ٟ 6*8+xK+Bm6cd.!!  K%6oSLjշ8 +YYEa͆U“5i^ACcUZ¨A RkɩL@~M0.R}1B:uR3GvNb_#(wa~6t|ٟRiݖXDPM(b2 uķY5aԠh wQėyf0oBQ 0ZgaԠF8eOlm+hu^qmAmVcT-.d%}d-2z!F]g dܚs~:!n<]?bne ^w7/: #/ەG&B @X+m+uVV*VX `?#'3^ܱ¨AFI-TJ:c-,!6r2 iE@5,ҊͫPc+kR:ve\=#CaBV@5,vvŨKom~Qb}xx?xUˁÀ5(B!:-[¼.!(zV\ !Gs +=?qc) ̞ګ5[( ¿]܂x UJ/dx}axU {zbz뀺76c QâFp+*[B }࣬U !t (K@4qfjPFMvU;eA^A=VS󩟐ޏ2jX]]hwj+NqduiLPmcm" @6Pʀ.lt%~Eָ-FlS)p)F JpFR*=LyD>l a\WW~K%ҪkΜyC݌0jPN }bﲰBG\Ie DfNM;q; ʨạ )B@7PfC0jo֐%$J} _xZ,Z3ŨK\Qr|;\)^[U-lelVeBna)l=# xʸyv}cr|LCPhjZܩ¨AA˾|%\+-y!FO , X*4#[e_ƫyGI43`Mo,Mԓ+= PF w~7sF\Q? 6؉[?WԖ^gazAZ`Nl/!/|߷@Ӂ0|(Z˩B|(-3¨A){Lڍ8@Xʄ)6#a* bj@aL=/ٷf[5(;DZsء=xƾ@9;QS70 G0A9Rè G:\ʨaqHM>9PmBcn _&HI,-QfC0^ԡ1u1]0&.K!>p(+?~:N.9W ¨Aji;eFs 3g:qj8^D^.=hQV 9 U Ղ:e\=#K#PF qX`O !ˊ}Vmv+\Fvx#UJ@YZ1TgΜ[5(N|Y6 @/@}/W8PƥkZ#SsW0.@ZXӺ-- +zǾ ==/ۊ2jX~3^:UCmݔ{++CI2D?4[Y CJP?}ڷ; ice԰(̏ JWR; }u^~b%^m/QV} Ln5~BU+9pC1RśVF Kr'WfxwbṕyCʱTOmN(T.H3YŊ4kO I{Sќz^|] y'qCXץ(*@XJ  U ЈLa(oC9͹~hp5pWGS1͹ﰦ&PF .7㌻|ZJVP+[9=9ۺ'MnaԠ-;o"#ȗ||Vè)G>@ .2jX/cRvO ,@C &6F67? AQE׊j-)f;{+mq!VX?@AUb!{积@"vDm+$h]1< Bf&8C󿢠"{j*ܷzI5LT5!,ZnҋדI?5{CIuU)`EcuLHu>F;0hmHT !gٷ6y3Q6ٴ ݔ!(6&>!\,a! >)UM7 ,ɮkԩ C׊)UB-%/Wz8$" =:$e6q'(IhFdWɛhJ)eÖsJ7[-"bt`cCCRT,"ڷS1iO!QVqɃ\Tԋjrӯ2{SZi{S!Q>&Ors'Rrt񸯒,|Zq^?"|é.)nP?ژ&B}4u=AjM%mKJ߫+GP8}JZcr#5rGW7|zP>!%ܨ'M*>P~A_;(;77I>ҾʇbSYC_xݷ~-FK]KL 灱@Y h%(QN=ٷ7Uٴ-ھvgݽj.P^u99Pm.'/%sܻ%3#n'J]{ðV@Y ]`IJSe,JYdn1͒T E=6 2 s:ybe^lL!lKrFPc;Oel] XP d5ʜLPF{%DC<@5N ̜ژ&B<0piz5G?0u/7N=. ܙAս/\Fq ^kNR~,}Z[W";A?WKJ:C>Ajt&=BO Xz題i7~@I+uCPG45$EmN_"wԃ(۬]q@R>k+\G3G"vMc?=<}aІ3AUZ4eg'FoLJ5֏'u7Poun1M`GO/ɺwTeh'\Fqiu<l6[4pg١ iJm47(YͲ*`'j6(K"UIT]108 R0uTD; #A9AݡF~,,(gyꈪr}WYAׂ\U#/Yt‰bxWS|sgxFI}o%oSXp^_ҏu_eQƵF6JV3)%u7ՠy5܋~E Qo,֧E\2(EDaj@YAMP7 9``$>wj jm_!Oǁ8;vv>A?@1MP_u lU渭i6cxc(vu GL8y)jU4$c'5Ig2M; @ȋTTZe3.bxT!:3uDN [AȋLJƔTzYTdE뷦%@X^qTL*|KAj=_,'TıGuN!/Tў*cT{wkQI:$c4.IPrxijp@j2`Dph49¯c\9bt%)}_ @9RSIʚwǝ:Nʺ=v*DPT.̚ gQJRzxqiM~{Y bxp ̝Tg!k[\YkҢft&IP~jqE` \ {2d+$V { "~W'X J^fq7 ⇺շG& k(ďŽ@jr7뾬%CcWƝJVeU%ǯy{,AIjtk 9!ʒP t7uѷz@KXUa5{W.弲袮w/d(e)t]Q1u@jv8z@bP]>oԟz#}J^Eٓ{Ⱥj/w d]P1i=Q>V%~xU72⁒,bVn_Id E;a:eu D9yC JV(Kx/^r38"o,1Oe1QƺFRfM ul ݒ!N̉+hGk-^#4)d5;{Vj@XXJJg)G U}HsHO"aPIO8@țB2|2VewRAV:\a!h]Đzu1> CӀ< B qJpԷ0FZ ZA^ [ܝk?C"5r yZMz[}|N6{ 8q*d(YͲ%Ϯ#ߖދ_SY%YB a۷4/wK "u', )@j3mǚQ@?ñx{U@]BN'K늚ýA˪0_)`ecC1Q0F⤛ߴZv~]P!hQkmi7?? 7BK <4H1$*bCF!ҩ: AmIZP]PT)fmB06rݦ;t W:AyjqA\F9=AٌIem7 7h_Z!IhM Bmq@u[ /Kb{pR@M4!1xUQI=Aq*%:+*I r!!,dS?8cfפlmÑ4T v(o)w8:$^d ˦>v[kITu't"U-B֠k5jy[筙kJz?mvi [U[/ 'WU3IrM5_%dLج92&I%t kkTDqEþ_iW'$$6f ~-i=B4.L{]Av)keFB:A68T9A_I y;I-VG_%mw1(B'AdEn*@)͒LqL3PB֠I$5 ‡C{|5s}CC3 s!,|Z["}C%E]6K*;]H5(kʟ2$$Cze\U^˒e8~4VHGsu@j%UcLL䭵9eIL%×&d8bחJJSuC* 5,*Y_y3ۑVB@L=@>9e}yj6A7L8$k]ⁱǍ~aОeL̈́|UesK4K6C^5&CٵW]-r(FI8 2V?bC\Ik+E?Iӌ\ {@D{l'Caj̲E,E˦Bl:Su >$g4V8uU4:E6ޙ-E܄6ʛPDyՒ*+ԃP5P(d߾k&xxnÎ 4} gPd~Ӧ"GL#0u45#3u˄4![@sNʷZ:mǶip_g_%o-ě^֬{^~Vˆclw~JjNmq_%kX/oJe]"TYhGjPMAޡ@PL:Yzh?:"| V"&$_d Z~_iy#Cu=:S!M䵝1iͫBWa!kP*b([TĥyځxNdoREv܄qAdLXKYu!ʣdaR [{9l_m9kv: x G5,Ǜ㖓ަjcvDa]=D{ rĩSUc,5, ;mX'T''NS}S#(YÒma xod/F.$Q:Gu9*w|h{غXjztAfglQ/$Mθ 5 ڌ\$  Դ^LK03{{ϺOW>i^EM| ..J{-JmQ -aټʟoޔJŜ袮M-^Uޅ0dnR?īG (YÒnq/\@ZleўoK(l(y{T~_t!w'AlwAawl $3 v 5L6۶T>fW#W5(/}x%UQ )Qt5-aL xJ7ŧ5UJ>d\ҞqC!B֠l*kC=t"^R ,_LU= nާd/XAnRaԁklJ]'8@ 'zB*XDVJg?M=Ä%g*ʳln&\%Y- O/*rc3@X>U'#jBVMjޣB ,'O ~Ⱥԉi Y'!$'o;B7 "= fўnoӀ6BݥstP>j6m&([st5>I2_> 5vDڃŒZ;c+%j'1%f7{BM_L+;aQY&>X],5Ոp($~ncc0 F5,m\kd^%kXbVs'2ՉCyNh0&D =>vȡSuM6l &~jYI{}k+!kPַ۾݁CxF)9r{Оeq$iƮ<8aٔgVR;'|t{gB֠ФR*%C w= AكODyVdo  G vJDUsB~aQS6+W_Iʢ&o\IS= ->1^.7eN;aj>8M9MYiTϠ+A->.L d Ǚ=yUoW;C{3rLJLT=rW[ӋN;_ѫ/TFU*٫ŔJq jM.*Wl:J.d泜nueD}{uD)JB֠sC!IP6Fdf%kXϻ_mVWOTdE%տ ]'atB=!/D+k6]ZFf?U_%kXF9ժӶۃ*]e}ͺ\WɋY>r}P|TlMP5(B9Gc<MH\MO)'$O-n3yLdmOjֶ A^&i 6-/!<ȑ:_=ǵn2V%瓵'/$-ٗ8&hP{#'iR:PE9=Z̚B.`?*TSJX宩pW+(iROQAN!kPlZ㌊AALJI4vR\F2LvՄrr`6|ÇvAU_OێqnI ٥lG]qmGͬ^xU)Y)!x۰#adΪw{\#{Z`FOCyXOؑ7A5,9-X8Ҹ*H@(Oa$=rp)EHmؕ=aMaОi FV" i$Һxj""WýFvƍ\ge0jP^/Uvb+rc @lvdw?VoevRXm|Vq@oe԰h%uH*al2Usp QBjg\/Q{K8/B+\4Ofq+?`Nʨa)۬wPOuwWdSIƭZկƔWxǭGV0ny:9 h)6;CTSWa*%_2sثPzvEG5,K7WF b( 1C]QF %0ܚ0 JBe@5,&0:9? K0ˀ"!iLɇvX73(^яtk^FKJ; 5"ă0.\>63`L; ݐum1`L*c-?e?^}yO #iv N2TjYv\ !z1n cm{=r(-plN(}p-\0>1i z{J난QℴwcrW`e's ̦VNF 1 x.)^oyYICݚyxz(u2^u",c!\8D݇0JFъŸHd6q0)hOaq%"ī6.%5 ʶ#'ă0jPΗPŅ(dTӔM\ڝC@-e-0#_~/Npܜ=@|7¨AܘXoqg@?.8u}ۋo2 GMc ʸq^ise K ? zԴnX2jXBkͯƀ'g\g =֪飌K8ur&ܒDM#(+.{QRQ߬;,@, ʣmIɠo ʸK_bT[ȝec(C-{AY[ATMnA_ok/!x''KTK6G 9QrqǏa\JN*,aK#LˆvFX# l]AXaP/j9?壌ou i/fT8a뀠lPP)i3պ"A5(Y+wϬ1 W l$eM3nՎAHj$f ? ֔Ŵ {߇V7JYR&!t*SN}|ʸl:< sI;Fhe)sٴ FSӄQVFMܦ 9-wٗVFxXey&PVC%twU.ȞoF iō:=柭oAX<=ZB.6Cޖ@׊d_%^jb lle|ݏ:2afe\1o+KyP[;v(KLJdfH>oe]޷^BdFY7$YAXY!j48(BtycS*A?j"?jZk9s%A1֏ $DAYDW=/u[yoK *ꄵ ( !z*}3-3L3u22[[WC L"v&,),P> 8V%;ɂ-,q<SVf*䒻;E%(%" iA'DVQctAR*_Q•džq+=iD!  oUB%r ʨaBWm'آn\P6[ֆuD Up ϞqkeZfp@X:%.lHɋ$~# ˕=rJ8Q@c4|gqN8{ ϿHg:LJBPL[VF L9.b+S]PGrAؠ**◗@ؠjPZ*!z*PW삯}o3$;/&}ΘRuqFn9aS2x=g]w'?"=VTݐ} 9/?e:W~ΊJz'9c _24!1)Cei@q1K6d JlSYFdA$ž`_喘2O=.19= yZqAi+=3r-:A C=SJ6GW qX&_̉K\9c-L$íߐW l$53ICkYaU$Q^ʵ޴"h0.`*oX-״̸z&įf9KJ)D8lNRQFV =+5 qMpp/_ğ|뎴]6K&C %T£ޓo=9A%/NߗL/,3ǝMaƙeiS͉sX2jX!.UI!D9W _ >S* e\ w$6\)KU5=A*- 3vNP6[ւ[K-y!^~QrJu1c/v*߬yCf(P8;LEIEC.e d=PBedomDmlozreu2jXԆI>\ "|ʅ!p"|5RMLôa ʚѢ/)P~ZA(^q6ۊ$_)χKAJ*Vl_do6k/ȰBah?N2%_̢YcW΃l]#ae)Bm)--xIEJ#愰.3WCv\Qނ!ʧ|iQPӻJ:qUe[fh–育R)Eu2JQ)]NsPD{f.?oTbXqE];cN@Y>Wt;d!GX~c˜,;ѳYKhcudܠ TBTKCu = 4y/&vhamΨH{`iQY͸$ ӘSpc Š9YĆ2 Lz(ҚtxtÇu\\?ZQaP>BڦopQL˕Sns"XBhMйݏڴeBnaC~K+M* `,#Y;Dc6?ܰ]c&+HΣ*VT) +U*UUQX>UަNvѧec vrVewg%QV| gg܍Cy8Y"]GڬheaEWh!EMк!Fj3`f@T&=G>BP%C1 Cm 4}w@Nm,ʤDz2x`+VfeX]#z t2m Έ 5e%Gx;$0*4ǡv) jNp=c+Ň~7a-nJsk#cN%yGN )~5L(+R%ho=(} im\+RFM ²FN42B7!Ln'XD 4#/ڠ, KQZ{QWS ´TAmRB8gD)mF\9 *@x.h:!.( L8o 'l+znWMRn'¤ ½s**1mx.QOw}Q6V;3K;M+2١1JQI<2mG+xv-ҫ(oE1JІ~pc@֘܅WpUxA{a~eJL}#3LKU{2Wj9*,I[ՀfHx y%fN7dLzΠ/Wc(B4'˶-ΗaCtViv&S΄/8Lz,:Mx%YʖB_ T+B+6w@(F0N{Aw{j-*TyiqEJ ,as#r I|ԋHYW"˲0mD=Ped'#6ʤ(Ȫ$!oecqR ^AT VЮf,bd\w}C}7Bxwrڹ@4Od@Q/ZC)A)HQijx{顼c%E]݊{0h Lz(虐{ғ=ko' +=32! ,4#ǚDi&Q*ws G,F7cI%u2U̲Y ʊHO0(#v;guZ%#`T^G" HQ^Xb}iY{[oVkliYwe[Ar"߱Q&=m2*3˒?mz8~ncZc7#2鱸&J1bY[!vKlNnv (ڜ"Mi~Zq‹XȺdh7L^\&=a%YXDM]Qx(/='3Lkx+k6EXaE|_Hoo`u?\K4 ([M>#xb;&lxh?hH0n&~{I %1Q7Hx.'I܅էuS2݈zVzX.S/ɖ-I>gK~Ilz{B8w6"uaE76q#MGhޅ.#{ ,΁9&Xtݰdb}TvCoI_?q_}/բF 5~r@j|̾X0 >_%ݦmǒWzy3jz/ SM1;>sraOo IV&4:p~g_3""+ kk$WExvHI}1!sw :"@7}YS^3/uL8 )pQ`Qﯬ*X;$Ȳ&=1u7?boE7?~FI.% P奵>G(Hejjr 䍉jrZyk|h[Wou Wj'Kӈ3(A|뱬IQ=}ѡ}yGĝ=V f>Xt2sݢ"n'#,4XC]Qk'P@=;iz&I^%ucDqAz,`}zstM%P|p d= I̗B TXVPD z@3bGU%sfΥ5٨'ۣEK"_RaW}ԻQ@ȋ DE.(qj'r.'U%/JޚEkWa-DuݴU)jIboBCy O3c_:ěX! QGYp݀_J^ч?&+1#v_(N r%* 5_ 2nqP6(&Ȉnl3nQ˻e>Y₨"*NN\ƝCYefkch+I=n 6:6[YQOT'X'QD$bjxhkˬ>E--;;GN 2(5za<ԅ}>RYP{%BSgLJe$/+\R>Қ?|˿/Ex w'j'z.Mӄ.BC/=v ZD] Pu9E6{ kA,z+i$_題jIyuR%Uq[ڨS٢"/Z˙ d턐 OޒDV'XW.9Fu/k^b'A$ѻg"Ȏnnٺgv>$U"#!ב&zzc˺&HչPӅ :GxAcّ @t#8..70bdE]bl 3(iqJAkC mQQ!5׀dERt ^Fwovm500_CKQWۢd=4kXw+rfCvQ~ӖgUZǛ /cD&j D%]t@ nj`D +ʢd=ckǟp(;PY D 뽫[[l19cr*t?S/IQP?pоj/!959syEqE\cg̳q~N񚾿u&eYDz*(%+RS7-.=›D< ~D <3OIJ^Du?@SWQʨtɥAֹ>\u\"›|p_f ?t'BS!PQ%ʤl^2⯶AEx=vIP Pf2ΜciN'؄x7P*e7RL@?fpbڌ!:%}Q+5r (YEE{yo?UնnP G>;)MآK6)(Qtn{pg~GN .EYeV)~tO/@<upy%l`S<( +Auj'~LԣOZlo( OQd %wQ>^P,-K$')@z,͐=) !˱ZMEy(AD-p( d=?[v+ JEz,s.EЀḾ>k$=k z[2O:V^O~_d&QoCqyV3ڌ' P%Gԩ~TǢlQ0^,cܢ!!XUEx~|h6AnDŽ %뱼8q*w(W872ʋE\'+[ BCSȁ_69w8I?P7q 3]dzgYP%-xѡ 'I^$4f\YCZC/oMرEy-vIiIp d=u17}[,k}X? +I]b[BWPO%^k:,xfBzExvx(JR + P&O&ck.ʼf]#DA6Z;.YPBjl.y~&(F @z()vUw*?I%Ah'P ׾@ o^N~A~ʁP=Wvu%؎L^2Ϸ~O %/YqKJ9X\Au@=a-2xđ 7zIݼJcy-Qn^Em}W@dmZ"Sʃ1SLEiT턏 8bx JcyYRѪlW_~֚" %BQKIF&uES! Xfc+l9%.o) I~q(>T V16uSupONr' U|.ਨ_3| +k@D]jY%|Z>XA#"nCΈO :5 !wFF`"{V5Be]ȖKP2+b6ZyqB* Q~!f¹ Mmm]h%9H,[fTJyڷh xY#.³C i/̲egMԱnoqo <7Q;#;*SPc3YG?yzmAIV#zڰŚ%Gކc}ˆ:̡:QFם$ vP%/_kW~\,\l k'ٓWvW#M;^Jh7A$u@z,sH!B0ٞc(YkʋEKr PoE0a-Ečr|.Y&*9j'|-tӢd=+|2,R^!Nُ:X& VE<ķOE|zI^ LPLLxKђScKknYLT"!A>f \$C JQt$V_%mWcLzm>G_(G ؤnQ^0eCQǒݒ>J;w!c] >$yز7P>b 'eR$ 0BA D_1#T#@ɛ`ۛS0Xď QAOxoxˑZzy'3ELSP^ ڧM#I1B7P򂵙y3'AE}7a㥢<9T;s{} ~ݢd=[}Jl`)QD"Jcі j2ʓCrf@~ÁXlB\:VfA5r$(o I@##(Az,J&ư).@:Iu۠HQ$arAz(,9yR>$ FN !8a[H:o[ȻϏ͎젮_ *:"D+/qHejz&d±j;\R!;JΨY6Gڐ/)jKr5^R8$ *hZ{bU 8Ej(OՇi;taJAlTvuDB]I/BHv\n|٠d `S6 Ў Ѝ+v:(YƝKUakۭӌ4c:t/&䢶)>Ē w5,&9~QD!ؼ_MO8LKEY+zrEC;!gRvx(/ړ$ y7!6?'Caɩiz T@gϐbMU3>4nָ[iuݶl [+(}.D@=&c&~Bfᛁ͒j~3 *g(Sc$?s=5ܐebW&kHG¾W%D,s@#mUr|uׇ퉶 "ailF3߭gI>-Ai d祵Ƽlq |h~p giÆ<@8gS|d:;d-5R4*#QLr-L>\B!kP*GJQ;qOnsA_H6Z.Md؅l $* ]2 Q5([B*ll(|hpo̼oJrGh[S2r_d&{l"*c"0d-E+g͹ NR]'r[+GCr--m5ᾕ̾>S+ff|iq%Y):[\VjaΕaɕy?=fyzە*-ͷֆ 6I2g/;B:[X9;&X"NG13ŽܢRnaH}J$jƥ|%kXW)o 4M]IE @nmMdaEܦ4">O;!ma^3~kYFԫ&Gl#CNDέGzd s%K!gU~!Ahy!B֠F|*k,znghKK7*5T2UP t!oo˄S6C7Cy~+Y~&o˅ّC{5d =z[_cOϣ!ntz @Jnr[ Pث0OoW)J\)T@w P/="{ܧ m=ÏEq'4#;oaD}A^:IG oC/fǕk d J#[ ?G9 =XHzĽ{>w$'6!sPejV6]NT$%T-Ώac,QޕI~qZB֠<}Y:Y_XЎ3ЍÊ|u% MVg(aoeўrj ;Эg~:ɄkaH}f,mqJ:+Iid _G~J^[ ;bM?a$AY=?#{LX@ɋե1o?ďvDv5(ZeSڈIQNU 㬙{tȱo%kXؤ>USJ*J^|>GU Y'~B̾C{5oX{A#^M;q ]-(y;1)VBw|  _Mk pUAY9 ) 3rW$[^=Izߐ#Ak@ $yfゼY5,FY}t8 {8S D{ z!𿌸yGմ<ª9t r0[s*~47TXh6L{J:h%$T$A5\WۗɧC~m =Ug>d?ao%o}v+r%$APQ{ӂ++C*SR7Gd K陃ߝ9N}hg$6 u6 _'I^YM9`c|/mvم*DE=hCobߘ7"H+-$ d hwa<}A% ȍ65(O\>!Ua3-l&j=:=:^\Q'm߶Jְ}?>?o6 F(=}M}&%kXr0vחWaGWI6 B^euXNVYҜpQDQ?FXlK![%9M|!J d )9OŪ,DaX}A>&x J^ɘrJɧ?'A&mB^RoXe̡ *j*-Q \A&Ǥn: MGぼ/DD$ˀzqɂVz7Aywo_dfn|,؆[DO_/x %+夭1Z&)zr$ԭ\/P0)\6;A Qv#z%W ўu & JޚN/vmTsDEz丷 >Đ Éصg\B֠$t;X>$dS/y*UVEF!P5/uNJ{{+YâmJ)+7,I/@ےB8LwُVm_)?/EQ/f");xE]B|*ҥ/?rA>t;Q/L"nzF[4:Ǜ;@X9RbGD7M؏n%c1]x1D]}l!ڣMDL~q:mzjM=Ñta$W:d{(ya >T+ + PzGOIqo4@gﻢ"X7P}A<@X=TGK@ݞۭ[kl>h 3DDݐ;b'S%hf|nߨlߨp`u6U..U5:yAY@풣MNͬ(Q~ ʺ y#眂5,iwKDCis+H۱q̓!kPvKXuA~3JְhbJqi;!kP;5`X2/ *❃s@X=TO6l (yIo3Kjgګ+ #R~/FFSKc:5,ʇ)+:$y_=VW d~uޗėaS9G3GԇicZ B֠.b}&$#)wƶGY=I*q;OA[ױWUڗߢ"E4T+6J_:l3DsmTXSsAK*7;jݣpSsJְ8/"ߎ|LM)G?ٸ: m]oz>D"x?B̿*[G&!D}Sf-(!Z1Bm/m(ۊ%=_)·K&G86@O5(ӧ+[Z!K *p5 2^iǥ UYYӂad=P5&8 +֫T{S _+[`%N_gw[S]BLU o0jPNgfLٹq;+~sTV¨AOnx8jqnF#`Ed[=N@?;zyr =@}2nL+v|}3H➥iE,aoPƙKþi[`K+r!r{or3jF N1i3[A *W⁰%h%7 Q"_V3nE{J̮]~Q% ;H\y*!r 1Z^ PF ?)I~]pen (y2.V̈́>hH)ˎ<@Y6SSws<@W@)q9aE^ú!2n6 N2'oUDn?`wA/gx"fT5-#r(!qnL /#) 9݁QF >Ԃ3&p⊺ﲛE(!r 9{)u!`_\ft"'2jXė6B.5A* X3?ʸǒ<%^IEҠe%p=DQ5Am="PF yJXͼg]REGwEaԠxε} s"68ڦnxY22?SNk$lN>c;@5((e@*R|A!/oXP G؍qA5(_މecl'l;顽Ѫ)ԖeùJ hko~^WSˆ<0.9e C|O" l )nA.(\Zۗ0VTwˈe^K+$W~˗DTh{7GF Lh&RL hی¨Aqr,ye|M-0J=}=abN^s?䟼&94w@Hh^:\¨Aa˸"rC`vC ¸v2V1*g\x{ >4 I{ %P݊[#Qͽ99A՘LA5(߂Kr{+9dP]me\C͍2BETpsJq4-PF 4X WҌ52;u1L՘K7#waԠXszWFu7Tw\ xwzi`-? р4@!vߚsEKEU޸ }q$)ޚ ܖzeq8EY繼lH;ߌn i^q@KgP)c2s ڻ­32n&ݡB-l^nҒRF68|@n ̬iM`#~'0"'0jP3 8N^+tE|8YS܈aC&A`&r;J ;e9(2$?5NM %Of d|s;ɼ}=qn6Igx'q¨Aa^>N 8CQo)w.F λ[Ze6dK'fh@& ː[JQrmȗPL~ddj[:h ye5t+]WvL\VZ+2:%RpKta)%33Y^O=1G5,9)휐2f.@F 촧2oոr<.#gߗW}mz2iڑ[F JόWJt7UMƽ#qN/K(M$*&!t܈[gt0nz}#^q Ha'?|CUc-ӂ@5(N3~ʭگ-nƮ ʸ(rC?}7"-돲1eumَe԰h)^^ yPg^#+hﰻq8l9"o5(Gq4"slPV s>Q2me\gR9SN󓫷.aDmx%plx5~؍A* /Lی? {쓧lx5~v9v@PVC%ԺBO%rleu7/Zpi3x% E|eE>a\ZÜ>m^ݙCJ&;Gy~ ʨa\qgWf[U -zec(K?mؒ U0D )MeaՍn(GY@ژMIfT9K#YʆXQߎeC!sU!K }Nte԰B[/g˭&L##s @Y F^Bv'u38!@2jX42p%\9&Lc}kE6Ëgsِ)(^ NG8RC] v3 ʨa; c3f$RB0E^BRPQ?BmePQ^SJ(6O+U1(Ei%gIt$2I(E|GQsQB_ M8@5(/QȱgENr>6<}ęW ,Ih9tHQ[ ፵eH5!4"ꁲ!#BZ{,BAj_9A6 ilڑ7(YE}@e#]uUBq7-2Ue԰w9w mݠl!+Мy2jXfL[ s ﭓ7W]sJ)7߾/zQ\Ț |%^2ڀ=̀~7D~ۈ=RBOćհFF ܍Iq  bsfID{2KAXM_BP´ wZ2jXIBNRBVSdߪѕO FWgta@Y ]aPu#]wP6FiSa+FԽk,@0j #i `1z!SlPF cvxyFSj,ˬ/&&)RV4 XK<(J ^թ\%aCQbw}fEXIE5ިlp5~2",PVC%$Er!_0jP;4DO}q@X8;ZBM; Tc*cj AX:SV@Gި^FJ}p巴Қ>Duf&PVF}d P' PF ˟oƕ2qcWfX?b')!ZF0QV!]q-Gێm\eq7Vdj8Ϳ3- Ġ[KƤ:v̎6hK~k7- /A5,0dVӞ)M$wR+8](-%/+ 栌/ߚKnXevnvd9(V +$V3eX=OBqwݰ!0jPBd_:ʭK6yę l4x<9r/C %U?]Y8>+$N(, a@=BΞOIIse԰0xi2-GJ "v`*(D h.) : ̏G%v(E^oc/%.N +jW{EeX=OB¸D> (AbhGnaD Yc =9nj;,BUIaE=3n[6(!~[ؾ6PF9!?};I2`Y(XnVv\2(J 97PD"r#ɇ LX72(8=⺅mV@ (!Gz.rukf0KPM lpL†PCB6h|Hj{{>dPF ւ9FZyȫ &fI "ߺ3!tAY \QTwGv2jX=k7fߧ䂓9n~N"./O3D >-rI(0(뀈27u+S/ro))h\&Vlr7rRԆ]Qa-dz_A L)sJ a5KE1`Z*Cb].ae fCPe !oAXC5FF&dG.oճk'zR3>ʤav:!uDZˆ|z=ΐx=NIReԕck݄@4,jEB:JVT7ơ/6aPJ Y8 ʴ_ۜ]>k$/xϞI yC{)=rZ :JxRgSR$V*S8p(@;Ss2h/;mI=Mه}2a} ̜ʻ!ǝ$(h1+́veHePD#kڗlǒK4,9ݣk, "t)+Dτ;KY!"IPmȉ$8" @4(q" XE )ꭸ r%[8ьMْT+e3/ܹ١N6$q4MAքp‹"?* *d_.+T@E|a?T Ռ3@=T7ȶ7B5(%CLN$FGݰ$ХVka}gc'E}su @cA#SK4()-h9ew]?cu2iXZtE" . ohfdrBຉbx}?\'MD|6N6`$d8+A$&wV*A!hB , $DwjpGG]u(HaEQ5/\ ¼CIm'-Ⱥ2G] 0zF#!(﷩$[r(ׇm8=w=r (śMxۼ[Ὠ$1& ;D=~|a \JR%IFdnʂHMKė0 ȂP& 1Fl&:FhQ9)Eu CsAS H i -rJ rkY+ȫd7( $9ٚc-^& Nd|ѝYT-\"cG U v2Ox2o@u=|Oj[EN(-f>v|{"jjpGYE\14M8wIdT_>\8yPSRy.2iX]7zhpVj̈́[顼N5#i&ܠTy'իAV2snH`0iPa+EVlFυ%o -FFrL´Ip9"VZuM0I> !&F?}+aŧȤmNT|!.?ʤa>Xb00r^^dm =&P@-,& Ns)ZLBk)ZuZßėA~=ee,Q[-v&(+Kvϥ,%L{W-u Lyبt[ yפ~V7Τ.Ai~Irs*Ufp=GM̞kkI|BoR|:No;l$n6:M:5?96gjRLC-qzrm;#eҰ!)m܎< ,YaEw=P)MtX~@4,~R3+M7 kI:=FBvrWăG+(-( o'\ ӺQ ڳg ۬d6Fˌ\´V"|%TW@X`p= ,b兺v!2iX6ulICY ފ-yun0iPhKծUU0pȍg:& ޝ-tZD0(E ="r ]JQ(BGa1Qf'3#om+ 7ڌ<%~(e >w+xbyD#e^j,$ꆧy}iI8EEo+[Iw) FN9us¤A_yʤaڙଓ6. G[OŶ_2غ@<(cp8џO+b>܇p sV[8y#9& VɎ VD ̛)w0iP, ~cjR?48>ʤagv*/?`E {菲$nB)m o~8%FzdG4,*պgm9a-0F9& i{go9i10_)%BYŠx>n⇑@|,/@KPa~tȽ ,k-SWl(%ӽS&KYٺ;RVb|7;(+[ւ4elQ W׀_yAD}uؑ!8}%.|͸L i?щsZ=0giu@Xy ?SwSP? {w.u=ʴ`)g}80/Bn(2ď4"sQ qQ\ ¤A N(~ (]_-r<rr2ﶙg\P& 늸F)|\_N=wrH%L7pM\ȦKXʈ+a/\ b׀JaҠ[VQ7rr~&L-SCe"wb/{uĄۊ_)å++8m"";"bg?4Y#KJְxe5$n ȳWYC s0vAϽ =(O3nLsgxI. 4Jְh}M qO_E}t)vh.GŎz< LH?pG=ЌXTB'2Gaƕ d RSu}Wƚgp >P=P2{.g,yjB֠Xo)9czfAaPi$ &[SɋU.>)>l+aY!1Ob P+.HI<- Yc}vs^)YhP%9\JְD}Xc~iK{&g Ȩ7M7Kh$ ;^j܇bEm&L$J  (y8oJ}]?#.B4TȎS +oנl{5?sh8A;ⱬ1u-UE.)|- aL] [ Bnx 'B>P%kXeKY6M|kϋz_B7b%b𺄣w'u*YbIuݼ .7"" ݵ2vEG,'fgIBޏqWn9A^j* ̑A8(qc=aIzV1Yʪە݂ nq2 =YR3@KVR몌MބL⊸hjkd~ K JK@5=%kXb撋?I@u]5d “J@%(Yvn9:̝dP'B.%/>k콖F:Lb C{ r xJְ.mo&Œ v3/(~jImZj g-5(?Ǯ^mK U17C!kPnZ~2:x8܃B&VdVh":ϸ>=@Kt'~>aO b!\㾚0w.)EU aQ)S!$սʂi#?܂ (OF#I>xd ɥկ.O987dP)5vZLcv$_k,ە 9`D{ rgȍ= u0נVW.":"w0.dP,!;)A_W2!WsAn =lmqs~Fl[T ?Uu+Ɏ$>B^3jq@`` 9 `u?|onl* B֠Ur7& 3b{tѡ=̊1RAiV&ոծK3)|AI2#ېۺ Jְ׷ZWU- $n 2wC)H5v'0zd 7(Yr1%.1:1uR^}mL_,8d.Ä B^͖sz;@$4s@X D z! 5, 9>^= ]Y˙%ԩ,K%nTW!/D5v픵*DqDt,#ʓd?Fܤ vmcZtY,ו9Cu=X5r  %& 6ëW'5()hR[n { KIu3A]c7WJְhZl+ʩ̜3mt'n[S෤k_7v! $0"wh=Am;WB^2nau< .Ah'P_[Jְ'X6>-En~eQnSIvA2UVwl)c$^G{@k6%gaԃ7i( LU6s+AmW)i%I$),O ̝4e B^ő rL3r-)̚sN\P".ń{G;P@%͒m 9vPJYcbsfDQDl(U a1Qr%ԏđ/R@X \QTMn|YmTO鑏@ma}y1!,F{ʇ"2`'ʇ] غ+P[S]q*y/ʅE_ݒ$٨Gd8(;*ƣA&*PeY۷bftտʼbζpYb=Oͪ]ۇ wO , sM3@[+5K YۃrU3tXܑZ5@ޞ`fJ^k`YֺσSs\ 7H?g,C۩T0.-rAQQ)]b\HJJR&B֠wXf&x+Leg- A Ĕ#-ݫD>>0|h4AU6^qu 5(X^zMZnT:+'W3ZZxj,y_uCkYB~' ruobGVʆΟ{9!;8SCY^w|O*5,JdR:oCRPݶ&P> = C]C(IDty|\CVߞ{/?RSeay/V(PYI@|k auFQ'yӞY1&N(~#׏}Qv NuҪ*܌诒wWelu>jS@?@,G215,F餭>/{a̒nT, d$uB^fZDC^6ȍ ӬGZlܩd KZ7AvQȵr(yZn聡dB/+ d [ JQݪ)6=!N_rw)d D;0u.ĮфB֠.VkGN9c'Ub'u\Zҵx ʈ B֠u*/TtCy⺮L íM/mnT֒pNeT?a'Qiג*m=O} ̟pdq9M ̛)`kܥ ̽q췫Cv y‡N#Obq}nP{RNˊ_)`+Wp D[kғJמԦ|XY|팜AUDMw #ګiXV\6 B ʨNaD%oR\GZFDCZmjt|h {|Z ctΒf_աIE=`jSJnTr y9s{ozGDCrwY=dwwJ d=#nIP)GeJ:]sgےE ?͂ h㚠51oJ.ٗ]&Ekh=Z%+AzjO%뱘 2\AR5G7̈́Jcقx[")ꫪGx(f&xw}&|cf%HPMG>B^H*ƪWJFMh7|;_t?ZqFIu7wX +Y3D@mUz8YQ7b濍lJ(t$׀(_A#rz܃Ǿ(yo֨UJASHu:/NR^?`?6h#y<`7}e%뱜Sb51K\nhTiW\!(gzN8 b~/x" )~DfaHĎ x[~xgi:Jd9I*ǧ)-~x *oy々*+ zzݬ5}uJWi,) N9P]&%wE:Q`V4> je\pEY%i :Ũχ 1E,0 hBKPɆex⢰UVMZA; ;@KO ;[T=ÿu F$׸<=;9k߅" ;ͮCfݠd=ޤyL*7Xzpz('2-A$`&&fKa( +e 8AqwLAz( ٸ" *)Ê3AXBجI+uʽbmhƯ̈z:!/*PL4> zo7"|su@ ,X P±W!(e^?4X+r%b[UHuk>3ꨏX7s6>Uٶk %oAr&ŗqDaEۘⱺA'uc׾ic#iэ-VD~|h |+*ʜхboAHQ7vCu =K=}Vp*Rp)Zaࡽz CIe?~J޲_9낱ֻnֳvh~?*кzl@z,Iݔ5jelZ$r v!(y2ڽ'-)=GYZ0J*G^ &>he5|6 DVIy4`[X^\eRT.8ȝDE; ;898(y[ \Ȧ-}nu4M%?,& s.>J^ >|TH*'Z -n2=ysQY]!^5;YX:<-3%^ d B^`ѐ*"Šxܸ+&~oR.qDrI3jGqM ,ڀ&f YP~v{+U3Lgn47vMTSwzXǢ]o\άUqe}yQOƙzd#TS:KPnRL.& E||7yee=| sQG[p>.%4.aƵjqA>!vKK''حd=v/=B/Gd-( 2u4;;wNo;+YL|y*Yߔ|z [%Us^2 {@z,7]Z]V+5tBAkf n$Oys_ng{ڴMtK{Lc6JUFɥ/ERfĶShR@z()e.bW,_` ngGy:ˆ6E\KŽ6 MBvX K &xOfh=F^>ǹ̦cLQ@QDifV('ԣ18biXtR1Dv*F_Ҟv-2DFnB)kB^_=crn[Qne^ d=G$ ةjg\!o  (OeT%yC.gq}y'"8Oj@X6Q7S9BC6xo}wr 2 2%&u. EyҩIR-G|A;ulQW|V$!Gh/C_O; +`2C$O:B^@ÞM9 y?O$bM/ȭd=tLH!a1|z֕նS++fI99:~ d=W V۟"||F!)A ճ4uYX͋ӊB^+ >>VZ*rBorIkc+ڈ֭EN ,`SC; @z,9onJz۞v3 ʵǦd=Is~aFDDA|Dߪ)iPLYveۀY W9D5uBF_M]et%ه\qkn\ fVDJm\BCq/CȖDQE<粰|nG9@9<͕nva_DD> l|ji d= Tx Kîk(֦`f\6y;u"85ȩ d=c_I_tŗ7I/`O֮ŵ*n"IPGbuA`RLl=֤GYOP`PքmTQӄ$%/a!XH"Y‹\Q@Y ^7qTMJcBs4ra3dfɢz.vGOQ[ٶM5{x+ɀ"^4O%/7/*+"ڎj0f BW`_엻 ` 1Z[JjUVoU)Xq?cu ?]N=*SG+P(;_p/C8Մ &@[@??@Oj)#83v$rB*'ܢR/u jMS?ӆP(.Zh>) ,Eڌ9MBl޴6Yĩ)qbތ(5[kÕ1UyH<{p'MOJzscT"R>ahA_Q[JQu76(,Kr*xRϴo(5Z5hgTMt')eQZGm4r8Fܫ k/*k7US-4 Eіq +1 Kgx9uY0}eo/ۮE+c !i|<5*k@3=Ll(5Z|SF3A _xfEstW~QXA-51%߀#[5T񺫶#>&@aT]O5c4,P(G\on #q*E͢tTa ʸ1#nE1$}Vӡp.b~@;J(5'hX4T1A{Z#F Vt/5 % Kpz瓸2qc'19GV)I)KX@q-2yIO<ҋBQLvú :͕#5FYM-zc[m6 "Lqu@㐭j7nP Ėv?n:bUEeT1uQ(9N}a^4vhrxYFsOTe[`N\O5sď$5˱=:oHjrpo h)¯R,\\Ogh Ù59ܛqg⡁R,{ʱT+2zGY;j{K&TVEeTs/6KQ)jAwĕK!ީN@G}U%nݴf 6I Eb6{ό&L|`ڜnfw47pI(T1w d%Kx+ EnӛW2J8ЍJMYK8Tavp.)f(5 urRoVeZx 5ֺ6y6mN!v_wnpCD.AQ{xU /.wEeyյBQ^q=-auWfl1/k'ZQZغ>ܜ9u8in"3tΟ T1gNHBaLxĔRGK\j#u; tqf -8e|+*f@ Er$|) g`jzZBYe|n.+|g*[AgPrJ䔩NLXXim4n+#mʊ0|n/Ó&.B)IH|V~J8@eTls(5JdHElljU9h)Obb98P6^_N5yQ Nģ_p [6њo$+˴v.4Ae FjARLi)SejzZQBY2eEo 5 Q|.' {PA|YFcCiՏL]Pʀ:b[ U0ݪ)⦉8QBY|QEeU<*pRv@۽r{[@?2[bmvF&vXs{!Hdx3Ƿnjh=R Jh~ J$DFQ(8J~ˆE7 zpH$*Eʩzq$Qh]R,*ƨc?ڣ(LTfY݂K̈́/GQny1n&:"TVo(vSW)9e`auPJ]k"~u Fm= .GQwsJ‡\$ImmN^}%HBQS*n)9\;hg29\7_R6ݶR.|^`qq#1*+rp%IJلO؊x甠(~ln fK"5zboi1ݶGP1階x32J8bo5K8cV;e ^D=`qWY`SCKT(5 vF w)릞Fl2/{P m"5pu@|ۚP(m:պ۵y+SG|iTró!P)թaw/Fn]% 9Uq̯{67BQ+Pxc(OOԷݺ(! 7S5A]HAé-Ux7M3?R,G\ GE 9e뛉QP(jLUEtYQž|^'T]ϘS"ο8JF=5R:>웛GbG ƜJ8n4tQ]Tr.޽W0ί1R9ញGTQ( oVmdLe7&bCQ(ۻSʡ}EaL]39Uꇁ*R,K[4{\r.+~ ~QY:HP>l!zHN馊G `4P)Am|x9}ovVu) gxA()HɧRf&~*ESBx|2Š{ީNIYPV5x0mR< e?bxB'P/CR, l@{QfBeƴRmΡP6ю1O>7sMx8~JُrYB[Fp5u3q?~(49h> e?W*=(1)Ykpzm(`ęg79x0FQKkzNN^SFn3,}Z{`Zw̓y1V:*uBQ6m=IxQ(j1/Ƈ苸=&n}OP&YFWĐR^Pq-_,(f_Gl7}f?fIiw4&{5"{HrnQYA-{Ԅz cv5 ?%͎,oSdq"Y Zq 9Z=]@zJ-Yq#V0 +lf]CJܘ'uG\%İ8f׹6sQkGnhW2M "!X\8+k FhP6uz;0:ln,tcOAJ2;u[ƔnppρZAj[3r 5 Eb:=Fj&fkǃ eFV/8T+17$/Z?ke2kF&AH=ӊG;P).6⦀NQNԪ裔mS͙Z7Pp]` U3m3mº-a 'wmҞ|?T'DA+enZ1vx>b8= *eUGm9kr q$I( J"'5)U̥SG.:i~wvn%ˁhQ֗JgNMWMpJѰg~f[ \TSwϞVBP#2ط6:-nDMIRbiT1NP(92+g6nʶ+!8UF-h 6!QYC[B6E𣔭ԚY]UmFhPf!9))xng:50~[Wu^ﻻ⇑P({`zZIf8iH> .nr%3 wg+$r$~EVy[Xh4[zY|78{MfgfZ3)(=Vj?2{I=~3ޟc-ۄjwJq}Mϛ;me7*EâlBѠx{u=6xr~"'vV1,0? AY >/ʴpnaq\ Y/dOgާg^jmf;* r6BY|þ&'%t66p K< ˥,,nG*Eݸp@qqW[e?t7 e fqQEg/!Pӻ( ƄY63bx44B=ኩ'-%1j2*0/hPfvp'y> :U^wRv&C61>uUf b,鈛PYD[B57w>JY62?!%SJϗ-AvCYsy9~ܡ%:~_=d#/- E珳!n_#*]jã57(mHz罺 'eϾEp5>JѰ Z}浠+-/g  T ⪘E +JK?lFvm?ıJHmO7O4%H5dTU|1FmI@_Q|zno(=,&:[8U%YzJxc aWv}آ>Տ^T\}^P<CO=.hXsU`y3 Y Sm̆Aq]~Jɥb= _]GBPRf)}])s { K:* TŨY)ΨW#>)opfk¾!Z^BѠfO^-h U_ZFK* E}z/%~zhgj*ek2s^;N⇹7TV~(tۖQAq,9ԡ[z]l%tgfIlq_u>wRt1/~=-QX]_(w"z{P4(c3&bmOMNpr!*6T^_}RiνyS Z ޯU6{(}98P4(/SLԴ@tEl>]ݱZ$7%T>1@+Q([&^;9ް4 S1*9L{W~X7 B3uTwË| EbM܌_S_I4(@,>|vIXp P)=~vX)RdOm;L‡~"n$A(tf -¹s( W3?)%g3ϛפt(m3ٰG!RAҮ(5"!%eަ쨋/lCkZ{PA͙㒲e~2Q([0e;ao]JʓKru,Wx7\ͩqlϙ}-I =qGyw|8ϳyRhiP(ۗtqpp}%1g2QX SM(LU(LumL(;S_S?LP4(JOJ$Vz*=5*QXEOGyr +=üwWz*==*=CiEgJQQ) \hWJ GY n狚.e f~Kؔҗ0擭w~ag,XEatʊ] QoX}HiizJo R R Au1#ͣ#_Y`RSRǛ?q Eb1ʿ9l^]eCaBa'?|Ss- gQݦԯfyzR/{F +u/ I?D]{%tj&a"P4(s,?DweV~27 +?_WsCK>$F%Yzaw[l $)+>-ޭKV'( ĸ.-`<(&6 +Y"9FPXɪdQXY_B(^wr}EhPo)M/!~{MmC+PXg3oe#mYvP4(~^m^ /u^'( *TB4HֵD{v=مŠOo|, v|]!P)EEuj_?Vgݯ=ZIFk:TWzNcD|{JѰ{a6*)|c">F<)5+RR=sQ)E.rJe*`F(+`{> XF` DRBQ7=q~A9OWΜ$>.: Eb"ÚW2)xWWКO(;<+š5еķNhX,Ú*UVNSSO@ +2F6(/eέV* QxN'N(T|~C>}h \GO{BѠp;\SyOhCJ72fg~( MϊT^y6DKxsNB%o:jV"P4(A-N;7wI=˕PX ӫZ Pwz[ԗT 1 +@DƔElmKʊJѰY՜%0~cd+I\%QV~*?C(oocJ}inq$.+A?JjA ][7#C,ApӞNO'˴CgJ?c7.l(  f6gzO aa|(T~EDa~b?t羖ujY})ErYц^QV=e1x}bnϑ8BYqgHp"?JѰYsXeUUI !ӓ,!"+K)K 1lvi+eۮ(_rN. ZTD6z\WӽgmuK%OZ,."&^O:!0CX*?0e-K 1r[aCǗ^EZ 9-"K-" BZq1@HN.8;l6(rھOˆ]œP]aaT*FʆQ13ȏ~^98ea^^IEip&M#v:()N=|IğiCv|4r2Kkw ¼>6vBcaqC\ ¬՘*)>Taq[ޝa?J$z(ѾU[V~E@3qڈ#uőW8E^#lP鉓&mȺ|a`yڕqnaF\6WxpU]EUdYk-a329xԃF 2-uthOetceCneQIcyKok/M4ΛTěCu=l7q>Lʬ e2>ܪ:IP6JDۂ} !$B  yA" YaD|u.(k2V[8j;&YBz;FVaV?/!IYY!Ȅ~>'D +h/[p6EBцK)QVNvG2(36Dgi,+Ċ b[=2 VNٞ+pARiM" PT׹ lP*nlin]P]D@xɂL*0DTJ7#xG\N <ЍxX\ ¼u\ΥMx!6NmcƑ¬1Q97$7Q#_F3#0롼TJ%laCq§g lkEsaçw|\>|G=!~ ?)NZiNR:ϋ vGje.,O`UwcBecw񴿔TڣԪˉ;"v6* /eB)~e59ail$5IEIHI8= 0oK -BSF:  ˽Zew‹i#H&aEx]#E a z((pl lKiBf*Q(d2 E?'# #[ڼM9g:l 5 $l!߅ezN%/<"p2XqOheckp.Q`G=v62뱜B-k;/|gnnP6| iݐyKnJXvc[t 7mΖeK)RYV]VCa $F^zPyQrېM>P7(@(FN?'_\g$Aqڧ*=Ou=ӳ`YnOB#qcA¬ x=޹ݶ_HT]0R$aޢN#Gi^AЀKU%h䶉#¬N-{-PG@2r  Jo=qUǼ J2~%Ů^hQNf\6࣬b伉E\¼6l|ܬ!^"{AiYq0 Fu =sC} rwG+v6T UO6lwRޝadh/ip=$ iz!eҴ,,DcYڰfilB # lZ8lapYk-wYVy>70"Pg RpY%tZ|# E}Q! " 9Rf y IPB=?C)bzvMyMl6uANʬb0V:ˊXC]zlPJKrԅqRY=%wѨ*ZFt{.‡&7N~I7B*awݳb'cc dl?d~i~_PZĨbC3?faC!OC !lQ/hUkCr[YaE<#b;!.QFqqDAPᾤ*ڲhB ¼~)\V *‡5Nk ?>(QQ{| ?ʼ5/gEfWaV7`c.ݍ#zĘyZŷ(AG!(G?ᨫǎw< G@X-VL}䚨]:!ր2%Kgo^hQ:l7(Z -QVE 1nY%oA'nmql!9w (˜:} 9#)s!p2JwgDnaYE.bѷ84".m|Fӛh] l4zJς Ckو_w-Wثjf$UIx.g') +nʧ[Hx 65  )D=vyÎ]2@AQ qBf@xs.bQF:Z޻}`NO'BaoJX!D{}+!Eh{ca$ei8qGO'Z+}rD#D3؞ɤ̛T{pLY9/-@9ytw^9.3W?]۸ OڤgȽS?'[]'-l&\l¼lV~LZqOAذV ~|uA8L(a?> 47Έ 6עQ6ps0gmIX Fď7e}XD.r ='{M|1ˈ|Y%Z_c} .DŽ6uA\7q|q_<'pSX+z{%'F&~i.I5(@Qj| rxDV8j<>j ̛HV ndvam2 :Ⱥ!F84 i (z(Q^QږY(e XL; |'G-= dP둓&~4##APvmG#k8 Ty'?v\溂6d6ri8 V-Y;Ou@D* /I;$qD]MʚD<0E\^<$wmzZ;? %b05‡D|pZAfr? Raw6Wuee\eX;pu@p̵ڡm,[f¶yXw F$7ܢ QX4(.hK9Q1wi,@id'Mkj F-RFMZ޻iCQxNb6{z<  *oe/Dü'oG_љ$mެN9H(,5ީ5M;њ"Qxqv8$H3~65()8bp֍]YxuNGf4&z,,ϱ;؍L4nlp(/6d> %ymljPY3f $ڊk8b~K۴^ۯ6qzYfޯ"@aѠ{>\؏›uC8J E'gպ]+$!!# N"ɇs$.#EaY5NmQJoa%pZEf>#-)hPnޒߵKDa|r 7$~9n!sK]ErXf\6isʨ6$'@^6^vK^J"whP@vff@|#Y7yjS&ʢaYA9;iIXeb{Wy#N"I/gν PX4(!%nԏrFswR /I$c}%"~²\k!u/ {~Pxqv8v#l3[w?ltBKd.qg{-Z5S&hmt^_0T#?$3D@s_eѰ(p \3D' "΁f uqVIb;e,QueqXh(6Q'#m&'GaѠDwluf@e\h-(|"I}K u{VF:w!yuᳯUwmWy8v'a3'BeѰڤ ǧx\l".YM qWyNHgnaGZBaYbtcHpA00Q?p}[7rPY4,Hjݢe(Oo#U^ NgKr綱ʢa1:c {0k8T'#hsSʲP5vG fA}c4Q~DdII?hP-X{sDpAfnD;Z2BaѠh1*v\ak0{䖅wa$Yns[ӆ~Er)}K| muH*7{6aE6&mbڦEPx8(k&n"AaѠx!oÞۮQvEofzoރdZEŌۡ@CZ$o<ԒjK3a[/a&IPKrMM:qV@]c(k3`D |'ihP?G#| >TQ3ъm(|;;h;E c QDwE@U"c,XоhEbSu嫩'NEՙ: Any*(,~MT+C* q# v"d3=ꈫPX4(WO/ GHEtЋ$]g*˖R8tq}ט) .vYh$ʛuE6Bؾ(춲-ɢ@sKF_i^6ȡ!CPY4,Ʃ5t]YYpψ#"h3VL5yU?ƄKd}`kjVރ 乹}Ӌ<Ux6 0)F%s8u?~{`nn S#ɑsH/"L, I'ڜu}D=5*oDo$9qTմ[,b[ZHYdqxu@Vށdʹ+r(,@m>%{5T=5=zZIΛuCC|hX N4$B\Fu3u *on%li"6Nۚ?jY/ PD ͝ږꝕEÒoV{ѻ>}g}]Qd,0:/*oG:[˯`3fY٬;bm:I ii++V-}UIyo]et8K}OtY GNҕu:ul\Wzl\aOƴ*U[}.!]'a$要j$7CeABr=HMB|;=$͝{ڞ>'+ǘ\ʩ7յRHih_Py8v/k3YFFa?ހ6"Wmɫ PyNHA{IE`Q?RP; ԉrYCgd™3-E laW̲(b44$PiIV7E qj E3\!PUYjC: AݡhPV[ZDüihL(:<3A˛z= łVI@ʆ;p쏡}o,{ ;sST@6 EG쏠*GYy8?scosoH۞~d h k4byH»uDv ۉ   @z䫙l7 D U(ߊb6,I^dk%/f ޅ#4@{‡3K2wCvy²vc&~iNwMϒ4w7¢A' 1IITG$zlmGʢaԞs?^AL:$!^t/R -,7X*e7CnWGRsQߓ66K8"lsc$PX4(Dpo;PxyNGfN^L^Lkq niʇ?Kf5ZlĤ->+&"[?*oBp 2̝ m)ŦA{zj,xSGT ͜fQX4(k*?5IB5.P DF仙SoKs:%*B" 3DWU7q0OI,Kk ^[pRm6APY4,.fS!Hj.j&L!FP+!1E8t]#d1]O#>]J?w qz>驻۾ʲWIz(wc>ŠgIXď ͼt%hP?ֻk_KrKw@¢Ac#,D3ki[xʲFHk=8=5zʢa vp?QH|3H2F=kMثW&UphՕnPy NbHeMO8Ba٢w߱m3-*HɨhK ~ʆ͛0_pWyrn eaѠgޗd҉.ݪS[u7O Ʉ=%v(w(e-: AƜƻLQYY4,i]u7ޚ.ĮJT>mlm ˖S _0E7Z,N=,,{۽$rnsΚPxNbHivsOˡir&&Trfh&d\T> QvEnvoU(EDsJ> @)iwipoG@{}tCX[QOh "J-*۔v7hSKI.cA[*_N $lk:lu|B"$*+N%>=oy=bLga[C36U0DEEnO<%A{쬵|7YTQoX͌ޠ?W_2Ev?Y#aJml6(Ye 錷H}DM#Gdby=σT<oԗdOc]J^tm֘5>5<( ݆!L&h:AJwq#( 3G}+toPD7Pkf~!guQlq|ݩ)>-0(YMX/UT9xJH,=uQlsg46Ri h7C>a5ўp75Wq uV<-"޸kaK-zy [ @ɋ5 P3 |B$* zɈq=-Ev_;͌Py]>3_m!Kd;N/%՛;TFtȻ9y .#sk|(-r.(ʇ'ߋ:(YeNNE>}ʉ‰zSi^ 'J.* ( wEc:AȺ($˱(}kF\&K#,o^oR:C8LuT99ATV~~nqKɺ,ƯxCUYVZ:lť;U_§Ԏ#zbmT:梵ن$tj7rAXDSt3rx<(yoo:f^zu4aM.eQzlQC*%3[~;H,ٲ Aոmlҥd]ϴݛJrC~w9ͱsقobԼzKɺ,徝Oʦe`} AFnAY~;ty!&]&Óo{(?!)izd_(Ymy?YYw}ݢ()*ڽtآd]ԮܙCPa7|0+kk;]RVٗxd6Ȇ]6 CҪyYw %|ASU ;˲ǴwuC.WY(_ yDiES eR.U\*MeY \ԭ g?JE՘[k~{TE3n&Fgycz\g.(k@ 5e݀,,gjv *#‐מOޙ2PdC\_{]>`(rAȺ(rG0{eݐv WaPjQ99Sm#˒E,kد{Ar)oԗةc7m-uY;wZ?e}W+8M/21ChQ9[5 v6˲{dBP@ykĎ D\N>랹u~Bv#t'R>(H0#*uQ׏ wT2e=9qFՉ@X CֺGd-(Yibyۘ[>%+u=2 NDć]7#q.?0ʦ(y+ZTvIT\ i>vI)A'kCUZ [ԣ^؀SP֗ 䞨 ܽe!9c?݁:96n A7#r$Y]ۘ[ -W# %JW-*#v[:-Ye*{j?y*kI%?U_GѦJo.!Vޗ0 $v݄BEkJeިd]9hW{\8$&۵AI$*ѝdJ^d1߬be(b"O7PVNdiAu d]g5Yǡt:QT?eZJޟ/So 90˒廯֬xn⻶9).f`[Y[AWn݂ JTS #㯍?YX[T7nL!Cx {- a} h7A&ȑ3ĉ+>`c9 BP/郎= ]u۬{بU$m7 d]M9_T;F丫N'^[[^ZD5n7J8kjq "SN r&ي J Z9DBD{ʍ wa(D=ir %벬ZQ {*[FԅO Z0c=f^Yݠd]s ~6tT >iNȹrB& G]ݏ@Q$']i|!;@ɺ,JYAŤsa}J ~t$ P$yo E^|7o|G\5`QoZ2/$Ȇߢzu!/?M6zSc ؄LP_uM`rd]ݜ^Yߧ{-jQGmpo>JeѫY)Gt>2I0Pւ7Kݤz-fU&N8A&ki@ɋOX}ͮM>'[HʻC{ w/#2̵w[ƨ}[X];bk"郎 Y^B^֐Υܘz>,|d~#'(I2 gz]@!~˒+wG_^6I(YEJͺn&[5_h Eԉ<@罳:̗T Uԉ(T} zҫ p:){ܢ/JP͛Cs7yo*AhUTU֎Տ-ΠQSg^c'3OerEŔ 'N<$AB!=z|'s"oc@XV_Guo ;Q:&cnNF '=I (~06q/mm㞴"2#AX Ed硎^#AiQXQw~/ Ky{ď M;d]}}. NunDi4k2ebrM (]RWKY%벼7_ zc6(yҵ9.YL2ݮ_)\"PhSit=*{CiiZZ=7+CGK(o 9Jn eK&DX{BQ] h*P)kOuS?S:WKd-1OQM-AFwYlY<ٶ]PPxCg'6Bيo( ޓ(6:XO&P.aԏ7Z[ڑQ2ļkhhMZ&CXm<[-#oM7m("#7c~ Q)kkJgEsQV@g]2w$mqUkauVܞ$ұͪey NOVV}q%( 9~R1KDY)s\{R/aSI| J s3V73վTؗ`(~h;>JѰgNvHg " 7DdreN+AhP2ZI*]5[E޸S;.8E ׉Ku7@eM5.JTJkYMn6qe2*oHUa6SK8Iw Ɯ$Yx@Vܵ'Pyu1/A]|*kKeCq?|ІQ(pIk < 3הHkBѠu7OQ_ny\rQxux3GVCCc AyQu[^D1t^/QjܵmP(v6=jrfҺ@ny-睖wU{qOl4\rԍVYVQmPYZ_b훅xl-/AQI9&eFs=$p59H݃TV [s*RVmTKQR"Ƅ1ťF{ H+fTdx4 E][^7<e5ȅJr~6WD|aIez{E*A8Ӣ|#kH+P;mJގC+\Vh1Ҷ -V֗(^JTU:5٧ҥ͏Td0Pmi{[\ʞ:̶sK;~Pxmt8#ٗB}aj_cRVP/PyqDO5I0P4(i¦LY{YE2O$u EM{wmV~̥ɶ=Fl(`*h%(>U_'\O|Nr YA&'6PxCdu$T'a]6X͏ez}CL?: ̴rvG)tVCY*ćp߽](lcVp; 15B_Y*r& EbL_732&F%+6ʹ-ш|m׏WOl.( /Q~TѲ(I0b>x ¨&ɱOP) Roؽک9SVnŦx}aqthuUy]{e d} 'Fo3v'a9cmYSKy!Ľ>m^Tۥ.mR4,v qf{"dTmT% t'*kT@֗(i. 4=8 Sp(w\O:Q82 d>phz &+vsLY9r*)7㴓ۭ- DAel} R(E^ BѠ $NJV0BM7ۼ  7E?(m a5nܜ) !f#u ęcgeKɼ0gjpP⭂zDZoĖb^3=A֗&Zm PaE| "xkKIpO%喕3w{6P)UArzuSU}vQ^/Qļgi;Q([%RTVCgYvV0os(!ᓕ IEG}JѰլ6zM܃J(+o8^BD,^??(WfEsi!~QFIsw6{gwp6Z%8b2!,z4. olL\ ERF9M'Ch&v~8lB wJAךӺUYr+7UP4(|L^fIV 1'=-F ?Teۏ#}*EâÚ\0Ƅ$wqJY2_v@@T{%t2޸,픨-"C %ODnqĽ$_84{`R4,OK01[i\Kvl]-R֚-אҡSigTFw55]&R4,IB !#磵:l,+ϊ'qn=7OTd36̓R'ڝpLU52(=.=ʕ;-`%~2ʝA7V&{@F,V?p+!77YYr7ƞ:xK*%݃\uD,yFki6 48ɍ@<o^/SMݶSKP)뵛EMyMEqݣ=E<'{6 /OgJT9ܰ K ayZ~hk핂5:Njy&AhPUƦeSE:JڬΘsjiv$z*8ܺf>JѰιuP XX&ǥa>@,HRzw!r~:I̲G,{7GJ%nL۷ Qʶw@x\ՖXiSrTV֗'_X@hXuI']osG/BhBَ O-+3b@xChXtn3*:6x+Vfwħ/QTOԟ#T66'v-# u=*EF䜇ØʐԵTN寡C]p umlW)ski[Fpn#69 &ދ-7TMB AZ,ewVަXFlSRR/{geRDS(ZPuB^/SM.>7m(OTdSSs{\0Sg.2эƜHLQ)X>RN=XTer`mRP(Aߣ]V !%-+)<*GOkP&CdVpv?h~8MaZJʑհA)̓Z ˱rαs)- ®P֬d[D]4I/U)%70aހ6+nGo^%X/7XXqV֗&em0pVs㶛USX DW\Fo,[G)[v/Zu0UH1%(ؔjTX9)/z's /O}@Ƀ^ UJѫ3&\[ж97&DOp/xq+c"뀶{jTEZPXsq}%uNn[Q%OhX֘쪣 asCa7\VIc p( Si0` ش!Ϋ`s%mVnM-}w1yU;-7a_QTʚJeT܃qG)5Awr[F*2(wvJM4RS)G\;]fqG)=¦.5r"/؛)7BD2`>FQz JA猗rL2kGW(MºA\UYK۬l;";PhWYڕ=Y2ԓg!ѓd7oP)[$rifyi1}DBѠxTaݏ& !{wf)\[TiG)w&hx hUmFb x]i'S5W ZP̭cX[YǚY"QxC'5Rd^#/`& e?tZ Z\bm^`1xTcAܗALmQˑe(l6POY$U}%B$>K$OUunP)[|Jwxip5Y=wp> A$OCQ)RV(~$>g(Eò>jNZμti VKLyAmGN=դKCsP66Or\enɉGv!l:K,ڣ]g+Tʦ19 e-"Zd%hX V ҡ)hvMդQ4;MYntD_R61g%RvsO W˒(_R`H'^Ġ3A Z+HtDSӁ9rS 04|Pٮ#O%Iɴ=C {~}j+s_RhᤘQIȡxi_wku۞F FAPb[u}n:7 | cm'[fڧVx${/IKvl#lJ9ٷ s4p%y׭-)waQOO;L3uUrPV|dݶo%kXĶ)Cugj:ΣR•],QP$p%.%A%o[sԙ?*ȁ{w #vo >qd &(xW`qޫlp|#O7 Yrx}<!۞ +<xJ2noa^C_o2fqvlF[%Vi{2]#CS*-Բw -R8 2枆F!ܤ:PDϟiiPxzbVEoKCi(K!O%%IK B֠r`˫.m{%N5(P#ZR_Q7`+3IIГͶzfQTLԎ-䭛^ph/c,ܜp]U}Rܑ3B!o5΂c)/ڕv򠐹v5u$O@| Jʹ=MK\Veʇ6ܾ uh Yw ^ H'v$z+y0۸[:`F򪳓)?2}%PYM1G\㠄p֛P7ټ6I9ry2!opPy1T-w8[hH2V2CJJ;iZEbKCkIbVGo q yҗ%Tl@Ñ; UJHڎ6ՆB֠nt;/x2L<նAX }FTcr;&*Y"@g忌S2s):yIvtNW-%IOPX wld Nz y;+ZO'9[{tydLqa >U(o0[^uR̶6ԹȠ2D|?_CP[]oRet^N#ij66§2ӎPۼvy=CM"+'_3%w߭1TqVNHkA ڨ=3K2f Ajg][ҀrO}CA%kXۜƒSR`^m;ԷAYX" gi}Q3 !//!)o:(ŔRJGl$ K^Po/oUfmCRvɱJVZ -lI6vۻkmd n,M;|m۾#Lw8 N7p~7k*`H6=ɇT{H}\ sʫ9iL7Oq}5.^ÁIcoxQɛf ˆ܎bԎ" A9owHpFd.Ȣt^6 y `B@#ZA4|oQ-yH*&]K-VEIg|%{I'vQcl^֤CA֤cҎ#H'iq*%e&yLHR xi=/ϭ$Kf uҩZs;$(ʶ'm5( µV qOS2򋤁2 AF[m֝IyFOܷ5,un[2.ɛmFfS[oJj'Fk;)+uS/$(d qKia?OٔPz։8Jfխg{IpEhA!kP&ok$\m1). q ވNYq"nGF%/:GHu&zh,ȉkk( o)fRK9)v%z߼4}Yj ##I'E&6d\Wlb?!ڠ5(/3dj3B֠\h:>~RZ-*YGٗ,dc3-fJccR&6kU(d -y 2 - yٹn+NG)ʾf^C Pa6ǩW13ZI54B%n)q2,cMJ[B֠{% /_ [h5 Y"k0/|Lʪ&rq N5(JHg4dT$)QC=ޠ\Nx#i]G{Lʬ&LA!m͂c洤jof_DvXJ+_3{+ReͰčAoF+/v|ٟFڎ-&5' Ǐ #k, qy Y"4$nABF)ӑFbOV8wj+Fh- ӑ A2uXВ(f+r\AB(i y;&eA{LVŅ"-/O$J K[1]Hۇ~Xò{NhsI/-/1)خ B!kP 5߆'r!|kF I27,~zy%10%D4B!ovBzSN;T%ڍuA{s;C-ޖLIYDMHo%kX[å}lkqUک[&$U~K8/$U~K2JH WYAʽyJT^G:$UD^ MGI0r{mM d ʷS_FVy=1) ! +B_!D'AaE(O"?h'RV*BBh(U~m @ڎ<>96 d J+#kZCa`}Li !kP 8ͥ)O'м̴ (T~60Jj@'D|VE`?`XηO$bOT TV*ZJܰ"C Eg%FǐȌ, qA?R[PnQԶ>noWzrH ',nN-ZJְGQB{`uZj,TⷶVE`PRhsZ[JsGkeE)gb/h&7TV*J%jCeI(,“Zs7#s. Y)|'I1꧙Dә<m=]g *pHܑۤ\45MGQYC13[A t%~ B֠|U2'豄J֣Ȋ=PXɪdYw2BoA F{B{D}+K@(f~+h|ۏ+,T6IPpPʎ;eeQlZ골lUdneJohmtE]4`B~IK-ˡR-EqL:Jo("bKJ5wDQt ^X*TXݺ١P}5|yJG|TBO.<ʚ[חߢ"%Aq3}yQX  E^S*#,.^T2>#n?sRH5(ލ0 յ,xQX] P-XZ*h y? te*j^ |:SM)E>Ƒx !kPv6~RD>zf˙ye'zĬڔokK Jְhs>i%魬dUdqE*K #u)Rq7mr(d qf]Iptb.|_ȋA%/9'I E8u[YZaO9o- d 2ǥ.3J<)z"7G甑sJ'zFY)E ׅV5(]^ZۙvCÑ;I<4vPțov+UIb[JVz[ݲRY+=gmi!>R)?ͮ,o,-A**" (#r-C4HQVVrh yS FZjjs_uBy?t~;nG|Uf Ksʯ:m֋ o^/N˯?!F ը1_eְ]WEsDϝr"Ώ6QP5VP5(!d²knh PPPEvy: |5SMkP5(;k%EKm0kP@Q8եNe!Ĝ|Fx!Ʈh {|OCa֠ Akz訫»_r]%5Ҫ" C)Z=66ԱC5,ևI-* Zz#YW7ZJ8sƎPE~B*o)Z]ڊZeְ(׺Ewa*=pz8'v΅ͅ"\zdQ*ԏ;TN)ZețxZ¼wW1@ 1;f~h^ՋXPy;8k̝TSMDk1Tf K0[2!9e=b]Kf [@$jojk!+ 3,3<,(|y_PX<=]ѝvmOe{ڱ ަdQk|hc&(,Κ&j@O2Aeְh} " e=A0Uc$TS( PJ{hܜX$ #3n$^ˡ.q:Q{ԫͣ2kXO9K;0Y\q #CY>Wt d]]ӼwQ5(UZZ~a6jo(,Ί&j%ֶ]0kP\LQ).~))Zl&W0kP IoZ(xmzg5@n&L0kPbk%zi(,S}tO8YqcfB‡ʄYD`ޜUYLQ9ken3oSg3MHmDYb6eVaGhG{7c-Dy3?mzZ:Ba֠Fk~{bWW•,_X @DY}3wLUEە¬AQAZY LA}SSCx 8 (e]ᯖpyv?J/sb^$tcqT SX)IO܋ ;Z.!xfNG3EX:YbuɄkuآ^&4ģ%Tނ!κ&ʁICN( A'PB(kff{}0kPf>a[mX$ S4g9e[Дvz vUe81Š5JK~~NG93sZP:ٔͻ`~~ꉚPy 8˛(Gf2o/>!80qRe(;~"ީh|"nGa޺hDcv#4 U LJ!U s~R~yJV;~2}7D5s9ݯ2kXԚD}Ιh.YG޹DnK0,jܙꖸzf JDm1%U*XY:.p: /+x!BmF%6ݨrօdASKxES*GlDs:ʬaI:\e('Yj*K|D3;65-'0kPgS~^ZT㾢,yj^-({=ٌQ>@(y-yMEC: ARND+z([GޥTü‡?' Ɗz|(lLHZ$"LWy8{lQN)Eye1JW>oTȊ(h(/z0kP~HbE|hOWPx8(yyڔʼU-mbUSPtNG= fRM0eގ[jfM0qZK݉(_uTTފ%j'ʒyxNQ5($l]*UA?Ҳ KgxDs5dC&!W;sy/@KܟrLUފ%Z'ʘ;]Q]ſʬas2rQPq筆~ Cu=(z=/' ũǘK5߲a~D^DCX6:eCm"ލ9Tf EJim2%J~95TCy#N!IO=@GeְAgcܪ5$5'U-IEO+=Hf:0kP޻`RKⲠbӬ(,Nԩu8`oA1> ąu(|$jGohf JCez|N+Qx 8kQ 1SSntQSlEsjzg A)ZEփʬa1k^Ar[LZ}(d6TpTހ &j3wj;C5,muW%e?z{ȺXsK*:!Qk qYcW[u!,=û6¬ARQ]ę(xk_۷=>T=TQ|NF1jxQ.eְ%Ue+ "څltF}2sϤϤ~) MOSCEamϾ]zU8ބ!'ʊ%pC*%n&%7e.+=KڞFB(znSʼ$>BH~V% n&ӡt|8˛(_z-f _T鷏EXʂyx|i3P(,SO=4SKT=/p*),vKxOU#'ʍoC5({ش7RJXuWs‘:Q>) r]Xt/.M+ղh7 ogtUW5,jK<+ `WJU(wzfˎ8ڋ¬ARgavG1 KբF_TfMq=ʚϕ5{"}7DYszWapf gJwPk5Lb>nrmf__YD3E;GafGEQK\]:QgK=JYD0qF=-F|UGL-:7∳ʉ2{fk:g ╒qXږjf6Ss#'ɡ0kPJ6e[~e$f r \0Dk MV8к'>\=\ѹ}\Ѝěn"=y[pؙ(zϜ!,Κv#3zh) Y}26ͯ *ܮ=f JJ8 +l* !L4Q!QuKF-E93Y0sͲA͙/UFx‘(cp</|bGa~TW#uS,&7)CC;@a֠_Sxx)(f(\V }Ge&_$A'3j,㹟LSt8-r]Q>W$Ms`$n6>\ E>ܮ -}|8(xnn:eݪf1y0hA@|wQ6)B~GEYlyS8rfnYRSKUF[4qEs;s!9K֗,b D9<3:ژ @.vHoi<9yT$}5SU̍9ќ?֩:QyW vϵJM?k7в ogUe>GY5,?(ƆpC<ᨼX$Ι75 U A{{? 3.+,j[KG|^՗ka!6P>U#ʹgjQֽDqufK$ԍKGlo&qV8Q^̻zg ޜ@a"u|x<:lS[z % FڔP$\ uv&ąʭ"RAᗪfbnS ۧ |FQܖ(-eհ(hRpYpP}XFQwtkOc Uⲋʏ %a]hwDY93?We֭u)!) 1^N@oum ge4NDAT֭muy3~VʿKl}NH3}Ub6sD>YcUVRBvqWn\?6BªAyClna^S_x#63u Qܽ8Qֽ|ٍ-99W6rY DwCTSx ͽh9r^9_.uuZYD?y"`Aa}V ~ܻ(xSּ C)f;5QXr&+#ul2VP:(+i¦:wϮ'(QY5,[䗶/6F.!;;S q6Q7uJYEe` 6\ۿs*oMySSmN**+BvܣBMb,p(ga@[NٍSZ}Xꈳ(lSeͽHs5PX5(u.jeQľ;s!6Py8+(g$?hUh_֑xGaT(#hONUUV:$5 Dl3k֩:QѼIijPfcGXIA ʹ oAge̜F եH|,;pu @7.BCeհ8 %e}?VPY5,.k^%!BHсmbW_ɫ](TއS@D_TVں䜉zS.@EepַYOS 9~|$=ys3EX5(QYsҙ'os6gʾteeհ$p^9Lי(SKn|OURq`t& w?Py/]}|8k(K]@\Zuo 6F%VNeB<0Q"hct Ђ/,Q:W~W q7Q'1RGPY3Ѻk=|J qUb|n¡yH=2W}uR&ŠeNEEYqʸē;YTq:֩:QOȉ3M(!B6`bUd(ߑOĥEx 8+(o^zjײݴOԮ؅( 8n*%sx,備~]Wu{Jjrismt/EQ};*[ |Qf+լyl|(~.G nf oAce[DY0q}ȡjPbHʻWϱ>\״LaKG7 'lٙ^$˂s}QY7A%C︴F,G&@*@IuuTg3!YhxPxַ!Ӊ&ÂnSMEyNAN`a "ʪayy]P!d51X7LOU]QV ˡ;?6te}RGQyN!N>sn?(ʪaQ/cRٹ[N % #5Ceհ̈́#dxmMb- `Dyq'H|[ʺpۼ6{v*UtsNL¸ԩ_TV Kތ8CQXqobCeX(0zɻVtabM$9/9ZCa]rIQ{|V;;SeNVA}c[j+"O3?.{TM\w߻ ~{eEMGHBO92QV9i#DDl۸ӞnenɊ|BjV$7!EóJ|2z:$7P5P]@DD.;ZA1x<=KVB.I(=SN+bo^MXD|ȉ*b2V*_é@.Y ?:. ES2s'b 7Yr+2a#:ׁG\aWP0̭1۶[R4,W?dZ}G;P4(Dc>>l/EӸtz"F0D} AG_C| ~&6.Q(몗V~+ƒ|W=dL"#Pw*֬Y֠DlJ>i>9pfc_UG.R4,\h x +sQQ`?#&ʊW}O7[v{w>9h$ޱxpV@TVP(Wq/ίyP(twc^S>܏RmN-OYj 6+ imVZ_ws֊Pc7LPc5xp&hpѦ̊y$2,Q(݀m}y9L;Ng=b8qeoB*gaH%*ԥsz NfqSIX8^V$Bn%1iPe頞˒TU,†Nq:b3׬q̣OJXP4( I3jn*“x :M$c)+RoJsh)vZݾETVaNE-qe& wg}ˊ<6DYa-4QTR ppzѻ̊jo*⒧Fz;Mk2.y)ʏg=bh)OP(umRN d ߑ$A-+( %:G)m= 9Fe&G,TŢ_b; Eb}T 04U=yih"aCT :uCY f JRG,TezڳVx^DVʊQ _'P(|Ο.Z][W">< #ɊS 쩠^/:.wqRoBhP w5UvTVaGł,DJV<oڗ1^bg⚌$ לGe<\OVc'\D&Ix*.ݠ%$6+B|RBѠuQDR](,Rx'+p o:V Eb}0[R@KĺDa ,jYQ; BY_E v.Eт{7*( 竽xUDfʊl׮# Er^{iԻNQ}GĀtO=bX)̣dRd@Ũvѕ w7wĞ7*+pg]2-D e9!oU{?Qv%~Wwe"ڬH_rCCs /N=x8Y{Hg=bm70a17Ci W!"EP4(>`Wħ^V~q$az;SAQ?Mi[07ۅHQʶ6}83Ei2QY3zRVbG\T=Fںz^9ZQ뛗xeMNO=AyU)+| =pOE1UDV p=ԴD&*Ek2de*﹞GYqOV.fO Gl/Wެhu5P(჊VD_t uXRn'eGѷG){[w#86glg\.+L}e7 _\Ž|PXOE;)T޳X48e"jv5/֞v(GhPQ [Q])kjfiTRdpjY;g{QX8 [EȔnh( }DžJJY/9qOEfsAWbAK½Y*¤c3P)4oҎd( pRa<~e'"Z0[d E whwq(,QX'+6 s2#((-v֘h!`wCgh$C-+ 3pi<^v[)w-*"7Un/$+L7EfL FioYƀnVTCPXqOV +󻓥#^&hPN<*桁dE5a[Rpxp&F:Bx޸W(I",LBY{y0|YˊE<76% EbѡQ3% EbB Ersi!GazBY* BǝJm]Ìʥ6z?0gMsү S0ˇJFMP({J"D\½YDzB0ֆD\r-qOV k.TeSw٠+S_} mc'/qnNw)YX"IP(ۮ3'e`v8^?JѰUJSm3*Kw#ɊOL7Z1F+%B<0MƖvkYϲb3%ˆQp65ApnL[I]hJѰpUW!ѱZ?**"TsCCuozWn!+Dskځ8a񻥬d~=D6@|ʲ=yW07.'"RA1SuOg^mE/Y*ŸQI)`@o~;'nۻSV(; fym{]\V 4Ms(T1W*xմPXqOV_ 1%PSuT]s;DМaΒVdX&G E?_<}YIR1M0KpiXc9TX{"A8NY(@VS>PXqOV ʱ!vQ){va^v'@De,jQNڮElYl)1wex's3Px8JGPeYyohV̈́нtD*E5 6(L<_Ƭ@7n AQW&}L@(,>m d lW®:ח!ͻ=b _q%R֘][˺y8\,@u-+ f2)e}e?nSv9wVn u-`JY L9cov!}Cy*+'Q){?ཱིPĺŜf&PYqPV,%였r_pFWH:-]8&*3L zW' p# Q\6"BѠK;ryهS;ҮPX}8ZE'NP(=G)hsw}U7!%YCE8 U!)uQ(k $_W QXPV Q'G]+QT/}V0W2z6<LcACm\G% k#&OcAUw^V :ͨ c&+QrJ;g7QYQE~G$ s>B\"Q(=_h}~M?]]$9rE;^ J\U"] ]nvfNU>"F)uu.%8DBG'TBP%`z {rMI2u (6-p8"o @qSGnŁ.^Z)+ #u+oBʞ3!Zٷ[յ=N'K Y ۔w saEN)!z2`>M#Ah^~'Ӎ= X<{8YE)ÃP:D#:em< (;= AB_)+ fqeKvg7"X2/N1ڙ s-enh6 ([v#:eE %-@qV|Ow49wBn{妬L+#3m#%רe}#Dw,>5-+@tO@Ѡ|zubz缍JL3qe?=Ɋ'^"Z(^,i )/WqJ};&d z *9i!R(!E?=:m~x{$ ^L,PoaNV&uE )shfKw= Ľ Y8 [E.&AOI@Yb4RhX>Ztچ"4y8hQ^ ee›vP4(ޠC2l,QWMڛJ?,`?XԔRfBY0[KPxF 1&| +p5Q3@κ-/hP6Qk8KTdq>]a^$֘t4eB"򖕃H@ѠǮ½,tOح& )Kz_]r&O/䖖6|!ErqVEu1̊X򁖸{煬XoaPV(" syEOxS܌4mJvܵEw*x^Ws XBu.ET*`E)UhCg7q{{ji'ggI N4@A9xޙ{m4\*BiǦ!R4,"h7͊Ar#Y 0Jkq|OqɖP4(~to~ wrּ Uv!es#j "ϊ(H U9>گjvsyы[W9T Y £|-;P4(n ib`nhplPKOz'hPwu~U: v7P4(k2oYyU0wF6H@tYf \$`|z q*%+ fKݮ 'xsqxw_&`z{Q [)Er=X1ȋbJGiIqAW#Jh"wiy*'[ؓ Ѯrʄ w^E!R?t5PeegmLD  ony B*%hP>EA@Z߫MʊI/*&q LE=.E\sYyOp[wBV="*YyOp{t-zkA{WƉJ Y £ *:<uJ^~ۑ7|uq N򦣚T\HѰ5-UqM-H'룵Ztg@w',fYAVb~,*k[1obzLCC{hyEt^Ob3GCK? X<{8kZE&8\@ѠxLfen¼NJZ DIVrLYR03kXW &Ζq|ˊP̶p ч)&[SSE;.xrj9cQSEOf$ -_H_xmm?V=jX_HѰ}W^^E](ǰP)w̶qDM@Y"]p꣌BܙSzkÞ^cr.Ľ/hXUr</,`; $d{qʃhBDnɅl(1q/#.UI@Ѡ}7;eAPFmyz+-q(peIeA]?VMvZj*wQS{GX3?'\@NSDbj[L (+ozTƛp@Y̓•t6+ 8D”aӛD̷r]CQ&hP{AkRJ&sC:%1@\efAYcA)p2RVjo^i/.hXQgUZߔTY z_H~FL% 0jLԩ$ JJn*R~w}Os/b1$'u,c]{;ڣ su ZNdXvDRkCGc,#-e^\@۸!fW^Iݷe ){uCliSH>O M4AUN!dgwihy^H=Zz*[ J<>>n*c ZV\@Ѡ9(*ʹPo.H3m_?Q`- ҁ3oz~W%ɣqge8tYՎmlDDu1J)?SeUfNpcV4IAʖA;aJ m:SPg٠*_KSyD1m6TzmYbJ l=4NLNU3kfJν1oWRi2v`<JQ)Çf&PF5^MT2溚-9]ѨPpetYù}R1PwJGP 3?Sw3&MxP^HC]H(U$AZOǛ%=u݋}O^{>HI'ꆹIzܪ5Ơ IÞ6@iAQ}綬ʶ6 )cFcXo_H}b&nHHٲOn6+-y5=U%:܅xgpFuY+RB{!e/|ZWh)cפnbmPßm/lZڍգ>XSeMO5GNf"w; /Æg W:BkthOTFSQpbeD]B6Oh*D{[s>+58Jn"ΝPv;fV(}VBpVP4(綩7U>+8dnyk_B%x,~Do_?]5o~//PKJPMFoPK-lW settings.xmlY]s:}"wG0 B I7a/H2wmC&v+3ؖήֻGG@-Aii7#\ίɠvu MM14Dt; dd:MIwւ˧+gaLةWռ޼'OwCy`z n5ytrUԱ*Ƕ_[~r qlccWYrX=Gɚz#|*M0tv&\۸Kw03v?s,ZLڍwj k\S2rFm 6)Q8t Sq!Y ҨF"RaFBgPp3fr_"V9vVK!;k4 "B~e>2|(6. .p1E5*!= &X{fWw0g&֌ c,Kr{X:N-@wDV.7 S(ĔmOJұkھF ͯD1&'Q(PeK}j+xr4yr[`> P`Le m `Sڅ} V0Iߒ"^3gn6PcCJNp̴@ LkJ5 cД[ʖ$gCh%׹W|I{k i[l4݃FXMF Z}&=bbA0,GLxD& L1A@9_bLi$M O ;Yb&^}C?>;7ֽLRZ,j7Fd]:Y@40E\}3VLmwץ >IY"(g+DDl]Aq_~F揩ڐÂ^ ]dw=1F,5PPD }̈́gڧ\2)_w.[dSɸ?e_;Z3I6[3[m)5ih',khKtD}خ}PKqH;4 PK-lWhRհհThumbnails/thumbnail.pngPNG  IHDR?uSPLTE   ! % 2%0!5!+&7%%%750(%'!5'7&:3((($,5+2:5,$0/592*455-A1D&6I*=R5ꌌY+[^dߧׯ+a3;]+s: y"b7T7bܑ<6v5Oyi=|y􃏮vrg/wy鹨0}\FGŢiӲ7藐9y)+zν% 5}ŹM;qh.LGck/wz>c857Q@_ᇞ&k_iԢ)i=| ]vC=GHNGEqtsh4D棘&%m9\Fkq52yA1e,晑ZoRNlZrqc;FT<1 |2z_ԇJ6!2 OxʜD6iߞoG8O?/e,Y9xe4ޯsNVȚ!whqN I{[=BӍW\KZtd4)p ,%7m!?]~D/NNxW 2dU&"10ɱg'˘ 핌yr۲9qDsGлe͠wpk0"z~Q-v7}2zeS=omq\)[??KzzD:A]~27_хj!|qx>'cF`|-N ëW`!]EtzgxA>g }_FǷsnut6b__P_m,},..)(2.H9)ol ""^ \ـ=4 bXb`^\鴡akɭ"ʿ-|AA+5 0fdY M'-*@aW6 xN}r3 Y(GV?!Bæm *".%2(#gRdR _P"!0pdvq =)rM"J'N%SU\]Wя?:swF̍7ݦ%lS`1--!SMcx+x{.F1Cĵ&k<"[ǔx"3jGkÀ4 ߼OrxN+f Al{@HG_=/F ԂD_2m,),rLlDI{s߾/'VDT[_i##hF#F|}Mv9C=Łp1dNZ3~"SqڼcT1Dc1y8 NEd.sAP e}H.#uZ%# Sg=1?(hG1q M6hv񎢤HHdۋv j鷟 _EK w'p5iq̳TAO7*mZ896)t}8(dw-kb\N_KDy8-: BNdue @ z=Ǭ{g`}%T]۸utc҂֭u]lԄKpߢNoD7Re'$sb㋥DϋaC""?9!uL. >rP1#&],\raUt\nMEV6/ m%TVNeAfk|Iwы /a 2̍;;c.0OOR4999y +Dϧ2S9y 5G9"h%=GnO{ r1ƪ1mQзD_: ·(f99\r Ż5!8 DOS\{qEh۵z&2AWI 5 l8Ҥ]v'=G$x>ZBD <'&SQJʎX%HIAS}r ۗ=Ce^u*Іk_\E ׬X:iWH1Oqrx*h9uU14ZTcqHR9ӃϋG|+:UKvم6BbO ʜ< 5sM7he0AQv:"-Xj,`렾ӗAUs=G?{kekۧF&¸{cbdQȂHcRLRdGbTюsggg̞~24[H 7tBZDZy9窡r' ij{aVZs]ZV6,#@f%>l8# N?O̾Ϧ/$MɡfPH1=#wNAgs&{:2/:̹\[/äN/g]{%#~d;3s3F>fIX\dtOdoL_x4=׎*iNe 6􇴮.c,A]ʛ4Ik>~brxܢ~_eRSBZ9_ff^՚9;ѝ]H+ ;e̖o[g12uKF&7z}y;9]?<.H,hha.{;WzޫV+.dO!Ny{h7l;'|7 yCuyqaA;~3ɱViN6c/n5T! i@kk1+dt:p!q<בvv%f3lz u8C oW{-\J |6nңcaڏ~f0%Lowd6g-zAZg8]' eo {X]3QSC:Fy'rΧ9lT~*¢P߂)O S سc*`G_|ϱP:=24I]KCN|> JBVm]Y:XsKΞ3yUE;-$*|v;~.z|uwzͲЭVs4Gm!i6ȼt>+@S.1%m,)温*PR ɗ󜈖\ȲH;rɍ?5SJmPì~9j _>uE2•=.6ڎ?F?@bLu!~e.SwuTsS/' a0_j֐O3FjRO*R#JRgQRD :uJ|ɡ7f9+OaLĘ^RNf~e}lA Z_beGvV٨Lr7p2L!“f1`bWW8uE7YEߓ:{cWNECK:INSM~LHIP)oˏTy8b$f"?zC4 "/YG3Re>C֯)ب "E?CeQ7̄e^UeU}L@(<? \lp261|WTM'٨4k =X-&1 z^@e^"6HIp)Ķ'q&vGӧ~ӑf0@[FmߺpE}5jҒ.Rn_]Hl qqC2fg^)QFg,(s\Fɍg=F'$ اNg 'd64]')WcgR:p~s=@P%U[hDџc :9#h'h9|b0ʲm⚥rmX90@P=6J+h]աg@ܓ.\Cl, z~KoJbD p2ET։PhSGaDŶa1RS D ߜ7sү#7|(PP9ɔQgCclTBiPY@Pwi!N%iF:erXDLrIPM%YFfGkL(r,{އK*#ߞDtz#JJJCS9$K̋6FD">dPa-~YMAQl|\L,7!ܡ4Sif1`hp끍JA+2*!C@W?@A s1&lu|e~bqs~jgqՊJe :1ǪنffW\b2.FoFP]SF) RYXBvvMHqEyzvJ2/{<譕UU -Cjٵh-W0(uNV<`wk֬ ;WӒv|wZv?.@Fǡnc 'u|yPy\U)DfZQptU䲃d/p2Ԣ g<>ӣ{Q~η,6%{^7dH]%`7"f/ȦfU6JZwen 2oI'.̄]ﺟtmusss3 W߯scoT;U?w!viJ>)>.^+_.¯;y^y9ջe.`u\ @٨S:HFMfl3/Q9 r8/36֬N٨/ 3Nب}:a3(#Wt-F6,!ﻲQ+]٨sPQ]QJl Nh٨=(e`l؏qZva"%BFEp):6*? lԇ Z35CFaFyFglT2wlIJ}ب٨z67*FXc0뎍(6*BbQLSF}Fl􆍺再JG('-x e>0Qa2gl-RJaDWf'Qy ŹQ(6Jzdd&tl7بtF}[@$PlTFEQFR"-5QglvFA`LT6E-u(<8AbTب>ްQ:h 瞍nC%`z.QtFŶl Wcb$(ax36j7JbftFpQu*I(ОwFQn٨Hl_lFՑX"F}m[6 )FA>`rKlvFY:a` ݱQQE 6za"8wlTDFEDlTبGl԰65+,ceza( cRfWvꔍ IP.=axlTQKn(XFUبfVبe4\b6G=u҅:醍Xפavyd(jH6 +uhWk'k.بCUQ> Xz$ŻEjV%6JEֲQxkI+F(Qd霍4*R7^7 $Ke&ze%Pl)^Rw&^$əbXu>OGM rvlֳR'ѡw K6\þFCAC5aЕo;A J4Gh%uC4}!idF{'0YMwhN$+:>Q?CJby|\ :9IX dA3k堁T]TL Ap?I7zΈi|oIpE9R1fpOl}6[*NK=eZf`&GF ԡ<' hƄ;tA}?'#%"Z7FҘy4fQRdd>=%ޞd.-Kڂvb>* y|<,J[vz&K?Mߦh #p-\^Mj̥/w80=cvJry*q]y"dbP^A6k%1#.Ɇ%d&rE,(r"Hv@4?HW״YhA5$ڸ"Cͩ'.+kVcK\x8z,mi01(}}z0̇p?č5wSBahmt# bwvfw{ڊLLL"jE)C$?))џp+da\:F{ &]9=z7kRiK3;#Ww<d7 1ȷdJS6Ȝ}?y7PO'ׁu)Q٨nKon`WzPX@)yyJ~b7&jb%ry"UHL EWm23>62}Oj6E4lQuu '1L&nԼʪjǛ Ǎ`! Y(1>?:Pe.cp+]l9Y6jبolqh,n[CQQ$;n#Aw\RQʑHÄmDGŔ+NP\qDJIeN<>F|މN IVd> F㎁OStr!8Ϡشz.STylD  90X-d` MeCLҞrާDP^\@:EE俢0ۺ>oaL#imllh;pNR8ܫ5'b^Db.l4Z(^b3z6=6j:Kӈ1O[lT=*# vFq5!#cxf\tlV:6cFYMF݌lTD_|,KBfݲQi`l߼e@QC lggrnW=~yDcZ6]F |%\_-#b%-F5w:;= 6*HaFvبbƍ(>N6t5{e36jg67Dtb QǸQe(_MY$>eNFM [O𖍺fd>>wd"PbglTFl8QXGGl_Qq.٨!cq6 >g}Q,DQl/Q">EW]s6 ('Q\Fq~f@bX&QY]󅔍P(Aۇ('(+6cl祺Ny'lTF@QO'lChW Y<#%(E-e&k9ب`lT{lTFP޳QQi%+6|'z6w򌍂aQ S٨6(6JEf㑍R#WIbl&4y'l$>@lT #F=(F بhF[$64Z0QNKteh{n`~P05hlF6 dlb2بakua  6h`QOI(baL <7D`n|.͒o=[/ϽjNXSC1 j銍j蒍: צc{fjQoj(ŻQ9^g( tv6ۅNLVyk6J~lTwq:5tFlT/'+^~e.zKDɩu/r +޸Q 0q./7n_F3u^viI淼f9ҲE?n=6ħV41" .""/*x ZK*)"|a3p-}hrm "k |iw髿W'hyWюz9c!%|z5>tEGȊs4tČk13t oCw6@{4!^ͻ̐<٨^h~=M{A\J n@ <9ѩ<2Ȝ̰XI#%8˩<_/r(F>_?Ect!M eh c9T_?.É9inbqR@r2uFաKQs5ڤg&Αȴ0|q+RX!=BFGDF"MŢD(c-|f#XajN792o?=m2@ŶJl56i󫑒aPb6K5j ' k[)HLij$\8i5" Nb&x;ķ;ss/аHƢNBf%E0tK,*O=?FhP=EV@Y#XTǫ0 ܕHyamJ355ߐ#Zdnrz7z<G@X fyEI%/""Ў)|_qhs?+p'~ռJG觯VsWͱpgPyxVHSKZygm LtML5E<:nf^I@Zq TT4m3_jxH0'8mR0oP5밚lnyHmhj%cXaUV9AF)s223QQ\W;'yDuFÕ2mc!-VjQ)-F#]dcw"n<=(a]O[qìq#^?4dx{lTC "Ns ;6]/^fϋKyW2EW7cWU^A6 <+^=mFǻFQHz6j!Pr)䩇N٨~d rXe`xrŚ4~٨F(LLװQϪlTsȐŦtQ!ٝQߢ>c8!V:%|٨.بbQ0wpxץ26oz6j Q}^eVc<"6JF6J16J/+,a_eRd"/eW+mLaiNZBxXbݳQYnبh }6j[lT꧲Q*BSݲQɯQk6j}z6jZQ7sf*:ܲQ_WlTwEA灍jгQFQ9?sa(kdF5HlgDT6* 4Jĭ٨Je&-e'l Q]ب$6&eyw($i(lTFE"E e6 (*j5lTFQ6*>eraf•Ǎl Ֆy{F'E=lod.Ic@?\~;vn.ו6+6jF-{F-Wlc2QJ:[>6$\o6wE67wBB&E>:i/QQ6ې!QQQ=(ԲQǐQ.|W}}}u隷Bens @ q5)'i_61-v$wq> lX)n[6̝҄f:luFE(wuW! a~s;Q?N yx,D"B,$ӱ<ƇXB^w?ElT…)%Ǎb$ɤv7 ׸QFݡg-qt2ױQC/#vC(ʿ;z^пп;B9l6k`oAA>QTWlF}1nq3yR6+o٨/](e5ѰQ΁(Sƒ{~m^[r;;(b'*w5M$Zdn/}8** dx2c5o(5nTK(lT|QܱQw"g7*a_ wS es %KY ڇ#܅0w=͍xK̉ArrxXIG)(3Q`T6Cܨبnčj(5ZGȸQf#%HďV6k2f7_ωᰡ?*23CD[G_TT8=U޶,n,7h,OlԥNب/翚b|h(gB8 d9?0ggf:=UVʑvOiLKH}Go@O<m"}[fGcqF]s7 بӮl7,nT7j>n#ƸQ"ؔN+ױQߥvtl'¦ևFH}%}?ɯzi< `flr8 "c?,ZEqKHW8ಗpY6ϛ(.nԩF(Q $6FiF-1wTZOr!%h(r7 oOE誡#1>W=Ű9ҞWйr(fs͸vF,MN)Q۸QʜL(>`.ևι0L7".q .F,s̉.ܦ> 6?, m(ō;nl`KKmrv\_My8GqС[q2եԥ%;.qwH"sYl8Un/}PfXN>oC|_C»0iJB@kO jau2P0Bf?Vޙ|FvϳVdi;rF\# Q.[%WJڸQnkJK0ɧ^Vf߲>߲Sm,!2Ag6Y㶡g/AUbm,8@AUicY6P}WeS`7iY]a?i D5gv9l0S'v3]wMUC4.v-4L3Z:31`ǣRe|MB;l\v[;vrAI@ 9L?Q3%S3QO[s_.|ڈ`[kJfqmL H5#3!a(xLe!#q:%8׳Q_8l\r<%g-<}>$;7 Lc$Fz~ *wlF(EV< f2n# <30 DMu?Qz\Q٘5GӒبo[!qD^D .p2ąZ A>;B6g'J/Glp }ocH,Ή ցV?rjF [3#Ku3?WleQ2lg+ waAp"xF"t9@^9=1m?G'q?lT}ŊemS Vor- +V\']'ëWڇ!xp ,sHR9ӃϋG|+ʯԢEd Dĩat cq5sM7he0AQv:<-Xj,`azp9ߚ5+VT҂2d=ZUYy7؃#sxE6ZC?&+ب-BL̨o٦=i4qҤI_w? _4~x|~773=cvbJ3́+sggd$<Xz @=G>M/qumZW{e%kq d6s%#a,fVuc!lz<ȧN 3r3Fgg-"A g[1Iܵ-Ӹs|l1s32msA:V{`r2oӹuզv׻doWWl44/4V9C +wb6CWvw2}}Oߟw۩]t \}x(3:7.vٙs]\υ2f=U z.3̝37]{ ժ:N{9lzR|0Dnm SpW25jcwkM+ipQ=Oy)~y2Q73P@acmj]eMQi 2r2.'{Fr&2/+@ISh|Z{|r&| ͑بh:$Qn6jJ, ѰQBW2wvY3F}OW)GfibKCFHK6%H9)ol !sd4l`ᠨ'Q_g&{U_et2?[CUe8I (QبB XO{5Wl^wMp> j.KfZ'4P}rش BE\Jd$"ƻ("~&E&Ep%r\Dg2/S>9װQF6jgfo3QԶب {iLЅOx@Ol:`uF Ѱx'R&|K4Rюb"cw)Q%E).MEhp"s7Fm5Q|`TMS٨z Ep-Q e@T6swpC}O.4>ZP|&+9$5^""՜zHɣx⇘Z66 .Q6*FնF%l)nMf%بF6J6jtq҂֭0ߥs9nwSfkRNM>bij5^1mVEc[lT.r ب1Q F5بQuF}@-绰Qs322*>AύdQ͕USinčg dͱ^+Re6*QبlT+5sFM/QAF]"Y:Q08FNЦa󈼂D2GS Rh^䤂|GH $%( %K$AWxg5gSبF6*:.٨E٨]QG$5[igKl8~d|E0ޘr$FBnLRLĤȍ%;#SJ HxJd lT +6Qus32FlJlT6{X&d6ꐖJsa6ꠖJvaxi6A⻚]G97V_~ =p+s幷܌_ͯ ~cqy=1GuJɮmJt&V'Oul#&%쯞ܰQ:/ XN(]W~{%so\6/d233l2Q]22Ι;F/e&~2 "[KN +^=%b?Ȝ!^!FAثDU"~av|FrmfFjbaLd^O8:~Ё>F>Gvݜl6^"V&.$T;l[@mq2/&QVO=pKg@N#"1s6wn ),ýF.BF塍Qe|6t BG`|k?3Uw)v=ߚ|Fgdû3Zp=:גꉍWr~5o=ɯv-zgIsmuAG5F}a<^1 (/\SSvБzTZPStH_˼c9~@|_mB%43Gc|P`Đ!¶Fc[,i+RF=vt9m@C+%MquB]Ɠe[w1<]CG <SƑ OA$؏++SUg >ܩeGx̋pĩ\DqI 6sD:2N&%p#o3e@H" qukAM+ofKϝN|:Q"E2•&.6 'u93:z~e.EmIXƍKQ컞/a(̗@si}ԗ5$.A(LD卞 k"I%_jD^I LI ^T,coLS%jIA^bddpS?cFIsm2Z͝蔑.x2uUBz[ =$r0Y: ϯp(Hae` >CLb&>K$֒F=ALHIP$bc^~06//N{>%e|C4ƍKyGHApwů!6)M'#`ʪ12 ͼTbdD˼ʪHjfx8 f\[zNƠZyVJ(, 5fQ?Xm=ncȤ<*"RR"Tf)IG&2cMrFI[ 4j,u]a8,E,UjjpBbsWX$=_Oc%F1; F'$ @?Iui#FŌR(QLE~&E(<P]R}2 UoY쥻 $vyzv7eKq g2e5Z*-Fik͕H9aLyA7huU"_ a?i( _g>@z,(:8"*kD= M%q>"7ՎNr8Bkh|n7BGVcs@SFQN͝ lT32G_- l#DSVΩM9"dž]r9,QR^ߚ>gݛމ[l,HЇK*#ߞDtz#JJJCSI.EDl,FNvH_D'BΚl m?b0gE !f8wh(%bGg#FeNz -;g5`n=TOZ1פ}4 Y]TNW-t1a+3##~+;-Z@ 5^:$oMPqL\p&/X͍t)`ɰ>S"yAJ^qҵQRG@Q~|+yxUÕd -^dZuRUUy`%mˮtpܲ}$],l_v^`D\sq^Qy?#x |<-iǫqǡeck"+b̫} ?z˗ 쭕|kXuD1H\t|iUjpT@Y\.m|T@:v[ӅT|@9{.oYlYKv\Ivײs3ɿ܌IVeU`tOm %A/sss3V$sIOB.-^Or1R6k^Of)aEƗce>Q ,5Q5Fb0p#1ܳQ+]٨sPK(؍QBFiEF$6jQ6jO+Uc.Z |,Z6*FD(^eR5l8klUe6J4[FlglTFC l /بX MܰQL(l)a>c<8hWcF@"SFX,?1tT6-5;alTZ'lTsͷf"FVybװQ_aKeDFq.l7(?Plcxnj.(5%I(RE٨fPFE=M;a 2ײQX}UMЕlTFEQd@ 4qެQXb?(a~`c{FEpQ)y` ͕(SְQ:6*憍ztlT:بU6 -juev )QF8B>1`ƹ?tM]re6jبF`V(lTFݢl{fDF7hب.lIF 6uM*<us{Ry9ϰnQҥy:jj0llֳR竾Z;:zɾ 9 :t.vY6 ~ؘhr R.H۔q;|.hah\^!|N#s4#[!!@2gd5C u%n9+:ZGh4v:t%e9a'](j7`71᎗iTlc[nO_z {ntɣƑ^?t= +$ ע3xoOlQ<ꉍXN!b\z?p@SX:oje0FM9^?hv˯MD*k<  )xX7"K3d0c<5EGL/c $q뫕6lrAp{e'eYOJҒ6j+3DBɼ_}>gw%-6}&i^4EH aGp1_{;+;RO/JưπC/Mo=mؼ =(ElBIOC14ee\s7j5c ':rc%6 HWNsЂ]_CkvmSc%Ff|_YX u!#ψ19ᬠ>}$g'@ {)36 a&<1-CZch{$I َ\Qzb*wTL qQ1pb7 w?V~9 ce(+skF ǓAsb٨_B4Dn|K\bc77gL 'x 8w?ڏf56Jמ%O5(A#\fr TǑ $7,{':? MtLA(6q7>mhKkrm(L"}(aQhvh%ޗ_Ck8ڂ,73ƍn 3!Zd&^[(Gx gdN>:꜍z3TQ*ߥs`Ȃ$>xFХ;-{9;6mzu,s[lRW6z{tZ~5ӕb_JuIu{r@puoyM(&&to.0Fc?ɊkFͫ+0x\[xBXUuqd6XL@]4zQY#zo'&s[,? {%fxAĶ۩;؏rQ!uc5;:, I@!ƗHCEGUfb8٫0O=y%I2?Qr}w'c 5drSƆ7IMZl3 B-yӞ>NtzX^w<^wأ&:&/a%y |nXq;yңE凘w)c"k8֐62,c;>Mf[!ˁd<<CZ=KQ6jk&b_ߒ&p+Qz VK*$<$_1BSvWWf0/+\-:,0,$,`( 6sbr~ BO8XBs,[pDLjY ^%A-rȼE%N!3 21[7s29;}YQU$&تm#=!3V3гJ{.,"c6< ǐE"&/5 %X$N ~Lf+4(s3mٺ:9XW{-tNjfbL}YoN|=zj6Ɩr뤏NEzNĕjj}3>opf*4ҙƆ U^mFןh:ŚA^҈yҎ| 7j͆jFi%믜-N6dl~C>%L^ollWV;cHvl<{$Qږ9&̷г{zhhoMDA0g3r6:氳 8ԊһB6:N6ţbLlrV\ƅ Ghݍ O/dYAu ,qC.mBziqznB,|^1li~{Kuߨ{F^9[Aensal귋:r^d6J!bf`FIMKlr\MjQ?kox]:U -A?\FmZV8q  vNs5!ؕlYy- 6Jcn٨} BRgOKܨo^Fҙ36j6j(Svݦ\̸fبp5}Pj 8Ј,s*F 9(kP l@|y(ˋ,dj!%t:;=~왍|W-2{59~Q3Wdul]+9Qo<اze c&(/ɊWF"QckZ_Fseޫ#6Q2Ne>_y$l\頾sde?WTTD=1 ?9l2%\kj]٨ a,dlT_7l ^QмQF1CRk=]NI>pP^'bNQ6 X~fZe6JES+< Q4TzQfr=Q3ð'6J55O1wWQFFt%LU5 '|,vzYFmNFs!/llaW$(06*{BlvFQNQq(5lR]\FV\*ō yg~ lpFSU_6ʴ^5 W$b٨ h˩aEsoبwXL@CHFq޳Qm ((։Lv]mlwlְQӌl˨R~dq:69N(c3*gFȬeLє uz0% ?&EwlTZ%!Tl`pʼ Zߙ'AKlݾs~ewKk(k0*DبO4f}KFAlqM#jJMl u(хC٨zlTQ;uG(Q-7םoTuԇ(g&}8"76Qa9^_oկfKl`(B.)u}/ب_FyȈ>iɍp[Ln2c &!0 !CMcUn\%ȉ4"i6R_oYܨQ<Z>0gtlC-/wv  qUOŶ{qy~Lsm%5<Ł멏K) &c2fS0E=k{qv'il\<]!̚& yvԼI;-zF`:KѬWŴa∍GsqީIy(H7?"|[;Kʼn~yM;"˹L:Ym F(F~҈wE84j^pKD7k~ v5d~pH|w\q*2 MFHZm> >@s+m+wYMcV驗?E]T X"Gԃ `Ôk-z*hMNmaBdm/ ȋdMyWюz9jY-Rס\sC_Yqq8&x𦎥AwޠrquOx0ԣmAkRY^ Fl^c+#%gdKh$"s3@#\[%,YOJOB749 VC/r}'óm cV9U7@-SO#2rlqRS> 7ڪC(I E(EDZUA~OF_XnbԙGDFDUϋHiYŏ5z.7!<ȼy@pzpx6iƑ#&y/: Jzf ZN xAm4̄NKB/\:J}UfLP@܅MsYEE;dXT$98H6`<Ԋ>c#-Tb-{RPpl:YͫǫlOF~7F5:MQSίa EFr)cupsGQ%{AmQS$C&̝=4`<Tj~_|jd}>Vc^' 8VHaX;ӑ?p묗;XjThg>ڟU>/Pr uLӞ\3_2b> ˩w?N62pThPvfy3dXNH ),L{uЎҨ>FDLE IyA"yBPAF_'7aW1G{Lgč?C`OjjA[gkV/O7B%bR[4E:Zu ,x9H2KOm38 }_ ygl('e~F/' x/:E^9ѕeasۂ:|uxdąuf򈦖,chaԇ#&>'4Wp<#c5E$Dr sEys%FEH~lwXmJ~l5Gaq &Y7l^GQi4ѽtQ<-qfцy?\3+Y][;VW xy=OxS*=1MXl&]hkt1}kfܫhR=ox<CE誡#1>\7CbԌ|_͓;EaŅ \'`xO{`ݜ^9T-V90Ϻۜz Z7}{8|K#[}GnFy6u}L<[25)_F~kkuWśtc{qNCd6jdaW r޻X{_ {"C^6*p2G̩׻t.sos깔uoy ZܛoK](s[)쎝u9xɷgq@;:깢˫-WЩCŸBz(glA[llqa-sM(m0%mS8fI-_԰QF2]F=Q!CF%ʍ3vF]6Ê4?ܱQt]Zfp(je4ddt`aeui_tNVe+6oz6j Q}WbQ';cDOl %ͻبvFD: Kvǣd&!b@ӱ6Ta;S6*k$eq-QeF9ب](2'/Za芍j`=Q}=Q~ϵeyXRǴm'v*^'zD&De(P<< %Ւ٨]QK>nQ8F=#R9`nrnبA.lTwow,+QNl'0:6*GFMv=+vzQxi0h)~@-[Y,} =C)l+6JP٨0U?%L2!P*3!R.l=HF]blEl-tIK%tjiOr2o3-|k|٨ˌꄁԱQ|l,-u بQ q8l FCܨ@~G (!o:fZڶبq KjZ6ܴQQjܨ66CFI\(m3%]Q4F)-sݿLcZeo ԁR\iLm[vDQv=y`xq=N6|cy*pE|)1QO٨F=KIUŭ\y=uy%2Iy8  H Qz llQƓ!4V ݶ`Π+lX },^"p!Oxdd%!ZF}$sE|c&3c@T6 %04y89`>>areiبpݴeϻaL(uW6ƍr2'Cd^QVΦd~ HO^^nsc,(^?)왍=Q.lQ]c(9 Ӱ,D*wYsF?| tvѰQ8oXtAƍBZ)te{bplTrͩ7JF% čF,n1Εz i٨'6J7jW6%ŧF3FǍҲQqxg7Jb(lT{6\F2?0(=e鄍E٨b"j٨ Qo(Ї댍 P(FQli۔S6j+y8ƍD>j(ʦq;O+lT!ni'XܨX%nFݡl#č٨fQ66*nD}wF ylxgQ=y?QjܨQa2S6j[F-5c/^F-hܨ#7%6J7jFbq:gW{ 4'6e(;S5(Fu'Zl}QZbRZ6J;i'wnĎFyF(*wc`QwqOYy]Ǎ:mlԽ&~l/Xz٨^N'8m{+=iigKN좗Y!j&_vM7 !ۆ_niǭM=T\JzARd`vvfF O$ [@Z2͡[ٴ?-n_ S CWem UC(R]?Wb,~+t1EwdJ]֡%{h.! mJ7%ꛦHA9nm%}'6kh^uZ_"S x|P'ړCG4ZXzPȊɜη;mY.qHo[P=7%\A}-s[R*ᳬ̾e o`bm6*pl{6 \Nh~h>nŬw%:R] \%-|'+ZMϲ9 *sIKD0.az yLȷ\ 29f׫s0`:{k2}(Zئq?Ng n-}V+{\yQw,!RK!<Nݑ:9DZ"~֌Ruzп@/YG҇WFtN= n{Q6J4[-"]"mzF]=B(M}˔Qf\lk3wb଩ifofX`q:f 󯉼AjFF>e8p>k?V<=6 bDX 76<^FmQ6eoCQuDd)( d.R6FْP/HhniبdsBzG.A_`Q'+Fzw#uhqdNY܇?VGhqcHgyبI04n?(@ ph.uC{N:A7p-SGeQ[7/!{yNh;}N} F*uobhL'fn䡡uxX`bQGdcLl9NDqJ2zScm|)G_IFIK"%ZEF:1iW1E*ih :9ftN5mۣ^2>7|c[^FT!ky߲q<:Tfl~|LVUк*H ya!bgN:$%3=sqOv%AuE5{HDĩat cq5sM7he0AV߀:"-Xj,`rSIdZj곕\]!ЪʃV^pهgFM|&Q[ztRmړI'M8uAplO_Qws33f'!90 3cv̹ϓUBJ-cWMp9J_K![c }-{]kn^uytd?ǯlXvGڇ{%#! q]jH{}MEy0.Lȝpob3ٜo[ER:UxT #c)ж8vNul,H#/#ϽsFi8MT&P|ѩ>޻to5>R X: _Nq FAp7Ur]iVv7'hz NMҚOߟxpEK_7!i}ȟӘ ̈́zиQ]bX]~ҭ!Aֹ?eo."s=Fw:׶ؗѶ@>b795B#˧빗lMFolxN5 "xez~c2MQqOg˼+6lT6nب aֱ.#~s0ctuqh"զ[(Q|ռ^pl [yFc46.Qpړqw(57HFM>xUЧ(Q'F潿alԷ-#`<\G޳Q?E(;Q6sX u1-F6YJl5q = Q-{gmZFRqM^9cdcһClx|uѳQ_j٨qKl]F9FIF1f"W6jF}~0QVs{6*41ѳQ #fe$'C٨g.xCa.AqyF ӰQz e7Q~ I eq;xլgybF=P6*YF Qp~DOC7(ױQ~so({(bOHlc.ب^Qox2زY䖍-Qž٨6CFI1lze{`|FIq)aMبf:lTB7VdR6 0Vب "gmܨuk*IoײQ~g blFU6j_بEBF鄍Fa դcF'-1 S٨fFM~QiPet2wau>jgd.[`*6< nҰQTrF; KQY25_&l866QW.`O٨껌Z6c?dl_F#ulUh٨3U6_fmq? F '6*fX+6]afgdFlT,Y :6#{]:Qkq]ze}d$ֲQ A7Q CƔpPtl\+E6 :`x`2ze({/Q6ƦYo(:^#_DKpr8N5t,S\co(lsFi}fްQ:6wnNaŕt ٨.l~FeL6fw{{_/C+.?w ;ydx*RN3=/L+.d.  hC*j^/RuTʵFCuyqbgEpm613}vB6'M[j6 dC_l^YMvͷϚ}zÃIi~dl=f6R:] O$ Z5wl,(soن.S=1mg)uXFh&m};sg!ٰ[9w׳Q [^֝) /Y36:gQ!lNae_1%n{Q^J>((( SԂlJ7rEys0e"hL|R%41>}FhLOY @2ʹJ5kwkn)lT9F~Cs| u#>OKk،z.Wko-9Z5/XRg=/|5Kᨔ7GFz^R }>|/sC4Uɩ'빀bF ̇}h\8րmXARݤcZY͵jR7J̩J8hnʃ4a 'c@ZU (χ8k8WjP3xZ@dM-FIy%)LE\DJ '$$T{crx W3bLQ{.D,U ߅殰zNdͱ# ?+ql7 '=F'$ =( NCYNt3pz^%)0@KPDAGFǛ旅4m:OPcbioOӻ)LQP2M|8剩7wV9 !BlUXC+u0\F9 UtKo=OyD$4 :QY'FByF;@AIyDAC16Jj-|iٟ~%*@ڑQgC:6J*: e֙WKӌ.Z,{AY+yyFƩ_4$Ĥr= ߞDtz#JJJCSK#"PDq)yD(2W0Oo]&.!*_gMcko=qYoB6zvA\08:i>fe R=̝mPsI%s fː5O46h!eĘC~]!=jEV J6P{qBܐR \p\zm(73ӤY܌41=ތo{1%XϔHi|^W\qc ()ΛlD~UW'j{oFK"xx{we%ԡ]?]F|2Ԧ g<>U?Xy}8͒Yr Tݯ"{%skuR Fef+zGdlO<ֳQWeܔf҃dp"ͥ=熧NOͽߨ\8<1mqY~5&3C~-"Rl 6jk8x)xFglT٨XI`G?DsK6j8{\as6 K}Q"㈧**ܦikT^Q1~0!z>ՊRAB&Y#n(V~ϯ&QZ6jll(NbvF8W66 RhٸW'^ep4 'CtyWQtnz':Ͳ9jsa)6Qk٨oFմCHS(|zF7-F8W6 c -E?'| ?qÛhLn0bEDC 89eD#%o)uQ( :\cᠠ=gaO5nJ|=V#wNϵ6S#l̻&jbSVII6qFɬ$n̅.WUed/ȼ%(GW{`@Qr+}Fɩ7ns;7-Q5mxLɟjKdurOqF-clWqdQF6r2 re,!e+`elQonč6JuRS6jF 6*&ݺPaBVxF=2RݱQf*[6깞r|?.qNuQf˸QF6*uF-r76QF7l]F96MF Ry8`6l[~fl7Jw7S6n6JE٨ ~g-&1 [S6j6UlӞ ͩJ 6qE'F}FA]׸Q2&;6ʋQu݌;u2?3eF6B~,s(CoF06*%F6z)nTwl۸Q"ꂍ:(m(>lT[`(;QvFM%Ǎ"5-t lTwFi(FF͐(K6Jب0g{FoyN6Y,oFFјK?uFܡg ݱQ!Ǎj5QRܨnQڸQL+ ez6l25uҏ+el},)qQ*6AVQgW R.nFwak(yfQ]+`#X:gX(o(}ܨڇF9X=ewe҆.oW(>S6J}5V.QJ=6/_s=W%^٨ F)8ynT6Fe/7tF٨lT/ rQ9];#Q6"[pL@eNvMc׻F6ImZͦT~?vu.-㬩l҆gוOC ZoCu>b#-hm#nGRvqZv|xnPem,QXQZ4gG#d#L>!d5!SHuQ߱aOjf>\"ɝ N6$>oWFv 54C%nehYhHfys\,97n&2GǍ3"mA?>Kp-Α1f o{{bQڸJ{:!p,=ͥ%wsmm(vF[b'LE9+!n!$c6hB|zg'MPNxuPR ǎ&į+VʭaajRto "2cA6oBhҖMW^nzmH6z{~;I᎒/E|"H T Ț [ l"]|}uzMÚT"_h?Ks}ejbdc],ԅ<#  zG|=;9Zx޳N5QD}52FKT!W~89p=YAx4TxgsbOTTGQzcQℱ"7YO9Asbct`P]!uʂqpƍarV^ɤ1Oo0fZf ,n]\C_uj7*N䞀^'\f&:? MtI`_8i^M/fIGNQ((8̀:[I/Ñ.Fv%fP<vzenC2m$;6:t@X?y`g ,*I(7bt{c3t̳ 1~>oٵqiW&m2%{) ָaq#^~7~X<,ހ&g!/dYAu "NLlٽc5`z.Ko7 1yc̖Ʈw{{٨ߟ憍'˼u27Qvs(ޛ^oe{u, UVAۮQ7]('륝a-yÖlԻjflԮu>cZ^ej lsHs;6yQ6٨htP3玍Z:6J 6j*$R6pF~;˝gױQv6JhQG ԝ;6n7dIlQܳQ{}76*N3{ʔk`&ġ*y>-cqˆ,s*ue.lԠ@Q/UF .hQgS6J}Qzh(&[Fg\I.U95ʿzlԖبtlblԫo<lw6JኴlT|٨4WlucQ >UUոQ>_y$l=YFAȐ?Q'l7WTJ(Q< j()QºF%5􅁍ӰQFN<6ց|͵. i_׌>Se1Q`86/l@F1LlrܳQ#ݰQ/lT6jvF4DIܱQi̵cI|)ZH2BFf|lUd"$X6Fi(بW7x^k6J$u]{:c )X)c,/մlCZNQq((=ŻQܱQ?I|Kur=[!3d6ۮg*m(@j?iO[- {iO/)hoZԫ㹐W6۴Kd&!b&m;xxx٨'Dsl a6"nJ(F|,1ޣ1Ms]<4j^pKDZ{\g[OCHk=49~в@~q*2 MSD_Fr|,d.ye}۞cZ&g<햷leZ۶[Gѓe;cWl'T6aLTx{l3srø"5޶0 k!̷Gy~wsuy&AZ缂hG=R@ _(U|-:BV3DŽ{~ck7 iFU. OӄxR &jQ9hmR zT!4<  نULC@"'4Ha 2?,ߎjz+Pd҈lиQ"cF7 l (QS9Z&k @+1* 9skk33/_uG쌙 DIm&=3OuE=i@JZ5A>oi~% ٨2ǦAh"˯F>Ed>3mGYbZpW?R\oB QKd< 8=>9 6 ,*9kl2W#%àĨm`/EίqtkPM~5 nx 뇎ALՈ\'1<.Z^ͽzPl4nԟK/-Sبѫox~ *'{6܌P FH#D[G(R!e42lnQ#c D8jkpcZu> dDVg6YQX!H@{,s2m~~5#}>;7#TY)Gut%̾eLeГ&{/c?[S}s;^Q<|RSӄ :ߒv>[B}yԤi^":xVUOև"%,?qW4l>!%9qEx('e vr:@F]眅ϩ}+5ё:kۂ:EgjjH?7%K&]'p3q=4`fpLRlgy-#+ą ~ҳ'c}x (22[Mk!黹i5~?2[fGX\e6XjbuCf)KEV|ęG<]sͬd!cvumXj^)/Bp>M71YG7mwQmhpG[M frVyTOF+<*jQ,l:〞9ē(+r'68ɝwH͢0"g+9 yƕ2ɨsI%n;q%z0`צ[kc +_{r.{Fiqv}v^I>O feC!1sR8qqָaxk7@ kF;tP%n\+;vM`>YS{kq_:OX?^/ulJ潷w IENDB`PK-lWMETA-INF/manifest.xmlMn F9Ŷ2Bqfp`[q⪊K31Ի1Y {kV^[?n DrTa9*$Q$@[/Ǥl&.h4qc''R} Sh-7ƶ g1inW0A]&`suPthukhj:h vG|_At &|z4q7BKxOk 30 yes 0.05 0.05 yes yes no yes yes valid yes spectrum yes tandem-style.xsl 0.0 0.0 +17.00305 +1.00794 no [RK]|{P} yes yes yes yes no 0.01 57.02146@C no +42.01056@[ 15.99491@M yes no yes 57.02146@C 15.99491@M no yes no yes yes 1 4 no yes no 100.0 monoisotopic 0.02 Daltons 4 150.0 500.0 15 18.01057 0.02 10 10 ppm yes 1000 1 20000 2.0 4 10.0 100 no yes libpappsomspp-0.9.20/tests/data/tandem/settings/timstofmgf.xml000644 001750 001750 00000013732 14346367014 026003 0ustar00rusconirusconi000000 000000 30 yes 0.1 0.01 no yes yes no yes yes all yes spectrum yes tandem-style.xsl 0.0 0.0 +17.00305 +1.00794 no [RK]|{P} yes yes yes yes yes 0.01 57.02146@C no 15.99491@M yes no yes 57.02146@C 15.99491@M no yes no yes yes 1 4 no yes no 100 monoisotopic 0.02 Daltons 4 150 300 15 18 0.02 15 15 ppm yes 1000 5 50000 2.0 4 10.0 100 no no yes libpappsomspp-0.9.20/tests/data/tandem/settings/timstofmgf_wrong.xml000644 001750 001750 00000013741 14346367014 027217 0ustar00rusconirusconi000000 000000 30 yes 0.1 0.01 no yes yes no yes yes all yes spectrum yes tandem-style.xsl 0.0 0.0 +17.00305 +1.00794 no [RK]|{P} yes yes yes yes yes 0.01 57.02146@C no 15.99491@M yes no yes 57.02146@C 15.99491@M no yes no yes yes 1 4 no yes no 100 monoisotopic 0.02 Daltons 4 150 300 15 18 0.02 15 15 ppm yes 1000 5 50000 2.0 4 10.0 100 no no yes libpappsomspp-0.9.20/tests/data/tandem/wrapper/000755 001750 001750 00000000000 14533473271 022715 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/data/tandem/wrapper/wrapped_tandem_input.xml000644 001750 001750 00000001272 14346367014 027651 0ustar00rusconirusconi000000 000000 Paths /gorgone/pappso/tmp/xtpcpp.AjyZGg/Lumos_trypsin_rev_camC_oxM_10ppm_HCDOT_12102017CH.xml /gorgone/pappso/tmp/xtpcpp.AjyZGg/database.xml mzdata_source.mzXML Protein general usedefined Output wrapped_tandem_output.xml libpappsomspp-0.9.20/tests/data/tandem/database.xml000644 001750 001750 00000000573 14346367014 023527 0ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/data/tandem/tandem_result_file.xml000644 001750 001750 00012047161 14346367014 025637 0ustar00rusconirusconi000000 000000 GRMZM2G121878_P01 NP_001147846 carbonic anhydrase seq=translation; coord=3:215466579..215473931:-1; parent_transcript=GRMZM2G121878_T01; parent_gene=GRMZM2G121878 MSSCLCLPKK KEGPAKEKPS TDTPTSSLLQ NQKPSQPPPP PSKASSKGMD PTVERLKSGF QKFKTEVYDK KPELFEPLKS GQSPRYMVFA CSDSRVCPSV TLGLQPGEAF TVRNIASMVP PYDKIKYAGT GSAIEYAVCA LKVQVIVVIG HSCCGGIRAL LSLKDGAPDN FHFVEDWVRI GSPAKNKVKK EHASVPFDDQ CSILEKEAVN VSLQNLKSYP FVKEGLAGGT LKLVGAHYDF VKGQFVTWEP PQDAIERLTS GFQQFKVNVY DKKPELFGPL KSGQAPKYMV FACSDSRVCP SVTLGLQPGE AFTVRNIAAM VPGYDKTKYT GIGSAIEYAV CALKVEVLVV IGHSCCGGIR ALLSLQDGAP DTFHFVEDWV KIGFIAKMKV KKEHASVPFD DQCSILEKEA VNVSLENLKT YPFVKEGLAN GTLKLIGAHY DFVSGEFLTW KK GRMZM2G121878_P02 NP_001147846 carbonic anhydrase seq=translation; coord=3:215466579..215473931:-1; parent_transcript=GRMZM2G121878_T02; parent_gene=GRMZM2G121878 MSSCLCLPKK KEGPAKEKPS TDTPTSSLLQ NQKPSQPPPP PSKASSKGMD PTVERLKSGF QKFKTEVYDK KPELFEPLKS GQSPRYMVFA CSDSRVCPSV TLGLQPGEAF TVRNIASMVP PYDKIKYAGT GSAIEYAVCA LKVQVIVVIG HSCCGGIRAL LSLKDGAPDN FHFVEDWVRI GSPAKNKVKK EHASVPFDDQ CSILEKEAVN VSLQNLKSYP FVKEGLAGGT LKLVGAHYDF VKGQFVTWEP PQDAIERLTS GFQQFKVNVY DKKPELFGPL KSGQAPKYMV FACSDSRVCP SVTLGLQPGE AFTVRNIAAM VPGYDKTKYT GIGSAIEYAV CALKVEVLVV IGHSCCGGIR ALLSLQDGAP DTFHFVEDWV KIGFIAKMKV KKEHASVPFD DQCSILEKEA VNVSLENLKT YPFVKEGLAN GTLKLIGAHY DFVSGEFLTW KK GRMZM2G121878_P05 NP_001147846 carbonic anhydrase seq=translation; coord=3:215469087..215473931:-1; parent_transcript=GRMZM2G121878_T05; parent_gene=GRMZM2G121878 MSSCLCLPKK KEGPAKEKPS TDTPTSSLLQ NQKPSQPPPP PSKASSKGMD PTVERLKSGF QKFKTEVYDK KPELFEPLKS GQSPRYMVFA CSDSRVCPSV TLGLQPGEAF TVRNIASMVP PYDKIKYAGT GSAIEYAVCA LKVQVIVVIG HSCCGGIRAL LSLKDGAPDN FHFVEDWVRI GSPAKNKVKK EHASVPFDDQ CSILEKEAVN VSLQNLKSYP FVKEGLAGGT LKLVGAHYDF VKGQFVTWEP VGVHAHSSSF RATPID GRMZM2G121878_P06 NP_001147846 carbonic anhydrase seq=translation; coord=3:215469442..215473931:-1; parent_transcript=GRMZM2G121878_T06; parent_gene=GRMZM2G121878 MSSCLCLPKK KEGPAKEKPS TDTPTSSLLQ NQKPSQPPPP PSKASSKGMD PTVERLKSGF QKFKTEVYDK KPELFEPLKS GQSPRYMVFA CSDSRVCPSV TLGLQPGEAF TVRNIASMVP PYDKIKYAGT GSAIEYAVCA LKVQVIVVIG HSCCGGIRAL LSLKDGAPDN FHFVEDWVRI GSPAKNKVKK EHASVPFDDQ CSILEKEAVN VSLQNLKSYP FVKEGLAGGT LKLVGAHYDF VKGQFVTWEP VGVHAHSSSF RATPID 7.72976 -0.46847 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1567 1567 1567 1567 1567 1567 1567 1222 1088 750 596 106 41 13 4 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1562 1562 1562 1562 1562 1562 1562 1217 1083 744 584 79 24 1 0 0 1 2 3 4 712 829 31 1 0 0 1 2 3 4 5 6 804 754 9 4 0 2 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2004 (charge 2) 1401.75 2 161.706 195.115 209.055 226.083 243.108 331.197 337.153 370.792 428.25 466.756 525.303 683.727 719.409 1031.56 26 26 34 38 36 32 37 34 100 32 94 29 59 60 GRMZM2G121878_P01 NP_001147846 carbonic anhydrase seq=translation; coord=3:215466579..215473931:-1; parent_transcript=GRMZM2G121878_T01; parent_gene=GRMZM2G121878 GRMZM2G121878_P02 NP_001147846 carbonic anhydrase seq=translation; coord=3:215466579..215473931:-1; parent_transcript=GRMZM2G121878_T02; parent_gene=GRMZM2G121878 GRMZM2G121878_P05 NP_001147846 carbonic anhydrase seq=translation; coord=3:215469087..215473931:-1; parent_transcript=GRMZM2G121878_T05; parent_gene=GRMZM2G121878 GRMZM2G121878_P06 NP_001147846 carbonic anhydrase seq=translation; coord=3:215469442..215473931:-1; parent_transcript=GRMZM2G121878_T06; parent_gene=GRMZM2G121878 5.47408 -0.267029 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 7983 7983 7964 7321 6505 5518 4378 3427 2622 1813 1180 792 328 186 91 28 13 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7988 7988 7964 7223 6196 5090 3908 2613 1830 985 395 89 24 1 0 0 1 2 3 4 5 6 7 2316 3439 1615 444 138 34 6 0 0 1 2 3 4 5 6 7 1126 3325 2304 950 185 52 43 7 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2019 (charge 3) 1401.75 3 153.102 157.097 167.081 167.118 175.119 179.118 181.06 181.097 181.133 184.071 184.108 185.091 195.113 196.116 198.087 199.108 203.102 209.056 212.139 216.134 226.155 227.103 234.144 240.134 243.108 246.122 254.149 263.155 267.144 269.139 278.113 282.144 286.627 292.128 295.139 300.155 307.633 309.155 311.681 316.644 318.171 320.124 324.657 326.182 331.197 332.199 337.15 338.152 351.165 354.176 355.186 360.207 365.174 371.202 373.183 379.198 383.194 397.207 398.204 402.174 406.208 410.24 424.218 428.25 430.255 434.201 441.245 447.195 452.244 465.207 468.838 476.251 482.235 483.238 492.251 494.261 507.297 525.303 527.307 535.247 538.286 544.253 552.28 555.287 562.262 572.315 579.284 604.34 622.354 624.359 638.33 648.306 652.337 666.321 683.348 695.405 719.408 721.411 830.44 1 11 8 11 1 1 2 6 1 4 3 8 33 3 2 10 7 6 2 5 28 8 12 6 23 1 3 7 2 1 7 5 3 3 15 24 1 8 20 3 1 5 2 3 34 7 12 1 2 8 1 16 1 2 1 6 1 9 1 1 1 9 5 100 5 1 6 2 4 1 4 1 8 2 2 7 6 79 6 1 1 1 1 4 2 2 2 4 43 3 1 1 1 3 8 2 13 1 1 GRMZM2G140667_P01 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589206..218592127:-1; parent_transcript=GRMZM2G140667_T01; parent_gene=GRMZM2G140667 MRTASPGWLP PNSFHPRLLR SDGPPGPAAG RIASAAMVKA YPTVNEDYLK AVDKAKRKLR GLIAEKNCAP LMLRLAWHSA GTFDVATKTG GPFGTMKNPA EQAHGANAGL EIAIRLLEPI KEQFPILSYA DFYQLAGVVA VEVTGGPDVP FHPGRQDKPE PPPEGRLPDA TQGSDHLRQV FSTQMGLSDQ DIVALSGGHT LGRCHKDRSG FEGAWTSNPL IFDNSYFKEL LSGEKEGLLQ LPSDKALLSD PSFRPLVDKY AADEDAFFAD YAEAHLKLSE LGFAEA GRMZM2G140667_P02 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589352..218592127:-1; parent_transcript=GRMZM2G140667_T02; parent_gene=GRMZM2G140667 MRTASPGWLP PNSFHPRLLR SDGPPGPAAG RIASAAMVKA YPTVNEDYLK AVDKAKRKLR GLIAEKNCAP LMLRLAWHSA GTFDVATKTG GPFGTMKNPA EQAHGANAGL EIAIRLLEPI KEQFPILSYA DFYQLAGVVA VEVTGGPDVP FHPGRQDKPE PPPEGRLPDA TQGSDHLRQV FSTQMGLSDQ DIVALSGGHT LGRCHKDRSG FEGAWTSNPL IFDNSYFKEL LSGEKEGLLQ LPSDKALLSD PSFRPLVDKY AADEDAFFAD YAEAHLKLSE LG GRMZM2G140667_P04 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589294..218592021:-1; parent_transcript=GRMZM2G140667_T04; parent_gene=GRMZM2G140667 MKNPAEQAHG ANAGLEIAIR LLEPIKEQFP ILSYADFYQL AGVVAVEVTG GPDVPFHPGR QDKPEPPPEG RLPDATQGSD HLRQVFSTQM GLSDQDIVAL SGGHTLGRCH KDRSGFEGAW TSNPLIFDNS YFKELLSGEK EGLLQLPSDK ALLSDPSFRP LVDKYAADED AFFADYAEAH LKLSELGFAE A 5.38227 -0.347243 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6644 6644 6644 6644 6235 5853 5330 3422 2506 929 411 163 77 23 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6646 6646 6646 6646 6237 5836 5300 3237 2289 616 220 53 20 1 0 0 1 2 3 4 5 4042 2218 355 48 4 0 0 1 2 3 4 5 6 7 1435 3942 1072 154 44 1 0 19 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2028 (charge 3) 1249.62 3 158.093 167.118 169.134 175.119 181.061 195.112 197.128 199.107 209.092 212.139 215.139 220.003 227.102 232.141 238.013 248.035 249.042 262.05 266.044 271.1 273.043 278.148 284.008 290.045 322.188 327.515 337.186 361.185 372.161 441.211 452.214 458.236 466.191 469.242 472.169 495.252 503.664 545.238 555.289 563.246 580.275 652.338 846.722 900.298 1056.68 8 5 5 26 6 22 10 19 8 7 8 36 28 59 31 51 6 100 42 6 8 35 27 28 6 6 6 8 8 8 28 94 12 8 6 6 6 8 54 20 9 20 6 6 6 GRMZM2G052036_P01 NP_001143161 hypothetical protein LOC100275650 seq=translation; coord=10:60021321..60022270:1; parent_transcript=GRMZM2G052036_T01; parent_gene=GRMZM2G052036 MQQIISACKL PHTQRAAAFL PPRPSLRRLP VPGLDRPAGG APPPRRLVVR RRCQEENKQQ QEAEEGSGAD EQEQQKRTFL SLEEAGLVEM SGLSTHERFL CRLTISSLNL LRVISEQEGV PIEELNAGRV CDWFLKDKLK REQNVGTAVL QWDDPGF 5.82718 -0.375947 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2721 2721 2721 2721 2721 2721 2721 2478 1225 624 276 133 35 6 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2726 2726 2726 2726 2726 2726 2726 2483 1220 601 258 120 29 5 1 0 0 1 2 3 2030 670 28 0 0 1 2 3 4 5 6 7 470 2133 116 3 2 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2039 (charge 3) 2174.95 3 151.218 163.267 168.643 175.12 201.087 240.098 241.081 257.126 284.859 299.061 359.023 368.157 431.278 559.333 666.813 689.376 816.431 945.476 951.415 1060.5 1078.51 1188.55 18 19 18 43 24 100 33 35 21 32 29 38 28 41 43 32 48 44 32 43 31 56 GRMZM2G449496_P01 NP_001169327 hypothetical protein LOC100383193 seq=translation; coord=8:85120975..85124082:1; parent_transcript=GRMZM2G449496_T01; parent_gene=GRMZM2G449496 MAPALTSNPP SFRPLTSPLR RRAATVPCRV GKPGKDSSAA DDATGPNKRP NLFADFGNAK SLIQAFPSQS LFAGGGRGRK DPQTVFVAGA TGQAGVRIAQ TLLRQGFAVR AGVPDLASAQ ELARLAAAYR LISPAEARRL NAVEAGFGDP DAIAKSIGPA AKVVVTVGSA EKGPEGGGVT TDDALRVVRA ADLASVAHVV VVYDEGAASG GLGGGGSTYN VLDGFTSFFS NLFSREQQAL TLSQFLAKVA ETDVRYTLVK ASLTDDYTPE SYYAQLVLTK EGVSPSDTGK VSRSQIAALV ADVFSNVAVA ENKVVEVSTS SSATAKNIAE AFTAIPEDRR RTEYLEAAAK AQAEEETLAS ERANKKAEAA ASKSEADTKT TPSEEAAATP SAVNGAQASL ENLLSRAKVI SADFSWEKFS TQFADVTTPL TSSLEKEPNK AQIATVRGQE KAKKLAPRIA VVKPAAQKAK QPDPKPEVRA LFGGLFKQET VYVDDD 3.85356 -0.308285 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 3905 3905 3847 3398 2334 1685 980 576 194 66 2 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 3912 3912 3854 3383 2251 1579 876 478 116 40 1 0 0 1 2 3 4 5 1533 1892 440 48 3 0 0 1 2 3 4 5 6 7 1120 2073 624 91 7 0 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2063 (charge 3) 1615.73 3 157.061 159.077 167.055 167.081 168.056 169.052 175.071 175.119 184.108 185.055 187.071 203.066 212.103 215.103 223.064 226.118 230.114 239.095 241.092 244.165 245.095 254.077 258.106 272.088 281.052 283.049 299.061 301.059 303.057 345.975 346.975 348.971 359.028 361.026 386.213 391.715 416.037 417.034 419.031 435.044 442.239 469.757 478.258 498.272 505.105 526.76 535.267 584.27 619.792 628.306 646.275 655.305 694.428 699.315 725.405 766.403 782.427 874.51 883.474 938.512 1083.85 5 5 42 4 11 13 11 1 2 5 2 5 7 2 10 6 5 12 8 2 1 2 1 4 2 6 74 100 5 7 18 1 7 16 2 2 8 29 4 2 1 1 1 1 2 1 2 2 3 2 1 1 4 1 5 2 6 6 6 4 1 GRMZM2G121878_P01 NP_001147846 carbonic anhydrase seq=translation; coord=3:215466579..215473931:-1; parent_transcript=GRMZM2G121878_T01; parent_gene=GRMZM2G121878 GRMZM2G121878_P02 NP_001147846 carbonic anhydrase seq=translation; coord=3:215466579..215473931:-1; parent_transcript=GRMZM2G121878_T02; parent_gene=GRMZM2G121878 GRMZM2G121878_P05 NP_001147846 carbonic anhydrase seq=translation; coord=3:215469087..215473931:-1; parent_transcript=GRMZM2G121878_T05; parent_gene=GRMZM2G121878 GRMZM2G121878_P06 NP_001147846 carbonic anhydrase seq=translation; coord=3:215469442..215473931:-1; parent_transcript=GRMZM2G121878_T06; parent_gene=GRMZM2G121878 5.78782 -0.330732 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 8324 8324 8324 8324 8324 5958 5182 3554 2294 1693 895 417 160 50 18 2 1 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 8336 8336 8336 8336 8336 5970 5173 3436 2170 1581 750 328 123 22 3 1 0 0 1 2 3 4 5 5880 2142 294 16 7 0 0 1 2 3 4 5 6 7 1163 5759 1274 126 9 0 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2087 (charge 3) 1529.81 3 152.056 167.08 175.119 181.06 195.113 199.071 199.108 210.025 226.154 244.165 258.078 293.23 300.156 311.681 314.099 331.198 354.142 360.208 379.2 428.249 448.185 464.243 525.304 530.274 577.34 622.352 719.403 1199.99 1295.2 1527.16 39 9 11 11 48 13 15 51 100 41 9 8 13 12 9 16 15 14 10 93 11 10 69 16 12 59 36 11 11 11 GRMZM2G401308_P03 NP_001105088 histone H1-like protein seq=translation; coord=7:11441042..11442532:-1; parent_transcript=GRMZM2G401308_T03; parent_gene=GRMZM2G401308 MSTEEAVVAE VPVTEVPAEV PAAQVAEAPK AKKAPKEKKA PKEKKLSAAK KPAAHPPYAE MIVEAIAALK ERKGSSSVAI SKYVEGKHGG KLPTNFRKQL TVQLKKLAAA GKLTRVKNSF KLPATDAKPK AAKPKAPKAA PKPKPSPKAK AKTAAKPKAA SPKPKAKAKA KPVAPAAASP KPRGRPPKVA KTSAKASPAK AAKKAAAPAK KGKAAAAPKK VATPKKAAAA AAPARKGVAR KAKK GRMZM2G401308_P04 NP_001105088 histone H1-like protein seq=translation; coord=7:11441303..11442532:-1; parent_transcript=GRMZM2G401308_T04; parent_gene=GRMZM2G401308 MSTEEAVVAE VPVTEVPAEV PAAQVAEAPK AKKAPKEKKA PKEKKLSAAK KPAAHPPYAE VRFSPLRSSR FVASLGSSPL MESVGLILSL CSVHVREFDI ESETQPVGSV WLQMIVEAIA ALKERKGSSS VAISKYVEGK HGGKLPTNFR KQLTVQLKKL AAAGKLTRVK NSFKLPATDA KPKAAKPKAP KAAPKPKPSP KAKAKTAAKP KAASPKPKAK AKAKPVAPAA ASPKPRGRPP KVAKTSAKAS PAKAAKKAAA PAKKGKAAAA PKKVATPKKA AAAAAPARKG VARKAKK GRMZM2G401308_P01 NP_001105088 histone H1-like protein seq=translation; coord=7:11440921..11442532:-1; parent_transcript=GRMZM2G401308_T01; parent_gene=GRMZM2G401308 PRCQRRSRRP RWPRRPRRRR RPRRRRRLRR RSFPRRRSRR RTLPTLSGKL PTNFRKQLTV QLKKLAAAGK LTRVKNSFKL PATDAKPKAA KPKAPKAAPK PKPSPKAKAK TAAKPKAASP KPKAKAKAKP VAPAAASPKP RGRPPKVAKT SAKASPAKAA KKAAAPAKKG KAAAAPKKVA TPKKAAAAAA PARKGVARKA KK GRMZM2G401308_P02 NP_001105088 histone H1-like protein seq=translation; coord=7:11441042..11445373:-1; parent_transcript=GRMZM2G401308_T02; parent_gene=GRMZM2G401308 MMVTREHPMR SRECQLCHEN PLSSPSMTKM IVEAIAALKE RKGSSSVAIS KYVEGKHGGK LPTNFRKQLT VQLKKLAAAG KLTRVKNSFK LPATDAKPKA AKPKAPKAAP KPKPSPKAKA KTAAKPKAAS PKPKAKAKAK PVAPAAASPK PRGRPPKVAK TSAKASPAKA AKKAAAPAKK GKAAAAPKKV ATPKKAAAAA APARKGVARK AKK 4.02217 -0.277391 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2231 2231 2230 2161 1846 1321 1005 369 207 137 60 31 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2237 2237 2236 2163 1836 1315 945 296 159 86 25 13 1 0 0 1 2 3 4 5 1296 710 206 26 1 0 0 1 2 3 4 5 6 7 411 1400 346 68 6 0 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2096 (charge 3) 1360.8 3 154.085 158.092 169.097 169.133 170.137 171.112 173.092 175.119 183.112 185.164 197.128 198.125 199.107 226.155 239.161 244.165 249.041 254.15 268.165 305.957 309.204 311.171 324.203 326.011 338.197 341.141 355.196 443.25 447.761 453.342 455.254 470.261 483.279 495.754 497.316 504.283 584.351 623.824 655.384 726.423 797.455 894.516 896.527 922.504 965.551 1179.3 1 2 8 18 1 2 1 11 2 1 15 1 7 23 100 13 5 1 8 1 2 2 6 2 2 2 1 1 6 2 4 4 4 2 7 1 5 2 6 2 5 12 2 1 2 2 GRMZM5G845611_P01 B4F8L7 Glyceraldehyde-3-phosphate dehydrogenase BPutative uncharacterized protein ; seq=translation; coord=1:6410461..6413123:1; parent_transcript=GRMZM5G845611_T01; parent_gene=GRMZM5G845611 MATHAALAAS RIPAGARLHS RAPASSRHGV QRLDFADFSG LRPGSCSVSA AAREASFSDV LGAQLVAKAT GENAVRAPAE AKLKVAINGF GRIGRNFLRC WHGREDSPID VVVVNDSGGV RNASHLLKYD SMLGTFKADV KIVDDTTISV DGKPITVVSS RDPLKLPWGE LGIDIVIEGT GVFVDGPGAG KHIQAGAKKV IITAPAKGAD IPTYVVGVNE GDYDHSVADI ISNASCTTNC LAPFVKILDE EFGIVKGTMT TTHSYTGDQR LLDASHRDLR RARAAALNIV PTSTGAAKAV ALVLPQLKGK LNGIALRVPT PNVSVVDLVI NTVKTGITAD DVNAAFRKAA AGPLQGILEV CDVPLVSVDF RCSDVSCTID ASLSMVMGDD MVKVVAWYDN EWGYSQRVVD LAHLVAAKWP GAAAAGSGDP LEDFCKDNPE TDECKVYEA GRMZM2G337113_P02 P09315 Glyceraldehyde-3-phosphate dehydrogenase A, chloroplastic Precursor (EC 1.2.1.13)(NADP-dependent glyceraldehydephosphate dehydrogenase subunit A) seq=translation; coord=2:42257261..42259297:-1; parent_transcript=GRMZM2G337113_T02; parent_gene=GRMZM2G337113 MASSMLSATT VPLQQGGGLS EFSGLRSSAS LPMRRNATSD DFMSAVSFRT HAVGTSGGSR RAPTEAKLKV AINGFGRIGR NFLRCWHGRG DASPLDVIAI NDTGGVKQAS HLLKYDSTLG IFDADVKPVG DNAISVDGKV IKVVSDRNPS NLPWGELGID LVIEGTGVFV DREGAGKHIQ AGAKKVLITA PGKGDIPTYV VGVNADQYNP DEPIISNASC TTNCLAPFVK VLDQKFGIIK GTMTTTHSYT GDQRLLDASH RDLRRARAAA LNIVPTSTGA AKAVSLVLPN LKGKLNGIAL RVPTPNVSVV DLVVQVSKKT LAEEVNQAFR DAAANELTGI LEVCDVPLVS VDFRCSDVSS TIDASLTMVM GDDMVKVISW YDNEWGYSQR VVDLADICAN QWK 3.12555 -0.250044 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2579 2579 2573 2400 1466 1194 696 432 235 76 28 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 2585 2585 2577 2403 1392 1154 520 262 80 32 7 1 0 0 1 2 3 4 1666 774 126 24 0 0 1 2 3 4 5 6 7 486 1406 599 85 8 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2100 (charge 3) 1571.67 3 157.097 159.077 167.055 169.052 175.119 185.092 195.088 221.152 225.098 239.089 269.123 286.15 299.061 301.058 303.177 304.181 309.203 347.974 348.971 419.035 420.993 475.226 482.216 492.227 523.733 576.275 583.271 675.303 689.305 735.106 739.329 826.363 944.377 963.448 1003.31 1445.5 2 6 4 3 5 2 1 1 2 14 1 3 2 13 36 6 100 2 1 1 1 5 2 1 1 7 1 1 1 1 6 12 1 1 1 1 GRMZM2G027995_P01 Q41741 Eukaryotic initiation factor 4A (eIF-4A)(EC 3.6.4.13)(ATP-dependent RNA helicase eIF4A) seq=translation; coord=6:87119198..87122939:1; parent_transcript=GRMZM2G027995_T01; parent_gene=GRMZM2G027995 MAGMAPEGSQ FDAKHYDSKM QELLSTGETE EFFTSYDEVF ESFDDMGLQE NLLRGIYAYG FEKPSAIQQR GIVPFCKGLD VIQQAQSGTG KTATFCSGIL QQLDYGLVEC QALVLAPTRE LAQQIEKVMR ALGDYLGVKV HACVGGTSVR EDQRILASGV HVVVGTPGRV FDMLRRQSLR PDNIKMFVLD EADEMLSRGF KDQIYDIFQL LPSKIQVGVF SATMPPEALE ITRKFMNKPV RILVKRDELT LEGIKQFYVN VDKEDWKLDT LCDLYETLAI TQSVIFVNTR RKVDWLTDKM RSRDHTVSAT HGDMDQNTRD IIMREFRSGS SRVLITTDLL ARGIDVQQVS LVINYDLPTQ PENYLHRIGR SGRFGRKGVA INFVTRDDER MLFDIQKFYN VLIEELPANV ADLL GRMZM2G027995_P02 Q41741 Eukaryotic initiation factor 4A (eIF-4A)(EC 3.6.4.13)(ATP-dependent RNA helicase eIF4A) seq=translation; coord=6:87119221..87123018:1; parent_transcript=GRMZM2G027995_T02; parent_gene=GRMZM2G027995 MAGMAPEGSQ FDAKHYDSKM QELLSTGETE EFFTSYDEVF ESFDDMGLQE NLLRGIYAYG FEKPSAIQQR GIVPFCKGLD VIQQAQSGTG KTATFCSGIL QQLDYGLVEC QALVLAPTRE LAQQIEKVMR ALGDYLGVKV HACVGGTSVR EDQRILASGV HVVVGTPGRV FDMLRRQSLR PDNIKMFVLD EADEMLSRGF KDQIYDIFQL LPSKIQVGVF SATMPPEALE ITRKFMNKPV RILVKRDELT LEGIKQFYVN VDKEDWKLDT LCDLYETLAI TQSVIFVNTR RKVDWLTDKM RSRDHTVSAT HGDMDQNTRD IIMREFRSGS SRVLITTDLL ARGIDVQQVS LVINYDLPTQ PENYLHRIGR SGRFGRKGVA INFVTRDDER MLFDIQKFYN VLIEELPANV ADLL GRMZM2G116034_P02 NP_001104874 translation initiation factor seq=translation; coord=5:56777167..56780802:-1; parent_transcript=GRMZM2G116034_T02; parent_gene=GRMZM2G116034 MAGMAPEGSQ FDAKHYDSKM QELLSTGETE EFFTSYDEVF ESFDDMGLQE NLLRGIYAYG FEKPSAIQQR GIVPFCKGLD VIQQAQSGTG KTATFCSGIL QQLDYGLVEC QALVLAPTRE LAQQIEKVMR ALGDYLGVKV HACVGGTSVR EDQRILGSGV HVVVGTPGRV FDMLRRQSLR PDNIKMFVLD EADEMLSRGF KDQIYDIFQL LPAKIQVGVF SATMPPEALE ITRKFMNKPV RILVKRDELT LEGIKQFYVN VDKEDWKLDT LCDLYETLAI TQSVIFVNTR RKVDWLTDKM RSRDHTVSAT HGDMDQNTRD IIMREFRSGS SRVLITTDLL ARGIDVQQVS LVINYDLPTQ PENYLHRIGR SGRFGRKGVA INFVTRDDER MLFDIQKFYN VLIEELPANV ADLL GRMZM2G116034_P01 NP_001104874 translation initiation factor seq=translation; coord=5:56776697..56780711:-1; parent_transcript=GRMZM2G116034_T01; parent_gene=GRMZM2G116034 MAPEGSQFDA KHYDSKMQEL LSTGETEEFF TSYDEVFESF DDMGLQENLL RGIYAYGFEK PSAIQQRGIV PFCKGLDVIQ QAQSGTGKTA TFCSGILQQL DYGLVECQAL VLAPTRELAQ QIEKVMRALG DYLGVKVHAC VGGTSVREDQ RILGSGVHVV VGTPGRVFDM LRRQSLRPDN IKMFVLDEAD EMLSRGFKDQ IYDIFQLLPA KIQVGVFSAT MPPEALEITR KFMNKPVRIL VKRDELTLEG IKQFYVNVDK EDWKLDTLCD LYETLAITQS VIFVNTRRKV DWLTDKMRSR DHTVSATHGD MDQNTRDIIM REFRSGSSRV LITTDLLARG IDVQQVSLVI NYDLPTQPEN YLHRIGRSGR FGRKGVAINF VTRDDERMLF DIQKFYNVLI EELPANVADL L 5.81101 -0.352182 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 3106 3106 3106 3106 3106 2856 1726 1367 623 220 115 37 19 8 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3118 3118 3118 3118 3118 2868 1738 1316 591 196 95 35 22 2 1 1 0 0 1 2 3 4 5 2295 750 60 1 12 0 0 1 2 3 4 5 6 7 467 2226 384 27 2 0 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2109 (charge 3) 2027.89 3 150.319 152.226 157.463 175.119 276.166 299.137 310.116 348.674 359.166 470.669 518.267 537.227 553.237 555.228 580.464 650.294 764.335 774.34 826.434 911.448 927.461 936.388 938.407 955.452 1073.44 2074.33 8 9 8 16 13 14 12 13 15 12 53 57 16 15 12 13 42 14 15 14 25 100 16 17 18 17 GRMZM2G083841_P01 P04711 Phosphoenolpyruvate carboxylase 1 (PEPCase 1)(PEPC 1)(EC 4.1.1.31) seq=translation; coord=9:61296279..61301686:1; parent_transcript=GRMZM2G083841_T01; parent_gene=GRMZM2G083841 MASTKAPGPG EKHHSIDAQL RQLVPGKVSE DDKLIEYDAL LVDRFLNILQ DLHGPSLREF VQECYEVSAD YEGKGDTTKL GELGAKLTGL APADAILVAS SILHMLNLAN LAEEVQIAHR RRNSKLKKGG FADEGSATTE SDIEETLKRL VSEVGKSPEE VFEALKNQTV DLVFTAHPTQ SARRSLLQKN ARIRNCLTQL NAKDITDDDK QELDEALQRE IQAAFRTDEI RRAQPTPQDE MRYGMSYIHE TVWKGVPKFL RRVDTALKNI GINERLPYNV SLIRFSSWMG GDRDGNPRVT PEVTRDVCLL ARMMAANLYI DQIEELMFEL SMWRCNDELR VRAEELHSSS GSKVTKYYIE FWKQIPPNEP YRVILGHVRD KLYNTRERAR HLLASGVSEI SAESSFTSIE EFLEPLELCY KSLCDCGDKA IADGSLLDLL RQVFTFGLSL VKLDIRQESE RHTDVIDAIT THLGIGSYRE WPEDKRQEWL LSELRGKRPL LPPDLPQTDE IADVIGAFHV LAELPPDSFG PYIISMATAP SDVLAVELLQ RECGVRQPLP VVPLFERLAD LQSAPASVER LFSVDWYMDR IKGKQQVMVG YSDSGKDAGR LSAAWQLYRA QEEMAQVAKR YGVKLTLFHG RGGTVGRGGG PTHLAILSQP PDTINGSIRV TVQGEVIEFC FGEEHLCFQT LQRFTAATLE HGMHPPVSPK PEWRKLMDEM AVVATEEYRS VVVKEARFVE YFRSATPETE YGRMNIGSRP AKRRPGGGIT TLRAIPWIFS WTQTRFHLPV WLGVGAAFKF AIDKDVRNFQ VLKEMYNEWP FFRVTLDLLE MVFAKGDPGI AGLYDELLVA EELKPFGKQL RDKYVETQQL LLQIAGHKDI LEGDPFLKQG LVLRNPYITT LNVFQAYTLK RIRDPNFKVT PQPPLSKEFA DENKPAGLVK LNPASEYPPG LEDTLILTMK GIAAGMQNTG 4.9801 -0.284577 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 2740 2740 2725 2618 2477 1722 1572 1044 645 465 233 123 60 22 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2750 2750 2735 2628 2479 1714 1415 922 528 327 96 44 19 8 3 1 0 0 1 2 3 4 1654 926 138 32 0 0 1 2 3 4 5 6 7 588 1722 364 68 1 0 1 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2135 (charge 2) 1188.53 2 153.102 155.081 158.092 166.05 167.055 168.055 169.052 171.113 172.108 172.12 175.119 181.097 183.076 184.08 198.124 200.103 201.106 209.092 221.084 226.119 239.095 241.092 258.156 264.104 268.978 270.976 281.05 283.029 285.01 287.007 297.155 299.061 301.06 303.02 305.018 309.204 322.153 341.144 344.976 346.974 355.07 357.068 359.031 364.172 369.19 373.081 375.08 387.198 396.171 401.984 415.037 417.035 419.994 420.992 443.169 446.695 451.2 470.187 495.22 502.226 566.224 585.179 613.257 630.279 667.306 694.285 699.304 710.31 727.337 729.351 752.379 757.951 791.334 793.337 807.544 828.38 838.363 840.408 881.409 892.368 903.367 907.427 912.468 925.438 927.448 971.419 989.435 991.44 4 8 2 28 44 9 1 53 6 1 12 11 66 5 2 62 5 6 2 11 75 14 15 1 17 4 1 1 100 30 1 56 19 30 8 74 7 6 11 5 92 58 2 24 1 13 6 16 56 1 2 1 14 12 1 5 8 2 2 6 11 1 2 8 2 9 1 5 57 3 1 1 39 5 1 4 2 1 4 2 1 6 1 68 10 2 16 2 GRMZM2G153969_P01 NP_001149564 OB-fold nucleic acid binding domain containing protein seq=translation; coord=9:28603999..28607933:1; parent_transcript=GRMZM2G153969_T01; parent_gene=GRMZM2G153969 MSTAPRRPFR GRGAPPPGTG YVRRGPAPAP GPADGAKTLR KPVFTTVDQL RPQTHGHTLT ARVISARTVL DKPSTHIGRT RVAECLVGDS TGTVLVTARN EQVDLLKPDT TVIFRNAKID MFKGTMRLVV DKWGRIEVTQ PADFKVNQDN NMSLVEYELV DVDEEE 7.02473 -0.453208 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 7715 7715 7715 7694 7396 6700 6206 3776 2739 1028 400 131 19 8 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7725 7725 7725 7704 7406 6709 6145 3631 2463 710 205 66 2 1 0 0 1 2 3 4 5 6 3774 3174 592 154 30 3 0 0 1 2 3 4 5 6 1917 4385 1206 203 12 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2141 (charge 3) 1261.66 3 150.026 154.086 155.081 157.683 167.119 169.097 173.092 173.128 175.119 186.123 194.129 197.103 198.124 199.108 199.169 201.124 226.155 229.629 237.092 240.137 244.167 269.126 275.171 309.202 354.224 382.22 390.197 438.2 440.238 452.252 458.25 472.287 522.316 550.308 558.292 615.311 712.359 942.41 6 6 19 4 5 6 6 28 30 8 7 6 4 6 5 9 24 5 4 10 22 4 9 26 25 100 6 6 6 5 6 5 32 17 8 21 7 5 GRMZM2G167698_P01 seq=translation; coord=1:60966702..60970186:-1; parent_transcript=GRMZM2G167698_T01; parent_gene=GRMZM2G167698 MDVALSTIVF VIAVFIPALL TLVQRSRSRH AGHNPPPPPE PRAIPLVGHL HHLLRKKPLH RTLAHLAERH GDVLGLRFGS SRVAVVSSAS VAQQCLVALD TSFGNRPRLP SARILSYEWS TMGHSNCGPY WRQARRTTST EFSSVERVQH FADVHEQEAR AMARRLCRVA HASGGRALVD VKSRLLEMLM NGLLDMLFKR TTSRSWSSDE KDEAVEVSEE ARCFMAMAEE TMELTLTVWD FLPPLARWLD VDAVGRRLQR LQANRTEFLQ RLIEEHKEME KGGQVTRRTL VGVMLELQDK DPEAYTDQLI RSLCVSALEA GTLSTGYTIE WVMSLLLNNP HIMKKARDEI DACVGEPKRL LDATDLPKLP YLRCIILETL RLYPVVPLLV PRESSTNCTV NGFNIAKGTM LLVNTFAIHR DPRTWDDPET FLPERFEDGS NQAGKTTTTT DLSFGMGRRR CPAENLGMQL AGIALGTMIQ CFNWERVGTE LVDMAEGSGL TMSKKVPLEA FCQPRASMVD LLANI GRMZM2G009232_P01 NP_001141257 hypothetical protein LOC100273344 seq=translation; coord=1:60675952..60678513:1; parent_transcript=GRMZM2G009232_T01; parent_gene=GRMZM2G009232 MDVALSTIVF VIAIFIPALL TLVQRSRSRH AGHNPPPPPE PRAIPLVGHL HHLLRKKPLH RCLAHLAERH GDVLGLRFGS SRVAVVSSAS VAQQCLVALD TSFGNRPRLP SARILSYEWS TMGHSNCGPY WRQARRTTST EFSSVERVQH FADVHEQEAR AMARRLCRVA HASGGRALVD VKSRLLEMLM NGLLDMLFRR TTSRSRSSDE KDEAVEVSEE ARCFMAMAEE TMELTLTVWD FLPPLARWLD VDAVGRRLQR LQANRTEFLQ RLIEEHKEME KSGQVTRRTL VGVMLELQDK DPEAYTDQLI RSLCVSALEA GTLSTGYTIE WVMSLLLNNP HIMKKARDEI DACVGEPKRL LDATDLPKLP YLRCIILETL RLYPVVPLLV PRESSTNCTV NGFNIAKGTM LLVNTFAIHR DPRTWDDPET FLPERFEDGS NQSGKTTMDL SFGMGRRRCP AENLGMQLAG IALGTMIQCF NWERVGTELV DMAEGSGLTM AKKVPLEAFC QPRASMVDLL ANI GRMZM2G009232_P02 NP_001141257 hypothetical protein LOC100273344 seq=translation; coord=1:60675990..60678492:1; parent_transcript=GRMZM2G009232_T02; parent_gene=GRMZM2G009232 MDVALSTIVF VIAIFIPALL TLVQRSRSRH AGHNPPPPPE PRAIPLVGHL HHLLRKKPLH RCLAHLAERH GDVLGLRFGS SRVAVVSSAS VAQQCLVALD TSFGNRPRLP SARILSYEWS TMGHSNCGPY WRQARRTTST EFSSVERVQH FADVHEQEAR AMARRLCRVA HASGGRALVD VKSRLLEMLM NGLLDMLFRR TTSRSRSSDE KDEAVEVSEE ARCFMAMAEE TMELTLTVWD FLPPLARWLD VDAVGRRLQR LQANRTEFLQ RLIEEHKEME KSGQVTRRTL VGVMLELQDK DPEAYTDQLI RSLVHSKLGH SVQAIQSSG GRMZM2G009232_P03 NP_001141257 hypothetical protein LOC100273344 seq=translation; coord=1:60675952..60677362:1; parent_transcript=GRMZM2G009232_T03; parent_gene=GRMZM2G009232 MDVALSTIVF VIAIFIPALL TLVQRSRSRH AGHNPPPPPE PRAIPLVGHL HHLLRKKPLH RCLAHLAERH GDVLGLRFGS SRVAVVSSAS VAQQCLVALD TSFGNRPRLP SARILSYEWS TMGHSNCGPY WRQARRTTST EFSSVERVQH FADVHEQEAR AMARRLCRVA HASGGRALVD VKSRLLEMLM NGLLDMLFRR TTSRSRSSDE KDEAVEVSEE ARCFMAMAEE TMELTLTVWD FLPPLARWLD VDAVGRRLQR LQANRTEFLQ RLIEEHKEME KSGQVTRRTL VGVMLELQDK DPEAYTDQLI RSLCVVSIIL YVHSIHQFLI 5.78333 -0.350505 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 6535 6535 6535 6535 6387 6064 5691 5250 3450 1989 1108 530 134 71 16 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6547 6547 6547 6547 6399 6076 5686 5242 3374 1865 650 268 72 27 1 0 0 1 2 3 4 5 6 3697 2422 390 28 2 12 0 0 1 2 3 4 5 1126 3939 1292 169 25 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2164 (charge 3) 1402.69 3 152.057 155.118 163.133 164.136 167.094 167.117 169.133 170.769 175.119 195.087 195.113 197.129 199.108 209.104 226.155 227.158 240.134 244.165 251.123 255.145 259.118 266.125 268.164 272.172 300.156 306.943 309.204 311.682 324.954 331.194 334.949 348.967 364.024 403.18 428.25 469.099 517.223 525.303 545.482 579.292 595.32 642.33 692.367 785.397 937.207 9 12 100 46 7 11 11 7 44 9 27 10 16 11 63 8 13 17 7 12 63 10 8 54 12 70 13 12 52 7 11 11 12 14 39 30 26 29 9 9 29 10 16 9 10 GRMZM2G071959_P01 P30755 Histone H2B.1 seq=translation; coord=7:119910222..119911045:1; parent_transcript=GRMZM2G071959_T01; parent_gene=GRMZM2G071959 MAPKAEKKPA AKKPAEEEPA TEKVEKAPAG KKPKAEKRLP AGKSKEGGEG KKGKKKAKKS VETYKIYIFK VLKQVHPDIG ISSKAMSIMN SFINDIFEKL AAESAKLARY NKKPTITSRE IQTSVRLVLP GELAKHAVSE GTKAVTKFTS S 6.03144 -0.365542 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 9785 9785 9785 9785 9785 9594 8974 6732 4831 2534 1272 528 249 64 9 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9786 9786 9786 9786 9786 9595 8975 6701 4564 2126 875 305 136 13 1 0 0 1 2 3 4 5 6 4420 4186 1015 153 15 1 0 0 1 2 3 4 5 2453 5548 1640 142 7 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2171 (charge 3) 1584.81 3 151.199 155.082 156.122 157.133 159.076 169.097 171.077 171.113 173.093 175.119 185.127 186.124 187.413 197.128 201.087 204.05 209.091 226.154 231.098 240.134 242.113 244.165 258.145 270.108 273.024 279.182 282.422 298.139 311.209 354.006 375.227 412.181 427.184 430.158 451.752 458.262 466.231 477.732 490.242 520.274 537.257 555.276 632.359 666.306 684.318 733.41 794.387 805.456 885.495 938.414 1577.04 11 15 11 29 13 71 56 15 20 29 11 13 9 11 13 11 16 82 18 26 19 13 14 51 12 14 14 20 14 13 13 14 23 19 15 19 20 14 17 24 18 25 24 23 100 25 17 18 19 17 19 GRMZM2G140667_P01 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589206..218592127:-1; parent_transcript=GRMZM2G140667_T01; parent_gene=GRMZM2G140667 GRMZM2G140667_P02 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589352..218592127:-1; parent_transcript=GRMZM2G140667_T02; parent_gene=GRMZM2G140667 GRMZM2G140667_P04 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589294..218592021:-1; parent_transcript=GRMZM2G140667_T04; parent_gene=GRMZM2G140667 5.03355 -0.245539 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 8369 8369 8306 8103 7608 7092 6135 4820 3369 2107 1314 788 477 301 160 98 39 12 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8371 8371 8308 8097 7535 6875 5709 3629 2049 689 203 57 20 1 0 0 1 2 3 4 5 6 7 1541 3089 2317 1081 269 78 14 1 0 1 2 3 4 5 6 7 1611 3512 2229 718 213 81 4 22 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2174 (charge 3) 1249.62 3 155.082 157.108 158.092 167.118 172.108 173.092 175.119 181.061 181.097 181.133 195.113 196.117 198.087 198.123 199.071 199.108 203.608 209.092 212.139 215.114 217.082 220.003 226.118 228.106 229.621 232.14 235.124 244.128 248.034 262.05 266.044 268.129 274.155 276.642 278.148 283.14 284.123 291.182 292.163 301.151 309.193 312.168 316.656 324.156 325.167 326.674 337.15 339.167 341.183 343.173 355.161 356.164 361.183 373.173 381.179 383.156 398.203 400.194 420.184 423.199 424.224 434.204 435.889 438.196 441.208 442.211 452.214 453.214 458.235 460.241 466.193 467.197 469.24 471.239 480.21 484.203 485.207 495.256 517.24 535.252 538.261 539.268 545.235 549.267 552.277 555.288 557.293 563.246 566.293 567.295 580.272 582.264 598.283 635.317 642.292 652.341 654.349 660.303 677.324 695.336 1 3 11 4 5 2 19 3 5 6 20 2 2 4 4 12 2 4 5 6 2 2 22 2 6 61 2 2 2 4 2 3 4 3 27 2 4 5 4 6 4 3 4 4 2 10 8 2 1 4 10 2 12 2 1 2 9 2 2 3 5 2 1 3 8 2 33 6 100 5 16 4 18 2 1 9 2 7 3 2 7 1 14 4 2 61 4 22 6 2 16 2 5 1 2 18 2 1 5 1 GRMZM2G157462_P01 NP_001152484 dynamin-2A seq=translation; coord=6:115289930..115298874:1; parent_transcript=GRMZM2G157462_T01; parent_gene=GRMZM2G157462 MEAMEELSEL AESMRQAASL LADDDPSDDA APRRPTTFLN AVALGNVGAG KSAVLNSLIG HPVLPTGENG ATRAPIVVDL QREPGLSSKS IVLQIDSKSQ QVSASALRHS LQDRLSRGAS GGSGRGRVDE IYLKLRTSTA PSLKLIDLPG IDQRAVDDSM INEYAGHNDA ILLIVIPAMQ AADVASSRAL RLAKDIDADG TRTVGVISKV DQANGDAKTI ACVQALLSNK GPKNLPDIEW VALIGQSVAI ASAQSVGSEN SLETAWRAEA ESLKNILTGS PQNKLGRIAL VDTIAKQIRK RMKVRVPNLL SGLQGKSQMV QDELARLGES MVQSAEGTRA VALELCREFE DKFLAHITSG EGSGWKIVAS FEGKFPDRIK QLPLDRHFDL NNVKRIVLEA DGYQPYLISP EKGLRSLIKI VLEMAKEPSR LCVEEVHRVL LDIVNASANA TPGLGRYPPF KREVVAIASN ALETFKNDAK KMVVALVDME RAFVPPQHFI RLVQRRMERQ RREDELRNRS SKKTQEAEQP TSKRASSPQT DAEQGGGSLK SMKDKSGQQD KDTKEGSNLQ VAGPAGEITA GYLLKKSAKT NGWSKRWFVL NEKSGKLGYT KKQEERHFRG VITLEECNLE EVEEEEPSKS SKDSKKANGS EKISSLVFKI TNRVAYKTVL KAHSAVVLKA ESMADKVEWV NKIKAVIQSK GGSFKGPSTE GSSMRQSNSD GALDTMARRP ADPEEELRWM SQEVRGYVEA VLNSLAANVP KAIVLCQVEK AKEDMLNQLY SSISGQSNAK IEELLQEDHN AKRRREKYQK QSSLLSKLTR QLSIHDNRAS VSSYSNDTTE AESPRTPTRS GEDWRSAFDS ASNGPVAGST NSQSRSKSAD GRSRRYENGD VSSGANSGSR RTPNRLPPAP PKY GRMZM5G811223_P01 seq=translation; coord=9:1743076..1749011:1; parent_transcript=GRMZM5G811223_T01; parent_gene=GRMZM5G811223 MAFCLFGIDR MERQRREDEL RNRSSKKTQE AEQSTSKRAF SPQTDAEQGG GSLKSMKDKS GQQDKDAKEG SNLQVAGPAG EITAGYLLKK SAKTNGWSKR WFVLNEKSGK LGYTEKQEER HFRGVITLEE CNLEEVEEEE PSKSSKDSKK ANGSEKPPSL VFKITNRVAY KTVLKAHSAV LLKAESMPDK VEWVNKIKAV IQSKGGSFKG PSTEGGSMKQ SNSDGALDAM ARRPADPEEE LRWMSQEVRG YVEAVLNSLA ANVPKAIVLC QVEKAKEDML NQLYSSISGQ SNAKIEELLQ EDHNAKRRRE KYQKQSSLLS KLTRQLSIHD NRASVSSYSN DSTEVESPRT PSRSGEDWRS AFDSSSNGPV ATSTNSESRS RSADGRSRRY ENGDVSSGAN SGSRRTPNRL PPAPPKY 4.6853 -0.302277 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 3664 3664 3664 3664 3568 2162 1982 1218 568 261 138 54 19 2 1 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3679 3679 3679 3679 3583 2177 1979 1174 508 226 122 45 21 2 1 1 0 0 1 2 3 4 2648 968 67 1 0 0 1 2 3 4 5 6 541 2622 474 35 2 10 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2215 (charge 3) 1655.73 3 155.081 167.056 169.097 171.077 173.092 175.119 199.107 201.123 225.042 239.095 241.093 244.166 283.945 299.061 355.071 520.246 563.263 648.305 661.853 684.323 718.277 735.305 737.324 745.406 822.369 925.203 1111.86 1370.24 7 7 13 4 5 13 7 8 14 24 6 10 6 10 8 12 8 30 9 9 14 100 10 9 12 9 9 8 GRMZM2G061876_P02 seq=translation; coord=5:128783450..128798039:1; parent_transcript=GRMZM2G061876_T02; parent_gene=GRMZM2G061876 MQTQTLILRA GPSARRSTPP PASTVHLAAS GRCLLRAPSS LRRRRTRSLR ASASLEQVKE VASSPAPSAG KSSQATRRDV RNIAIVAHVD HGKTTLVDSM LRQAKVFRDN QVVQERIMDS NDLERERGIT ILSKNTSITY KGTKINIIDT PGHSDFGGEV ERVLNMVEGV LLVVDSVEGP MPQTRFVLKK ALEFGHAVVV VVNKIDRPTA RPEFVVNSTF ELFIELNATD EQCDFQTVYA SGIKGKASLS PDNLADDLGP LFEAILRCIP EPRVEKDGAL QMLVSNTEYD EHKGRIAIGR LHAGELQRGM EVKVCTPDDA CRVGKVSELF VYQNFSRAPV ESVSAGDICA VCGIDDIMIG ETIADKVTGT PLPTIKVEEP TVRMSFSINT SPFVGREGKY VTSRNLRDRL YRELERNLAM KVEDGETADT FLVSGRGTLH LTILIENMRR EGYEFMIGPP KVINKTVDGK LLEPYEIAAV EVPEESMGSV VELLGKRRGQ MVDMEANGTE GTTLLKYKIP TRGLIGLRNA ILTASRGRAI LNTIFDSYGP WAGDLSSRDQ GSLVAFEDGS TTSYALLNAQ ERGMLFVQPG QDVYKGQIVG IHQRPGDLAI NVCKKKAATN VRSNKETTVV LDEPLSYSLD DCIEFIQEDE IVEVTPASIR MCKNPKVSKK K 5.78656 -0.3507 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 5158 5158 5158 5158 4895 3222 2798 1735 1069 695 288 138 28 9 2 1 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5158 5158 5158 5158 4895 3218 2563 1604 786 444 166 94 2 1 1 0 0 1 2 3 3809 1276 92 0 0 1 2 3 4 5 6 7 792 3631 732 17 2 0 3 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2226 (charge 2) 1100.56 2 157.061 167.055 167.081 169.097 171.114 175.12 183.113 199.107 201.124 204.134 211.108 218.82 221.084 225.042 229.118 235.063 239.095 240.096 244.166 246.126 247.99 256.128 272.171 275.172 282.145 295.102 299.06 321.445 459.259 525.745 530.287 551.931 627.347 632.918 714.375 6 36 7 9 6 8 25 13 68 6 7 5 7 32 11 11 100 8 11 6 5 9 13 6 11 9 26 6 60 7 7 12 22 7 7 GRMZM2G036464_P01 P38562 Glutamine synthetase root isozyme 4 (EC 6.3.1.2)(GS107)(Glutamate--ammonia ligase) seq=translation; coord=4:167081372..167084703:-1; parent_transcript=GRMZM2G036464_T01; parent_gene=GRMZM2G036464 MACLTDLVNL NLSDTTEKII AEYIWIGGSG MDLRSKARTL PGPVTDPSKL PKWNYDGSST GQAPGEDSEV ILYPQAIFKD PFRRGNNILV MCDCYTPAGE PIPTNKRYSA AKIFSSLEVA AEEPWYGIEQ EYTLLQKDTN WPLGWPIGGF PGPQGPYYCG IGAEKSFGRD IVDAHYKACL YAGINISGIN GEVMPGQWEF QVGPSVGISS GDQVWVARYI LERITEIAGV VVTFDPKPIP GDWNGAGAHT NYSTESMRKE GGYEVIKAAI EKLKLRHKEH IAAYGEGNER RLTGRHETAD INTFSWGVAN RGASVRVGRE TEQNGKGYFE DRRPASNMDP YVVTSMIAET TIVWKP GRMZM2G036464_P02 P38562 Glutamine synthetase root isozyme 4 (EC 6.3.1.2)(GS107)(Glutamate--ammonia ligase) seq=translation; coord=4:167081469..167084622:-1; parent_transcript=GRMZM2G036464_T02; parent_gene=GRMZM2G036464 MACLTDLVNL NLSDTTEKII AEYIWIGGSG MDLRSKARTL PGPVTDPSKL PKWNYDGSST GQAPGEDSEV ILYPQAIFKD PFRRGNNILV MCDCYTPAGE PIPTNKRYSA AKIFSSLEVA AEEPWYGIEQ EYTLLQKDTN WPLGWPIGGF PGPQGPYYCG IGAEKSFGRD IVDAHYKACL YAGINISGIN GEVMPGQWEF QVGPSVGISS GDQVWVARYI LERITEIAGV VVTFDPKPIP GDWNGAGAHT NYSTESMRKE GGYEVIKAAI EKLKLRHKEH IAAYGEGNER RLTGRHETAD INTFSWVRF GRMZM2G050514_P01 P38559 Glutamine synthetase root isozyme 1 (EC 6.3.1.2)(GS122)(Glutamate--ammonia ligase) seq=translation; coord=1:27977783..27980656:-1; parent_transcript=GRMZM2G050514_T01; parent_gene=GRMZM2G050514 MASLTDLVNL DLSDCTDRII AEYIWIGGTG IDLRSKARTV KGPITDPSQL PKWNYDGSST GQAPGEDSEV ILYPQAIFKD PFRKGNHILV MCDCYTPQGE PIPTNKRYSA AKVFSHPDVA AEVPWYGIEQ EYTLLQKDVS WPLGWPVGGY PGPQGPYYCA AGADKAFGRD VVDAHYKACL YAGINISGIN GEVMPGQWEF QVGPSVGISA GDEIWVARYI LERITEMAGI VLSLDPKPIK GDWNGAGAHT NYSTKSMREA GGYEVIKAAI DKLGKRHKEH IAAYGEGNER RLTGRHETAD INTFKWGVAN RGASIRVGRD TEREGKGYFE DRRPASNMDP YVVTGMIAET TILWNGN GRMZM2G050514_P02 P38559 Glutamine synthetase root isozyme 1 (EC 6.3.1.2)(GS122)(Glutamate--ammonia ligase) seq=translation; coord=1:27977900..27980647:-1; parent_transcript=GRMZM2G050514_T02; parent_gene=GRMZM2G050514 MASLTDLVNL DLSDCTDRII AEYIWIGGTG IDLRSKARTV KGPITDPSQL PKWNYDGSST GQAPGEDSEV ILYPQAIFKD PFRKGNHILV SLCVVMCDCY TPQGEPIPTN KRYSAAKVFS HPDVAAEVPW YGIEQEYTLL QKDVSWPLGW PVGGYPGPQG PYYCAAGADK AFGRDVVDAH YKACLYAGIN ISGINGEVMP GQWEFQVGPS VGISAGDEIW VARYILERIT EMAGIVLSLD PKPIKGDWNG AGAHTNYSTK SMREAGGYEV IKAAIDKLGK RHKEHIAAYG EGNERRLTGR HETADINTFK WGVANRGASI RVGRDTEREG KGYFEDRRPA SNMDPYVVTG MIAETTILWN GN GRMZM2G050514_P03 P38559 Glutamine synthetase root isozyme 1 (EC 6.3.1.2)(GS122)(Glutamate--ammonia ligase) seq=translation; coord=1:27978141..27981439:-1; parent_transcript=GRMZM2G050514_T03; parent_gene=GRMZM2G050514 MEVGSVMASL TDLVNLDLSD CTDRIIAEYI WIGGTGIDLR SKARTVKGPI TDPSQLPKWN YDGSSTGQAP GEDSEVILYP QAIFKDPFRK GNHILVMCDC YTPQGEPIPT NKRYSAAKVF SHPDVAAEVP WYGIEQEYTL LQKDVSWPLG WPVGGYPGPQ GPYYCAAGAD KAFGRDVVDA HYKACLYAGI NISGINGEVM PGQWEFQVGP SVGISAGDEI WVARYILERI TEMAGIVLSL DPKPIKGDWN GAGAHTNYST KSMREAGGYE VIKAAIDKLG KRHKEHIAAY GEGNERRLTG RHETADINTF KWGVANRGAS IRVGRDTERE GKGYFEDRRP ASNMDPYVVT GMIAETTILW NGN 5.86809 -0.317194 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 9099 9099 8912 8419 7711 6964 4824 3453 1851 925 415 200 103 51 19 7 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 9109 9109 8916 8413 7674 6817 4501 2790 1131 334 79 1 0 0 1 2 3 4 5 6 7 3208 4004 1536 292 53 31 3 2 0 1 2 3 4 5 6 7 1970 4613 1913 483 103 13 9 25 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2249 (charge 3) 1610.77 3 155.093 157.134 158.093 159.076 167.055 168.055 169.052 175.119 178.134 185.128 187.071 207.112 221.089 223.063 225.042 239.094 241.092 244.094 249.097 252.638 266.635 269.124 281.05 282.051 288.156 295.103 299.061 301.059 309.179 323.176 324.177 337.672 344.698 346.973 350.183 360.028 361.026 377.193 380.216 384.152 390.71 395.206 401.179 416.037 417.034 423.202 448.23 458.197 461.75 466.24 475.225 480.292 494.237 504.267 508.29 514.253 532.262 558.277 575.307 586.265 603.3 605.277 626.253 644.264 661.29 663.296 674.331 680.336 807.347 824.353 826.359 895.388 897.395 948.42 966.426 968.427 1079.52 4 2 2 1 40 10 6 16 1 3 2 4 1 9 4 11 3 2 4 7 12 2 5 4 7 1 100 51 34 8 2 4 22 9 2 12 9 6 4 1 1 7 2 23 19 5 1 3 2 2 20 2 3 7 2 3 6 2 3 1 9 2 1 3 39 2 4 1 2 24 4 24 4 3 21 3 1 GRMZM2G036464_P01 P38562 Glutamine synthetase root isozyme 4 (EC 6.3.1.2)(GS107)(Glutamate--ammonia ligase) seq=translation; coord=4:167081372..167084703:-1; parent_transcript=GRMZM2G036464_T01; parent_gene=GRMZM2G036464 GRMZM2G036464_P02 P38562 Glutamine synthetase root isozyme 4 (EC 6.3.1.2)(GS107)(Glutamate--ammonia ligase) seq=translation; coord=4:167081469..167084622:-1; parent_transcript=GRMZM2G036464_T02; parent_gene=GRMZM2G036464 GRMZM2G050514_P01 P38559 Glutamine synthetase root isozyme 1 (EC 6.3.1.2)(GS122)(Glutamate--ammonia ligase) seq=translation; coord=1:27977783..27980656:-1; parent_transcript=GRMZM2G050514_T01; parent_gene=GRMZM2G050514 GRMZM2G050514_P02 P38559 Glutamine synthetase root isozyme 1 (EC 6.3.1.2)(GS122)(Glutamate--ammonia ligase) seq=translation; coord=1:27977900..27980647:-1; parent_transcript=GRMZM2G050514_T02; parent_gene=GRMZM2G050514 GRMZM2G050514_P03 P38559 Glutamine synthetase root isozyme 1 (EC 6.3.1.2)(GS122)(Glutamate--ammonia ligase) seq=translation; coord=1:27978141..27981439:-1; parent_transcript=GRMZM2G050514_T03; parent_gene=GRMZM2G050514 6.6034 -0.338636 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 8872 8872 8790 8161 7440 5845 4236 2473 1402 778 390 199 81 36 19 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 8884 8884 8802 8140 7365 5623 3758 1889 713 237 40 1 0 0 1 2 3 4 5 6 7 3080 3943 1498 297 44 9 31 2 0 1 2 3 4 5 6 7 1781 4483 1958 513 122 13 6 28 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2254 (charge 3) 1610.77 3 155.093 156.077 157.134 158.092 159.076 167.056 168.055 169.051 175.119 176.12 178.134 185.129 187.072 207.113 221.09 223.063 225.042 239.095 241.093 244.092 249.098 252.637 253.138 266.635 269.124 281.051 282.051 284.088 288.156 295.104 299.062 301.06 309.179 323.177 336.185 344.698 346.974 359.028 361.026 367.209 377.193 380.223 390.711 394.215 401.177 405.194 415.036 417.035 423.202 433.048 441.175 448.23 458.203 466.24 475.226 480.293 494.234 504.267 508.29 514.252 532.262 558.28 575.304 579.327 586.263 604.27 605.273 617.353 626.254 644.266 661.289 663.291 674.335 787.423 807.332 824.353 826.362 895.39 897.395 966.427 968.431 1079.52 3 1 1 2 1 37 7 2 12 1 2 3 2 4 2 6 3 11 2 2 3 6 1 12 1 4 2 1 7 1 100 27 29 7 4 19 4 10 5 1 5 4 2 5 2 1 15 11 4 1 1 2 1 3 18 1 3 4 1 2 8 2 2 2 2 6 2 1 2 3 34 3 3 2 1 19 2 21 3 18 2 1 GRMZM5G845611_P01 B4F8L7 Glyceraldehyde-3-phosphate dehydrogenase BPutative uncharacterized protein ; seq=translation; coord=1:6410461..6413123:1; parent_transcript=GRMZM5G845611_T01; parent_gene=GRMZM5G845611 GRMZM2G337113_P02 P09315 Glyceraldehyde-3-phosphate dehydrogenase A, chloroplastic Precursor (EC 1.2.1.13)(NADP-dependent glyceraldehydephosphate dehydrogenase subunit A) seq=translation; coord=2:42257261..42259297:-1; parent_transcript=GRMZM2G337113_T02; parent_gene=GRMZM2G337113 3.49696 -0.279757 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 2614 2614 2610 2520 1466 1245 753 296 123 78 4 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 2615 2615 2611 2520 1459 1234 523 187 62 2 1 1 0 0 1 2 3 4 1751 794 76 4 0 0 1 2 3 4 5 6 469 1642 481 27 0 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2260 (charge 3) 1571.68 3 155.082 159.076 167.055 169.052 171.113 173.092 175.119 187.071 199.108 226.155 239.089 244.165 283.176 286.148 299.062 301.059 303.177 304.179 309.203 346.973 348.973 362.025 380.198 496.836 508.751 576.273 615.345 664.913 672.368 678.359 696.412 739.343 759.401 774.803 826.363 830.433 901.473 1222.09 1333.11 2 5 5 3 6 2 5 5 3 9 14 4 4 1 3 13 19 2 100 1 1 1 1 1 2 5 2 1 3 1 1 2 4 1 7 5 1 1 1 GRMZM2G140667_P01 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589206..218592127:-1; parent_transcript=GRMZM2G140667_T01; parent_gene=GRMZM2G140667 GRMZM2G140667_P02 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589352..218592127:-1; parent_transcript=GRMZM2G140667_T02; parent_gene=GRMZM2G140667 GRMZM2G140667_P04 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589294..218592021:-1; parent_transcript=GRMZM2G140667_T04; parent_gene=GRMZM2G140667 4.43292 -0.305719 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 4815 4815 4815 4815 4621 2503 2014 899 400 244 134 33 4 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4830 4830 4830 4830 4636 2518 2025 721 350 118 97 30 15 1 0 0 1 2 3 4186 617 33 0 0 1 2 3 4 5 6 375 4078 355 9 13 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2263 (charge 2) 1249.62 2 167.055 169.097 175.119 198.087 198.124 199.108 226.119 232.141 239.094 244.092 278.148 299.06 326.674 337.15 367.275 555.29 652.342 687.324 878.448 879.44 21 7 11 8 5 6 43 24 38 6 7 17 9 10 5 7 100 6 37 19 GRMZM2G101938_P01 NP_001132839 hypothetical protein LOC100194331 seq=translation; coord=6:105424578..105432613:1; parent_transcript=GRMZM2G101938_T01; parent_gene=GRMZM2G101938 MAAGYRAEDD YDYLFKVVLI GDSGVGKSNL LSRFTRNEFS LESKSTIGVE FATRSLQVDG KVVKAQIWDT AGQERYRAIT SAYYRGAVGA LLVYDVTRHS TFENVERWLK ELRDHTDPNI VVMLVGNKSD LRHLVAVQTD EGKAFAERES LYFMETSALE STNVENAFAE VLTQIYRIVS KRAVEAGEDA ASGPGKGEKI NIKDDVSAVK KGGCCSS 5.06064 -0.349009 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6998 6998 6993 6678 4398 3467 1780 900 506 218 87 23 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 6996 6996 6991 6666 4312 3190 1508 650 289 65 19 1 0 0 1 2 3 4 5 4193 2421 362 25 2 0 0 1 2 3 4 5 6 7 1259 4323 1227 161 27 2 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2275 (charge 3) 1572.75 3 152.057 155.082 159.077 167.055 169.134 171.113 173.092 175.119 183.076 185.092 187.072 199.107 226.155 239.089 244.165 258.108 283.176 302.06 303.178 309.204 333.177 383.193 452.248 461.266 475.221 480.259 576.272 615.346 672.364 678.354 695.408 739.338 759.403 805.422 812.435 826.37 830.439 901.474 921.502 1016.5 1064.48 1191.21 2 2 4 1 1 8 2 5 3 2 7 4 13 13 6 1 4 5 16 100 2 3 4 2 1 1 4 5 4 2 2 4 8 1 1 5 5 1 1 1 2 1 GRMZM2G001514_P01 NP_001149409 LOC100283035 seq=translation; coord=8:69592559..69594672:1; parent_transcript=GRMZM2G001514_T01; parent_gene=GRMZM2G001514 MATTSTPRLA TLLVLLAAAS PLLSAAQKAA PKAPAAAKAA PGPAASSSSG AGAADAAPPT DVNKALKDDQ FSEFKQLLHD TRVDTQINAQ LTDSYNGLTI MAPTNAAFDK MKAGVLNGLS PQDQIQLVLY CVLPRFYSLS MLGTLDGKVN TQGSGHDGPY RYDIKRSGNN VNVSTGVNWM LLGSPVSKDF PLAIYPVDKV PLPYELFGPK PPTPAPAPAP APAKSKTKKK KKAAGIAEPP TADDDTSASD DQKAAATPGA AGSWAAAALS ALAAAALGAG LF GRMZM2G021794_P01 NP_001147565 fasciclin-like arabinogalactan protein 7 seq=translation; coord=6:164551086..164552313:1; parent_transcript=GRMZM2G021794_T01; parent_gene=GRMZM2G021794 MAGSASRLAI LLVLLAASPL LGATQKAAPG PASSSGSGAG AADAAPPTDV NKALKDEQFS EFRQLLHDTR VDTQINAQLT DSYNGLTIMA PTNAAFDKMK AGVLNGLSPQ EQIQMVLYCV LPRFYSLSML GTLSGKVNTQ GSGHDGPYRY DIKRSGNNVN VSTGVNWMLL GSPVSKDFPL AIYPVDKVPL PYELFGPKPP TPAPAPAPAP GPAKAKTKKK KKSAAIAEPP TADDDDTGST SDDQKAAAAP PRASRAAAAL SVLGAAVLVG GLF 4.82692 -0.35755 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 4067 4067 3911 3606 3205 2475 1507 917 507 159 59 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 4064 4064 3904 3588 3139 2399 1345 601 198 32 1 0 0 1 2 3 4 5 6 1503 1824 665 65 10 7 0 0 1 2 3 4 5 6 7 604 2345 967 110 39 3 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2293 (charge 3) 1387.63 3 150.066 153.066 155.082 158.093 167.056 167.093 168.055 169.052 169.097 171.076 175.119 181.06 186.124 188.103 195.076 195.089 197.092 198.086 199.071 199.108 212.104 214.119 216.098 223.064 225.043 227.103 230.114 244.166 253.093 297.156 299.063 311.147 338.182 341.017 342.999 359.029 361.026 372.675 383.667 401.185 422.179 429.089 431.087 435.236 444.702 450.176 454.169 464.205 473.213 475.23 492.257 494.266 519.723 528.731 565.202 590.262 607.283 744.344 801.366 888.399 928.401 945.419 947.43 1 1 2 2 27 2 3 1 7 2 10 1 3 2 2 1 5 2 1 1 1 6 3 6 6 1 3 1 2 1 1 2 1 4 3 100 31 5 1 2 2 15 7 3 2 1 2 1 4 3 35 1 1 6 2 1 11 3 3 3 1 8 2 GRMZM2G156227_P01 NP_001140897 hypothetical protein LOC100272974 seq=translation; coord=2:12102598..12106650:-1; parent_transcript=GRMZM2G156227_T01; parent_gene=GRMZM2G156227 MAGANFLSTA ALVARGVAAC SSISTPTRRH PQIRVCCRAD VEAMEAYAHE ERLRFRRRDF IGTCVGTAIG LEMIDGSTSF SGVATAADLI ERRQRSEFQS KIKDTLYVAI KAKPELVPSL LTMALNDAMT YDKTTKTGGA NGSIRLETSR PENSGLSSAL DLLTEAKKEI DSFSKGGPIS FADLIQFAAQ SALKRSFLDA AIAKCGGNEE KGRTLYSAYG SNGQWGLFDR TFGRADAQEA DPEGRVPDWS KASVQEMKDR FVAVGLGPRQ LAVMSAFLGP DQAATEGRLI ADPDCRPWVE KYQRSRETVS RTDYEVDLIT TLTKLSSLGQ KINYEAYTYP KQKIDLGKLK L 4.62246 -0.280149 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1899 1899 1869 1680 1626 1440 961 751 395 181 101 59 24 12 6 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1874 1874 1844 1655 1596 1402 879 657 252 63 31 3 2 2 1 0 0 1 2 3 4 1222 607 90 6 0 0 1 2 3 4 5 6 7 432 1219 244 21 4 0 5 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2301 (charge 2) 1158.5 2 152.057 159.077 167.055 169.097 173.092 175.119 181.097 183.077 186.124 187.072 187.144 188.076 194.625 197.67 200.103 201.087 204.135 212.103 217.083 226.154 230.115 232.141 239.095 241.081 244.167 258.109 275.134 285.011 287.007 299.062 301.156 302.663 312.117 319.605 327.241 329.145 337.403 355.069 357.068 369.179 371.215 411.951 418.996 420.992 427.183 441.21 456.285 458.236 460.24 470.189 489.219 515.284 546.733 573.263 621.438 628.333 644.299 684.325 773.339 885.382 917.504 1093.15 3 17 21 15 3 18 2 5 3 33 4 2 4 2 21 3 2 4 3 16 2 29 11 3 3 10 4 3 3 19 3 9 4 2 2 4 2 4 10 3 3 3 3 3 3 4 3 100 4 4 3 8 9 4 3 4 16 3 15 3 2 2 GRMZM2G128056_P01 NP_001146398 hypothetical protein LOC100279978 seq=translation; coord=9:12571363..12580129:1; parent_transcript=GRMZM2G128056_T01; parent_gene=GRMZM2G128056 MAYRSAVLLP ALLLAVAVVV ASAAAGDGRW REEQARDRVP RVPGQAFNTS FAQYAGYVTV SEQRGAALFY WFFEAEKDPG SKPLVLWLNG GPGCSSIAFG LGEEVGPFHV NADGKGVHVN PYSWNKVANL LFLDSPVGVG YSYSNTSDDA LKNGDARTAT DSLAFLLKWL ERFPQYKERE FYLTGESYAG HYVPQLAQAI KRHHEATGDK SINLKGYMVG NALTDDFHDH YGIFQFMWTT GLISDQTYKL LNVFCDYESF VHSSPQCDKI MDIASTEAGN IDSYSIFTPT CHASFASSKN KVMKRLHSAG KMGEQYDPCT EKHSTVYFNL AEVQKALHVN TVIGKSKWET CSEAVNTHWG DCERSVLHIY HELIQYGLRI WVFSGDTDAV IPVTSTRYSI DALKLPTITP WHAWYDDDGE VGGWTQGYRG LNFVTVRGAG HEVPLHRPKQ ALTLIKSFLT GSPMPVQSST HSNM 6.3243 -0.308503 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5754 5754 5754 5754 5754 5415 5220 4799 4280 3239 2475 1038 519 198 95 66 29 13 6 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5752 5752 5752 5752 5752 5413 5214 4762 4149 3074 1929 544 245 8 1 0 0 1 2 3 4 5 6 7 2602 2136 820 164 33 0 2 0 0 1 2 3 4 5 6 7 1111 2731 1497 350 39 27 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2306 (charge 3) 1297.71 3 154.087 155.081 157.108 158.093 159.077 166.061 167.093 169.097 171.077 173.128 175.119 178.061 181.097 183.149 185.092 186.087 186.123 189.087 190.436 195.088 195.113 197.126 199.108 201.123 208.954 210.95 217.083 221.104 223.999 226.156 235.063 240.134 244.166 248.035 258.145 262.135 266.044 269.166 272.171 275.124 277.139 284.009 288.111 294.165 304.094 306.12 324.13 333.177 341.217 345.976 346.973 355.197 362.025 374.236 400.266 403.166 409.23 415.04 423.2 452.191 470.246 486.761 518.267 537.329 551.261 650.407 747.463 1054.38 1139.04 1280.3 13 12 30 11 12 14 19 18 12 15 100 14 13 32 13 14 13 18 8 55 12 9 50 17 60 77 11 13 20 98 47 11 69 16 10 36 38 44 8 15 33 14 11 19 22 15 43 12 13 47 40 12 21 12 39 10 19 12 16 17 12 10 10 87 50 15 47 11 12 10 GRMZM2G102760_P01 NP_001105975 lipoxygenase seq=translation; coord=5:12274159..12279067:-1; parent_transcript=GRMZM2G102760_T01; parent_gene=GRMZM2G102760 MFWHGVADRL TGKNKEAWSE GKIRGTVRLV KKEVLDVGDF NASLLDGVHR ILGWDDGVAF QLVSATAADP SNGGRGKVGK AAHLEEAVVS LKSTADGETV YRVSFEWDES QGIPGAVLVR NLQHAEFFLK TLTLEGVPGK GTVVFVANSW VYPHKLYSQE RIFFANDTYL PSKMPAALVP YRQDELKILR GDDNPGPYQE HDRVYRYDYY NDLGDPDKGE EHARPILGGS QEHPYPRRCR TGRHPTKKDP NSESRLFLLN LNIYVPRDER FGHLKMSDFL GYSLKTIIEA VLPTLGTFVD DTPKEFDSFE DILGLYELGP EAPNNPLIAE IRKKIPSEFL RSILPNGSHD HPLKMPLPNV IKSDVLKKAP EFKFGWRTDE EFARETLAGV NPVIIKRLTE FPAKSTLDPR QYGDHTSKIT EAHIRHNMGG LSVQNALRNK RLFILDHHDH FMPYLDEINE LEGNFIYASR TLLFLKDDGT LKPLAIELSL PHPDGQQRGA VSKVYTPAHT GVEGHVWQLA KAYACVNDSA WHQLISHWLN THAVIEPFVI ATNRQLSVVH PVHKLLSPHY RDTLNINALA RQTLINAGGV FERTVFPAKY ALGMSADVYK SWNFNEQALP ADLVKRGVAV PDQSSPYGVR LLIKDYPYAV DGLVIWWAIE RWVKEYLDIY YPNDGELQRD VELQAWWKEV REEAHGDLKD RDWWPRMDTV QQLARACTTI IWVASALHAA VNFGQYPYAG YLPNRPTASR RPMPEPGSHD YKKLGAGQKE ADMVFIRTIT SQFQTILGIS LIEILSKHSS DEVYLGQRDE PDRWTSDAKA LDAFKRFGSR LVQIENRIKT MNDSPDLKNR KGPVEMPYML LYPNTSDVTG EKAEGLTAMG IPNSISI GRMZM2G102760_P02 NP_001105975 lipoxygenase seq=translation; coord=5:12274159..12279067:-1; parent_transcript=GRMZM2G102760_T02; parent_gene=GRMZM2G102760 MPYLDEINEL EGNFIYASRT LLFLKDDGTL KPLAIELSLP HPDGQQRGAV SKVYTPAHTG VEGHVWQLAK AYACVNDSAW HQLISHWLNT HAVIEPFVIA TNRQLSVVHP VHKLLSPHYR DTLNINALAR QTLINAGGVF ERTVFPAKYA LGMSADVYKS WNFNEQALPA DLVKRGVAVP DQSSPYGVRL LIKDYPYAVD GLVIWWAIER WVKEYLDIYY PNDGELQRDV ELQAWWKEVR EEAHGDLKDR DWWPRMDTVQ QLARACTTII WVASALHAAV NFGQYPYAGY LPNRPTASRR PMPEPGSHDY KKLGAGQKEA DMVFIRTITS QFQTILGISL IEILSKHSSD EVYLGQRDEP DRWTSDAKAL DAFKRFGSRL VQIENRIKTM NDSPDLKNRK GPVEMPYMLL YPNTSDVTGE KAEGLTAMGI PNSISI 6.32748 -0.36157 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 10513 10513 10513 10457 9743 9238 8256 5731 4146 1846 973 393 196 73 14 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10519 10519 10519 10463 9749 9209 8144 5483 3731 1345 523 144 38 18 1 0 0 1 2 3 4 5 6 7 4789 4385 1035 256 40 8 6 0 0 1 2 3 4 5 6 7 1748 5994 2318 403 41 9 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2312 (charge 3) 1541.75 3 152.057 153.103 155.081 155.118 157.109 157.134 158.137 161.093 166.061 171.076 175.119 181.097 183.113 185.092 185.128 189.087 193.105 195.113 197.103 199.108 199.182 204.134 207.087 215.138 218.15 223.155 226.155 227.103 229.099 237.134 244.165 251.15 253.092 262.629 267.109 275.208 292.163 299.87 310.178 314.011 340.125 343.18 353.877 367.19 379.173 381.256 385.202 397.148 399.154 438.273 452.255 457.173 459.216 466.234 484.255 494.198 500.352 508.242 521.236 544.244 553.745 566.275 583.304 585.311 611.299 613.296 629.268 690.342 765.367 834.404 852.398 871.441 931.459 15 4 15 5 8 42 4 4 15 4 26 4 5 4 15 7 9 7 5 30 4 15 6 4 8 5 52 25 4 5 24 22 30 4 8 5 9 5 5 4 15 24 4 6 6 4 100 16 4 8 6 5 4 5 5 25 4 7 7 4 8 9 45 5 69 6 4 6 9 17 8 6 17 GRMZM2G306732_P01 NP_001150706 fructose-1,6-bisphosphatase seq=translation; coord=1:38848595..38850785:-1; parent_transcript=GRMZM2G306732_T01; parent_gene=GRMZM2G306732 MAAAATTSSS SHLLLLSRQQ AASLRCRLSF LGQPARRSGR VTAQAPAAKD VRCMAAVDTA ASAAAAETSP KSSSYEIVTL TTWLLQQERT GAIDNEMTIV LASISTACKQ IAALVQRAPI SNLTGVQGAV NVQGEDQKKL DVVSNEVFSN CLKSSGRTGV IASEEEDVPV AVEQSYSGNY IVVFDPLDGS SNIDAAVSTG SIFGIYNPND ECLADVDDND TLDSVEQRCI VNVCQPGSNL LAAGYCMYSS SVIFVLTVGT GVYVFTLDPM YGEFVLTQEK VQIPKAGKIY AFNEGNYALW DDKLKLYMDS LKEPGDSGKP YSARYIGSLV GDFHRTLLYG GIYGYPRDKK SKNGKLRLLY ECAPMSFIVE QAGGKGSDGH QRILDITPTE IHQRVPLYIG SVEEVDKVEK FLA 5.79765 -0.351373 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 6216 6216 6104 5799 5472 4936 4378 4098 2524 1261 675 287 123 42 14 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6222 6222 6110 5805 5475 4916 4297 4052 2090 1000 395 92 39 4 1 0 0 1 2 3 4 5 6 3376 2408 395 41 2 2 0 0 1 2 3 4 5 6 7 833 3577 1455 325 26 6 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2317 (charge 3) 1263.6 3 152.057 154.087 155.082 157.061 157.108 158.093 159.076 166.061 169.097 169.134 171.113 173.056 173.093 173.129 175.119 181.097 182.101 185.056 186.124 187.107 193.098 194.128 195.089 197.129 204.135 209.092 213.088 226.155 233.129 235.119 240.135 242.077 244.165 246.156 251.263 255.146 265.997 272.172 290.986 293.1 297.156 299.099 304.947 309.204 315.073 322.959 328.15 329.942 333.189 335.137 340.629 346.971 359.198 423.326 439.835 484.214 496.254 519.25 522.312 576.282 593.305 595.309 619.368 672.406 730.325 778.416 881.377 1067.15 3 3 5 3 2 9 3 3 5 4 4 8 3 4 43 53 9 2 36 3 16 3 2 4 5 70 3 11 12 2 3 3 9 2 2 5 3 17 4 5 18 3 4 14 3 4 3 3 15 3 2 15 2 5 2 3 18 3 3 4 100 4 3 4 3 4 3 3 GRMZM2G033493_P01 NP_001131923 hypothetical protein LOC100193314 seq=translation; coord=7:157278232..157282868:-1; parent_transcript=GRMZM2G033493_T01; parent_gene=GRMZM2G033493 MAAISSLPFA ALRGAAEWRP SSTAAAVSGA VVLSARSRRG SRSVVRCVAT TGDVPPTVAE TKLNFLKSYK RPIPSIYSAV LQELLVQQHL MRYKKTYQYD AVFALGFVTV YDQLMEGYPS NEDRDSIFKA YITALNEDPD QYRADALKME EWARSQNGSS LVDFSSRDGE IEAILKDISE RAKGKGNFSY SRFFAVGLFR LLELSNATEP TILDKLCAAL NVSKRSVDRD LDVYRNILSK LVQAKELLKE YVDREKKKRE ERSEAPKPNE AVTKFDGNLY STRH 3.28282 -0.226401 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5551 5551 5551 3921 3758 2542 1965 1413 903 496 292 99 42 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5534 5534 5534 3904 3698 2401 1687 1121 526 307 169 21 1 0 0 1 0 0 1 2 3 4 3460 1867 220 16 0 0 1 2 3 4 5 6 7 1096 3717 634 110 3 0 3 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2327 (charge 2) 1270.67 2 154.051 155.082 159.077 169.098 171.076 171.114 175.119 181.109 187.072 189.087 199.109 201.124 209.104 212.103 217.083 226.155 230.15 244.166 248.161 254.152 279.034 288.12 290.163 322.917 341.146 355.198 379.701 383.194 395.155 412.184 418.27 443.756 452.251 470.262 511.252 528.3 566.299 614.846 617.301 637.331 677.399 731.853 736.394 758.404 853.412 886.499 903.497 921.499 983.546 3 3 3 5 5 3 4 10 4 21 25 5 31 5 52 100 8 14 33 3 3 6 11 2 9 3 3 9 3 17 3 3 12 9 11 3 3 3 3 17 3 4 5 41 3 5 3 9 9 GRMZM2G058173_P01 NP_001151824 undecaprenyl pyrophosphate synthetase seq=translation; coord=7:144837690..144838974:-1; parent_transcript=GRMZM2G058173_T01; parent_gene=GRMZM2G058173 MMLLALHSPS TGTVAWRRRR PAPLPAISRR ARIIRPSPFA LSTAAATDTS TGHAPATADR EAPLLQLLHS GVRAESLPRH VGLVIDGHAR WARARGLSVS EGHAVGRRTV EHTVRLSRAW GIRVLTVFAC SHENMTTRPK AEMDFFMQLY EGFIRDNVDQ FCREGIRLHL IGDSPGLPAS LLRAAREANQ LATQSESEMV LMLAMGYSGR RDILRACQEL ATEVQRNLLR PEDIDEALIA GKLGTSIAGG ELSYPDLVIR TSGELRLSNF LLWQSAFAEL FFSDVMWPDF GEDEYLGALR SYQTRQRRFG QRK 6.83716 -0.390695 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 7977 7977 7977 7704 7112 6672 6098 5611 3377 2401 1127 443 128 53 20 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7953 7953 7953 7680 7088 6633 5996 5411 3175 1982 797 197 18 1 0 0 1 2 3 4 5 6 4021 3033 773 113 35 3 0 0 1 2 3 4 5 6 7 1709 4781 1225 237 25 0 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2342 (charge 3) 1714.8 3 152.057 155.081 157.109 158.092 159.076 169.097 171.076 171.113 172.072 173.092 174.096 175.119 195.088 195.996 199.072 199.108 214.118 217.083 226.155 240.134 244.13 257.125 270.109 303.891 318.126 339.134 348.64 371.241 419.712 444.243 451.729 466.793 469.221 513.959 551.35 556.199 566.64 581.826 604.354 613.307 630.321 650.809 670.305 677.399 687.834 696.273 701.357 704.339 736.339 757.873 771.876 812.394 824.375 838.414 895.444 903.487 996.483 1083.51 1111.4 1299.6 1625.3 5 7 4 5 3 5 6 6 9 93 4 64 6 3 4 23 4 8 61 6 31 4 6 4 4 4 5 40 7 4 5 17 4 5 5 5 6 5 5 5 100 8 6 6 6 17 48 6 5 5 5 6 6 17 22 7 8 9 6 7 6 GRMZM2G024104_P01 P38560 Glutamine synthetase root isozyme 2 (EC 6.3.1.2)(Glutamate--ammonia ligase) seq=translation; coord=1:267894143..267897525:-1; parent_transcript=GRMZM2G024104_T01; parent_gene=GRMZM2G024104 MALLSDLINL DLSGRTGKII AEYIWVGGSG MDVRSKARTL SGPVDDPSKL PKWNFDGSST GQAPGDDSEV ILCPRAIFRD PFRKGQNILV MCDCYEPNGE PIPSNKRHGA AKIFSHPDVK AEEPWFGIEQ EYTLLQKDTK WPLGWPLGGY PGPQGPYYCA VGADKSYGRD IVDAHYKACL YAGIDISGIN GEVMPGQWEF QVGPAVGVSA GDQLWVARYI LERITEIAGV VVSFDPKPIP GDWNGAGAHT NYSTKSMRSD GGYEVIKKAI GKLGLRHREH IAAYGDGNER RLTGRHETAD INTFVWGVAN RGASVRVGRD TEKEGKGYFE DRRPASNMDP YVVTSLIAET TMLWEPSHSN GDGKGAAAP GRMZM2G024104_P02 P38560 Glutamine synthetase root isozyme 2 (EC 6.3.1.2)(Glutamate--ammonia ligase) seq=translation; coord=1:267894143..267897525:-1; parent_transcript=GRMZM2G024104_T02; parent_gene=GRMZM2G024104 MALLSDLINL DLSGRTGKII AEYIWVGGSG MDVRSKARTL SGPVDDPSKL PKWNFDGSST GQAPGDDSEV ILWDPFRKGQ NILVMCDCYE PNGEPIPSNK RHGAAKIFSH PDVKAEEPWF GIEQEYTLLQ KDTKWPLGWP LGGYPGPQGP YYCAVGADKS YGRDIVDAHY KACLYAGIDI SGINGEVMPG QWEFQVGPAV GVSAGDQLWV ARYILERITE IAGVVVSFDP KPIPGDWNGA GAHTNYSTKS MRSDGGYEVI KKAIGKLGLR HREHIAAYGD GNERRLTGRH ETADINTFVW GVANRGASVR VGRDTEKEGK GYFEDRRPAS NMDPYVVTSL IAETTMLWEP SHSNGDGKGA AAP GRMZM2G024104_P03 P38560 Glutamine synthetase root isozyme 2 (EC 6.3.1.2)(Glutamate--ammonia ligase) seq=translation; coord=1:267894143..267897157:-1; parent_transcript=GRMZM2G024104_T03; parent_gene=GRMZM2G024104 MDVRSKARTL SGPVDDPSKL PKWNFDGSST GQAPGDDSEV ILCPRAIFRD PFRKGQNILV MCDCYEPNGE PIPSNKRHGA AKIFSHPDVK AEEPWFGIEQ EYTLLQKDTK WPLGWPLGGY PGPQGPYYCA VGADKSYGRD IVDAHYKACL YAGIDISGIN GEVMPGQWEF QVGPAVGVSA GDQLWVARYI LERITEIAGV VVSFDPKPIP GDWNGAGAHT NYSTKSMRSD GGYEVIKKAI GKLGLRHREH IAAYGDGNER RLTGRHETAD INTFVWGVAN RGASVRVGRD TEKEGKGYFE DRRPASNMDP YVVTSLIAET TMLWEPSHSN GDGKGAAAP GRMZM2G024104_P04 P38560 Glutamine synthetase root isozyme 2 (EC 6.3.1.2)(Glutamate--ammonia ligase) seq=translation; coord=1:267894143..267896770:-1; parent_transcript=GRMZM2G024104_T04; parent_gene=GRMZM2G024104 MCDCYEPNGE PIPSNKRHGA AKIFSHPDVK AEEPWFGIEQ EYTLLQKDTK WPLGWPLGGY PGPQGPYYCA VGADKSYGRD IVDAHYKACL YAGIDISGIN GEVMPGQWEF QVGPAVGVSA GDQLWVARYI LERITEIAGV VVSFDPKPIP GDWNGAGAHT NYSTKSMRSD GGYEVIKKAI GKLGLRHREH IAAYGDGNER RLTGRHETAD INTFVWGVAN RGASVRVGRD TEKEGKGYFE DRRPASNMDP YVVTSLIAET TMLWEPSHSN GDGKGAAAP GRMZM2G024104_P05 P38560 Glutamine synthetase root isozyme 2 (EC 6.3.1.2)(Glutamate--ammonia ligase) seq=translation; coord=1:267894143..267895292:-1; parent_transcript=GRMZM2G024104_T05; parent_gene=GRMZM2G024104 MRSDGGYEVI KKAIGKLGLR HREHIAAYGD GNERRLTGRH ETADINTFVW GVANRGASVR VGRDTEKEGK GYFEDRRPAS NMDPYVVTSL IAETTMLWEP SHSNGDGKGA AAP 5.98252 -0.32338 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 7264 7264 7264 7264 6949 6379 6026 4169 3289 1692 780 355 146 71 27 16 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7288 7288 7288 7288 6973 6403 6030 4096 3147 1468 529 187 49 3 1 0 0 1 2 3 4 5 6 7 4002 2543 581 91 46 4 0 25 0 1 2 3 4 5 6 7 1327 4660 1093 156 28 3 25 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2343 (charge 3) 1624.76 3 152.058 153.481 155.082 157.097 159.077 159.092 166.06 167.082 169.051 169.097 170.278 173.056 175.119 184.072 185.091 185.128 199.107 202.899 226.155 244.166 253.132 266.64 280.638 294.166 296.136 300.064 302.06 304.059 309.2 323.183 326.604 337.181 358.703 372.698 408.216 423.206 475.228 520.782 532.27 541.119 543.24 560.269 584.301 647.275 655.337 810.344 881.383 952.417 6 5 12 7 8 6 5 8 7 9 6 6 42 7 7 7 10 6 56 18 12 42 43 9 11 9 13 11 7 57 9 17 8 36 16 10 80 10 10 19 11 100 14 40 10 15 37 18 GRMZM2G096153_P01 NM_001111509 glutathione transferase10 (gst10), mRNA seq=translation; coord=1:7866607..7868253:-1; parent_transcript=GRMZM2G096153_T01; parent_gene=GRMZM2G096153 MAAPVTVYGP MLSPAVARVA ACLLEKDVPF QIEPVDMSKG EHKSPSFLKL QPFGQVPAFK DHLTTVFESR AICRYICDQY ADSGNQALFG KKEDGAVGRA AIEQWIESEG QSFNPPSLAI IFQLAFAPMM GRTTDLAVVE QNEAKLAKVL DVYDQRLGES QYFAGDDFSL ADLVHLPNAD FLVNRTSKAG LITERKNLAR WWDDVSSRPA WKKVTEMQST PRPS GRMZM2G096153_P02 NM_001111509 glutathione transferase10 (gst10), mRNA seq=translation; coord=1:7866691..7868236:-1; parent_transcript=GRMZM2G096153_T02; parent_gene=GRMZM2G096153 MQISLFFSLL SFFRQQRCNK NTDLQLRVQA EMHTFAKGQI AEALGYILGV TSAYACLAGK RKPKRSYYLR RPISLLCVWC SSLTESRAIC RYICDQYADS GNQALFGKKE DGAVGRAAIE QWIESEGQSF NPPSLAIIFQ LAFAPMMGRT TDLAVVEQNE AKLAKVLDVY DQRLGESQYF AGDDFSLADL VHLPNADFLV NRTSKAGLIT ERKNLARWWD DVSSRPAWKK VTEMQSTPRP S 6.36476 -0.385743 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 4069 4069 4069 4069 4069 4007 2261 1862 926 380 140 42 13 8 3 1 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4068 4068 4068 4068 4068 4006 2260 1770 776 306 115 25 1 0 0 1 2 3 2856 1149 68 0 0 1 2 3 4 5 6 706 3211 148 4 0 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2344 (charge 2) 1248.59 2 152.057 157.011 157.098 167.055 169.061 173.128 175.119 183.113 185.092 195.089 199.108 201.124 203.102 212.103 216.098 225.043 230.114 239.095 244.165 295.101 299.062 312.156 323.308 387.137 401.831 456.257 540.784 557.305 644.331 652.337 772.401 802.951 825.31 855.427 1274.32 21 11 16 14 12 51 20 19 18 18 18 17 13 54 12 68 15 100 19 15 22 18 17 13 13 53 13 18 48 44 21 13 16 23 13 GRMZM2G140667_P01 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589206..218592127:-1; parent_transcript=GRMZM2G140667_T01; parent_gene=GRMZM2G140667 GRMZM2G140667_P02 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589352..218592127:-1; parent_transcript=GRMZM2G140667_T02; parent_gene=GRMZM2G140667 GRMZM2G140667_P04 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589294..218592021:-1; parent_transcript=GRMZM2G140667_T04; parent_gene=GRMZM2G140667 6.72101 -0.344667 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 7934 7934 7934 7916 7246 6924 6213 5650 5086 3696 2750 1377 567 271 89 50 17 2 1 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7949 7949 7949 7931 7261 6906 6170 5533 4932 2733 1673 320 30 1 0 0 1 2 3 4 5 6 2769 3759 1114 255 57 3 0 0 1 2 3 4 5 6 7 1453 3618 1829 742 255 39 1 20 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2346 (charge 3) 1249.62 3 154.086 155.082 158.092 159.076 169.097 171.113 171.149 172.108 173.092 173.13 175.119 181.06 181.097 181.133 190.976 194.624 195.088 195.113 197.129 199.072 199.107 202.39 207.113 220.003 223.153 227.103 230.128 232.141 235.12 238.012 244.165 246.156 248.034 252.139 256.002 262.05 266.045 272.171 278.148 284.01 290.044 291.185 294.65 301.154 303.161 310.207 322.189 324.154 331.199 337.15 345.224 346.974 355.161 361.185 393.194 398.203 434.222 441.206 444.293 452.21 458.236 460.243 466.192 470.243 495.255 515.327 538.276 555.286 563.247 582.261 586.366 590.284 592.312 626.028 647.305 652.338 1115.77 1222.79 14 7 23 7 6 5 5 6 9 6 87 6 7 5 6 3 6 18 8 4 26 4 5 9 5 40 9 59 5 5 21 9 21 32 7 56 15 6 18 13 7 6 6 5 17 7 7 15 5 8 9 5 8 9 16 14 5 7 14 30 100 7 6 7 6 5 5 61 5 5 6 5 5 5 18 13 4 5 GRMZM2G349062_P01 NP_001147604 pheophorbide a oxygenase seq=translation; coord=1:290135976..290138852:1; parent_transcript=GRMZM2G349062_T01; parent_gene=GRMZM2G349062 MDPLSLLQLP RASRPPMPLA AAAAPLVSAR LSVSGGARSV RRRRRRRAAG LSVFAVATET PRTEEQQPSP SGEERFDWLD QWYPLAPVCD LDPRAPHGKT VLGLSVVAWY DRGAGEWRVF DDACPHRLAP LSEGRIDDRG RLQCVYHGWC FDGAGACKFI PQAPALGPPV HTSSRACVAS YPCVVQNNIL WFYPRADPEH SDVLQRKRPP LIPEIDDPDF VTVYGIRDLP YGYDILVENL MDPAHVPYAH KGIMRGIRKK EDPGRVDYDK EGGGPVKMKI EQANIEGFVS PQERGYFQFV APCTFFGTPF VQEGQKKKAP RVMLVFFCIP VGPGRSRVIW AFPRNVGVWL HHITPRWLYH VGQNLILDSD IFLLHVEERK FAAAGLDNWQ RACYVPTSSD AMVVAFRNWF RKFCKNQVGW ATLQVDQLPP TRTKDQLMER YWSHVVQCRS CNAALKAMKA LEAALQVASV AVVGFLAVAK GTVLTSTVQR AAVVSATVLC FAASRWLANF IQKNFYFQDY IHAYK GRMZM2G349062_P02 NP_001147604 pheophorbide a oxygenase seq=translation; coord=1:290135976..290138852:1; parent_transcript=GRMZM2G349062_T02; parent_gene=GRMZM2G349062 MDPLSLLQLP RASRPPMPLA AAAAPLVSAR LSVSGGARSV RRRRRRRAAG LSVFAVATET PRTEEQQPSP SGEERFDWLD QWYPLAPVCD LDPRAPHGKT VLGLSVVAWY DRGAGEWRVF DDACPHRLAP LSEGRIDDRG RLQCVYHGWC FDGAGACKFI PQAPALGPPV HTSSRACVAS YPCVVQNNIL WFYPRADPEH SDVLQRKRPP LIPEIDDPDF VTVYGIRDLP YGYDILVENL MDPAHVPYAH KGIMRGIRKK EDPGRVDYDK EGGGPVKMKI EQANIEGFVS PQERGYFQFV APCTFFGTPF VQEKKKAPRV MLVFFCIPVG PGRSRVIWAF PRNVGVWLHH ITPRWLYHVG QNLILDSDIF LLHVEERKFA AAGLDNWQRA CYVPTSSDAM VVAFRNWFRK FCKNQVGWAT LQVDQLPPTR TKDQLMERYW SHVVQCRSCN AALKAMKALE AALQVASVAV VGFLAVAKGT VLTSTVQRAA VVSATVLCFA ASRWLANFIQ KNFYFQDYIH AYK 3.75082 -0.258677 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1842 1842 1842 1823 1773 1739 926 671 442 195 126 46 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1844 1844 1844 1825 1775 1741 914 651 320 151 111 33 5 1 0 0 1 2 3 4 1399 419 25 4 0 0 1 2 3 4 5 6 7 304 1363 174 2 0 0 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2368 (charge 2) 1473.65 2 175.119 185.092 203.102 226.155 231.097 232.976 240.098 257.124 259.092 295.806 304.162 347.275 360.137 365.108 488.197 674.305 761.337 804.852 858.396 969.415 986.458 15 6 24 6 38 3 38 8 4 4 8 4 6 4 13 15 6 4 100 14 5 GRMZM2G039251_P01 NP_001149702 succinyl-CoA ligase alpha-chain 2 seq=translation; coord=2:207032350..207038547:1; parent_transcript=GRMZM2G039251_T01; parent_gene=GRMZM2G039251 MAASSPRALQ SLGSAASRFL HARGFAAAAA AAPSPAVFVD KSTRVICQGI TGKNGTFHTE QAIEYGTNMV GGVTPKKGGT EHLGLPVFNS VAEAKAETKA NATVIYVPPP FAAAAIMEAM EAELDLAVCI TEGIPQHDMV KVKAALNSQS KTRLIGPNCP GIIKPGECKI GIMPGYIHKP GRIGIVSRSG TLTYEAVFQT TAVGLGQSTC VGIGGDPFNG TNFVDCLEKF VNDPQTEGIV LIGEIGGTAE EDAATFIQES KTQKPVVAFI AGLTAPPGRR MGHAGAIVAG GKGTAQDKIK ALREAGVTVV ESPAKIGSTM FEIFKQRGMV E GRMZM2G072054_P01 NP_001136494 hypothetical protein LOC100216609 seq=translation; coord=7:160283320..160289262:1; parent_transcript=GRMZM2G072054_T01; parent_gene=GRMZM2G072054 MAASSRRASQ LLGSAASRLL LGRGFAAAAA AAPSPAVFVD KSTRVICQGI TGKNGTFHTE QAIEYGTNMV GGVTPKKGGT EHLGLPVFNS VAEAKAETKA NASVIYVPPP FAAAAIMEAM EAELDLVVCI TEGIPQHDMV KVKAALNRQS KTRLIGPNCP GIIKPGECKI GIMPGYIHKP GRIGIVSRSG TLTYEAVFQT TAVGLGQSTC VGIGGDPFNG TNFVDCLEKF VDDPQTEGIV LIGEIGGTAE EDAATFIQES KTQKPVVAFI AGLTAPPGRR MGHAGAIVAG GKGTAQDKIK ALREAGVTVV ESPAKIGSTM FEIFKQRGMV E 4.88671 -0.296164 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5545 5545 5545 5545 5545 5421 4206 3126 2359 1643 934 495 139 53 13 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5557 5557 5557 5557 5557 5433 4218 3123 2248 1483 738 315 48 22 1 0 0 1 2 3 4 5 6 7 3117 1981 337 108 8 0 0 6 0 1 2 3 4 5 6 915 3785 726 117 7 7 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2369 (charge 3) 1224.66 3 152.057 154.086 155.081 158.059 158.093 159.076 161.502 167.092 169.135 171.113 175.086 175.119 187.043 197.128 199.108 204.134 208.108 216.735 227.62 228.122 241.617 244.166 257.085 262.139 263.138 270.961 272.956 275.124 277.137 289.972 296.133 302.662 305.648 309.203 324.954 332.192 341.166 345.171 397.708 431.263 482.228 555.305 681.33 747.377 10 39 16 8 11 11 9 10 12 17 14 94 12 14 19 18 10 9 100 33 58 35 10 45 12 9 12 12 15 10 9 15 83 19 17 45 57 41 19 14 37 11 16 10 GRMZM5G872068_P01 P38561 Glutamine synthetase root isozyme 3 (EC 6.3.1.2)(GS112)(Glutamate--ammonia ligase) seq=translation; coord=5:205237019..205240533:-1; parent_transcript=GRMZM5G872068_T01; parent_gene=GRMZM5G872068 MACLTDLVNL NLSDNTEKII AEYIWIGGSG MDLRSKARTL SGPVTDPSKL PKWNYDGSST GQAPGEDSEV ILYPQAIFKD PFRRGNNILV MCDCYTPAGE PIPTNKRYNA AKIFSSPEVA AEEPWYGIEQ EYTLLQKDTN WPLGWPIGGF PGPQGPYYCG IGAEKSFGRD IVDAHYKACL YAGINISGIN GEVMPGQWEF QVGPSVGISS GDQVWVARYI LERITEIAGV VVTFDPKPIP GDWNGAGAHT NYSTESMRKE GGYEVIKAAI EKLKLRHREH IAAYGEGNER RLTGRHETAD INTFSWGVAN RGASVRVGRE TEQNGKGYFE DRRPASNMDP YVVTSMIAET TIIWKP GRMZM2G046601_P01 NM_001111827 glutamine synthetase (LOC542215), mRNA seq=translation; coord=9:146062602..146070481:1; parent_transcript=GRMZM2G046601_T01; parent_gene=GRMZM2G046601 MASLTDLVNL DLSDCTDRII AEYIWVGGSG IDLRSKARVM CDCYTPQGEP IPSNKRYKAA TVFSHPDVAA EVPWYGIEQE YTLLQKDVSW PLGWPVGGYP GPQGPYYCAA GADKAFGRDV VDAHYKACLY AGINISGING EVMPGQWEFQ VGPSVGISAG DEIWVARYIL ERITEMAGIV LSLDPKPIKG DWNGAGAHTN YSTKSMREAG GYEVIKEAIE KLGKRHREHI AAYGEGNERR LTGRHETADI NTFKWGVANR GASIRVGRDT EKEGKGYFED RRPASNMDPY VVTGMIADTT ILWKGN GRMZM2G046601_P04 NM_001111827 glutamine synthetase (LOC542215), mRNA seq=translation; coord=9:146069111..146070481:1; parent_transcript=GRMZM2G046601_T04; parent_gene=GRMZM2G046601 MPGQWEFQVG PSVGISAGDE IWVARYILER ITEMAGIVLS LDPKPIKGDW NGAGAHTNYS TKSMREAGGY EVIKEAIEKL GKRHREHIAA YGEGNERRLT GRHETADINT FKWGVANRGA SIRVGRDTEK EGKGYFEDRR PASNMDPYVV TGMIADTTIL WKGN 5.20476 -0.281338 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 7769 7769 7734 7379 6975 6549 6065 4095 2959 1601 726 343 174 105 62 25 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7783 7783 7748 7393 6972 6517 6017 4008 2692 1290 458 167 45 12 1 0 0 1 2 3 4 5 6 7 3522 3042 929 205 65 5 1 15 0 1 2 3 4 5 6 7 1690 4684 1118 211 50 16 0 15 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2390 (charge 3) 1638.77 3 152.057 154.086 155.082 156.077 157.109 157.134 158.092 169.098 171.076 172.072 173.057 175.119 185.128 187.072 187.108 197.129 199.108 199.589 207.112 209.092 221.092 226.154 235.062 244.165 256.668 262.049 266.64 272.125 277.139 280.638 294.167 315.179 323.182 337.18 358.701 372.699 401.177 408.216 413.189 423.209 452.25 470.261 475.219 516.28 532.278 543.246 560.269 604.269 626.253 644.273 661.289 744.383 757.85 780.365 824.352 843.892 895.389 899.426 903.487 966.42 1501.94 6 2 5 3 3 13 3 5 4 4 2 34 4 3 5 4 16 3 4 3 3 52 4 21 2 5 61 4 5 47 5 4 66 43 15 45 5 18 4 13 13 5 27 5 22 4 100 5 4 6 61 5 4 4 31 4 37 4 7 34 5 GRMZM2G081037_P01 NP_001141129 hypothetical protein LOC100273215 seq=translation; coord=4:156953772..156958300:1; parent_transcript=GRMZM2G081037_T01; parent_gene=GRMZM2G081037 MLAAAWRLSQ RAVTSPLLGI GRSQIRNPFS TMASLSPAAA SPKRLRVYSS AAADGDGAGS GKRVGTHNGS FHCDEALGCF LIRLTSQFAG ADVVRTRDSQ ILDTLDAVLD VGGVYDPSRH RYDHHQKGFS EVFGHGFNTK LSSAGLVYKH FGKEIIAKEL GVNEDHEDVH CLYLAIYKSF VEALDAIDNG INQYDTDQPP KYVNNTHLSS RVGRFNLDWT DPDQSLEKEN AAFEQAMVLA GSEFMESVRF HVKSWLPARS IVLECLLSKG NIDPSGEIMV LDRFCPWKLH LFELEEELKT DPLTKYVLYQ QDERSKSWRV QAVAVAPDRF ESRKALPEKW RGMRDDELSA ETGIPGCVFV HMSGFIGGNK TYEGALEMAR AALKF GRMZM2G081037_P02 NP_001141129 hypothetical protein LOC100273215 seq=translation; coord=4:156953772..156958300:1; parent_transcript=GRMZM2G081037_T02; parent_gene=GRMZM2G081037 MLAAAWRLSQ RAVTSPLLGI GRSQIRNPFS TMASLSPAAA SPKRLRVYSS AAADGDGAGS GKRVGTHNGS FHCDEALGCF LIRLTSQFAG ADVVRTRDSQ ILDTLDAVLD VGGVYDPSRH RYDHHQKGFS EVFGHGFNTK LSSAGLVYKH FGKEIIAKEL GVNEDHEDVH CLYLAIYKSF VEALDAIDNG INQYDTDQPP KYVNNTHLSS RVGRFNLDWT DPDQSLEKEN AAFEQAMVLA GSEFMESVRF HVKSWLPARS IVLECLLSKG NIDPSGEIMV LDRFCPWKLH LFELEEELKT DPLTKYVLYQ DERSKSWRVQ AVAVAPDRFE SRKALPEKWR GMRDDELSAE TGIPGCVFVH MSGFIGGNKT YEGALEMARA ALKF 7.24773 -0.439257 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 7046 7046 7043 6613 6276 5745 5251 3086 2086 897 314 100 24 10 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 7065 7065 7062 6632 6271 5678 5149 2941 1781 596 111 18 1 0 0 1 2 3 4 5 6 7 2965 3100 830 135 36 0 0 1 0 1 2 3 4 5 6 7 1729 3935 1135 207 34 9 10 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2391 (charge 3) 1568.73 3 151.042 155.081 157.061 157.097 157.109 159.076 167.055 168.056 169.051 169.097 170.052 171.793 175.072 175.119 180.063 183.077 185.092 186.124 187.07 195.111 199.054 199.107 210.087 223.063 226.155 228.097 230.113 235.144 239.092 241.092 244.166 246.108 251.106 253.167 263.138 269.813 283.05 300.062 301.059 303.057 309.2 316.677 337.191 345.976 346.975 348.972 355.199 361.025 363.023 374.186 387.192 395.234 402.7 417.033 419.037 452.255 470.263 488.249 504.29 524.785 596.327 632.345 678.339 739.336 741.349 747.378 804.394 826.368 919.421 990.466 1061.49 1442.15 2 2 6 2 2 13 43 17 24 4 3 2 4 33 2 3 4 3 2 3 2 19 3 5 38 19 4 38 10 4 20 12 3 3 5 2 3 55 100 33 13 3 3 9 21 16 3 11 3 3 3 3 4 11 4 6 3 3 18 3 3 30 4 6 3 4 26 15 19 19 5 4 GRMZM2G473788_P01 NP_001144729 hypothetical protein LOC100277773 seq=translation; coord=6:58445440..58450019:-1; parent_transcript=GRMZM2G473788_T01; parent_gene=GRMZM2G473788 MSEQQQPLPQ PRSSMREALE KEDKEKAAAA AAAKEKAAVP KNGNGNGGKN GGGAGSGNGG APPQSGEETA REIQVVREAY RRETAAPAYV IPEEPPAVVE LVGWYIYGFC SYFITHLLLP VLFPAIITQV AFPNSDFTPD PKYTLKGVTC SVHEMSMYQR LTKHSIVIDG SRMSPLGWSG LSWAIGILIV APLLTQTAHH LDRGQYQSLI LIAATSFGSF FCLLTGFFKT VWVFLFYILF IAGSIIVAEA VHTRNLGLMI RGLAAHDSGK HLVLRRRAAA SQLSLYCTAI GGIGAALMAA FMYHMLRRTD QLTGLWVVSI FCGLIWFIGI CHGLFTNRPS SSSPTTAFEP NFFTKLSYSM TLLRYPQAIG SLVAVFLSSF ATMCIFTSGT LYAIGGVCIK PVLVLALWIL YFLFPLISLP LLHPIQIIIR ADAVRMQLLG FIICLFVSGA GFYFKSHRWR AAHIIVIALV QSTANGILYA FGRILLLDAS PPGKEGAFSV WYAFVRVTGA MIGFAASSAG PGRAGGSFAA AFLGSFLGII VLIFGNVSNI GALKAAGHLK GMDDEKRMGG LGMEKGEGMG SAVADSGESR GRV 4.39477 -0.26635 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 1150 1150 1150 1150 1150 1150 744 727 448 257 161 55 33 26 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1142 1142 1142 1142 1142 1142 736 719 396 204 132 26 5 1 0 0 1 2 3 844 294 15 0 0 1 2 3 4 5 6 7 209 831 103 6 1 0 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2401 (charge 2) 1425.59 2 175.119 187.072 196.759 205.064 224.548 226.155 244.092 262.15 287.17 313.916 423.481 535.245 650.275 721.311 820.378 891.414 978.442 1035.46 24 19 14 15 11 15 42 22 13 10 10 100 38 74 51 19 46 58 GRMZM2G141432_P01 B6T878 Histone H2B seq=translation; coord=2:215086749..215088308:1; parent_transcript=GRMZM2G141432_T01; parent_gene=GRMZM2G141432 MAPKAEKKPA AKKPAEEEPA APAEKAPAGK KPKAEKRLPA GKSAGKEGGV DKKGRKKAKK SVETYKIYIF KVLKQVHPDI GISSKAMSIM NSFINDIFEK LAGEAAKLAR YNKKPTITSR EIQTSVRLVL PGELAKHAVS EGTKAVTKFT SS 4.54745 -0.245808 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 6129 6129 6034 5737 3988 3378 1958 1460 877 564 289 151 80 34 25 14 10 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6093 6093 5998 5701 3923 2972 1642 989 533 262 43 3 2 2 1 0 0 1 2 3 4 5 6 7 3979 1897 235 20 0 3 1 0 0 1 2 3 4 5 6 7 823 4112 1008 166 22 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2403 (charge 2) 1366.69 2 165.138 166.141 167.055 169.097 173.092 175.119 177.259 181.133 195.112 199.072 201.087 209.128 221.085 223.065 225.043 227.103 239.095 256.259 258.144 262.154 270.144 276.155 279.181 285.01 298.139 303.019 311.173 316.15 331.081 337.188 341.019 342.996 347.194 355.069 359.028 369.175 373.079 381.179 388.135 399.188 408.224 418.995 427.183 429.089 444.246 481.196 497.272 515.283 534.188 537.268 556.223 619.801 656.314 666.298 674.841 685.311 710.334 724.316 795.344 812.413 843.404 852.406 895.439 906.429 915.013 923.45 941.449 1070.5 1091.53 1141.53 1238.58 1240.57 1263.75 5 2 23 48 2 6 1 2 2 2 7 7 2 2 22 3 28 1 25 3 3 17 9 12 37 3 2 2 3 2 3 2 10 27 100 5 2 2 2 2 8 7 12 20 74 2 2 9 2 9 18 3 2 4 6 4 5 6 11 7 2 7 3 3 2 24 3 6 3 7 6 2 2 AC212835.3_FGP007 seq=translation; coord=2:21007540..21010895:1; parent_transcript=AC212835.3_FGT007; parent_gene=AC212835.3_FG007 MEGLIKGLVH VAIDAVEDAV RERDHGRADD DEVPRRRAAQ SSDPDDDGEE ERDERSRSTW AEVVSEQKGS DPDERRDHRS SGRDNRHERR DDEGWKRADG RNQQQHHAGR QNQCEGEERW DGSGSRRRQQ QQQAQGYGNQ HQEEERINDG GWQTVGEKKR HGRPQQSEAW NGYRKPPSEQ KYSEDVGHIH QGLNFEPTRE ELNSLSKACS RLWELDMNRI VPGKDYIIDC GKGKKVYQKG DMASESLFSW LGDDVLRKPT YSRFCALLDN YNPHQGYKEV VTQQDKHEEI AFVEEIARTA PIKYLHRYLV QKGAVPQDYE DFKRMLTSLW FDLYGRGGNS SCSSAFEHVF VGEIKGRGQG ESEVSGFHNW IQFYLEEAKG NVDYQGYIFP RRRGESPDSE IQLLTVQFEW HGVLKSVSST LIGVSPEFEV ALYTLCFFVG GEDNRVDIGP YSVNVKCYRL GNNKIGSAFP IVEN 6.00285 -0.324479 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 4188 4188 4188 4188 4024 3570 3179 2832 1738 1017 585 323 156 73 23 9 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4150 4150 4150 4150 3986 3532 3107 2765 1590 800 322 73 2 1 1 0 0 1 2 3 4 5 6 2153 1609 349 71 10 3 0 0 1 2 3 4 5 6 7 1058 2315 640 142 36 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2404 (charge 3) 2185.96 3 151.872 151.962 155.081 158.092 167.082 171.077 175.119 183.076 193.097 195.076 200.103 211.12 221.717 226.155 240.098 241.101 243.694 257.125 304.161 311.135 328.164 351.128 352.13 368.156 433.203 479.192 496.218 501.277 562.245 563.749 567.257 588.308 607.249 609.181 616.454 624.272 637.273 639.653 656.294 665.282 673.788 674.286 690.309 694.32 712.572 776.394 827.361 829.362 938.399 955.417 1095.45 1126.48 1243.98 1346.57 4 4 4 6 5 4 43 5 8 9 8 10 5 6 100 5 6 52 49 12 7 24 6 76 37 9 13 12 36 12 7 13 9 23 6 13 9 8 7 9 14 23 51 10 22 14 73 14 13 12 9 44 7 26 GRMZM5G872068_P01 P38561 Glutamine synthetase root isozyme 3 (EC 6.3.1.2)(GS112)(Glutamate--ammonia ligase) seq=translation; coord=5:205237019..205240533:-1; parent_transcript=GRMZM5G872068_T01; parent_gene=GRMZM5G872068 GRMZM2G046601_P01 NM_001111827 glutamine synthetase (LOC542215), mRNA seq=translation; coord=9:146062602..146070481:1; parent_transcript=GRMZM2G046601_T01; parent_gene=GRMZM2G046601 GRMZM2G046601_P04 NM_001111827 glutamine synthetase (LOC542215), mRNA seq=translation; coord=9:146069111..146070481:1; parent_transcript=GRMZM2G046601_T04; parent_gene=GRMZM2G046601 4.91163 -0.363824 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 5044 5044 5044 5044 5044 4909 4788 4646 1784 1388 334 31 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 5068 5068 5068 5068 5068 4933 4812 4670 1802 1347 323 33 1 0 0 1 2 3 4521 544 9 0 0 1 2 3 4 5 6 7 275 4678 104 2 0 0 15 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2415 (charge 2) 1638.77 2 158.647 161.524 175.119 200.732 212.424 238.524 252.146 277.14 294.167 324.555 362.332 409.461 475.225 525.479 543.24 811.384 820.89 895.396 966.412 1079.53 1345.61 8 9 57 9 9 9 11 24 12 11 10 13 46 13 12 23 100 16 42 23 43 GRMZM2G154595_P01 NP_001142100 hypothetical protein LOC100274264 seq=translation; coord=6:165631098..165635858:-1; parent_transcript=GRMZM2G154595_T01; parent_gene=GRMZM2G154595 MRPALLKSTA ELLRRSRGYA SSANPERKVA ILGAAGGIGQ PLSLLMKLNP LVSSLSLYDI AGTPGVAADV SHINSPALVK GFMGDDQLGE ALEGSDVVII PAGVPRKPGM TRDDLFNINA GIVKGLCTAI AKHCPNALVN MISNPVNSTV PIAAEVFKKA GTYDEKKLFG VTTLDVVRAK TFYAGKAGVP VTGVNVPVVG GHAGITILPL FSQATPASNS LSQEDIEALT KRTQDGGTEV VEAKAGKGSA TLSMAYAGAV FADACLKGLN GVPDIVECSF VQSTVTELPF FASKVRLGKN GVEEVLGLGE LNEFEKKGLE NLKGELKSSI DKGIKFAHGN GRMZM2G466833_P01 NP_001140825 hypothetical protein LOC100272900 seq=translation; coord=3:213896741..213905427:1; parent_transcript=GRMZM2G466833_T01; parent_gene=GRMZM2G466833 MVLVRDLPAQ WCSFEISLYA MLDSLPDWLR RAPRLPRLPP RRSPPPLRRA RPKLYLKLAA ERQDPNPNST MRPSLMRSTS QLLRRRSYSS ASGQPERKVA ILGAAGGIGQ PLSLLMKLNP LVSSLSLYDI AGTPGVAADV SHINSPALVK GFMGDEQLGE ALEGSDVVII PAGVPRKPGM TRDDLFNINA GIVKNLSTAI AKYCPNALVN MISNPVNSTV PIAAEVFKKA GTYDEKKLFG VTTLDVVRAK TFYAGKANLP VTDVNVPVVG GHAGITILPL FSQATPATNA LSDEDIKALT KRTQDGGTEV VEAKAGKGSA TLSMAYAGAV FADACLKGLN GVPDIVECSF VQSTVTELPF FASKVRLGKN GVEEVLGLGE LSDFEKEGLE KLKSELKSSI EKGIKFANDN 6.30828 -0.38232 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2346 2346 2346 2346 2346 2007 1723 1269 825 458 269 101 24 6 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2347 2347 2347 2347 2347 2008 1723 1254 773 406 180 53 1 0 0 1 2 3 4 5 6 694 1462 182 9 7 5 0 0 1 2 3 4 5 1346 969 32 6 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2425 (charge 2) 1389.7 2 155.082 201.123 218.15 244.094 329.184 347.195 376.146 414.182 445.223 484.211 489.195 501.241 569.275 586.159 651.269 686.827 691.236 761.366 845.38 916.457 944.435 1015.51 1043.51 1049.44 1172.55 1230.77 1417.87 12 10 66 11 14 9 8 18 10 11 11 52 10 9 9 10 10 9 100 12 47 33 16 11 18 12 11 GRMZM2G156861_P02 NP_001105003 lipoxygenase seq=translation; coord=3:168695539..168699190:1; parent_transcript=GRMZM2G156861_T02; parent_gene=GRMZM2G156861 MFGNIGKIPI IGDLTGSNKN AHLKGNLVLM RKTVLGFDVT SIAGSLMDGL GEFLGRGVTC QLVSSTVVDP NNGNRGKVGQ EASLEQWLLH PPPLLAGEDQ FRVTFDWEVE KHGVPGAIIV KNNHASEFFL KTITIDDVPG HGPIVFVANS WVYPQYKYRY NRVFFSNDTY LPSQMPAALK PYRDDELRNL RGDDQQGPYQ EHDRVYRYDV YNDLGNPDAK NPRPVLGGSK HHPYPRRGRT GRKPTQTDPN SESRLTLTDG DVYVPRDERF GHIKNSDFYG YTIKAFVDGL VPILEGYLLG IEFNSFKDIL QLYEGGIKLP DIPALEEFRK QFPLQMVKDL MPAGGDYVLK LPMPKIIKED KKAWMSDEEF ARETLAGVNP LIIRRLTEFP PKSTLDPSKY GDQTSTITEA HIAGSLEGLT VQQALDSNRL YILDHHDHYM PFLIEVNSLN DNFIYATRTL LFLRGDGTLA PVAIEMSLPE LRDGITAAKS TVYTPAPPTA GAEAWVWRLA KAYVNVNDYC WHQGISHWLN THAVMEPFVI ATNRQLSVTH PVHRLLLPHY RDTMNINALA RQKLINAGGI FEMTVFPRKY AIEISSKVYG SWNFTEQALP DDLIKRGMAV PDPSSPYKVR LLIEDYPYAS DGLAVWHAIE QWVTEYLAIY YPNDGVLQAD VELQAWWKEA REVGHADLKD EHWWPKMQTV PELVKACTTI IWIASALHAA VNFGQYPYCG YHPNRPSVSR RPMPVPGSDA YKELEKNPEK FFVRSITAQF QAVVGISLLE ILSSHSSDEV YLGQRDTKEW TSDAKAQEAF KRFGARLTEI EKRVEAMNKD PRFKNRYSAA QFPYTLLFPN TSDKGDNTGV TAKGIPNSIS I GRMZM2G156861_P03 NP_001105003 lipoxygenase seq=translation; coord=3:168695539..168839001:1; parent_transcript=GRMZM2G156861_T03; parent_gene=GRMZM2G156861 MFGNIGKIPI IGDLTGSNKN AHLKGNLVLM RKTVLGFDVT SIAGSLMDGL GEFLGRGVTC QLVSSTVVDP NNGNRGKVGQ EASLEQWLLH PPPLLAGEDQ FRVTFDWEVE KHGVPGAIIV KNNHASEFFL KTITIDDVPG HGPIVFVANS WVYPQYKYRY NRVFFSNDTY LPSQMPAALK PYRDDELRNL RGDDQQGPYQ EHDRVYRYDV YNDLGLPDSG NPRPVLGGTK ELPYPRRCRT GRKPTKSDPN SESRLTLVDG DVYVPRDERF GHIKKSDFYG YAIKALVNAV IPAIRTYVDL SPGEFDSFKD IMKLYEGGIQ LPKIPALEDL RKQFPLELVK DVLPVGGDYL LKLPMPQIIK EDKTGWMTDE EFGREILAGV NPMLVKRLTE FPPRSSLDPS KYGDHTSTIR EADLENKLEG LTVQQALHGN RLYILDHHDN FMPFLVRVNS LEGNFIYATR TVLFLRGDGT LVPVAIELSL PELRDGLTTA KSTVYTPKST TGAEAWVWHL AKAYANVNDY CWHQLISHWL NTHAVMEPFV IATNRQLSVT HPVHKLLLPH YRDTMNINSN ARQMLVNAGG IFETTVFPRQ YAFEMSSVIY KDWNFTEQAL PDDLIKRGMA VADPSSPYKV RLLVEDYPYA SDGLAIWHAI EQWVTEYLAV YYPNDGVLRA DVELQAWWKE AREVGHADLK DAPWWPKMQT VAELVKACTT IIWIASALHA AVNFGQYPYA GYLPNRPSVS RKPMPAPGSD EYAELERKPE KVFVRTITSQ FQALVGISLL EILSSHSSDE VYLGQRDTKE WTSDAKAQEA FKRFGARLTE IEKRVVTMNA DPRLKNRNGP AEFPYTLLYP NTSDTKGDAA GITAKGIPNS ISI GRMZM2G156861_P01 NP_001105003 lipoxygenase seq=translation; coord=3:168835321..168839001:1; parent_transcript=GRMZM2G156861_T01; parent_gene=GRMZM2G156861 MFGNIGKIPI IGDLTGSNKN AHLKGNVVLV RKTVLGLDVT SIAGSLLDGI GEFLGRGVTC QLISSTVVDP NNGNRGKLGA EASLEQWLLN PPPLLSSENQ FRVTFDWEVE KQGIPGAIIV KNNHASEFFL KTITLNDVPG HGTIVFVANS WIYPQSKYRY NRVFFSNDTY LPSQMPAALK PYRDDELRNL RGDDQQGPYQ EHDRVYRYDV YNDLGLPDSG NPRPVLGGTK ELPYPRRCRT GRKPTKSDPN SESRLTLVDG DVYVPRDERF GHIKKSDFYG YAIKALVNAV IPAIRTYVDL SPGEFDSFKD IMKLYEGGIQ LPKIPALEDL RKQFPLELVK DVLPVGGDYL LKLPMPQIIK EDKTGWMTDE EFGREILAGV NPMLVKRLTE FPPRSSLDPS KYGDHTSTIR EADLENKLEG LTVQQALHGN RLYILDHHDN FMPFLVRVNS LEGNFIYATR TVLFLRGDGT LVPVAIELSL PELRDGLTTA KSTVYTPKST TGAEAWVWHL AKAYANVNDY CWHQLISHWL NTHAVMEPFV IATNRQLSVT HPVHKLLLPH YRDTMNINSN ARQMLVNAGG IFETTVFPRQ YAFEMSSVIY KDWNFTEQAL PDDLIKRGMA VADPSSPYKV RLLVEDYPYA SDGLAIWHAI EQWVTEYLAV YYPNDGVLRA DVELQAWWKE AREVGHADLK DAPWWPKMQT VAELVKACTT IIWIASALHA AVNFGQYPYA GYLPNRPSVS RKPMPAPGSD EYAELERKPE KVFVRTITSQ FQALVGISLL EILSSHSSDE VYLGQRDTKE WTSDAKAQEA FKRFGARLTE IEKRVVTMNA DPRLKNRNGP AEFPYTLLYP NTSDTKGDAA GITAKGIPNS ISI GRMZM2G109130_P01 NP_001105515 lipoxygenase seq=translation; coord=1:264200949..264205758:1; parent_transcript=GRMZM2G109130_T01; parent_gene=GRMZM2G109130 MLSGIIDGLT GANKHARLKG TVVLMRKNVL DLNDFGATVV DSISEFLGKG VTCQLISSTL VDANNGNRGR VGAEANLEQW LTSLPSLTTG ESKFGVTFDW EVEKLGVPGA VVVKNNHAAE FFLKTITLDD VPGRGAVTFV ANSWVYPAGK YRYNRVFFSN DTYLPSQMPA ALKPYRDDEL RNLRGDDQQG PYQEHDRVYR YDVYNDLGEP DGGNPRPILG GSADHPYPRR CRTGRKPTKT DPNSESRLSL VEQIYVPRDE RFGHLKMSDF LGYSIKAITQ GIIPAVRTYV DTTPGEFDSF QDIINLYEGG IKLPKIQALE DMRKLFPLQL VKDLLPAGGD YLLKLPIPQI IQEDKNAWRT DEEFAREVLA GVNPMVITRL TEFPPKSTLD PSKYGDHTST ITAEHIEKNL EGLTVQQALD GNRLYILDHH DRFMPFLIDV NNLEGNFIYA TRTLFFLRGD GRLAPLAIEL SEPYIDGDLT VAKSKVYTPA SSGVEAWVWQ LAKAYVAVND SGWHQLVSHW LNTHAVMEPF VIATNRQLSV THPVHKLLSS HFRDTMTINA LARQTLINGG GIFEMTVFPG KYALGMSSVV YKSWNFTEQG LPADLVKRGV AVADPSSPYK VRLLIEDYPY ASDGLAIWHA IEQWVGEYLA IYYPDDGALR GDEELQAWWK EVREVGHGDH KDAPWWPKMQ AVSELASACT TIIWIASALH AAVNFGQYPY AGYLPNRPTV SRRRMPEPGS KEYEELERDP ERGFIHTITS QIQTIIGISL IEILSKHSSD EVYLGQRDTP EWTSDARALA AFKRFSDALV KIEGKVVGEN RDPQLRNRNG PAEFPYMLLY PNTSDHSGAA AGLTAKGIPN SISI GRMZM2G109130_P02 NP_001105515 lipoxygenase seq=translation; coord=1:264202964..264205732:1; parent_transcript=GRMZM2G109130_T02; parent_gene=GRMZM2G109130 MPAALKPYRD DELRNLRGDD QQGPYQEHDR VYRYDVYNDL GEPDGGNPRP ILGGSADHPY PRRCRTGRKP TKTDPNSESR LSLVEQIYVP RDERFGHLKM SDFLGYSIKA ITQGIIPAVR TYVDTTPGEF DSFQDIINLY EGGIKLPKIQ ALEDMRKLFP LQLVKDLLPA GGDYLLKLPI PQIIQEDKNA WRTDEEFARE VLAGVNPMVI TRLTEFPPKS TLDPSKYGDH TSTITAEHIE KNLEGLTVQQ ALDGNRLYIL DHHDRFMPFL IDVNNLEGNF IYATRTLFFL RGDGRLAPLA IELSEPYIDG DLTVAKSKVY TPASSGVEAW VWQLAKAYVA VNDSGWHQLV SHWLNTHAVM EPFVIATNRQ LSVTHPVHKL LSSHFRDTMT INALARQTLI NGGGIFEMTV FPGKYALGMS SVVYKSWNFT EQGLPADLVK RGVAVADPSS PYKVRLLIED YPYASDGLAI WHAIEQWVGE YLAIYYPDDG ALRGDEELQA WWKEVREVGH GDHKDAPWWP KMQAVSELAS ACTTIIWIAS ALHAAVNFGQ YPYAGYLPNR PTVSRRRMPE PGSKEYEELE RDPERGFIHT ITSQIQTIIG ISLIEILSKH SSDEVYLGQR DTPEWTSDAR ALAAFKRFSD ALVKIEGKVV GENRDPQLRN RNGPAEFPYM LLYPNTSDHS GAAAGLTAKG IPNSISI 3.78982 -0.244504 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1360 1360 1360 1360 1360 1360 1073 988 458 373 136 78 60 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1359 1359 1359 1359 1359 1359 1072 987 456 351 117 40 10 1 0 0 1 2 3 903 438 32 0 0 1 2 3 4 5 6 7 371 922 66 2 0 0 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2434 (charge 2) 1544.63 2 155.082 157.831 173.056 175.119 226.154 235.12 240.097 244.092 288.081 290.145 305.11 326.557 370.137 375.239 421.102 427.203 556.248 604.254 673.819 684.306 944.424 984.416 1001.43 14 10 17 74 13 28 15 52 24 21 17 13 13 17 15 63 26 17 18 18 53 23 100 AC212835.3_FGP007 seq=translation; coord=2:21007540..21010895:1; parent_transcript=AC212835.3_FGT007; parent_gene=AC212835.3_FG007 3.86658 -0.249456 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 872 872 872 815 729 567 487 284 193 136 88 46 10 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 860 860 860 803 716 544 448 249 130 71 29 1 0 0 1 0 0 1 2 3 4 5 362 357 120 37 5 0 0 1 2 3 4 5 6 7 286 399 141 39 8 0 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2437 (charge 3) 2020.8 3 155.082 157.061 159.076 160.108 170.092 171.077 175.119 181.061 183.076 185.092 188.103 198.088 200.103 213.087 216.098 226.119 242.114 269.125 271.14 283.14 287.134 295.141 299.135 304.162 313.151 328.114 337.111 340.161 352.669 356.193 358.172 369.225 383.119 400.147 413.215 417.191 419.189 430.241 443.144 488.197 501.279 510.223 554.803 567.737 575.29 602.328 611.82 614.906 616.739 620.907 625.251 630.584 644.319 648.596 651.604 654.847 656.359 658.102 662.859 666.36 669.622 673.368 682.765 687.754 704.341 716.285 722.781 731.29 774.411 776.413 788.798 816.344 825.413 832.315 833.327 875.834 889.441 891.442 931.855 946.326 959.412 972.481 990.487 992.486 1002.42 1019.44 1061.54 1141.4 1149.57 1158.42 1160.44 1205.57 1232.48 1273.44 1287.48 1305.47 1347.5 1361.48 1447.51 1558.53 3 3 1 3 2 6 24 2 2 4 2 12 13 5 7 3 4 10 8 2 8 2 2 100 4 6 3 4 4 3 5 2 2 9 4 2 4 10 8 5 7 46 2 28 3 12 4 2 3 5 23 4 3 4 4 4 6 6 6 7 3 11 8 2 4 15 9 89 18 3 3 5 2 8 3 10 19 2 3 9 3 2 25 2 5 4 11 1 3 29 6 4 2 2 3 1 2 2 5 2 GRMZM2G085019_P01 P16243 NADP-dependent malic enzyme, chloroplastic Precursor (NADP-ME)(EC 1.1.1.40) seq=translation; coord=3:7275169..7280519:1; parent_transcript=GRMZM2G085019_T01; parent_gene=GRMZM2G085019 MLSTRTAAVA ASASPASPWK LGGRSEGGAS CDGCRTYRNT LRRRAAPAKV RALPPRRVDA VAMVSNAETE TEKEQEEAAA ASEELPVMPW ATSVASGYTL LRDPHHNKGL AFTEEERDGH YLRGLLPPAV LSQELQIKKF MNTLRQYQTP LQRYIAMMNL QETDERLFYK LLIDNVVELL PFVYTPTVGE ACQKYGSIFG RPQGLYVSLK DKGKVLEVLR NWPHRNIQVI CVTDGERILG LGDLGCQGMG IPVGKLALYT ALGGVDPSVC LPITIDVGTN NEKLLNDEFY IGLRQKRATG EEYDELIEEF MSAVKQFYGE KVLIQFEDFA NHNAFDLLEK YSKSHLVFND DIQGTASVVL AGLLAALKMV GGTLAEQTYL FLGAGEAGTG IAELIALEIS KQTNAPIEEC RKKVWLVDSK GLIVDSRKGS LQPFKKPWAH EHEPLKTLYD AVQSIKPTVL IGTSGVGRTF TKEIIEAMSS FNERPIIFSL SNPTSHSECT AEQAYTWSQG RSIFASGSPF APVEYEGKTF VPGQSNNAYI FPGLGLGLVI SGAVRVHEDM LLAASKALAD QATQDNFEKG SIFPPFTSIR KISAHIAAAV AAKAYELGLA TRLPPPSDLV KYAENCMYTP VYRNYR GRMZM2G085019_P02 P16243 NADP-dependent malic enzyme, chloroplastic Precursor (NADP-ME)(EC 1.1.1.40) seq=translation; coord=3:7275169..7280519:1; parent_transcript=GRMZM2G085019_T02; parent_gene=GRMZM2G085019 MLSTRTAAVA ASASPASPWK LGGRSEGGAS CDGCRTYRNT LRRRAAPAKV RALPPSEELP VMPWATSVAS GYTLLRDPHH NKGLAFTEEE RDGHYLRGLL PPAVLSQELQ IKKFMNTLRQ YQTPLQRYIA MMNLQETDER LFYKLLIDNV VELLPFVYTP TVGEACQKYG SIFGRPQGLY VSLKDKGKVL EVLRNWPHRN IQVICVTDGE RILGLGDLGC QGMGIPVGKL ALYTALGGVD PSVCLPITID VGTNNEKLLN DEFYIGLRQK RATGEEYDEL IEEFMSAVKQ FYGEKVLIQF EDFANHNAFD LLEKYSKSHL VFNDDIQGTA SVVLAGLLAA LKMVGGTLAE QTYLFLGAGE AGTGIAELIA LEISKQTNAP IEECRKKVWL VDSKGLIVDS RKGSLQPFKK PWAHEHEPLK TLYDAVQSIK PTVLIGTSGV GRTFTKEIIE AMSSFNERPI IFSLSNPTSH SECTAEQAYT WSQGRSIFAS GSPFAPVEYE GKTFVPGQSN NAYIFPGLGL GLVISGAVRV HEDMLLAASK ALADQATQDN FEKGSIFPPF TSIRKISAHI AAAVAAKAYE LGLATRLPPP SDLVKYAENC MYTPVYRNYR 5.02163 -0.271439 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 6688 6688 6688 6688 6603 6491 6115 5653 4673 3211 1923 1000 546 302 176 69 30 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6692 6692 6692 6692 6607 6495 6118 5636 4572 2899 1360 452 177 45 1 0 0 1 2 3 4 5 6 2090 3066 1109 368 58 7 0 0 1 2 3 4 5 6 7 1028 3589 1734 295 35 11 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2439 (charge 3) 1499.81 3 152.056 155.081 156.077 157.097 158.092 159.077 159.092 162.102 166.061 167.081 167.093 169.097 169.134 171.077 171.113 173.092 173.129 175.12 181.096 181.11 183.149 185.092 186.124 187.108 194.129 195.089 197.128 199.107 202.054 204.134 207.08 209.105 211.144 219.149 221.103 223.156 226.155 227.103 235.12 239.115 240.134 244.165 246.107 249.098 251.15 256.145 260.197 267.109 284.139 303.203 327.166 329.657 338.147 343.655 346.15 355.173 357.25 367.135 379.672 386.155 396.152 436.23 444.194 454.164 457.201 462.266 464.237 466.207 468.28 471.196 475.208 482.233 486.293 492.719 514.25 533.303 549.247 567.25 570.297 572.285 574.291 604.241 622.317 623.35 647.37 701.299 727.387 730.34 752.395 756.424 758.335 764.372 784.424 790.324 840.477 859.382 887.381 889.438 960.492 977.528 18 36 7 30 7 14 27 6 18 9 8 22 18 18 7 8 19 55 9 7 64 6 34 20 22 8 9 33 8 100 21 16 25 8 23 17 79 23 28 17 27 35 6 45 16 79 31 63 74 40 18 7 18 6 7 36 92 8 7 14 20 7 26 9 9 19 20 8 7 8 22 15 8 35 7 17 8 7 18 18 7 30 40 31 18 7 39 6 18 15 21 6 21 23 15 15 66 24 35 7 GRMZM2G150474_P01 NP_001105626 glutathione S-transferase GST 15 seq=translation; coord=8:127719984..127722343:-1; parent_transcript=GRMZM2G150474_T01; parent_gene=GRMZM2G150474 MATPAAVMKL YGWAISPFVS RALLALEEAG VDYELVPMSP QAGDHRRPEH LARNPFAMVP VLEDGDLTLF ESRAIARHVL RKHRPELLGA GAGGSLERAA MVDVWLEVEA HQLSPPAVAI VVECFAAPLL GRERDQTVVD ENVEKLRKVL EVYEARLGEC RYLAGDFLSL ADLSPFTIMH CIMATEYAAA LVEALPRVSA WWEGLAARPA AKKVAEFIPV GAAGLLEHPP KQQD 7.32802 -0.444122 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3800 3800 3800 3800 3761 3653 3620 3425 1857 1394 640 158 45 15 3 1 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3804 3804 3804 3804 3765 3657 3620 3410 1821 1337 386 42 7 1 0 0 1 2 3 3145 635 26 0 0 1 2 3 4 5 6 435 2917 418 29 6 1 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2444 (charge 2) 1326.63 2 152.056 158.094 169.097 175.119 199.072 212.103 222.088 226.154 239.114 257.125 258.11 262.151 351.131 360.151 367.17 434.735 483.261 587.292 602.358 633.813 687.342 775.378 868.46 942.462 965.507 1006.24 1071.51 8 7 12 52 8 10 7 8 53 34 8 100 9 7 27 8 54 9 6 8 33 11 23 92 28 7 9 GRMZM2G124576_P02 seq=translation; coord=1:59670870..59675001:-1; parent_transcript=GRMZM2G124576_T02; parent_gene=GRMZM2G124576 MLVLFETPAG FALFKVLDEG KLDKVEDLWK EFTTSDSARK VVELKAFNKF ENTSDALSAA TLIIDSKPSK GLRKFLQKHC EGETLAVADS KLGNAIKEKL KIDCLHNSAV MELMRGLRNQ LTELITGLGA QDLGPMSLGL SHSLSRYKLK FSPEKVDTMI IQAIGLLDDL DKELNTYAMR VREWYGWHFP ELTKIVTDNI QYAKVVKMMG NRTNAVNLDF SEILSDEELE TQLKEAAVIS MGTEVSDLDL SNIRELCDQV LALSEYRAQL YDYLKSRMNT IAPNLTALVG ELVGARLIAH GGSLLNLAKQ PGSTIQILGA EKALFRALKT KHSTPKYGLI YHASLIGKAS QKHKGKISRS LAAKTALAIR YDALGDGEDN SIGTESRLKL ETRLQVLEGR ELGKSAGSTK GKPKIEVYEK DRKQGAGALT TPAKTYNPAA DLVLTEETPK KSELASKKRK HHEVQTEPSA ELAEGAVQED RKKKKKNKES EEAPAAEGDG EKKKKKKSKD VGEEPAVAAA AATEGEKKKK KKKSDADGEG VTTQTEESGK KDKKKKKKRH ADDE 4.93314 -0.340217 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 781 781 781 781 781 781 638 569 455 310 195 39 15 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 786 786 786 786 786 786 643 574 457 303 195 28 8 1 0 0 1 2 3 226 535 25 0 0 1 2 3 4 5 6 501 271 9 0 0 5 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2445 (charge 2) 1418.59 2 152.056 155.082 158.091 164.914 169.098 171.076 183.075 199.072 201.087 217.082 226.154 241.081 259.092 328.113 333.176 359.715 437.197 486.141 505.221 596.538 634.265 705.298 807.266 873.394 1397.9 22 20 23 16 27 25 18 61 23 32 19 36 22 26 24 17 19 18 21 19 29 27 21 100 22 GRMZM2G077851_P01 NP_001136667 hypothetical protein LOC100216796 seq=translation; coord=1:151356484..151358622:1; parent_transcript=GRMZM2G077851_T01; parent_gene=GRMZM2G077851 MGRVIRAQRK GAGSVFKSHT HHRKGPARFR SLDFGERNGY LKGVVTDVIH DPGRGAPLAK VTFRHPFRYK HQKELFVAAE GMYTGQFVYC GRRATLSIGN VLPLRGIPEG AVVCNVEHHV GDRGVFARAS GDYAIVISHN PDNGTSRIKL PSGAKKIVPS SCRAMIGQVA GGGRTEKPML KAGNAYHKYR VKRNSWPKVR GVAMNPVEHP HGGGNHQHIG HASTVRRDAP PGQKVGLIAA RRTGRLRGQA AATASKADKA T GRMZM2G072729_P01 NP_001130582 hypothetical protein LOC100191681 seq=translation; coord=7:34222504..34224841:1; parent_transcript=GRMZM2G072729_T01; parent_gene=GRMZM2G072729 MGRVIRAQRK GAGSVFKSHT HHRKGPARFR SLDFGERNGY LKGVVTDVIH DPGRGAPLAK VTFRHPFRYK HQKELFVAAE GMYTGQFVYC GRRATLSIGN VLPLRGIPEG AVVCNVEHHV GDRGVFARAS GDYAIVISHN PDNGTSRIKL PSGAKKIVPS SCRAMIGQVA GGGRTEKPML KAGNAYHKYR VKRNSWPKVR GVAMNPVEHP HGGGNHQHIG HASTVRRDAP PGQKVGLIAA RRTGRLRGQA AATAAKADKA GRMZM2G072729_P02 NP_001130582 hypothetical protein LOC100191681 seq=translation; coord=7:34222942..34224888:1; parent_transcript=GRMZM2G072729_T02; parent_gene=GRMZM2G072729 MGRVIRAQRK GAGSVFKSHT HHRKGPARFR SLDFGERNGY LKGVVTDVIH DPGRGAPLAK VTFRHPFRYK HQKELFVAAE GMYTGQFVYC GRRATLSIGN VLPLRGIPEG AVVCNVEHHV GDRGVFARAS GDYAIVISHN PDNGTSRIKL PSGAKKIVPS SCRAMIGQVA GGGRTEKPML KAGNAYHKYR VKRNSWPKVR GVAMNPVEHP HGGGNHQHIG HASTVRRDAP PGQKVGLIAA RRTGRLRGQA AATAAKADKA GRMZM2G067456_P01 NP_001131396 hypothetical protein LOC100192723 seq=translation; coord=3:127004080..127006073:-1; parent_transcript=GRMZM2G067456_T01; parent_gene=GRMZM2G067456 MGRVIRAQRK GAGSVFKSHT HHRKGPARFR SLDFGERNGY LKGVVTDVIH DPGRGAPLAK VTFRHPFRYK HQKELFVAAE GMYTGQFVYC GRRATLSIGN VLPLRGIPEG AVVCNVEHHV GDRGVFARAS GDYAIVISHN PDNGTSRIKL PSGAKKIVPS SCRAMIGQVA GGGRTEKPML KAGNAYHKYR VKRNSWPKVR GVAMNPVEHP HGGGNHQHIG HASTVRRDAP PGQKVGLIAA RRTGRLRGQA AATASKADKA T GRMZM2G077851_P03 NP_001136667 hypothetical protein LOC100216796 seq=translation; coord=1:151356736..151358244:1; parent_transcript=GRMZM2G077851_T03; parent_gene=GRMZM2G077851 MGRVIRAQRK GAGSVFKSHT HHRKGPARFR SLDFGERNGY LKGVVTFRHP FRYKHQKELF VAAEGMYTGQ FVYCGRRATL SIGNVLPLRG IPEGAVVCNV EHHVGDRGVF ARASGDYAIV ISHNPDNGTS RIKLPSGAKK IVPSSCRAMI GQVAGGGRTE KPMLKAGNAY HKYRVKRNSW PKVRGVAMNP VEHPHGGGNH QHIGHASTVR RDAPPGQKVG LIAARRTGRL RGQAAATASK ADKAT GRMZM2G072729_P03 NP_001130582 hypothetical protein LOC100191681 seq=translation; coord=7:34223087..34224612:1; parent_transcript=GRMZM2G072729_T03; parent_gene=GRMZM2G072729 MGRVIRAQRK GAGSVFKSHT HHRKGPARFR SLDFGERNGY LKGVVTFRHP FRYKHQKELF VAAEGMYTGQ FVYCGRRATL SIGNVLPLRG IPEGAVVCNV EHHVGDRGVF ARASGDYAIV ISHNPDNGTS RIKLPSGAKK IVPSSCRAMI GQVAGGGRTE KPMLKAGNAY HKYRVKRNSW PKVRGVAMNP VEHPHGGGNH QHIGHASTVR RDAPPGQKVG LIAARRTGRL RGQAAATAAK ADKA GRMZM2G067456_P02 NP_001131396 hypothetical protein LOC100192723 seq=translation; coord=3:127004341..127005956:-1; parent_transcript=GRMZM2G067456_T02; parent_gene=GRMZM2G067456 MGRVIRAQRK GAGSVFKSHT HHRKGPARFR SLDFGERNGY LKGVVTFRHP FRYKHQKELF VAAEGMYTGQ FVYCGRRATL SIGNVLPLRG IPEGAVVCNV EHHVGDRGVF ARASGDYAIV ISHNPDNGTS RIKLPSGAKK IVPSSCRAMI GQVAGGGRTE KPMLKAGNAY HKYRVKRNSW PKVRGVAMNP VEHPHGGGNH QHIGHASTVR RDAPPGQKVG LIAARRTGRL RGQAAATASK ADKAT 6.0928 -0.393084 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2961 2961 2961 2961 2961 2906 2412 1943 1297 694 410 100 37 9 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2973 2973 2973 2973 2973 2918 2424 1950 1281 667 387 90 44 18 1 0 0 1 2 3 4 1393 1429 144 7 0 0 1 2 3 4 5 6 7 1417 1434 105 5 0 0 12 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2450 (charge 3) 2712.3 3 210.591 226.155 228.133 235.951 327.167 523.076 526.726 529.409 594.472 635.314 727.382 764.37 824.377 840.464 847.086 874.893 881.433 883.398 903.487 906.427 977.53 984.515 1112.55 1314.47 1762.86 2045.92 13 80 29 15 16 16 16 16 17 18 100 23 23 24 27 30 96 22 21 28 69 24 64 22 24 26 GRMZM2G451224_P01 O65101 Photosystem I reaction center subunit VI, chloroplastic Precursor (PSI-H)(Light-harvesting complex I 11 kDa protein) seq=translation; coord=6:163973641..163974980:-1; parent_transcript=GRMZM2G451224_T01; parent_gene=GRMZM2G451224 MASLAAVSVK PVAIKGLAGS SISGRKLAVA RPSARSIRRP RAAAVVAKYG DKSVYFDLDD IGNTTGQWDL YGSDAPSPYN PLQSKFFETF AAPFTKRGLL LKFLLLGGGS LLAYVSASAS PDLLPIKKGP QEPPQPGPRG KI 5.86224 -0.316878 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 8428 8428 8361 8228 7662 7141 6566 5041 3809 1921 1015 514 221 78 42 19 5 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8432 8432 8365 8220 7644 7083 6394 4526 3049 904 247 71 4 1 0 0 1 2 3 4 5 6 7 2844 3625 1354 487 101 24 2 0 0 1 2 3 4 5 6 7 1556 3858 2198 618 175 21 6 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2453 (charge 3) 1287.68 3 154.086 155.082 155.118 157.061 157.097 157.109 157.134 158.092 162.102 166.061 167.056 167.08 167.118 168.056 169.097 169.134 172.108 173.092 173.129 175.119 181.097 183.076 183.113 183.149 185.092 185.129 186.123 194.129 195.113 197.128 198.087 198.124 199.108 199.169 201.123 208.954 212.139 213.627 221.104 226.119 227.102 235.119 240.134 243.144 249.098 252.097 255.146 258.145 269.161 272.171 274.014 284.009 287.01 296.166 300.203 312.166 317.67 323.172 324.986 329.194 341.019 342.997 344.976 349.188 355.161 359.028 361.026 366.215 394.21 398.755 409.22 411.235 412.234 415.038 418.231 426.246 428.25 435.708 485.285 497.282 505.241 512.278 515.29 517.275 522.268 537.278 538.279 540.278 554.302 572.314 594.335 616.32 619.318 632.302 637.33 639.325 651.355 727.38 733.349 782.291 2 14 1 2 4 2 5 9 2 2 31 1 2 2 8 2 2 3 13 29 7 2 2 1 1 2 1 1 10 2 1 2 6 1 4 18 22 11 2 23 4 5 5 5 4 2 13 6 4 7 4 23 7 6 2 10 4 7 2 12 2 5 11 6 7 78 16 3 7 1 19 7 1 1 2 100 5 2 9 2 5 2 1 2 15 11 1 39 1 2 3 4 2 1 22 2 5 2 2 1 GRMZM2G169160_P01 B6TBG7 Seryl-tRNA synthetase seq=translation; coord=4:5666220..5677820:-1; parent_transcript=GRMZM2G169160_T01; parent_gene=GRMZM2G169160 MLTCGRFISS SAATSTASFF PFRTLTRSLV RRPAPHLLSS ASAAAATAVE LDTNDGSAGG GAGVVRPQWK AAIDFKWIRD NRDAVADNIR TRNSTANLDL VFELYDQYLT LQKEVERLRA ERNAVANKMK GKLDPSVRQA LVEEGKNLKE GLIALEEDLV QLTDKLQLEA QSIPNTTHPD VPVGGEESSV LRKEVGSQRS FNFAIKDHLQ LGKELDLFDF DAAAEVSGSK FYYLKNEAVL LEMALVNWAI SEVSKKGFTP LITPEIVRSS VVEKCGFQPR AKNTQVYSIE DSDQCLIGTA EIPVGGIHMD SILAESALPL KYVAYSHCFR TEAGAAGAAT RGLYRVHQFS KVEMFIFCRP EESGKWHEEL ITIEEDLYAS LGLHFKTLDM ATGDLGAPAY RKFDIEAWMP GLERYGEISS ASNCTDYQSR RLGIRYRPSP SEPPSTSTKK GKGAASGPTQ FVHTLNATAV AVPRLIVCIL ENFQQGDGSI VVPEPLRPYM GGLELLSPKF K GRMZM2G169160_P03 B6TBG7 Seryl-tRNA synthetase seq=translation; coord=4:5666399..5677820:-1; parent_transcript=GRMZM2G169160_T03; parent_gene=GRMZM2G169160 MLTCGRFISS SAATSTASFF PFRTLTRSLV RRPAPHLLSS ASAAAATAVE LDTNGDGSAG GGAGVVRPQW KAAIDFKWIR DNRDAVADNI RTRNSTANLD LVFELYDQYL TLQKEVERLR AERNAVANKM KGKLDPSVRQ ALVEEGKNLK EGLIALEEDL VQLTDKLQLE AQSIPNTTHP DVPVGGEESS VLRKEVGSQR SFNFAIKDHL QLGKELDLFD FDAAAEVSGS KFYYLKNEAV LLEMALVNWA ISEVSKKGFT PLITPEIVRS SVVEKCGFQP RAKNTQVYSI EDSDQCLIGT AEIPVGGIHM DSILAESALP LKYVAYSHCF RTEAGAAGAA TRGLYRVHQF SKVEMFIFCR PEESGKWHEE LITIEEDLYA SLGLHFKTLD MATGDLGAPA YRKFDIEAWM PGLERYGEIS SASNCTDYQS RRLGIRYRPS PSEPPSTSTK KGKGAASGPT QFVHTLNATA VAVPRLIVCI LENFQQGDGS IVVPEPLRPY MGGLELLSPK FK 6.24997 -0.357141 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 11868 11868 11868 11638 11154 10476 9553 7642 5793 3436 1882 895 396 141 38 7 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11875 11875 11875 11645 11161 10432 9470 7437 5107 2432 676 204 77 2 1 1 0 0 1 2 3 4 5 6 4772 5010 1686 354 51 14 0 0 1 2 3 4 5 6 7 2425 5820 2887 593 126 23 13 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2454 (charge 3) 1661.85 3 150.767 154.675 155.082 157.098 158.092 159.076 167.081 169.098 169.135 172.889 175.119 180.102 183.151 185.092 187.071 187.107 195.114 197.128 199.108 201.124 208.83 212.141 214.083 226.155 229.581 231.123 240.098 244.166 249.098 255.143 258.861 268.13 272.171 277.117 301.157 303.146 320.173 322.175 337.19 374.719 383.194 400.195 414.236 420.714 423.241 427.193 444.22 452.255 504.257 564.337 620.324 630.295 651.357 660.347 670.332 678.378 688.348 699.364 748.425 760.159 789.39 791.394 817.382 845.476 903.487 1229.66 3 3 5 17 4 4 4 7 4 3 38 26 3 8 4 3 4 6 29 5 4 5 4 100 5 9 5 30 8 4 4 4 8 5 4 32 8 5 5 5 17 5 5 8 22 6 29 9 29 8 17 7 8 8 21 7 18 10 62 6 51 9 54 23 6 6 GRMZM2G015419_P04 NP_001105980 lipoxygenase seq=translation; coord=4:233625700..233629448:1; parent_transcript=GRMZM2G015419_T04; parent_gene=GRMZM2G015419 MMNLNLKQPL VLPAHHSNVV GSRLSSSSGS RRHVRLPRIS CSATEEVSGA VSSVTVERML TVTASVEASP AIGQMYFQRA VDDIGDLLGK TLLLELVSSE LDAKSGVEKT RVTAYAHKTL REGHYEAEFK VPASFGPVGA VLVENEHHKE VFIKEIKLVT GGDSSTAVTF DCNSWVHSKF DNPEKRIFFT LKSYLPSDTP KGLEDLRKKD LQALRGDGHG ERKVFERVYD YDVYNDLGDP DKNPAHQRPV LGGNKQYPYP RRCRTGRPRT KKDPETEMRE GHNYVPRDEQ FSEVKQLTFG ATTLRSGLHA LLPALRPLLI NKKDLRFPHF PAIDDLFSDG IPLPAQTGFD AIRTVVPRMV KLVEDTTDHV LRFEVPEMIE RDRFSWFKDE EFARQTIAGL NPLCIQLLTE FPIKSKLDPE VYGPAESAIT KEILEKQMNG ALTVEQALAA KRLFILDYHD VFLPYVHKVR ELQDATLYAS RTIFFLTDLG TLMPLAIELT RPKSPTRPQW KRAFTHGPDA TDAWLWKLAK AHVLTHDTGY HQLVSHWLRT HCCVEPYIIA ANRQLSRLHP VYRLLHPHFR YTMEINALAR EALINADGII EESFWPGKYA VELSSVAYGA TWQFDTEALP NDLIKRGLAV RGEDGELELT IKDYPYAHDG LLVWDSIRQW ASEYVNVYYK SDEAVAADPE LRAFWDEVRN VGHGDKKDEP WWPVLDTRDS LVETLTTIMW VTSGHHSAVN FGQYHFAGYF PNRPTTIRKN MPVEEGGPGE EMEKFLKQPE TTLLDMLPTQ MQAIKVMTTL DILSSHSPDE EYMGEFAEPS WLAEPMVKAA FEKFGGRMKE IEGFIDECNN NLDLKNRCGA GIVPYELLKP FSKPGVTGRG IPSSISI GRMZM2G015419_P02 NP_001105980 lipoxygenase seq=translation; coord=4:233625689..233629426:1; parent_transcript=GRMZM2G015419_T02; parent_gene=GRMZM2G015419 MMNLNLKQPL VLPAHHSNVV GSRLSSSSPS AAAASRRTGG GVSSRSGSRR HVRLPRISCS ATEEVSGAVS SVTVERMLTV TASVEASPAI GQMYFQRAVD DIGDLLGKTL LLELVSSELD AKSGVEKTRV TAYAHKTLRE GHYEAEFKVP ASFGPVGAVL VENEHHKEVF IKEIKLVTGG DSSTAVTFDC NSWVHSKFDN PEKRIFFTLK SYLPSDTPKG LEDLRKKDLQ ALRGDGHGER KVFERVYDYD VYNDLGDPDK NPAHQRPVLG GNKQYPYPRR CRTGRPRTKK DPETEMREGH NYVPRDEQFS EVKQLTFGAT TLRSGLHALL PALRPLLINK KDLRFPHFPA IDDLFSDGIP LPAQTGFDAI RTVVPRMVKL VEDTTDHVLR FEVPEMIERD RFSWFKDEEF ARQTIAGLNP LCIQLLTEFP IKSKLDPEVY GPAESAITKE ILEKQMNGAL TVEQALAAKR LFILDYHDVF LPYVHKVREL QDATLYASRT IFFLTDLGTL MPLAIELTRP KSPTRPQWKR AFTHGPDATD AWLWKLAKAH VLTHDTGYHQ LVSHWLRTHC CVEPYIIAAN RQLSRLHPVY RLLHPHFRYT MEINALAREA LINADGIIEE SFWPGKYAVE LSSVAYGATW QFDTEALPND LIKRGLAVRG EDGELELTIK DYPYAHDGLL VWDSIRQWAS EYVNVYYKSD EAVAADPELR AFWDEVRNVG HGDKKDEPWW PVLDTRDSLV ETLTTIMWVT SGHHSAVNFG QYHFAGYFPN RPTTIRKNMP VEEGGPGEEM EKFLKQPETT LLDMLPTQMQ AIKVMTTLDI LSSHSPDEEY MGEFAEPSWL AEPMVKAAFE KFGGRMKEIE GFIDECNNNL DLKNRCGAGI VPYELLKPFS KPGVTGRGIP SSISI GRMZM2G015419_P05 NP_001105980 lipoxygenase seq=translation; coord=4:233625821..233629381:1; parent_transcript=GRMZM2G015419_T05; parent_gene=GRMZM2G015419 MMNLNLKQPL VLPAHHSNVV GDLLGKTLLL ELVSSELDAK SGVEKTRVTA YAHKTLREGH YEAEFKVPAS FGPVGAVLVE NEHHKEVFIK EIKLVTGGDS STAVTFDCNS WVHSKFDNPE KRIFFTLKSY LPSDTPKGLE DLRKKDLQAL RGDGHGERKV FERVYDYDVY NDLGDPDKNP AHQRPVLGGN KQYPYPRRCR TGRPRTKKDP ETEMREGHNY VPRDEQFSEV KQLTFGATTL RSGLHALLPA LRPLLINKKD LRFPHFPAID DLFSDGIPLP AQTGFDAIRT VVPRMVKLVE DTTDHVLRFE VPEMIERDRF SWFKDEEFAR QTIAGLNPLC IQLLTEFPIK SKLDPEVYGP AESAITKEIL EKQMNGALTV EQALAAKRLF ILDYHDVFLP YVHKVRELQD ATLYASRTIF FLTDLGTLMP LAIELTRPKS PTRPQWKRAF THGPDATDAW LWKLAKAHVL THDTGYHQLV SHWLRTHCCV EPYIIAANRQ LSRLHPVYRL LHPHFRYTME INALAREALI NADGIIEESF WPGKYAVELS SVAYGATWQF DTEALPNDLI KRGLAVRGED GELELTIKDY PYAHDGLLVW DSIRQWASEY VNVYYKSDEA VAADPELRAF WDEVRNVGHG DKKDEPWWPV LDTRDSLVET LTTIMWVTSG HHSAVNFGQY HFAGYFPNRP TTIRKNMPVE EGGPGEEMEK FLKQPETTLL DMLPTQMQAI KVMTTLDILS SHSPDEEYMG EFAEPSWLAE PMVKAAFEKF GGRMKEIEGF IDECNNNLDL KNRCGAGIVP YELLKPFSKP GVTGRGIPSS ISI GRMZM2G015419_P03 NP_001105980 lipoxygenase seq=translation; coord=4:233625690..233628092:1; parent_transcript=GRMZM2G015419_T03; parent_gene=GRMZM2G015419 MMNLNLKQPL VLPAHHSNVV GSRLSSSSPS AAAASRRTGG GVSSRSGSRR HVRLPRISCS ATEEVSGAVS SVTVERMLTV TASVEASPAI GQMYFQRAVD DIGDLLGKTL LLELVSSELD AKSGVEKTRV TAYAHKTLRE GHYEAEFKVP ASFGPVGAVL VENEHHKEVF IKEIKLVTGG DSSTAVTFDC NSWVHSKFDN PEKRIFFTLK SYLPSDTPKG LEDLRKKDLQ ALRGDGHGER KVFERVYDYD VYNDLGDPDK NPAHQRPVLG GNKQYPYPRR CRTGRPRTKK DPETEMREGH NYVPRDEQFS EVKQLTFGAT TLRSGLHALL PALRPLLINK KDLRFPHFPA IDDLFSDGIP LPAQTGFDAI RTVVPRMVKL VEDTTDHVLR FEVPEMIESK LASRRTHLRT ACYLNLKKNK 5.46753 -0.331365 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 8789 8789 8753 8232 7763 7025 5018 3711 1809 863 361 166 84 25 6 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 8789 8789 8753 8232 7744 6949 4765 3086 1170 438 102 30 1 0 0 1 2 3 4 5 6 3283 3854 1340 281 43 2 0 0 1 2 3 4 5 6 7 2135 4659 1652 278 55 12 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2456 (charge 3) 1727.93 3 153.102 157.097 159.077 167.055 169.097 169.133 175.119 181.097 184.108 185.092 185.601 187.07 197.129 199.108 201.086 208.108 213.087 226.119 230.113 235.119 239.095 243.146 244.131 256.129 283.141 285.01 296.027 299.062 303.019 306.155 318.175 341.182 344.976 355.07 358.174 373.08 375.199 393.529 403.057 414.215 418.993 425.882 430.161 455.225 489.271 502.538 521.267 544.806 553.317 556.268 573.3 581.281 590.308 628.85 637.36 647.347 659.323 675.348 685.864 700.368 705.331 752.368 758.437 827.423 840.497 968.562 996.513 1013.57 1128.61 1273.72 5 2 3 12 5 3 16 2 3 15 2 3 4 4 4 11 12 23 5 6 38 3 9 3 4 38 2 30 4 4 3 4 5 100 5 19 5 5 3 4 13 12 4 12 6 3 3 4 4 3 3 4 5 12 28 4 6 4 5 5 12 5 4 4 5 4 5 5 5 6 GRMZM2G044132_P01 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53846005:1; parent_transcript=GRMZM2G044132_T01; parent_gene=GRMZM2G044132 MADEYGRSGY GRSGAGDDYD SGYNSKSGTD DYGRGEGGYN KSGGDDDYGR SGGDGYGRSG GDDYGRGTGG GGYNKSGGGD DYGRSGGDDY GRGTGGGGYN KSGNDGYDSG YNRSGTTNDD EYGRGTGGGY GSKPSGDDAY AGGGGGGYGK QSGGGADEGG EYGSSRDDSE KYRKEEKEHK HKEHLGEMGA LAAGAFALYE RHEAKKDPEH AQRHKIEEGV AAVAALGSGG FAFHEHHDKK EAKDAAEDAG EEEESGRRGE GKKKHHFFG GRMZM2G044132_P02 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53845943:1; parent_transcript=GRMZM2G044132_T02; parent_gene=GRMZM2G044132 MADEYGRSGY GRSGAGDDYD SGYNSKSGTD DYGRGEGGYN KSGGDDDYGR SGGDGYGRSG GDDYGRGTGG GGYNKSGGGD DYGRSGGDDY GRGTGGGGYN KSGNDGYDSG YNRSGTTNDD EYGRGTGGGY GSKPSGDDAY AGGGGGGYGK QSGGGADEGG EYGSSRDDSE KYRKEEKEHK HKEHLGEMGA LAAGAFALVT NQRPSFPSFL AHARTDERAD AVLCDCDCRA CSSCHCDNFR DDHVHACMID RTDACSTRGT RRRRTRSTRS GTRSRRAWRR WLPWAAAASR STSTTTRRRP KTRRRTPGRR RSPAAAARGR RSTTSSADRA AARSIYLRT 5.38943 -0.276381 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 1466 1466 1466 1466 1466 1388 1069 879 637 457 271 135 56 33 11 8 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1466 1466 1466 1466 1466 1388 1064 863 565 348 143 48 11 1 0 0 1 2 3 4 5 6 675 567 176 46 5 6 0 0 1 2 3 4 5 6 7 254 826 318 53 14 2 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2460 (charge 3) 2087.84 3 169.06 170.092 171.077 172.071 173.056 175.119 181.061 187.071 188.103 189.087 198.088 199.071 210.087 213.087 216.098 217.081 226.118 228.097 238.082 240.133 244.093 256.092 258.145 268.092 274.103 285.119 295.103 301.112 313.114 325.113 327.129 329.186 342.141 352.125 355.125 358.136 363.187 370.136 371.142 430.24 440.189 473.231 478.211 555.213 559.283 572.25 618.248 630.313 665.281 684.258 688.326 690.949 692.644 694.293 695.853 697.371 701.345 723.839 734.997 749.316 758.311 767.681 773.34 777.309 781.309 798.295 807.325 815.824 818.357 834.331 836.379 845.375 852.338 855.331 899.349 905.404 923.406 927.344 931.425 936.865 945.456 946.46 963.402 980.428 982.425 1015.4 1020.41 1024.4 1038.44 1060.49 1126.46 1143.49 1145.52 1153.44 1241.48 1329.54 1369.53 1386.57 1388.56 1515.62 8 32 55 8 9 19 35 37 27 10 49 49 8 19 24 33 11 8 22 22 56 27 24 10 9 18 18 12 67 8 8 11 34 20 10 9 67 92 34 28 18 9 28 58 31 55 25 23 12 20 48 35 11 67 32 10 8 8 8 34 38 8 9 8 20 14 23 30 8 10 11 26 31 18 8 9 27 32 8 18 32 18 21 100 9 11 8 21 22 22 18 65 11 10 8 21 10 45 11 8 GRMZM2G105644_P01 NP_001149382 geranylgeranyl hydrogenase seq=translation; coord=5:206890298..206892838:1; parent_transcript=GRMZM2G105644_T01; parent_gene=GRMZM2G105644 MTSLSSAVAL PSSCRARPAG GSRRARMVVT RAAASSPKLP NGRRLRVAVV GGGPAGGAAA EALAKGGVET VLIERKMDNC KPCGGAIPLC MVSEFDLPLD LVDRKVRKMK MISPSNVAVD IGRTLAPHEY IGMVRREVLD AYLRSRAQSV GAEVVNGLFL RYEAPKEPNG SYVVHYNHYD GSNGKVGGEK RSFEVDAIVG ADGANSRVAK DMGAGDYEYA IAFQERVKIP DDKMVYYEER AEMYVGDDVS PDFYGWVFPK CDHVAVGTGT VTHKADIKKF QAATRLRAKD KIEGGKIIRV EAHPIPEHPR PKRVSGRVTL VGDAAGYVTK CSGEGIYFAA KSGRMCAEAI VAGSANGTRM VEESDLRKYL AEFDRLYWPT YKVLDILQKV FYRSNAAREA FVEMCADDYV QKMTFDSYLY KRVVPGNPLD DIKLAVNTIG SLVRATALRR EMEKVTL 7.31807 -0.325248 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 10251 10251 10200 10022 9633 8957 8061 6566 5398 3580 2153 1162 609 348 170 66 39 8 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10268 10268 10217 10039 9635 8931 7878 6165 4500 2417 1081 276 83 24 1 0 0 1 2 3 4 5 6 7 2887 4638 1987 597 119 34 6 0 0 1 2 3 4 5 6 7 2187 4232 2637 906 227 56 9 14 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2461 (charge 3) 1506.82 3 155.081 156.076 158.092 159.076 164.118 166.061 167.055 167.08 168.056 169.06 169.097 173.092 175.119 181.109 183.077 183.134 183.149 184.153 185.104 186.087 192.077 193.096 194.128 195.075 195.113 197.128 199.108 199.169 201.123 209.104 211.144 213.087 216.098 226.155 227.102 229.118 232.141 235.119 239.094 241.081 244.165 249.098 254.162 259.092 267.107 272.172 278.081 299.062 317.693 320.135 326.18 330.192 336.167 338.145 344.976 359.028 364.161 369.225 374.709 383.192 391.252 409.218 415.036 426.246 430.74 437.213 452.246 455.248 464.253 469.312 480.243 497.32 501.607 506.28 520.291 533.301 534.269 540.293 564.785 575.358 595.322 617.326 629.333 634.377 647.352 651.363 680.335 686.376 703.408 732.374 748.409 763.42 790.445 843.446 860.475 862.484 873.44 927.495 1070.61 1072.6 13 2 6 6 8 9 52 4 2 3 7 9 32 22 3 2 39 3 2 2 10 4 6 2 8 3 20 6 27 29 10 6 2 50 23 17 6 10 17 8 34 3 21 2 6 11 5 100 13 8 2 5 3 8 24 15 9 17 9 3 2 15 17 8 30 17 8 3 6 5 7 63 3 2 2 2 2 3 20 12 2 2 6 18 12 3 8 3 7 7 13 5 22 2 42 5 7 2 18 3 GRMZM2G015419_P04 NP_001105980 lipoxygenase seq=translation; coord=4:233625700..233629448:1; parent_transcript=GRMZM2G015419_T04; parent_gene=GRMZM2G015419 GRMZM2G015419_P02 NP_001105980 lipoxygenase seq=translation; coord=4:233625689..233629426:1; parent_transcript=GRMZM2G015419_T02; parent_gene=GRMZM2G015419 GRMZM2G015419_P05 NP_001105980 lipoxygenase seq=translation; coord=4:233625821..233629381:1; parent_transcript=GRMZM2G015419_T05; parent_gene=GRMZM2G015419 5.96141 -0.340652 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 3551 3551 3551 3551 3447 3138 2560 1735 1174 567 315 117 57 17 9 6 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3556 3556 3556 3556 3452 3143 2561 1696 1077 443 211 43 9 1 0 0 1 2 3 4 5 6 1365 1807 315 61 8 1 0 0 1 2 3 4 5 6 7 954 1987 514 86 9 1 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2462 (charge 3) 1792.77 3 152.057 155.082 167.055 169.097 169.133 171.113 175.119 185.091 186.125 187.072 189.087 195.077 197.128 197.549 199.107 212.103 213.086 215.138 223.616 226.155 235.055 240.133 258.145 262.084 271.138 277.085 279.657 284.124 287.008 289.002 301.058 308.171 320.224 326.173 357.07 359.191 386.179 390.18 402.233 418.178 423.19 470.22 488.233 552.229 580.768 586.302 625.364 674.296 715.344 720.284 738.296 768.387 771.36 774.325 825.402 835.349 852.43 923.464 949.394 1057.5 1115.28 7 32 9 6 31 12 18 7 6 10 7 11 11 6 11 8 7 8 6 33 8 13 8 8 9 13 37 14 17 8 11 9 9 10 36 10 41 20 11 100 10 12 30 11 10 13 32 69 13 14 60 12 14 10 12 19 48 12 13 12 13 GRMZM2G021170_P01 NP_001141977 hypothetical protein LOC100274127 seq=translation; coord=10:96835856..96839456:-1; parent_transcript=GRMZM2G021170_T01; parent_gene=GRMZM2G021170 MAAARMALVS CARRLPSLPS PLTLSRPRAG AVSFLAAQPS PATAPRSGRN LALFCSLSPT SPSLTEAAVA LPPPKAAVEE TKPPVPSGDE KGEPTVEELA GLLDVRVGRV VKAWRHPEAD TLYVEEVDVG EAEPRTICSG LVNFLPIEEL QDRNVIVLAN LKPRNMRGIK SNGMLMAASD ASHENVELLI PSEGSFPGER VWFGSEEEKN RQSDPASPNQ VQKKKIWEAV QPHLRTTDNC IAVLGDKQMR TSAGLVFCKS LQGARVS 5.31876 -0.322349 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 5148 5148 5148 5148 5051 4598 4466 2642 2050 934 492 200 107 31 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5158 5158 5158 5158 5061 4608 4446 2459 1851 769 338 100 30 15 1 0 0 1 2 3 4 3907 1128 122 1 0 0 1 2 3 4 5 6 7 626 3920 574 31 1 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2463 (charge 2) 1298.64 2 152.056 154.049 155.082 159.077 169.097 170.091 171.077 175.119 181.061 188.103 189.087 198.087 199.072 199.108 210.215 212.103 217.082 226.155 227.103 239.114 244.166 248.159 256.129 258.145 271.104 275.173 281.125 293.54 295.104 313.115 331.126 340.162 359.028 374.238 411.152 439.231 452.253 477.247 502.301 567.285 595.28 606.29 617.475 632.323 696.351 713.394 728.362 758.4 779.335 788.89 800.426 871.455 968.513 1146.52 10 8 11 10 36 10 31 28 28 15 27 26 28 27 7 33 45 100 27 11 16 10 27 35 8 12 9 7 14 66 15 63 59 13 44 40 9 8 9 11 9 7 14 10 15 98 16 9 9 9 44 14 45 8 AC215244.3_FGP002 seq=translation; coord=4:193735481..193760758:1; parent_transcript=AC215244.3_FGT002; parent_gene=AC215244.3_FG002 MASSGDPPGS ADEKKTPKSE GSSDERQGLP PAGFSNPFDF GSMQSLLNDP SIKEMADQIA RDPAFNRMAE QLQRSAQSTG EQGTPPLNPQ QYMETMQKVM ENPQFMTMAE RLGNALMQDP AMSSMLETFS SPSHKEQLEE RMSRIKEDPA MKSILDELEN GGPSAMMKYW NDPDTLQKIG EAMGASFPFG AGSSAEPSGT EETEEEGGDD DESIVHHTAS VGDEEGLKKA LDGGADKDEE DSEGRRALHF ACGYGELKCA QILLEAGAAV DALDKNKNTP LHYAAGYGRK ECVDLLLKHG AAVTLQNLDG KTPIDVAKLN NQDEVLKLLE KDAFL 4.55703 -0.337557 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 3759 3759 3759 3630 3310 3149 2882 2724 1647 1077 348 92 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3771 3771 3771 3642 3322 3155 2887 2719 1457 943 208 67 1 0 0 1 2 3 4 5 2274 1257 230 16 2 0 0 1 2 3 4 5 6 7 749 2389 511 95 33 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2464 (charge 3) 1819.8 3 152.056 153.915 155.081 157.134 158.093 158.138 162.47 167.055 167.082 171.076 171.149 173.055 175.119 185.128 192.869 198.283 199.107 212.102 226.155 227.102 230.078 239.095 242.113 244.165 252.094 262.153 266.067 299.061 301.113 302.661 452.251 456.202 470.262 489.218 507.557 544.237 546.73 588.288 604.313 610.779 624.085 659.267 679.356 684.973 695.405 732.824 752.321 760.833 805.425 809.836 818.841 1628.32 3 3 4 100 5 7 3 23 3 4 3 6 47 18 3 4 22 4 56 20 19 74 4 23 4 4 4 18 6 9 10 5 6 24 17 7 22 7 22 39 6 6 5 6 9 10 6 46 8 8 40 7 GRMZM2G451224_P01 O65101 Photosystem I reaction center subunit VI, chloroplastic Precursor (PSI-H)(Light-harvesting complex I 11 kDa protein) seq=translation; coord=6:163973641..163974980:-1; parent_transcript=GRMZM2G451224_T01; parent_gene=GRMZM2G451224 4.53019 -0.312427 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 6520 6520 6520 6213 6068 5511 3412 2832 1310 587 273 106 44 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6508 6508 6508 6201 6032 5475 3370 2449 853 150 42 2 1 1 0 0 1 2 3 4 4572 1819 110 26 0 0 1 2 3 4 5 6 7 853 4656 872 140 1 0 0 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2465 (charge 2) 1287.68 2 152.056 155.081 158.092 159.076 167.117 171.077 172.071 172.789 173.129 175.119 181.134 186.088 186.124 187.071 195.088 195.112 198.124 199.108 201.124 212.138 226.119 240.099 244.166 255.143 269.125 284.009 303.178 323.17 349.188 355.162 374.708 394.213 409.22 412.18 426.248 436.235 488.233 502.273 523.251 540.277 543.278 558.864 566.26 624.74 645.349 651.362 670.31 683.242 688.334 731.379 748.41 750.41 877.454 920.12 988.487 1005.5 1159.59 3 9 2 3 2 2 5 2 3 23 2 3 4 5 3 3 3 13 3 4 31 3 4 2 3 4 2 4 3 16 4 3 9 11 18 3 3 13 3 8 3 2 3 3 4 16 3 9 3 11 100 5 17 2 3 4 19 GRMZM2G420436_P01 NP_001147873 GMN10 seq=translation; coord=1:260920191..260928400:-1; parent_transcript=GRMZM2G420436_T01; parent_gene=GRMZM2G420436 MASVPLSSPS QAGLLGPPFP LLPPPFGACL RYRLPRLPTG LSSSVRKGGL LPLPLLVPPR AAGGKDGRAV TKEELEEEEE EFEVTKEGEE VNQETGGGSG ATKEAAARGS GRFAADYVSL GVREPVYEVI EVRSNGRMST KKISRRQLLK SSGLRLRDTR SVDPSLWLMN SMPSLLVREQ AILLNLGSLR AIAMYARVLI FNYNSPGGKA FLGLLLSRLN PRNINGGPAM PFQLEVVEAA LLSRIQRLEQ RLMKIEPHVA TLLEVLPNRL TADVLEQLRL SKQALVELGS RAGDLKQMLI DLLDDPHEIR RICIMGRNCT LDRLSDIVEC TVPLEKQIAE EEEEEIEMLL ENYLQRCESC HGQAERLLNS AREMEDSISV NLSSRRLEVS RVELLLQVGT FCVAIGALIA GIFGMNLKSY LETNAWAFWV TTGGIVVGAV AGFFVVYSYL RARKIL 5.20852 -0.29763 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 1624 1624 1624 1624 1624 1624 1541 1304 1020 713 506 319 227 68 21 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1626 1626 1626 1626 1626 1626 1543 1304 1011 676 458 289 195 21 13 1 0 0 1 2 3 4 525 976 122 8 0 0 1 2 3 4 5 6 7 1031 548 48 2 0 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2467 (charge 2) 1649.73 2 159.077 168.066 169.061 177.811 187.071 195.089 204.087 212.204 241.082 248.161 259.093 270.109 298.102 316.115 344.585 361.925 376.22 381.141 384.568 409.136 420.692 427.146 445.157 520.274 577.287 634.316 735.358 823.364 846.393 864.408 975.445 1106.51 1111.48 1639.63 1687.31 13 25 28 12 75 34 82 13 84 19 20 21 84 68 18 16 29 18 17 35 17 39 31 31 25 94 97 25 24 69 22 73 100 25 24 GRMZM2G156861_P02 NP_001105003 lipoxygenase seq=translation; coord=3:168695539..168699190:1; parent_transcript=GRMZM2G156861_T02; parent_gene=GRMZM2G156861 GRMZM2G156861_P03 NP_001105003 lipoxygenase seq=translation; coord=3:168695539..168839001:1; parent_transcript=GRMZM2G156861_T03; parent_gene=GRMZM2G156861 GRMZM2G156861_P01 NP_001105003 lipoxygenase seq=translation; coord=3:168835321..168839001:1; parent_transcript=GRMZM2G156861_T01; parent_gene=GRMZM2G156861 GRMZM2G109130_P01 NP_001105515 lipoxygenase seq=translation; coord=1:264200949..264205758:1; parent_transcript=GRMZM2G109130_T01; parent_gene=GRMZM2G109130 GRMZM2G109130_P02 NP_001105515 lipoxygenase seq=translation; coord=1:264202964..264205732:1; parent_transcript=GRMZM2G109130_T02; parent_gene=GRMZM2G109130 5.26038 -0.256604 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 2471 2471 2471 2422 2311 2088 1787 1337 1198 720 496 259 166 68 27 17 9 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2464 2464 2464 2415 2304 2062 1598 1252 1078 517 283 108 11 1 0 0 1 2 3 4 5 6 864 1067 391 98 63 3 0 0 1 2 3 4 5 6 7 579 931 798 123 24 15 4 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2469 (charge 3) 1544.64 3 155.082 158.093 168.077 169.061 173.056 175.119 176.123 181.061 181.097 184.072 185.056 199.108 203.066 204.134 209.056 212.102 214.106 216.098 226.155 227.102 231.061 233.128 240.098 244.093 249.099 253.094 257.124 261.123 266.113 269.088 288.081 290.147 291.15 295.105 297.12 300.133 305.11 315.478 318.146 323.099 329.191 334.145 337.116 349.153 353.109 355.125 378.141 380.119 383.192 389.182 398.128 401.182 402.186 406.671 410.176 416.141 421.169 424.188 427.205 429.17 446.203 452.255 464.202 470.259 472.715 492.714 493.216 501.226 512.217 516.29 518.227 521.211 538.239 544.281 548.234 556.248 558.249 612.262 620.773 649.272 650.258 667.282 668.282 677.396 684.306 686.313 695.408 770.314 812.331 827.334 830.353 847.37 849.372 903.491 921.499 927.406 944.424 946.43 1001.45 1003.45 46 8 10 4 45 86 6 4 5 4 9 16 5 4 8 6 7 6 50 15 12 35 14 35 8 8 4 11 21 11 21 39 6 5 4 5 13 5 8 12 4 16 7 6 4 5 4 8 6 10 6 17 5 5 8 6 4 17 69 6 7 8 7 5 32 8 4 30 6 5 4 4 11 6 4 100 6 6 5 4 5 41 12 5 76 8 5 4 11 4 6 58 6 7 4 4 25 4 22 4 GRMZM2G058173_P01 NP_001151824 undecaprenyl pyrophosphate synthetase seq=translation; coord=7:144837690..144838974:-1; parent_transcript=GRMZM2G058173_T01; parent_gene=GRMZM2G058173 6.62576 -0.281947 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 7929 7929 7863 7664 7222 6648 6058 4900 3911 2375 1404 800 465 248 152 88 38 12 8 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7930 7930 7864 7646 7174 6520 5802 4388 2679 1052 212 26 8 3 1 0 0 1 2 3 4 5 6 7 2056 3126 1766 694 190 86 14 1 0 1 2 3 4 5 6 7 1235 3344 2221 797 243 64 21 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2470 (charge 3) 1801.83 3 153.066 155.082 158.093 161.092 162.096 167.093 169.097 171.077 172.08 173.092 173.128 175.119 175.134 183.076 189.087 195.088 197.092 198.124 199.109 203.103 209.103 214.119 217.082 224.103 226.118 240.097 242.114 244.13 260.124 266.124 270.108 277.086 284.124 290.146 296.136 297.155 300.117 313.151 315.167 318.129 331.162 339.17 341.145 348.122 359.155 361.183 367.173 384.186 389.165 404.167 419.712 426.208 448.219 454.205 456.211 462.231 484.214 498.745 528.289 533.261 542.259 555.25 583.783 586.291 592.789 599.237 613.299 614.292 630.321 632.328 650.3 670.282 684.332 691.82 701.358 702.359 727.837 736.344 743.331 753.318 762.845 771.327 807.342 814.369 824.365 838.416 840.433 842.36 852.431 885.411 895.44 897.446 913.393 996.484 1047.51 1083.52 1085.53 1166.55 1184.56 1299.58 2 7 4 24 2 4 6 74 5 11 2 33 2 4 25 6 7 2 3 2 5 9 11 2 8 2 52 8 19 4 6 4 2 2 4 2 2 7 2 5 8 2 2 6 4 4 4 2 4 2 6 2 4 4 5 8 2 5 8 7 4 2 4 2 12 2 5 2 100 7 7 4 2 4 54 17 2 11 7 4 2 8 4 2 2 19 2 4 8 4 35 2 2 17 2 15 2 2 7 6 GRMZM2G003565_P03 NP_001141147 hypothetical protein LOC100273233 seq=translation; coord=2:49056549..49061498:-1; parent_transcript=GRMZM2G003565_T03; parent_gene=GRMZM2G003565 MDSVMAAPDS PPQTVVLVSA GASHSVALLT GNVLCSWGRG EDGQLGHGDA EDRLVPTVLS GFDAPAITSV ICGADHTTAY SEDELQVYSW GWGDFGRLGH GNSSDVFTPQ PVKALQGLKI KQIACGDSHC LAVTMAGEVQ SWGRNQNGQL GLGTTEDSLL PQKIQAFESV CVKMIAAGAE HTAAVTEDGD LYGWGWGRYG NLGLGDRNDR LLPEKVSSVE GEKMVLVACG WRHTITVSDS GNLYTYGWSK YGQLGHGDFE DHLVPHKVEA LKDSTISQIS GGWRHTMALT SEGKLYGWGW NKFGQVGVGN NDDHSSPGQV SFPEDQKISQ VACGWRHTLA LSEKKNVFSW GRGTSGQLGN GEIVDRNTPV LIDALSSDGS ACKKLESSTA APFAAKVWVS PSERYAIVPD ENVRKAGGGT ARGNGADANV PENDVKRMRV QSS GRMZM2G003565_P01 NP_001141147 hypothetical protein LOC100273233 seq=translation; coord=2:49060070..49061498:-1; parent_transcript=GRMZM2G003565_T01; parent_gene=GRMZM2G003565 MDSVMAAPDS PPQTVVLVSA GASHSVALLT GNVLCSWGRG EDGQLGHGDA EDRLVPTVLS GFDAPAITSV ICGADHTTAY SEDELQVYSW GWGDFGRLGH GNSSDVFTPQ PVKALQGLKI KQIACGDSHC LAVTMAGEVQ SWGRNQNGQL GLGTTEDSLL PQKIQAFEVT KGITKSSYRV IWIMIGKF GRMZM2G003565_P02 NP_001141147 hypothetical protein LOC100273233 seq=translation; coord=2:49056549..49061498:-1; parent_transcript=GRMZM2G003565_T02; parent_gene=GRMZM2G003565 MDSVMAAPDS PPQTVVLVSA GASHSVALLT GNVLCSWGRG EDGQLGHGDA EDRLVPTVLS GFDAPAITSV ICGADHTTAY SEDELQVYSW GWGDFGRLGH GNSSDVFTPQ PVKALQGLKI KQIACGDSHC LAVTMAGEVQ SWGRNQNGQL GLGTTEDSLL PQKIQAFE 4.55806 -0.246382 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 2060 2060 2060 1996 1883 1735 1596 1449 821 623 356 231 122 63 36 16 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2061 2061 2061 1995 1875 1728 1559 1395 736 461 239 87 8 1 0 0 1 2 3 4 5 630 1032 311 88 5 0 0 1 2 3 4 5 6 7 414 1079 380 158 17 12 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2471 (charge 3) 1455.61 3 150.066 155.082 158.092 159.077 160.08 166.098 167.081 167.093 169.06 169.097 170.045 171.077 171.113 172.071 173.056 173.092 175.119 176.122 178.061 181.061 185.092 186.088 187.072 188.075 190.083 194.128 195.088 195.113 197.128 199.071 199.108 201.086 204.135 209.092 212.103 214.155 217.081 226.155 227.102 239.115 240.134 242.148 244.166 252.134 254.162 260.035 266.077 273.119 283.104 284.085 290.145 301.115 308.172 310.114 316.114 337.187 359.239 361.207 367.135 380.23 382.22 386.97 400.17 411.162 419.196 428.681 434.239 452.249 454.49 465.255 470.262 473.259 476.268 482.284 490.226 510.278 512.278 531.737 540.74 547.319 577.767 591.252 605.252 615.345 623.35 625.366 634.349 662.275 664.276 682.248 685.367 712.395 720.408 721.392 799.333 817.456 856.354 858.363 866.341 969.435 4 18 10 100 5 2 2 14 8 6 5 2 2 9 17 2 66 5 6 4 2 17 49 4 18 2 23 4 6 4 8 2 4 2 2 4 2 28 11 4 2 2 7 4 11 5 4 5 14 6 26 18 6 3 2 2 2 2 4 6 6 2 37 18 4 13 3 4 4 3 3 2 2 10 39 17 2 2 8 6 6 3 10 2 8 2 4 71 5 2 2 2 8 15 15 6 38 5 2 12 GRMZM2G103490_P01 NP_001168322 hypothetical protein LOC100382088 seq=translation; coord=9:139614346..139617289:1; parent_transcript=GRMZM2G103490_T01; parent_gene=GRMZM2G103490 MSSSTIRKAL GAVKDQTSIS LAKVTSNIAP DLDVLIVKAT SHDDEPAEER HIREILHLTS GSRAHVAAAV AGCSRRLSRT RDYVVALKSL MLVHRLLVDG DPSFHRELLH GTRRGTRLLN LSDFRDEAHS GSWDHSAFVR TYALYLDQRL EFFLHERKQG LNAGSSSSAN GPSPRDRDRW GSPDPYGRRS PSYSSPPGYG GYDDYRERNG GNNDDKRPPT PVRDMKPERV LARMHHLQQL LDRFLACRPT GGAKQSRMVL VALYQIVRES FQLYSDICEV LAVLLDRFFD MEYAECVKAF EAYASAAKQI DELSAFYSWC KDTGVARSSE YPEVQRVTDK LLETLEEFMR DRAKRPKSPP REPEPEPVKE EPEPDMNSIK ALPAPEDYKE PEPVKVEEEV KPEPPPQPQG DLVDLREDTV SADEQGNRLA LALFQGPPAA GGNNGSWEAF PSNGGNEVTS AWQNPAAEPG KADWELALVE TASNLSMQKP AMSGGMDPLL LNGMYDQGVV RQHVSAQVTT GSASSVALPA PGQKTQMLAL PAPDGSMQTV GGDPFAASLA VPPPSYVQMA DLEKKQQLLS QEQIMWQQYQ RDGMQGQSSL NKLDQAYHNG FAPNPGMPYG MPAAYNTGYY YPTY GRMZM2G103490_P02 NP_001168322 hypothetical protein LOC100382088 seq=translation; coord=9:139614895..139617265:1; parent_transcript=GRMZM2G103490_T02; parent_gene=GRMZM2G103490 MSSSTIRKAL GAVKDQTSIS LAKVTSNIAP DLDVLIVKAT SHDDEPAEER HIREILHLTS GSRAHVAAAV AGCSRRLSRT RDYVVALKSL MLVHRLLVDG DPSFHRELLH GTRRGTRLLN LSDFRDEAHS GSWDHSAFVR TYALYLDQRL EFFLHERKQG LNAGSSSSAN GPSPRDRDRW GSPDPYGRRS PSYSSPPGYG GYDDYRERNG GNNDDKRPPT PVRDMKPERV LARMHHLQQL LDRFLACRPT GGAKQSRMVL VALYQIVRES FQLYSDICEV LAVLLDRFFD MEYAECVKAF EAYASAAKQI DELSAFYSWC KDTGVARSSE YPEVQRVTDK LLETLEEFMR DRAKRPKSPP REPEPEPVKE EPEPDMNSIK ALPAPEDYKE PEPVKVEEEV KPEPPPQPQG DLVDLREDTV SADEQGNRLA LALFQGPPAA GGNNGSWEAF PSNGGNEVTS AWQNPAAEPG KADWELALVE TASNLSMQKP AMSGGMDPLL LNGMYDQGVV RQHVSAQVTT GSASSVALPA PGQKTQMLAL PAPDGSMQTV GGDPFAASLA VPPPSYVQMA DLEKKQQLLS QEQIMWQQYQ RDGMQGQSSL NKLDQAYHNG FAPNPGMPYG MPAAYNTGYY YPTY 6.13742 -0.314739 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 9957 9957 9957 9957 9957 9437 9015 8279 5711 4241 2399 1324 850 341 146 44 19 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9958 9958 9958 9958 9958 9438 9009 8237 5579 4009 1805 573 242 77 1 0 0 1 2 3 4 5 6 4876 3778 1103 172 29 5 0 0 1 2 3 4 5 6 7 2046 5745 1895 221 47 3 2 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2474 (charge 3) 1714.85 3 152.056 155.081 157.061 158.093 159.077 161.092 169.097 171.077 171.113 172.071 173.092 175.072 175.119 186.088 194.627 198.088 198.848 199.108 226.155 228.632 240.134 244.166 252.352 255.145 260.641 272.172 285.154 305.382 356.194 378.14 382.182 456.257 513.277 524.284 571.3 610.294 627.323 629.318 658.339 669.376 681.33 698.357 738.386 756.404 768.363 773.362 785.384 870.402 872.405 923.441 11 10 26 10 16 10 17 16 13 11 11 13 61 10 10 9 8 25 57 20 17 13 8 58 9 69 11 10 14 10 10 66 96 13 13 43 100 17 18 14 17 53 19 16 17 43 45 25 16 14 GRMZM2G001327_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695861:-1; parent_transcript=GRMZM2G001327_T01; parent_gene=GRMZM2G001327 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYEEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSAYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK GRMZM2G001327_P03 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695738:-1; parent_transcript=GRMZM2G001327_T03; parent_gene=GRMZM2G001327 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYEEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSAYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK GRMZM2G154218_P01 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515921..136519080:-1; parent_transcript=GRMZM2G154218_T01; parent_gene=GRMZM2G154218 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYDEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSAYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK GRMZM2G154218_P02 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515968..136519018:-1; parent_transcript=GRMZM2G154218_T02; parent_gene=GRMZM2G154218 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYDEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSAYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK GRMZM2G149768_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136568621..136572271:-1; parent_transcript=GRMZM2G149768_T01; parent_gene=GRMZM2G149768 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYEEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSAYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK GRMZM2G110509_P01 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T01; parent_gene=GRMZM2G110509 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYDEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSQYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK GRMZM2G110509_P02 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T02; parent_gene=GRMZM2G110509 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYDEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSQYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK GRMZM2G110509_P03 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607316..84610225:1; parent_transcript=GRMZM2G110509_T03; parent_gene=GRMZM2G110509 MGKEKSHINI VVIGHVDSGK STTTGHLIYK LGGIDKRVIE RFEKEAAEMN KRSFKYAWVL DKLKAERERG ITIDIALWKF ETTKYYCTVI DAPGHRDFIK NMITGTSQAD CAVLIIDSTT GGFEAGISKD GQTREHALLA FTLGVKQMIC CCNKMDATTP KYSKARYDEI VKEVSSYLKK VGYNPDKIAF VPISGFEGDN MIERSTNLDW YKGPTLLEAL DQITEPKRPS DKPLRLPLQD VYKIGGIGTV PVGRVETGVI KPGMVVTFGP TGLTTEVKSV EMHHEALQEA LPGDNVGFNV KNVAVKDLKR GFVASNSKDD PAKEAASFTS QVIIMNHPGQ IGNGYAPVLD CHTSHIAVKF AELITKIDRR SGKELEKEPK FLKNGDAGMV KMIPTKPMVV ETFSQYPPLG RFAVRDMRQT VAVGVIKSVE KKDPTGAKVT KAAAKKK 5.28383 -0.234837 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 8757 8757 8757 8587 8408 7936 7395 5892 4733 3147 2003 1161 654 349 207 96 66 39 26 15 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8750 8750 8750 8580 8400 7912 7245 5604 4027 2149 795 304 95 16 1 0 0 1 2 3 4 5 6 7 2694 3780 1568 540 140 35 0 6 0 1 2 3 4 5 6 7 1606 3873 2032 947 249 48 1 7 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2476 (charge 3) 1491.75 3 152.057 154.086 155.082 156.077 157.061 157.097 157.108 157.134 158.093 159.076 159.092 169.097 171.113 173.056 173.092 175.071 175.119 181.097 185.056 185.092 186.124 187.108 195.088 195.113 197.105 198.124 199.108 202.082 207.113 209.092 213.087 216.134 218.15 226.155 240.133 244.166 254.153 280.669 282.169 284.125 313.152 315.203 319.173 323.134 328.115 333.203 338.181 341.218 355.198 359.156 361.198 369.226 372.224 383.194 406.205 428.177 430.231 432.272 438.272 443.243 446.186 452.253 460.268 462.263 466.278 470.262 483.192 493.234 496.834 503.315 514.261 522.761 531.305 535.323 545.256 563.336 573.315 580.775 589.282 600.323 618.336 620.349 622.316 635.359 647.259 657.34 673.353 695.408 697.34 704.381 715.351 719.363 732.383 760.382 774.388 780.377 791.411 801.395 819.412 836.441 10 4 11 4 5 4 4 4 11 10 24 33 10 3 4 5 34 4 4 9 4 10 10 5 5 10 31 5 5 9 4 9 37 78 4 50 4 8 4 3 8 100 3 3 4 10 5 8 11 5 30 5 3 11 5 4 5 37 8 4 5 13 49 4 4 16 4 4 28 26 4 14 37 9 17 5 4 18 37 14 26 10 10 5 8 3 9 10 4 12 4 11 26 11 5 3 16 9 24 17 GRMZM2G373522_P01 NP_001105327 dehydrin seq=translation; coord=4:154310162..154311883:-1; parent_transcript=GRMZM2G373522_T01; parent_gene=GRMZM2G373522 MEDERNTQQH QGGEQAQDQE NEVKDRGLLD SLLGRNKHDD QEKKNQQEEE ELATGMEKVT VAEPDHKEEG HEAAEKKDSL LAKLHRTSSS SSSSSDDEEE EVIDENGEIV KRKKKGLKEK VKEKLAAHKA HDEGDHHQPG VPAPAPAPPV AVDTHAHHQE GEHKPHFPAP APPPHVETHH PVVVHKIEDD DTKTQTPPQA PEEEKKGLLD KIKEKLPGGH KKPEDAAAAA AAPAVHAPPP PAPHAEVDVS SPDGKKGLLG KIMDKIPGYH KSSGEEDRKD AAGEHKTSS 5.76363 -0.311547 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 8770 8770 8704 8265 7850 7205 6529 4804 3429 1875 965 498 247 135 34 17 6 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8792 8792 8726 8287 7841 7153 6326 4277 2446 897 248 60 8 1 0 0 1 2 3 4 5 6 7 2638 3659 1709 605 114 19 48 0 0 1 2 3 4 5 6 7 1358 4239 2288 734 126 38 8 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2479 (charge 3) 1482.74 3 153.102 155.081 156.077 157.061 157.134 158.092 159.077 159.092 160.076 166.06 167.081 169.097 171.113 173.056 173.092 173.129 175.071 175.119 184.072 185.092 187.087 189.087 195.091 195.113 198.123 199.108 201.087 204.135 207.112 209.092 212.139 217.097 226.155 227.102 230.114 240.134 244.165 258.145 264.137 271.65 275.208 297.121 302.662 310.629 315.131 319.172 323.172 327.166 331.161 336.13 341.146 354.146 356.145 368.158 370.121 380.197 384.189 388.135 394.21 406.205 428.213 432.172 452.249 465.183 469.251 479.24 483.193 485.188 493.235 495.834 525.271 527.767 533.253 540.289 542.219 544.248 546.732 549.295 577.29 580.267 593.252 611.328 613.283 631.291 644.327 662.332 668.291 698.366 704.325 706.355 736.42 741.382 759.392 761.367 830.421 941.457 995.503 1055.53 1082.53 1372.75 4 6 4 6 15 12 13 40 2 2 2 12 16 2 3 3 7 28 6 3 4 2 14 8 3 25 2 3 3 3 11 3 32 22 19 15 17 7 3 3 10 12 8 4 3 7 9 3 3 2 3 4 10 4 2 8 9 2 7 20 3 2 4 4 14 7 12 11 15 100 3 10 2 7 4 3 3 3 7 11 2 3 7 4 7 4 2 2 3 4 6 3 27 2 11 3 3 7 3 2 GRMZM2G003565_P03 NP_001141147 hypothetical protein LOC100273233 seq=translation; coord=2:49056549..49061498:-1; parent_transcript=GRMZM2G003565_T03; parent_gene=GRMZM2G003565 GRMZM2G003565_P01 NP_001141147 hypothetical protein LOC100273233 seq=translation; coord=2:49060070..49061498:-1; parent_transcript=GRMZM2G003565_T01; parent_gene=GRMZM2G003565 GRMZM2G003565_P02 NP_001141147 hypothetical protein LOC100273233 seq=translation; coord=2:49056549..49061498:-1; parent_transcript=GRMZM2G003565_T02; parent_gene=GRMZM2G003565 4.86622 -0.294922 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1521 1521 1521 1521 1475 1439 1373 1302 1177 467 355 176 111 28 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1528 1528 1528 1528 1482 1446 1380 1303 1182 457 295 133 17 1 0 0 1 2 3 1070 428 37 0 0 1 2 3 4 5 6 7 339 1007 158 23 2 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2480 (charge 2) 1455.61 2 158.093 159.077 167.093 169.061 172.071 173.055 175.119 186.087 187.072 190.082 195.088 212.103 226.154 244.095 260.417 283.105 290.146 302.099 341.109 358.134 389.268 400.17 412.099 452.135 470.155 485.228 490.226 510.196 553.301 565.221 662.277 668.741 671.85 678.662 799.337 848.479 856.351 969.436 1310.08 1427.59 14 31 10 7 6 8 100 23 48 27 11 7 7 6 6 6 42 26 6 12 6 31 6 8 11 9 74 7 7 7 65 8 14 10 33 7 89 42 8 8 GRMZM2G124455_P01 P41980 Superoxide dismutase [Mn] 3.4, mitochondrial Precursor (EC 1.15.1.1) seq=translation; coord=8:91831315..91844753:1; parent_transcript=GRMZM2G124455_T01; parent_gene=GRMZM2G124455 MALRTLASKN ALSFALGGAA RPSAASARGV TTVALPDLSY DFGALEPAIS GEIMRLHHQK HHATYVANYN KALEQLDAAV AKGDASAVVQ LQGAIKFNGG GHVNHSIFWK NLKPISEGGG EPPHGKLGWA IDEDFGSFEA LVKRMNAEGA ALQGSGWVWL ALDKEAKKLS VETTANQDPL VTKGASLVPL LGIDVWEHAY YLQYKNVRPD YLNNIWKVMN WKYAGEVYEN VLA GRMZM2G059991_P01 P09233 Superoxide dismutase [Mn] 3.1, mitochondrial Precursor (EC 1.15.1.1) seq=translation; coord=6:135883373..135887597:1; parent_transcript=GRMZM2G059991_T01; parent_gene=GRMZM2G059991 MALRTLASKK VLSFPFGGAG RPLAAAASAR GVTTVTLPDL SYDFIALEPA ISGEIMRLHH QKHHATYVAN YNKALEQLDT AVSKGDASAV VQLQGAIKFN GGGHVNHSIF WKNLKPISEG GGEPPHGKLG WAIDEDFGSF EALVKKMNAE GAALQGSGWV WLALDKEAKK LSVETTANQD PLVTKGASLV PLLGIDVWEH AYYLQYKNVR PDYLNNIWKV MNWKYAGEVY ENVLA GRMZM2G124455_P02 P41980 Superoxide dismutase [Mn] 3.4, mitochondrial Precursor (EC 1.15.1.1) seq=translation; coord=8:91831315..91844753:1; parent_transcript=GRMZM2G124455_T02; parent_gene=GRMZM2G124455 MALRTLASKN ALSFALGGAA RPSAASARGV TTVALPDLSY DFGALEPAIS GEIMRLHHQK HHATYVANYN KALEQLDAAV AKGDASAVVQ LQGAIKFNGG GHVNHSIFWK NLKPISEGGG EPPHGKLGWA IDEDFGSFEA LVKRMNAEGA ALQGSGWVWL ALDKEAKKLS VETTANQVKG SSGD 5.89769 -0.318794 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 7590 7590 7590 7429 7305 6909 6548 5424 4245 2954 1844 992 507 151 60 33 12 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7592 7592 7592 7431 7307 6892 6472 5238 3902 2224 996 332 19 1 0 0 1 2 3 4 5 6 7 2448 3057 1549 441 80 22 1 0 0 1 2 3 4 5 6 1058 3651 2095 668 116 10 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2484 (charge 3) 1317.63 3 154.05 155.081 155.118 157.097 158.093 159.077 166.061 169.061 169.097 169.134 171.077 171.113 173.092 173.128 175.119 186.088 186.124 189.087 194.129 195.113 197.128 199.108 201.106 209.105 213.087 215.104 224.11 226.119 227.103 231.124 233.092 235.145 237.097 240.134 244.129 247.13 250.12 253.093 255.108 258.099 261.156 266.157 272.171 275.125 276.129 278.113 284.009 285.156 292.141 294.12 297.198 299.009 304.131 313.689 320.133 328.152 338.146 346.161 349.15 353.182 359.206 368.194 372.141 382.014 383.97 386.207 389.18 394.168 400.879 407.728 412.231 417.222 420.22 421.832 424.216 426.212 429.199 436.994 441.333 445.224 447.209 456.256 460.74 464.587 496.603 521.237 522.765 538.263 564.259 566.266 582.277 592.264 593.266 597.332 609.301 611.278 653.355 678.351 681.341 709.354 4 13 4 5 10 4 4 10 11 10 8 12 10 16 37 38 14 11 10 4 5 12 22 12 5 13 16 27 10 4 5 9 3 9 19 12 19 4 19 39 44 3 22 100 16 21 19 8 14 3 3 15 4 8 5 39 14 12 5 5 18 3 9 5 14 4 5 3 13 4 12 4 3 4 20 11 47 3 48 3 25 4 11 9 5 9 14 22 7 9 14 28 9 4 37 4 4 3 3 3 GRMZM2G085153_P02 NP_001140952 hypothetical protein LOC100273031 seq=translation; coord=2:165609242..165613195:-1; parent_transcript=GRMZM2G085153_T02; parent_gene=GRMZM2G085153 MRGPWASSAL SLRLRLRGAR ARTNTSPMSS TAARVVHPAA AAPPPPRPRR LAPARCAAGS ATDTATAGPT RVTTVSNRGD SLAICRVLNG MWQTSGGWGR IDRDAAVDAM LAHADAGLST FDMADHYGPA EDLYGMFINR IRRERPPEFL EEVKGLTKWV PPPVKMTRSY VEDNINRSRK RMDVTALDML QFHWWEYSNP GYLDALKHIT DLKEEGKIKT VALTNFDTDR LQIILENGIP VVSNQVQHSI VDMRPQQRMA ELCQLTGVRL ITYGTVMGGL LSEKFLDTNV SIPFAGPPLN TPSLQKYKRM VDAWGGWSLF QTLLQTLKKV SLKHGVTIST VAVKYILNQT SVAGSMVGVR LGLSEHIKDT NAIFSLELDE EDMNIITEVS KRGRNLIDII GDCGDEYRA GRMZM2G085153_P03 NP_001140952 hypothetical protein LOC100273031 seq=translation; coord=2:165609278..165613195:-1; parent_transcript=GRMZM2G085153_T03; parent_gene=GRMZM2G085153 MRGPWASSAL SLRLRLRGAR ARTNTSPMSS TAARVVHPAA AAPPPPRPRR LAPARCAAGS ATDTATAGPT RVTTVSNRGD SLAICRVLNG MWQTSGGWGR IDRDAAVDAM LAHADAGLST FDMADHYGPA EDLYGMFINR IRRERPPEFL EEVKGLTKWV PPPVKMTRSY VEDNINRSRK RMDVTALDML QFHWWEYSNP GYLDALKHIT DLKEEGKIKT VALTNFDTDR LQIILENGIP VVSNQVQHSI VDMRPQQRMA ELCQLTGVRL ITYGTVMGGL LSEKFLDTNV SIPFAGPPLN TPSLQKYKRM VDAWGGWSLF QTLLQTLKKV PWSV 5.20702 -0.297544 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 4838 4838 4838 4838 4838 4745 4566 4402 2625 2161 1194 641 262 113 52 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4845 4845 4845 4845 4845 4752 4573 4408 2593 2009 963 226 31 14 1 0 0 1 2 3 4 3507 1206 128 6 0 0 1 2 3 4 5 6 7 726 3358 656 104 1 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2490 (charge 2) 1347.65 2 155.081 158.092 159.077 171.076 171.113 173.092 175.12 185.093 198.088 200.103 212.103 216.098 224.103 226.119 242.113 256.127 269.125 275.988 281.126 284.01 287.135 295.139 304.161 313.025 356.194 373.222 413.216 415.141 430.241 484.245 501.28 510.22 569.879 602.323 731.288 774.408 824.411 889.444 891.454 990.486 1061.53 1148.56 1152.65 1154.56 21 14 12 12 14 13 73 15 70 80 37 20 12 13 23 19 77 10 17 21 36 13 47 22 20 16 19 11 55 13 54 17 12 77 16 100 13 75 13 93 23 15 12 18 GRMZM2G027995_P01 Q41741 Eukaryotic initiation factor 4A (eIF-4A)(EC 3.6.4.13)(ATP-dependent RNA helicase eIF4A) seq=translation; coord=6:87119198..87122939:1; parent_transcript=GRMZM2G027995_T01; parent_gene=GRMZM2G027995 GRMZM2G027995_P02 Q41741 Eukaryotic initiation factor 4A (eIF-4A)(EC 3.6.4.13)(ATP-dependent RNA helicase eIF4A) seq=translation; coord=6:87119221..87123018:1; parent_transcript=GRMZM2G027995_T02; parent_gene=GRMZM2G027995 GRMZM2G116034_P02 NP_001104874 translation initiation factor seq=translation; coord=5:56777167..56780802:-1; parent_transcript=GRMZM2G116034_T02; parent_gene=GRMZM2G116034 GRMZM2G116034_P01 NP_001104874 translation initiation factor seq=translation; coord=5:56776697..56780711:-1; parent_transcript=GRMZM2G116034_T01; parent_gene=GRMZM2G116034 6.61414 -0.377951 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3421 3421 3379 3218 2965 2357 1682 1153 738 403 171 78 41 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3411 3411 3369 3196 2932 2258 1465 932 468 241 49 8 1 0 0 1 2 3 4 5 6 1166 1565 577 116 12 3 0 0 1 2 3 4 5 6 7 522 1754 952 182 18 5 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2491 (charge 3) 1784.76 3 155.082 158.092 159.077 161.092 165.077 166.062 166.098 167.056 167.093 168.056 169.052 169.099 171.113 173.092 173.129 175.072 175.119 176.123 180.077 183.077 183.113 183.148 187.108 190.061 195.088 199.108 201.123 208.072 211.119 217.072 221.084 225.098 236.066 237.07 239.095 241.092 253.093 258.08 268.978 270.977 276.166 281.052 285.01 287.007 292.104 299.062 301.059 303.021 305.018 309.204 318.119 325.155 329.113 336.13 341.181 344.977 346.974 355.07 357.068 359.065 364.17 374.082 375.078 396.171 402.192 417.035 419.995 420.993 435.198 459.181 493.706 500.264 502.217 518.269 522.226 537.226 575.254 593.266 633.295 666.786 668.29 676.309 694.312 704.323 727.339 764.334 766.841 791.336 801.375 879.365 888.396 918.377 925.444 927.445 936.385 938.388 989.444 1074.45 1174.48 1333.57 2 2 3 1 2 6 1 20 3 3 5 1 5 1 11 1 11 1 2 3 1 1 1 1 6 7 5 3 2 1 3 20 13 1 40 17 60 1 11 5 7 2 57 40 2 35 25 19 15 100 2 1 2 12 2 6 6 75 88 3 1 7 9 6 2 3 11 14 2 1 2 2 2 23 2 15 3 2 8 2 2 2 3 2 8 17 5 5 3 8 2 2 10 2 42 7 3 7 2 3 GRMZM5G859592_P01 seq=translation; coord=1:248587698..248589524:-1; parent_transcript=GRMZM5G859592_T01; parent_gene=GRMZM5G859592 MKSDSEENRD EDSDEAGDKQ EGDYVSGKEK AGKFSEVKES SGKKKANTGS GHQSGPPKKI IRSPVKKVSS KIHEEKESPN NSAKVFSRKK KPTAEKEIKE KKSSGKKVTK GKGESVEAVL PSKDDLRKTI TEILKKVDFN TATFSDILKK LDNHYKMDLA PKKEAIKVMI QDELTKLSEE DEGEGAGDTE KKQQQPQAKE IEA 7.03374 -0.380202 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 4183 4183 4183 4178 3878 3767 3497 2819 2212 1393 701 322 155 38 12 7 2 1 1 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4187 4187 4187 4182 3882 3765 3470 2767 1898 1016 292 93 24 1 0 0 1 2 3 4 5 1670 1814 568 127 11 0 0 1 2 3 4 5 6 7 849 2126 899 258 50 3 5 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2500 (charge 3) 1693.74 3 155.118 156.078 158.093 159.077 167.082 169.061 169.098 171.077 173.129 174.131 175.119 183.113 185.092 187.071 189.087 195.075 197.093 199.071 199.108 201.124 203.103 214.119 217.082 226.155 228.171 231.099 240.135 244.166 262.149 266.118 272.172 275.208 283.14 286.141 296.128 302.097 310.106 328.117 346.127 356.109 367.122 383.189 385.132 424.698 438.239 446.234 452.25 458.177 486.212 499.073 505.299 517.237 527.768 551.75 576.295 621.743 662.312 666.24 677.348 695.411 703.828 708.818 749.377 752.338 759.361 760.85 774.383 805.403 903.447 917.429 934.438 991.471 1038.51 1357.28 4 5 7 7 5 8 9 7 35 4 37 9 5 25 24 5 8 25 31 20 5 20 50 100 7 5 35 26 7 6 11 28 23 7 4 6 5 7 10 8 7 7 7 6 10 22 20 5 5 5 24 7 24 7 21 6 10 7 39 7 27 7 8 20 69 32 39 56 20 23 9 32 6 7 GRMZM2G119886_P01 NP_001150760 DNA binding protein seq=translation; coord=1:41759285..41762638:-1; parent_transcript=GRMZM2G119886_T01; parent_gene=GRMZM2G119886 MASTAARRLR ELQAQTGNKT CVDCAQRNPQ WASVSYGVFM CLECSGKHRG LGVHISFVRS VTMDSWTEAQ LRKMEAGGND RLNAFLTARG VPKETPHVAK YNSNAAAAYR DRIAALAEGK PWTDPPVVKE TPGSGAPAPA RKPPVHTSAA SGGGGWDDWD DDFRPDMRRN QSVGSFAAAG AQSGRQPPRS KSTQDMYTRQ QLEASAANKE DFFARRMAEN ESKPDGIPPS QGGKYVGFGS SPPPSANRNG GAAQGDVMQV VSQGFGRLSL VAASAAQSAA SAVQVGTKEI QSKMRDGGYD QKVNETVSVV ANKTAEIGSR TWGIMRGVMA LASQKVEEYA KEGGVGGWGE DWQHSEQKSE PYQRFEHETN GNSWNSSQNS SSKNNSSSWD DWDDPGKKDE PAKPHQSSDS WAGWDDGKDD GFDSPSYNNH STSNKGSNQN GTSGGTFWTE GGFR GRMZM2G368806_P01 seq=translation; coord=2:236772112..236773704:1; parent_transcript=GRMZM2G368806_T01; parent_gene=GRMZM2G368806 MDSWTEAQLR KMEAGGNDRL NAFLTAWGVP KETSHVAKYN FNAATAYRDC IASLIEGKPW TDPPVVKETP GSGAPAPARK PPLHASRGGG GWDDWDDDFR PDMRRNQSVG SFAVAGAQSG RQPPRSKSTQ DIYTRQQLEA SVANKDDFFA RRMAENESKP EGIPPSQGGK YVVFGSSPAP SANRNGGAAQ GDVLQVVSQE NRTITMEYMF DYNGIWMPFI SCSLCCPVCC GRMZM2G368806_P02 seq=translation; coord=2:236772112..236773704:1; parent_transcript=GRMZM2G368806_T02; parent_gene=GRMZM2G368806 MDSWTEAQLR KMEAGGNDRL NAFLTAWGVP KETSHVAKYN FNAATAYRDC IASLIEGKPW TDPPVVKETP GSGAPAPARK PPLHASRGGG GWDDWDDDFR PDMRRNQSVG SFAVAGAQSG RQPPRSKSTQ DIYTRQQLEA SVANKDDFFA RRMAENESKP EGIPPSQGGK YVVFGSSPAP SANRNGGAAQ GDVLQVVSQG FGCLSLVAAS AAQSAASVVQ VGTKEIQSKL KVIGDGGDPN GHYDKDDHQ 6.62758 -0.323297 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 5386 5386 5292 5007 4814 4438 4282 2405 1771 830 328 198 79 34 15 11 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5397 5397 5303 5018 4817 4437 4263 2138 1468 462 142 53 14 1 0 0 1 2 3 4 5 6 2961 2100 302 33 3 1 0 0 1 2 3 4 5 6 7 1164 3551 572 92 12 0 0 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2515 (charge 2) 1110.55 2 152.056 155.045 155.081 157.061 157.097 157.108 158.081 158.092 159.077 161.092 164.817 167.081 168.065 169.097 169.134 171.076 171.114 172.072 172.109 173.092 173.128 175.119 181.061 181.096 185.092 186.124 189.087 197.091 198.087 199.108 201.088 203.103 209.091 213.087 217.081 224.104 226.155 231.097 240.135 242.114 244.164 256.153 259.093 273.12 281.125 283.176 286.139 299.135 300.136 311.17 324.165 326.182 333.783 337.186 342.182 352.161 370.173 373.208 408.229 414.245 431.731 433.876 440.735 444.245 462.231 479.262 494.28 511.299 513.309 554.299 582.334 586.322 639.353 683.371 726.386 751.388 783.409 851.457 880.467 1047.78 3 4 43 2 4 3 8 5 3 4 2 4 3 39 2 46 4 11 3 8 2 27 3 3 33 4 3 2 4 14 4 12 4 13 2 5 38 5 16 31 8 10 3 4 11 9 3 11 2 5 4 15 2 3 28 10 16 15 3 3 12 2 14 4 2 4 3 100 3 3 10 3 18 21 28 4 45 9 18 3 GRMZM2G110063_P02 NP_001152272 LOC100285911 seq=translation; coord=8:14727821..14778423:1; parent_transcript=GRMZM2G110063_T02; parent_gene=GRMZM2G110063 MAKALLYSSL LPGLPRAVGS SRSAAARLLL LPPLRLRRGR RAASACAVRA GLHGLDSVGG PHLQAALERA EAALYTLADA AVAAADAAAG AGDDAGQAAA AVQKNGGWFG FISEALEVVL KVLKDGLSAV HVPYSYGFAI ILLTIIVKAA TLPLTKKQVE STMAMQNLQP QLKAIQQRYA GNQERIQLET ARLYRQAGVN PLAGCFPTLA TIPVWIGLYQ ALSNVANEGL LTEGFFWIPS LGGPTTIAAR QSGAGISWLF PFVDGHPPLG WYDTICYLVL PVLLVASQYV SMEIMKPPQS DDPSQKNTLL VLKFLPFMIG YFSLSVPSGL SIYWFTNNVL STAQQVWLRK MGGAKPVVSE GDRRIITAGR AKRSNAQPAG ERFRQLKEEE SMRKVNKALA AGDSNASSST YDMEDEESDD ETTEEGGPVE EASSTGSDKK PPSYSGKKGK RSKRKRMVQ GRMZM2G110063_P01 NP_001152272 LOC100285911 seq=translation; coord=8:14727847..14778423:1; parent_transcript=GRMZM2G110063_T01; parent_gene=GRMZM2G110063 MAMQNLQPQL KAIQQRYAGN QERIQLETAR LYRQAGVNPL AGCFPTLATI PVWIGLYQAL SNVANEGLLT EGFFWIPSLG GPTTIAARQS GAGISWLFPF VDGHPPLGWY DTICYLVLPV LLVASQYVSM EIMKPPQSDD PSQKNTLLVL KFLPFMIGYF SLSVPSGLSI YWFTNNVLST AQQVWLRKMG GAKPVVSEGD RRIITAGRAK RSNAQPAGER FRQLKEEESM RKVNKALAAG DSNASSSTYD MEDEESDDET TEEGGPVEEA SSTGSDKKPP SYSGKKGKRS KRKRMVQ 5.65614 -0.305737 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 7647 7647 7647 7487 7228 6847 6392 5720 5156 3292 2351 1029 547 228 112 58 19 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7666 7666 7666 7506 7247 6859 6356 5599 4961 2726 1572 296 34 1 0 0 1 2 3 4 5 6 7 2561 3374 1257 401 61 14 1 0 0 1 2 3 4 5 6 7 1542 3558 1626 646 211 74 3 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2516 (charge 3) 1458.75 3 152.057 155.082 155.118 157.109 158.092 159.077 160.08 161.074 166.114 166.615 167.093 169.061 169.098 169.134 171.077 172.072 173.056 173.092 175.119 176.123 181.061 183.113 186.087 187.072 187.107 189.069 189.086 190.083 193.098 195.088 197.129 198.088 198.132 199.072 200.139 201.124 212.103 221.092 226.155 227.103 231.098 239.151 244.166 246.09 252.137 260.035 271.187 273.121 283.104 290.145 296.201 301.114 308.173 313.212 317.127 331.22 360.176 400.169 411.161 421.427 428.68 431.38 441.333 443.24 459.241 486.249 490.225 498.768 503.267 507.77 510.302 540.739 571.816 605.254 607.336 636.355 647.799 655.353 659.316 662.274 664.359 684.322 702.318 703.323 719.341 722.618 758.379 799.332 801.39 812.42 818.415 840.427 856.355 858.439 917.471 954.5 969.431 997.506 998.502 1014.53 8 4 3 4 10 49 3 7 30 4 7 5 4 37 3 5 9 3 80 7 4 13 15 21 8 16 2 6 4 14 35 4 5 4 19 5 3 4 19 8 4 2 7 27 14 4 6 4 7 16 8 13 2 8 4 37 6 16 11 28 6 17 45 17 10 5 21 6 4 100 3 5 11 6 5 8 6 5 4 31 33 9 12 4 7 7 4 10 12 4 4 9 24 14 3 7 6 19 9 8 GRMZM2G083418_P01 NP_001149063 LOC100282684 seq=translation; coord=3:9805845..9808735:-1; parent_transcript=GRMZM2G083418_T01; parent_gene=GRMZM2G083418 MVGGGRRGGA AEEVKLNTGN VFAALESLKK KKKGDKGKAA GSSSRKKHGE GAAQRQEPPQ KELFWAPAPL TTKSWADVED DDDDDYFATT APPRPVWGTA GEPAKEEEDV DDAVRAALQE DIESDDGDLD DEVDDGPEDE PEHDAEDAPA EPAIRTAAAP AAPPKDTERQ LSKKELKKKE LAELDAVLAE LGLSANSSST AQDAEKKGTN QIGDAEKKED APAPPESKAS KKKKKKDKSS KEGKETQEAL DGSEETASAG PDEDTSAVDV KERLKKMASM KKKKSSRETD TAAKIAAAEA AARSARLAAA KKKEKSHYNQ QPVR 6.91677 -0.354706 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 7715 7715 7650 7384 6910 6560 5940 5429 3821 2696 1311 671 357 174 35 17 7 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7721 7721 7656 7380 6883 6495 5863 5179 3198 2216 629 133 44 9 1 0 0 1 2 3 4 5 6 7 2993 3219 1148 287 66 5 2 2 0 1 2 3 4 5 6 7 1302 3687 1999 521 103 107 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2517 (charge 3) 1395.72 3 152.057 154.086 155.082 157.109 157.134 158.093 159.076 159.092 163.133 164.136 167.055 167.081 167.117 168.055 169.053 169.097 170.101 171.077 173.092 174.096 175.119 185.092 185.129 186.124 187.072 195.113 197.129 199.109 199.169 201.123 212.139 223.064 226.154 227.103 240.134 244.129 246.156 265.998 270.96 283.176 287.975 290.985 304.948 306.939 311.171 315.165 322.958 324.954 329.996 332.954 334.95 337.187 346.97 348.983 354.213 360.029 362.027 363.023 373.196 382.212 384.182 386.21 389.196 405.209 418.241 421.722 432.087 438.235 446.235 452.252 457.24 467.102 502.301 515.258 519.296 521.236 541.787 573.331 590.326 648.329 659.352 668.326 677.357 686.338 704.365 730.372 745.385 748.396 749.396 764.282 782.292 784.299 819.434 825.41 842.436 844.446 853.333 913.473 984.516 1081.56 2 2 6 3 24 10 7 2 70 2 7 2 2 2 5 67 6 2 74 5 47 2 26 5 3 6 2 11 6 2 5 4 21 6 54 27 2 2 35 8 28 9 100 11 15 2 84 10 7 32 3 5 12 6 2 11 42 18 16 2 5 2 14 21 3 63 6 2 2 2 7 6 2 4 11 2 12 2 10 9 2 2 14 2 2 2 39 25 2 2 21 6 9 6 65 8 6 15 11 6 GRMZM2G055276_P01 B4FR90 Putative uncharacterized protein seq=translation; coord=3:202432697..202435947:1; parent_transcript=GRMZM2G055276_T01; parent_gene=GRMZM2G055276 MATLNPFELL GADDNDDPTQ LIAAAAAAAQ KAEAKKSAVA PAGKAAQPAA TTKFPTKPAP PSQTVRDARG GGSSARGGFG RGERGRGRGG RGYGQNRGFS GDNGNEFQGG YGGGGYGDGA VTGGSEGERE RETRPPYRGG GRRGGYRNVE FADDSERPPR RNYERHSGTG HGYEMKRDGA GRGNWGTATD ELIAQDAEDS PKMEEAAPVA EKQGEQNDAP AADENKDNKD ATANEEEEKE EDKEMTLEEF EKIREEKRKA LLALKAEERK VEVDKDLQSL QPLSNKKEND EVFIKLGSDK DKKKENAERD ERAKKSVSIN EFLKPAEGER YYGGRGRGRG RGDRGGFRGG YGGGYSRGPA AAAPSIEDQA QFPSLGGK GRMZM2G055276_P02 B4FR90 Putative uncharacterized protein seq=translation; coord=3:202432697..202435928:1; parent_transcript=GRMZM2G055276_T02; parent_gene=GRMZM2G055276 MATLNPFELL GADDNDDPTQ LIAAAAAAAQ KAEAKKSAVA PAGKAAQPAA TTKFPTKPAP PSQTVRDARG GGSSARGGFG RGERGRGRGG RGYGQNRGFS GDNGNEFQGG YGGGGYGDGA VTGGSEGERE RETRPPYRGG GRRGGYRNVE FADDSERPPR RNYERHSGTG HGYEMKRDGA GRGNWGTATD ELIAQDAEDS PKMEEAAPVA EKQGEQNDAP AADENKDNKD ATANEEEEKE EDKEMTLEEF EKIREEKRKA LLALKAEERK VEVDKDLQSL QPLSNKKEND EVFIKLVSFP VINALIP 4.63562 -0.319698 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 1227 1227 1227 1227 1227 1096 694 565 387 140 65 18 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1228 1228 1228 1228 1228 1097 695 562 360 123 40 7 5 1 0 0 1 2 3 4 615 559 52 17 0 0 1 2 3 4 5 6 7 544 659 24 0 0 0 0 16 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2527 (charge 2) 1826.78 2 172.764 185.536 226.082 230.077 240.098 258.108 261.156 270.11 281.95 298.103 315.13 341.11 355.159 376.183 408.151 417.163 426.163 435.114 495.182 496.902 504.273 618.316 620.202 638.208 639.21 655.235 668.238 726.351 841.359 862.392 933.421 1084.49 1101.52 1103.52 1172.55 7 7 12 15 22 10 40 12 7 62 20 18 33 13 36 9 44 10 12 12 11 15 17 53 12 72 12 19 18 15 17 19 100 18 39 GRMZM2G149751_P01 C0P5Y3 Putative uncharacterized protein seq=translation; coord=1:176837841..176844200:1; parent_transcript=GRMZM2G149751_T01; parent_gene=GRMZM2G149751 MASHIVGYPR MGPKRELKFA LESFWDGKST AEDLEKVATD LRASIWKQMA DAGIKYIPSN TFSYYDQVLD TTAMLGAVPE RYSWTGGEIG FDTYFSMARG NATVPAMEMT KWFDTNYHFI VPELGPNTKF SYASHKAVNE YKEAKALGVD TVPVLVGPVS YLLLSKPAKG VEKGFPLLSL LSSILPVYKE VIAELKAAGA SWIQFDEPTL VLDLDSDKLA AFSAAYAELE SVLSGLNVLV ETYFADVPAE SYKTLTSLSS VTAYGFDLVR GTQTLGLVTS AGFPAGKYLF AGVVDGRNIW ADDLATSLST LQSLEAVVGK DKLVVSTSCS LMHTAVDLVN ETKLDSEIKS WLAFAAQKVV EVDALAKALA GQKDEAYFAA NAAAQASRKS SPRVTNEEVQ KAAAALKGSD HRRGTNVSAR LDAQQKKLNL PILPTTTIGS FPQTVELRRV RREYKAKKIS EEEYVTAIKE EINKVVKLQE ELDIDVLVHG EPERNDMVEY FGEQLSGFAF TANGWVQSYG SRCVKPPIIY GDVSRPNPMT VFWSKTAQSM TSRPMKGMLT GPVTILNWSF VRNDQPRFET CYQIALAIKK EVEDLEAGGI QVIQIDEAAL REGLPLRKAE HAFYLDWAVH SFRITNCEIQ DTTQIHTHMC YSNFNDIIHS IIDMDADVIT IENSRSDEKL LSVFREGVKY GAGIGPGVYD IHSPRIPSAE EIADRIDKML AVLDTNILWV NPDCGLKTRK YTEVKPALTN MVSAAKLIRT QLASAK GRMZM2G149751_P03 C0P5Y3 Putative uncharacterized protein seq=translation; coord=1:176837893..176844200:1; parent_transcript=GRMZM2G149751_T03; parent_gene=GRMZM2G149751 MASHIVGYPR MGPKRELKFA LESFWDGKST AEDLEKVATD LRASIWKQMA DAGIKYIPSN TFSYYDQVLD TTAMLGAVPE RYSWTGGEIG FDTYFSMARG NATVPAMEMT KWFDTNYHFI VPELGPNTKF SYASHKAVNE YKEAKALGVD TVPVLVGPVS YLLLSKPAKG VEKGFPLLSL LSSILPVYKE VIAELKAAGA SWIQFDEPTL VLDLDSDKLA AFSAAYAELE SVLSGLNVLV ETYFADVPAE SYKTLTSLSS VTAYGFDLVR GTQTLGLVTS AGFPAGKYLF AGVVDGRNIW ADDLATSLST LQSLEAVVGK DKLVVSTSCS LMHTAVDLVN ETKLDSEIKS WLAFAAQKVV EVDALAKALA GQKDEAYFAA NAAAQASRKS SPRVTNEEVQ KAAAALKGSD HRRGTNVSAR LDAQQKKLNL PILPTTTIGS FPQTVELRRV RREYKAKKIS EEEYVTAIKE EINKVVKLQE ELDIDVLVHG EPERNDMVEY FGEQLSGFAF TANGWVQSYG SRCVKPPIIY GDVSRPNPMT VFWSKTAQSM TSRPMKGMLT GPVTILNWSF VRNDQPRFET CYQIALAIKK EVEDLEAGGI QVIQIDEAAL REGLPLRKAE HAFYLDWAVH SFRITNCEIQ DTTQIHTHMC YSNFNDIIHS IIDMDADVIT IENSRSDEKL LSVFREGVKY GAGIGPGVYD IHSPRIPSAE EIADRIDKML AVLDTNILWV NPDCGLKTRK YTEVKPALTN MVSAAKLIRT QLASAK GRMZM2G149751_P05 C0P5Y3 Putative uncharacterized protein seq=translation; coord=1:176839355..176845518:1; parent_transcript=GRMZM2G149751_T05; parent_gene=GRMZM2G149751 MASHIVGYPR MGPKRELKFA LESFWDGKST AEDLEKVATD LRASIWKQMA DAGIKYIPSN TFSYYDQVLD TTAMLGAVPE RYSWTGGEIG FDTYFSMARG NATVPAMEMT KWFDTNYHFI VPELGPNTKF SYASHKAVNE YKEAKALGVD TVPVLVGPVS YLLLSKPAKG VEKGFPLLSL LSSILPVYKE VIAELKAAGA SWIQFDEPTL VLDLDSDKLA AFSAAYAELE SVLSGLNVLV ETYFADVPAE SYKTLTSLSS VTAYGFDLVR GTQTLGLVTS AGFPAGKYLF AGVVDGRNIW ADDLATSLST LQSLEAVVGK DKLVVSTSCS LMHTAVDLVN ETKLDSEIKS WLAFAAQKVV EVDALAKALA GQKDEAYFAA NAAAQASRKS SPRVTNEEVQ KAAAALKGSD HRRGTNVSAR LDAQQKKLNL PILPTTTIGS FPQTVELRRV RREYKAKKIS EEEYVTAIKE EINKVVKLQE ELDIDVLVHG EPERNDMVEY FGEQLSGFAF TANGWVQSYG SRCVKPPIIY GDVSRPNPMT VFWSKTAQSM TSRPMKGMLT GPVTILNWSF VRNDQPRFET CYQIALAIKK EVEDLEAGGI QVIQIDEAAL REGLPLRKAE HAFYLDWAVH SFRITNCEIQ DTTQIHTHMC YSNFNDIIHS IIDMDADVIT IENSRSDEKL LSVFREGVKY GAGIGPGVYD IHSPRIPSAE EIADRIDKML AVLDTNILWV NPDCGLKTRK YTEVKPALTN MVSAAKLIRT QLASANGCGC FCLFFGCSSA P GRMZM2G149751_P06 C0P5Y3 Putative uncharacterized protein seq=translation; coord=1:176840387..176843727:1; parent_transcript=GRMZM2G149751_T06; parent_gene=GRMZM2G149751 MHTAVDLVNE TKLDSEIKSW LAFAAQKVVE VDALAKALAG QKDEAYFAAN AAAQASRKSS PRVTNEEVQK AAAALKGSDH RRGTNVSARL DAQQKKLNLP ILPTTTIGSF PQTVELRRVR REYKAKKISE EEYVTAIKEE INKVVKLQEE LDIDVLVHGE PERNDMVEYF GEQLSGFAFT ANGWVQSYGS RCVKPPIIYG DVSRPNPMTV FWSKTAQSMT SRPMKGMLTG PVTILNWSFV RNDQPRFETC YQIALAIKKE VEDLEAGGIQ VIQIDEAALR EGLPLRKAEH AFYLDWAVHS FRITNCEIQD TTQIHTHMCY SNFNDIIHSI IDMDADVITI ENSRSDEKLL SVFREGVKYG AGIGPGVYDI HSPRIPSAEE IADRIDKMLA VLDTNILWVN PDCGLKTRKY TEVKPALTNM VSAAKLIRTQ LASAK 7.18625 -0.350549 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 7631 7631 7631 7631 7351 7047 6500 5813 5158 3682 2699 1421 738 348 146 74 29 4 2 1 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7642 7642 7642 7642 7362 7055 6480 5580 4806 3015 1800 504 94 1 0 0 1 2 3 4 5 6 2696 2951 1468 446 73 13 0 0 1 2 3 4 5 6 7 1064 3240 2245 848 184 57 1 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2530 (charge 3) 1237.6 3 153.067 154.05 154.086 155.082 156.076 157.097 157.108 158.092 159.076 160.079 165.102 166.05 166.062 167.081 169.097 169.134 170.093 171.077 171.113 173.092 173.13 175.119 181.097 183.076 183.113 183.15 188.103 191.085 194.128 195.088 195.114 197.129 198.087 199.071 200.103 209.105 216.098 221.106 226.119 227.102 229.101 233.129 235.119 240.134 244.165 246.155 248.16 251.081 254.16 258.146 266.16 268.166 270.108 272.171 278.154 282.119 287.135 301.159 310.177 314.137 320.169 323.208 327.167 328.155 341.218 345.187 357.198 361.81 375.206 379.708 386.691 408.704 411.85 415.199 419.239 431.162 438.274 460.218 464.254 469.232 473.27 475.224 490.242 507.748 525.256 535.322 563.262 574.286 591.294 601.31 607.319 618.34 635.315 645.324 702.362 719.391 722.333 757.412 850.427 937.456 6 7 8 45 6 9 17 19 40 7 8 7 7 10 18 7 28 31 31 66 6 100 7 28 10 7 6 31 10 9 8 10 30 22 24 17 11 6 23 7 6 20 9 8 28 7 6 7 7 6 6 8 7 27 6 6 7 10 8 6 6 8 9 6 19 10 7 7 22 11 20 8 12 9 8 6 11 8 8 6 31 7 8 6 11 8 7 6 22 6 19 42 35 6 10 72 10 8 11 30 GRMZM2G373522_P01 NP_001105327 dehydrin seq=translation; coord=4:154310162..154311883:-1; parent_transcript=GRMZM2G373522_T01; parent_gene=GRMZM2G373522 GRMZM2G373522_P02 NP_001105327 dehydrin seq=translation; coord=4:154310885..154311883:-1; parent_transcript=GRMZM2G373522_T02; parent_gene=GRMZM2G373522 MEDERNTQQH QGGEQAQDQE NEVKDRGLLD SLLGRNKHDD QEKKNQQEEE ELATGMEKVT VAEPDHKEEG HEAAEKKDSL LAKLHRTSSS SSSVSSS 8.04476 -0.412552 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 3737 3737 3737 3737 3737 3737 3561 3275 2729 1681 1001 359 169 55 26 5 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3740 3740 3740 3740 3740 3740 3564 3278 2725 1652 881 249 33 1 0 0 1 2 3 4 2150 1446 148 5 0 0 1 2 3 4 5 6 7 793 2309 570 60 11 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2531 (charge 3) 2439.09 3 175.119 176.124 216.098 221.103 232.84 244.092 248.538 261.924 266.126 290.145 311.68 355.071 377.153 418.239 517.307 590.239 609.28 646.35 715.776 721.644 757.632 760.406 852.204 889.428 971.442 1000.46 1017.49 1062.47 1132.53 1260.58 1331.61 1498.65 100 22 17 21 17 29 19 16 20 26 22 25 19 37 40 24 34 36 35 21 26 44 35 43 67 59 44 25 46 31 29 27 GRMZM2G044132_P01 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53846005:1; parent_transcript=GRMZM2G044132_T01; parent_gene=GRMZM2G044132 GRMZM2G044132_P02 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53845943:1; parent_transcript=GRMZM2G044132_T02; parent_gene=GRMZM2G044132 6.81986 -0.368641 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 1533 1533 1533 1528 1471 1423 1251 869 674 384 162 71 15 7 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1542 1542 1542 1537 1480 1428 1257 862 513 237 87 26 11 1 0 0 1 2 3 4 5 947 485 98 11 2 0 0 1 2 3 4 5 6 7 339 967 202 27 2 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2534 (charge 2) 1513.62 2 153.066 167.056 170.093 171.076 172.073 175.119 181.061 186.088 186.806 187.071 188.103 198.088 199.072 210.087 216.098 217.081 228.099 234.41 238.081 239.095 245.076 250.082 256.093 258.106 262.151 272.171 285.119 295.103 299.061 301.115 313.114 325.115 330.14 342.141 349.184 352.126 355.071 359.028 370.135 371.135 373.133 406.205 429.088 441.175 552.237 556.208 569.268 698.308 739.302 748.306 755.331 788.013 812.355 923.385 941.392 1056.42 1127.46 1184.48 1241.5 1298.53 1300.53 1386.56 8 8 22 25 7 37 14 6 4 7 27 43 21 6 23 4 4 4 8 4 14 5 14 4 17 5 8 5 34 5 41 4 7 15 5 19 4 14 85 8 4 39 5 17 13 7 54 13 7 34 21 4 100 18 60 47 7 5 16 28 5 7 GRMZM2G105644_P01 NP_001149382 geranylgeranyl hydrogenase seq=translation; coord=5:206890298..206892838:1; parent_transcript=GRMZM2G105644_T01; parent_gene=GRMZM2G105644 4.26202 -0.258305 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6709 6709 6709 6444 4281 3598 1840 1331 966 582 235 107 70 28 9 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6707 6707 6707 6442 4269 3449 1678 1186 813 475 114 49 32 1 0 0 1 2 3 4 5028 1582 88 15 0 0 1 2 3 4 5 6 7 862 5149 670 27 2 0 3 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2536 (charge 2) 1506.82 2 155.645 164.118 175.119 175.402 181.108 183.15 192.113 209.103 229.118 235.12 244.166 254.162 307.765 310.152 313.156 321.156 323.367 330.191 338.145 364.163 366.139 409.22 430.739 437.213 480.293 497.32 595.332 619.359 634.376 647.344 860.474 942.513 973.567 1053.58 1070.61 1072.61 3 16 5 2 30 5 4 18 12 5 3 3 3 3 3 6 3 4 3 3 5 56 15 29 4 14 4 4 21 3 49 11 5 5 100 14 GRMZM2G059191_P01 NP_001149023 ferredoxin--NADP reductase, leaf isozyme seq=translation; coord=8:157455159..157458787:-1; parent_transcript=GRMZM2G059191_T01; parent_gene=GRMZM2G059191 MAAVTAAAIS LSSSSASSPA AAAKAKAASP SSSPCRHLQF LSAASPRRRW RAGARAVRAQ VSTTETAAAG PAKTSKKQDE GLVTNKYKPK EPYVGRCLSN TRITGDDAPG ETWHMVFSTE GEIPYREGQS IGIIADGEDK NGKPHKLRLY SIASSALGDF GDSKTVSLCV KRLVYTNDQG EIVKGVCSNF LCDLKPGADV KITGPVGKEM LMPKDPNATV IMLATGTGIA PFRSFLWKMF LEEHEDYKFS GLAWLFLGVP TSDSLLYKEE LEKMKEMAPD NFRLDFAVSR EQTNAAGEKM YIQTRMAEYR EELWELLKKD NTYVYMCGLK GMEKGIDDIM LNLAAKDGID WMQYKKQLKK GEQWNVEVY 4.3514 -0.263721 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 7136 7136 7136 6902 5112 4384 3088 2254 1585 1040 605 270 107 43 15 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7143 7143 7143 6909 5119 4342 3014 2058 1286 748 341 139 30 6 1 0 0 1 2 3 4 3685 2970 444 44 0 0 1 2 3 4 5 6 7 1431 5104 558 45 4 0 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2540 (charge 2) 1203.62 2 155.082 157.097 159.076 159.113 161.092 167.081 169.097 171.076 171.112 173.092 173.128 175.107 175.119 181.098 185.092 187.071 187.09 187.108 188.112 198.034 198.124 199.108 201.124 203.102 210.978 213.087 216.044 218.149 226.155 231.098 240.099 242.113 244.166 249.039 252.135 254.112 270.145 272.123 288.154 295.14 297.157 299.133 315.202 316.207 323.173 341.143 353.186 372.224 373.227 383.192 400.183 443.262 458.725 478.995 497.83 514.302 522.871 546.912 555.244 585.338 677.388 686.381 704.356 797.407 815.421 903.467 916.46 1017.51 1105.55 6 7 3 100 4 5 19 7 4 4 3 6 16 3 48 5 5 71 4 5 5 30 5 21 3 35 5 3 86 31 4 3 16 4 3 5 10 4 6 3 4 4 45 7 4 4 3 59 11 5 6 36 4 5 5 27 19 10 4 24 13 40 46 4 30 4 17 12 11 GRMZM2G174807_P01 Q41870 Aquaporin PIP1-1 (Plasma membrane intrinsic protein 1-1)(ZmPIP1-1)(ZmPIP1;1)(ZmPIP1a) seq=translation; coord=2:18133361..18135367:-1; parent_transcript=GRMZM2G174807_T01; parent_gene=GRMZM2G174807 MEGKEEDVRL GANKFSERQP IGTAAQGTDD KDYKEPPPAP LFEPGELKSW SFYRAGIAEF VATFLFLYIS ILTVMGVSKS TSKCATVGIQ GIAWSFGGMI FALVYCTAGI SGGHINPAVT FGLFLARKLS LTRAVFYIIM QCLGAICGAG VVKGFQQGLY MGNGGGANVV APGYTKGDGL GAEIVGTFIL VYTVFSATDA KRNARDSHVP ILAPLPIGFA VFLVHLATIP ITGTGINPAR SLGAAVIYNQ HHAWADHWIF WVGPFIGAAL AAIYHQVIIR AIPFKSRS GRMZM2G174807_P02 Q41870 Aquaporin PIP1-1 (Plasma membrane intrinsic protein 1-1)(ZmPIP1-1)(ZmPIP1;1)(ZmPIP1a) seq=translation; coord=2:18134011..18135367:-1; parent_transcript=GRMZM2G174807_T02; parent_gene=GRMZM2G174807 MEGKEEDVRL GANKFSERQP IGTAAQGTDD KDYKEPPPAP LFEPGELKSW SFYRAGIAEF VATFLFLYIS ILTVMGVSKS TSKCATVGIQ GIAWSFGGMI FALVYCTAGI SGTVHAARPA ASLASSSVSF FLCLPCLVVC ANWFADVSLS LSLSLSLSLS LSLSLFSQLQ AGTSTRR GRMZM2G174807_P03 Q41870 Aquaporin PIP1-1 (Plasma membrane intrinsic protein 1-1)(ZmPIP1-1)(ZmPIP1;1)(ZmPIP1a) seq=translation; coord=2:18133344..18135342:-1; parent_transcript=GRMZM2G174807_T03; parent_gene=GRMZM2G174807 MEGKEEDVRL GANKFSERQP IGTAAQGTDD KDYKEPPPAP LFEPGELKSW SFYRAGIAEF VATFLFLYIS ILTVMGVSKS TSKCATVGIQ GIAWSFGGMI FALVYCTAGI SVPGRHLRRG RRQGVPAGAV HGQRRRRQRR GARLHQGRRP RRRDRRHLHP RLHRLLRHRR QEERQGLPCA DPRPSSNRVC RVPRPPGHHP YHRHRHQPRA EPWRRRNLQP APCVG AC209208.3_FGP002 seq=translation; coord=5:193306422..193309271:1; parent_transcript=AC209208.3_FGT002; parent_gene=AC209208.3_FG002 MEGKEEDVRL GANKFSERQP IGTAAQGAAD DKDYKEPPPA PLFEPGELKS WSFYRAGIAE FVATFLFLYI TILTVMGVSK STSKCATVGI QGIAWSFGGM IFALVYCTAG ISGGHINPAV TFGLFLARKL SLTRALFYII MQCLGAICGA GVVKGFQQGL YMGNGGGANV VAPGYTKGDG LGAEIVGTFI LVYTVFSATD AKRNARDSHV PILAPLPIGF AVFLVHLATI PITGTGINPA RSLGAAIIYN RDHAWNDHWI FWVGPFIGAA LAAIYHQVII RAIPFKSRS GRMZM2G392975_P01 Q9AQU5 Aquaporin PIP1-3/PIP1-4 (Plasma membrane intrinsic protein 1-3)(ZmPIP1-3)(ZmPIP1;3)(Plasma membrane intrinsic protein 1-4)(ZmPIP1-4)(ZmPIP1;4) seq=translation; coord=4:153627243..153631088:1; parent_transcript=GRMZM2G392975_T01; parent_gene=GRMZM2G392975 MEGKEEDVRL GANKFSERQP IGTAAQGAGA GDDDKDYKEP PPAPLFEPGE LKSWSFYRAG IAEFVATFLF LYITVLTVMG VSKSTSKCAT VGIQGIAWSF GGMIFALVYC TAGISGGHIN PAVTFGLFLA RKLSLTRAIF YIIMQCLGAI CGAGVVKGFQ QGLYMGNGGG ANVVAPGYTK GDGLGAEIVG TFILVYTVFS ATDAKRNARD SHVPILAPLP IGFAVFLVHL ATIPITGTGI NPARSLGAAI IYNRDHAWSD HWIFWVGPFI GAALAAIYHQ VIIRAIPFKS RS GRMZM2G392975_P02 Q9AQU5 Aquaporin PIP1-3/PIP1-4 (Plasma membrane intrinsic protein 1-3)(ZmPIP1-3)(ZmPIP1;3)(Plasma membrane intrinsic protein 1-4)(ZmPIP1-4)(ZmPIP1;4) seq=translation; coord=4:153627262..153630840:1; parent_transcript=GRMZM2G392975_T02; parent_gene=GRMZM2G392975 MEGKEEDVRL GANKFSERQP IGTAAQGAGA GDDDKDYKEP PPAPLFEPGE LKSWSFYRAG IAEFVATFLF LYITVLTVMG VSKSTSKCAT VGIQGIAWSF GGMIFALVYC TAGISGGHIN PAVTFGLFLA RKLSLTRAIF YIIMQCLGAI CGAGVVKGFQ QGLYMGNGGG ANVVAPGYTK GDGLGAEIVG TFILVYTVFS ATDAKRNARD SHVPILAPLP IGFAVFLVHL ATIPITGTGI NPARSLGAAI IYNRDHAWSD HWIFWVGPFI GAALAAIYHQ VIIRAIPFKS RS GRMZM2G392975_P03 Q9AQU5 Aquaporin PIP1-3/PIP1-4 (Plasma membrane intrinsic protein 1-3)(ZmPIP1-3)(ZmPIP1;3)(Plasma membrane intrinsic protein 1-4)(ZmPIP1-4)(ZmPIP1;4) seq=translation; coord=4:153627517..153630684:1; parent_transcript=GRMZM2G392975_T03; parent_gene=GRMZM2G392975 MEGKEEDVRL GANKFSERQP IGTAAQGAGA GDDDKDYKEP PPAPLFEPGE LKSWSFYRAG IAEFVATFLF LYITVLTVMG VSKSTSKCAT VGIQGIAWSF GGMIFALVYC TAGISGGHIN PAVTFGLFLA RKLSLTRAIF YIIMQCLGAI CGAGVVKGFQ QGLYMGNGGG ANVVAPGYTK GDGLGAEIVG TFILVYTVFS ATDAKRNARD SHVPILAPLP IGFAVFLVHL ATIPITGTGI NPARSLGAAI IYHQVIIRAI PFKSRS GRMZM2G081843_P01 Q9AR14 Aquaporin PIP1-5 (Plasma membrane intrinsic protein 1-5)(ZmPIP1-5)(ZmPIP1;5)(ZmPIP1-5b) seq=translation; coord=4:169974857..169976357:-1; parent_transcript=GRMZM2G081843_T01; parent_gene=GRMZM2G081843 MEGKEEDVRL GANRYSERQP IGTAAQGTEE KDYKEPPPAP LFEAEELTSW SFYRAGIAEF VATFLFLYIS ILTVMGVSKS SSKCATVGIQ GIAWSFGGMI FALVYCTAGI SGGHINPAVT FGLFLARKLS LTRALFYMVM QCLGAICGAG VVKGFQEGLY MGAGGGANAV NPGYTKGDGL GAEIVGTFVL VYTVFSATDA KRSARDSHVP ILAPLPIGFA VFLVHLATIP ITGTGINPAR SLGAAIVYNR SHAWNDHWIF WVGPFIGAAL AAIYHVVIIR ALPFKSRD 4.95818 -0.283325 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 3241 3241 3207 2691 2575 2369 1330 859 412 218 107 62 21 16 9 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3248 3248 3214 2695 2566 2331 1247 677 258 70 17 5 1 0 0 1 2 3 4 5 2097 959 173 18 14 0 0 1 2 3 4 5 6 7 569 2290 314 53 19 2 0 14 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2546 (charge 2) 1150.5 2 153.102 158.092 162.058 169.061 169.097 175.119 176.122 181.097 186.124 187.107 190.053 191.057 195.113 198.124 199.108 204.134 207.124 226.155 235.119 239.15 241.082 244.165 255.098 257.161 259.092 274.187 285.009 297.156 312.118 315.166 319.097 355.069 372.225 374.119 376.117 389.215 416.711 426.196 440.215 444.209 469.276 472.228 500.738 518.257 534.75 543.756 551.243 559.235 569.256 629.288 647.299 670.273 688.276 775.394 795.31 813.329 832.416 877.322 943.44 961.459 979.556 1 3 5 1 3 21 1 1 10 1 31 2 1 1 2 1 1 8 1 1 1 3 6 5 1 100 1 3 3 3 2 2 2 1 1 4 3 2 1 1 1 3 2 6 1 4 2 3 2 2 13 2 1 4 1 3 10 1 2 6 1 GRMZM2G122937_P01 NP_001159012 remorin seq=translation; coord=2:22990515..22995670:1; parent_transcript=GRMZM2G122937_T01; parent_gene=GRMZM2G122937 MAEEEAKKVE VEVTKEPEAA AKEDVADDKA VIPATDPPPP PPPADDSKAL AIVEKVADEP APEKPAPAKQ GGSNDRDLAL ARVETEKRNS LIKAWEENEK TKAENKAAKK VSAILSWENT KKANIEAELK KIEEQLEKKK AEYAEKMKNK VAMIHKEAEE KRAMVEAKRG EEVLKAEEMA AKYRATGHAP KKLIGCFGA GRMZM2G122937_P03 NP_001159012 remorin seq=translation; coord=2:22990515..22995246:1; parent_transcript=GRMZM2G122937_T03; parent_gene=GRMZM2G122937 MAEEEAKKVE VEVTKEPEAA AKEDVADDKA VIPATDPPPP PPPADDSKAL AIVEKVADEP APEKPAPAKQ GGSNDRDLAL ARVETEKRNS LIKAWEENEK TKAENKAAKK VSAILSWENT KKANIEAELK KIEEQLEKKK AEYAEKMKNK VAMIHKEAEE KRAMVEAKRG EEVLKAEEMA AKYRATGHAP KKLIGCFGA GRMZM2G122937_P02 NP_001159012 remorin seq=translation; coord=2:22990515..22995669:1; parent_transcript=GRMZM2G122937_T02; parent_gene=GRMZM2G122937 MAEEEAKKVE VEVTKEPEAA AKEDVADDKA VIPATDPPPP PPPADDSKAL AIVEKVADEP APEKPAPAKQ GGSNDRDLAL ARVETEKRNS LIKAWEENEK TKAENKAAKK VSAILSWENT KKANIEAELK KIEVCH 7.03561 -0.312694 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 8530 8530 8381 8282 8000 7587 6571 5629 4226 2968 2024 1275 717 350 177 115 38 12 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 8556 8556 8407 8306 8017 7548 6392 5136 3387 1813 994 408 132 67 25 1 0 0 1 2 3 4 5 6 7 2586 3423 1631 711 188 11 4 2 0 1 2 3 4 5 6 7 1738 3187 2276 875 414 54 6 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2550 (charge 3) 1419.75 3 154.086 155.082 155.118 157.061 157.109 157.133 158.092 159.076 169.097 169.133 170.1 171.113 172.117 173.092 175.119 181.061 181.097 183.112 183.149 185.056 185.092 187.071 187.107 194.129 195.112 197.129 199.071 199.107 201.124 209.092 211.143 213.086 217.082 218.15 227.102 228.105 232.14 240.134 245.077 252.134 258.144 266.15 272.172 284.123 286.139 290.986 297.192 305.956 313.26 315.203 324.119 337.186 342.129 343.132 345.215 355.198 361.181 367.16 381.213 383.194 386.239 395.193 410.235 413.167 415.182 417.244 419.245 426.235 428.284 448.215 452.249 454.764 465.281 483.292 485.299 488.279 503.288 523.288 525.294 558.805 563.242 567.302 580.234 585.331 594.32 611.387 620.337 660.841 663.377 691.378 709.38 740.434 762.419 802.398 819.47 837.482 839.488 908.52 1005.57 1007.57 2 2 3 2 2 2 6 18 78 3 5 47 2 2 16 12 6 5 2 8 6 44 8 12 2 2 8 21 5 8 3 6 38 17 59 8 9 14 40 6 6 2 9 2 11 3 16 6 5 75 2 13 14 2 3 37 2 2 2 2 9 5 5 7 6 2 84 8 5 6 2 11 7 85 5 8 12 35 3 11 2 2 5 9 8 27 3 2 3 17 5 14 2 2 6 100 16 19 22 3 GRMZM2G124576_P02 seq=translation; coord=1:59670870..59675001:-1; parent_transcript=GRMZM2G124576_T02; parent_gene=GRMZM2G124576 5.68182 -0.344353 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 4781 4781 4781 4781 4667 3568 3079 2213 1485 1064 366 220 62 19 6 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4786 4786 4786 4786 4672 3573 3074 2165 1337 902 269 148 45 6 3 1 0 0 1 2 3 4 5 2030 2097 545 106 8 0 0 1 2 3 4 5 6 7 1451 2765 545 20 0 0 5 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2551 (charge 3) 1838.82 3 152.057 155.082 157.061 157.097 159.077 167.055 169.098 175.072 175.119 181.098 183.113 185.092 186.124 187.071 194.273 199.072 199.108 203.066 216.097 226.155 230.113 233.165 235.118 240.096 241.092 244.165 247.32 274.103 285.009 287.008 297.157 300.062 301.06 303.017 315.167 336.278 356.072 357.068 359.121 375.082 379.777 419.259 421.993 470.27 514.223 543.249 548.301 638.347 665.784 678.349 731.305 778.389 844.912 906.455 1007.51 1108.55 1739.84 8 7 64 8 16 7 9 42 12 6 7 7 13 45 6 7 11 63 6 62 8 36 8 30 16 32 5 8 16 14 8 15 39 6 9 6 59 100 14 10 6 14 14 8 9 8 11 9 10 13 10 14 8 13 11 45 10 GRMZM2G000489_P01 NP_001148081 gibberellin receptor GID1L2 seq=translation; coord=8:14933363..14934823:-1; parent_transcript=GRMZM2G000489_T01; parent_gene=GRMZM2G000489 MSGDTAPHVV EDFFGAIQLL SDGTVVRGDE AALLPPKPFP DVPGVQWKDA VYDAARGLKV RVYRPTADAG DSKLPVLVHF HGGGYCVGSY DELGGADYLR RRLAADLPAL VLSVQYRLAP EHRLPAAIED GATFLAWLRG QAALAGAGGA GAGVEQWLAE SADFARTFLS GVSAGANLAH HLAVRAGSGQ VDLAPARLAG LVLLSLFLGG VERTATESAP PDGVSLTVAM SDQLWRMALP VGASMDHPLA NPFGPGSPGL EPVALPPVLV EAPGVDVLRD RVLLYAARLR EMGKDVELAE FPGEQHGFSV LRWGQANEEL MQILKRFLHR K 5.62602 -0.321487 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 8010 8010 8010 7522 7245 6765 6160 4821 3613 2210 1083 505 234 98 48 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8020 8020 8020 7532 7252 6743 6073 4625 3118 1331 293 60 6 1 0 0 1 2 3 4 5 6 3145 3311 1174 308 67 15 0 0 1 2 3 4 5 6 7 1400 3839 1919 703 123 23 8 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2554 (charge 3) 1279.63 3 153.102 154.086 155.081 155.118 157.061 157.097 157.108 158.056 158.092 159.077 166.061 169.097 169.133 170.137 171.076 171.113 173.129 175.072 175.119 176.122 181.096 181.11 182.129 183.113 183.149 184.116 185.117 187.072 187.108 192.077 194.129 195.113 197.128 198.124 199.071 199.109 201.123 203.066 210.124 212.139 216.135 223.107 226.155 234.145 240.134 244.166 252.136 255.145 262.049 272.17 284.16 290.096 297.057 303.145 309.199 320.171 349.172 352.199 369.225 385.171 388.182 403.174 406.194 409.856 419.241 426.246 430.739 433.216 438.248 449.25 466.278 472.272 477.229 490.279 497.319 500.252 509.25 529.268 534.255 541.273 561.31 581.779 590.782 592.26 594.375 599.333 601.276 617.34 628.252 634.378 660.382 663.298 704.337 706.338 784.355 803.405 860.471 875.433 947.427 1058.52 3 7 6 8 7 3 6 3 8 16 7 4 35 4 2 10 4 4 36 3 4 5 20 42 18 3 2 13 3 6 3 7 10 7 3 17 2 8 15 7 30 3 34 100 3 11 3 10 3 8 4 3 3 40 8 21 9 6 23 8 3 3 16 6 12 41 3 8 3 3 54 2 17 3 12 3 3 3 2 12 4 5 11 8 3 3 3 4 3 2 2 3 35 3 8 7 8 3 23 4 conta|P35527|K1CI_HUMAN Keratin, type I cytoskeletal 9 (Cytokeratin 9) (K9) (CK 9) - Homo sapiens (Human). MSCRQFSSSY LTSGGGGGGG LGSGGSIRSS YSRFSSSGGR GGGGRFSSSS GYGGGSSRVC GRGGGGSFGY SYGGGSGGGF SASSLGGGFG GGSRGFGGAS GGGYSSSGGF GGGFGGGSGG GFGGGYGSGF GGLGGFGGGA GGGDGGILTA NEKSTMQELN SRLASYLDKV QALEEANNDL ENKIQDWYDK KGPAAIQKNY SPYYNTIDDL KDQIVDLTVG NNKTLLDIDN TRMTLDDFRI KFEMEQNLRQ GVDADINGLR QVLDNLTMEK SDLEMQYETL QEELMALKKN HKEEMSQLTG QNSGDVNVEI NVAPGKDLTK TLNDMRQEYE QLIAKNRKDI ENQYETQITQ IEHEVSSSGQ EVQSSAKEVT QLRHGVQELE IELQSQLSKK AALEKSLEDT KNRYCGQLQM IQEQISNLEA QITDVRQEIE CQNQEYSLLL SIKMRLEKEI ETYHNLLEGG QEDFESSGAG KIGLGGRGGS GGSYGRGSRG GSGGSYGGGG SGGGYGGGSG SRGGSGGSYG GGSGSGGGSG GGYGGGSGGG HSGGSGGGHS GGSGGNYGGG SGSGGGSGGG YGGGSGSRGG SGGSHGGGSG FGGESGGSYG GGEEASGSGG GYGGGSGKSS HS 6.09555 -0.348317 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 2238 2238 2238 2228 2045 1898 1544 1172 759 384 198 82 50 9 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2263 2263 2263 2253 2070 1917 1535 1087 614 199 54 16 1 0 0 1 2 3 4 5 6 7 1016 885 231 102 17 4 6 2 0 1 2 3 4 5 6 7 499 1189 424 124 11 2 3 11 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2557 (charge 3) 2091.88 3 152.057 155.082 159.077 172.072 173.092 175.119 184.071 185.092 193.097 202.082 205.098 217.082 221.09 226.119 233.188 241.093 244.13 246.138 255.146 259.103 298.117 316.125 319.172 343.518 367.135 383.538 421.721 463.225 486.239 520.247 559.269 575.732 577.269 616.279 675.311 685.298 699.376 703.311 740.332 749.665 794.345 797.356 799.356 838.377 854.373 866.375 911.398 923.411 952.423 981.429 998.424 1055.45 1094.46 1169.49 1440.27 1601.49 6 5 5 4 5 20 6 5 5 6 4 5 5 5 4 9 9 5 6 5 5 5 5 6 5 5 23 6 6 22 8 6 100 9 17 21 8 27 24 8 7 29 7 27 28 20 41 11 11 12 20 9 8 8 7 8 GRMZM2G432390_P01 B6U3G3 Putative uncharacterized protein seq=translation; coord=3:162813868..162819135:1; parent_transcript=GRMZM2G432390_T01; parent_gene=GRMZM2G432390 MPPPAAMLLL TAASGPPTLS LTLAARRAPL RAPSRRRLRA LRPARIRAAA AIGGEFGGLG RRRVVVGEFI ERLRNVLPGG SWWRLEDGDE AGDGAGRAEG SGTTAVSALR RMWALVAGDR LVIYVGFASL VGAALSEIAI PHLLAASIFS AQNGGAVFYR NAKLLVVLCL VSGVFRYANW LDKLYDVSFR QTVAYGGWSL SLNYLYHSTQ VIGVVIGGLA IMSGKLTAEQ LTKFTLYAEW LILSTWWIGD NWSSLMQSVG ASEKVFRLMD LLPSKQLSSE GLKLEKLKGQ IQYADVSFSY PSRPTVPILG GLNLTLNPNE VVAIVGLSGS GKSTIINLLL RLYEPTNGQI LIDGVPLTEL DIRWFRERIG FVGQEPRLFR MDISSNIKYG CPRDVSHEEV IWAAKQAYAH DFIMALPDGY NTIVDDALLS GGQKQRVAIA RALLRDPSIL LLDEATSALD AESEHYVKSV ITKVSRDSKA KRTVVIIAHR LSTIQTADRI IVMENGNIVE DGKHIDLIEK GGLYSRLARR QNDDLK 4.07294 -0.232739 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1599 1599 1587 1466 1424 1308 957 709 379 250 150 94 56 30 11 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1592 1592 1580 1459 1411 1283 899 563 301 135 63 25 9 1 0 0 1 2 3 4 730 763 85 27 0 0 1 2 3 4 5 6 7 555 775 233 34 1 4 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2562 (charge 2) 1261.53 2 152.057 152.107 155.081 157.108 157.133 158.093 159.076 169.097 170.045 171.076 171.113 172.117 173.056 173.092 175.119 180.102 183.077 183.113 186.088 186.124 187.072 194.128 197.129 198.087 199.071 199.107 199.181 201.087 204.133 212.103 215.139 217.083 226.154 228.134 230.077 232.141 236.104 240.136 243.134 245.077 256.092 258.11 266.173 284.086 288.083 301.187 302.099 313.257 340.198 353.109 358.208 360.199 373.135 399.114 417.126 445.24 448.22 464.141 474.184 516.277 532.247 545.184 581.29 585.325 587.318 603.285 702.342 714.317 717.345 732.328 734.331 821.319 835.385 847.352 888.4 904.376 912.481 936.343 938.506 960.444 1001.38 1019.4 1021.41 1071.48 1088.47 1148.44 21 3 10 2 2 9 3 2 2 2 39 2 10 14 19 2 8 3 2 3 9 2 9 4 4 2 2 10 2 3 100 2 15 3 4 16 4 2 39 12 4 3 2 8 10 15 9 2 2 3 22 97 3 12 3 20 3 3 10 10 48 3 3 3 4 52 9 15 8 32 2 2 3 12 10 29 3 3 2 3 3 44 8 3 3 8 GRMZM2G087570_P01 seq=translation; coord=6:44382950..44385913:-1; parent_transcript=GRMZM2G087570_T01; parent_gene=GRMZM2G087570 MAAAAAAATS FTTLAVARSA GQRSLLASKA APSPLLSLRG ARIPSQAVSF SGGLAASPSH SRARFATSAS AEPKEADLQS KITNKVYFDI SIGNPVGKNV GRIVIGLYGD DVPQTAENFR ALCTGEKGFG YKGSSFHRVI SDFMIQGGDF DKGNGTGGKS IYGRTFKDEN FKLVHTGPGV VSMANAGPNT NGSQFFICTV KTPWLDGRHV VFGQVVEGMD IVRLIESQET DRGDRPKKKV VISECGELPV V GRMZM2G076544_P01 NP_001149265 peptidyl-prolyl cis-trans isomerase seq=translation; coord=8:135138380..135140767:-1; parent_transcript=GRMZM2G076544_T01; parent_gene=GRMZM2G076544 MAATATSFAT LAVARSAGQR FLLASKAAPS PLLSLRGARL PSQGVSLSGG LAASPSHSRA RFATSASAEP KEAELQSKIT NKVYFDISIG NPVGKNVGRI VIGLYGDDVP QTTENFRALC TGEKGFGYKG SSFHRVISDF MIQGGDFDKG NGTGGKSIYG RTFKDENFKL VHTGPGVVSM ANAGPNTNGS QFFICTVKTP WLDGRHVVFG QVLEGMDVVS LIESQETDRG DRPKKKVVIS ECGELPVV 4.52144 -0.220558 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 7658 7658 7580 5960 5078 4072 3372 2651 2164 1577 1010 486 281 196 95 77 26 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7656 7656 7578 5898 4773 3633 2872 2064 1510 892 451 79 18 1 0 0 1 2 3 4 5 6 7 4162 2901 498 90 6 1 8 0 0 1 2 3 4 5 6 7 1357 3999 1862 373 64 3 8 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2563 (charge 2) 1643.83 2 151.061 152.057 157.108 175.118 176.285 199.07 199.163 199.181 202.082 216.097 227.176 228.179 244.166 254.16 272.172 300.663 327.129 329.157 338.021 341.218 345.141 356.217 364.711 383.239 400.266 408.702 443.247 456.171 472.75 485.258 503.223 523.237 529.253 572.314 580.767 601.303 614.802 636.302 644.813 669.848 680.297 687.344 692.319 700.84 702.345 709.85 711.387 728.421 749.366 758.373 759.88 766.39 792.898 801.409 804.907 813.911 823.422 916.42 927.467 1056.51 1146.57 1172.59 1185.56 1227.55 1244.58 1246.58 1261.6 1272.57 1358.64 1383.64 1400.64 1 1 2 1 2 2 2 58 2 4 30 2 15 3 13 8 3 2 2 3 7 8 35 4 40 3 2 3 8 2 2 4 2 9 8 3 2 8 31 2 2 13 3 43 3 10 9 19 8 100 7 2 3 8 4 66 78 7 3 8 3 3 2 4 35 4 4 9 8 4 11 GRMZM2G122937_P01 NP_001159012 remorin seq=translation; coord=2:22990515..22995670:1; parent_transcript=GRMZM2G122937_T01; parent_gene=GRMZM2G122937 GRMZM2G122937_P03 NP_001159012 remorin seq=translation; coord=2:22990515..22995246:1; parent_transcript=GRMZM2G122937_T03; parent_gene=GRMZM2G122937 GRMZM2G122937_P02 NP_001159012 remorin seq=translation; coord=2:22990515..22995669:1; parent_transcript=GRMZM2G122937_T02; parent_gene=GRMZM2G122937 3.78937 -0.204831 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 5962 5962 5962 5954 4160 3791 2547 2056 1688 1314 918 600 259 154 86 36 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5968 5968 5968 5960 4166 3752 2436 1970 1505 1118 737 468 134 73 35 1 0 0 1 2 3 4 5 6 3718 1978 251 22 0 2 0 0 1 2 3 4 5 6 7 1168 4107 618 69 5 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2564 (charge 2) 1419.75 2 157.061 169.097 171.076 171.113 172.115 175.119 185.056 187.072 187.108 199.071 199.108 214.156 217.082 227.102 240.134 245.077 286.139 297.193 315.203 337.185 342.13 355.199 387.186 395.193 403.072 415.183 419.247 426.234 454.229 483.292 503.289 509.592 523.289 554.893 558.804 593.371 599.404 611.386 645.794 691.373 709.351 740.427 837.483 839.483 859.462 908.526 1005.58 1007.58 1067.2 1249.63 5 61 8 56 5 4 8 32 5 4 7 5 14 46 8 48 100 15 78 8 9 55 8 5 4 15 49 5 5 89 7 5 40 9 15 4 8 25 5 19 4 6 72 5 5 12 71 7 5 5 GRMZM2G137528_P01 NP_001140953 hypothetical protein LOC100273032 seq=translation; coord=5:158605385..158610074:1; parent_transcript=GRMZM2G137528_T01; parent_gene=GRMZM2G137528 MATVAMDISK PTPVASGDEA AAAAKGRSGG GGEGLRQYYL QHIHDLQLQI RQKTHNLNRL EAQRNDLNSR VRMLREELQL LQEPGSYVGE VVKVMGKSKV LVKVHPEGKY VVDIDKSIDI TKITPSTRVA LRNDSYMLHL ILPSKVDPLV NLMKVEKVPD STYDMIGGLD QQIKEIKEVI ELPIKHPELF ESLGIAQPKG VLLYGPPGTG KTLLARAVAH HTDCTFIRVS GSELVQKYIG EGSRMVRELF VMAREHAPSI IFMDEIDSIG SARMESGTGN GDSEVQRTML ELLNQLDGFE ASNKIKVLMA TNRIDILDQA LLRPGRIDRK IEFPNPNEDS RFDILKIHSR KMNLMRGIDL KKIAEKMNGA SGAELKAVCT EAGMFALRER RVHVTQEDFE MAVAKVMKKD TEKNMSLRKL WK GRMZM2G137528_P02 NP_001140953 hypothetical protein LOC100273032 seq=translation; coord=5:158605242..158609659:1; parent_transcript=GRMZM2G137528_T02; parent_gene=GRMZM2G137528 MATVAMDISK PTPVASGDEA AAAAKGRSGG GGEGLRQYYL QHIHDLQLQI RQKTHNLNRL EAQRNDLNSR VRMLREELQL LQEPGSYVGE VVKVMGKSKV LVKVHPEGKY VVDIDKSIDI TKITPSTRVA LRNDSYMLHL ILPSKVDPLV NLMKVEKVPD STYDMIGGLD QQIKEIKEVI ELPIKHPELF ESLGIAQPKG VLLYGPPGTG KTLLARAVAH HTDCTFIRVS GSELVQKYIG EGSRMVRELF VMAREHAPSI IFMDEIDSIG SARMESGTGN GDSEVQRTML ELLNQLDGFE ASNKIKVLMA TNRIDILDQA LLRPGRIDRK IEFPNPNEDS RFDILKIHSR KMNLMRGIDL KKIAEKMNGA SGAELKAVCT EAGMFALRER RVHVTQEDFE MAVAKVMKKD TEKNMSLRKL WK GRMZM2G107362_P02 NP_001142276 hypothetical protein LOC100274445 seq=translation; coord=4:231475847..231481286:1; parent_transcript=GRMZM2G107362_T02; parent_gene=GRMZM2G107362 MATVAMDISK PTPAASGDEA AAAAKGRSGG GGEGLRQYYL QHIHDLQLQI RQKTHNLNRL EAQRNDLNSR VRMLREELQL LQEPGSYVGE VVKVMGKSKV LVKVHPEGKY VVDIDKSIDI TKITPSTRVA LRNDSYMLHL ILPSKVDPLV NLMKVEKVPD STYDMIGGLD QQIKEIKEVI ELPIKHPELF ESLGIAQPKG VLLYGPPGTG KTLLARAVAH HTDCTFIRVS GSELVQKYIG EGSRMVRELF VMAREHAPSI IFMDEIDSIG SARMESGTGN GDSEVQRTML ELLNQLDGFE ASNKIKVLMA TNRIDILDQA LLRPGRIDRK IEFPNPNEDS RFDILKIHSR KMNLMRGIDL KKIAEKMNGA SGAELKAVCT EAGMFALRER RVHVTQEDFE MAVAKVMKKD TEKNMSLRKL WK GRMZM2G107362_P04 NP_001142276 hypothetical protein LOC100274445 seq=translation; coord=4:231475809..231481211:1; parent_transcript=GRMZM2G107362_T04; parent_gene=GRMZM2G107362 MATVAMDISK PTPAASGDEA AAAAKGRSGG GGEGLRQYYL QHIHDLQLQI RQKTHNLNRL EAQRNDLNSR VRMLREELQL LQEPGSYVGE VVKVMGKSKV LVKVHPEGKY VVDIDKSIDI TKITPSTRVA LRNDSYMLHL ILPSKVDPLV NLMKVEKVPD STYDMIGGLD QQIKEIKEVI ELPIKHPELF ESLGIAQPKG VLLYGPPGTG KTLLARAVAH HTDCTFIRVS GSELVQKYIG EGSRMVRELF VMAREHAPSI IFMDEIDSIG SARMESGTGN GDSEVQRTML ELLNQLDGFE ASNKIKVLMA TNRIDILDQA LLRPGRIDRK IEFPNPNEDS RFDILKIHSR KMNLMRGIDL KKIAEKMNGA SGAELKAVCT EAGMFALRER RVHVTQEDFE MAVAKVMKKD TEKNMSLRKL WNGSAFISIS FTKAVEWCNG MLWTMLSQVA PRMLMFKIFL ITAVVCCCKV DWIYQIS GRMZM2G107362_P01 NP_001142276 hypothetical protein LOC100274445 seq=translation; coord=4:231479786..231481291:1; parent_transcript=GRMZM2G107362_T01; parent_gene=GRMZM2G107362 MDEIDSIGSA RMESGTGNGD SEVQRTMLEL LNQLDGFEAS NKIKVLMATN RIDILDQALL RPGRIDRKIE FPNPNEDSRF DILKIHSRKM NLMRGIDLKK IAEKMNGASG AELKAVCTEA GMFALRERRV HVTQEDFEMA VAKVMKKDTE KNMSLRKLWK 6.06837 -0.418508 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 1311 1311 1311 1311 1311 1275 1225 1148 1007 426 217 62 15 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1325 1325 1325 1325 1325 1289 1237 1160 1014 393 182 46 11 5 1 0 0 1 2 3 890 406 36 0 0 1 2 3 4 5 6 7 304 915 101 4 0 0 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2565 (charge 2) 1466.62 2 152.057 157.061 158.093 159.076 172.072 175.119 188.074 191.18 199.071 216.099 226.155 233.095 242.3 244.064 245.606 261.091 286.152 292.878 303.178 348.122 402.247 531.288 600.309 618.32 790.369 838.511 904.402 961.431 982.328 1062.47 1120.5 1182.4 1206.54 11 12 9 16 9 79 55 7 11 11 15 100 7 10 8 74 17 7 43 14 51 16 10 98 80 9 28 75 9 9 14 10 60 GRMZM2G318635_P01 seq=translation; coord=5:213291570..213301733:-1; parent_transcript=GRMZM2G318635_T01; parent_gene=GRMZM2G318635 MAPKAGKAKP KARGDRKKKE EKVLPTVLDV TVETPDYTLL TLKGISTDRI LDIRKLLAVH VDTCHLTSFS LSHEVRGGQL KDTVEIAALK PCHLTIVEED YTEELAVAHV RRLLDIVACT TVFGAKKPEP KPDAADAAAE SAKAGSPSPG KTAPGGGEEP MYPPPKLEQF YDFFTFSHLT PPLHYIRRSS RPFVDDKRED DFFQIDVRVC NGKPVTIVAS QEGFYPAGKR ALISRSLVGL LQQTSRAFDG AYKALMKAFV EHNKFGNLPY GFRSNTWVAP PVVADSPSVF PPLPTEDETW GGSGGGQGRD GKHDHRPWVK EFAILAAMPC KTAEERQIRD RKAFLLHSLF VDVAVLKAVA SIQQLISNHT SLHETENGTI GSVLHTEQVG DMKIMITKDK TDASSKLDVK LDGSQAPGMS SDELAQRNLL KGITADESAT VHDTATLGVV IVKHCGYTAV VQVPVDTELP AASVAQQEIH IEDQPEGGSN ALNVNSLRML LHKSCAQAPG VQRLQTSDPQ DNEATQTFVR KILTDSLQKL ENEVPIVTRP IRWELGACWV QHLQNPTSEK TETKKSDETK DVPTVKGLGK QFGQLKEIKK KTDDKGGKGT YVKGNNSPNT DNGHTDNTAS VKDDKDIILQ RLLPEAAFQR LKESETGLHV KSLDELIEMS HKYYDDTALP KLVADFGSLE LSPVDGRTLT DFMHTRGLQM RSLGRVVELS DKLPHIQSLC IHEMVVRAFK HIVRAVIAAV DDINDMADSV ASCLNILLGP FLEENNDKDC GEDHNLRKRW LEVFLIKRFG WKWKDEYCLD LRKYAILRGL CHKVGLELIT KDYDMDMPNP FRKSDIISVV PIYKHVACSS ADGRTLLESS KTFLDKGKLE DAVSYGTKAL AKLVAVCGPY HRMTAGAYSL LAVVLYHTGD FNQATIYQQK ALDINERELG LDHPDTMKSY GDLAVFYYRL QHTELALKYV NRALYLLHLT CGPSHPNTAA TYINVAMMEE GLGNVHVALR YLHEALKCNQ RLLGADHIQT AASYHAIAIA LSLMEAYSLS VQHEKTTLRI LQAKLGSEDL RTQDASAWLE YFESKALEQQ EAARNGTPKP DASIASRGHL SVSDLLDYIN PDDELKAKEM QRKQVRAKIK GRTGQNQSEL VDDEDQRSPA PNNDKNLLTE NGNSGVKENG TFVEHVKDEI SSDTAIHIPQ DGFTEECTSD EGWQAAVPKG RSTGSRRTGA GTRRPNLAKI NTSSLNSENG RYKGRGISNF SSPRVSPSEA AVSIGSRPLA KKLAKSSSFN SKAVSTAVSS NTGENSFNLN SKPASPAIAT AAAKVIPSTT PSASQTVRKS LSYKEVAIAA PGTLAKASSD VHTEEKDTGD QGASPESSNS KSPKEINGHP SGEKDGAIEV SPQDDTSQVS KSPDGGKPEQ TDVLIGSNQP DTVHKKSSDP AETSVAKDID LPAPVISSGT QTEADTPNDE APTAIEANDS SSNDDERDSG ADTPEQLSSG GENEKSSLSE SEKNDTPREG AKETTSKLSA AAAPFNPSSV PAFGSMAVPG FREHGGLLPS PANVPPMLSI PLRKHPHQSA TARVPYGPRL AGGYNRSGHR GLRKKPVLTS GEAPTETNTS GPRIMNPNAP EFVPGQSRSP NGHPASPNGP LASPGGIPSS PQDLLSSPDS TLESPVTASP QVSECSQISP EGDVEGVGVK QNMDDTNHPE SKDGEVEPEQ TKAPEGTEEG AAVKDAAEEL IAAEQPKSWA DYSDGEVEVV EVAS 4.51323 -0.257899 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3306 3306 3306 3306 3143 1952 1570 1071 607 397 209 116 64 22 9 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3285 3285 3285 3285 3122 1930 1513 977 524 291 130 41 1 0 0 1 2 3 4 2071 1111 123 4 0 0 1 2 3 4 5 6 7 683 2414 194 15 2 0 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2567 (charge 2) 1403.64 2 155.082 161.334 171.113 173.092 175.119 181.096 183.075 185.091 187.071 199.071 199.108 201.087 213.087 216.097 241.082 256.094 258.108 274.103 284.172 299.135 329.193 345.14 366.494 380.001 484.73 493.245 530.259 631.316 642.457 654.273 732.361 861.41 962.461 986.432 1016.48 1059.51 1061.49 1128.57 1131.5 9 5 23 7 10 8 5 7 25 8 23 52 7 8 6 9 20 85 9 9 10 11 5 6 6 5 10 12 7 6 36 39 53 7 7 100 8 6 7 GRMZM2G353213_P01 NM_001157997 translocon Tic40 (LOC100285102), mRNA seq=translation; coord=10:117993529..118000841:-1; parent_transcript=GRMZM2G353213_T01; parent_gene=GRMZM2G353213 MQQAFKSMMT QSAPNSFGSN SPFPFSMPPQ ASPTAPSTYP YLEPKKDTSP HVSTVDVSAN EVEATGTSKE VDVTETPKPS KKFAFVDVSP EELQQKNLQS SPETVDVKHD STYSESKEDT EEQVPTISTN TESKEDTEEK VPTNGASFKL NEGAAHGPTE SNNSASMLSV ETIEKMMEDP AVQKMVYPYL PEEMRNPNSF KWMLQNPMYR QQLQDMLNNM GATPDQWDNR MLDHLKNFDL SSPEVRQQFA QVGMTPEEVV SKIMANPDVA VAFQNPKIQT AIMDCSQNPL NIVKYQNDKE VMDVFMKISQ IFPQING GRMZM2G353213_P02 NM_001157997 translocon Tic40 (LOC100285102), mRNA seq=translation; coord=10:117993529..118000841:-1; parent_transcript=GRMZM2G353213_T02; parent_gene=GRMZM2G353213 MESLILASSC SASPRLPLLS SAARFRGLPV SVPPPSSASI SGAARKGPMR PRLFVAAAAA PRGSGNVFEG LRAKGFASMS SSTGNENMST GTGTLPPMPP TSSYIGSPVF WIGVGVALSV AFTTVSSMLK RYAMQQAFKS MMTQSAPNSF GSNSPFPFSM PPQASPTAPS TYPYLEPKKD TSPHVSTVDV SANEVEATGT SKEVDVTETP KPSKKFAFVD VSPEELQQKN LQSSPETVDV KHDSTYSESK EDTEEQVPTI STNTESKEDT EEKVPTNGAS FKLNEGAAHG PTESNNSASM LSVETIEKMM EDPAVQKMVY PYLPEEMRNP NSFKWMLQNP MYRQQLQDML NNMGATPDQW DNRMLDHLKN FDLSSPEVRQ QFAQVGMTPE EVVSKIMANP DVAVAFQNPK IQTAIMDCSQ NPLNIVKYQN DKEVMDVFMK ISQIFPQING AC204045.3_FGP005 seq=translation; coord=10:24601518..24602602:-1; parent_transcript=AC204045.3_FGT005; parent_gene=AC204045.3_FG005 MEQAFKSMMT QAPPNSFGSN SSFPFGMPQQ AYPTAPSSFS YLELKKDTSP QVSTVDVSAT EVDAAGTSKE VDVTETPKPS KKFAFVDVSP EDLRQKDLQS SLEMVDVKHD STESETKEDT EEKAPTNGVT FKLNEDAARG PTESSQSGPM LSVETIEKMM EDPAVQKMVY P 5.25933 -0.300533 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 7403 7403 7403 7329 7016 6755 6373 5782 4333 3323 1947 1144 524 178 74 30 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7413 7413 7413 7339 7026 6760 6338 5598 3915 2743 1143 373 77 2 1 0 0 1 2 3 4 5 6 7 2039 3141 1633 509 86 8 4 0 0 1 2 3 4 5 6 7 1734 3457 1666 452 94 5 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2569 (charge 3) 1457.78 3 152.057 155.082 155.118 156.102 157.134 158.093 159.077 169.097 172.072 172.108 173.129 175.119 176.123 183.113 184.072 184.117 185.091 187.071 187.108 188.111 193.097 194.102 197.103 199.108 201.123 203.103 211.107 213.086 215.101 221.092 226.155 227.102 229.093 231.098 233.093 241.094 244.165 254.124 260.035 276.636 278.113 286.115 289.163 290.115 298.141 311.145 313.186 316.15 326.135 327.202 332.145 342.724 346.185 360.184 393.247 397.206 403.204 441.283 448.767 456.231 459.293 485.26 499.29 505.241 508.294 513.253 525.249 533.758 538.339 542.281 546.769 557.827 562.266 566.27 570.277 575.28 584.288 587.389 590.777 597.263 599.302 601.307 615.34 619.287 627.297 647.798 657.313 666.432 684.441 719.357 737.336 762.366 785.489 794.356 804.369 869.476 914.531 1015.58 1104.49 1120.48 16 5 6 5 4 19 8 8 12 6 6 49 4 100 9 9 9 4 66 5 25 4 4 11 52 27 21 7 15 19 49 8 7 35 4 5 13 6 6 4 4 5 4 3 10 4 20 8 13 4 9 5 4 4 10 5 17 7 5 5 41 5 12 10 16 5 4 7 10 8 8 4 10 5 6 37 5 6 9 7 25 6 5 16 33 30 4 6 39 6 5 5 19 10 5 5 6 11 5 4 GRMZM2G044132_P01 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53846005:1; parent_transcript=GRMZM2G044132_T01; parent_gene=GRMZM2G044132 GRMZM2G044132_P02 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53845943:1; parent_transcript=GRMZM2G044132_T02; parent_gene=GRMZM2G044132 4.83413 -0.333388 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1518 1518 1518 1514 1399 1299 1143 972 753 535 251 75 19 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1528 1528 1528 1524 1409 1302 1143 961 719 487 182 36 3 1 0 0 1 2 3 4 5 659 612 212 41 4 0 0 1 2 3 4 5 6 378 721 380 40 3 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2574 (charge 3) 1513.61 3 155.081 156.077 157.097 158.092 159.077 164.118 166.061 167.055 168.056 169.097 170.092 171.076 171.113 173.071 173.092 173.129 175.119 181.06 181.109 183.113 183.149 184.152 186.088 187.071 187.108 192.077 192.113 193.097 194.129 195.113 197.128 198.088 199.071 199.108 199.181 201.123 204.135 209.105 211.144 213.087 216.098 226.155 229.118 230.12 235.119 237.135 240.097 244.166 254.162 267.109 272.172 278.082 299.061 301.059 313.115 318.194 320.136 327.13 330.191 338.146 345.977 359.028 361.025 364.161 369.223 383.217 388.194 400.986 406.204 409.222 416.037 418.995 431.743 437.218 440.192 458.204 481.297 498.324 499.324 552.248 555.212 569.268 573.226 576.297 623.342 635.378 636.384 647.351 649.355 692.37 732.389 734.387 764.417 812.358 844.459 861.48 862.482 864.483 1071.61 1072.63 4 6 4 12 14 7 12 72 14 11 4 6 7 5 7 4 65 7 27 13 58 17 5 17 4 20 4 5 5 12 5 4 4 23 6 40 4 42 16 5 13 35 27 6 14 6 11 29 27 6 19 7 60 37 5 14 14 4 10 10 18 23 4 15 16 4 5 11 52 19 12 100 26 11 4 4 7 62 26 6 13 35 6 4 7 15 6 6 4 14 5 10 4 6 5 39 38 4 16 24 GRMZM2G423137_P01 NP_001145083 hypothetical protein LOC100278290 seq=translation; coord=4:238355940..238357484:-1; parent_transcript=GRMZM2G423137_T01; parent_gene=GRMZM2G423137 MAAPLTAVRA RLLLLPVTCT AAGTTGRPAP PSKSSRPRLL PPGTTRCRCS RPPMEAVAPV SAAAVAALLL LPADAALAVG GELGILEGRS FALLHPLIMG GLFAYTLWAG YLGWQWRRVR TVQDEINALK KQLKPAAAAT PAAVGAGADS SSTTTPPPAA ASKSPSPAEA RIEELTDERK ALLKGSFRDR HFNAGSLLLG LGVLESVGGA LNTWFRTGKL FPGPHLFAGA AITVLWAAAA ALVPAMQKGD ETARSLHIAL NAVNVLLFVW QIPTGLEIVG KVFEFTTWP 5.35038 -0.368992 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 5848 5848 5848 5816 2818 2298 793 304 162 44 22 11 2 1 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5846 5846 5846 5814 2816 2280 777 262 140 36 18 2 1 1 0 0 1 2 3 4538 1291 20 0 0 1 2 3 4 5 6 891 4892 65 0 0 1 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2576 (charge 2) 1616.78 2 152.057 168.007 171.077 175.119 185.092 195.113 203.066 212.169 216.099 226.082 240.135 244.095 278.493 300.169 305.18 313.619 315.128 356.159 425.17 544.312 641.367 738.416 839.46 875.912 5 3 6 5 3 4 4 3 4 4 6 4 4 4 5 4 7 5 6 7 31 100 7 7 GRMZM5G813217_P01 NP_001146412 hypothetical protein LOC100279992 seq=translation; coord=7:129966857..129971449:-1; parent_transcript=GRMZM5G813217_T01; parent_gene=GRMZM5G813217 MAPALSRTLG PSSVAALRPS PSCRGLLRAA LAPQGRGASA RCAVGVRWEA ARRRRMAGVR CDAAVAEKPA GEEETAGEKY EYQAEVTRLM DLIVHSLYSH KEVFLRELVS NASDALDKLR FLSVTDPSVL ADGGELEIRI KPDLEAGTIT ITDTGIGMTK DELKDCLGTI AQSGTSKFLK ALKENKDLGA DNGLIGQFGV GFYSAFLVAE RVVVSTKSPK ADKQYVWEAE ADSSSYVIKE ENDPEKMLSR GTEITLYLRD DDKYEFADPT RIQGLVKNYS QFVSFPIYTW QEKSRTVEVE EEEESKGEEA TEESKSEEAT EGEKQKKKKT ITEKYWDWEL ANETKPIWMR NPKEVEKTEY NEFYKKTFNE FLDPLAYTHF TTEGEVEFRS VLYVPGMAPL SNEEIMNPKT KNIRLYVKRV FISDDFDGEL FPRYLSFVKG VVDSNDLPLN VSREILQESR IVRIMRKRLV RKTFDMIQEI AEKDGKEDYN KFWESFGKFM KLGCIEDTGN HKRLAPLLRF YSSKNETDLI SLDQYVENMP ENQKAIYYIA TDSLQSAKTA PFLEKLVQKD IEVLYLIEPI DEVAIQNLQT YKEKKFVDIS KEDLELGDED EDKEKESKQE YTLLCDWIKQ QLGDKVAKVQ ISKRLSSSPC VLVSGKFGWS ANMERLMKAQ TLGDTSSLEF MRGRRIFEIN PDHPIIKDLN AACKNEPEST EAKRAAELLY EAALISSGYT VSAANPRACC WPIYDCEYDV IVHLCYPA GRMZM5G813217_P02 NP_001146412 hypothetical protein LOC100279992 seq=translation; coord=7:129966717..129971449:-1; parent_transcript=GRMZM5G813217_T02; parent_gene=GRMZM5G813217 MAPALSRTLG PSSVAALRPS PSCRGLLRAA LAPQGRGASA RCAVGVRWEA ARRRRMAGVR CDAAVAEKPA GEEETAGEKY EYQAEVTRLM DLIVHSLYSH KEVFLRELVS NASDALDKLR FLSVTDPSVL ADGGELEIRI KPDLEAGTIT ITDTGIGMTK DELKDCLGTI AQSGTSKFLK ALKENKDLGA DNGLIGQFGV GFYSAFLVAE RVVVSTKSPK ADKQYVWEAE ADSSSYVIKE ENDPEKMLSR GTEITLYLRD DDKYEFADPT RIQGLVKNYS QFVSFPIYTW QEKSRTVEVE EEEESKGEEA TEESKSEEAT EGEKQKKKKT ITEKYWDWEL ANETKPIWMR NPKEVEKTEY NEFYKKTFNE FLDPLAYTHF TTEGEVEFRS VLYVPGMAPL SNEEIMNPKT KNIRLYVKRV FISDDFDGEL FPRYLSFVKG VVDSNDLPLN VSREILQESR INYA 7.76038 -0.360948 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 11334 11334 11334 11110 10755 10262 8744 7334 5332 3710 2350 1438 667 345 156 46 15 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11345 11345 11345 11121 10766 10243 8660 6923 4440 2407 1153 326 102 44 1 0 0 1 2 3 4 5 6 7 3696 4612 2045 839 135 14 3 2 0 1 2 3 4 5 6 7 1650 5308 2932 1123 255 67 8 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2578 (charge 3) 1686.82 3 155.082 155.118 159.076 167.081 169.097 169.134 171.113 173.092 175.119 178.086 179.091 181.06 185.093 187.071 187.109 195.076 195.113 197.129 198.088 199.072 199.108 199.181 201.125 204.134 209.091 213.088 216.098 219.116 221.103 223.108 226.155 230.113 234.144 238.118 240.134 242.15 244.165 249.098 251.102 256.128 258.145 267.109 269.124 276.155 300.155 307.669 310.193 327.168 328.114 333.177 341.145 345.213 347.217 352.164 355.159 359.155 361.15 369.18 380.16 402.403 404.214 418.714 427.717 438.237 443.238 460.252 467.708 487.241 493.247 505.261 509.23 516.285 518.285 533.239 559.319 584.288 596.32 614.336 615.337 623.301 634.304 653.34 684.336 696.283 723.329 726.373 743.376 763.34 822.41 855.414 909.44 941.458 949.411 959.468 1020.45 1022.45 1099.48 1117.5 1119.51 1231.91 20 14 6 4 14 8 40 8 16 21 5 6 4 7 5 7 6 24 4 3 27 23 10 3 4 8 23 8 8 45 55 6 19 6 68 16 16 14 8 5 24 8 36 6 4 6 4 7 6 24 4 69 14 4 13 6 15 4 4 4 17 8 7 4 5 5 4 4 4 29 5 7 6 5 12 6 8 99 100 17 17 5 5 6 5 19 8 8 6 18 5 5 16 24 19 6 8 95 18 5 GRMZM2G148744_P01 NP_001140409 hypothetical protein LOC100272465 seq=translation; coord=1:193791442..193794419:-1; parent_transcript=GRMZM2G148744_T01; parent_gene=GRMZM2G148744 MVKYSQEPGN PTKSAKAMGR DLRVHFKNTR ETAFALRKLS LTKAKRYLED VIAHKQAIPF RRYCGGVGRT AQAKSRHSNG QGRWPVKSAR FILDLLKNAE SNADVKGLDV DNLYVSHIQV NQAQKQRRRT YRAHGRINPY MSSPCHIELI LSEKEEPVKK EADNIVAARK Q GRMZM2G702426_P01 O48557 60S ribosomal protein L17 seq=translation; coord=4:44061937..44064386:-1; parent_transcript=GRMZM2G702426_T01; parent_gene=GRMZM2G702426 MVKYSQEPGN PTKSAKAMGR DLRVHFKNTR ETAFALRKLP LTKAKRYLED VIAHKQAIPF RRYCGGVGRT AQAKSRHSNG QGRWPVKSAR FILDLLKNAE SNADVKGLDV DNLYVSHIQV NQAQKQRRRT YRAHGRINPY MSSPCHIELI LSEKEEPVKK EADNIVAARK Q 4.92773 -0.266364 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 4647 4647 4561 3533 3099 2297 1614 1127 817 381 193 135 63 36 19 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4618 4618 4532 3496 2971 2025 1255 840 566 137 41 1 0 0 1 0 0 1 2 3 4 5 2764 1602 259 26 1 0 0 1 2 3 4 5 6 7 711 3017 799 84 37 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2585 (charge 2) 1120.53 2 153.066 155.082 164.071 167.082 170.093 171.076 171.113 172.072 172.109 175.087 175.119 178.086 179.09 181.061 181.097 185.092 188.07 193.097 195.076 198.087 199.072 199.108 199.181 205.098 209.093 212.103 216.098 223.108 226.083 230.114 233.092 238.083 241.082 244.166 248.161 251.102 252.106 258.109 269.125 292.128 295.141 307.169 310.104 327.203 331.16 335.135 345.213 349.152 352.161 355.125 361.15 366.178 380.156 398.207 426.715 432.189 442.23 450.201 459.255 467.227 481.242 485.236 491.187 499.251 508.211 516.279 527.246 578.293 596.307 597.306 613.331 615.337 706.351 724.362 742.376 853.409 870.422 957.462 1 10 1 2 2 1 9 3 3 3 1 23 3 8 3 1 2 1 7 5 4 13 1 4 3 9 27 49 3 12 8 2 12 2 14 15 3 14 44 1 1 22 4 12 1 5 78 2 3 2 14 5 6 3 6 2 6 4 9 5 1 4 1 2 6 13 2 1 9 3 100 7 1 14 7 8 1 6 GRMZM2G067789_P01 seq=translation; coord=5:45333604..45337777:1; parent_transcript=GRMZM2G067789_T01; parent_gene=GRMZM2G067789 MASHPPPAEP SSKSNKGQSE HEEIHVSSGG VLAYTDDDDC ESRRPLLLRT PASAECYSVS AAVFPFLFPA LGGLLYGYDI GATSGATISL KSSTFSGTTW YNLSSVQTGL VVSGSLYGAL IGSVLAYTIA DFLGRRKELI LASISYFIGA FLTAVAPNFT IMVVGRFLYG IGIGLAMHAA PMYIAETAPS QIRGMLISLK EFFIVLGMLL GYIAGNLYVE VVSGWRYMYA SSTPLCLIMG VGMCWLPSSP RWLLLCAIQG KGNLPETKEN ATRCLCRLRG QASPDLVSEQ IDLILEELSY IDQEKQASFG EIFQGKCLKA MIIGCGLVFF QQVTGQPSVL YYAATIFQSA GFSGASDATR VSILLGLLKL IMTGVAVLVV DRLGRRPLLI GGVSGITVAL FLLSSYYTLL KDASYVAVIA LLLYVGCYQL SFGPIGWLMI SEVFPLRLRG RGLGVAVLVN FASNALVTFA FSPLEDLIGT GALFSGFGVI AVASLAFIFW IVPETKGLTL EEIEASL 6.68256 -0.342695 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5926 5926 5926 5926 5907 5570 5402 4950 3371 2115 1215 694 320 165 46 16 7 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5922 5922 5922 5922 5903 5566 5390 4912 3127 1828 825 290 51 6 1 0 0 1 2 3 4 5 3086 2403 407 32 2 0 0 1 2 3 4 5 6 7 1092 3965 753 112 4 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2586 (charge 2) 1246.61 2 152.057 155.081 157.097 159.077 160.853 167.056 167.081 167.094 167.118 169.097 169.133 170.102 171.077 173.092 173.128 175.119 179.093 181.061 183.076 185.092 185.165 186.089 186.123 187.071 195.089 195.113 197.104 197.128 198.124 199.108 199.181 201.087 209.091 214.118 216.099 218.151 226.155 227.103 234.145 239.095 241.081 244.166 248.383 254.113 259.093 272.125 285.157 292.141 298.14 310.151 313.114 320.135 338.146 343.234 356.145 363.205 367.196 395.194 406.714 418.23 427.182 455.243 464.25 474.18 476.24 492.245 548.281 573.288 598.507 647.35 684.322 715.361 717.348 807.417 812.415 829.376 831.36 839.944 909.466 29 23 12 10 6 12 13 7 10 54 10 7 7 12 12 42 22 7 11 12 8 6 7 10 10 29 68 5 7 29 12 37 8 58 9 11 41 39 47 42 20 37 6 8 8 11 9 36 26 84 6 39 82 11 30 9 10 56 23 82 14 10 8 9 6 76 13 56 7 10 21 57 14 8 89 10 9 7 100 GRMZM5G841727_P01 NP_001169429 hypothetical protein LOC100383299 seq=translation; coord=2:204033977..204034756:1; parent_transcript=GRMZM5G841727_T01; parent_gene=GRMZM5G841727 MSFSPERVRV RGRSPAFTAL AANFESSSNR NLSTPPPVVK KLYPKSVTPD PSNTASKSPA IAALAGSLDH PSQTPALEFM KGGSESEKPK QEGDGKEGVD TVATRVESLT INEDVKENEP EDDEGLPIYL YERLKTTAAD PVTEIDVTRR ETYLSSTEFK EKFGINCSST FLA GRMZM5G841727_P02 NP_001169429 hypothetical protein LOC100383299 seq=translation; coord=2:204033977..204035117:1; parent_transcript=GRMZM5G841727_T02; parent_gene=GRMZM5G841727 MSFSPERVRV RGRSPAFTAL AANFESSSNR NLSTPPPVVK KLYPKSVTPD PSNTASKSPA IAALAGSLDH PSQTPALEFM KGGSESEKPK QEGDGKEGVD TVATRVESLT INEDVKENEP EDDEGLPIYL YERLKTTAAD PVTEIDVTRR ETYLSSTEFK EKFGMTKEAF SKLPKWKQNR LKIALQLF 3.6886 -0.210777 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 5768 5768 4615 4331 3211 2628 1694 1198 777 519 306 211 100 48 24 8 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5794 5794 4641 4297 3058 2297 1358 869 557 268 154 59 28 17 1 0 0 1 2 3 4 3023 2323 409 40 0 0 1 2 3 4 5 6 7 995 3706 853 198 24 9 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2590 (charge 2) 1203.58 2 152.057 153.102 155.082 157.097 159.078 159.113 160.079 160.116 167.082 169.097 171.022 171.076 171.113 173.092 175.107 175.119 180.061 181.098 185.092 187.072 187.108 188.111 189.088 198.123 199.108 199.181 201.123 203.103 204.612 213.087 216.045 218.15 226.154 227.103 231.098 234.145 236.104 239.096 243.134 244.129 250.12 252.099 254.113 270.145 272.125 284.123 288.153 296.124 299.137 305.183 315.203 332.15 341.143 352.683 355.16 368.193 372.225 373.225 382.173 397.173 400.185 406.23 419.182 443.262 453.208 458.721 471.221 478.244 491.255 509.254 514.299 520.27 585.337 607.307 686.386 704.358 706.362 712.358 815.431 819.38 916.449 918.453 1017.49 1034.17 1104.56 1135.14 2 1 2 3 2 100 1 7 2 7 1 6 7 6 2 5 1 5 34 2 68 7 2 2 12 8 2 5 1 31 2 2 14 5 6 7 1 2 2 6 1 2 2 8 1 2 9 3 6 5 19 2 2 11 2 2 26 3 2 2 3 7 1 14 5 9 7 2 3 1 10 2 9 6 18 60 3 2 10 8 14 2 6 2 2 2 AC217050.4_FGP006 seq=translation; coord=1:214899491..214901246:-1; parent_transcript=AC217050.4_FGT006; parent_gene=AC217050.4_FG006 MAREENVYMA KLAEQAERYE EMVEYMEKVA KTVDVEELTV EERNLLSVAY KNVIGARRAS WRIVSSIEQK EESRKNEEHV NLIKEYRAKI EAELSNICDG ILKLLDSHLV PSSTAAESKV FYLKMKGDYH RYLAEFKTGP ERKESAESTM MAYKAAQDIA LAELAPTHPI RLGLALNFSV FYYEILNSPD KACNLAKQAF DEAISQLDTL GEESYKDSTL IMQLLRDNLT LWTSDLTEDG ADEGKEAPKG EAGDGQ 4.91676 -0.31721 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1107 1107 1107 1107 1107 983 917 614 517 322 117 63 16 10 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1107 1107 1107 1107 1107 983 912 604 453 284 61 29 2 1 0 0 1 2 3 4 652 408 47 2 0 0 1 2 3 4 5 6 7 309 673 114 10 1 0 2 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2594 (charge 2) 1279.52 2 152.057 155.081 159.076 170.549 171.076 172.071 173.092 173.128 175.119 181.061 183.113 187.071 189.088 199.072 199.108 201.087 217.082 224.103 226.154 234.144 242.115 244.166 252.1 254.115 270.108 288.12 295.08 310.176 327.13 366.115 381.211 419.236 421.338 432.187 450.169 464.258 515.533 526.196 528.247 573.301 594.185 611.286 615.344 641.314 645.289 648.336 675.296 709.343 712.332 713.344 722.313 735.37 775.362 799.371 803.397 835.912 846.397 863.359 865.39 874.426 910.397 928.407 999.443 1046.48 63 17 34 8 59 13 37 17 33 30 11 8 62 100 17 50 35 59 47 68 9 34 8 9 48 17 9 45 10 10 16 14 8 11 9 8 9 11 14 9 12 14 12 11 14 31 10 10 32 11 10 67 32 75 36 10 10 32 11 13 11 14 16 33 GRMZM2G157329_P01 NP_001145994 hypothetical protein LOC100279524 seq=translation; coord=1:41535916..41540223:-1; parent_transcript=GRMZM2G157329_T01; parent_gene=GRMZM2G157329 MAETLDMTLD DIIKNNKKSN PSSGGARRSR GGSAPGGGSG GVGPTRRSFK RAGNRQAPYQ PPKAPDAAWQ HDMYPAVAAG GGGGGRVSAL ETGTKLYISN LDFGVSNDDI KELFSELGDL KRFSIIYDRS GRSKGTAEVV FARRSDAVAA VKKYNNVQLD GKPMKIEIVG TNTPTASAAL PVSNGGHARN AVRSAPRGAA PAGVPQRRPH QRGGRRSGGS GGGRRGKERS KPKSAEELDA DLEKYHADAM QTN GRMZM2G157329_P02 NP_001145994 hypothetical protein LOC100279524 seq=translation; coord=1:41535740..41539719:-1; parent_transcript=GRMZM2G157329_T02; parent_gene=GRMZM2G157329 MAETLDMTLD DIIKNNKKSN PSSGGARRSR GGSAPGGGSG GVGPTRRSFK RAGNRQAPYQ PPKAPDAAWQ HDMYPAVAAG GGGGGRVSAL ETGTKLYISN LDFGVSNDDI KELFSELGDL KRFSIIYDRS GRSKGTAEVV FARRSDAVAA VKKYNNVQLD GKPMKIEIVG TNTPTASAAL PVSNGGHARN AVRSAPRGAA PAGVPQRRPH QRGGRRSGGS GGGRRGKERS KPKSAEELDA DLEKYHADAM QTN 5.7343 -0.294067 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 4927 4927 4927 4767 4514 4246 3779 2276 1833 830 348 157 73 48 23 15 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 4929 4929 4929 4769 4516 4230 3726 2151 1368 468 152 42 25 1 0 0 1 0 0 1 2 3 4 5 3110 1628 183 13 1 0 0 1 2 3 4 5 6 7 806 3282 755 74 14 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2597 (charge 2) 1270.61 2 152.057 154.05 155.081 157.061 157.097 157.109 158.093 159.077 169.097 171.076 173.056 174.087 175.119 184.072 186.125 195.089 195.112 199.107 202.082 210.087 212.103 217.082 226.155 230.077 235.074 244.165 255.109 258.109 273.12 286.103 299.658 338.146 343.126 356.156 390.208 413.214 416.14 428.202 430.24 444.223 461.245 467.206 469.278 478.236 499.753 540.415 557.231 567.301 569.274 576.274 598.306 627.803 637.323 643.351 669.339 679.338 696.365 703.345 713.857 725.388 730.38 740.379 759.379 787.403 830.392 844.419 855.406 865.41 882.427 901.449 981.483 998.501 1000.51 18 12 24 3 3 5 11 4 7 18 6 6 34 64 5 4 4 18 31 14 19 13 29 11 3 17 21 5 4 4 4 4 6 5 16 7 4 4 21 4 18 3 7 5 52 11 4 6 5 6 20 14 15 14 7 5 17 12 4 4 12 7 4 18 4 26 13 4 12 68 4 100 20 conta|P13645|K1CJ_HUMAN KERATIN, TYPE I CYTOSKELETAL 10 (CYTOKERATIN 10) (K10) (CK 10) MSVRYSSSKH YSSSRSGGGG GGGGCGGGGG VSSLRISSSK GSLGGGFSSG GFSGGSFSRG SSGGGCFGGS SGGYGGLGGF GGGSFRGSYG SSSFGGSYGG SFGGGSFGGG SFGGGSFGGG GFGGGGFGGG FGGGFGGDGG LLSGNEKVTM QNLNDRLASY LDKVRALEES NYELEGKIKE WYEKHGNSHQ GEPRDYSKYY KTIDDLKNQI LNLTTDNANI LLQIDNARLA ADDFRLKYEN EVALRQSVEA DINGLRRVLD ELTLTKADLE MQIESLTEEL AYLKKNHEEE MKDLRNVSTG DVNVEMNAAP GVDLTQLLNN MRSQYEQLAE QNRKDAEAWF NEKSKELTTE IDNNIEQISS YKSEITELRR NVQALEIELQ SQLALKQSLE ASLAETEGRY CVQLSQIQAQ ISALEEQLQQ IRAETECQNT EYQQLLDIKI RLENEIQTYR SLLEGEGSSG GGGRGGGSFG GGYGGGSSGG GSSGGGYGGG HGGSSGGGYG GGSSGGGSSG GGYGGGSSSG GHGGGSSSGG HGGSSSGGYG GGSSGGGGGG YGGGSSGGGS SSGGGYGGGS SSGGHKSSSS GSVGESSSKG PRY 6.64344 -0.32407 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 6709 6709 6643 6367 6007 5508 4759 4176 3022 2286 1353 737 352 140 72 28 13 4 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 6707 6707 6641 6365 5997 5394 4568 3873 2326 1241 501 76 1 0 0 1 2 3 4 5 6 7 2352 2867 1175 276 34 6 4 0 0 1 2 3 4 5 6 7 1135 2711 1808 777 236 32 9 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2609 (charge 3) 1428.69 3 152.057 153.066 155.082 156.076 157.098 157.109 157.133 158.092 159.077 166.061 167.055 167.081 169.097 169.133 171.077 171.113 173.092 175.119 176.121 181.097 185.092 185.165 187.071 189.087 195.089 195.112 199.071 200.102 201.123 207.087 209.092 213.087 218.15 221.103 223.063 226.154 227.102 228.632 232.14 235.082 239.094 241.13 244.166 246.155 249.098 252.108 255.145 258.157 267.109 269.105 272.171 276.167 284.171 288.203 295.103 299.06 304.161 315.202 331.685 344.192 355.202 359.202 364.125 378.142 381.151 392.718 396.153 403.231 414.197 426.239 437.242 450.248 456.258 457.257 462.254 465.748 466.745 475.227 481.583 483.293 487.261 496.604 525.193 527.289 531.326 546.295 567.296 589.27 593.782 611.26 628.341 662.359 683.388 687.379 729.385 784.428 791.404 804.385 920.443 1049.48 3 3 12 3 4 6 2 15 3 3 12 7 14 3 3 5 6 57 2 3 10 8 3 6 3 2 3 15 6 3 3 3 2 2 3 11 13 9 2 13 13 8 6 5 5 13 11 5 9 13 9 3 2 100 2 11 7 2 2 3 5 3 3 2 3 9 2 17 2 6 21 3 38 7 2 7 6 3 3 2 7 17 3 8 13 3 6 3 3 7 6 11 16 11 2 2 7 10 8 7 GRMZM2G009443_P01 NP_001169540 hypothetical protein LOC100383416 seq=translation; coord=10:35583589..35590383:1; parent_transcript=GRMZM2G009443_T01; parent_gene=GRMZM2G009443 MAGTLLQSVA LGTPFGGRMR THCWRSHGTR RPASMLAVSL SRPVKMSAFV GLRSVHSFSV TPTVSNSRSA VASYRSSRQT RRSRFVTQAM FERFTEKAIK VIMLAQEEAR RLGHNFVGTE QILLGLIGEG TGIAAKVLKS MGINLKDARV EVEKIIGRGN GFVAVEIPFT PRAKRVLELS LEEARQLGHN YIGSEHLLLG LLREGEGVAA RVLESLGADP SNIRTQVIRM IGETTEAVGA GVGGGSSGNK MPTLEEYGTN LTKLAEEGKL DPVVGRQPQI ERVVQILGRR TKNNPCLIGE PGVGKTAIAE GLAQRISTGD VPETIEGKKV ITLDMGLLVA GTKYRGEFEE RLKKLMEEIK QSDEIILFID EVHTLIGAGA AEGAIDAANI LKPALARGEL QCIGATTLDE YRKHIEKDPA LERRFQPVKV PEPTVDETIE ILRGLRERYE IHHKLRYTDE ALIAAAKLSY QYISDRFLPD KAIDLIDEAG SRVRLQHAQV PEEARELDKE LKQVTKQKNE AVRSQDFEKA GELRDREMEL KAQITALIDK SKELSKAEEE SGETGPMVNE EDIQHIVSSW TGIPVEKVSS DESDKLLKME ETLHKRVIGQ DEAVVAISRS IRRARVGLKN PNRPIASFIF AGPTGVGKSE LAKALAAYYF GSEEAMIRLD MSEFMERHTV SKLIGSPPGY VGYTEGGQLT EAVRRRPYTV VLFDEIEKAH PDVFNMMLQI LEDGRLTDSK GRTVDFKNTL LIMTSNVGSS VIEKGGRKIG FDLDSDEKDS SYSRIKSLVI EEMKQYFRPE FLNRLDEMIV FRQLTKLEVK EIADIMLQEV FDRLKAKDIN LQVTEKFKER VVDEGYNPSY GARPLRRAIM RLLEDSLAEK MLAGEVKEGD SAIVDVDSEG KVVVLNGQGG IPELSTPAIT V GRMZM2G123922_P01 seq=translation; coord=10:111239151..111246665:-1; parent_transcript=GRMZM2G123922_T01; parent_gene=GRMZM2G123922 MEGALVQSAI VPAVYRSSSG RFRVRARART NATMVRNTPT RTLTLGGFQG LRQTNFLDTR SVIKRDFGSI VASQIARPRG SASRGVVRAM FERFTEKAIK VIMLAQEEAR RLGHNFVGTE QILLGLIGEG TGIAAKVMKS MGINLKDARV EVEKIIGRGS GFVAVEIPFT PRAKRVLELS LEEARQLGHN YIGSEHLLLG LLREGEGVAA RVLESLGADP NNIRTQVIRM VGESTEAVGA GVGGGSSGQK MPTLEEYGTN LTKLAEEGKL DPVVGRQDQI ERVTQILGRR TKNNPCLIGE PGVGKTAIAE GLAQRISNGD VPETIEGKKV ITLDMGLLVA GTKYRGEFEE RLKKLMEEIK QNEDIILFID EVHTLIGAGA AEGAIDAANI LKPALARGEL QCIGATTLDE YRKHIEKDPA LERRFQPVKV PEPTVDETIQ ILRGLRERYE LHHKLRYTDD ALIAAAQLSY QYISDRFLPD KAIDLIDEAG SRVRLRHAQL PDEAKELDKE LRQITKQKNE AVRGQDFEKA GELRDREMEL KAQITAIIDK SKEMIKAETE SGDVGPLVTE ADIQHIVSSW TGIPVEKVSS DESDRLLKME ETLHTRIIGQ DEAVKAISRA IRRARVGLKN PNRPIASFIF SGPTGVGKSE LAKALAAYYF GSEEAMIRLD MSEFMERHTV SKLIGSPPGY VGYTEGGQLT EAVRRRPYTV VLFDEIEKAH PDVFNMMLQI LEDGRLTDSK GRTVDFKNTL LIMTSNVGSS VIEKGGRKIG FDLDYDEKDT SYNRIKSLVT EELKQYFRPE FLNRLDEMIV FRQLTKLEVK EIADIMLKEV FDRLKAKEIN LQVTEKFRDR VVDEGYNPSY GARPLRRAIM RLLEDSLAEK MLAGEVKEGD SAIVDVDSDG KVIVLNGGSG VAEPLEPALS T GRMZM2G001084_P01 C4J9D9 Putative uncharacterized protein seq=translation; coord=2:63775789..63789530:1; parent_transcript=GRMZM2G001084_T01; parent_gene=GRMZM2G001084 MQAGMNHCTL LSSALDLGTS NPHALDPHTL DLGTSNLRGQ HPTIPTLWIW ERAISAHLCW FVLHPHAPNI LHQRTYLSPI SAPFHLTWKP KSPPQSAFIV DSYIRAIPSN METSMPTSIS VHRRVPPSSA HSVPSTLSTS IKTHDHCEGC RQIPHQTSTL VVCSTPITIA VGFNAFAGHN YVGSEHLLLG LLREGEGTDV RYDVQVIRMV GESTEAVGAG VGGGSSGQKM PTLEEYGTNL TKLAEESFGR QDQIERVTQI LGRRTKKQPL PNWRAWCWKR LLLLRGLLSV LPMGMFLKQF EGKKVITLDM GLLVAGTKYR GEFEERLKKL MEEIKQNEDI ILFIDEVHTL IGAGAAEGAI DAANILKPAL ARGELQCIGA TTLDEYRKHI EKDPALERRF QPVKVPEPTV DETIQILRGL RERYELHHKL RYTDDALIAA AQLSYQYISD RFLPDKAIDL IDEAGSRVRL RHAQLPDEAK ELDKELRQIT KQKNEAVRGQ DFEKAGELRD REMELKAQIT AIIDKSKEMI KAETESGEVG PLVTEADIQH IVSSWTGIPV EKVSSDESDR LLKMEETLHT RIIGQDEAVK AISRAIRRAR VGLKNPNRPI ASFIFSGPTG VGKSELAKAL AAYYFGSEEA MIRLDMSEFM ERHTVSKLIG SPPGYVGYTE GGQLTEAVRR RPYTVVLFDE IEKAHPDVFN MMLQILEDGR LTDSKGRTVD FKNTLLIMTS NVGSSVIEKG GRKIGFDLDY DEKDTSYNRI KSLVTEELKQ YFRPEFLNRL DEMIVFRQLT KLEVKEIADI MLKEVFDRLK AKDINLQVTE KFRDRVVDEG YNPSYGARPL RRAIMRLLED SLAEKMLAGE VKEGDSAIVD VDSDGKVIVL NGGSGVAEPL EPALST AC211513.3_FGP003 seq=translation; coord=1:80496139..80497440:-1; parent_transcript=AC211513.3_FGT003; parent_gene=AC211513.3_FG003 MGFLAFWSVS PVGSAAEQVT WTGLLVAGTK YRGEFECTGA TTLDGYRKHI EKDPALERRF QPVKVPEPTV DETIQILRGL HERYELHHKL RYTDDALIAA AQLSYQYISD RFLPDKAIDL IDEAGSRVRL RHAQLPDEAK ELDKELRQIS KQKNKAVRGQ DFEKNL GRMZM5G896496_P04 NP_001136503 hypothetical protein LOC100216618 seq=translation; coord=3:211872506..211878967:1; parent_transcript=GRMZM5G896496_T04; parent_gene=GRMZM5G896496 MPLVCCQASY LQEINGLRPR GLFFLIMCIG ATTLDEYRKH IEKDPALERR FQPVKVPEPT MDETIQILRG LRERYELHHK LRYTDDALIA AAQLSYQYIS DRFLPDKAID LIDEAGSRVR LRHAQLPDEA KELDKELRQI SKQKNEAVRG QDFEKVYCCL AQR GRMZM5G896496_P05 NP_001136503 hypothetical protein LOC100216618 seq=translation; coord=3:211872506..211878967:1; parent_transcript=GRMZM5G896496_T05; parent_gene=GRMZM5G896496 MPLVCCQASY LQEINGLRPR GLFFLIMCIG ATTLDEYRKH IEKDPALERR FQPVKVPEPT MDETIQILRG LRERYELHHK LRYTDDALIA AAQLSYQYIS DRFLPDKAID LIDEAGSRVR LRHAQLPDEA KELDKELRQI SKQKNEAVRG QDFEKVYCCL AQR GRMZM5G896496_P06 NP_001136503 hypothetical protein LOC100216618 seq=translation; coord=3:211872506..211878967:1; parent_transcript=GRMZM5G896496_T06; parent_gene=GRMZM5G896496 MPLVCCQASY LQEINGLRPR GLFFLIMCIG ATTLDEYRKH IEKDPALERR FQPVKVPEPT MDETIQILRG LRERYELHHK LRYTDDALIA AAQLSYQYIS DRFLPDKAID LIDEAGSRVR LRHAQLPDEA KELDKELRQI SKQKNEAVRG QDFEKVYCCL AQR 6.84123 -0.333718 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 7863 7863 7863 7646 7353 6855 6288 5845 5185 3561 2702 1497 672 246 137 46 25 10 2 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7866 7866 7866 7638 7326 6746 6089 5527 4861 2956 1827 459 33 6 2 1 0 0 1 2 3 4 5 6 7 2505 3102 1699 496 55 8 25 0 0 1 2 3 4 5 6 7 1170 3445 2162 860 183 33 37 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2610 (charge 3) 1207.64 3 154.061 154.086 155.082 155.118 157.109 157.133 158.092 159.077 165.102 166.061 167.081 169.097 170.101 171.076 172.071 173.092 175.119 176.123 178.134 179 183.076 185.092 185.128 186.121 191 191.082 192.111 195.112 196.061 197.129 198.124 199.107 199.169 206.129 209.092 213.087 215.139 223.155 224.159 226.119 237.092 240.134 243.134 245.047 248.034 249.159 251.15 254.647 258.092 264.049 266.044 269.125 270.09 272.125 274.187 276.169 282.182 287.135 289.11 293.171 299.061 303.155 305.165 308.167 312.16 325.169 333.167 337.149 344.171 347.681 355.163 362.182 363.183 366.185 373.172 380.192 382.208 397.215 400.22 411.224 417.245 419.249 468.245 471.257 486.256 488.283 490.29 508.29 512.266 568.309 569.313 579.322 583.312 585.335 587.341 599.292 605.306 623.318 700.362 727.347 3 2 5 1 2 7 13 2 2 2 1 27 3 2 3 5 95 6 17 12 4 7 7 1 1 3 2 2 1 2 3 6 4 4 5 5 15 100 12 14 3 15 13 26 79 9 63 1 4 3 57 13 6 4 3 7 7 13 7 22 6 30 3 1 31 3 3 7 3 2 8 36 7 1 9 12 9 6 5 4 60 2 10 3 12 80 3 3 2 8 2 2 1 87 4 5 10 5 4 4 GRMZM2G158039_P01 seq=translation; coord=5:192003005..192008209:1; parent_transcript=GRMZM2G158039_T01; parent_gene=GRMZM2G158039 MTCLQLLFED AIDDRILAKE ELGAAADEFL LCLTMRQRAL TREYSRLTNL KRPSDLSGMT EADRAAEAER LREERLQKAR QLQDQGDMSG ARECEGLARI IDFDVKQGGR YLNCICYVDD IYTFDQTEEC GATVTRFAGL AGASLPTERR AAAMVAMAKR EQELEEIRAM TTEQMEEEVV DLRGELFLLR LKRSARQEFK NSEFSRMRKR IAPMLTVKRE REIEQGINKR LSRKLDRKWK QSIVVRPPPS LRGNKEE GRMZM2G028216_P01 Q9SWI6 50S ribosomal protein L29, chloroplastic Precursor (CL29) seq=translation; coord=4:180580017..180581711:-1; parent_transcript=GRMZM2G028216_T01; parent_gene=GRMZM2G028216 MATMSLAAAS PLASIPRGIA AQAPCAAFLS IRLGGATATR FAGLAVASQP AERRAAAMVA MAKREQELEE IRAMTTEQME EEVVDLKGEL FLLRLKRSAR QEFKNSEFSR MRKRIARMLT VKREREIEQG INKRLSRKLD RKWKQSIVVR PPPSLRGNKE E GRMZM5G811409_P01 seq=translation; coord=2:227538228..227538693:-1; parent_transcript=GRMZM5G811409_T01; parent_gene=GRMZM5G811409 QLVVPVDRQL KEQKAKTERE IEQGINKRLY RKLDTKWKQS IVVRPPPSLR ENKEKASRAC ARIGWFSCAV ALFGSYLRHH PCICRIVEM 6.95663 -0.339348 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 7960 7960 7945 7902 7488 7178 6728 6234 5600 4169 3120 1539 796 345 175 62 36 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 7950 7950 7935 7892 7472 7152 6656 6032 5172 3439 1965 381 1 0 0 1 2 3 4 5 6 7 2384 3254 1549 608 135 34 4 2 0 1 2 3 4 5 6 7 1386 3662 2023 673 199 17 2 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2611 (charge 3) 1371.73 3 153.102 155.081 157.108 158.092 166.061 167.056 171.113 172.072 175.119 176.123 181.097 184.072 186.088 193.097 197.128 198.123 199.108 209.09 215.139 226.119 227.102 232.634 235.118 239.094 241.639 244.166 247.611 250.645 254.149 269.124 286.151 288.983 290.986 294.186 299.061 303.214 313.194 327.177 343.179 349.702 359.15 365.185 369.187 371.24 380.157 383.203 387.198 397.182 398.172 400.23 405.217 415.193 417.257 418.26 421.552 428.225 440.56 446.569 452.246 482.738 495.248 500.283 503.295 510.266 514.256 528.278 530.34 531.344 532.93 546.288 548.289 550.296 556.293 565.255 570.336 574.337 576.315 582.288 587.363 593.249 611.311 620.31 629.328 637.809 639.31 652.326 657.32 659.331 674.35 675.349 681.369 685.358 691.349 698.397 715.42 809.428 814.401 825.374 842.395 844.45 7 8 5 12 5 8 6 11 100 8 2 7 2 12 6 5 12 8 5 24 11 3 6 10 15 11 10 5 9 16 19 5 6 8 7 19 5 6 6 14 6 7 4 2 6 11 19 12 7 25 6 47 71 17 4 5 23 2 7 8 9 24 6 17 6 45 15 5 4 3 8 5 4 5 7 8 5 5 62 6 5 5 21 4 9 4 44 6 10 2 3 5 4 20 15 8 6 5 16 5 GRMZM2G158147_P01 NP_001147427 bifunctional 3-phosphoadenosine 5-phosphosulfate synthetase 2 seq=translation; coord=2:112635028..112643280:1; parent_transcript=GRMZM2G158147_T01; parent_gene=GRMZM2G158147 MATTHLLTPP RVHHPSPSAS SSVARVRATA SLAHPLHLCR LRLAAPRSRS PSPRHGRRAM SVRSSLIDPD GGALVELVAP PDRLPALRAE AEALPRVRLA PVDLQWAHVL AEGWASPLRG FMREHEYLQS LHFNCVRLPD GGLVNMSLPI VLAIGDADKE QIGGKPDVAL QGPDGGVVAI LRRVEIYPHN KEERIARTWG TTAPGLPYVD EAIASAGNWL IGGDLEVLEP IKYNDGLDHY RLSPRQLRKE FDKRGADAVF AFQLRNPVHN GHALLMNDTR RRLLEMGYKN PILLLHPLGG YTKADDVPLP VRMEQHSKVL EDGVLDPETT IVSIFPSPMH YAGPTEVQWH AKARINAGAN FYIVGRDPAG MGHPTEKRDL YNPDHGKKVL SMAPGLEKLN ILPFKVAAYD TVAKEMAFFD PSRSQDFLFI SGTKMRTYAK TGENPPDGFM CPGGWKVLVD YYNSLQAEEA TPVPV 5.65598 -0.275901 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 11758 11758 11556 11358 10709 10140 9313 8454 5968 4382 2519 1466 696 348 221 69 44 28 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11745 11745 11543 11343 10669 10031 9143 8083 4921 3243 1336 335 38 2 1 1 0 0 1 2 3 4 5 6 7 3894 4801 2267 654 122 20 0 2 0 1 2 3 4 5 6 7 2030 5621 2899 1024 171 13 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2612 (charge 3) 1569.81 3 150.067 152.057 157.108 158.093 159.077 166.061 167.056 167.093 169.053 169.097 169.134 171.113 175.119 176.123 185.092 195.088 195.114 197.129 199.108 204.076 207.124 209.091 211.119 213.088 222.086 226.155 227.102 229.117 231.098 235.119 239.114 244.166 252.109 257.139 262.152 269.125 286.148 287.135 299.063 301.06 302.061 304.161 309.203 326.173 331.187 346.972 348.971 355.195 357.225 361.027 368.195 385.219 390.705 406.704 419.032 426.247 433.203 448.242 452.252 455.732 470.314 474.268 476.214 481.277 498.305 499.306 501.225 518.268 547.247 561.299 571.276 594.373 616.344 625.329 633.372 641.295 644.338 646.336 658.316 661.367 663.373 675.342 677.35 691.424 698.855 758.426 788.477 796.367 809.342 812.402 814.397 823.378 826.361 837.492 850.45 867.476 892.435 909.446 911.45 1005.58 3 2 3 5 2 12 10 15 7 5 3 2 49 2 3 27 2 3 9 5 9 3 6 2 12 24 9 2 2 12 54 10 2 3 2 5 8 6 9 29 15 100 52 2 2 3 7 2 5 2 2 38 2 12 3 6 9 7 3 6 13 5 2 6 58 17 2 7 35 18 3 11 6 2 36 2 6 2 17 89 7 49 2 5 2 5 2 2 54 20 2 2 2 2 2 5 5 12 2 2 GRMZM2G016457_P01 NP_001131573 hypothetical protein LOC100192917 seq=translation; coord=3:106385610..106413663:-1; parent_transcript=GRMZM2G016457_T01; parent_gene=GRMZM2G016457 MAYAAPPMAS SLTASHPPLS PSHLITHPHR CPARPNPTTG LLRLTPSRRR GRPPVAVRLA ISASSTSAPP PSADRSEAAS SLERYLSATV TGAVMGTGAA PPASAPPRAP PAMKGGRKQY SALGAVTLEK AKLDLSQRRK NIMPELATGG GGGDIGKRIG HGGGDGGDDD GDDDDYFDDF DEGEEEGGLF RRRIVVQELF NREFVEAVLQ EWYKTMSDLP TGLRQACEMG LVSSAQMVRY LSIFARPTNA RSFSRALPGW LSRGLVGRTL ADPSFPHKMS LEFIATIASS IWCEMNIRKE RFKQEWDLVI VNALTAACCN LMVLGLLAPC RSYASTSRFD FQNAIEKLPN NIFEKSYPLR EFDLAKRISA FFYKAAELSL VGFVAGSVQG GMSIVLSARK ERRLSVTIPS ISTNALGYGA FLGLYANLRY QLLCGVDQYM VKRFDVLGVA IFFSTAARLM NIQIGEASRR TWLGEEADPQ YSDRLLRAYK RPVEVDADQS RWFISKDAIV SGLGLLGIKQ GGPEATFSKS RRKRVIRKKV TSG 6.96293 -0.376375 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 7416 7416 7416 7308 7027 6771 5745 4833 3439 2037 1141 600 215 73 22 10 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7414 7414 7414 7306 7025 6750 5654 4528 2580 998 314 60 7 1 0 0 1 2 3 4 5 6 2502 3015 1429 403 64 5 0 0 1 2 3 4 5 6 7 1348 3236 2043 622 153 14 2 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2614 (charge 3) 1271.63 3 154.05 154.086 155.07 155.082 155.118 157.097 157.108 157.134 158.092 159.077 160.879 166.062 167.093 169.097 169.133 171.077 171.113 173.092 173.129 175.09 175.119 176.122 179.093 181.06 183.113 183.15 185.092 186.124 187.071 187.109 189.086 194.128 195.089 195.112 197.128 198.088 199.109 199.181 201.124 209.103 213.087 215.139 217.082 226.154 227.102 231.096 238.143 240.134 244.165 245.125 248.16 251.152 254.16 262.152 267.111 272.172 285.135 305.164 309.202 312.175 322.188 325.234 351.168 353.229 358.18 373.185 390.209 403.178 405.9 411.209 413.168 426.247 427.241 432.233 443.733 449.234 454.278 455.233 459.245 464.26 479.242 482.272 484.621 505.237 516.263 528.266 534.261 553.346 558.783 572.761 576.274 581.764 669.381 691.3 696.365 709.375 726.401 760.374 1044.25 1162.94 7 5 5 16 12 10 18 6 23 25 3 13 5 20 14 21 6 11 12 16 100 4 4 4 17 10 10 6 11 10 20 16 6 7 14 6 6 11 6 5 6 7 15 31 5 5 6 5 28 11 4 11 18 19 4 7 5 4 11 3 17 4 4 32 4 11 32 4 5 4 7 5 17 11 4 4 23 6 22 4 7 52 5 28 6 5 4 4 5 5 25 7 13 16 20 4 27 4 4 4 GRMZM5G821988_P01 seq=translation; coord=2:204696776..204699559:1; parent_transcript=GRMZM5G821988_T01; parent_gene=GRMZM5G821988 MPSPGTPVQA MHKAERKYVI GKVSDEEEAK QRQLKAILNK LTPQNFEKLF EQVKEVNIDS VATLTGVISQ IFDKALMEPT FCEMYANFCF HLAGALPDFS EDNEKITFKR LLLNKCQEEF ERGEREEAEA DKTEEEGEIK QTKEEREEKR IRARRRMLGN IRLIGELYKK RMLTERIMHE CIKKLFGNHD DPDEENIEAL CKLMSTIGDM IDHVKAKEHM DAYFSMMQIM STNQKLSSRV RFMLRDSIDL RRNKWQQRRK VEGPKKIEEV HRDAAQERHA QSSRLGRGPA VSSVPRRAHP MDYGPRGPSA SASSSSQQGS IRGMPPHSRG SQDIRHDERH QFDNRTVLPQ RVVKDEAITL GPQGGLARGM SIRGQPPVSN TEIPSVIDHR RIVSSSNGYN SAADWTSSSG REDSNSRLPD RTSGRIPASS QSAVTSQRPA SQEGRSRSKS YSEDELREKS VLTIREYYSA KDEKEVVLCI EELNAPNFYP FLVSLWVNDS FERKDMEREL LAKLLVSLCS GRHNLLSKQQ LSDGLSNVLA SLEDNLSDAP RATEYLGRLL ARFVEESILL LQEVGKLIQE SGEEPGYLIQ GGIAADILGA VLDSIKSDKG NSFLDEIKTT SSLKLVDFRP QHLKRSKLDA FM GRMZM5G821988_P02 seq=translation; coord=2:204696776..204699467:1; parent_transcript=GRMZM5G821988_T02; parent_gene=GRMZM5G821988 MPSPGTPVQA MHKAERKYVI GKVSDEEEAK QRQLKAILNK LTPQNFEKLF EQVKEVNIDS VATLTGVISQ IFDKALMEPT FCEMYANFCF HLAGALPDFS EDNEKITFKR LLLNKCQEEF ERGEREEAEA DKTEEEGEIK QTKEEREEKR IRARRRMLGN IRLIGELYKK RMLTERIMHE CIKKLFGNHD DPDEENIEAL CKLMSTIGDM IDHVKAKEHM DAYFSMMQIM STNQKLSSRV RFMLRDSIDL RRNKWQQRRK VEGPKKIEEV HRDAAQERHA QSSRLGRGPA VSSVPRRAHP MDYGPRGPSA SASSSSQQGS IRGMPPHSRG SQDIRHDERH QFDNRTVLPQ RVVKDEAITL GPQGGLARGM SIRGQPPVSN TEIPSVIDHR RIVSSSNGYN SAADWTSSSG REDSNSRLPD RTSGRIPASS QSAVTSQRPA SQEGRSRSKS YSEDELREKS VLTIREYYSA KDEKEVVLCI EELNAPNFYP FLVSLWVNDS FERKDMEREL LAKLLVSLCS GRHNLLSKQQ LSDGLSNVLA SLEDNLSDAP RATEYLGRLL ARFVEESILL LQEVGKLIQE SGEEPGYLIQ GGIAADILGA VLDSIKSDKG NSFLDEIKTT SSLKLVDFRP QHLKRSKLDA FM 5.95893 -0.361147 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 5589 5589 5589 5589 5589 5522 5422 2683 2332 784 307 167 69 20 5 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5592 5592 5592 5592 5592 5525 5425 2681 2320 722 206 87 26 5 1 0 0 1 2 3 4 4537 950 94 11 0 0 1 2 3 4 5 6 7 588 4850 140 11 1 0 2 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2618 (charge 2) 1506.71 2 155.082 159.076 167.081 175.119 181.062 181.097 185.093 216.099 224.103 226.083 239.617 242.113 247.059 250.118 264.222 267.144 283.319 295.141 347.132 631.7 791.287 862.429 949.47 1003.45 1036.49 1070.61 1107.54 1144.66 1194.57 1217.48 1352.62 1384.05 1385.87 62 14 17 39 15 14 14 11 75 11 12 57 11 13 10 14 12 16 13 12 13 39 24 16 100 17 56 15 76 12 12 14 12 GRMZM5G859979_P01 P48183 Photosystem Q(B) protein Precursor (32 kDa thylakoid membrane protein)(Photosystem II protein D1) seq=translation; coord=Pt:75..1150:-1; parent_transcript=GRMZM5G859979_T01; parent_gene=GRMZM5G859979 MTAILERRES TSLWGRFCNW ITSTENRLYI GWFGVLMIPT LLTATSVFII AFIAAPPVDI DGIREPVSGS LLYGNNIISG AIIPTSAAIG LHFYPIWEAA SVDEWLYNGG PYELIVLHFL LGVACYMGRE WELSFRLGMR PWIAVAYSAP VAAATAVFLI YPIGQGSFSD GMPLGISGTF NFMIVFQAEH NILMHPFHML GVAGVFGGSL FSAMHGSLVT SSLIRETTEN ESANEGYKFG QEEETYNIVA AHGYFGRLIF QYASFNNSRS LHFFLAAWPV VGIWFTALGI STMAFNLNGF NFNQSVVDSQ GRVINTWADI INRANLGMEV MHERNAHNFP LDLAALEVPY LNG GRMZM2G427369_P01 Q37082 Uncharacterized protein ycf72 (ORF137) seq=translation; coord=5:209970617..209971549:-1; parent_transcript=GRMZM2G427369_T01; parent_gene=GRMZM2G427369 MGREWELSFR LGMRPWIAVA YSAPVAAATA VFLIYPIGQG SFSDGMPLGI SGTFNFMIVF QAEHNILMHP FHMLGVAGVF GGSLFSAMHG SLVTSSLIRE TTENESANEG YKFGQEEETY NIVAAHGYFG RLIFQYASFN NSRSLHFFLA AWPVVGIWFT ALGISTMAFN LNGFIFNQSV VDSQGRVINT WADIINRANL GMEVMHERNA HNFPLDLAAL EVPYLNG GRMZM2G086723_P01 seq=translation; coord=2:120732844..120733320:1; parent_transcript=GRMZM2G086723_T01; parent_gene=GRMZM2G086723 MHGSLVTSSL IRETTENESA NEGYKFGQEE ETYNIVAAHG YFGRLIFQYA SFNNSRSLHF FLAAWPVVGI WFTALGISTM AFNLNGFNFN QSVVDSQGRV INTWADIINR ANLGMEVMHE RNAHNFPLDL AALEVPYLNG GRMZM5G844143_P01 seq=translation; coord=9:36554088..36555027:1; parent_transcript=GRMZM5G844143_T01; parent_gene=GRMZM5G844143 MGREWELSFR LGMRPWIAVA YSAPVAAATA VFLIYPIGQG SFSDGMPLGI SGTFNFMIVF QAEHNILMHP FHMLGVAGVF GGSLFSAMHG SLVTSSLIRE TTENESANEG YKFGQEEETY NIVAAHGYFG RLIFQYASFN NSRSLHFFLA AWPVVGIWFT ALGISTMAFN LNGFNFNQSV VDSQGRVINT WADIINRANL GMEVMHERNA HNFPLDLAAL EVPYLNG GRMZM2G455413_P01 seq=translation; coord=10:100017747..100018574:1; parent_transcript=GRMZM2G455413_T01; parent_gene=GRMZM2G455413 MGREWELSFR LGMRPWIAVA YSAPVAAATA VFLIYPIGQG SFSDGMPLGI SGTFNFMIVF QAEHNILMHP FHMLGVAGVF GGSLFSAMHG SLVTSSLIRE TTENESANEG YKFGQEEETY NIVAAHGYFG RLIFQYASFN NSRSLHFLAA WPVVGIWFTA LGISTMAFNL NGFNFNQSVV DSQGCVINTW ADIINRANLG MEVM 6.34107 -0.362347 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2418 2418 2418 2418 2388 2337 2209 2054 1799 1373 679 388 199 63 19 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2442 2442 2442 2442 2412 2361 2215 2043 1771 1305 530 245 93 7 4 1 0 0 1 2 3 4 5 6 7 1034 943 377 78 9 1 0 1 0 1 2 3 4 5 6 7 449 1417 434 111 20 2 10 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2619 (charge 3) 1471.62 3 152.057 153.066 154.086 155.082 156.077 157.061 157.097 158.082 158.093 159.076 166.061 167.081 168.065 169.061 169.097 169.134 170.045 171.076 171.113 173.092 175.071 175.119 181.061 183.113 185.055 185.092 185.165 186.086 186.124 187.072 187.108 193.098 194.129 195.075 197.128 198.087 199.072 199.108 199.181 201.123 203.103 209.055 212.102 213.087 216.099 226.082 227.102 231.097 237.135 240.135 244.093 268.13 270.108 278.114 283.101 292.165 296.124 298.103 301.114 310.176 311.178 314.135 315.202 327.131 338.1 345.139 355.125 367.198 371.241 396.219 407.156 425.167 428.707 443.178 446.205 470.248 472.287 478.23 483.294 496.241 504.187 521.201 529.682 539.21 549.69 561.295 575.239 583.328 591.283 593.257 610.285 628.341 665.292 675.344 681.32 686.265 719.34 755.346 768.354 891.394 13 6 7 22 25 13 14 11 16 38 8 26 8 20 36 13 7 26 19 9 8 78 20 29 13 84 16 28 6 33 7 33 20 44 8 7 32 20 7 20 58 16 7 73 15 50 26 58 8 7 84 23 8 27 7 18 40 8 39 52 13 40 36 16 7 25 24 100 14 16 20 8 7 7 14 7 7 37 8 49 12 18 6 8 8 8 16 7 15 35 81 17 15 13 80 8 7 7 58 6 GRMZM2G127648_P01 NP_001148331 ras-related protein RIC2 seq=translation; coord=6:159006258..159010274:-1; parent_transcript=GRMZM2G127648_T01; parent_gene=GRMZM2G127648 MAANGGGYRA EDDYDYLFKV VLIGDSGVGK SNLLSRFTKN EFSLESKSTI GVEFATRSLQ VDGKVIKAQI WDTAGQERYR AITSAYYRGA VGALLVYDVT RRATFDNVGR WLRELRDHTD QSIVVMLVGN KSDLRHLVAV STDDAKEFAE AESMYFMETS ALDATNVDSS FSEVLTQIYQ IVSKKTVEAS EEGAAAPGKG EKINVKDDVS AMKRVGCCSN 4.80369 -0.259659 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 10467 10467 10407 10189 9464 7781 6113 3979 2413 1409 842 504 279 140 65 23 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10342 10342 10282 10055 9294 7491 5479 3050 1418 705 297 82 2 1 1 0 0 1 2 3 4 5 6 7 3118 4797 2096 377 80 6 1 0 0 1 2 3 4 5 6 7 2223 5076 2415 604 137 11 6 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2620 (charge 3) 1630.79 3 155.082 155.118 157.097 157.133 158.092 159.076 167.081 169.097 169.133 171.113 173.093 173.129 174.132 175.12 181.061 183.076 183.113 185.092 186.123 187.072 189.087 197.128 198.087 199.071 199.107 201.124 209.056 213.087 215.103 217.083 221.103 225.098 226.155 229.118 230.149 235.119 240.134 241.082 244.165 249.095 252.097 259.093 270.109 271.14 280.092 283.176 288.119 297.12 308.177 311.135 316.114 330.165 333.178 339.129 346.125 354.213 355.197 363.131 369.142 381.141 385.135 399.15 419.246 429.28 444.25 456.172 461.269 469.244 483.296 487.25 518.291 540.204 543.312 573.287 587.305 597.333 611.309 615.347 621.788 639.307 675.31 686.384 687.387 715.4 727.389 739.371 757.421 788.41 814.419 816.441 828.45 837.479 841.461 885.482 917.49 978.524 1014.52 1016.52 1067.58 1143.56 11 2 5 2 2 6 2 5 4 2 11 100 8 8 7 5 2 6 5 4 5 2 5 8 4 25 1 2 2 14 2 5 15 4 2 6 4 5 30 2 10 2 8 2 2 21 2 5 8 4 4 4 8 2 5 2 10 1 2 5 4 2 7 4 2 2 4 7 3 6 5 4 5 2 7 7 2 64 2 1 2 13 4 6 8 2 14 2 2 4 4 6 2 14 2 2 6 2 7 2 GRMZM2G008410_P01 NP_001141009 hypothetical protein LOC100273088 seq=translation; coord=4:170332797..170339707:-1; parent_transcript=GRMZM2G008410_T01; parent_gene=GRMZM2G008410 MEAPGSPYAS SPESAPKRAP RSPPQQQQSP SEEGDDKEKP THLRFLVSNT AAGCIIGKGG STINDFQSQS GARIQLSRSN EFFPGTNDRI IMVSGLFDEV MKAMELILEK LLAEGEEFNE AEARPKVRLV VPNSSCGGII GKGGATIKSF IEESHAGIKI SPQDNNYVGL HDRLVTITGT FDNQMNAIDL ILKKLSEDVH YPPNLSSPFP YAGLTFPSYP GVPVGYMIPQ VPYSNAVNYG PNNGYGGRYQ NNKPTTPMRS PASNEAQESL TIGIADEHIG AVVGRAGRNI TEIIQASGAR IKISDRGDYI SGTSDRKVTI TGTPEAIRTA ESMIMQRVSA SSER 5.29636 -0.271608 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 8048 8048 7951 7559 6927 6201 5069 3915 2799 1729 925 488 248 154 74 32 15 5 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8055 8055 7958 7566 6922 6042 4751 3300 1926 812 167 60 19 1 0 0 1 2 3 4 5 6 2368 3447 1697 433 100 10 0 0 1 2 3 4 5 6 7 1475 3552 2096 751 141 24 8 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2621 (charge 3) 1349.66 3 153.102 155.081 156.077 157.097 157.133 158.092 159.076 164.071 167.056 167.118 169.051 169.097 171.076 171.113 171.149 173.092 173.128 175.09 175.119 176.123 181.061 181.097 182.101 183.113 184.072 184.108 185.092 186.124 187.071 187.108 193.097 195.04 198.088 198.124 199.108 201.123 203.066 209.092 213.087 215.14 218.15 221.091 226.119 227.122 229.096 232.141 235.12 239.114 241.081 244.166 246.181 248.16 256.092 258.076 272.171 275.103 282.144 290.161 292.129 305.115 306.16 308.172 313.15 315.202 323.136 340.161 343.18 351.684 361.026 363.025 386.185 387.187 393.188 403.212 406.174 409.695 415.733 434.167 446.254 452.197 458.262 465.212 474.267 504.258 512.75 529.732 565.274 576.777 585.295 589.294 605.31 637.262 648.243 658.334 684.352 686.341 702.36 704.363 818.369 830.467 3 6 3 3 3 11 14 3 3 2 5 6 2 13 6 3 6 6 66 2 7 45 3 3 9 3 6 6 7 6 34 3 3 3 9 3 3 13 9 2 5 3 28 3 9 2 5 3 5 7 7 3 3 2 7 6 3 3 10 3 3 3 2 16 18 3 3 3 11 23 18 3 2 32 2 3 3 14 3 2 2 3 10 13 2 8 3 2 3 9 17 13 3 6 9 3 100 19 3 2 GRMZM2G302233_P01 NP_001146320 hypothetical protein LOC100279896 seq=translation; coord=2:229667778..229675345:1; parent_transcript=GRMZM2G302233_T01; parent_gene=GRMZM2G302233 MAATSPFSSY PPRLHSKTLK PRHSRPLHHK AAPAASAPRP LLLSFPAPAR HCGAGLRASA AQKNSADYKF DEDDDDDEEE EYEYDGEEEE WEEEDDEDAM NVEAMEEEAR GAAADLAKRL ARELHIDDDV REKRRNIRDK TSVSKHIPDN LLPKVAIIGR PNVGKSALFN RLVGGNRAIV VDEPGVTRDR LYGRSYWGDH EFMVIDTGGV ITLSKSQAGV MEELAVTTTV GMDGIPLATR EAAIARMPSM IEKQAVAAVD EASVILFVVD GQAGLVAADI EISDWLRRNY SDKCILLAVN KCESPRKGQM QALDFWSLGF SPLPISAITG TGTGDLLDLV CSELRKFEVL DAVEEEKNKV PAIAIVGRPN VGKSSILNAL VGEDRTIVSP VSGTTRDAID TEFTTADGEK YKLIDTAGIR RRTAVISAGS TTESLSVKRA FRAIRRSDVV ALVIEAMACV TEQDYKIAER IEKEGKACVI VVNKWDTIPN KNHESTTHYE QDVREKLRIL DWAPIVYCSA TNGTSVEKII SAAALVEKER SRRLSTSILN QVIREAIAFK SPPRTRGGKR GRVYYTTQAA VGPPTFVLFV NDAKLFPDTY RRYMEKKLRS DAGFPGTPIR LLWRSRRRPD KRGKSADSRA QSPGTPSEVA LAA 6.30891 -0.382358 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 4000 4000 3924 3756 3386 3090 2750 1680 1175 617 264 89 35 9 5 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3999 3999 3923 3751 3348 2960 2609 1454 801 325 45 9 1 0 0 1 2 3 4 5 6 1427 1709 735 124 7 1 0 0 1 2 3 4 5 6 7 731 1966 1041 222 38 3 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2624 (charge 3) 1615.7 3 155.081 156.077 157.097 157.134 158.093 159.077 165.077 166.061 167.056 167.081 168.055 169.052 169.097 171.076 171.113 175.119 179.093 181.061 183.113 185.092 190.061 195.076 198.087 199.072 199.108 201.123 207.087 213.087 216.097 218.055 221.105 223.063 226.155 227.102 230.077 235.083 240.097 241.092 244.165 249.097 252.109 257.161 265.119 267.108 274.187 276.19 282.108 283.051 293.111 299.062 301.059 303.056 323.172 338.142 344.977 346.973 359.027 361.027 364.123 376.197 381.15 395.661 404.173 416.036 417.034 419.034 427.193 437.74 451.159 473.722 477.242 500.246 505.105 510.238 513.277 517.272 522.221 534.199 536.201 538.23 556.229 557.75 564.274 584.316 617.228 623.799 629.301 634.255 644.325 646.316 661.326 736.408 758.364 764.81 786.38 809.378 811.385 946.437 985.504 1526.27 2 1 3 5 8 2 2 2 36 3 10 12 2 3 2 33 1 2 2 7 2 2 2 2 5 2 5 3 2 2 2 9 12 2 7 26 9 3 5 2 21 6 2 3 91 2 8 3 2 67 100 7 2 2 7 17 7 14 5 2 8 2 2 9 31 3 2 2 2 6 3 2 2 2 6 9 2 2 2 2 2 2 2 8 2 9 2 5 2 18 12 2 2 2 5 30 6 5 2 2 GRMZM2G036609_P01 P23225 Ferredoxin-dependent glutamate synthase, chloroplastic Precursor (EC 1.4.7.1)(Fd-GOGAT) seq=translation; coord=7:170961145..170979959:-1; parent_transcript=GRMZM2G036609_T01; parent_gene=GRMZM2G036609 MATLPRAAPP TPAALLPLPR AAPPLLLAGR AAAARRSRLR ARGPSAAARR SWVVASAASS SSRAVVGGVA RREAPPAPQK PTQQAADLNH ILSERGACGV GFVANLKNMS SFDIVRDALM ALGCMEHRGG CGADSDSGDG AGLMSAVPWD LFDDWASKQG LALFDRRNTG VGMVFLPQDE KSMEEAKAAT EKVFVDEGLE VLGWRPVPFN VSVVGRNAKE TMPNIQQIFV KVAKEDNADD IERELYISRK LIERAAKSFS WADELYFCSL SSRTIVYKGM LRSEVLGQFY LDLQNELYKS PFAIYHRRFS TNTSPRWPLA QPMRLLGHNG EINTIQGNLN WMRSRETTLK SPVWRGREHE ICPFGDPKAS DSANLDSTAE LLLRSGRSPA EALMILVPEA YKNHPTLSIK YPEVTDFYDY YKGQMEAWDG PALLLFSDGR TVGATLDRNG LRPARYWRTS DDFVYVASEV GVIPMDESKV VMKGRLGPGM MITVDLQTGQ VLENTEVKKT VASASPYGTW LQECTRLIKP VNFLSSTIMD NETVLRHQQA FGYSSEDVQM VIESMASQGK EPTFCMGDDI PLAVLSQRPH LLYDYFKQRF AQVTNPAIDP LREGLVMSLE VNIGKRGNIL EVGPENADQV ALSSPVLNEG ELETLLNDSK LKPKVLSTYF DIRKGLDGSL DKTIQALCEE ADAAVRSGSQ LLVLSDRSEA PEPTRPAIPI LLAVGAIHQH LIQNGLRMSA SIVADTAQCF STHHFACLIG YGASAVCPYL ALETCRQWRL SNKTLNLMRN GKMPTVTIEQ AQRNFIKAVK SGLLKILSKM GISLLSSYCG AQIFEIYGLG QEVVDLAFCG SVSKIGGLTL DELGRETLSF WVKAFSEDTA KRLENFGFIQ SRPGGEYHAN NPEMSKLLHK AIREKRDNAY TVYQQHLASR PVNVLRDLLE LKSDRAPIPI GKVESATSIV ERFCTGGMSL GAISRETHEA IAIAMNRIGG KSNSGEGGED PIRWNPLTDV VDGYSPTLPH LKGLQNGDTA TSAIKQVASG RFGVTPTFLV NADQIEIKIA QGAKPGEGGQ LPGKKVSAYI ARLRNSKPGV PLISPPPHHD IYSIEDLAQL IYDLHQINPK AKVSVKLVSE AGIGTVASGV SKANADIIQI SGHDGGTGAS PISSIKHAGG PWELGLTETN QTLIQNGLRE RVVLRVDGGF RSGQDVLIAA AMGADEYGFG SVAMIATGCV MARICHTNNC PVGVASQREE LRARFPGVPG DLVNYFLFVA EEVRAALAQL GYEKLDDIIG RTDLLKPKHI SLVKTQHIDL GYLLSNAGLP EWSSSQIRSQ DVHTNGPVLD ETILADPEIA DAIENEKEVS KAFQIYNVDR AVCGRVAGVI AKKYGDTGFA GQLNITFNGS AGQSFGCFLT PGMNIRLVGE ANDYVGKGMA GGELVVVPVD KTGFVPEDAT IVGNTCLYGA TGGQVFVRGK AGERFAVRNS LCQAVVEGTG DHCCEYMTGG CVVVLGKAGR NVAAGMTGGL AYILDEDDTL VPKVNKEIVK MQRVNAPAGQ MQLKGLIEAY VDKTGSEKGI AILREWEAYL PLFWQLVPPS EEDSPEACAE FERVLAKQAT TQLSAK GRMZM2G036609_P02 P23225 Ferredoxin-dependent glutamate synthase, chloroplastic Precursor (EC 1.4.7.1)(Fd-GOGAT) seq=translation; coord=7:170961720..170979959:-1; parent_transcript=GRMZM2G036609_T02; parent_gene=GRMZM2G036609 MATLPRAAPP TPAALLPLPR AAPPLLLAGR AAAARRSRLR ARGPSAAARR SWVVASAASS SSRAVVGGVA RREAPPAPQK PTQQAADLNH ILSERGACGV GFVANLKNMS SFDIVRDALM ALGCMEHRGG CGADSDSGDG AGLMSAVPWD LFDDWASKQG LALFDRRNTG VGMVFLPQDE KSMEEAKAAT EKVFVDEGLE VLGWRPVPFN VSVVGRNAKE TMPNIQQIFV KVAKEDNADD IERELYISRK LIERAAKSFS WADELYFCSL SSRTIVYKGM LRSEVLGQFY LDLQNELYKS PFAIYHRRFS TNTSPRWPLA QPMRLLGHNG EINTIQGNLN WMRSRETTLK SPVWRGREHE ICPFGDPKAS DSANLDSTAE LLLRSGRSPA EALMILVPEA YKNHPTLSIK YPEVTDFYDY YKGQMEAWDG PALLLFSDGR TVGATLDRNG LRPARYWRTS DDFVYVASEV GVIPMDESKV VMKGRLGPGM MITVDLQTGQ VLENTEVKKT VASASPYGTW LQECTRLIKP VNFLSSTIMD NETVLRHQQA FGYSSEDVQM VIESMASQGK EPTFCMGDDI PLAVLSQRPH LLYDYFKQRF AQVTNPAIDP LREGLVMSLE VNIGKRGNIL EVGPENADQV ALSSPVLNEG ELETLLNDSK LKPKVLSTYF DIRKGLDGSL DKTIQALCEE ADAAVRSGSQ LLVLSDRSEA PEPTRPAIPI LLAVGAIHQH LIQNGLRMSA SIVADTAQCF STHHFACLIG YGASAVCPYL ALETCRQWRL SNKTLNLMRN GKMPTVTIEQ AQRNFIKAVK SGLLKILSKM GISLLSSYCG AQIFEIYGLG QEVVDLAFCG SVSKIGGLTL DELGRETLSF WVKAFSEDTA KRLENFGFIQ SRPGGEYHAN NPEMSKLLHK AIREKRDNAY TVYQQHLASR PVNVLRDLLE LKSDRAPIPI GKVESATSIV ERFCTGGMSL GAISRETHEA IAIAMNRIGG KSNSGEGGED PIRWNPLTDV VDGYSPTLPH LKGLQNGDTA TSAIKQVASG RFGVTPTFLV NADQIEIKIA QGAKPGEGGQ LPGKKVSAYI ARLRNSKPGV PLISPPPHHD IYSIEDLAQL IYDLHQINPK AKVSVKLVSE AGIGTVASGV SKANADIIQI SGHDGGTGAS PISSIKHAGG PWELGLTETN QTLIQNGLRE RVVLRVDGGF RSGQDVLIAA AMGADEYGFG SVAMIATGCV MARICHTNNC PVGVASQREE LRARFPGVPG DLVNYFLFVA EEVRAALAQL GYEKLDDIIG RTDLLKPKHI SLVKTQHIDL GYLLSNAGLP EWSSSQIRSQ DVHTNGPVLD ETILADPEIA DAIENEKEVS KAFQIYNVDR AVCGRVAGVI AKKYGDTGFA GQLNITFNGS AGQSFGCFLT PGMNIRLVGE ANDYVGKGMA GGELVVVPVD KTGFVPEDAT IVGNTCLYGA TGGQVFVRGK AGERFAVRNS LCQAVVEGTG DHCCEYMTGG CVVVLGKAGR NVAAGMTGGL AYILDEDDTL VPKVNKEIVK MQRVNAPAGQ MQLKGLIEAY VDKTGSEKGI AILREWEAYL PLFWQLVPPS EEDSPEACAE FERVLAKQAT TQLSAK 6.3863 -0.311527 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 6234 6234 6234 6054 5979 5611 4873 3975 2873 1888 1114 665 317 139 63 22 10 7 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6238 6238 6238 6058 5974 5602 4795 3724 2337 1217 611 170 46 21 1 0 0 1 2 3 4 5 6 7 1809 2770 1291 293 65 9 1 0 0 1 2 3 4 5 6 7 1310 2801 1562 428 117 12 4 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2631 (charge 3) 1635.92 3 152.057 155.082 157.134 158.093 158.137 168.076 169.097 171.076 171.113 173.092 173.129 174.132 175.12 181.061 183.076 185.092 185.128 186.087 186.123 187.071 198.087 199.072 200.139 201.123 209.055 217.082 226.155 227.103 240.098 244.166 245.169 249.092 252.098 257.124 268.165 270.107 275.208 283.176 293.122 297.118 301.187 315.202 323.179 328.161 332.23 337.185 347.193 355.199 367.207 390.716 408.673 411.271 415.191 419.244 429.283 469.243 478.933 483.294 488.243 503.286 523.289 526.224 534.301 540.281 542.365 544.314 560.268 587.305 588.306 598.339 611.314 615.347 617.355 622.287 639.312 651.313 662.872 686.379 691.375 715.399 717.893 727.418 761.919 767.4 780.372 782.382 784.472 816.44 837.485 893.415 913.514 918.501 921.475 970.523 981.481 1005.55 1049.56 1067.59 1069.59 1094.56 4 19 58 4 4 7 13 3 9 7 43 8 14 9 9 4 30 14 20 10 3 4 20 9 3 8 26 10 9 45 8 3 11 36 3 3 8 49 3 3 8 11 3 11 8 4 4 17 10 11 3 7 8 19 100 4 10 12 3 8 3 15 18 3 14 3 3 12 4 12 21 19 6 9 30 3 11 3 3 3 19 3 11 7 10 4 15 3 17 8 3 3 10 12 3 8 8 97 22 4 GRMZM2G318635_P01 seq=translation; coord=5:213291570..213301733:-1; parent_transcript=GRMZM2G318635_T01; parent_gene=GRMZM2G318635 6.4768 -0.332144 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 5760 5760 5760 5760 5438 5258 4834 4489 2633 2171 955 448 214 88 35 13 10 6 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5762 5762 5762 5762 5440 5257 4828 4431 2537 1760 684 179 87 24 6 1 0 0 1 2 3 4 5 3653 1917 183 9 1 0 0 1 2 3 4 5 6 7 812 4116 764 65 4 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2633 (charge 2) 1158.56 2 152.057 155.081 157.097 158.092 159.076 167.056 168.055 168.675 169.097 169.134 171.076 171.113 171.37 173.091 173.129 175.119 185.092 187.071 187.145 197.128 199.108 201.087 205.101 209.142 212.104 217.083 221.104 224.361 227.103 228.105 231.099 235.119 239.094 241.084 244.165 246.181 248.16 267.106 284.124 299.061 301.059 317.218 341.144 344.974 355.07 357.069 359.026 383.192 385.172 440.173 445.277 458.236 475.004 514.214 535.762 544.267 554.306 574.314 662.835 704.365 729.394 849.383 861.433 885.397 919.458 925.44 972.467 990.471 1124.75 7 18 20 21 23 49 5 6 100 20 8 24 5 8 6 71 11 12 8 7 90 7 7 5 8 6 6 4 72 6 5 5 20 7 9 23 8 7 23 26 8 31 9 7 11 22 9 7 6 7 22 32 7 10 7 36 7 11 8 6 7 7 59 6 6 8 9 29 7 GRMZM2G001696_P01 Q9SLZ0 Phosphoenolpyruvate carboxykinase [ATP] (PEP carboxykinase)(PEPCK)(EC 4.1.1.49)(Phosphoenolpyruvate carboxylase) seq=translation; coord=1:35739884..35744291:-1; parent_transcript=GRMZM2G001696_T01; parent_gene=GRMZM2G001696 MATPNGLARI ETTGKKKQDN GVWYDDSSAP VRAQTIDELH SLQRKRSAPS TPKRSAPTTP IKGGAHSPFA VAISEEERHT QQMQSISASL ASLTRETGPK VVKGDPAAKG EAAAQGAPST PRAHQQHRHP AAPAIAVSDS SLKFTHVLNN LSPAELYEQA IKYEKGSFIT STGALATLSG AKTGRSPRDK RVVKDEVTAQ DLWWGKGSPN IEMDEKTFLI NRERAVDYLN SLEKVFVNDQ YLNWDPENRI KVRIISARAY HSLFMHNMCI RPTDEELEDF GTPDFTIYNA GQFPCNRYTH YMTSSTSIDL NLARREMVIM GTQYAGEMKK GLFGVMHYLM PKRGILSLHS GCNMGKDGDV ALFFGLSGTG KTTLSTDHNR LLIGDDEHCW SDNGVSNIEG GCYAKCIDLA QEKEPDIWNA IKFGTVLENV VFDEHTREVD YADNSVTENT RAAYPIEYIP NAKIPCVGPH PKNVILLACD AFGVLPPVSK LNLAQTMYHF ISGYTALVAG TEDGIKEPQA TFSACFGAAF IMLHPTKYAA MLAEKMQKYG ATGWLVNTGW SGGRYGVGKR IRLPYTRKII DAIHSGELLT ANYQKTEVFG LEIPTEINGV PSEILDPINT WTDKAAYKEN LLRLGGLFKK NFEVFASYKI GDDSSLTDEI LAAGPNF GRMZM2G001696_P02 Q9SLZ0 Phosphoenolpyruvate carboxykinase [ATP] (PEP carboxykinase)(PEPCK)(EC 4.1.1.49)(Phosphoenolpyruvate carboxylase) seq=translation; coord=1:35739885..35744291:-1; parent_transcript=GRMZM2G001696_T02; parent_gene=GRMZM2G001696 MATPNGLARI ETTGKKKQDN GVWYDDSSAP VRAQTIDELH SLQRKRSAPS TPKRSAPTTP IKGGAHSPFA VAISEEERHT QQMQSISASL ASLTRETGPK VVKGDPAAKG EAAAQGAPST PRAHQQHRHP AAPAIAVSDS SLKFTHVLNN LSPAELYEQA IKYEKGSFIT STGALATLSG AKTGRSPRDK RVVKDEVTAQ DLWWGKGSPN IEMDEKTFLI NRERAVDYLN SLEKVFVNDQ YLNWDPENRI KVRIISARAY HSLFMHNMCI RPTDEELEDF GTPDFTIYNA GQFPCNRYTH YMTSSTSIDL NLARREMVIM GTQYAGEMKK GLFGVMHYLM PKRGILSLHS GCNMGKDGDV ALFFGLSGTG KTTLSTDHNR LLIGDDEHCW SDNGVSNIEG GCYAKCIDLA QEKEPDIWNA IKFGTVLENV VFDEHTREVD YADNSVTENT RAAYPIEYIP NAKIPCVGPH PKNVILLACD AFGVLPPVSK LNLAQTMYHF ISGYTALVAG TEDGIKEPQA TFSACFGAAF IMLHPTKYAA MLAEKMQKYG ATGWLVNTGW SGGRYGVGKR IRLPYTRKII DAIHSGELLT ANYQKTEVFG LEIPTEINGV PSEILDPINT WTDKAAYKEN LLRLGGLFKK NFEVFASYKI GDDSSLTDEI LAAGPNF 5.56699 -0.27156 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 5051 5051 5051 4881 4642 4483 4072 2606 2042 1071 653 355 219 113 49 23 15 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5024 5024 5024 4854 4615 4449 4011 2426 1762 780 318 136 56 3 2 2 1 0 0 1 2 3 4 5 2619 1992 390 45 7 0 0 1 2 3 4 5 6 7 1160 3286 522 75 8 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2634 (charge 2) 1212.6 2 155.082 157.109 157.133 158.092 159.076 167.055 169.097 173.092 175.119 183.076 185.092 185.914 186.088 187.071 187.107 188.074 200.102 201.087 213.087 223.156 225.043 227.102 230.114 239.094 244.166 255.146 258.108 259.11 268.13 272.172 279.992 284.123 285.128 297.156 299.061 301.15 311.136 325.149 329.144 339.162 355.162 356.161 369.14 372.185 382.174 388.691 400.181 430.229 442.252 541.291 555.791 557.306 584.304 586.336 590.273 597.825 611.335 628.336 655.338 677.301 685.365 687.367 765.411 796.397 813.425 815.418 867.429 884.455 897.407 955.484 1215.38 11 4 4 7 31 15 6 5 32 5 13 3 4 100 3 5 21 12 22 11 27 4 6 30 5 31 99 16 6 32 3 36 6 6 13 17 5 4 27 3 13 4 4 3 5 3 7 11 3 17 5 81 15 7 14 27 5 15 6 18 97 6 7 14 44 5 5 41 4 7 4 GRMZM2G082640_P01 seq=translation; coord=1:200401193..200409521:1; parent_transcript=GRMZM2G082640_T01; parent_gene=GRMZM2G082640 MMLKQENKSA MEAFREVLEK ELSGVNLRSD YEDGYEEEDV NSKGGDNKGT SKKTSSRKAR KQEGLKQQYN GEEDQNGGSN ATTGGARKKK GGHVRQSSAT HDAIDKNYSG SSAEGLRNKR QKSAAQSASV GRREGLRQRS DAKQHPDAAE GSTEPLADVP GSDGAAQGSM QHGTSAPHTE IKAMVRNILF KDIVDKEHDA EMAYVEEVIN GICNATDSMV GGGGGDASAK GGRGSKQSGS GVEGESSNAT ERRRDEATEN ALAVKGNTPS RGTMAMTPGQ LSARQNRQNR IMQTLALIPP SGSPFGRNEE VAASRQKL GRMZM2G082640_P02 seq=translation; coord=1:200401193..200409521:1; parent_transcript=GRMZM2G082640_T02; parent_gene=GRMZM2G082640 MMLKQENKSA MEAFREVLEK ELSGVNLRSD YEDGYEEEDV NSKGGDNKGT SKKTSSRKAR KQEGLKQQYN GEEDQNGGSN ATTGGARKKK GGHVRQSSAT HDAIDKNYSG SSAEGLRNKR QKSAAQSASV GRREGLRQRS DAKQHPDAAE GSTEPLADVP GSDGAAQGSM QHGTSAPHTE IKAMVRNILF KDIVDKEHDA EMAYVEEVIN GICNATDSMV GGGGGDASAK GGRGSKQSGS GVEGESSNAT ERRRDEATEN ALAVKGNTPG NNGDDAGAA GRMZM2G082640_P03 seq=translation; coord=1:200401193..200409279:1; parent_transcript=GRMZM2G082640_T03; parent_gene=GRMZM2G082640 MMLKQENKSA MEAFREVLEK ELSGVNLRSD YEDGYEEEDV NSKGGDNKGT SKKTSSRKAR KQEGLKQQYN GEEDQNGGSN ATTGGARKKK GGHVRQSSAT HDAIDKNYSG SSAEGLRNKR QKSAAQSASV GRREGLRQRS DAKQHPDAAE GSTEPLADVP GSDGAAQGSM QHGTSAPHTE IKAMVRNILF KDIVDKEHDA EMAYVEEVIN GICNATDSMV GGGGGDASAK GGRGSKQSGS GVEGESSNAT ERRRDEATEN ALAVKGNTPV S 5.47728 -0.353373 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 2447 2447 2447 2447 2447 2318 2231 1220 952 399 128 64 26 11 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2444 2444 2444 2444 2444 2315 2226 1207 884 335 64 19 1 0 0 1 2 3 4 1826 596 33 4 0 0 1 2 3 4 5 6 7 417 1847 173 9 1 0 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2636 (charge 2) 1594.69 2 157.098 167.958 170.092 171.076 175.119 181.061 184.072 198.088 205.918 231.098 244.128 262.277 305.859 325.115 382.134 400.149 405.214 471.233 506.331 619.249 677.324 764.351 779.833 788.842 893.397 950.411 1061.45 1079.46 1209.46 1235.55 1379.6 9 7 10 9 33 11 9 18 6 9 9 8 8 18 61 21 10 13 10 14 20 48 13 40 16 79 35 100 13 14 15 AC155496.2_FGP009 seq=translation; coord=5:4777029..4786789:-1; parent_transcript=AC155496.2_FGT009; parent_gene=AC155496.2_FG009 MSQSYAAAAS KRPFSSPTTS PSPTSSPATP LMKKAKHPAA ASSSSVGTVE KNGIQLDTVA AAMGGGRTNG EEDADMVLVN QDKLPAPSVP ASAGVAANLF RKKATLPQPS TSARKPLRIK IGQPKLPKNF EEDTWSILKD AITAIFLKQK LSCDVEKLYQ AAGDLCLHKL GANLYDRIKK ECGIHIAEKI SALVGQSPDL VVFLSLVQRT WQDFCDQMLI IRGIALLLDV KYVKNVANIC SVWDMGLQLF RKHLSLSTEI EHKTVTGLLR LIESERLGEA IDRTLLSHLL KMLTALGMYS ESFEKPFLEC TSEFYATEGV RYMQQSDIPD YLKHVESRLQ EEHERCILYL EANTRKPLIA TTEKQLLERH TSAIIEKGFT MLMDANRIND LSRMYNLFQR VNAVELLKLA LSSYIRATGQ GIIMDEEKDR ELVPFLLDFK ASLDKILEES FAKNEAFSNT IKDSFEHLIN LRQNRPAELI AKFLDEKLRA GNKGTSEEEL EGILDKVLVL FRFIQGKDVF EAFYKKDLAK RLLLGKSASI DAEKSMITKL KTECGSQFTN KLEGMFKDIE LSKEINDSFR QSSQARTKLP SGIEMSVHVL TTGYWPTYPP MDVKLPHELN VYQDIFKEFY LSKYSGRRLM WQNSLGHCVL KADFPKGKKE LAVSLFQSVV LMLFNDAQKL SFIDIKDSTG IEDKELRRTL QSLACGKVRV LQKIPKGRDV EDKDEFVFNE DFSAPLYRIK VNAIQMKETV EENTSTTERV FQDRQYQVDA AIVRIMKTRK VLSHTLLITE LYQQLKFPVK PADIKKRIES LIDREYLERD RSNPQIYNYL A AC177936.6_FGP008 seq=translation; coord=1:285647286..285648424:1; parent_transcript=AC177936.6_FGT008; parent_gene=AC177936.6_FG008 SVVLMLFNDA QKLSFLDIKD STGIEDKELR RTLQSLACGK VRVLQKIPKG RDVEDKDDFV FNEDFSAPLY RIKVNAIQMK ETVEENTSTT ERVFQDRQYQ VDAAIVRIMK TRKVLSHTLL ITELYQQLKF PVKPADIKKR IESLIDREYL ERDRSNPQIY NYLA 4.89353 -0.315712 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2765 2765 2765 2765 2765 2684 2632 2478 1499 1149 745 227 89 43 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2779 2779 2779 2779 2779 2698 2646 2492 1490 1098 706 175 63 21 1 0 0 1 2 3 1536 1193 50 0 0 1 2 3 4 5 6 7 616 2007 128 24 0 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2642 (charge 2) 1395.62 2 167.081 169.323 171.076 173.129 175.119 185.092 189.087 194.128 195.077 201.123 203.103 213.087 226.118 229.118 231.098 239.095 241.08 244.131 259.092 266.149 286.139 294.146 299.171 312.155 341.072 372.443 446.706 467.931 518.617 593.288 626.356 694.338 713.335 733.622 791.352 808.379 920.404 937.413 1066.46 1165.53 9 8 9 31 60 38 15 9 37 15 16 100 9 42 48 11 11 8 9 17 13 35 10 29 9 8 8 12 8 47 9 29 9 10 13 64 12 46 47 16 GRMZM2G123558_P01 NP_001130834 hypothetical protein LOC100191938 seq=translation; coord=3:1711864..1714237:1; parent_transcript=GRMZM2G123558_T01; parent_gene=GRMZM2G123558 MTSVWKTKVL PGLNKIFDKD GKKAAAAGFL KSFNKEEFDK EIEDKKTELE PKVVEAYEAS PPEVKALFKD KKPVKVSKKN SAAVTKFLDE LAKIDFPGAK VVSEAVAKSG TSPLLPAITF ILDKVAPFIP KEEPKEEPAA EATSREVAVE EKKEEAEPAA ATEAAPAPAE TPSEAAVVEE KKEEEKKEEE DKPAAEEAAP PAAAAAAAEE K GRMZM2G123558_P02 NP_001130834 hypothetical protein LOC100191938 seq=translation; coord=3:1711861..1714122:1; parent_transcript=GRMZM2G123558_T02; parent_gene=GRMZM2G123558 MYASLCLVSC LFIHHRPAGD FPFIIDLPAS LNFFCCVCWP GAEVATRIYS EEEIEMTSVW KTKVLPGLNK IFDKDGKKAA AAGFLKSFNK EEFDKEIEDK KTELEPKVVE AYEASPPEVK ALFKDKKPVK VSKKNSAAVT KFLDELAKID FPGAKVVSEA VAKSGTSPLL PAITFILDKV APFIPKEEPK EEPAAEATSR EVAVEEKKEE AEPAAATEAA PAPAETPSEA AVVEEKKEEE KKEEEDKPAA EEAAPPAAAA AAAEEK 5.14395 -0.278051 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 8708 8708 8708 8708 8447 8137 7596 7024 5832 4688 3268 1995 999 528 265 99 40 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 8747 8747 8747 8747 8486 8168 7592 6947 5664 3992 2211 837 224 65 28 1 0 0 1 2 3 4 5 6 7 3454 3331 1419 411 98 25 9 0 0 1 2 3 4 5 6 7 1386 3863 2341 870 195 74 8 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2646 (charge 3) 1543.72 3 155.082 158.093 166.061 167.082 169.097 173.092 175.119 183.077 185.093 189.087 195.076 195.113 199.107 201.087 207.125 213.087 217.109 226.155 227.101 231.098 235.119 241.082 245.125 254.149 259.093 262.151 264.133 272.171 282.145 284.124 291.15 297.193 302.135 312.119 323.187 325.188 330.13 337.187 338.137 346.172 355.198 363.199 373.175 383.156 400.268 409.229 416.228 417.212 434.236 436.235 450.757 456.246 466.234 471.307 473.754 484.244 494.275 500.262 509.269 517.276 534.303 545.269 553.799 556.259 558.337 563.28 565.282 567.795 577.266 581.294 591.298 595.273 600.305 602.322 611.329 616.31 624.336 626.319 634.317 636.323 645.37 652.332 662.402 689.376 705.354 716.407 724.312 742.318 763.448 802.406 817.453 892.388 900.509 931.452 946.495 969.52 987.539 1017.54 1060.5 1124.6 100 19 15 14 25 66 71 35 5 6 20 5 9 74 13 25 6 62 11 47 66 29 18 18 19 21 6 21 6 17 11 20 6 25 8 8 7 11 6 10 14 39 5 6 10 14 9 9 99 5 7 8 17 10 7 30 11 8 12 6 55 20 14 6 17 75 6 8 8 14 7 14 6 23 71 9 6 5 85 6 41 19 17 13 29 31 36 10 26 29 34 9 28 6 11 10 45 9 13 7 GRMZM2G140545_P01 NP_001149589 14-3-3-like protein A seq=translation; coord=4:196903412..196904780:1; parent_transcript=GRMZM2G140545_T01; parent_gene=GRMZM2G140545 MAAAAAAAGT REEMVYMAKL AEQAERYEEM VEFMEKVAAA AELTVEERNL LSVAYKNVIG ARRASWRIVS SIEHKEETRG AAGHAAAARG YRARVEAELS GICAGILRLL DERLVPAAAA VDARVFYLKM KGDYHRYLAE FKTGAERKDA ADSTLAAYQA AQDIAVKELP PTHPIRLGLA LNFSVFYYEI LSSPDRACSL AKQAFDEAIS ELDSLGEESY KDSTLIMQLL RDNLTLWTSD MQEDGGDEMR DANKPDEEQ 6.08179 -0.296672 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 7605 7605 7605 7442 7275 6970 6466 5843 4631 3440 2269 1221 605 309 152 72 47 13 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7606 7606 7606 7443 7276 6953 6373 5642 4058 2419 806 140 36 1 0 0 1 2 3 4 5 6 2549 3129 1474 364 82 14 0 0 1 2 3 4 5 6 7 1212 2664 2462 933 247 65 23 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2647 (charge 3) 1427.75 3 152.057 155.081 155.092 156.077 157.06 157.097 158.092 159.076 159.113 166.062 167.056 167.082 169.098 171.076 171.113 173.092 173.129 175.071 175.119 177.102 181.096 185.165 186.169 187.072 187.107 189.087 195.076 197.104 197.129 199.072 199.108 201.124 213.16 215.139 217.082 221.104 226.155 227.102 230.114 232.139 237.134 239.095 241.082 244.165 249.099 252.108 256.13 259.14 266.162 270.145 272.173 274.188 276.167 277.168 284.172 288.204 299.062 302.154 312.125 317.193 368.16 377.193 396.151 400.206 405.207 416.261 436.994 441.179 455.722 464.727 466.244 487.267 496.602 501.301 503.762 521.269 525.194 530.309 534.253 553.317 564.786 567.301 569.231 596.233 599.796 603.302 608.302 645.321 657.83 662.348 667.308 683.375 695.298 714.341 733.344 799.406 801.413 911.431 928.448 940.435 3 10 3 10 3 3 13 6 5 6 10 9 12 6 5 14 16 9 58 22 3 100 13 3 7 6 14 3 3 3 10 11 18 6 7 10 18 12 5 5 6 13 9 11 15 6 7 3 22 19 3 3 59 8 12 7 8 6 3 3 3 5 8 34 17 3 16 5 17 10 15 3 10 3 3 9 21 4 38 9 15 5 3 16 9 11 34 6 7 55 6 8 6 3 3 53 3 6 34 3 GRMZM2G060947_P01 NP_001130826 hypothetical protein LOC100191930 seq=translation; coord=4:160565693..160569675:-1; parent_transcript=GRMZM2G060947_T01; parent_gene=GRMZM2G060947 MPGITEDGVV AEEVPNGVNF SPQNESLPAP KSTAASTMAG SMQSEALEMH VEASGAGEPS IEQLYNNVCE MESSSEGGSP SRESFGSDGE ESRIDSELRH LVAGEMEAMK VIEEEEENGS VANVVPPAPA ENGTPVKEHS SSSSKKSKKA SKSQLESDAS VGLNGKASTE EGESEVSKPA SRVGRRRKSN ANPQSGTEDA GLDNPDLGPF LLKHARDLIA SENPRRALKY ALRATKSFEK CAGGKPSLNL VMSLHVVAAI YCNLGKYEEA VPVLHRSIEI PVIEEGQEHA LAKFSGCMQL GDTYGMLGQT AHSLQWYASG LEIQKQTLGE QDPRVGETCR YLAEAHVQAL QLDEAQRLCQ IALDIHREHR ETASLEETAD RRLMGLICDT KGDHEAALEH LVMASMSMVA NGQETEVASV DCSIGDIYLS LGRYDEAVFA YQKALTVFKT SKGENHATVA SVFVRLADLY NKTGKLRESK SYCENALKIY QKPIPGTSLE EIATGLTDVS AIYETMNEHE QALKLLQKAL KMYNNSAGQQ STIAGIEAQM GVLHYILGNY GESYDSFKSA IAKLRTCGEK KSAFFGIALN QMGLACVQRY SINEAAELFE EARTVLEQEY GPYHPDTLGV YSNLAGTYDA MGRLDEAIEI LEYVVGMREE KLGTANPDVD DEKRRLGELL KEAGRVRSRK AKSLENLLET NPYIATKRNA VAA 6.02607 -0.267825 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 8881 8881 8881 8398 8205 7531 6932 5346 4249 2640 1735 879 498 232 124 66 33 21 10 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8875 8875 8875 8392 8177 7475 6734 4725 3307 1472 582 148 25 1 0 0 1 2 3 4 5 6 2894 3663 1724 470 114 22 0 0 1 2 3 4 5 6 7 1761 3731 2265 809 251 44 11 15 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2649 (charge 3) 1663.78 3 155.082 157.097 159.077 161.091 166.061 167.081 168.066 169.061 169.098 171.077 173.092 173.129 175.119 185.092 187.072 189.087 195.076 198.124 199.072 199.108 201.124 203.103 209.092 213.087 217.082 224.103 226.155 228.134 231.098 242.114 244.166 254.152 256.13 259.092 262.152 270.109 272.171 274.103 282.108 284.102 290.146 298.104 301.13 316.113 323.173 333.188 337.187 367.125 370.215 372.724 379.68 383.193 385.134 413.215 427.144 430.241 437.246 452.258 480.759 482.273 496.168 512.314 517.308 536.276 545.278 548.305 554.3 556.297 558.339 563.283 564.787 567.3 573.788 627.355 629.308 638.313 645.368 651.256 661.302 678.353 684.825 686.349 694.337 702.833 713.367 744.437 746.443 751.384 753.38 759.365 790.438 797.391 833.399 852.413 873.476 903.491 943.486 960.512 1129.6 1146.59 8 5 19 3 3 3 4 4 8 12 3 4 28 37 19 12 3 3 10 27 4 25 4 22 13 9 91 4 26 14 14 4 15 4 3 3 9 8 4 8 4 8 12 3 3 8 4 4 3 4 3 10 9 9 3 100 3 14 26 5 10 3 3 3 5 3 8 4 19 3 3 4 25 3 11 24 70 3 4 5 3 14 4 4 4 29 4 26 3 3 3 3 3 3 13 9 3 22 4 10 GRMZM2G083173_P01 NP_001151936 LOC100285573 seq=translation; coord=1:84413344..84417967:1; parent_transcript=GRMZM2G083173_T01; parent_gene=GRMZM2G083173 MGGAVMVAIA ASIGNLLQGW DNATIAGAVL YIKKEFNLQS EPLIEGLIVA MSLIGATVIT TFSGAAADCV GRRPMLVASA VLYFVSGLVM LWAPSVYILL LARLIDGFGI GLAVTLVPLY ISETAPTDIR GLLNTLPQFS GSGGMFLSYC MVFGMSLMPK PDWRLMLGVL SIPSLIYFGL TVFYLPESPR WLVSKGRMAE AKRVLQRLRG REDVSGEMAL LVEGLGVGKD TRIEEYIIGP DDELADEGLA PDPEKIKLYG PEEGLSWVAR PVRGQSALGS ALGLISRHGS MAASQGKPLV DPMVTLFGSV HEKMPEIMGS MRSTLFPNFG SMFSVADQQQ VKADWDAESQ REGEDYASDH GGDDIEDNLQ SPLISRQATS VEGKEIAAPH GSILGAVGRS SSLQGGEAVS SMGIGGGWQL AWKWTEREGE DGQKEGGFQR IYLHEEGVQG NRGSILSLPG GDVPPGGEFI QAAALVSQPA LYSKELLEQR AAGPAMMHPS EAVTKGPRWA DLFEPGVKHA LFVGIGIQIL QQFAGINGVL YYTPQILEQA GVGVLLSNLG LNASSASILI SALTTLLMLP SIGIAMRLMD MSGRRFLLLA TIPVLIVALL VLVVSNIVDV GDVAHAALST ASVIVYFCFF VMGFGPVPNI LCAEIFPTTV RGVCIAICAL AFWLGDIIVT YTLPVMLNVV GLAGVFGVYA VVCVLALAFV FVKVPETKGM PLEVITEFFS VGAKQAKEEE EEEAREG GRMZM2G083173_P02 NP_001151936 LOC100285573 seq=translation; coord=1:84413344..84417615:1; parent_transcript=GRMZM2G083173_T02; parent_gene=GRMZM2G083173 MGGAVMVAIA ASIGNLLQGW DNATIAGAVL YIKKEFNLQS EPLIEGLIVA MSLIGATVIT TFSGAAADCV GRRPMLVASA VLYFVSGLVM LWAPSVYILL LARLIDGFGI GLAVTLVPLY ISETAPTDIR GLLNTLPQFS GSGGMFLSYC MVFGMSLMPK PDWRLMLGVL SIPSLIYFGL TVFYLPESPR WLVSKGRMAE AKRVLQRLRG REDVSGEMAL LVEGLGVGKD TRIEEYIIGP DDELADEGLA PDPEKIKLYG PEEGLSWVAR PVRGQSALGS ALGLISRHGS MAASQGKPLV DPMVTLFGSV HEKMPEIMGS MRSTLFPNFG SMFSVADQQQ VKADWDAESQ REGEDYASDH GGDDIEDNLQ SPLISRQATS VEGKEIAAPH GSILGAVGRS SSLQGGEAVS SMGIGGGWQL AWKWTEREGE DGQKEGGFQR IYLHEEGVQG NRGSILSLPG GDVPPGGEFI QAAALVSQPA LYSKELLEQR AAGPAMMHPS EAVTKGPRWA DLFEPGVKHA LFVGIGIQIL QQFAGINGVL YYTPQILEQA GVGVLLSNLG LNASSASILI SALTTLLMLP SIGIAMRLMD MSGRRFLLLA TIPVLIVALL VLVVSNIVDV GDVAHAALST ASVIVYFCFF VMGFGPVPNI LCAEIFPTTV RGVCIAICAL AFWLGDIIVT YTLPVMLNVV GLAGVFGVYA VVCVLALAFV FVKVPETKGM PLEVITEFFS VGAKQAKEEE EEEAREG GRMZM2G083173_P03 NP_001151936 LOC100285573 seq=translation; coord=1:84413383..84417967:1; parent_transcript=GRMZM2G083173_T03; parent_gene=GRMZM2G083173 MAASQGKPLV DPMVTLFGSV HEKMPEIMGS MRSTLFPNFG SMFSVADQQQ VKADWDAESQ REGEDYASDH GGDDIEDNLQ SPLISRQATS VEGKEIAAPH GSILGAVGRS SSLQGGEAVS SMGIGGGWQL AWKWTEREGE DGQKEGGFQR IYLHEEGVQG NRGSILSLPG GDVPPGGEFI QAAALVSQPA LYSKELLEQR AAGPAMMHPS EAVTKGPRWA DLFEPGVKHA LFVGIGIQIL QQFAGINGVL YYTPQILEQA GVGVLLSNLG LNASSASILI SALTTLLMLP SIGIAMRLMD MSGRRFLLLA TIPVLIVALL VLVVSNIVDV GDVAHAALST ASVIVYFCFF VMGFGPVPNI LCAEIFPTTV RGVCIAICAL AFWLGDIIVT YTLPVMLNVV GLAGVFGVYA VVCVLALAFV FVKVPETKGM PLEVITEFFS VGAKQAKEEE EEEAREG GRMZM2G083173_P04 NP_001151936 LOC100285573 seq=translation; coord=1:84413404..84417967:1; parent_transcript=GRMZM2G083173_T04; parent_gene=GRMZM2G083173 MGIGGGWQLA WKWTEREGED GQKEGGFQRI YLHEEGVQGN RGSILSLPGG DVPPGGEFIQ AAALVSQPAL YSKELLEQRA AGPAMMHPSE AVTKGPRWAD LFEPGVKHAL FVGIGIQILQ QFAGINGVLY YTPQILEQAG VGVLLSNLGL NASSASILIS ALTTLLMLPS IGIAMRLMDM SGRRFLLLAT IPVLIVALLV LVVSNIVDVG DVAHAALSTA SVIVYFCFFV MGFGPVPNIL CAEIFPTTVR GVCIAICALA FWLGDIIVTY TLPVMLNVVG LAGVFGVYAV VCVLALAFVF VKVPETKGMP LEVITEFFSV GAKQAKEEEE EEAREG 6.43195 -0.36754 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 4029 4029 4029 3987 3929 3628 3360 2898 2465 1614 1107 530 193 73 27 11 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4041 4041 4041 3999 3941 3639 3348 2783 2339 1339 755 237 18 1 0 0 1 2 3 4 5 6 1571 1627 701 135 7 1 0 0 1 2 3 4 5 6 7 812 1905 993 261 49 10 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2666 (charge 3) 1436.64 3 152.057 154.05 155.082 156.077 157.097 157.133 158.091 159.077 166.062 167.081 169.061 169.097 171.077 172.072 173.092 173.128 175.119 177.102 181.061 185.129 186.088 186.124 187.071 189.087 195.114 197.092 197.129 199.072 199.107 201.123 203.121 207.124 209.139 212.103 215.103 217.081 222.124 226.155 227.103 235.119 240.134 241.136 244.166 252.099 257.161 258.145 266.16 268.129 270.109 275.125 284.171 286.143 297.157 303.177 305.182 309.158 344.125 346.207 355.161 357.177 364.124 365.647 381.225 395.119 400.232 402.702 411.217 417.255 424.228 433.678 436.511 443.264 444.264 450.246 468.188 473.19 477.19 480.256 487.17 501.185 503.758 507.269 514.299 534.296 548.294 549.299 562.284 564.289 566.295 601.33 633.32 638.243 659.329 672.366 675.319 693.331 695.335 743.398 819.407 821.431 32 4 15 14 5 13 17 25 4 8 45 19 11 4 26 4 100 8 9 5 9 9 12 16 7 53 5 13 11 5 23 9 9 9 23 13 8 20 11 18 60 5 13 9 9 21 5 35 11 10 12 25 28 21 21 9 10 4 5 8 10 8 13 5 12 4 8 12 9 4 4 56 12 11 14 4 5 9 4 10 5 18 4 4 14 8 5 71 9 22 4 9 10 30 21 57 5 8 8 25 GRMZM5G836250_P03 NP_001141584 hypothetical protein LOC100273700 seq=translation; coord=3:175707821..175710858:-1; parent_transcript=GRMZM5G836250_T03; parent_gene=GRMZM5G836250 MDHAADAHRT DLMTITRHVL NEQSRNPESR GDFTILLSHI VLGCKFVASA VNKAGLAQLI GLAGETNVQG EEQKKLDVLS NEVFVKALVS SGRTCVLVSE EDEEATFVDP KLRGRYCVCF DPLDGSSNID CGVSIGTIFG IYIIKDKDNV TLEDVLQPGK NMLAAGYCMY GSSCTLVLST GTGVNGFTLD PSLGEFILTH PDIKIPKKGK IYSVNEGNAK NWDAPVAKFV EKCKYPKDGS PPRSLRYIGS MVADVHRTLL YGGVFLYPAD EKNPNGKLRI LYEVFPMSFL MEQAGGQSFT GKERALDLIP TKIHDRSPIF LGSYDDVEEI KALYAEQAKS SSASS GRMZM5G836250_P02 NP_001141584 hypothetical protein LOC100273700 seq=translation; coord=3:175708055..175710858:-1; parent_transcript=GRMZM5G836250_T02; parent_gene=GRMZM5G836250 MDHAADAHRT DLMTITRHVL NEQSRNPESR GDFTILLSHI VLGCKFVASA VNKAGLAQLI GLAGETNVQG EEQKKLDVLS NEVFVKALVS SGRTCVLVSE EDEEATFVDP KLRGRYCVCF DPLDGSSNID CGVSIGTIFG IYIIKDKDNV TLEDVLQPGK NMLAAGYCMY GSSCTLVLST GTGVNGFTLD PSLGEFILTH PDIKIPKKGK IYSVNEGNAK NWDAPVAKFV EKCKYPKDGS PPRSLRYIGS MVADVHRTLL YGGVFLYPAD EKNPNGKLRI LYEVFPMSFL MEQAGGQSFT GKERVGFTPL HFLYKKKSTS APSS GRMZM5G836250_P01 NP_001141584 hypothetical protein LOC100273700 seq=translation; coord=3:175708055..175710858:-1; parent_transcript=GRMZM5G836250_T01; parent_gene=GRMZM5G836250 MDHAADAHRT DLMTITRHVL NEQSRNPESR GDFTILLSHI VLGCKFVASA VNKAGLAQLI GLAGETNVQG EEQKKLDVLS NEVFVKALVS SGRTCVLVSE EDEEATFVDP KLRGR 5.12373 -0.310529 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 2341 2341 2341 2066 1993 1782 1596 1414 1228 739 490 262 90 33 25 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2342 2342 2342 2067 1993 1759 1540 1351 1147 516 330 110 1 0 0 1 2 3 4 5 1351 879 108 3 12 0 0 1 2 3 4 5 6 7 501 1382 382 45 31 0 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2667 (charge 2) 1065.45 2 152.057 155.081 155.093 156.077 157.109 158.092 162.091 164.082 166.061 167.056 167.082 169.097 171.077 172.071 173.055 173.091 174.059 175.119 176.124 179.118 181.095 181.109 183.076 183.113 185.092 189.134 195.089 195.113 197.128 198.124 199.07 199.108 205.096 207.113 209.105 213.087 226.155 227.102 232.14 235.144 239.095 242.15 244.165 247.086 253.093 258.145 263.136 265.117 268.128 272.171 278.121 284.171 295.149 299.063 312.177 324.126 355.197 361.701 364.204 380.14 383.216 389.192 395.165 398.147 403.722 408.134 412.73 426.144 434.24 445.566 447.241 452.249 466.207 484.236 493.155 497.18 499.928 518.93 534.304 538.273 549.297 552.253 554.307 569.279 581.29 623.291 625.344 637.337 640.316 642.319 646.329 659.343 683.246 722.395 727.398 753.265 774.408 777.373 803.353 824.446 5 13 3 8 3 16 5 3 3 18 5 14 11 5 3 5 26 100 4 3 3 9 3 3 5 3 4 10 9 9 3 28 3 10 22 5 60 23 8 11 39 5 21 3 35 5 4 5 3 3 3 3 4 16 9 3 11 10 5 4 63 19 8 23 4 5 21 29 3 11 4 5 3 9 9 14 4 3 10 3 3 4 14 38 11 4 4 9 54 3 3 3 3 4 16 4 8 11 3 12 GRMZM2G405459_P01 seq=translation; coord=5:145524164..145526605:-1; parent_transcript=GRMZM2G405459_T01; parent_gene=GRMZM2G405459 MAPATLLLAR LAVACALALG AMAQLSPTFY DASCPSLQAI VRAGMAAAVQ QEPRMGASIL RLFFHDCFVQ GCDASVLLDD SPTLTGEKNA GPNANSLRGF EVIDSIKSQV EAACPGTVSC ADILALAARD GVNLLSGPTW AVQLGRRDTR TASQSAANSN LPSPSSSAAA LVSAFASKGL DSRDLVALSG AHTIGAARCA TFRSRVYNDT NISAGFAAKR RQICQAQAGA SDGNLAPLDA MSSVRFDNGY FRNLVAQFGL LHSDQELFGA GGGAVDFITA QYARNGAAFS RDFVTAVLKM GSIGPLTGSS GEIRANCRKP N GRMZM2G405459_P02 seq=translation; coord=5:145524169..145526605:-1; parent_transcript=GRMZM2G405459_T02; parent_gene=GRMZM2G405459 MAPATLLLAR LAVACALALG AMAQLSPTFY DASCPSLQAI VRAGMAAAVQ QEPRMGASIL RLFFHDCFVQ VSMHVVAPWA CCWSSVCVAP RHPSNTPLLL LLLPMQGCDA SVLLDDSPTL TGEKNAGPNA NSLRGFEVID SIKSQVEAAC PGTVSCADIL ALAARDGVNL LSGPTWAVQL GRRDTRTASQ SAANSNLPSP SSSAAALVSA FASKGLDSRD LVALSGAHTI GAARCATFRS RVYNDTNISA GFAAKRRQIC QAQAGASDGN LAPLDAMSSV RFDNGYFRNL VAQFGLLHSD QELFGAGGGA VDFITAQYAR NGAAFSRDFV TAVLKMGSIG PLTGSSGEIR ANCRKPN 5.1698 -0.229769 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 6367 6367 6367 6310 5897 5669 5326 4465 3827 2513 1652 730 479 309 207 112 65 39 18 13 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6336 6336 6336 6279 5866 5605 5193 4235 2921 1281 561 260 97 47 1 0 0 1 2 3 4 5 2929 2587 712 134 11 0 0 1 2 3 4 5 6 7 1124 3156 1767 249 66 7 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2668 (charge 2) 1244.61 2 152.057 155.082 157.098 158.092 159.077 159.092 167.081 169.097 171.076 172.072 173.092 173.129 175.119 181.097 183.075 184.108 185.092 187.108 187.144 188.038 189.087 190.086 191.085 197.104 199.108 201.087 205.065 212.103 214.119 217.082 219.08 225.123 226.154 228.135 240.134 242.149 244.166 246.156 249.162 252.134 255.145 261.156 266.114 270.144 272.172 274.103 276.101 290.116 298.14 302.118 304.097 313.188 315.133 319.143 320.139 326.182 338.142 345.178 347.138 354.177 373.155 375.199 383.201 386.162 388.46 390.182 401.215 403.716 418.227 425.214 452.254 492.243 504.234 507.264 515.279 518.257 529.279 591.302 619.267 640.309 657.333 696.321 715.358 756.399 784.362 801.368 804.345 827.435 829.437 872.411 898.476 900.486 909.466 933.384 969.511 971.52 1004.43 8 18 5 6 6 4 7 15 6 4 3 3 41 5 4 4 3 5 5 7 24 4 6 5 14 6 18 21 8 34 15 4 37 8 6 23 12 5 4 5 30 4 4 4 100 36 68 6 5 27 5 5 4 8 5 13 4 4 28 25 14 4 6 4 4 7 5 3 6 12 4 7 5 4 4 5 10 5 5 7 37 5 4 54 4 12 6 68 6 7 48 5 13 6 39 5 20 GRMZM2G166441_P02 NP_001141289 hypothetical protein LOC100273380 seq=translation; coord=8:170330883..170335331:1; parent_transcript=GRMZM2G166441_T02; parent_gene=GRMZM2G166441 MAASLLHASA AAASLLSSTQ HARAGAAAFH PLACAPSLRL TRSSFSTNRH LEISLRAISA SRRFAGRGAP RDRRVVAALA GEQTEGSEVG DDRNGEIKPE EAQEIWKVML EQFKAEALRM QALSMQAYDV YSERTREVLL EASEKLKIQA DKAQKDLSVV ATEIGQEGQE YLMMAARNSP DSIKDITTTF RALGKLNWPS EYEDYHVGIP FGTFLTVGGF LNFMLAGSTS ALRFGIILGL ALLALGISSL RSQRDGGRRP RLLVKGQAAI ASVIFFREFS VLLQNGWFPK IFMVLLSGVV AGFYFYRIAA GSPKELSSNS DSVN GRMZM2G166441_P03 NP_001141289 hypothetical protein LOC100273380 seq=translation; coord=8:170330883..170335331:1; parent_transcript=GRMZM2G166441_T03; parent_gene=GRMZM2G166441 MAASLLHASA AAASLLSSTQ HARAGAAAFH PLACAPSLRL TRSSFSTNRH LEISLRAISA SRRFAGRGAP RDRRVVAALA GEQTEGSEVG DDRNGEIKPE EAQEIWKVML EQFKAEALRM QALSMQAYDV YSERTREVLL EASEKLKIQA DKAQKDLSVV ATEIGQEGQE YLMMAARNSP DSIKDITTTF RALGKLNWPS EYEDYHVGIP FGTFLTVGGF LNFMLAGSTS ALRFGIILGL ALLALGISSL RSQRDGGRRP RLLVKGQAAI ASVIFFREFS VLLQNGWFPK IFMVLLSGVV AGFYFYRIAA GSPKELSSNS DSVN 5.34147 -0.288728 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1351 1351 1351 1351 1215 1173 1087 993 550 479 162 115 58 30 21 4 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1346 1346 1346 1346 1210 1168 1080 979 539 401 120 83 4 1 0 0 1 2 3 4 949 374 26 3 0 0 1 2 3 4 5 6 7 280 920 132 15 4 0 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2671 (charge 2) 1449.61 2 175.119 187.071 189.807 212.102 222.088 226.157 230.115 240.098 258.108 262.139 275.134 280.649 290.146 315.129 324.12 341.146 351.73 364.013 450.156 462.195 468.182 470.186 518.857 543.827 561.261 690.3 777.339 834.358 963.407 1064.45 1175.48 69 40 6 11 7 11 9 27 47 7 22 7 100 9 7 7 6 7 7 33 7 6 6 6 23 12 10 87 38 55 7 GRMZM2G130062_P01 NP_001146891 2-isopropylmalate synthase B seq=translation; coord=10:1725712..1731899:-1; parent_transcript=GRMZM2G130062_T01; parent_gene=GRMZM2G130062 MASSLLSSPA KPTITTTTKT TPAPRPARSA HVHVLSAARC LRLRLRASSQ HPPPPPTPRS RRPDYVPNRI DDPNYVRIFD TTLRDGEQSP GATMTSAQKL VVARQLARLG VDIIEAGFPA SSPDDLDAVR SIAIEVGNPA PGPAGEEDAV HVPVICGLSR CNRKDIDAAW EAVRHARRPR IHTFIATSDI HMQHKLRKTP DQVVAIAREM VAYARSLGCT DVEFSPEDAG RSNREFLYHI LGEVIKAGAT TLNIPDTVGY NLPYEFGKLI ADIKANTPGI EKAIISTHCQ NDLGLATANT LAGARAGARQ LEVTINGIGE RAGNASLEEV VMAIKCRREL LDGLYTGIDS RHITLTSKMV QEHSGLHVQP HKAIVGANAF AHESGIHQDG MLKYKGTYEI ISPDDIGLTR ANEFGIVLGK LSGRHAVRSK LVELGYEIGD KEFEDFFKRY KEVAEKKKRV TDEDLEALLS DEIFQPKVIW SLADVQATCG TLALSTATVK LVAPDGEEKI ACSVGTGPVD AAYKAVDKII QIPTVLREYS MTSVTEGIDA IATTRVVVTG DVSNNAKHAL TGQSFNRSFS GSGASMDIVV SSVRAYLSAL NKICSFAGAV KASSDVAETA SVPSTE 5.639 -0.304811 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 7035 7035 7035 6854 6608 6170 5250 4215 2780 1656 948 363 177 91 42 17 3 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 7041 7041 7041 6860 6608 6140 5124 3781 2207 842 227 58 1 0 0 1 2 3 4 5 6 2322 2967 1342 355 54 3 0 0 1 2 3 4 5 6 7 1279 3204 1832 566 142 13 7 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2674 (charge 3) 1297.66 3 153.103 154.05 154.087 155.081 156.077 157.061 157.098 157.134 158.093 159.077 166.062 167.082 167.118 169.097 169.134 171.077 171.113 172.109 173.092 175.089 175.119 176.123 181.097 183.078 183.113 185.091 186.086 186.124 187.071 187.108 187.143 189.087 194.129 195.112 197.128 199.071 199.108 201.124 203.086 205.987 208.953 210.95 213.087 215.138 223.998 226.155 235.063 240.08 244.167 246.156 248.035 251.151 255.146 258.145 266.047 268.129 272.172 283.14 287.083 295.148 304.16 313.198 317.651 320.92 332.169 339.69 344.978 346.977 351.167 362.028 367.245 371.239 373.218 376.477 383.131 385.216 394.19 398.238 414.2 416.007 419.743 422.752 438.198 452.262 455.271 461.183 464.235 468.297 470.272 505.76 511.25 521.755 537.243 538.985 567.33 634.293 653.377 661.36 732.391 897.409 6 4 10 20 3 3 6 4 19 27 3 3 6 6 20 22 13 5 11 18 100 5 12 9 5 4 3 4 13 5 4 6 5 6 10 5 14 11 4 4 15 21 4 5 6 23 11 4 11 4 12 5 12 6 5 11 24 4 6 4 28 6 4 3 4 3 6 4 5 12 11 4 4 4 4 4 4 3 4 25 4 10 26 12 3 5 5 6 31 3 13 5 5 4 30 6 4 4 4 4 GRMZM2G451224_P01 O65101 Photosystem I reaction center subunit VI, chloroplastic Precursor (PSI-H)(Light-harvesting complex I 11 kDa protein) seq=translation; coord=6:163973641..163974980:-1; parent_transcript=GRMZM2G451224_T01; parent_gene=GRMZM2G451224 5.26332 -0.284504 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 8705 8705 8662 8396 7853 7229 6143 4896 3155 1896 1115 586 327 175 57 24 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8708 8708 8665 8383 7763 7001 5821 3872 1852 542 176 25 4 1 0 0 1 2 3 4 5 6 7 2759 3707 1564 502 140 25 16 0 0 1 2 3 4 5 6 7 1193 3468 2455 1152 334 94 12 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2677 (charge 3) 1287.68 3 152.082 155.082 157.108 158.092 159.077 167.055 167.081 167.118 169.097 172.108 175.119 176.122 181.097 181.133 183.149 184.624 186.123 195.113 198.124 200.139 201.124 206.122 208.953 212.139 213.627 226.119 227.102 230.62 234.159 241.081 243.145 252.135 255.145 258.109 262.128 266.154 269.161 272.172 274.014 284.009 287.652 296.165 297.155 298.679 300.203 309.191 312.166 319.169 323.171 326.183 329.193 338.134 341.019 343.21 344.976 349.188 352.198 355.16 359.029 361.028 366.215 368.24 376.201 380.229 392.191 394.209 396.236 409.219 411.236 413.184 423.235 426.246 428.251 438.234 440.265 460.233 467.309 477.246 494.274 497.284 505.239 508.288 512.282 522.267 524.259 531.308 537.278 540.277 542.285 554.305 609.328 610.335 616.321 620.304 625.344 637.331 639.339 651.359 674.385 751.409 2 12 1 6 1 12 1 2 2 2 22 1 5 2 1 2 3 7 2 1 1 2 6 22 10 23 3 2 3 2 2 2 14 2 3 1 5 6 2 8 2 6 3 2 3 1 11 4 8 2 11 2 1 4 4 4 1 6 29 6 3 2 2 2 2 6 2 15 8 1 2 100 3 2 3 7 2 2 2 7 3 2 4 13 2 2 12 39 2 2 4 1 4 3 3 23 2 5 4 2 GRMZM2G172322_P01 B4FVZ4 Putative uncharacterized protein seq=translation; coord=1:12987102..12993471:1; parent_transcript=GRMZM2G172322_T01; parent_gene=GRMZM2G172322 MAAHATLPFS CSSTLQTLTR TLSSRGAHQL RGGFLRLPSL AALPRLAHPC RRHVSASAAA APNGASVEGE YDYDLFTIGA GSGGVRASRF ASALYGSRVA ICEMPFATIA SDELGGLGGT CVLRGCVPKK LLVYASKYSH EFEESRGFGW TYETDPKHDW STLIANKNTE LQRLVGIYRN ILNNAGVTLI EGRGKIVDPH TVSVNGKLYT AKHILVSVGG RPSMPDIPGI EHVIDSDAAL DLPSKPEKIA IVGGGYIALE FAGIFNGLKS EVHVFIRQKK VLRGFDEEVR DFVAEQMSLR GITFHTEQSP QAITKSNDGL LSLKTNKENF GGFSHVMFAT GRRPNSKNLG LEAVGVEMDK NGAIVVDEYS RTSVDSIWAV GDVTNRVNLT PVALMEGGAF AKTVFGNEPT KPDYRAIPSA VFSQPPIGQV GLTEEQAIEE YGDVDVFVAN FRPLKATLSG LPDRVLMKIL VCATSNKVVG VHMCGDDAPE IIQGIAIAVK AGLTKQDFDA TIGIHPTSAE EFVTMRSPTR KIRKSSTDQV ESKDEVVSKQ GRMZM2G172322_P02 B4FVZ4 Putative uncharacterized protein seq=translation; coord=1:12987116..12993471:1; parent_transcript=GRMZM2G172322_T02; parent_gene=GRMZM2G172322 MFVYQIVDPH TVSVNGKLYT AKHILVSVGG RPSMPDIPGI EHVIDSDAAL DLPSKPEKIA IVGGGYIALE FAGIFNGLKS EVHVFIRQKK VLRGFDEEVR DFVAEQMSLR GITFHTEQSP QAITKSNDGL LSLKTNKENF GGFSHVMFAT GRRPNSKNLG LEAVGVEMDK NGAIVVDEYS RTSVDSIWAV GDVTNRVNLT PVALMEGGAF AKTVFGNEPT KPDYRAIPSA VFSQPPIGQV GLTEEQAIEE YGDVDVFVAN FRPLKATLSG LPDRVLMKIL VCATSNKVVG VHMCGDDAPE IIQGIAIAVK AGLTKQDFDA TIGIHPTSAE EFVTMRSPTR KIRKSSTDQV ESKDEVVSKQ 5.85727 -0.354986 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 10100 10100 10100 10100 9639 9175 6837 5438 3044 1540 798 314 96 45 11 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 10080 10080 10080 10080 9619 9154 6782 5191 2730 1174 474 174 23 1 0 0 1 2 3 4 5 6 7 4588 4292 1072 130 18 0 2 0 0 1 2 3 4 5 6 2224 6179 1537 149 12 1 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2683 (charge 3) 1893.94 3 150.925 152.057 155.082 155.367 156.076 159.077 167.093 169.097 171.077 171.113 175.071 175.119 183.113 183.927 188.405 190.052 194.129 195.088 197.107 198.123 199.107 201.123 212.102 216.134 226.153 229.118 242.115 244.165 258.144 275.171 285.198 297.589 315.17 329.193 344.144 348.069 362.203 452.243 461.272 474.18 519.243 536.269 603.283 612.268 647.305 729.342 746.367 815.412 847.337 875.409 975.445 1616.43 1779.32 1799.78 5 52 10 5 7 8 7 5 5 14 7 16 7 6 5 5 16 7 6 28 17 5 10 100 49 7 6 47 11 35 10 7 8 7 14 9 35 8 8 12 15 8 13 8 15 12 14 11 9 15 9 10 10 9 GRMZM2G177273_P01 NP_001149262 dolichyl-diphosphooligosaccharide--protein glycosyltransferase 67 kDasubunit seq=translation; coord=2:26391864..26395400:-1; parent_transcript=GRMZM2G177273_T01; parent_gene=GRMZM2G177273 MTDHRDVMLP LSLQYIATRA LLLLVIASAV SCSSLPPEDG IRVVSAEKRI DLTGPIVKVF LTLKVENAPT ASEASRVLLA FTPTEFQHLS IVKATRAEGK RKKKAFVPLS VQASELATTA PDAPRLYSVL LSTPLKPGDA TTLEVLYMLT HSLEPFPAEI SQSESQLVYY RDSAVLLSPY HVLEQVTYIK MPSNRIESFT RVDPTTRAGS EVKYGTYSNQ MPNSYLPVLV HYENNRPFAV VEELVRKVEI SHWGNIQITE QYKLKHGGAR HKGVFSRLEY QSRPSISGAS SFKNLLARLP PRVHSVYYRD EIGNISSSHL RTDSHKSDLE IEPRYPLFGG WHCTFTIGYG LPLQDFVFES VDGRRYINLT FGCPLLDTVV DDLTVKVVLP EGSKNPEHVV PFVTEKHLET SYSYLDVVGR TTVVLKKKNV VGEHNVPFQV YYEFNPIFML AEPLMLISAV LLFFVAFIAY LHMDLSIRKS S 3.73383 -0.201829 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 4919 4919 4919 4813 4489 4252 3842 2479 1945 1041 680 490 305 175 123 55 11 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4926 4926 4926 4820 4496 4247 3800 2415 1741 868 468 368 130 80 35 1 0 0 1 2 3 4 5 2599 2064 210 54 1 0 0 1 2 3 4 5 6 7 981 3378 461 96 10 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2688 (charge 2) 1231.59 2 155.081 155.117 158.092 159.077 165.062 169.097 171.076 171.113 175.119 181.096 183.076 183.111 185.091 186.087 186.123 187.071 195.088 198.087 199.071 199.108 201.123 204.134 209.129 213.087 216.098 219.116 226.155 229.118 233.165 235.119 241.091 244.165 252.134 256.093 261.158 270.11 272.171 297.122 315.165 327.128 333.187 343.161 385.133 409.704 414.201 474.182 491.99 494.932 543.254 549.258 620.297 662.338 666.281 705.867 717.343 721.346 758.378 818.399 820.404 889.443 948.308 1003.48 6 4 21 5 3 6 5 5 38 12 3 3 4 14 6 5 6 3 6 18 43 7 3 3 15 5 46 54 31 4 4 41 5 4 4 4 100 3 6 3 7 39 4 16 6 20 4 4 4 6 14 4 5 4 18 19 5 88 5 6 4 7 GRMZM2G133314_P01 NP_001146364 hypothetical protein LOC100279942 seq=translation; coord=3:5437230..5447745:-1; parent_transcript=GRMZM2G133314_T01; parent_gene=GRMZM2G133314 MLLRPSRGLS CLQPFSLHQS RAAMSETESA AAAPVAAAES KPRRLRGHKK GAVTCCVASS ARPGVVASSG EPGWSEAWSV VTPSKSRMYP ECFSSQDGCL CWFDLRTKDA LLTMEAANKP ISSICFKPGN EDFVYISAGN EILSFDVRMG TQSKPLETYN YNRDEINQIA VSSKGFLAAA DDSGDVKICS SVQFIPWRPW TAITGGLDSK LAAWDFSKGR TLFSIDYVAV SEEGILGGLY KVCAVARGDG AVDVVDLEYE LAPAKSKGPP RAAILTTRSK GAELGDGSCN QSRAKRIHLD YTMGGHTAAV SCVAFSAFGE KGKFLISGGN DASVKLWDWS KGFYSETNSK VDLVLDIDVK KKSETLSGCK LLLYPLEQEE EEGSSKLASL PAIAKKVLSY EEGIYAKLSR KWIEEGLRTV SIGRQEPGGF AAVLWRRREM GGLLLPHHRT FPNSLQASIP GPLSLHKGDR KNLHYFAPDV HLFCSLRQGF PRSSWSAVIR SEASGNAVAS PGTVIKRSKE ELITFFRDIQ TSIAECSRKA SKRTRKQPPD LFQEVRRREE QSHGGGDSGT DDVSEGPRKV KSLEDMNVAG LRELARARRM RGYSKLKKGE LIDRLRGATT 4.4085 -0.267182 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1192 1192 1192 1168 966 787 605 387 248 160 80 30 16 10 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 1193 1193 1193 1169 966 775 558 332 188 117 38 9 1 0 0 1 2 3 4 607 494 89 10 0 0 1 2 3 4 5 6 7 337 599 205 43 9 4 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2689 (charge 3) 2015.82 3 152.057 152.316 153.587 155.082 159.076 169.097 175.119 189.087 199.071 200.102 213.087 219.131 226.155 227.1 231.096 241.081 253.089 255.145 258.109 262.402 272.172 274.102 289.587 312.166 329.193 332.112 340.159 385.141 446.235 458.236 511.192 545.268 565.24 573.225 593.234 639.817 644.335 731.857 759.365 764.302 843.395 845.399 874.393 879.317 1121.49 1826.12 5 3 3 7 6 4 12 6 6 6 5 4 5 6 9 6 6 5 6 4 6 4 4 10 50 5 5 6 20 9 6 100 7 5 7 10 46 9 35 7 30 7 43 9 7 8 GRMZM5G856084_P01 seq=translation; coord=10:82046176..82050508:-1; parent_transcript=GRMZM5G856084_T01; parent_gene=GRMZM5G856084 MALVQFNGAL VPQLGEKPRL LSLSAAIAKA AYSDARFLTP KTGSRGRGKH LLSPSYSLHS QTSSEQLNHV PSSRFRQKRG SRFIVRAEAD FYSVLGVSRN ASKSEIKSAY RKLARSYHPD VNKDPGAEQK FKDISNAYEV LSDDEKRSIY DKYGEAGLKG AGMGTGDYSN PFDLFESLFE GFGGMGGMGG GRAARNRPMQ GDDESYNLVL NFKEAVFGVE KEIEITRLEG CNTCDGSGAK PGTKATTCKT CGGQGQVVSS TRTPLGIFQQ VSTCNTCGGT GEFSTPCNTC GGDGRVRRTK RISLKVPAGV DSGSRLRVRS EGNAGRRGGP PGDLYVFIDV LSDPVLKRDG TNILYTCKVS YIDAILGTTV KVPTVDGTVD LKIPSGTQPG TTLVMSKKGV PLLGKSNARG DQLVRVQVEI PKRLSSDEKK LIEELANLNK AQTANSRR GRMZM2G091811_P01 NP_001168577 hypothetical protein LOC100382361 seq=translation; coord=4:34554405..34559141:-1; parent_transcript=GRMZM2G091811_T01; parent_gene=GRMZM2G091811 MALVQFNGAL LPQLGEKPRP LSSPPAVARA TYADARFLAP KTSSRGRGKH LLSPSYSLHS QTSSEQINHV PSSRSRQKRG SSFVVRAEAD FYNVLGVSRN ASKSEIKSAY RKLARSYHPD VNKDPGAEQK FKEISNAYEV LSDDEKRSIY DKYGEAGLKG AGMGTGDYSN PFDLFESLFE GFGGMGGMGG GRAARNRPMQ GDDESYNLVL NFKDAVFGVE KEIEITRLEG CNTCDGSGAK PGTKATTCKT CGGQGQVVSS TRTPLGIFQQ VSTCNTCGGT GEFSTPCNTC SGDGRVRRTK RISLKVPAGV DSGSRLRVRS EGNAGRRGGP PGDLYVFIDV LSDPVLKRDG TNILYTCKVS YIDAILGTTV KVPTVDGMVD LKIPSGTQPG TTLVMAKKGV PLLGKSNARG DQLVRVQVEI PKRLSSDEKK LVEELANLNK AQTANSRS 6.68356 -0.310863 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 9600 9600 9378 9186 8343 7550 6350 4927 3496 2255 1338 717 364 214 96 43 25 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9604 9604 9382 9187 8329 7480 5943 4103 2201 1010 270 68 13 2 1 0 0 1 2 3 4 5 6 7 2867 3897 1727 885 166 61 8 0 0 1 2 3 4 5 6 7 1678 4187 2459 972 241 57 9 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2690 (charge 3) 1684.79 3 155.082 167.082 175.119 178.086 181.097 185.092 187.108 198.124 199.107 201.087 209.091 213.087 214.089 223.108 224.111 226.119 230.114 234.135 235.119 240.134 243.145 251.103 258.144 259.148 269.125 275.171 284.127 301.129 307.172 309.156 312.155 315.166 323.135 327.166 332.135 337.149 341.145 345.212 350.145 355.161 356.164 358.172 370.151 371.154 381.176 386.207 388.161 394.688 403.693 426.197 430.231 438.197 440.214 443.222 449.217 455.227 457.238 466.195 470.191 472.252 475.252 483.219 487.255 501.229 503.241 507.271 515.292 518.93 532.273 537.267 543.288 554.291 563.796 572.27 584.307 600.242 612.299 613.329 629.325 630.329 634.285 649.323 651.307 653.308 655.337 669.318 671.323 697.363 699.314 726.347 744.352 788.366 806.384 851.44 872.447 912.463 952.481 980.474 986.484 1013.53 16 2 7 5 2 9 4 7 8 4 7 33 2 39 8 45 2 4 14 9 7 2 29 4 2 13 2 7 2 9 13 19 2 8 8 2 6 8 2 24 5 5 54 11 4 11 49 7 7 9 6 5 4 5 4 2 10 2 4 5 9 12 2 10 4 4 5 2 22 5 7 6 42 5 9 14 12 12 100 36 4 2 22 2 2 18 7 17 5 2 8 4 2 8 2 2 7 9 2 2 GRMZM2G010406_P01 NP_001141957 hypothetical protein LOC100274106 seq=translation; coord=10:38522742..38534648:1; parent_transcript=GRMZM2G010406_T01; parent_gene=GRMZM2G010406 MASARGPCGI SVRSDFSSAC LIHKAGAPSN SVSGVMAVQV HRHRNKVRNG QAIRCAMATG KEQGAISTAS SGDQTKGGLR GKLNKVVLAY SGGLDTSVIV PWLRENYGCE VVCFTADVGQ GAIELEGLEK KAKASGACQL VVKDLKEEFV SEYIYPCLRA GAVYERKYLL GTSMARPVIA KAMVDVAKEV GADAVAHGCT GKGNDQVRFE LTFYALNPEL KVVAPWREWD ITGREDAIEY AKKHNVPVPV SKKSIYSRDR NLWHLSHEGD ILEDPANEPK EDMYMMSIAP ENAPSKPEYL EIGIIAGVPV SINGRDLSPA SLLAELNEIG GKHGIGRIDM VENRLVGMKS RGVYETPGGT IMAAAVRELE SLTLDRETMQ WKDIIALKYA ELVYAGRWFD PLRQSFDAFM EKVTATTTGS VTLKLYKGSV NVASRKSPYS LYREDISSFE NGEIYNQADA EGFIRLYGLP TRVRAMLEKG I GRMZM2G010406_P03 NP_001141957 hypothetical protein LOC100274106 seq=translation; coord=10:38522742..38534548:1; parent_transcript=GRMZM2G010406_T03; parent_gene=GRMZM2G010406 MASARGPCAI RCAMATGKEQ GAISTASSGD QTKGGLRGKL NKVVLAYSGG LDTSVIVPWL RENYGCEVVC FTADVGQGAI ELEGLEKKAK ASGACQLVVK DLKEEFVSEY IYPCLRAGAV YERKYLLGTS MARPVIAKAM VDVAKEVGAD AVAHGCTGKG NDQVRFELTF YALNPELKVV APWREWDITG REDAIEYAKK HNVPVPVSKK SIYSRDRNLW HLSHEGDILE DPANEPKEDM YMMSIAPENA PSKPEYLEIG IIAGVPVSIN GRDLSPASLL AELNEIGGKH GIGRIDMVEN RLVGMKSRGV YETPGGTIMA AAVRELESLT LDRETMQWKD IIALKYAELV YAGRWFDPLR QSFDAFMEKV TATTTGSVTL KLYKGSVNVA SRKSPYSLYR EDISSFENGE IYNQADAEGF IRLYGLPTRV RAMLEKGI GRMZM2G010406_P04 NP_001141957 hypothetical protein LOC100274106 seq=translation; coord=10:38522743..38534548:1; parent_transcript=GRMZM2G010406_T04; parent_gene=GRMZM2G010406 MASARGPCGI SVRSDFSSAC LIHKAGAPSN SVSGVMAVQV HRHRNKVRNG QAIRCAMATG KEQGAISTAS SGDQTKGGLR GKLNKVVLAY SGGLDTSVIV PWLRENYGCE VVCFTADVGQ AMVDVAKEVG ADAVAHGCTG KGNDQVRFEL TFYALNPELK VVAPWREWDI TGREDAIEYA KKHNVPVPVS KKSIYSRDRN LWHLSHEGDI LEDPANEPKE DMYMMSIAPE NAPSKPEYLE IGIIAGVPVS INGRDLSPAS LLAELNEIGG KHGIGRIDMV ENRLVGMKSR GVYETPGGTI MAAAVRELES LTLDRETMQW KDIIALKYAE LVYAGRWFDP LRQSFDAFME KVTATTTGSV TLKLYKGSVN VASRKSPYSL YREDISSFEN GEIYNQADAE GFIRLYGLPT RVRAMLEKGI GRMZM2G010406_P05 NP_001141957 hypothetical protein LOC100274106 seq=translation; coord=10:38522743..38534548:1; parent_transcript=GRMZM2G010406_T05; parent_gene=GRMZM2G010406 MASARGPCGI SVRSDFSSAC LIHKAGAPSN SVSGVMAVQV HRHRNKVRNG QAIRCAMATG KEQGAISTAS SGDQTKGGLR GKLNKVVLAY SGGLDTSVIV PWLRENYGCE VVCFTADVGQ GAIELEGLEK KAKASGACQL VVKDLKEEFV SEYIYPCLRA GAVYERKYLL GTSMARPVIA KAMVDVAKEV GADAVAHGCT GKGNDQGDIL EDPANEPKED MYMMSIAPEN APSKPEYLEI GIIAGVPVSI NGRDLSPASL LAELNEIGGK HGIGRIDMVE NRLVGMKSRG VYETPGGTIM AAAVRELESL TLDRETMQWK DIIALKYAEL VYAGRWFDPL RQSFDAFMEK VTATTTGSVT LKLYKGSVNV ASRKSPYSLY REDISSFENG EIYNQADAEG FIRLYGLPTR VRAMLEKGI GRMZM2G010406_P06 NP_001141957 hypothetical protein LOC100274106 seq=translation; coord=10:38522868..38534548:1; parent_transcript=GRMZM2G010406_T06; parent_gene=GRMZM2G010406 MAVQVHRHRN KVRNGQAIRC AMATGKEQGA ISTASSGDQT KGGLRGKLNK VVLAYSGGLD TSVIVPWLRE NYGCEVVCFT ADVGQGAIEL EGLEKKAKAS GACQLVVKDL KEEFVSEYIY PCLRAGAVYE RKYLLGTSMA RPVIAKAMVD VAKEVGADAV AHGCTGKGND QVRFELTFYA LNPELKVVAP WREWDITGRE DAIEYAKKHN VPVPVSKKSI YSRDRNLWHL SHEGDILEDP ANEPKEDMYM MSIAPENAPS KPEYLEIGII AGVPVSINGR DLSPASLLAE LNEIGGKHGI GRIDMVENRL VGMKSRGVYE TPGGTIMAAA VRELESLTLD RETMQWKDII ALKYAELVYA GRWFDPLRQS FDAFMEKVTA TTTGSVTLKL YKGSVNVASR KSPYSLYRED ISSFENGEIY NQADAEGFIR LYGLPTRVRA MLEKGI GRMZM2G010406_P02 NP_001141957 hypothetical protein LOC100274106 seq=translation; coord=10:38522743..38534549:1; parent_transcript=GRMZM2G010406_T02; parent_gene=GRMZM2G010406 MASARGPCGI SVRSDFSSAC LIHKAGAPSN SVSGVMAVQV HRHRNKVRNG QAIRCAMATG KEQGAISTAS SGDQTKGGLR GKLNKVVLAY SGGLDTSVIV PWLRENYGCE VVCFTADVGQ GAIELEGLEK KAKASGACQL VVKDLKEEFV SEYIYPCLRA GAVYERKYLL GTSMARPVIA KAMVDVAKEV GADAVAHGCT GKGNDQVRFE LTFYALNPEL KVVAPWREWD ITGREDAIEY AKKHNVPVPV SKKSIYSRDR NLWHLSHENL SYQNFTRWLR SNF 5.81339 -0.352327 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4691 4691 4579 4324 4191 2765 2266 1229 737 339 205 69 13 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4708 4708 4596 4341 4196 2562 1953 961 458 166 98 15 1 0 0 1 2 3 4 2827 1666 191 25 0 0 1 2 3 4 5 6 7 828 3004 767 90 3 5 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2691 (charge 2) 1479.69 2 152.057 155.081 157.061 157.097 157.134 159.076 167.055 171.077 175.119 186.087 189.087 198.087 201.123 212.104 214.083 216.097 222.086 225.042 230.112 232.14 240.098 241.081 248.16 258.108 260.088 280.093 285.009 297.119 299.061 315.129 323.136 325.186 329.145 340.162 344.978 347.119 351.131 355.068 359.028 368.157 376.219 384.148 386.167 388.146 415.035 418.158 482.702 491.245 523.301 548.267 551.225 579.252 606.235 635.3 690.853 704.345 709.277 722.331 783.061 793.369 806.358 894.417 964.42 981.449 983.466 1056.32 1094.52 1222.59 2 2 2 2 2 2 22 3 9 4 4 2 7 9 4 2 6 3 3 4 42 10 9 12 2 3 3 100 49 11 2 2 2 16 8 2 3 3 23 27 12 2 4 2 2 3 3 3 2 11 2 3 2 14 14 2 8 21 2 14 3 11 7 33 3 2 10 7 GRMZM2G079668_P01 NP_001146752 hypothetical protein LOC100280354 seq=translation; coord=1:263143605..263149463:1; parent_transcript=GRMZM2G079668_T01; parent_gene=GRMZM2G079668 MATTTFPTST PFFAAHHGPR RSRPSISAAV YARGRRWRPL RVACEKVVGI DLGTTNSAVA AMEGGKPTIV TNAEGARTTP SVVAYTKSGD RLVGQIAKRQ AVVNPENTFF SVKRFIGRKM NEVDEESKQV SYLVIRDDNG NVKLDCPAIG KQFAAEEISA QVLRKLVDDA SKFLNDKVTK AVITVPAYFN DSQRTATKDA GRIAGLEVLR IINEPTAASL AYGFEKKNNE TILVFDLGGG TFDVSVLEVG DGVFEVLSTS GDTHLGGDDF DKRIVDWLAG NFKNDEGIDL LKDKQALQRL TEAAEKAKME LSSLTQTNMS LPFITATADG PKHIETTLTR AKFEELCSDL LDRLRTPVDN ALRDAKLQFK DIDEVILVGG STRIPAVQEL VKKMTGKDPN VTVNPDEVVA LGAAVQAGVL SGDVSDIVLL DVTPLSLGLE TLGGVMTKII PRNTTLPTSK SEVFSTAADG QTSVEINVLQ GEREFVRDNK SIGSFRLDGI PPAPRGVPQI EVKFDIDANG ILSVSAVDKG TGKKQDITIT GASTLPKDEV ERMVGEAEKF AKEDKEKRDA IDTKNQAESV IYQTEKQLKE LGDKVPGDVK GKVESKLQEL KDAVAGGSTQ TMKDAMSALN QEVMQIGQAL YSQQGAPGAG PGAADASSAG SAGTSEKPGD GGDVIDADFT DSK GRMZM2G079668_P02 NP_001146752 hypothetical protein LOC100280354 seq=translation; coord=1:263143605..263149455:1; parent_transcript=GRMZM2G079668_T02; parent_gene=GRMZM2G079668 MATTTFPTST PFFAAHHGPR RSRPSISAAV YARGRRWRPL RVACEKVVGI DLGTTNSAVA AMEGGKPTIV TNAEGARTTP SVVAYTKSGD RLVGQIAKRQ AVVNPENTFF SVKRFIGRKM NEVDEESKQV SYLVIRDDNG NVKLDCPAIG KQFAAEEISA QVLRKLVDDA SKFLNDKVTK AVITVPAYFN DSQRTATKDA GRIAGLEVLR IINEPTAASL AYGFEKKNNE TILVFDLGGG TFDVSVLEVG DGVFEVLSTS GDTHLGGDDF DKRIVDWLAG NFKNDEGIDL LKDKQALQRL TEAAEKAKME LSSLTQTNMS LPFITATADG PKHIETTLTR AKFEELCSDL LDRLRTPVDN ALRDAKLQFK DIDEVILVGG STRIPAVQEL VKKMTGKDPN VTVNPDEVVA LGAAVQAGVL SGDVSDIVLL DVTPLSLGLE TLGGVMTKII PRNTTLPTSK SEVFSTAADG QTSVEINVLQ GEREFVRDNK SIGSFRLDGI PPAPRGVPQI EVKFDIDANG ILSVSAVDKG TGKKQDITIT GASTLPKDEV ERMVGEAEKF AKEDKEKRDA IDTKNQAESV IYQTEKQLKE LGDKVPGDVK GKVESKLQEL KDAVAGGSTQ TMKDAMSALN QEVMQIGQAL YSQQGAPGAG PGAADASSAG SAGTSEKPGD GGDVIDADFT DSK GRMZM2G111475_P01 seq=translation; coord=5:12580030..12585678:-1; parent_transcript=GRMZM2G111475_T01; parent_gene=GRMZM2G111475 MATTTFPTST PFFAAHHGPR RSRPSISAAV YSRSRRWRPL RVACEKVVGI DLGTTNSAVA AMEGGKPTIV TNAEGARTTP SVVAYTKSGD RLVGQIAKRQ AVVNPENTFF SVKRFIGRKM NEVDEESKQV SYRVIRDDNG NVKLDCPAIG KQFAAEEISA QVLRKLVDDA SKFLNDKVTK AVITVPAYFN DSQRTATKDA GRIAGLEVLR IINEPTAASL AYGFEKKNNE TILVFDLGGG TFDVSVLEVG DGVFEVLSTS GDTHLGGDDF DKRIVDWLAG NFKNDEGIDL LKDKQALQRL TEAAEKAKME LSSLTQTNIS LPFITATADG PKHIETTLTR AKFEELCSDL LDRLRTPVDN ALRDAKLQFK DIDEVILVGG STRIPAVQEL VKKMTGKDPN VTVNPDEVVA LGAAVQAGVL SGDVSDIVLL DVTPLSLGLE TLGGVMTKII PRNTTLPTSK SEVFSTAADG QTSVEINVLQ GEREFVRDNK SLGSFRLDGI PPAPRGVPQI EVKFDIDANG ILSVTAVDKG TGKKQDITIT GASTLPKDEV ERMVDEAEKF AKEDKEKRDA IDTKNQAESV IYQTEKQLKE LGDKVPGDVK GKVESKLQEL KDAVAGGSTQ TMKDAISALN QEVMQIGQSL YSQQGAPGAG PGPADASAGS AAGTSEKPGD DGDVIDADFT DSK GRMZM2G111475_P02 seq=translation; coord=5:12580030..12585678:-1; parent_transcript=GRMZM2G111475_T02; parent_gene=GRMZM2G111475 MELSSLTQTN ISLPFITATA DGPKHIETTL TRAKFEELCS DLLDRLRTPV DNALRDAKLQ FKDIDEVILV GGSTRIPAVQ ELVKKMTGKD PNVTVNPDEV VALGAAVQAG VLSGDVSDIV LLDVTPLSLG LETLGGVMTK IIPRNTTLPT SKSEVFSTAA DGQTSVEINV LQGEREFVRD NKSLGSFRLD GIPPAPRGVP QIEVKFDIDA NGILSVTAVD KGTGKKQDIT ITGASTLPKD EVERMVDEAE KFAKEDKEKR DAIDTKNQAE SVIYQTEKQL KELGDKVPGD VKGKVESKLQ ELKDAVAGGS TQTMKDAISA LNQEVMQIGQ SLYSQQGAPG AGPGPADASA GSAAGTSEKP GDDGDVIDAD FTDSK 4.70284 -0.241171 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 5419 5419 5160 4764 4552 4238 3101 2566 1640 1081 617 387 250 128 60 27 12 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5368 5368 5109 4713 4444 4128 2876 2143 1252 576 236 113 55 3 2 2 1 0 0 1 2 3 4 5 2959 1996 428 51 2 0 0 1 2 3 4 5 6 7 1119 3231 914 151 14 1 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2693 (charge 2) 1165.55 2 152.056 153.066 153.102 155.081 157.097 157.108 158.092 159.076 160.079 167.118 169.097 170.046 171.076 171.112 173.092 175.119 181.097 183.112 183.148 184.072 185.092 186.086 186.122 187.071 188.074 195.112 197.13 198.123 199.108 202.082 204.134 207.112 209.092 212.102 214.352 226.155 230.113 240.134 242.15 244.165 252.097 255.109 258.146 259.143 270.143 272.171 274.186 278.152 283.107 286.14 297.119 323.207 331.16 337.189 341.22 355.197 365.182 379.2 383.193 395.165 440.256 446.677 452.248 466.273 470.263 483.226 490.234 507.262 514.223 568.247 574.282 585.261 608.307 613.33 652.342 661.325 670.714 677.302 689.32 752.348 791.375 809.382 811.376 819.024 880.415 882.414 896.401 903.475 8 2 2 8 4 3 3 55 4 2 9 2 4 17 4 20 4 3 3 3 3 3 2 100 8 4 2 3 36 3 3 4 3 4 2 60 10 11 7 17 2 2 12 3 4 3 16 3 2 38 2 3 2 2 3 7 2 21 7 2 6 2 7 2 3 2 8 3 2 2 2 2 9 2 2 3 2 3 2 9 3 32 2 2 32 4 3 3 GRMZM2G134738_P01 NP_001144681 hypothetical protein LOC100277708 seq=translation; coord=8:142871869..142875661:-1; parent_transcript=GRMZM2G134738_T01; parent_gene=GRMZM2G134738 MWRRLHTLAP ALRRATAAAA GGPAVPASSA ARAAPLSSAA AGFRRTSPLL SEDKPARVED VMPIATGLER EELEAELQGK KRFDMDSPVG PFGTKEEPAV IESYYNKRIV GCPGGEGEDE HDVVWFWLKK DEPHECPVCS QYFVLKVIGD GGDPDGHDDE DDGHH GRMZM2G134738_P02 NP_001144681 hypothetical protein LOC100277708 seq=translation; coord=8:142871873..142875661:-1; parent_transcript=GRMZM2G134738_T02; parent_gene=GRMZM2G134738 MWRRLHTLAP ALRRATAAAA GGPAVPASSA ARAAPLSSAA AGFRRTSPLL SEDKPARVED VMPIATGLER EELEAELQGK KRFDMDSPVG PFGTKEEPAV IESYYNKRIV GCPGGEGEDE HDVVWFWLKK DEPHECPVCS QYFLKVIGDG GDPDGHDDED DGHH GRMZM2G064753_P01 B6SIM0 Cytochrome c oxidase polypeptide Vb seq=translation; coord=3:224922109..224926422:1; parent_transcript=GRMZM2G064753_T01; parent_gene=GRMZM2G064753 MWRRLHTLAP ALRRATAAAA GAPAASASSA ARAAPLSSAA AAFRRTSPLL SGDKPASVED VMPIATGLER EELEAELKGK KRFDMDPLVG PFGTKEEPSV VESYYNKRIV GCPGGEGEDE HDVVWFWLKK DEPHECPVCS QYFVLKVIGD GGDPDGHDDE DDGHH 2.89753 -0.251959 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 659 659 659 614 439 379 234 154 63 22 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 671 671 671 626 451 381 227 132 67 19 1 0 0 1 0 0 1 2 3 4 360 278 58 1 0 0 1 2 3 4 5 6 7 185 406 87 7 0 0 12 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2695 (charge 3) 1958.74 3 152.057 154.127 155.081 156.077 157.081 157.097 158.093 167.056 169.096 172.071 172.107 175.119 184.071 185.091 185.165 186.167 187.107 195.088 199.108 201.098 209.127 213.16 226.155 230.077 239.093 241.092 244.164 246.98 270.109 275.125 281.087 284.009 286.113 292.104 298.113 310.113 315.12 327.134 329.663 338.109 345.105 350.154 355.07 360.031 361.157 383.193 402.125 425.138 439.163 465.183 522.193 530.898 538.27 576.62 590.297 595.293 604.308 614.297 620.327 633.315 638.331 645.317 652.645 664.736 669.206 673.235 684.322 710.246 725.427 777.379 784.231 812.882 824.268 881.289 907.31 939.299 978.311 997.338 1190.41 1253.97 1720.51 1921.31 2 2 3 80 4 2 5 4 3 7 3 15 13 3 100 16 3 8 15 4 3 18 38 7 4 14 5 3 4 16 4 3 6 3 3 5 4 4 3 5 4 17 14 5 6 5 5 5 5 16 15 5 5 6 6 7 4 19 13 7 4 6 46 5 5 20 17 4 7 5 5 6 6 6 4 18 6 6 6 5 5 6 AC198353.5_FGP001 seq=translation; coord=2:188791940..188794503:1; parent_transcript=AC198353.5_FGT001; parent_gene=AC198353.5_FG001 MVGNNTVASL FYYSLLIICA AAWHADASQA DRLREFIRSR RNSPSEAADK GTFEVANIGH SVASSLLSTS SYSDSEQSAL KAADKITALP GQPDGGVDFD QYAGYVTVDE KNGRALFYYL VEAPQDASAK PLLLWLNGGP GCSSLGYGAM QELGPFRVNS DNKTLSRNKA AWNNVANVIF LESPAGVGFS YSNTSSDYGL SGDRRTAADA YLFLANWLER FPEYKSRPFY ISGESYAGHY VPELAATILT QNSYNSRTAI NLRGILVGNP LLDSYMNLKG AVAYYWSHGL MSDEVFDNIT RHCKYDSSDG VACSGALEAV DPGQIDPYNV YAPICVDAAN GAYYPTGYLP GYDPCSDYYT YSYLNDPAVQ NAFHARTTSW NLNWTDAPIS MVPTVAGLIE KKLPVWIFSG DFDSVCPLPA TRFSIHDLNL HVTTPWRPWT VNMEVGGYVQ QYQGGFTFAS VRGAGHMVPS SQADRALVLL DSFLKGVLPP YVQEQ 5.58645 -0.30197 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 5527 5527 5527 5220 5039 4604 4066 3530 3067 1942 1418 794 393 160 75 21 9 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 5522 5522 5522 5215 5024 4542 3937 3322 2841 1560 839 199 1 0 0 1 2 3 4 5 6 2122 2269 916 175 44 4 0 0 1 2 3 4 5 6 7 814 2494 1503 565 132 15 5 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2696 (charge 3) 1312.61 3 151.01 153.066 154.086 155.082 156.076 157.06 157.097 157.108 157.134 158.092 159.076 166.061 166.097 167.081 167.093 169.096 169.133 171.076 171.112 172.107 173.092 173.128 175.119 176.122 178.061 181.061 183.112 185.091 185.129 186.124 187.071 187.107 189.088 189.134 194.129 195.087 195.113 197.128 199.107 201.087 204.134 211.12 214.13 216.097 218.149 226.154 235.118 240.134 244.166 251.15 253.092 258.144 263.134 267.109 274.187 276.123 290.145 295.151 304.161 310.176 312.176 323.141 326.125 344.154 346.551 349.194 351.171 361.184 371.239 378.183 405.75 416.198 420.199 423.508 430.256 435.254 439.845 449.252 454.186 468.292 472.212 474.602 480.718 486.274 489.238 500.279 502.288 508.297 517.8 525.262 536.271 553.255 576.273 646.362 651.364 663.303 683.388 698.376 760.356 771.33 3 3 4 15 3 8 11 3 16 26 12 4 4 9 8 13 8 3 8 14 14 4 100 4 3 2 3 10 4 5 3 3 3 13 18 12 6 10 12 12 4 4 15 4 3 19 5 8 12 3 3 3 11 5 8 3 8 3 3 5 4 9 7 3 3 2 3 26 5 4 3 3 10 16 4 3 21 5 18 4 16 3 3 3 11 9 3 4 4 11 4 15 15 3 3 12 3 3 3 3 GRMZM2G339540_P04 NP_001146031 hypothetical protein LOC100279562 seq=translation; coord=3:224163656..224168718:-1; parent_transcript=GRMZM2G339540_T04; parent_gene=GRMZM2G339540 MAGPSVPAAA LAALLAVAAL TCCAVAEPPP SERSALLAFL TATPHERRLG WNASTPACGW VGVTCDNANS TVVEVRLPGV GLVGAIPPGT LGRLTNLRVL SLRSNRVLGT VPDDVLQLAS LKALFLQQNL LSGPIPTGIQ KLGGLERLVL SHNNLSGSIP FALNKLTALR VLKLDGNHLS GSIPSISIAG LGALNVSDNN LNGSIPKSLS HFPRESFAGN LQLCGDPLPP CSSSFFPPAP SPGLSPGPAT GSSKRRKLSG AAIAGIVVGG VVVGLLLLIA VVLCAVSKRR SAGAREGPKA ATSSAAAAAG SGATRGQPPP ASGEGGGMTS SSKEDLGGGA SGSAAAVAAA AAGGAAGEQS RLVFVGKGAG YSFDLEDLLR ASAEVLGKGS VGTSYKAVLE EGTTVVVKRL KDVAVQRREF DAHMEAVGRV EHRNVLPVRA YYFSKDEKLL VYDYLPNGSL SAMLHGSRGS GRTPLDWEAR MRAALSAARG LAHLHTAHNL VHGNVKASNV LLRPDADAAA LSDFGLHQLF AASTAARGGG YRAPEAVDAR RLTYKSDVYS LGVLLLELLT GKSPSHASLE GDGTLDLPRW VQSVVREEWT AEVFDVELVR LGASAEEEMV ALLQVAMACV ATVPDARPDA PDVVRMVEEI GAGHGGRTTT EESEGVRATS EEERSGGTPP AAPTP GRMZM2G339540_P05 NP_001146031 hypothetical protein LOC100279562 seq=translation; coord=3:224154533..224168718:-1; parent_transcript=GRMZM2G339540_T05; parent_gene=GRMZM2G339540 MAGPSVPAAA LAALLAVAAL TCCAVAEPPP SERSALLAFL TATPHERRLG WNASTPACGW VGVTCDNANS TVVEVRLPGV GLVGAIPPGT LGRLTNLRVL SLRSNRVLGT VPDDVLQLAS LKALFLQQNL LSGPIPTGIQ KLGGLERLVL SHNNLSGSIP FALNKLTALR VLKLDGNHLS GSIPSISIAG LGALNVSDNN LNGSIPKSLS HFPRESFAGN LQLCGDPLPP CSSSFFPPAP SPGLSPGPAT GSSKRRKLSG AAIAGIVVGG VVVGLLLLIA VVLCAVSKRR SAGAREGPKA ATSSAAAAAG SGATRGQPPP ASGEGGGMTS SSKEDLGGGA SGSAAAVAAA AAGGAAGEQS RLVFVGKGAG YSFDLEDLLR ASAEVLGKGS VGTSYKAVLE EGTTVVVKRL KDVAVQRREF DAHMEAVGRV EHRNVLPVRA YYFSKDEKLL VYDYLPNGSL SAMLHGHDLQ VLIQRNLLNF MKRRTTGYCY CLLTKIKPRQ FNIKDRMIRT RHLSIHP GRMZM2G339540_P03 NP_001146031 hypothetical protein LOC100279562 seq=translation; coord=3:224163656..224168717:-1; parent_transcript=GRMZM2G339540_T03; parent_gene=GRMZM2G339540 MAGPSVPAAA LAALLAVAAL TCCAIPPGTL GRLTNLRVLS LRSNRVLGTV PDDVLQLASL KALFLQQNLL SGPIPTGIQK LGGLERLVLS HNNLSGSIPF ALNKLTALRV LKLDGNHLSG SIPSISIAGL GALNVSDNNL NGSIPKSLSH FPRESFAGNL QLCGDPLPPC SSSFFPPAPS PGLSPGPATG SSKRRKLSGA AIAGIVVGGV VVGLLLLIAV VLCAVSKRRS AGAREGPKAA TSSAAAAAGS GATRGQPPPA SGEGGGMTSS SKEDLGGGAS GSAAAVAAAA AGGAAGEQSR LVFVGKGAGY SFDLEDLLRA SAEVLGKGSV GTSYKAVLEE GTTVVVKRLK DVAVQRREFD AHMEAVGRVE HRNVLPVRAY YFSKDEKLLV YDYLPNGSLS AMLHGSRGSG RTPLDWEARM RAALSAARGL AHLHTAHNLV HGNVKASNVL LRPDADAAAL SDFGLHQLFA ASTAARGGGY RAPEAVDARR LTYKSDVYSL GVLLLELLTG KSPSHASLEG DGTLDLPRWV QSVVREEWTA EVFDVELVRL GASAEEEMVA LLQVAMACVA TVPDARPDAP DVVRMVEEIG AGHGGRTTTE ESEGVRATSE EERSGGTPPA APTP 5.1906 -0.314582 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 2194 2194 2194 2101 1731 1268 972 623 436 286 103 28 8 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2200 2200 2200 2107 1737 1202 929 551 333 181 59 17 12 10 1 0 0 1 2 3 4 867 1182 142 9 0 0 1 2 3 4 5 6 7 1155 818 203 18 0 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2698 (charge 2) 1631.73 2 152.636 167.056 167.118 169.061 169.097 171.077 185.09 186.087 187.09 189.087 195.112 201.123 211.292 217.081 226.154 228.098 234.144 244.048 266.15 270.154 274.372 278.562 285.009 288.118 299.059 321.177 338.146 355.069 363.202 408.208 429.134 509.256 626.776 666.301 673.765 675.302 697.318 715.319 723.833 811.365 824.665 952.459 997.424 1084.45 1155.49 1230.6 1252.54 1254.55 1349.6 1446.63 2 5 7 4 7 5 3 24 4 3 13 3 3 19 4 4 5 3 3 3 3 3 3 28 12 5 3 14 4 4 3 4 15 8 4 100 5 5 38 14 6 7 6 24 7 8 42 5 17 6 GRMZM2G083841_P01 P04711 Phosphoenolpyruvate carboxylase 1 (PEPCase 1)(PEPC 1)(EC 4.1.1.31) seq=translation; coord=9:61296279..61301686:1; parent_transcript=GRMZM2G083841_T01; parent_gene=GRMZM2G083841 GRMZM5G871264_P01 seq=translation; coord=10:136892662..136893603:-1; parent_transcript=GRMZM5G871264_T01; parent_gene=GRMZM5G871264 MASTKAPGPG EKHHSIDAQL RQLVPGKVFE DDKLIEYDAL LVDRFLNILQ DLHGPSLREF VQECYEVSTD YEGKGDTTKL GELSAKLTGL APADAILVAS SILHMLNLAN LAEEVQITHC RRNSKLKKGG FADEGSATTE SDIEETLKRL VSEVGKSPKE VFEALKNQTV DLVFTAHPTQ SSRRSLLQKN ARIRNCLTQL NARTSLTMTS KSSMRLCREW YVH 4.69657 -0.253869 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 8287 8287 8236 6675 5863 5057 4032 2910 1894 1192 684 358 180 107 50 21 15 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8290 8290 8239 6674 5630 4745 3261 2162 1164 547 340 116 24 6 1 0 0 1 2 3 4 5 4261 3295 627 102 6 0 0 1 2 3 4 5 6 7 1607 4409 1985 235 41 10 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2700 (charge 2) 1076.56 2 152.082 155.081 156.076 156.113 157.108 158.092 159.076 167.055 168.055 169.051 171.076 171.112 172.107 173.092 173.128 175.071 175.096 175.119 176.121 179.093 180.076 185.055 185.092 187.071 193.097 195.075 195.112 197.103 197.128 198.087 200.103 202.108 207.087 213.087 214.108 221.091 223.063 225.098 227.103 230.104 232.141 239.094 240.097 244.166 247.129 258.098 259.101 271.174 275.125 282.053 283.049 288.203 290.16 299.061 301.059 303.057 314.135 316.15 326.136 345.976 346.973 360.029 361.025 382.208 387.19 395.203 413.212 416.038 417.034 428.214 430.239 435.195 452.219 461.247 470.252 487.298 489.303 501.275 506.243 515.245 521.266 529.778 561.255 578.268 584.314 590.263 596.279 602.326 634.292 643.32 715.409 731.362 759.345 784.435 802.44 804.452 812.425 922.479 939.496 941.498 2 4 5 4 4 20 6 55 15 13 2 5 2 15 8 4 3 66 5 4 5 2 5 7 2 4 4 7 5 2 8 37 4 4 7 2 10 29 6 6 5 11 8 6 30 74 10 11 83 5 4 6 4 72 77 2 18 9 4 9 17 7 13 4 7 4 2 7 23 2 2 4 8 20 21 78 2 4 2 2 9 4 4 5 2 2 24 15 2 2 23 2 4 7 100 10 10 4 22 2 GRMZM2G123558_P01 NP_001130834 hypothetical protein LOC100191938 seq=translation; coord=3:1711864..1714237:1; parent_transcript=GRMZM2G123558_T01; parent_gene=GRMZM2G123558 GRMZM2G123558_P02 NP_001130834 hypothetical protein LOC100191938 seq=translation; coord=3:1711861..1714122:1; parent_transcript=GRMZM2G123558_T02; parent_gene=GRMZM2G123558 4.7511 -0.243646 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 6057 6057 6057 5749 5488 5191 3180 2693 1308 605 304 159 117 52 40 34 12 11 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6021 6021 6021 5713 5452 5141 3112 2406 1071 302 92 22 2 1 1 0 0 1 2 3 4 5 3834 2034 193 8 1 0 0 1 2 3 4 5 6 7 1093 4353 512 65 34 3 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2702 (charge 2) 1543.72 2 155.08 157.5 158.091 164.096 167.082 168.066 169.097 175.119 183.076 201.086 213.087 226.154 231.097 235.118 241.081 259.092 268.129 282.61 297.19 337.186 355.196 387.187 415.181 434.234 466.228 484.239 493.398 531.144 550.625 563.281 594.796 611.327 634.316 643.324 705.346 743.862 785.373 802.404 804.408 900.506 913.435 931.44 1042.47 1060.49 1062.5 1188.57 1221.63 1285.64 5 3 3 4 4 4 4 22 5 4 4 96 11 6 7 6 4 4 5 6 23 4 17 14 6 12 4 4 4 5 20 6 12 42 5 4 4 100 12 4 7 34 5 44 5 12 6 6 GRMZM2G015875_P01 seq=translation; coord=4:161070624..161077204:-1; parent_transcript=GRMZM2G015875_T01; parent_gene=GRMZM2G015875 MFTPQGKGWT GWSTPTPANQ RSGGGAPAAS APLGKGKGRV AELEQELHEY QYNMGLLLIE KKEWAAKFEE ISEVLTQKEE ILKREQAAHL NAISEYERRE ENMRKALGVE KQCVADLEKA LRDIRAEIAE VKFTSEKKIT DAQSLEASLE EKSLEIEGKL HAADAKLAEA NRKKSQADRD LEEAEARQRR LEKEKLYFET ERKAREKQLK EQEESLQEWE KKLKESQNRL NELQRSINER EERANKNDQL FKIKQDELEE ARRTVEAAKV TLKVKEDDIN KRLNELHLQE KDADSKRSAL EEQGKKLDER EAKVTNREKE GLQKLLEDHQ VELESKRRDF ELELERERKS FDQNMTQKQA DLLKREKDVK SLEAKLSKSE QALNDKKKSM ENLQNDLDAK SKALKSWDES LKNDEKRLLK EKQQMDHERE QLETYKLELE KIKSALEAEK EKISEEQNNL KLTAQERQEH SLLIAKLKKE IEEYRMRSNS LSEEMEDLRK QRQKFEEEWE QLDEKRALLV EEDKRLNIER MNLERWRDNE EKRLNDMKLK MDEEYKQQLE SLERKEKALS DDMKHKQMEN DEFLKGERAD VQRKLQLKRH ELEMEMEQKQ ATKEKELEEK ENELNKKIDF VENKLRHAIE LNESKIEKLL LEKREVQMER ELLLEERKKT ETDKADIRRD IESLHSLSKS LKERREAYNR DRSRLIELFE KYKACKNCGI SIFEGLDSLL LKDSAEIEHP SLAVEGDDHA LTTDTSGPDT GTLVNSGGRF SLLQKCSRLF KFSPRKKGEQ SSEQPSERNI SFGARLEEAT QSDGDYVPTP VYEIAHDSFN AEDELPSDGE TRENEESERH DIADNAQMES SVGVADNSID ILGTKSFDGA NDMAVEATIV SVDQNGEDSV VPAEAGVEPE TSEQGRRQQN QRGRRKGGMK RTRSVNAVVE DAKMILGEVF EEKTDDQGDT VKVGATRKRR FAGATISEQD EEGSEAHSES VSLGGQRRKR RQTAGAVTDA PGERRYNLRH SRAANAGAAT AQADKKKSSK ARNKHTVEAS ADDTEGTSKV VEEPAPESKR VSESADYDAS QLHEFSQVEV GDAHAVDGEG AGEEDGDILD GQDALPDVPM TPSGSEFGAE QEDEDDDDSE RRNQSISKKL WSFFTT 5.6882 -0.264568 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 7618 7618 7618 7510 7259 6934 6395 5742 5106 3901 2966 1513 913 409 180 97 50 33 28 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7627 7627 7627 7519 7268 6916 6288 5488 4856 3177 1872 601 167 27 1 0 0 1 2 3 4 5 6 7 2575 3062 1441 418 90 37 9 0 0 1 2 3 4 5 6 7 1211 3184 2123 863 204 22 13 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2703 (charge 3) 1428.72 3 152.057 154.086 155.081 155.117 157.096 157.108 158.092 159.077 166.061 167.055 169.097 169.134 171.076 171.113 173.056 173.092 173.128 175.119 176.122 177.102 181.097 183.112 185.092 185.164 186.124 187.071 187.107 189.087 192.996 193.097 195.112 197.128 198.125 199.108 201.123 213.087 217.081 222.626 226.154 227.102 229.621 232.14 239.095 241.083 244.165 248.159 251.148 255.146 258.144 268.141 272.171 276.156 284.125 285.197 295.104 299.063 300.063 315.168 321.167 331.197 343.19 347.193 361.183 368.229 396.146 404.223 427.181 437.239 441.208 444.246 452.222 458.235 466.238 495.832 511.262 514.273 525.192 529.272 536.279 540.287 557.313 577.286 585.31 587.318 596.228 603.3 644.299 656.382 678.338 684.38 685.373 698.389 706.35 732.337 741.39 745.344 747.362 777.403 900.451 1000.46 5 4 15 4 5 14 20 13 4 20 43 10 15 12 4 11 14 100 5 17 4 6 6 6 4 4 4 11 5 5 6 5 5 21 9 16 23 6 36 17 22 6 27 4 35 5 4 5 23 4 6 6 16 4 5 20 5 4 5 4 4 14 16 4 4 5 4 11 20 33 5 71 4 30 4 37 10 68 4 4 63 4 99 5 11 5 23 27 4 27 5 4 4 5 4 24 4 4 10 4 GRMZM2G145589_P01 NP_001130788 hypothetical protein LOC100191892 seq=translation; coord=6:129031310..129036927:1; parent_transcript=GRMZM2G145589_T01; parent_gene=GRMZM2G145589 MAPKLPVLRR ARSLPLLFLA NFVVLQLQCS YGLPLQNEPR QIYIIYLGGR QSDDADLVTA SHHDLLASVV GSKQEAVESI IYSYRHGFSG FAALLTKSQS TKIAGLPGVV SVTKNRVHHT RTTRSWDFVG LHYNDDQPNG LLAKAAKYGD DVIVGVIDSG FWPESPSYAD HGYGPPPSRW KGVCQGGDDG SFGPNNCNRK VIGARWYAAG VSDDKERLKG EYMSPRDAEG HGTHTSSTAA GNVVGNVSFH GLAAGAARGG APRARLAIYK ACWGAPPLSG SCDDADVMKA MDDAVHDGVD VLSVSIGGPS ETPGTLHVVA SGVTVVYAAG NDGPVAQMVE NSSPWLFTVA ATTVDRMFPT AITLGNNQIV HGQSLYVGTQ GREDHFHEVV PLVNSGCDPE YVNSSDVKGK IVFCITPDSL YPSATVTAVA QLVLDNGGKG FIFTGYNRDN IVRWEPVTSK MIPFILIDLE VAYHILQYCI STDGTPRAKI SLAQTTFGTG VPAPKVAVFS SRGPSAVYPG VLKPDIAAPG VNILAAAPQI PYYKEQLGGV LYHFESGTSM ATPHVSGIVA LLKSLHPDWS PAALKSALMT TALTTDNNGI PIQADGNPVK IADAFDYGAG FVNPTKADDP GLIYDIQPSD YLRFFDCTGG LGTNDNCTAP RASVVDLNLP SIAIPSLKAP QTVTRTVTNV GRQTNAVYRA VLQPPPGVEM SVEPSVLVFD AKRKAQSFKV AFKATRRFQG DYTFGSLAWH DGGSHWVRIP VAVRIVIQDL YSTVS GRMZM2G012062_P01 B4FDK4 Putative uncharacterized protein seq=translation; coord=10:1891328..1894470:-1; parent_transcript=GRMZM2G012062_T01; parent_gene=GRMZM2G012062 MSPRDAEGHG THTSSTAAGN VVGNVSFHGL AAGAARGGAP RARLAIYKAC WGAPPLSGSC DDADVMKAMD DAVHDGVDVL SVSIGGPSET PGTLHVVASG VTVVYAAGND GPVAQMVENS SPWLFTVAAT TVDRMFPTAI TLGNNQIVHG QSLYVGTQGR EDHFHEVVPL VNSGCDPEYV NSSDVKGKIV FCITPDSLYP SATVTAVAQL VLDNGGKGFI FTGYNRDNIV RWEPVTSKMI PFILIDLEVA YHILQYCIST DGTPRAKISL AQTTFGTGVP APKVAVFSSR GPSAVYPGVL KPDIAAPGVN ILAAAPQIPY YKEQLGGVLY HFESGTSMAT PHVSGIVALL KSLHPDWSPA ALKSALMTTA LTTDNNGIPI QADGNPVKIA DAFDYGAGFV NPTKADDPGL IYDIQPSDYL RFFDCTGGLG TNDNCTAPRA SVVDLNLPSI AIPSLKAPQT VTRTVTNVGR QTNAVYRAVL QPPPGVEMSV EPSVLVFDAK RKAQSFKVAF KATRRFQGDY TFGSLAWHDG GSHWVRIPVA VRIVIQDLYS TVS 7.29915 -0.324407 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 7209 7209 7209 7075 6989 6673 6270 5676 4561 3546 2138 1309 651 333 174 110 47 23 3 2 2 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7210 7210 7210 7076 6989 6663 6174 5471 4071 2691 1070 348 162 26 5 1 0 0 1 2 3 4 5 6 7 2403 2743 1525 413 122 8 1 0 0 1 2 3 4 5 6 7 893 2926 2214 944 187 40 6 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2704 (charge 3) 1408.75 3 152.057 154.086 155.081 156.076 157.097 157.133 158.092 159.076 159.113 166.061 167.081 169.097 169.133 171.077 171.113 173.092 173.129 175.071 175.119 175.133 181.096 183.149 185.115 185.129 185.165 186.087 186.122 187.071 187.108 189.088 194.129 195.075 197.128 198.088 198.123 199.107 201.124 204.134 213.16 216.099 218.151 224.103 226.155 237.134 242.113 244.165 246.18 253.093 258.145 263.166 270.107 272.172 275.17 284.125 287.133 295.14 309.203 311.692 319.198 330.177 343.235 346.207 355.161 360.2 365.198 384.189 391.224 394.73 437.893 444.241 448.242 451.257 455.227 457.252 478.271 483.253 487.297 504.782 520.78 526.295 552.805 558.337 561.298 563.292 569.316 577.803 583.292 597.299 613.323 614.327 632.334 648.844 719.394 729.39 764.414 883.483 905.468 912.385 922.483 954.513 19 3 10 4 3 36 11 13 9 4 9 39 3 3 10 12 3 11 51 3 4 3 100 22 45 7 3 7 3 3 13 3 8 3 3 13 4 14 10 3 12 8 16 3 10 8 3 10 3 9 20 4 8 3 3 7 7 15 9 3 13 9 3 27 38 7 10 13 3 6 7 8 6 14 3 9 7 7 10 18 3 8 27 8 13 10 8 6 21 9 36 12 6 25 13 6 3 3 6 7 GRMZM2G411536_P01 seq=translation; coord=3:111553578..111570930:1; parent_transcript=GRMZM2G411536_T01; parent_gene=GRMZM2G411536 MAAAAAAHRA SFPLRLQQIL AGSRAVSPAI KVESEPPANV KAFIDQVINI PLHDIAIPLS GFRWEFNKGN FHHWKPLFIH FDTYFKTYIS SRKDLLLSDD MTEAEPMPKN AILKILIVMQ IILENCQNRS SFTGLEHLKL LLASSDPEIV VAALETLVAL VKINPSKLHM NGKLISCGSI NTHLLSLAQG WGSKEEGLGI YSCVVANEGN QQGGLSLFPV DLESKYQHRL GSTLHFEYNL GSAQYPDQTS DKGKSSNLCV IHIPDMHLQK EDDLSILKQC VDKFNVPPEH RFALLTRIRY ARAFNSTRTC SIYSRISLLS FIVLVQSSDA HDELTYFFTN EPEYINELIR LVRSEDSVPG PIRALAMLAL GAQLAAYASS HERARILSGS SIISAGGNRM VLLSVLQKAI FSLNSPNDAS SPLIVDALLQ FFLLHVLSSS SSGTTVRGSG MVPPLLPLLR DNDSSHMHLV CLAVKTLQKL MEYSSPAVSL FKDLGGVDLL SRRLHVEVQR VIGTADGHNS MVTDAVKSKE DHLYSQKRLI KALLKALGSS TYSPGIPARS QSSQDNSLPV SLSLIFQNVE KFGGDIYFSA VTVMSEIIHK DPTCFPALKE LGLPDAFLSS VTAGVIPSCK ALICVPNGLG AICLNNQGLE AVRETSALRF LVYTFTSRKY LIPLNEGVVL LANAAEELLR HVQSLRSIGV DIIIEIINKL SSSLKDRNNE TAILEEKTDM ETDVEGRDLV GGMDSSVEGS NDEQFSHLSI FHVMVLVHRT MENSETCRLF VEKGGLNALL TLLLRPSITL SSGGMPIALH STMVFKGFTQ HHSTPLARAF CSSLREHLKS ALGELDKVSN SFEMTKIEKG AIPSLFVVEF LLFLAASKDN RWMNALLSEF GDASREVLED IGRVHREVLW KISLFEENKI DAEISLSSST SEAQQPDLSA SDIGDSRYTS FRQYLDPILR RRGSGWNIES QVSDLINMYR DIGSAASDSQ RVGSDRYSSL GLPSSSQDQS SSSSDANVST RSEEEKKNSE HSSCFDMMRS LSYHINHLFM ELGKAMLLTS RRENSPVNLS PSVISVANNI ASIMLEHLNF EGHSVSSERE MTVTTKCQYL GKVAEFIDGI LLDRPESCNP IMVNSFYCCG VIQAILTTFQ ATSELLFTMS RPPSSPMETD SKTGKDGKDM NSSWIYGPLI SYGAIMDHLV TSSFILSSST RQLLEQPIFN GSVRFPQDAE RFMKLLQSKV LKTVLPIWAH PEFPECNIEL ISSVMSIMRH VCSGVEVKNT VGNDGARLTG PPPDESAISL IVEMGFSRAR AEEALRQVGT NSVEIATDWL FSHPEDELAR ALAMSLGNSD TPAQEGNGRS NDLELEEVTV QLPPIDEMLH SCFQLLQTKE ALAFPVRDML VTISSQKDGQ NRVKVLTYLI ENLKQCVVAS EPSNDTALSA LLHVLALILH GDTAAREVAS KAGIVKVALD LLSSWELELR ESGMIEVPNW VSSCFLSVDQ MLQLEPKLPD VTELDVLKRD NSNIKTSLVI DESKKKDSES LSSVGLLDME DQYQLLKICC KCIEKQLPSA SMHAILQLSA TLTKVHAAAI CFLESGGLNA LLSLPTSSLF SGFNSVASTI IRHILEDPHT LQQAMELEIR HSLVTAANRH TNPRVTPRNF VQNLAFVIYR DPVIFMKAVQ SVCQIEMVGD RPYVVLLKDR EKERSKEKDK DKSVDKDKAT GAVAKVVSGD TAAGSPANAQ GKQSDLNSRN VKSHRKPPQS FVTVIEHLLD LVMSFVPPPR PEDQADVVSG TALSSDMDID CSSAKGKGKA VSVPPEESKH AIQESTASLA KASFFLKLMT DVLLTYTSSI QVVLRHDADL SNMHGPNRTN SGLISGGIFN HILQHFLPHA TKQKKERKSD GDWMYKLATR ANQFLVASSI RSAEARKKVF SEICNILLDF TDSSAAYKAP VARMNVYVDL LNDILSARSP TGSSLSAESA VTFVEVGLAP SLLKMLQNLD LDHPDSAKIV TAIVKALELV SKEHVHSADN AKGENSSKIA SDSNNVNSSP NRFQALDMTS QPTEMITDHR ETFNADQTSQ SSDSVADEMD HDRDMDGGFA RDGEDDFMHE MAGDGTGNES TMEIRFEISR NRDDMADDDD DDDNTDEDMS AEDDEEVNED DEDEDEENNN LEEDDAHQMS HPDTDQEDRE MDEEEFDEDL LEDDDDEDEE GVILRLEEGI NGINVFDHIE VFGGSNNLSG DTLRVMPLDI FGTRRQGRST SIYNLLGRAS DHGVLDHPLL EEPSSTLNFS HQEQPENLVE MAFSDRNHEG SSSRLDAIFR SLRSGRNGHR FNMWLDDGPQ RNGSAAPAVP EGIEELLISH LSRPTQQPGA QTVGGTQEND QPKHGSAAEA REGSPAQQNE NSENTTNPVD LSESAGPAPP DSDALQRVVS NASIEHATEM QYERSDTITR DVEAVSQASS GSGATLGESL RSLEVEIGSV EGHDDGDRHG TSGASERLPL GDIQAAARSR RPSGNAVAVS SRDMSLESVS EVPQNPDQEP DHNASEGNQE PRGVGADTID PTFLEALPED LRAEVLSSRQ NQVTQTSNDQ PQNDGDIDPE FLAALPLDIR EEVLAQQRSQ RIQQQSQELE GQPVEMDAVS IIATFPSEIR EEVLLTSPDT LLATLTPALV AEANMLRERF AHRYHSSSLF GMNSRNRRGE SSRRDIMAAG LDRNTGDPSR STSKPIEIEG APLVDEDGLK ALIRLLRVVQ PLYKGQLQRL LVNLCTHRDN RQALVQILVD MLMLDLQGFS KKSVDASEPP FRLYGCHANI TYSRPQSSNG VPPLVSRRVL ETLTNLARSH PNVAKLLLFL EFPCPSRCRS EAHDHRHGKA VLEDGEERKA FAVVLLLTLL NQPLYMRSVA HLEQLLNLLE VVMHNAENEI NQAKLEASSE KPSENAVKDV KDNTSISDSY GSKSNPEDGS KALAVDNKSN LRAVLRSLPQ SELRLLCSLL AHDGLSDSAY LLVGEVLKKI VALAPFFCCH FINELARSMQ SLTFCAMKEL RLYENSEKAL LSSTSANGTA ILRVVQALSS LVSTLQDRKD PEQPAEKDHS DAVSQISEIN TALDALWLEL SNCISKIESS SEYASNLTPA SASAATLTAG VAPPLPAGTQ NILPYIESFF VTCEKLRPGQ PDAVQEASTS DMEDASTSSG GQRSYSCQAS LDEKQNAFVK FSEKHRRLLN AFIHQNPGLL EKSFSLMLKI PRLIDFDNKR AYFRSKIKHQ YDHHHHNPVR ISVRRSYILE DSYNQLRMRS PQDLKGRLTV HFQGEEGIDA GGLTREWYQS LSRVIFDKSA LLFTTVGNDL TFQPNPNSVY QTEHLSYFKF AGRVVGKALF DGQLLDAHFT RSFYKHILGV RVTYHDIEAI DPAYYKNLKW MLENDISDVL DLTFSMDADE EKLILYEKAE VTDCELIPGG RNIRVTEENK HQYVDRVAEH RLTTAIRPQI NAFLEGFNEL IPRELISIFN DKELELLISG LPDIDLDDLK ANTEYSGYSI ASPVIQWFWE IVQGFSKEDK ARFLQFVTGT SKVPLEGFSA LQGISGPQRF QIHKAYGSTN HLPSAHTCFN QLDLPEYTSK EQLQERLLLA IHEANEGFGF G GRMZM2G411536_P03 seq=translation; coord=3:111553578..111570905:1; parent_transcript=GRMZM2G411536_T03; parent_gene=GRMZM2G411536 MAAAAAAHRA SFPLRLQQIL AGSRAVSPAI KVESEPPANV KAFIDQVINI PLHDIAIPLS GFRWEFNKGN FHHWKPLFIH FDTYFKTYIS SRKDLLLSDD MTEAEPMPKN AILKILIVMQ IILENCQNRS SFTGLEHLKL LLASSDPEIV VAALETLVAL VKINPSKLHM NGKLISCGSI NTHLLSLAQG WGSKEEGLGI YSCVVANEGN QQGGLSLFPV DLESKYQHRL GSTLHFEYNL GSAQYPDQTS DKGKSSNLCV IHIPDMHLQK EDDLSILKQC VDKFNVPPEH RFALLTRIRY ARAFNSTRTC SIYSRISLLS FIVLVQSSDA HDELTYFFTN EPEYINELIR LVRSEDSVPG PIRALAMLAL GAQLAAYASS HERARILSGS SIISAGGNRM VLLSVLQKAI FSLNSPNDAS SPLIVDALLQ FFLLHVLSSS SSGTTVRGSG MVPPLLPLLR DNDSSHMHLV CLAVKTLQKL MEYSSPAVSL FKDLGGVDLL SRRLHVEVQR VIGTADGHNS MVTDAVKSKE DHLYSQKRLI KALLKALGSS TYSPGIPARS QSSQDNSLPV SLSLIFQNVE KFGGDIYFSA VTVMSEIIHK DPTCFPALKE LGLPDAFLSS VTAGVIPSCK ALICVPNGLG AICLNNQGLE AVRETSALRF LVYTFTSRKY LIPLNEGVVL LANAAEELLR HVQSLRSIGV DIIIEIINKL SSSLKDRNNE TAILEEKTDM ETDVEGRDLV GGMDSSVEGS NDEQFSHLSI FHVMVLVHRT MENSETCRLF VEKGGLNALL TLLLRPSITL SSGGMPIALH STMVFKGFTQ HHSTPLARAF CSSLREHLKS ALGELDKVSN SFEMTKIEKG AIPSLFVVEF LLFLAASKDN RWMNALLSEF GDASREVLED IGRVHREVLW KISLFEENKI DAEISLSSST SEAQQPDLSA SDIGDSRYTS FRQYLDPILR RRGSGWNIES QVSDLINMYR DIGSAASDSQ RVGSDRYSSL GLPSSSQDQS SSSSDANVST RSEEEKKNSE HSSCFDMMRS LSYHINHLFM ELGKAMLLTS RRENSPVNLS PSVISVANNI ASIMLEHLNF EGHSVSSERE MTVTTKCQYL GKVAEFIDGI LLDRPESCNP IMVNSFYCCG VIQAILTTFQ ATSELLFTMS RPPSSPMETD SKTGKDGKDM NSSWIYGPLI SYGAIMDHLV TSSFILSSST RQLLEQPIFN GSVRFPQDAE RFMKLLQSKV LKTVLPIWAH PEFPECNIEL ISSVMSIMRH VCSGVEVKNT VGNDGARLTG PPPDESAISL IVEMGFSRAR AEEALRQVGT NSVEIATDWL FSHPEDELAR ALAMSLGNSD TPAQEGNGRS NDLELEEVTV QLPPIDEMLH SCFQLLQTKE ALAFPVRDML VTISSQKDGQ NRVKVLTYLI ENLKQCVVAS EPSNDTALSA LLHVLALILH GDTAAREVAS KAGIVKVALD LLSSWELELR ESGMIEVPNW VSSCFLSVDQ MLQLEPKLPD VTELDVLKRD NSNIKTSLVI DESKKKDSES LSSVGLLDME DQYQLLKICC KCIEKQLPSA SMHAILQLSA TLTKVHAAAI CFLESGGLNA LLSLPTSSLF SGFNSVASTI IRHILEDPHT LQQAMELEIR HSLVTAANRH TNPRVTPRNF VQNLAFVIYR DPVIFMKAVQ SVCQIEMVGD RPYVVLLKDR EKERSKEKDK DKSVDKDKAT GAVAKVVSGD TAAGSPANAQ GKQSDLNSRN VKSHRKPPQS FVTVIEHLLD LVMSFVPPPR PEDQADVVSG TALSSDMDID CSSAKGKGKA VSVPPEESKH AIQESTASLA KASFFLKLMT DVLLTYTSSI QVVLRHDADL SNMHGPNRTN SGLISGGIFN HILQHFLPHA TKQKKERKSD GDWMYKLATR ANQFLVASSI RSAEARKKVF SEICNILLDF TDSSAAYKAP VARMNVYVDL LNDILSARSP TGSSLSAESA VTFVEVGLAP SLLKMLQNLD LDHPDSAKIV TAIVKALELV SKEHVHSADN AKGENSSKIA SDSNNVNSSP NRFQALDMTS QPTEMITDHR ETFNADQTSQ SSDSVADEMD HDRDMDGGFA RDGEDDFMHE MAGDGTGNES TMEIRFEISR NRDDMADDDD DDDNTDEDMS AEDDEEVNED DEDEDEENNN LEEDDAHQMS HPDTDQEDRE MDEEEFDEDL LEDDDDEDEE GVILRLEEGI NGINVFDHIE VFGGSNNLSG DTLRVMPLDI FGTRRQGRST SIYNLLGRAS DHGVLDHPLL EEPSSTLNFS HQEQPENLVE MAFSDRNHEG SSSRLDAIFR SLRSGRNGHR FNMWLDDGPQ RNGSAAPAVP EGIEELLISH LSRPTQQPGA QTVGGTQEND QPKHGSAAEA REGSPAQQNE NSENTTNPVD LSESAGPAPP DSDALQRVVS NASIEHATEM QYERSDTITR DVEAVSQASS GSGATLGESL RSLEVEIGSV EGHDDGDRHG TSGASERLPL GDIQAAARSR RPSGNAVAVS SRDMSLESVS EVPQNPDQEP DHNASEGNQE PRGVGADTID PTFLEALPED LRAEVLSSRQ NQVTQTSNDQ PQNDGDIDPE FLAALPLDIR EEVLAQQRSQ RIQQQSQELE GQPVEMDAVS IIATFPSEIR EEVLLTSPDT LLATLTPALV AEANMLRERF AHRYHSSSLF GMNSRNRRGE SSRRDIMAAG LDRNTGDPSR STSKPIEIEG APLVDEDGLK ALIRLLRVVQ PLYKGQLQRL LVNLCTHRDN RQALVQILVD MLMLDLQGFS KKSVDASEPP FRLYGCHANI TYSRPQSSNG VPPLVSRRVL ETLTNLARSH PNVAKLLLFL EFPCPSRCRS EAHDHRHGKA VLEDGEERKA FAVVLLLTLL NQPLYMRSVA HLEQLLNLLE VVMHNAENEI NQAKLEASSE KPSENAVKDV KDNTSISDSY GSKSNPEDGS KALAVDNKSN LRAVLRSLPQ SELRLLCSLL AHDGLSDSAY LLVGEVLKKI VALAPFFCCH FINELARSMQ SLTFCAMKEL RLYENSEKAL LSSTSANGTA ILRVVQALSS LVSTLQDRKD PEQPAEKDHS DAVSQISEIN TALDALWLEL SNCISKIESS SEYASNLTPA SASAATLTAG VAPPLPAGTQ NILPYIESFF VTCEKLRPGQ PDAVQEASTS DMEDASTSSG GQRSYSCQAS LDEKQNAFVK FSEKHRRLLN AFIHQNPGLL EKSFSLMLKI PRLIDFDNKR AYFRSKIKHQ YDHHHHNPVR ISVRRSYILE DSYNQLRMRS PQDLKGRLTV HFQGEEGIDA GGLTREWYQS LSRVIFDKSA LLFTTVGNDL TFQPNPNSVY QTEHLSYFKF AGRVVGKALF DGQLLDAHFT RSFYKHILGV RVTYHDIEAI DPAYYKNLKW MLENDISDVL DLTFSMDADE EKLILYEKAE VFAVTDCELI PGGRNIRVTE ENKHQYVDRV AEHRLTTAIR PQINAFLEGF NELIPRELIS IFNDKELELL ISGLPDIDLD DLKANTEYSG YSIASPVIQW FWEIVQGFSK EDKARFLQFV TGTSKVPLEG FSALQGISGP QRFQIHKAYG STNHLPSAHT CFNQLDLPEY TSKEQLQERL LLAIHEANEG FGFG 3.91907 -0.252843 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6742 6742 6742 6742 6643 3715 3022 1598 1022 673 398 178 50 8 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6741 6741 6741 6741 6642 3714 2968 1503 790 477 300 77 40 1 0 0 1 2 3 4 5250 1345 136 18 0 0 1 2 3 4 5 6 7 816 5493 418 17 1 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2706 (charge 2) 1529.76 2 152.055 163.053 169.096 171.149 172.152 175.119 187.107 199.107 199.144 226.155 244.164 260.086 305.036 315.164 332.191 353.173 359.149 403.229 414.158 482.232 615.018 668.342 685.358 829.408 831.417 900.451 1072.53 1149.89 1157.59 1223.58 1331.62 6 6 7 100 7 10 8 9 39 31 53 7 9 13 11 7 7 27 8 7 7 9 62 25 9 37 10 8 28 8 8 GRMZM2G157758_P01 Q41898 ATP synthase subunit epsilon, mitochondrial (ATPase subunit epsilon) seq=translation; coord=8:142294150..142298116:1; parent_transcript=GRMZM2G157758_T01; parent_gene=GRMZM2G157758 MSATTAAVPF WRAAGMTYIG YSNICAALVR NCLKEPFKSE AASREKVHFS ISKWTDGKQE KPTVRTESDD GRMZM2G143234_P01 NP_001149572 LOC100283198 seq=translation; coord=3:224457571..224459736:1; parent_transcript=GRMZM2G143234_T01; parent_gene=GRMZM2G143234 MSATTAAVPF WRAAGMTYIG YSNICAALVR NCLKEPFKSE AASREKVHFS ISKWTDGKQE KPTVRTESDE 6.73674 -0.313337 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 8493 8493 8493 8261 8173 7393 6869 6100 5060 3640 2175 1442 738 307 96 44 19 11 7 4 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8497 8497 8497 8265 8173 7370 6776 5898 4711 2865 1283 231 73 6 1 0 0 1 2 3 4 5 6 7 2437 3789 1754 393 108 20 1 0 0 1 2 3 4 5 6 7 1493 3707 2303 761 203 20 6 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2707 (charge 3) 1444.75 3 152.056 154.086 155.081 155.117 156.076 157.096 157.108 157.133 158.06 158.092 159.078 159.091 160.095 169.097 169.133 170.06 170.096 171.076 171.112 173.091 173.128 175.119 176.122 181.096 183.113 183.148 185.092 185.127 186.09 186.124 187.107 189.087 194.129 195.112 197.128 198.123 199.071 199.107 199.18 201.123 204.134 209.09 213.086 215.118 217.081 222.123 225.099 226.154 236.646 240.134 242.128 244.165 254.15 258.108 260.07 271.107 274.185 283.139 288.063 291.166 295.14 303.211 323.172 326.01 341.181 355.197 359.137 375.233 383.192 387.13 390.232 412.183 420.733 438.236 443.224 445.238 452.252 455.262 470.258 472.287 477.229 487.297 489.278 503.321 515.33 521.801 575.303 579.314 586.369 600.385 620.837 629.836 644.33 667.856 677.388 687.314 729.423 840.462 857.479 869.493 4 8 12 3 3 9 3 8 24 13 4 100 11 13 3 20 4 11 10 9 8 70 10 11 3 3 3 4 8 25 11 3 16 9 10 4 4 32 8 9 9 6 4 4 7 4 3 68 9 14 3 23 4 4 4 8 5 8 9 20 3 7 4 4 4 9 10 11 10 8 9 4 8 5 4 3 8 4 3 82 4 3 3 15 3 10 3 8 3 19 3 10 3 3 8 3 22 4 28 3 GRMZM2G318635_P01 seq=translation; coord=5:213291570..213301733:-1; parent_transcript=GRMZM2G318635_T01; parent_gene=GRMZM2G318635 5.68517 -0.344556 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 8203 8203 8203 8203 8203 7960 4528 3510 1297 409 170 79 56 24 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 8211 8211 8211 8211 8211 7968 4532 3282 949 224 103 47 43 11 3 1 0 0 1 2 3 6543 1588 83 0 0 1 2 3 4 5 6 7 954 6580 647 19 12 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2713 (charge 2) 1695.86 2 152.313 159.076 159.614 175.119 191.693 195.006 201.087 209.127 218.149 226.154 265.059 299.192 305.181 337.186 355.197 450.852 505.257 560.787 572.483 576.294 596.802 622.808 631.816 647.328 671.333 774.386 784.379 904.434 1063.43 1116.51 1118.52 1342.66 5 9 5 16 6 7 10 8 31 100 7 8 53 83 59 8 14 11 11 9 16 14 11 15 10 15 16 17 10 66 14 35 GRMZM5G808402_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=Pt:54176..56114:-1; parent_transcript=GRMZM5G808402_T01; parent_gene=GRMZM5G808402 MRTNPTTSRP GISTIEEKSV GRIDQIIGPV LDITFPPGKL PYIYNALIVK SRDTADKQIN VTCEVQQLLG NNRVRAVAMS ATEGLMRGME VIDTGTPLSV PVGGATLGRI FNVLGEPIDN LGPVDTSATF PIHRSAPAFI ELDTKLSIFE TGIKVVDLLA PYRRGGKIGL FGGAGVGKTV LIMELINNIA KAHGGVSVFG GVGERTREGN DLYMEMKESG VINEKNIEES KVALVYGQMN EPPGARMRVG LTALTMAEYF RDVNKQDVLL FIDNIFRFVQ AGSEVSALLG RMPSAVGYQP TLSTEMGSLQ ERITSTKKGS ITSIQAVYVP ADDLTDPAPA TTFAHLDATT VLSRGLASKG IYPAVDPLDS TSTMLQPRIV GNEHYETAQR VKETLQRYKE LQDIIAILGL DELSEEDRLT VARARKIERF LSQPFFVAEV FTGSPGKYVG LAETIRGFQL ILSGELDGLP EQAFYLVGNI DEASTKAINL EEESKLKK GRMZM2G385622_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=2:200098864..200103052:1; parent_transcript=GRMZM2G385622_T01; parent_gene=GRMZM2G385622 MRTNPTTSRP GISTIEEKSV GRIDQIIGPV LDITFPPGKL PYIYNALIVK SRDTADKQIN VTCEVQQLLG NNRVRAVAMS ATEGLMRGME VIDTGTPLSV PVGGATLGRI FNVLGEPIDN LGPVDTSATF PIHRSAPAFI ELDTKLSIFE TGIKVVDLLA PYRRGGKIGL FGGAGVGKTV LIMELINNIA KAHGGVSVFG GVGERTREGN DLYMEMKESG VINEKNIEES KVALVYGQMN EPPGARMRVG LTALTMAEYF RDVNKQDVLL FIDNIFRFVQ AGSEVSALLG RMPSAVGYQP TLSTEMGSLQ ERITSTKKGS ITSIQAVYVP ADDLTDPAPA TTFAHLDATT VLSRGLASKG IYPAVDPLDS TSTMLQPRIV GNEHYETAQR VKETLQRYKE LQDIIAILGL DELSEEDRLT VARARKIERF LSQPFFVAEV FTGSPGKYVG LAETIRGFQL ILSGELDGLP EQAFYLVGNI DEASTKAINL EEESKLKK GRMZM2G062854_P01 Q5SBI2 Putative uncharacterized protein seq=translation; coord=6:160782373..160789444:-1; parent_transcript=GRMZM2G062854_T01; parent_gene=GRMZM2G062854 MRTNPTTSRP GISTIEEKSV GRIDQIIGPV LDITFPPGKL PYIYNALIVK SRDTADKQIN VTCEVQQLLG NNRVRAVAMS ATEGLMRGME VIDTGTPLSV PVGGATLGRI FNVLGEPIDN LGPVDTSATF PIHRSAPAFI ELDTKLSIFE TGIKVVDLLA PYRRGGKIGL FGGAGVGKTV LIMELINNIA KAHGGVSVFG GVGERTREGN DLYMEMKESG VINEKNIEES KVALVYGQMN EPPGARMRVG LTALTMAEYF RDVNKQDVLL FIDNIFRFVQ AGSEVSALLG RMPSAVGYQP TLSTEMGSLQ ERITSTKKGS ITSIQAVYVP ADDLTDPAPA TTFAHLDATT VLSRGLASKG IYPAVDPLDS TSTMLQPRIV GNEHYETAQR VKETLQRYKE LQDIIAILG GRMZM2G448142_P02 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203904004..203910810:-1; parent_transcript=GRMZM2G448142_T02; parent_gene=GRMZM2G448142 MSATEGLMRG MEVIDTGTPL SVPVGGATLG RIFNVLGEPI DNLGPVDTSA TFPIHRSAPA FIELDTKLSI FETGIKVVDL LAPYRRGGKI GLFGGAGVGK TVLIMELINN IAKAHGGVSV FGGVGERTRE GNDLYMEMKE SGVINEKNIE ESKVALVYGQ MNEPPGARMR VGLTALTMAE YFRDVNKQDV LLFIDNIFRF VQAGSEVSAL LGRMPSAVGY QPTLSTEMGS LQERITSTKK GSITSIQAVY VPADDLTDPA PATTFAHLDA TTVLSRGLAS KGIYPAVDPL DSTSTMLQPR IVGNEHYETA QRVKETLQRY KELQDIIAIL GLDELSEEDR LTVARARKIE RFLSQPFFVA EVFTGSPGNG QIGVLPNHAP INTAVDMGPL RIRLLNDQWL TAVLWSGFAR IVNNEIIILG NDAELGSDID PEEAQQALEI AEADSDLF GRMZM2G448142_P03 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203907697..203910810:-1; parent_transcript=GRMZM2G448142_T03; parent_gene=GRMZM2G448142 MSATEGLMRG MEVIDTGTPL SVPVGGATLG RIFNVLGEPI DNLGPVDTSA TFPIHRSAPA FIELDTKLSI FETGIKVVDL LAPYRRGGKI GLFGGAGVGK TVLIMELINN IAKAHGGVSV FGGVGERTRE GNDLYMEMKE SGVINEKNIE ESKVALVYGQ MNEPPGARMR VGLTALTMAE YFRDVNKQDV LLFIDNIFRF VQAGSEVSAL LGRMPSAVGY QPTLSTEMGS LQERITSTKK GSITSIQAVY VPADDLTDPA PATTFAHLDA TTVLSRGLAS KGIYPAVDPL DSTSTMLQPR IVGNEHYETA QRVKETLQRY KELQDIIAIL GLDELSEEDR LTVARARKIE RFLSQPFFVA EVFTGSPGNG QIGVLPNHAP INTAVDMGPL RIRLLNDQWL TAVLWSGFAR IVNNEIIILG NDAELGSDID PEEAQQALEI AEADSDLF GRMZM2G113408_P01 P19023 ATP synthase subunit beta, mitochondrial Precursor (EC 3.6.3.14) seq=translation; coord=6:162937179..162940714:-1; parent_transcript=GRMZM2G113408_T01; parent_gene=GRMZM2G113408 MASRRVVSSL LRSASRLRAA SPAAPRPRAP PHRPSPAGYL FNRAAAYASS AAAQAAPATP PPATGKTGGG KITDEFTGAG AIGQVCQVIG AVVDVRFDEG LPPILTALEV LDNNIRLVLE VAQHLGENMV RTIAMDGTEG LVRGQRVLNT GSPITVPVGR ATLGRIINVI GEPIDEKGDI KTNHFLPIHR EAPAFVEQAT EQQILVTGIK VVDLLAPYQR GGKIGLFGGA GVGKTVLIME LINNVAKAHG GFSVFAGVGE RTREGNDLYR EMIESGVIKL DDKQSESKCA LVYGQMNEPP GARARVGLTG LTVAEHFRDA EGQDVLLFID NIFRFTQANS EVSALLGRIP SAVGYQPTLA TDLGGLQERI TTTKKGSITS VQAIYVPADD LTDPAPATTF AHLDATTVLS RQISELGIYP AVDPLDSTSR MLSPHVLGED HYNTARGVQK VLQNYKNLQD IIAILGMDEL SEDDKLTVAR ARKIQRFLSQ PFHVAEVFTG APGKYVELKE SVKSFQGVLD GKYDDLPEQS FYMVGGIEEV IAKAEKIAKE SAS GRMZM2G041275_P01 seq=translation; coord=3:207616747..207621242:-1; parent_transcript=GRMZM2G041275_T01; parent_gene=GRMZM2G041275 MATRRAFSSI LRSASRIRSA SPSPCPRAPL HHRPSPAGFI LNRVAAYASS ATAQAAPAPP PPSTGKKTGG GKITDEFTGA GAIGQVCQVI GAVVDVRFDE GLPPILTALE VLDNNIRLVL EVAQHLGENM VRTIAMDGTE GLVRGQRVLN TGSPITVPVG RATLGRIINV IGEPIDEKGD ITTNHFLPIH REAPAFVEQA TEQQILVTGI KVVDLLAPYQ RGGKIGLFGG AGVGKTVLIM ELINNVAKAH GGFSVFAGVG ERTREGNDLY REMIESGVIK LDDKQSESKC ALVYGQMNEP PGARARVGLT GLTVAEHFRD AEGQDVLLFI DNIFRFTQAN SEVSALLGRI PSAVGYQPTL ATDLGGLQER ITTTKKGSIT SVQAIYVPAD DLTDPAPATT FAHLDATTVL SRQISELGIY PAVDPLDSTS RMLSPHVLGE DHYNTARGVQ KVLQNYKNLQ DIIAILGMDE LSEDDKLTVA RARKIQRFLS QPFHVAEVFT GAPGKYVELK ESVKSFQGVL DGKYDDLPEQ SFYMVGGIEE VIAKAEKIAK ESAS GRMZM2G021331_P01 NP_001151807 ATP synthase beta chain seq=translation; coord=8:65969534..65973268:1; parent_transcript=GRMZM2G021331_T01; parent_gene=GRMZM2G021331 MASRRVVSSL LRSASRLRAA SPAAPRPRGA PHRPSPAGYL FNRAAAYASA AAAQVAPATP PPATGKTGGG KITDEFTGAG AIGQVCQVIG AVVDVRYDEG LPPILTALEV LDNDIRLVLE VAQHLGENMV RTIAMDGTEG LVRGQRVLNT GSPITVPVGR ATLGRIINVI GEPIDEKGDI TTNHFLPIHR EAPAFVEQAT EQQILVTGIK VVDLLAPYQR GGKIGLFGGA GVGKTVLIME LINNVAKAHG GFSVFAGVGE RTREGNDLYR EMIESGVIKL GDKQSESKCA LVYGQMNEPP GARARVGLTG LTVAEHFRDA EGQDVLLFID NIFRFTQANS EVSALLGRIP SAVGYQPTLA TDLGGLQERI TTTKKDSITS VQAIYVPADD LTDPAPATTF AHLDATTVLS RQISELGIYP AVDPLDSTSR MLSPHVLGED HYNTARGVQK VLQNYKNLQD IIAILGMDEL SEDDKLTVAR ARKIQRFLSQ PFHVAEVFTG APGKYVELKE SVKSFQGVLD GKYDDLPEQS FYMVGGIEEV IAKAEKIAKE SAS GRMZM2G478934_P01 Q5SBI3 Putative uncharacterized protein seq=translation; coord=4:111776910..111780853:1; parent_transcript=GRMZM2G478934_T01; parent_gene=GRMZM2G478934 MELINNIAKA HGGVSVFGRV GERTREGNDL YMEMKESGVI NEKNIEESKV ALVYGQMNEP PGARMRVGLT ALTMAEAEYF RDVNKQDVLL FIDNIFRFVQ AGSEVSALLG RMPSAVGYQP TLSTEMGSLQ ERITSTKKGS ITSIQAVYVP ADDLTDPAPA TTFAHLDATT VLSRGLASKG IYPAVDPLD GRMZM2G113408_P02 P19023 ATP synthase subunit beta, mitochondrial Precursor (EC 3.6.3.14) seq=translation; coord=6:162937243..162940714:-1; parent_transcript=GRMZM2G113408_T02; parent_gene=GRMZM2G113408 MASRRVVSSL LRSASRLRAA SPAAPRPRAP PHRPSPAGYL FNRAAAYASS AAAQAAPATP PPATGKTGGG KITDEFTGAG AIGQVCQVIG AVVDVRFDEG LPPILTALEV LDNNIRLVLE VAQHLGENMV RTIAMDGTEG LVRGQRVLNT GSPITVPVGR ATLGRIINVI GEPIDEKGDI KTNHFLPIHR EAPAFVEQAT EQQILVTGIK VVDLLAPYQR GGKIGLFGGA GVGKTVLIME LINNVAKAHG GFSVFAGVGE RTREGNDLYR EMIESGVIKL DDKQSESKCA LVYGQMNEPP GARARVGLTG LTVAEHFRDA EGQDVLLFID NIFRFTQVSF AGISFA GRMZM2G155238_P01 seq=translation; coord=4:111657121..111661039:1; parent_transcript=GRMZM2G155238_T01; parent_gene=GRMZM2G155238 MELINNIAKA HGGVSVFGGV GERTREGNDL YMEMKESGVI NEKNIEESKV ALVYGQMNEP PGARMRVGLT ALTMAEAEYF RDVNKQDMLL FIDNIFRFVQ AGSEVSALLG RMPSAVGYQP TLSTEMGSLQ ERITSTKKGS ITSIQAVYVP ADDLTDPAPA TTFAHWTLLP YFLED GRMZM2G384988_P01 seq=translation; coord=5:35005734..35007041:1; parent_transcript=GRMZM2G384988_T01; parent_gene=GRMZM2G384988 MELINNIAKA HGGISVFGVV GERTREGNDL YMEMKESRVI NEKNIEESKV ALVYGQMNEP PGARMRVGLT ALTMAEVEYF RDVNKQDTLY SSIISFILFK QDLKYPLY 7.32779 -0.396097 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3394 3394 3352 3160 2859 2599 2398 1649 1297 681 297 104 45 14 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3385 3385 3342 3123 2789 2490 2257 1292 866 302 69 2 1 1 0 0 1 2 3 4 5 1667 1415 309 19 1 0 0 1 2 3 4 5 6 7 776 1758 708 143 16 0 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2715 (charge 2) 1056.49 2 152.034 152.057 154.061 155.081 157.097 157.108 157.134 158.092 159.076 167.081 169.06 169.097 170.064 171.076 171.112 172.071 173.092 173.128 175.119 176.122 181.06 181.097 183.112 184.071 185.092 186.087 186.123 187.09 193.096 194.128 195.113 197.128 199.107 201.069 204.134 209.092 213.086 215.139 218.095 224.103 226.154 229.063 232.14 235.119 239.016 244.093 246.09 249.144 252.097 254.149 258.144 270.109 272.171 286.144 293.123 303.175 307.141 317.127 321.117 323.171 341.181 342.181 357.123 369.124 375.132 383.202 400.228 404.189 414.144 426.245 432.252 437.25 438.253 445.232 452.256 459.246 463.229 470.271 480.257 481.256 497.282 499.289 518.591 537.931 543.284 556.942 565.28 568.335 608.316 615.284 626.319 644.811 658.834 680.337 723.339 726.373 740.365 854.385 871.405 873.416 9 1 1 8 2 2 1 10 5 4 37 4 1 1 7 2 4 1 32 1 1 4 2 2 4 68 2 5 2 2 1 1 8 3 2 3 4 2 2 5 18 2 4 1 2 6 10 5 2 1 2 2 1 1 1 6 1 1 1 3 7 2 1 1 4 8 19 2 2 1 2 5 1 4 1 4 2 3 14 2 100 2 2 3 1 3 4 1 4 1 9 2 1 1 5 1 18 1 12 1 GRMZM5G856084_P01 seq=translation; coord=10:82046176..82050508:-1; parent_transcript=GRMZM5G856084_T01; parent_gene=GRMZM5G856084 GRMZM2G091811_P01 NP_001168577 hypothetical protein LOC100382361 seq=translation; coord=4:34554405..34559141:-1; parent_transcript=GRMZM2G091811_T01; parent_gene=GRMZM2G091811 4.30521 -0.277755 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 5728 5728 3993 3913 2354 1726 992 630 359 188 72 35 15 4 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5717 5717 3982 3902 2140 1443 892 448 254 85 23 1 0 0 1 0 0 1 2 3 4 4290 1334 100 14 0 0 1 2 3 4 5 693 4465 533 39 8 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2718 (charge 2) 1684.79 2 173.083 175.119 191.104 204.086 205.847 211.089 213.086 223.107 226.117 232.205 235.118 245.767 258.144 275.171 309.156 312.154 344.171 355.16 370.149 386.205 388.16 438.195 447.495 483.218 501.226 554.29 571.758 611.313 629.323 651.305 669.318 683.004 744.352 806.367 1023.47 1056.46 1238.99 1297.64 1734.07 2 2 2 3 2 2 7 5 6 2 4 2 11 5 3 3 5 6 48 3 47 3 3 12 5 5 4 7 100 5 24 4 5 4 5 11 3 22 4 GRMZM2G121186_P01 NM_001112124 LOC542588 (si946054f08), mRNA seq=translation; coord=6:161659850..161663090:-1; parent_transcript=GRMZM2G121186_T01; parent_gene=GRMZM2G121186 MSDGKDSLDL SALGAAIPNS AELSAEDKAN LVASIKNTLE GLASRHTDVL ENLEPKVRKR VEKLREIQGE HDELEAKFFE ERAALEAKYQ KLYEPLYSKR YEIVNGVVEI EGITKESAAE TPEEQKSGDE TSAEQKEEKG VPAFWLNAMK NHEILAEEIQ ERDEEALKYL KDIKWYRISE PKGFKLEFHF GTNMFFKNSV LTKTYHMIDE DEPILEKAIG TEIEWYPGKC LTQKVLKKKP RKGSKNTKPI TKTEDCESFF NFFSPPQVPD DDEEIDEDTA EQLQNQMEQD YDIGSTIETK LSHMLSRGSL ERLLKMRTLK LWMARTTTMK TTMMKTTRMK MTMIMIQRRP RELLEGKGSR VNDLQSASNS EV 6.52983 -0.373133 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3525 3525 3525 3525 3481 3188 2732 2219 1512 1001 531 194 78 29 10 8 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3524 3524 3524 3524 3480 3187 2711 2075 1311 691 203 63 4 1 0 0 1 2 3 4 5 1219 1562 599 121 26 0 0 1 2 3 4 5 6 7 1437 1569 380 135 4 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2723 (charge 3) 2637.16 3 181.06 185.091 189.086 190.736 199.071 199.108 201.086 204.088 205.74 209.347 213.086 217.081 224.102 227.101 231.096 240.133 249.747 252.096 258.104 270.108 272.122 276.154 284.123 288.118 302.135 313.15 341.144 356.144 359.154 361.143 373.172 384.137 387.189 405.196 416.323 421.178 442.191 470.186 484.202 533.292 571.232 612.296 644.319 661.348 665.3 729.873 763.181 770.823 774.358 816.363 835.936 838.894 851.352 880.409 903.41 911.919 949.461 977.451 1016.46 1025.47 1050.51 1075.99 1130.99 1162.48 1178.54 1294.59 1350.63 1389.57 1437.65 1530.67 1565.71 2679.66 13 8 15 6 48 13 47 7 6 6 15 16 44 40 15 17 8 16 10 85 10 17 11 15 10 41 45 43 17 8 11 7 16 16 7 9 9 11 39 30 14 36 15 17 9 13 16 10 14 15 10 13 12 20 16 33 17 13 19 100 18 35 13 12 20 15 38 14 66 12 13 12 GRMZM2G096962_P01 NP_001151379 50S ribosomal protein L9 seq=translation; coord=5:214377336..214380504:-1; parent_transcript=GRMZM2G096962_T01; parent_gene=GRMZM2G096962 MASLSCASTL PWTPASYPRP SAGRCLTASR RAPSLVIVAQ GKVKKYRQVI LTDDIEEVGK KGDTLKVRAG FYRNFLLPKG KATLLTPEVL KEMQLEQERI EAEKKRVKED AQQLARVFET IGAFKLPRKG GKGKQIFGSV TAQDVVDIIK SQLNRDVDKK LVTVPEIREI GEYVAEIKLH PDVTARVRLN VYAK GRMZM2G096962_P02 NP_001151379 50S ribosomal protein L9 seq=translation; coord=5:214377336..214380502:-1; parent_transcript=GRMZM2G096962_T02; parent_gene=GRMZM2G096962 MASLSCASTL PWTPASYPRP SAGRCLTASR RAPSLVIVAQ GKVKKYRQVI LTDDIEEVGK KGDTLKVRAG FYRNFLLPKG KATLLTPEVL KEMQLEQERI EAEKKRVKED AQQLARVFET IGAFKLPRKG GKGKQIFGSV TAQDVVDIIK SQLNRDVDKK LVTVPEIREI GEYVAEIKLH PDVTARVRLN VYAK GRMZM2G096962_P03 NP_001151379 50S ribosomal protein L9 seq=translation; coord=5:214377336..214380499:-1; parent_transcript=GRMZM2G096962_T03; parent_gene=GRMZM2G096962 MASLSCASTL PWTPASYPRP SAGRCLTASR RAPSLVIVAQ GKVKKYRQVI LTDDIEEVGK KGDTLKVRAG FYRNFLLPKG KATLLTPEVL KEMQLEQERI EAEKKRVKED AQQLARVFET IGAFKLPRKG GKGKQIFGRD VDKKLVTVPE IREIGEYVAE IKLHPDVTAR VRLNVYAK 6.55876 -0.305059 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 6633 6633 6633 6633 6428 6243 5759 5374 4812 3628 2867 1431 714 292 190 79 35 16 9 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6617 6617 6617 6617 6412 6223 5725 5239 4681 2858 1787 378 117 2 1 1 0 0 1 2 3 4 5 3238 2805 537 61 2 0 0 1 2 3 4 5 6 7 1271 3422 1468 404 64 6 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2725 (charge 2) 1157.63 2 152.056 153.102 155.081 157.097 157.133 158.092 159.076 164.41 165.102 166.061 167.055 169.06 169.096 171.076 171.113 173.091 173.128 175.119 184.107 185.091 186.088 186.124 187.071 189.087 195.112 199.107 201.105 209.09 211.144 213.087 226.155 228.17 232.139 235.118 239.094 244.165 246.155 258.145 268.164 272.169 285.008 287.007 299.061 301.058 309.193 313.187 344.977 356.069 357.068 359.24 383.195 386.735 394.192 416.223 423.222 444.25 448.204 452.252 458.234 464.741 487.296 521.763 530.284 545.272 551.297 615.354 629.32 639.31 662.833 686.391 715.363 801.415 912.442 930.462 932.472 11 9 11 18 9 23 9 5 5 10 56 6 24 8 6 6 6 96 5 20 6 5 6 6 18 39 8 6 7 10 77 27 6 22 27 25 9 8 10 5 28 6 43 6 6 6 5 30 19 8 7 9 6 8 7 7 24 9 6 5 8 10 27 6 32 10 8 8 35 55 11 44 10 100 8 GRMZM2G439339_P01 NP_001132045 hypothetical protein LOC100193455 seq=translation; coord=4:182566741..182604817:1; parent_transcript=GRMZM2G439339_T01; parent_gene=GRMZM2G439339 MESERLQNLL LEKEVDAEMC KRELEMQKAE IANLNQSISE LIENSKGIDL NTYEAMKNEL QNIKSTLREN SMELESAKIL LSEKEVAIKI LEDKLSLCQS ELDSKEKKLN DVEASLKSEI DKHKKINLNL KRKHDNLMKE KGEIAKENQS LVKQMEDLKS TAQKTTSETT LEQAIKEKDF RIQTLERTLE KERDDNKKEK AKSRRNENTI FGALQKVQQD KKQVEESIDK HKQAVRELIE NYPGLSSEVP PISALEEQLL SYFRAAKDME ESSSPFRDGA ATQTPVVETA PVDAPTSAGV AGRPVDTSSR PAKAKMTEER AVPKPSSEVR RPGGRRPLVR PTLERTEEPH ADTDISAVDA STVQDKGGPP AEQETSGILP VLQPLSRKRL ITSSQTVDSA SQGEANDVNP PSKKPKEEES SQGTSELKSG QPPLGDVAAQ VNVLPATDDL DGQQPTEEID TDQAPEPMVE VEATREEDGG DKDDSGDAST DIKGQDADAN IDANAIPLEE EHVVAKSEAI IESFDDDRKT EDSKEDAQRT TATDVDDDME EGELAEEPED KSDVDMSEIE GEATAERAAV EPDQSPITQP GAADASPSRT ADASPAREPS PSPVQAGASS RPQNTSTATE AREPSSNPAQ AGASSEQRNT STVVEAAETR SRTINLSERA RQNRQTRFQR AQQPGTARGR GQQSVTLRKD ATGRGSRGRG GRGQS GRMZM2G439339_P02 NP_001132045 hypothetical protein LOC100193455 seq=translation; coord=4:182566741..182604817:1; parent_transcript=GRMZM2G439339_T02; parent_gene=GRMZM2G439339 MESERLQNLL LEKEVDAEMC KRELEMQKAE IANLNQSISE LIENSKGIDL NTYEAMKNEL QNIKSTLREN SMELESAKIL LSEKEVAIKI LEDKLSLCQS ELDSKEKKLN DVEASLKSEI DKHKKINLNL KRKHDNLMKE KGEIAKENQS LVKQMEDLKS TQKTTSETTL EQAIKEKDFR IQTLERTLEK ERDDNKKEKA KSRRNENTIF GALQKVQQDK KQVEESIDKH KQAVRELIEN YPGLSSEVPP ISALEEQLLS YFRAAKDMEE SSSPFRDGAA TQTPVVETAP VDAPTSAGVA GRPVDTSSRP AKAKMTEERA VPKPSSEVRR PGGRRPLVRP TLERTEEPHA DTDISAVDAS TVQDKGGPPA EQETSGILPV LQPLSRKRLI TSSQTVDSAS QGEANDVNPP SKKPKEEESS QGTSELKSGQ PPLGDVAAQV NVLPATDDLD GQQPTEEIDT DQAPEPMVEV EATREEDGGD KDDSGDASTD IKGQDADANI DANAIPLEEE HVVAKSEAII ESFDDDRKTE DSKEDAQRTT ATDVDDDMEE GELAEEPEDK SDVDMSEIEG EATAERAAVE PDQSPITQPG AADASPSRTA DASPAREPSP SPVQAGASSR PQNTSTATEA REPSSNPAQA GASSEQRNTS TVVEAAETRS RTINLSERAR QNRQTRFQRA QQPGTARGRG QQSVTLRKDA TGRGSRGRGG RGQS GRMZM2G439339_P03 NP_001132045 hypothetical protein LOC100193455 seq=translation; coord=4:182566741..182604817:1; parent_transcript=GRMZM2G439339_T03; parent_gene=GRMZM2G439339 MESERLQNLL LEKEVDAEMC KRELEMQKAE IANLNQSISE LIENSKGIDL NTYEAMKNEL QNIKSTLREN SMELESAKIL LSEKEVAIKI LEDKLSLCQS ELDSKEKKLN DVEASLKSEI DKHKKINLNL KRKHDNLMKE KGEIAKENQS LVKQMEDLKS TAQKTTSETT LEQAIKEKDF RIQTLERTLE KERDDNKKEK AKSRRNENTI FGALQKVQQD KKQVEESIDK HKQAVRELIE NYPGLSSEVP PISALEEQLL SYFRAAKDME ESSSPFRDGA ATQTPVVETA PVDAPTSAGG RPVDTSSRPA KAKMTEERAV PKPSSEVRRP GGRRPLVRPT LERTEEPHAD TDISAVDAST VQDKGGPPAE QETSGILPVL QPLSRKRLIT SSQTVDSASQ GEANDVNPPS KKPKEEESSQ GTSELKSGQP PLGDVAAQVN VLPATDDLDG QQPTEEIDTD QAPEPMVEVE ATREEDGGDK DDSGDASTDI KGQDADANID ANAIPLEEEH VVAKSEAIIE SFDDDRKTED SKEDAQRTTA TDVDDDMEEG ELAEEPEDKS DVDMSEIEGE ATAERAAVEP DQSPITQPGA ADASPSRTAD ASPAREPSPS PVQAGASSRP QNTSTATEAR EPSSNPAQAG ASSEQRNTST VVEAAETRSR TINLSERARQ NRQTRFQRAQ QPGTARGRGQ QSVTLRKDAT GRGSRGRGGR GQS GRMZM2G439339_P04 NP_001132045 hypothetical protein LOC100193455 seq=translation; coord=4:182566741..182604691:1; parent_transcript=GRMZM2G439339_T04; parent_gene=GRMZM2G439339 MPLFISDEEL RLLGGDTAAV AERADAAIRE LRRQVDTVRA EADAAAIAAE QTCALLEQRY ASLSAEFDRS KAEAAELTAS AERRAAELAS SQAEIHQLRI QAIAKDGEVE RLKIEISELH KSKCQSLELI EQRDAEIKEK DGIIQSYYNK IVNLAETSAG KEARIQEVEA KFTHCQAICN RMTQEKELLE KHNVWLDEEL KAKVKNLAEL RKTNMDEEAR LSASIAELER EISESSSSLR RSKERISELE QRVSYMEKVK KLAELHQESS EEWSKKAGEL EGVIKALETH LTQVEDEYKE KLEKETLSRR DLEKEAVNLK QKLEKCEFDL ENTRKSSELS LVPLTSIAAG SSDVVDTTVQ GLPISDAVNQ NDLMVIPKVP SGVSGTALAA SLLRDGWSLA KIYEKYQEAT DAFLHERRGR RHAEAVLERV LHEIEEKAEL ILDERAEHER MVEAYAMMDQ KLQQALLEHD NFENNVRNLK SELKRRERDH SVAQKEIDDL QKQVAVLLKE CQDIQLRCGS SLPNVGYVAS SSLVNVLSNV EHDIKDNMSF KDINGLVQQN VQLRNQIHML SADLDKKDME LRESFQIELK KITDAAASRV EKVMKKSEEQ AIMIESLHRS VAMYRKLCEE QQKARSNVES APTTLQDSSR TDLMVLFEGS QEVSKKAYEQ VSERARSLDE ELTKLRTELE SLRSERDKAV LEADFARDRL NGFAAELEHQ RKESNSASLR NAELTRLVVD YERRLREDLD SKQALEENLR KLSMEVSTLK NAKESLEKSE RRALDEVRDL TERVHRLQAT IDTIHTTEEV QENARSMERR NHEEHIKRLE RDWAELNKEL QEQRDHVRVL SLDKKNVFDS CMKQVEDMRK ELNNSWKAVS DAEARAAIAE AKCSDLEAKV KSRKAISRDG CHEISAASEE NDELFQLKEE LEKYKEEAQA NKNYMVQYKE IAHSNEVALK QLESAHQDYK AETEVGRKAL EDEIVNLRDK LSEMEKSYVI KCEEAANAIE SKEKHITSLM NEISVLRTEV SQKLPQLEKL EIELALSKSS LDEQYKRWRT AQDNYERQVI LQSETIQELT NTSKQLSSLQ HEITVLRQTA DALKNENECL RSSAEQEKIG LLKEKDDALQ KYNELNDQNR ILHNQLEALH IRLAEKERNI AGLSSHRTDN SHAEDDLQSV ISYLRRSKEI AETEISLLKQ EKSRLQIELE SSLKSAKEAQ DLLRSQADSA RALMFKDEEF KSLQIQVREI NLLRESNIQL REENRHNFEE CQKFREEAQK AKMESERLQN LLLEKEVDAE MCKRELEMQK AEIANLNQSI SELIENSKGI DLNTYEAMKN ELQNIKSTLR ENSMELESAK ILLSEKEVAI KILEDKLSLC QSELDSKEKK LNDVEASLKS EIDKHKKINL NLKRKHDNLM KEKGEIAKEN QSLVKQMEDL KSTQKTTSET TLEQAIKEKD FRIQTLERTL EKERDDNKKE KAKSRRNENT IFGALQKVQQ DKKQVEESID KHKQAVRELI ENYPGLSSEV PPISALEEQL LSYFRAAKDM EESSSPFRDG AATQTPVVET APVDAPTSAG GRPVDTSSRP AKAKMTEERA VPKPSSEVRR PGGRRPLVRP TLERTEEPHA DTDISAVDAS TVQDKGGPPA EQETSGILPV LQPLSRKRLI TSSQTVDSAS QGEANDVNPP SKKPKEEESS QGTSELKSGQ PPLGDVAAQV NVLPATDDLD GQQPTEEIDT DQAPEPMVEV EATREEDGGD KDDSGDASTD IKGQDADANI DANAIPLEEE HVVAKSEAII ESFDDDRKTE DSKEDAQRTT ATDVDDDMEE GELAEEPEDK SDVDMSEIEG EATAERAAVE PDQSPITQPG AADASPSRTA DASPAREPSP SPVQAGASSR PQNTSTATEA REPSSNPAQA GASSEQRNTS TVVEAAETRS RTINLSERAR QNRQTRFQRA QQPGTARGRG QQSVTLRVWF LYSCSFQLGA YIQH GRMZM2G439339_P05 NP_001132045 hypothetical protein LOC100193455 seq=translation; coord=4:182566741..182604685:1; parent_transcript=GRMZM2G439339_T05; parent_gene=GRMZM2G439339 MPLFISDEEL RLLGGDTAAV AERADAAIRE LRRQVDTVRA EADAAAIAAE QTCALLEQRY ASLSAEFDRS KAEAAELTAS AERRAAELAS SQAEIHQLRI QAIAKDGEVE RLKIEISELH KSKCQSLELI EQRDAEIKEK DGIIQSYYNK IVNLAETSAG KEARIQEVEA KFTHCQAICN RMTQEKELLE KHNVWLDEEL KAKVKNLAEL RKTNMDEEAR LSASIAELER EISESSSSLR RSKERISELE QRVSYMEKVK KLAELHQESS EEWSKKAGEL EGVIKALETH LTQVEDEYKE KLEKETLSRR DLEKEAVNLK QKLEKCEFDL ENTRKSSELS LVPLTSIAAG SSDVVDTTVQ GLPISDAVNQ NDLMVIPKVP SGVSGTALAA SLLRDGWSLA KIYEKYQEAT DAFLHERRGR RHAEAVLERV LHEIEEKAEL ILDERAEHER MVEAYAMMDQ KLQQALLEHD NFENNVRNLK SELKRRERDH SVAQKEIDDL QKQVAVLLKE CQDIQLRCGS SLPNVGYVAS SSLVNVLSNV EHDIKDNMSF KDINGLVQQN VQLRNQIHML SADLDKKDME LRESFQIELK KITDAAASRV EKVMKKSEEQ AIMIESLHRS VAMYRKLCEE QQKARSNVES APTTLQDSSR TDLMVLFEGS QEVSKKAYEQ VSERARSLDE ELTKLRTELE SLRSERDKAV LEADFARDRL NGFAAELEHQ RKESNSASLR NAELTRLVVD YERRLREDLD SKQALEENLR KLSMEVSTLK NAKESLEKSE RRALDEVRDL TERVHRLQAT IDTIHTTEEV QENARSMERR NHEEHIKRLE RDWAELNKEL QEQRDHVRVL SLDKKNVFDS CMKQVEDMRK ELNNSWKAVS DAEARAAIAE AKCSDLEAKV KSRKAISRDG CHEISAASEE NDELFQLKEE LEKYKEEAQA NKNYMVQYKE IAHSNEVALK QLESAHQDYK AETEVGRKAL EDEIVNLRDK LSEMEKSYVI KCEEAANAIE SKEKHITSLM NEISVLRTEV SQKLPQLEKL EIELALSKSS LDEQYKRWRT AQDNYERQVI LQSETIQELT NTSKQLSSLQ HEITVLRQTA DALKNENECL RSSAEQEKIG LLKEKDDALQ KYNELNDQNR ILHNQLEALH IRLAEKERNI AGLSSHRTDN SHAEDDLQSV ISYLRRSKEI AETEISLLKQ EKSRLQIELE SSLKSAKEAQ DLLRSQADSA RALMFKDEEF KSLQIQVREI NLLRESNIQL REENRHNFEE CQKFREEAQK AKMESERLQN LLLEKEVDAE MCKRELEMQK AEIANLNQSI SELIENSKGI DLNTYEAMKN ELQNIKSTLR ENSMELESAK ILLSEKEVAI KILEDKLSLC QSELDSKEKK LNDVEASLKS EIDKHKKINL NLKRKHDNLM KEKGEIAKEN QSLVKQMEDL KSTQKTTSET TLEQAIKEKD FRIQTLERTL EKERDDNKKE KAKSRRNENT IFGALQKVQQ DKKQVEESID KHKQAVRELI ENYPGLSSEV PPISALEEQL LSYFRAAKDM EESSSPFRDG AATQTPVVET APVDAPTSAG GRPVDTSSRP AKAKMTEERA VPKPSSEVRR PGGRRPLVRP TLERTEEPHA DTDISAVDAS TVQDKGGPPA EQETSGILPV LQPLSRKRLI TSSQTVDSAS QGEANDVNPP SKKPKEEESS QGTSELKSGQ PPLGDVAAQV NVLPATDDLD GQQPTEEIDT DQAPEPMVEV EATREEDGGD KDDSGDASTD IKGQDADANI DANAIPLEEE HVVAKSEAII ESFDDDRKTE DSKEDAQRTT ATDVDDDMEE GELAEEPEDK SDVDMSEIEG EATAERAAVE PDQSPITQPG AADASPSRTA DASPAREPSP SPVQAGASSR PQNTSTATEA REPSSNPAQA GASSEQRNTS TVVEAAETRS RTINLSERAR QNRQTRFQRA QQPGTARGRG QQSVTLRKDA TGRGSRGRGG RGQS 4.84254 -0.312422 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 3863 3863 3863 3857 3639 3396 1932 1635 820 424 181 80 29 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3866 3866 3866 3860 3642 3397 1922 1489 590 177 61 17 2 1 1 0 0 1 2 3 4 5 2895 900 75 5 1 0 0 1 2 3 4 5 6 7 567 2777 478 41 1 2 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2726 (charge 2) 1615.73 2 152.057 157.061 169.096 175.071 175.118 184.071 202.082 209.092 226.081 249.085 257.196 268.128 284.708 289.113 297.155 303.177 310.536 347.135 367.127 423.554 434.168 493.93 497.2 516.828 519.254 599.631 606.278 648.996 656.027 662.683 665.268 707.808 734.343 738.411 759.34 777.751 805.38 809.375 846.381 917.398 933.432 1004.48 1034.97 1084.51 1101.52 1103.53 1215.58 1288.76 1361.56 1471.48 5 3 4 4 20 4 4 11 7 5 6 8 4 7 29 21 4 5 4 4 6 8 19 6 8 5 8 6 7 8 6 11 53 9 5 8 52 20 7 6 28 19 7 7 100 10 7 6 10 7 GRMZM5G848768_P02 NP_001131193 hypothetical protein LOC100192501 seq=translation; coord=5:215817786..215821620:-1; parent_transcript=GRMZM5G848768_T02; parent_gene=GRMZM5G848768 MEKAIDRQRV LLAHLLPSPS AASSQPQLAA SACAAGDSAA YQRSSSFGDD VVVVAAYRTP ICKAKRGGFK DTYPEDLLTV VLKAVLDNTR INPADIGDIV VGTVLGPGSQ RANECRMAAL FAGFPETVPV RTVNRQCSSG LQAVADVAAA IKAGYYDIGI GAGLESMSIN SIAWEGQVNP KISAFQKAQD CLLPMGITSE NVAHRYGVTR QEQDQAAAES HRRAAAATAS GKFKDEIVPV PTKIVDPKTG EEKEVVISVD DGIRPGTTAS GLAKLKPVFK KDGTTTAGNS SQVSDGAGAV LLMKRSVALK KGLPILGVFR SFAAVGVDPA VMGVGPAVAI PAAVKSAGLE IGDIDLFELN EAFASQFVYC CNKLGLDRSK VNVNGGAIAL GHPLGATGAR CVATLLNEMK RRGRDCRFGV VTMCIGSGMG AAAVFERGDA VDGLSNVRDI QAHNFLSKDA K GRMZM5G848768_P03 NP_001131193 hypothetical protein LOC100192501 seq=translation; coord=5:215817786..215821620:-1; parent_transcript=GRMZM5G848768_T03; parent_gene=GRMZM5G848768 MEKAIDRQRV LLAHLLPSPS AASSQPQLAA SACAAGDSAA YQRSSSFGDD VVVVAAYRTP ICKAKRGGFK DTYPEDLLTV VLKAVLDNTR INPADIGDIV VGTVLGPGSQ RANECRMAAL FAGFPETVPV RTVNRQCSSG LQAVADVAAA IKAGYYDIGI GAGLESMSIN SIAWEGQVNP KISAFQKAQD CLLPMGITSE NVAHRYGVTR QEQDQAAAES HRRAAAATAS GKFKDEIVPV PTKIVDPKTG EEKEVVISVD DGIRPGTTAS GLAKLKPVFK KDGTTTAGNS SQVSDGAGAV LLMKRSVALK KGLPILGVFR SFAAVGVDPA VMGVGPAVAI PAAVKSAGLE IGDIDLFELN EAFASQFVYC CNKLGLDPFQ SKCKWRRDCP WTPSGCNRCP VCGYSSK GRMZM5G848768_P04 NP_001131193 hypothetical protein LOC100192501 seq=translation; coord=5:215817786..215821620:-1; parent_transcript=GRMZM5G848768_T04; parent_gene=GRMZM5G848768 MEKAIDRQRV LLAHLLPSPS AASSQPQLAA SACAAGDSAA YQRSSSFGDD VVVVAAYRTP ICKAKRGGFK DTYPEDLLTV VLKAVLDNTR INPADIGDIV VGTVLGPGSQ RANECRMAAL FAGFPETVPV RTVNRQCSSG LQAVADVAAA IKAGYYDIGI GAGLESMSIN SIAWEGQVNP KISAFQKAQD CLLPMGITSE NVAHRYGVTR QEQDQAAAES HRRAAAATAS GKFKDEIVPV PTKIVDPKTG EEKEVVISVD DGIRPGTTAS GLAKLKPVFK KDGTTTAGNS SQVSDGAGAV LLMKRSVALK KGLPILGVFR SFAAVGVDPA VMGVGPAVAI PAAVKSAGLE IGDIDLFELN EVCVDCLDLH PLLSPIYP 6.52027 -0.395168 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 2022 2022 2022 2022 1924 1830 1674 1500 1446 819 400 167 68 21 10 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2045 2045 2045 2045 1947 1853 1687 1511 1450 713 334 117 34 21 1 0 0 1 2 3 4 5 6 1366 604 57 0 0 18 0 0 1 2 3 4 5 6 7 333 1425 245 24 0 0 0 18 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2730 (charge 2) 1352.58 2 155.081 158.091 159.076 171.077 173.092 175.119 185.091 186.123 186.888 193.097 195.075 197.129 198.087 199.108 204.135 213.086 216.098 218.15 221.091 224.103 226.154 230.148 235.118 241.081 244.092 252.144 259.092 266.159 284.009 312.176 315.202 334.634 351.127 369.141 399.211 426.703 452.25 466.153 475.235 484.165 505.271 518.153 528.25 537.138 599.29 612.223 620.32 670.327 678.346 683.265 741.368 743.384 763.37 852.407 869.421 984.446 1029.49 14 6 9 7 8 77 8 27 6 7 11 12 8 32 7 14 10 11 14 8 58 7 14 63 42 7 38 7 11 9 8 7 9 79 53 10 10 10 7 47 7 7 38 6 57 9 7 100 10 9 79 9 10 21 24 14 7 GRMZM2G036921_P01 NP_001148437 LOC100282052 seq=translation; coord=9:98777728..98779013:-1; parent_transcript=GRMZM2G036921_T01; parent_gene=GRMZM2G036921 MATSALAALS ATAAAAGKRI LLSRPASSSS LSFASRRLAA GAPLRGFLGA PIRAVASSAS AAPAAAAKTI AVGDRLPDAT LSYFDTSSPD GELKTVTVRD LTAGKKVVLF AVPGAFTPTC TQKHLPGFVA KAGELRAKGV DTVACVSVND AFVMRAWKES LGIGDEVLLL SDGNGELARA MGVELDLSDK PVGLGVRSRR YALLAEDGVV KVINLEEGGA FTNSSAEDML NAL 5.32859 -0.247841 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 7163 7163 7151 6920 6701 6292 5915 4417 3019 1972 1205 753 448 262 162 96 49 20 8 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7153 7153 7141 6910 6650 6196 5812 3913 2385 1033 612 218 170 2 1 1 0 0 1 2 3 4 5 6 3130 3025 847 140 16 7 0 0 1 2 3 4 5 6 7 1266 4192 1444 232 27 2 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2734 (charge 2) 1243.66 2 152.057 155.081 157.06 157.097 158.093 159.076 169.097 169.133 171.076 171.112 171.127 172.116 173.091 175.119 183.076 185.092 185.128 186.123 187.072 189.086 191.117 197.128 199.071 199.107 201.087 204.134 210.087 212.102 214.118 217.081 218.15 220.116 226.154 228.097 230.113 235.083 240.134 242.149 244.164 246.109 252.108 255.144 258.144 272.171 274.102 276.1 281.124 283.176 289.187 299.135 301.149 309.157 311.17 317.147 325.151 327.166 329.18 337.148 345.181 354.213 355.159 360.225 368.156 370.171 380.191 382.209 386.166 388.18 398.202 442.708 449.24 451.228 453.248 457.204 469.239 479.248 518.251 522.266 528.313 540.275 550.283 599.353 618.314 657.327 670.387 679.33 744.349 747.357 757.42 758.421 801.373 828.451 829.458 872.399 894.413 898.476 915.473 969.504 1002.52 1073.55 2 8 7 9 3 25 16 10 8 100 3 3 2 25 2 8 2 4 3 9 16 8 2 11 2 4 7 12 4 16 11 4 22 23 7 2 34 29 6 3 4 8 8 15 20 14 4 10 20 18 7 4 38 3 2 10 2 2 4 7 2 14 7 10 3 23 4 3 9 3 3 2 8 3 4 4 3 3 68 4 3 23 3 7 15 3 4 10 27 16 8 15 3 3 3 8 8 9 8 3 GRMZM5G816209_P01 seq=translation; coord=1:230176955..230178674:-1; parent_transcript=GRMZM5G816209_T01; parent_gene=GRMZM5G816209 MQVCLRRGLS LVRQHTSRVL PPLSLHPTRF FLHQSASDPM GEGSVPGKDA KGKGKAKHPA QASALVARDD SYLEAVTHKR IRLFEEIQAR QAVERLNIGG EVIKITLPDG AIKEGKKWIT TPMDIAKEIS SGFAASCLIA QVDETLWDMG RPLEGDCKLQ MFKFDTNEGR DTFWHSSAHI LGESLERAYG CKLCIGPCTT RGEGFYYDAY YNELTLNEEH FGVIENQAKK AVAEKQPFER IEVSRAEALE MFAENKFKVE IINELPEDKT 5.55814 -0.30044 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 4483 4483 4483 4471 4403 4194 3891 3546 3166 2495 1884 1122 550 267 110 42 12 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4485 4485 4485 4473 4405 4196 3852 3444 2967 2106 1218 333 16 1 0 0 1 2 3 4 5 6 1137 1797 1029 418 105 6 0 0 1 2 3 4 5 6 7 784 1768 1225 560 135 15 0 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2735 (charge 3) 1319.75 3 155.081 155.118 156.076 157.097 157.108 157.133 158.092 159.076 159.113 166.061 167.118 169.097 169.133 171.112 173.091 173.128 175.119 176.122 181.097 183.076 183.112 183.149 185.091 185.128 185.165 186.123 187.071 187.107 194.129 195.113 197.128 200.102 201.123 212.103 214.118 218.15 222.124 226.154 229.129 231.123 235.119 240.133 244.166 246.156 248.15 251.104 258.145 261.155 268.13 272.171 275.124 284.009 288.143 295.212 299.008 301.186 304.145 311.171 313.224 323.207 329.185 341.145 345.226 346.224 353.217 372.261 374.251 381.223 385.703 388.118 399.794 414.269 417.258 425.222 426.233 439.842 442.244 458.308 470.268 473.752 480.247 483.29 493.312 511.324 512.327 516.322 523.283 529.348 544.308 565.312 571.355 608.374 610.388 616.377 642.392 673.35 687.416 705.43 713.425 769.409 20 12 8 13 6 9 19 18 7 8 5 29 13 14 19 12 100 4 12 12 8 9 10 5 8 24 10 8 4 9 13 24 20 9 10 8 4 28 11 17 20 36 37 18 29 4 8 4 5 11 10 18 7 4 17 26 5 12 8 8 9 9 24 9 5 4 7 10 15 4 4 12 8 5 9 38 5 21 5 5 5 4 9 26 9 8 9 17 9 8 11 5 10 14 13 19 10 8 8 4 GRMZM2G087186_P01 Q05327 Pyruvate decarboxylase isozyme 3 Fragment (PDC)(EC 4.1.1.1) seq=translation; coord=1:45512802..45515978:-1; parent_transcript=GRMZM2G087186_T01; parent_gene=GRMZM2G087186 MDTHIGSVNG AASNQTVGCP ASAPGCPMAS TPAQPAATLS AGEASLGRHL ARRLVQVGVN DVFAVPGDFN LTLLDHLIAE PGLRLVGCCN ELNAGYAADG YARARGVGAC AVTFTVGGLS VLNAIAGAYS ENLPVICIAG GPNSNDYGTN RILHHTIGLP DFSQELRCFQ TVTCHQAVVN NLDDAHEQID TAIATALRES KPVYLSISCN LPGLPHPTFS RDPVPFFLTP RTSNKMGLEA AVEATVEFLN KAVKPVLVAG PKLRVAKAGK AFVDMVDASG YAYAVMPSAK GLVPETHPHF IGTYWGAVST AFCAEIVESA DAYLFAGPIF NDYSSVGYSF LLKKEKAIIV QPERVIVGNG PAFGCVMMKE FLSELAKRVN KNTTAYENYK RIFVPEGQPL ESEPNEPLRV NVLFKHVQKM LTGDSAVIAE TGDSWFNCQK LKLPEGCGYE FQMQYGSIGW SVGALLGYAQ GANHKRVIAF IGDGSFQVTA QDVSTMLRCE QNSIIFLINN GGYTIEVEIH DGPYNVIKNW NYTGFVDAIH NGLGKCWTSK VKSEEELTAA IETALGEKKD CLCFIEVIAH KDDTSKELLE WGSRVSAANS RPPNPQ GRMZM2G087186_P02 Q05327 Pyruvate decarboxylase isozyme 3 Fragment (PDC)(EC 4.1.1.1) seq=translation; coord=1:45512802..45515978:-1; parent_transcript=GRMZM2G087186_T02; parent_gene=GRMZM2G087186 MDTHIGSVNG AASNQTVGCP ASAPGCPMAS TPAQPAATLS AGEASLGRHL ARRLVQVGVN DVFAVPGDFN LTLLDHLIAE PGLRLVGCCN ELNAGYAADG YARARGVGAC AVTFTVGGLS VLNAIAGAYS ENLPVICIAG GPNSNDYGTN RILHHTIGLP DFSQELRCFQ TVTCHQAVVN NLDDAHEQID TAIATALRES KPVYLSISCN LPGLPHPTFS RDPVPFFLTP RSNKMGLEAA VEATVEFLNK AVKPVLVAGP KLRVAKAGKA FVDMVDASGY AYAVMPSAKG LVPETHPHFI GTYWGAVSTA FCAEIVESAD AYLFAGPIFN DYSSVGYSFL LKKEKAIIVQ PERVIVGNGP AFGCVMMKEF LSELAKRVNK NTTAYENYKR IFVPEGQPLE SEPNEPLRVN VLFKHVQKML TGDSAVIAET GDSWFNCQKL KLPEGCGYEF QMQYGSIGWS VGALLGYAQG ANHKRVIAFI GDGSFQVTAQ DVSTMLRCEQ NSIIFLINNG GYTIEVEIHD GPYNVIKNWN YTGFVDAIHN GLGKCWTSKV KSEEELTAAI ETALGEKKDC LCFIEVIAHK DDTSKELLEW GSRVSAANSR PPNPQ GRMZM2G038821_P01 Q05326 Pyruvate decarboxylase isozyme 2 Fragment (PDC)(EC 4.1.1.1) seq=translation; coord=8:15548387..15551947:-1; parent_transcript=GRMZM2G038821_T01; parent_gene=GRMZM2G038821 MPRARLPLDS NAPTHPTTIL VYTPSRQPAF PPEPSFHSLA DPPPAPAMDT AIGSVPAASD AARHPAPSAS APRDATLGRH LARRLAEVGA RDVFTVPGDF NLTLLDELEA EPGGVRLVGC CNELNAAYAA DGYARARAGG VGACAVTFTV GGLSAINGVA GAFSENLPVV CIVGGPNSND YGSNRILHHT IGLPDFTQEL RCFQNVTCYQ AVVNNLEDAH EQIDTAISTA IKESKPVYIS ISCNLPSIPH PTFSRHPVPF FLSPRLSNQM NLEAAVEAAA AFLNKAVKPV LVGGPKMRVS KAWEALAELA DACGYPVAVM PSAKGLVPVH HSRFIGTYWG AVSTPFCAEI VESADAYLFA GPVFNDYSSV GYSLLLKKEK AIIVQPERVV VGHGPAFGCV LMKDFLHALA TRLKKNTVAY ENYRRIYVPP GEPLSSEPGE PLRVNVLFKH IQAMLSGDMA VIAETGDSWF NCQKLKLPEG CGYEFQMQYG SIGWSVGATL GYAQAAKDKR VIACIGDGSF QVTAQEVSTM LRWGQNSIIF LINNGGYTIE VEIHDGPYNV IKNWNYTGLV EAFHNGEGAC YTAKVRTEEE LTEALEAALG PKKDCLCFIE VIVHKDDTSK ALLEWGSRVS AANSRPPNPQ AC197705.4_FGP001 seq=translation; coord=8:118165588..118167724:1; parent_transcript=AC197705.4_FGT001; parent_gene=AC197705.4_FG001 METLLAGNPA NGVAKPTCNG VGALPVANSH AIIATPPAAA TLAPAGATLG RHLARRLVQI GASDVFAVPG DFNLTLLDYL IAEPGLTLVG CCNELNAGYA ADGYARSRGV GACAVTFTVG GLSVLNAIAG AYSENLPVVC IVGGPNSNDY GTNRILHHTI GLPDFSQELR CFQTITCYQA IINNLDDAHE QIDTAIATAL RESKPVYISV SCNLAGLSHP TFSRDPVPMF ISPRLSNKAN LEYAVEAAAD FLNKAVKPVM VGGPKIRVAK AREAFAAVAD ASGYPFAVMP AAKGLVPEHH PRFIGTYWGA VSTTFCAEIV ESADAYLFAG PIFNDYSSVG YSLLLKREKA VIVQPDRMVV GDGPAFGCIL MPEFLRALAK RLRRNTTAYD NYRRIFVPDR EPPNGKPNEP LRVNVLFKHI KGMLSGDSAV VAETGDSWFN CQKLRLPEGC GYEFQMQYGS IGWSVGATLG YAQAAKDKRV IACIGDGSFQ VTAQDVSTML RCGQKSIIFL INNGGYTIEV EIHDGPYNVI KNWDYTGLVN AIHNSEGNCW TMKVRTEEQL KEAIATATGA KKDCLCFIEV IVHKDDTSKE LLEWGSRVSA ANSRPPNPQ GRMZM2G434792_P01 seq=translation; coord=7:174746426..174748651:1; parent_transcript=GRMZM2G434792_T01; parent_gene=GRMZM2G434792 MDTSGIVGSV DGHRPAASGA VACPASGVSG FITSTGGGGE PPPRDATLGR HLARRLVQVG VSDVFAVPGD FNLTLLDHLI AEPGLRVVGC CNELNAGYAA DGYARARGVG ACVVTFTVGG LSVLNAIAGA YSENLPVVCV VGGPNSNDYG TNRVLHHTIG LPDFSQELRC FQPVTCHQAV VNNLEDAHEQ IDGAISTALR ESKPVYMSVS CNLPGLPHPT FATDPVPYLL APRPSNLTGL AAAVEATVSF LDKAVKPVVV AGPKIRVAKA AAAFVELAEA SGYAVAAMPS AKGLVPETLP RFLGTYWGAV STAFCAEIVE SADAYLLAGP IFNDYSSVGY SILLRKDKAV VVQPDRVTVG NGPTFGCVMM RDFLSALAKR VRPNTTAYDN YRRIFVPGGQ PPECEAGEPL RVNVLFKHIQ RMLSGGSAVI AETGDSWFNC QKLRLPDGCG YEFQMQYGSI GWSVGALLGY AQGAPDKRVI ACIGDGSFQV TAQDVSTMLR CEQRSIIFLI NNGGYTIEVE IHDGPYNVIK NWDYTGLVDA IHNGQGRCWT ARVATEEELT AAIATATGDD RKDCLCFIEV VVHKDDTSKE LLEWGSRVSA ANSRPPNPQ 5.70436 -0.292531 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6914 6914 6914 6551 6257 4561 4280 2469 1768 1095 630 369 180 86 50 10 7 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6927 6927 6927 6564 6268 4548 4041 2138 1289 565 276 110 47 35 1 0 0 1 2 3 4 5 4257 2196 455 9 10 0 0 1 2 3 4 5 6 7 1021 4589 1089 194 18 6 10 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2739 (charge 2) 1237.63 2 152.056 154.087 155.081 157.097 158.092 159.076 159.112 169.097 171.113 175.118 185.091 186.087 187.108 195.112 197.129 199.108 204.134 212.102 221.128 226.155 230.114 232.14 240.133 242.149 244.129 249.121 258.144 265.12 269.124 281.161 309.154 331.671 353.142 380.162 383.192 398.202 497.278 505.251 552.278 554.284 558.264 615.35 686.357 695.321 708.378 784.388 795.411 809.402 866.44 909.452 911.432 966.51 980.484 982.484 994.495 1052.52 1139.56 22 2 5 4 4 24 22 51 4 13 4 4 24 9 4 19 3 4 31 48 10 23 44 3 100 16 15 3 4 4 15 3 3 4 3 3 3 3 32 3 9 4 6 6 14 3 30 5 3 25 4 9 12 4 13 11 6 GRMZM2G063592_P01 NP_001146551 hypothetical protein LOC100280147 seq=translation; coord=10:89988812..90000754:-1; parent_transcript=GRMZM2G063592_T01; parent_gene=GRMZM2G063592 MACVAALFAS PALLPFPSTT SSMASCSCRL RPAVVARAPR QQPRGRRALR RFDEVEGVSK KRRGIGGGGG VGAGGSQPSS SRRDRGLSVD FKEPQVAEFD DLEEDKFLNA VVKVYCTHIA PDYGLPWQKQ RQHSSSGSAF MIGDGKLLTN AHCVEHDTQV KVKRRGDDKK YIAKVLARGV ECDLALLSVE NEEFWRGTEA LHFGRLPCLQ DSVTVVGYPL GGDTISVTKG VVSRIEVTPY AHGTSDLLGI QIDAAINPGN SGGPAFNDQG ECIGVAFQVY RSDEAENIGY VIPTTVVSHF LNDYQKNGKY TGFPCLGVLL QKLENPALRE SLKVPSSEGV LVRRVEPTAP ASSVLRKGDV IVSFDGIAVG CEATVPFRST ERIAFRYLTS QKYAGDIAQL GIIRDGNSMK VQTILQPRKH LVPFHVEGGQ PSYLIVAGLV FTPLTEPFIE EECEDTLGLK LLAKARYSLA TFEGEEIVIV SQVLAHEVNI GYEHMGNQQV MKLNGTTIKN IHHLAHLVDT CKDKFLTFEF EDDFLVVLHR EEADAASSDI LKEHAIPSIR SSDLSEPYAE ANNNEIQKTS EDFGESPVTN FEMGIDCLLW A 5.6099 -0.249329 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 11758 11758 11758 11229 10958 10015 9119 7631 6116 3879 2654 1537 903 501 326 169 84 39 21 13 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11766 11766 11766 11237 10943 9913 8829 7097 4602 2244 897 425 134 31 1 0 0 1 2 3 4 5 6 7 3278 4710 2468 893 328 74 12 5 0 1 2 3 4 5 6 7 2125 4804 3197 1269 292 56 16 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2740 (charge 3) 1700.84 3 155.081 157.097 157.109 158.092 159.077 166.061 167.081 169.097 171.076 175.119 181.097 182.045 183.113 184.071 185.092 186.087 187.071 195.113 198.087 199.107 209.091 213.087 216.098 218.15 226.154 240.098 244.165 252.17 255.145 256.129 258.108 267.138 272.171 278.152 284.124 305.181 312.13 322.161 337.186 342.198 349.182 355.197 383.192 384.709 412.257 426.244 434.231 436.215 452.251 470.264 503.259 505.262 510.216 516.243 523.299 533.267 536.596 555.297 561.286 576.299 584.326 597.303 612.32 614.322 624.343 644.302 648.334 649.338 661.324 666.365 678.357 683.395 707.37 712.364 713.368 740.412 748.36 763.366 768.41 770.413 774.408 783.391 785.379 793.43 805.375 808.423 811.449 834.402 839.448 844.385 862.398 864.406 868.478 872.436 880.453 904.447 934.427 990.467 1012.52 1118.53 8 4 3 8 8 3 4 5 5 36 4 7 3 3 10 5 9 3 4 29 5 12 9 10 80 4 19 4 4 4 5 9 83 5 5 14 4 3 10 3 4 10 5 9 4 4 5 12 9 4 4 11 3 13 19 100 8 4 3 8 10 3 66 5 10 5 10 8 9 3 4 35 3 24 8 4 4 8 44 3 5 4 3 4 15 5 11 4 8 4 38 10 3 3 4 3 4 11 3 12 GRMZM2G086553_P01 NP_001149978 AT-hook protein 1 seq=translation; coord=10:135576590..135577696:-1; parent_transcript=GRMZM2G086553_T01; parent_gene=GRMZM2G086553 MDVRDLHQQP QQQQAPPRVG SPPQAGAGGV MMQHAAAFGA APPPSGLPQA SAANVMHGMS LAFNPMASPD ASSPISSMKI VDMPLGSMYR PDSGATGLQQ QQPGSGGVGA SGGAIVAVSG GDLVKKKRGR PRKYGPDGSI GLGLKTAAAG VTEATGAQSG GGGSTPNPDG KRRGRPPGSG KKKQLDALGN IACSPAPYLC LPFMFMSQFF KVCSYLRAKT NKISISLLCF GRMZM2G086553_P02 NP_001149978 AT-hook protein 1 seq=translation; coord=10:135573176..135577696:-1; parent_transcript=GRMZM2G086553_T02; parent_gene=GRMZM2G086553 MDVRDLHQQP QQQQAPPRVG SPPQAGAGGV MMQHAAAFGA APPPSGLPQA SAANVMHGMS LAFNPMASPD ASSPISSMKI VDMPLGSMYR PDSGATGLQQ QQPGSGGVGA SGGAIVAVSG GDLVKKKRGR PRKYGPDGSI GLGLKTAAAG VTEATGAQSG GGGSTPNPDG KRRGRPPGSG KKKQLDALGS SGTSFTPHII TVKPNEDVAS KIMAFSQQGP RTTCIISANG ALCTATLRQP ATSGGIVTYE GHFDILSLSG SFLLAEDGDT RSRTGGLSVA LAGSDGRIVG GCVAGMLMAA TPVQVVVGSF IAEAKKPKEE QPKREPTSVP PHTAVFGAAS TASPPSDGTS SEHSDDPGSP MGPNGSAFTS AGLPLHSTYA AVGWSLSEDQ SRYDPDLKMM TD GRMZM2G086553_P03 NP_001149978 AT-hook protein 1 seq=translation; coord=10:135573176..135577696:-1; parent_transcript=GRMZM2G086553_T03; parent_gene=GRMZM2G086553 MDVRDLHQQP QQQQAPPRVG SPPQAGAGGV MMQHAAAFGA APPPSGLPQA SAANVMHGMS LAFNPMASPD ASSPISSMKI VDMPLGSMYR PDSGATGLQQ QQPGSGGVGA SGGAIVAVSG GDLVKKKRGR PRKYGPDGSI GLGLKTAAAG VTEATGAQSG GGGSTPNPDG KRRGRPPGSG KKKQLDALGS SGTSFTPHII TVKPNEDVAS KIMAFSQQGP RTTCIISANG ALCTATLRQP ATSGGIVTYE GHFDILSLSG SFLLAEDGDT RSRTGGLSVA LAGSDGRIVG GCVAGMLMAA TPVQVVVGSF IAEAKKPKEE QPKREPTSVP PHTAVFGAAS TASPPSDGTS SEHSDDPGSP MGPNGSAFTS AGLPLHSTYA AVGWSLSEDQ SRYDPDLKMM TD 7.56318 -0.336141 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 11983 11983 11983 11983 11666 10800 9868 8199 6369 4707 3279 1678 925 489 279 126 58 7 3 2 2 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 11970 11970 11970 11970 11653 10779 9772 7903 5669 3671 1856 458 106 1 0 0 1 2 3 4 5 6 7 3233 4961 2767 794 182 49 4 0 0 1 2 3 4 5 6 7 2292 5419 3289 769 189 24 2 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2741 (charge 3) 1670.84 3 155.081 155.118 157.097 158.092 159.076 166.061 167.093 167.116 169.097 171.076 171.113 172.072 173.055 173.092 173.128 175.105 175.119 183.112 185.092 185.115 187.071 188.103 189.087 193.096 195.112 197.128 198.087 198.123 199.071 199.107 201.123 204.134 209.092 212.103 216.134 219.116 223.107 226.154 228.114 231.124 240.097 241.137 244.165 248.109 255.145 257.123 266.126 272.171 283.14 301.129 312.161 326.179 337.15 341.139 348.167 352.198 354.176 356.977 366.177 369.223 383.198 394.18 427.182 432.23 436.213 440.261 452.223 456.241 494.234 501.278 504.765 511.26 528.765 551.289 553.304 555.275 559.274 561.27 568.325 596.279 599.277 619.293 622.294 630.321 651.317 679.354 680.344 684.323 686.342 696.375 702.315 736.34 759.362 802.37 824.439 826.402 848.428 938.478 1293.43 1665.92 30 7 9 10 14 8 5 5 34 14 7 5 7 32 14 9 100 7 14 19 6 5 6 5 7 6 9 10 8 27 27 8 14 11 6 11 5 65 5 39 23 6 22 6 26 23 18 43 7 36 6 6 14 6 25 38 13 8 42 80 12 12 7 11 40 46 14 6 37 13 46 30 37 11 8 9 12 9 53 10 69 8 70 14 8 13 20 23 11 43 9 23 24 8 11 35 9 14 8 9 GRMZM2G116292_P01 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31201315..31206122:-1; parent_transcript=GRMZM2G116292_T01; parent_gene=GRMZM2G116292 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGIIEP SLQALARKYN QDKMICRKCY ARLHPRAVNC RKKKCGHSNQ LRAKKKIKN GRMZM2G116292_P02 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T02; parent_gene=GRMZM2G116292 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGIIEP SLQALARKYN QDKMICRNSG GRMZM2G116292_P03 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T03; parent_gene=GRMZM2G116292 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGIIEP SLQALARKYN QDKMICRKCY ARLHPRAVNC RKKKCGHSNQ LRAKKKIKN GRMZM2G116292_P04 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T04; parent_gene=GRMZM2G116292 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGIIEP SLQALARKYN QDKMICRKVE VVEGVFAKNT GQRDGCWIQN ELSQFNICTM YTKGDTDAMH GCTLGLSTAA RRSVVTATS GRMZM2G116292_P05 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31206122:-1; parent_transcript=GRMZM2G116292_T05; parent_gene=GRMZM2G116292 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGIIEPSLQA LARKYNQDKM ICRKCYARLH PRAVNCRKKK CGHSNQLRAK KKIKN GRMZM2G047727_P01 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=2:165103157..165107176:-1; parent_transcript=GRMZM2G047727_T01; parent_gene=GRMZM2G047727 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGIIEP SLQALARKYN QDKMICRKCY ARLHPRAVNC RKKKCGHSNQ LRAKKKIKN GRMZM2G409726_P01 NP_001105376 polyubiquitin seq=translation; coord=5:82443403..82446794:-1; parent_transcript=GRMZM2G409726_T01; parent_gene=GRMZM2G409726 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGMQIFVK TLTGKTITLE VESSDTIDNV KAKIQDKEGI PPDQQRLIFA GKQLEDGRTL ADYNIQKEST LHLVLRLRGG MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGQ GRMZM2G409726_P02 NP_001105376 polyubiquitin seq=translation; coord=5:82443815..82446714:-1; parent_transcript=GRMZM2G409726_T02; parent_gene=GRMZM2G409726 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGQ GRMZM2G409726_P03 NP_001105376 polyubiquitin seq=translation; coord=5:82443856..82446714:-1; parent_transcript=GRMZM2G409726_T03; parent_gene=GRMZM2G409726 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGMQIFVK TLTGKTITLE VESSDTIDNV KAKIQKESTL HLVLRLRGGM QIFVKTLTGK TITLEVESSD TIDNVKAKIQ DKEGIPPDQQ RLIFAGKQLE DGRTLADYNI QKESTLHLVL RLRGGMQIFV KTLTGKTITL EVESSDTIDN VKAKIQDKEG IPPDQQRLIF AGKQLEDGRT LADYNIQKES TLHLVLRLRG GQ GRMZM2G006293_P01 NP_001150700 40S ribosomal protein S27a seq=translation; coord=1:191263450..191264705:-1; parent_transcript=GRMZM2G006293_T01; parent_gene=GRMZM2G006293 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGAKKR KKKTYTKPKK IKHKHKKVKL SVLQFYKVDD TTSKVTRLRK ECPNTECGAG VFMANHFDRH YCGKCGLTYV YNQKA GRMZM2G118637_P01 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236857988..236860949:1; parent_transcript=GRMZM2G118637_T01; parent_gene=GRMZM2G118637 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGMQIFVK TLTGKTITLE VESSDTIDNV KAKIQDKEGI PPDQQRLIFA GKQLEDGRTL ADYNIQKEST LHLVLRLRGG Y GRMZM2G118637_P02 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859470..236861173:1; parent_transcript=GRMZM2G118637_T02; parent_gene=GRMZM2G118637 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGMQIFVK TLTGKTITLE VESSDTIDNV KAKIQDKEGI PPDQQRLIFA GKQLEDGRTL ADYNIQKEST LHLVLRLRGG Y GRMZM2G118637_P03 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859530..236860675:1; parent_transcript=GRMZM2G118637_T03; parent_gene=GRMZM2G118637 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGY GRMZM2G118637_P04 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859530..236860669:1; parent_transcript=GRMZM2G118637_T04; parent_gene=GRMZM2G118637 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQKESTLHL VLRLRGGMQI FVKTLTGKTI TLEVESSDTI DNVKAKIQDK EGIPPDQQRL IFAGKQLEDG RTLADYNIQK ESTLHLVLRL RGGMQIFVKT LTGKTITLEV ESSDTIDNVK AKIQDKEGIP PDQQRLIFAG KQLEDGRTLA DYNIQKESTL HLVLRLRGG GRMZM2G118637_P05 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859647..236860633:1; parent_transcript=GRMZM2G118637_T05; parent_gene=GRMZM2G118637 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKE GRMZM2G419891_P01 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883718:1; parent_transcript=GRMZM2G419891_T01; parent_gene=GRMZM2G419891 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGMQIFVK TLTGKTITLE VESSDTIDNV KAKIQDKEGI PPDQQRLIFA GKQLEDGRTL ADYNIQKEST LHLVLRLRGG MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGQ GRMZM2G419891_P02 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883699:1; parent_transcript=GRMZM2G419891_T02; parent_gene=GRMZM2G419891 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGMQIFVK TLTGKTITLE VESSDTIDNV KAKIQDKEGI PPDQQRLIFA GKQLEDGRTL ADYNIQKEST LHLVLRLRGG MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGQ GRMZM2G419891_P03 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883232:1; parent_transcript=GRMZM2G419891_T03; parent_gene=GRMZM2G419891 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQKESTLHL VLRLRGGMQI FVKTLTGKTI TLEVESSDTI DNVKAKIQDK EGIPPDQQRL IFAGKQLEDG RTLADYNIQK ESTLHLVLRL RGGMQIFVKT LTGKTITLEV ESSDTIDNVK AKIQDKEGIP PDQQRLIFAG KQLEDGRTLA DYNIQKESTL HLVLRLRGG GRMZM2G419891_P04 NP_001105376 polyubiquitin seq=translation; coord=4:236879381..236883699:1; parent_transcript=GRMZM2G419891_T04; parent_gene=GRMZM2G419891 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGQ GRMZM2G419891_P05 NP_001105376 polyubiquitin seq=translation; coord=4:236881289..236883469:1; parent_transcript=GRMZM2G419891_T05; parent_gene=GRMZM2G419891 MQMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGMQIFVK TLTGKTITLE VESSDTIDNV KAKIQDKEGI PPDQQRLIFA GKQLEDGRTL ADYNIQKEST LHLVLRLRGG MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGMQIF VKTLTGKTIT LEVESSDTID NVKAKIQDKE GIPPDQQRLI FAGKQLEDGR TLADYNIQKE STLHLVLRLR GGMQIFVKTL TGKTITLEVE SSDTIDNVKA KIQDKEGIPP DQQRLIFAGK QLEDGRTLAD YNIQKESTLH LVLRLRGGMQ IFVKTLTGKT ITLEVESSDT IDNVKAKIQD KEGIPPDQQR LIFAGKQLED GRTLADYNIQ KESTLHLVLR LRGGQ GRMZM2G431821_P01 P27923 Ubiquitin-40S ribosomal protein S27a Precursor [Contains Ubiquitin;40S ribosomal protein S27a] seq=translation; coord=8:171603815..171604536:-1; parent_transcript=GRMZM2G431821_T01; parent_gene=GRMZM2G431821 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGAKKR KKKTYTKPKK IKHKHKKVKL AVLQFYKVDD ATGKVTRLRK ECPNTECGAG VFMANHFDRH YCGKCGLTYV YNQKA GRMZM2G047732_P01 NP_001105472 40S ribosomal protein S27a seq=translation; coord=8:39126474..39127702:1; parent_transcript=GRMZM2G047732_T01; parent_gene=GRMZM2G047732 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGAKKR KKKTYTKPKK IKHKHKKVKL AVLQFYKVDD ATGKVTRLRK ECPNAECGAG VFMANHFDRH YCGKCGLTYV YNQQA GRMZM2G047732_P02 NP_001105472 40S ribosomal protein S27a seq=translation; coord=8:39126804..39127596:1; parent_transcript=GRMZM2G047732_T02; parent_gene=GRMZM2G047732 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGAKKR KKKTYTKPKK IKHKHKKVKL AVLQFYKVDD ATGKVTRLRK ECPNAECGAG VFMANHFDRH YCGKCGLTYV YNQQA GRMZM2G357296_P01 B6SIL9 40S ribosomal protein S27a seq=translation; coord=6:125241154..125242106:-1; parent_transcript=GRMZM2G357296_T01; parent_gene=GRMZM2G357296 MQIFVKTLTG KTITLEVESS DTIDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGAKKR KKKTYTKPKK IKHKHKKVKL SVLQFYKVDD ATGKVTRLRK ECPNTECGAG VFMANHFDRH YCGKCGLTYV YNQKA GRMZM2G116689_P01 NP_001148606 LOC100282222 seq=translation; coord=7:116376688..116380988:1; parent_transcript=GRMZM2G116689_T01; parent_gene=GRMZM2G116689 MQIFVKTLTG KTITLEVESS DTVDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGTMIK VKTLTGKEIE IDIEPTDSID RIKERVEEKE GIPPVQQRLI YAGKQLADDK TAKDYNIEGG SVLHLVLALR GGY GRMZM2G116689_P03 NP_001148606 LOC100282222 seq=translation; coord=7:116376702..116380916:1; parent_transcript=GRMZM2G116689_T03; parent_gene=GRMZM2G116689 MQIFVKTLTG KTITLEVESS DTVDNVKAKI QDKEGIPPDQ QRLIFAGKQL EDGRTLADYN IQKESTLHLV LRLRGGTMIK VKTLTGKEIE IDIEPTDSID RIKERVEEKE GIPPVQQRLI YAGKQLADDK TAKDYNIEGG SVLHLVLALR GGY GRMZM2G005461_P01 seq=translation; coord=9:19289416..19290344:-1; parent_transcript=GRMZM2G005461_T01; parent_gene=GRMZM2G005461 MNYDYDDEEE EVRRVGGGSY RFRRSRAWSP ESPRLPNPTA RPRFSSSYYK SAGSPALWPL NARPPPDVSD LVSLLPSSEI FVHSEMQIFV KTLAGKSITL EVESSDTVEN VKAKIQDKEG IPPDQQRLIF AGKQLDDGRI LADYNIQKES TLHLVLRLRG GGGGQ GRMZM2G406643_P01 seq=translation; coord=7:150270916..150273417:1; parent_transcript=GRMZM2G406643_T01; parent_gene=GRMZM2G406643 MQIFVKTLTG KTITLEVESS DTVANDKAKI QDKEGIPPDQ QRLIFAGKQL EDDRTLADYS IQKDSTLHLV LRLRGGGRGG YPLMSVPWDL INLARKHNED KMICRKCYAR LPPRSKNCRK KKCGHSNELR SKKKLISKFS M 5.33035 -0.288127 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4943 4943 4830 4568 4392 3010 2721 1406 862 383 221 131 73 28 15 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4946 4946 4833 4559 4384 2928 2249 964 407 159 93 43 7 1 0 0 1 2 3 4 5 3385 1553 104 16 2 0 0 1 2 3 4 5 6 7 671 2957 1141 158 21 0 0 112 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2746 (charge 2) 1039.52 2 150.045 158.092 159.076 167.055 167.118 168.055 169.062 169.133 170.064 175.119 183.149 187.071 187.144 188.074 195.113 199.107 213.086 217.107 223.063 225.042 227.101 232.14 239.094 244.165 254.149 266.999 272.158 281.051 283.025 286.149 299.061 301.059 303.177 310.139 313.649 322.161 326.967 341.144 342.996 344.976 346.973 359.028 361.026 370.687 380.155 413.22 415.035 417.033 431.235 438.198 469.204 525.275 529.235 546.262 566.255 584.269 626.287 643.314 645.321 680.334 723.343 724.345 740.367 742.372 803.365 1 2 5 56 1 7 13 1 1 10 1 29 4 2 2 3 3 2 6 5 3 3 10 1 6 1 2 5 2 1 100 19 2 4 1 25 1 2 1 22 5 10 3 56 1 2 6 2 24 2 1 1 2 12 2 3 3 56 3 3 4 1 39 3 1 GRMZM2G139296_P01 NP_001143877 hypothetical protein LOC100276678 seq=translation; coord=8:171762195..171768664:1; parent_transcript=GRMZM2G139296_T01; parent_gene=GRMZM2G139296 MATRAAARFL QRRFLSSGGK VLSEEEKAAE NVYIKKVEQE KLEKLARKGP SSGEQPSSTT GSAASDVKAD AGPTESASAS VSTDKNKNYA VLAGAVAALG GLGWYLLLKP KKSEEVVD 5.67825 -0.276988 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 9547 9547 9016 8777 7989 6922 5710 4145 2937 1813 1124 590 291 154 73 32 15 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9549 9549 9018 8767 7911 6722 5106 3205 1622 653 232 71 13 1 0 0 1 2 3 4 5 6 7 2627 3760 2012 853 248 42 8 6 0 1 2 3 4 5 6 7 1810 4402 2372 738 185 42 3 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2747 (charge 3) 1977.94 3 152.057 153.066 155.081 157.097 159.076 167.081 171.076 173.092 175.12 181.061 185.092 187.071 189.087 198.087 199.071 199.107 201.087 203.103 209.092 213.087 224.102 227.102 228.171 230.113 236.103 240.134 242.113 244.165 246.181 254.113 258.106 270.108 272.124 274.103 287.134 299.133 311.135 313.15 315.04 322.155 329.145 337.148 341.146 345.14 355.162 361.206 373.171 386.182 402.163 432.172 434.712 448.24 451.191 456.212 458.188 469.21 471.181 475.216 489.193 494.235 514.26 519.277 533.298 540.241 545.246 558.251 568.24 572.235 586.251 590.318 614.289 625.283 627.284 643.304 644.305 661.335 677.347 683.643 691.301 708.337 716.358 734.367 736.357 754.335 755.347 771.361 773.367 790.385 817.394 835.415 887.436 936.46 938.437 948.465 955.444 1024.49 1025.47 1042.47 1110.52 1207.58 2 2 5 18 8 12 8 3 2 2 25 5 5 3 3 9 8 2 2 5 9 9 3 3 8 7 6 2 39 14 7 7 8 9 3 3 5 7 2 2 8 8 4 6 5 8 3 8 3 2 3 17 2 3 5 6 2 3 6 5 9 18 3 6 2 2 2 6 7 12 2 5 3 46 16 13 15 3 2 2 7 56 7 20 6 100 13 3 6 28 2 16 5 6 11 15 9 8 6 5 GRMZM2G069174_P01 NP_001150471 LOC100284101 seq=translation; coord=2:78022601..78028183:1; parent_transcript=GRMZM2G069174_T01; parent_gene=GRMZM2G069174 MASQPPPPAA AAASGAPPPA QVVGNAFVHQ YYNILHQSPE LVYRFYQEAS CLGRPAGTGA DGMDTVTTMD AINDKIVSMG IDRAEIKAVD AQESLCGGVS VLVMGHLTGR NSVSRQFVQS FFLAPQEKGY FVLNDILRYV GEGGGDEGAE KQPAPEVAAD AETTTSAPIL SARWPSLHLI QRRKF GRMZM2G069174_P02 NP_001150471 LOC100284101 seq=translation; coord=2:78022601..78028183:1; parent_transcript=GRMZM2G069174_T02; parent_gene=GRMZM2G069174 MASQPPPPAA AAASGAPPPA QVVGNAFVHQ YYNILHQSPE LVYRFYQEAS CLGRPAGTGA DGMDTVTTMD AINDKIVSMG IDRAEIKAVD AQESLCGGVS VLVMGHLTGR NSVSRQFVQS FFLAPQEKGY FVLNDILRYV GEGGGDEGAE KQPAPEVAAD AETTTSAPIL ANGTVGGDAT TVPQDASPQP ECQVAEPALN PKEEVLNGEV CNSLSDVEKP VAEETPVPDV INEVPNNVAV APPISSPPVP LKEAPKKSYA SIVKVMKEHR PLAPAVPSRP APPITEKQAS PAPTPVTEAP AFSPNPQSGG FQDPEGII GRMZM2G069174_P03 NP_001150471 LOC100284101 seq=translation; coord=2:78022601..78028183:1; parent_transcript=GRMZM2G069174_T03; parent_gene=GRMZM2G069174 MASQPPPPAA AAASGAPPPA QVVGNAFVHQ YYNILHQSPE LVYRFYQEAS CLGRPAGTGA DGMDTVTTMD AINDKIVSMG IDRAEIKAVD AQESLCGGVS VLVMGHLTGR NSVSRQFVQS FFLAPQEKGY FVLNDILRYV GEGGGDEGAE KQPAPEVAAD AETTTSAPIL ANGTVGGDAT TVPQDASPQP ECQVAEPALN PKEEVLNGEV CNSLSDVEKP VAEETPVPDV INEVPNNVAV APPISSPPVP LKEAPKKSYA SIVKVMKEHR PLAPAVPSRP APPITEKQAS PAPTPVTEAP AFSPNPQSGG FQDPEVDAHA IYVRSLPLNA TPQQLEEEFK RFGTIKHEGI QVRSNKIQGF CYGFVEFEDA SAVQAAIEAS PVTIGERQCF VEEKRTTGSR GGSRGGRFPP GRGGNFRGEG IRGRGTYNGG RGYGRGEFSY RSDYGGRGGG RGGSLHGGDV GYQRVDYSGT SSGRGARAPS AAAAMAK GRMZM2G069174_P04 NP_001150471 LOC100284101 seq=translation; coord=2:78022601..78028183:1; parent_transcript=GRMZM2G069174_T04; parent_gene=GRMZM2G069174 MASQPPPPAA AAASGAPPPA QVVGNAFVHQ YYNILHQSPE LVYRFYQEAS CLGRPAGTGA DGMDTVTTMD AINDKIVSMG IDRAEIKAVD AQESLCGGVS VLVMGHLTGR NSVSRQFVQS FFLAPQEKGY FVLNDILRYV GEGGGDEGAE KQPAPEVAAD AETTTSAPIL ANGTVGGDAT TVPQDASPQP ECQVAEPALN PKEEVLNGEV CNSLSDVEKP VAEETPVPDV INEVPNNVAV APPISSPPVP LKEAPKKSYA SIVKVMKEHR PLAPAVPSRP APPITEKQAS PAPTPVTEAP AFSPNPQSGG FQDPEVDAHA IYVRSLPLNA TPQQLEEEFK RFGTIKHEGI QVRSNKIQGF CYGFVEFEDA SAVQAAIEAS PVTIGERQCF VEEKRTTGSR GGGSRGGRFP PGRGGNFRGE GIRGRGTYNG GRGYGRGEFS YRSDYGGRGG GRGGSLHGGD VGYQRVDYSG TSSGRGARAP SAAAAMAK 5.34234 -0.344667 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2167 2167 2167 2031 1887 1788 1099 842 462 211 63 46 9 4 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2175 2175 2175 2039 1886 1784 1074 779 352 140 48 38 1 0 0 1 2 3 4 1164 850 152 10 0 0 1 2 3 4 5 6 7 590 1450 120 7 0 0 9 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2748 (charge 2) 1267.55 2 152.056 155.081 156.077 157.097 158.092 159.076 159.091 167.081 169.097 171.076 171.112 172.112 173.055 173.092 175.119 184.072 185.165 187.071 195.088 199.108 201.087 204.134 212.103 226.154 230.078 233.164 235.144 237.121 240.132 244.165 258.145 260.123 263.138 270.147 285.196 313.189 320.16 348.123 404.212 408.671 420.103 433.167 442.155 446.238 470.26 515.244 525.79 533.254 673.231 696.359 705.298 762.326 819.34 832.268 901.45 921.468 998.494 1005.41 6 5 14 3 5 12 3 4 4 6 4 13 5 18 18 4 5 15 4 6 15 16 6 33 6 5 100 4 3 29 5 16 12 4 42 5 5 4 17 3 3 3 4 3 4 4 4 11 4 4 5 5 16 5 4 4 6 21 GRMZM2G467007_P01 NP_001140281 hypothetical protein LOC100272325 seq=translation; coord=9:154307169..154311241:-1; parent_transcript=GRMZM2G467007_T01; parent_gene=GRMZM2G467007 MWVTSMPQVW DEEGAAKGGA VTPAPAAAML GSLAGWLSRT VQPQPPAPRV CGTAGGPPVT APRLRLRDGR HLAYCESGVP RDQARFAVVF SHGFTGSRED SVRASQEVAE ELGVYMVGFD RAGYGQSDPN PNRSVKSAAL DVEELADALG LGPKFYVIGI SLGCHAVWGA LKYIPDRIAG AAMMAPVVNY WWPGFSPELA AEVYAKQEVG DQWALRVSHH APGILHWWME QSWLPTSTVV AGTTPLPNER DAEIRSKMKA DGTFQQKREQ ATQQGIHESY YRDMTVMFGK WEFDPMALPE PPCPVHLWQG DEDGLVPVVL QRYLAGKIGW INYHELPGTG HFLSSVPGLG DNVLRTLFSD KQ GRMZM2G467007_P02 NP_001140281 hypothetical protein LOC100272325 seq=translation; coord=9:154307396..154311241:-1; parent_transcript=GRMZM2G467007_T02; parent_gene=GRMZM2G467007 MVGFDRAGYG QSDPNPNRSV KSAALDVEEL ADALGLGPKF YVIGISLGCH AVWGALKYIP DRIAGAAMMA PVVNYWWPGF SPELAAEVYA KQEVGDQWAL RVSHHAPGIL HWWMEQSWLP TSTVVAGTTP LPNERDAEIR SKMKADGTFQ QKREQATQQG IHESYYRDMT VMFGKWEFDP MALPEPPCPV HLWQGDEDGL VPVVLQRYLA GKIGWINYHE LPGTGHFLSS VPGLGDNVLR TLFSDKQ GRMZM2G467007_P04 NP_001140281 hypothetical protein LOC100272325 seq=translation; coord=9:154307169..154310878:-1; parent_transcript=GRMZM2G467007_T04; parent_gene=GRMZM2G467007 MWVTSMPQVW DEEGAAKGGA VTPAPAAAML GSLAGWLSRT VQPQPPAPRV CGTAGGPPVT APRLRLRDGR HLAYCESGVP RDQARFAVVF SHGFTGSRED SVRASQGRWT ATSVYCLSTC NAKLEFGELQ LVSYTGSLPL ARRLSVGCHF HSQAADGALR RDAVIAASDA DWALIRIGLV VGPLEEQSRH GHADTAGSST KSLGRPGAGV LALAAMELLA KAPVLGCAGK MQRQRQRGSA LGRWICRAVA PPRAAPATPP RVRLRDGRHL AYAESGASKE DARFKVVFSH GFTGSRLDTV RPAPEVAEEL GVYMVGFDRA GYGQSDPNPN RSVKSAALDV EELADALGLG PKFYVIGISL GCHAVWGALK YIPDRIAGAA MMAPVVNYWW PGFSPELAAE VYAKQEVGDQ WALRVSHHAP GILHWWMEQS WLPTSTVVAG TTPLPNERDA EIRSKMKADG TFQQKREQAT QQGIHESYYR DMTVMFGKWE FDPMALPEPP CPVHLWQGDE DGLVPVVLQR YLAGKIGWIN YHELPGTGHF LSSVPGLGDN VLRTLFSDKQ 4.73894 -0.379115 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2674 2674 2601 2516 2379 2196 988 697 317 70 26 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2677 2677 2604 2513 2372 2179 930 586 213 25 21 1 0 0 1 0 0 1 2 3 4 1930 680 72 8 0 0 1 2 3 4 5 6 7 402 2062 210 3 0 0 13 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2752 (charge 2) 1275.57 2 152.057 155.081 169.061 169.096 171.076 171.111 173.092 175.119 181.097 184.07 186.087 187.144 193.097 195.087 197.129 199.109 212.102 216.134 221.092 226.155 234.146 239.15 241.08 244.166 250.118 255.111 264.002 271.14 278.112 292.127 330.18 349.15 358.927 369.186 371.116 386.215 400.229 432.184 580.282 597.31 599.32 667.367 712.333 799.362 827.45 943.471 967.415 984.446 7 2 4 2 3 2 2 17 2 2 16 2 8 2 2 6 8 3 7 9 2 3 2 2 2 2 2 3 2 3 2 6 2 8 3 17 2 2 4 100 2 4 4 8 3 2 3 12 GRMZM2G161673_P01 NP_001141335 hypothetical protein LOC100273426 seq=translation; coord=6:65490775..65492414:1; parent_transcript=GRMZM2G161673_T01; parent_gene=GRMZM2G161673 MARAGVSTAP LSRTHLLPPR PSLLHNTQPH SLLLRPQRKA PATTAAALPP AADFPALSLP AAAAAAAALA AAVSLSDPER RRRSQAEAAG GGDKEAVRAY FNSTGFERWR KIYGSATEGV NRVQLDIREG HAQTVAAALA MLRDSPLELA GATVCDAGCG TGSLAIPLAA AGADVLASDI SAAMVSEAQR QAAAQSSSSS FRMPRFEVRD LESLEGRYDV VVCLDVLIHY PREEARAMIR HLASLADKRL LISFAPRTLY FDFLKRVGEL FPGPSKATRA YLHAEADIED ALRQAGWRVA NRGFISTQFY FAKLFDAVPV GSST 6.90973 -0.394842 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 4343 4343 4343 4343 4231 3934 3764 3450 3196 1803 1302 596 260 77 20 10 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4346 4346 4346 4346 4234 3937 3751 3403 3148 1640 1051 391 40 16 2 1 0 0 1 2 3 4 2220 1805 291 30 0 0 1 2 3 4 5 6 7 1033 2864 408 34 5 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2757 (charge 2) 1226.57 2 152.056 154.097 155.081 157.06 157.108 157.134 158.092 159.076 167.055 169.05 169.097 171.076 171.112 172.108 173.055 173.092 173.128 174.993 175.119 182.092 183.076 183.112 185.091 185.127 185.164 186.123 187.071 189.087 190.052 195.112 198.087 198.123 199.071 200.103 201.123 204.134 213.086 217.082 226.118 233.165 239.094 241.093 244.093 254.113 255.114 271.138 275.169 283.141 286.009 287.006 297.155 299.062 301.058 305.159 325.15 329.193 356.07 357.067 359.065 365.198 375.073 392.194 415.701 420.993 421.993 427.234 452.215 483.009 496.253 501.276 508.749 512.207 516.256 549.803 583.283 605.281 624.355 630.317 657.28 670.313 700.361 729.386 757.346 759.355 798.284 830.403 868.375 885.396 956.44 1027.47 1168.7 24 64 74 10 10 20 25 31 10 7 33 8 21 62 8 13 29 7 100 73 31 9 6 8 22 8 7 11 10 6 9 9 9 75 40 22 9 11 61 21 37 23 11 53 6 58 11 6 21 31 26 22 24 6 27 6 33 78 9 9 7 8 24 11 8 46 6 7 8 10 6 6 6 28 25 28 6 12 8 49 8 8 93 26 7 12 27 40 34 43 7 GRMZM2G081037_P01 NP_001141129 hypothetical protein LOC100273215 seq=translation; coord=4:156953772..156958300:1; parent_transcript=GRMZM2G081037_T01; parent_gene=GRMZM2G081037 GRMZM2G081037_P02 NP_001141129 hypothetical protein LOC100273215 seq=translation; coord=4:156953772..156958300:1; parent_transcript=GRMZM2G081037_T02; parent_gene=GRMZM2G081037 8.39552 -0.508819 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 3361 3361 3361 3352 3210 3163 2928 2143 1629 915 325 207 19 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3367 3367 3367 3358 3216 3158 2926 2109 1063 435 91 31 1 0 0 1 2 3 4 5 1867 1230 125 145 1 0 0 1 2 3 4 5 6 7 638 2068 630 26 0 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2758 (charge 2) 1412.63 2 155.081 156.076 157.061 158.092 159.076 169.097 171.075 173.091 175.119 186.089 187.071 195.113 198.088 199.072 201.087 204.134 214.119 227.102 228.099 230.114 235.144 240.134 244.128 246.108 251.103 259.472 263.139 283.138 286.14 291.165 301.149 312.167 317.145 320.129 332.161 348.188 419.226 476.246 517.379 530.893 609.053 620.322 648.296 763.318 795.84 834.353 884.423 905.397 1063.46 1111.5 1150.49 1326.97 22 5 6 5 16 16 5 5 31 4 20 4 5 6 7 16 13 17 17 9 100 6 30 6 5 4 32 4 5 18 15 5 6 5 6 30 6 39 6 5 6 6 40 21 7 39 16 31 6 5 24 5 GRMZM2G087570_P01 seq=translation; coord=6:44382950..44385913:-1; parent_transcript=GRMZM2G087570_T01; parent_gene=GRMZM2G087570 5.54326 -0.35763 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 4672 4672 4672 4672 4596 4295 3952 3731 3569 1637 1471 434 158 46 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4686 4686 4686 4686 4610 4309 3953 3729 3571 1557 1199 191 5 1 0 0 1 2 3 4 2618 1930 133 7 0 0 1 2 3 4 5 590 3615 424 56 3 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2764 (charge 2) 1418.69 2 155.081 156.076 167.12 171.873 173.091 175.119 179.818 199.07 199.107 199.18 216.098 227.175 243.135 252.137 303.178 329.154 347.165 360.176 486.244 532.236 587.759 600.09 653.3 702.314 720.871 794.135 1046.46 1132.47 1175.48 1244.56 7 8 6 6 9 100 5 9 8 83 8 30 6 23 12 9 7 6 12 10 10 9 8 13 6 7 12 10 24 28 GRMZM2G134668_P02 NP_001150317 calnexin seq=translation; coord=2:61490885..61494711:-1; parent_transcript=GRMZM2G134668_T02; parent_gene=GRMZM2G134668 MGGRALLLLL LVSALVFQIH ASDPLLYEPF DEDFEGRWVV SKKDEYQGVW RHAKSDGHED YGLLVSEKAR KYAIIKELDE PVTLKDGTVV LQFEVRLQNG LECGGAYIKY IRPQDAGWDA KEFDNETPYT IMFGPDKCGS TNKVHFILKH KNPKTGKYVE HHLKFPPSVP YDKLSHVYTA ILKPDNEVKI LVDGEEKKKA NFLSADDFEP ALIPSKTIPD PDDKKPEDWD ERAKIPDPDA VKPDDWDEDA PMEIVDDEAT KPEGWLDDEP EEIDDPEAAK PEDWDDEEDG EWEAPKIDNP KCEEAPGCGE WKRPMKQNPA YKGKWHAPMI DNPNYKGIWK PQEIPNPEYF ELDKPDFDPI AAIGIEIWTM QDGILFDNIL IADDEKVATS ILEKTWKPKY DVEKEKEKAE EEAAAGADGL SEFQKKIFDV LYKIADVPFL APYKTKIIDV IEKGEKQPNI TIGILVSVVV VFVTVLFKIL FGGKKPVAPV KPAAEAKKPK ATVTDGAGSS GDKDEKEDEK EETAGPRRRT RRET 4.76895 -0.307674 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 2208 2208 2208 2208 2208 2038 1723 1465 937 539 302 136 54 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2219 2219 2219 2219 2219 2049 1732 1474 924 506 262 94 36 6 1 0 0 1 2 3 4 900 1169 132 19 0 0 1 2 3 4 5 6 7 995 1082 130 10 2 0 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2765 (charge 3) 2779.25 3 201.123 204.087 226.154 254.149 274.102 355.197 400.229 443.941 501.276 539.323 630.319 686.122 738.577 746.357 759.358 764.674 837.025 880.921 887.452 1010.96 1016.5 1073.99 1082.47 1131.51 1137.5 1147.02 1204.52 1254.55 1260.57 1518.71 1632.71 1834.85 2497.2 2566.23 10 11 12 63 15 11 10 10 22 12 51 11 14 14 66 22 16 52 37 22 53 41 64 16 14 100 50 58 19 18 16 13 15 17 GRMZM2G019325_P01 P25460 40S ribosomal protein S11 seq=translation; coord=10:142067983..142070677:1; parent_transcript=GRMZM2G019325_T01; parent_gene=GRMZM2G019325 MAEQTEKAFL KQPKVFLSSK KSGKGKKPGK GGNRFWKSIG LGFKTPREAI EGTYIDKKCP FTGTVSIRGR IIAGTCHSAK MNRTIIVRRN YLHFVKKYQR YEKRHSNIPA HISPCFRVKE GDHVIIGQCR PLSKTVRFNV VKVIPAGSAA AGKKAFTAA GRMZM2G044800_P01 P25460 40S ribosomal protein S11 seq=translation; coord=2:10477304..10479869:-1; parent_transcript=GRMZM2G044800_T01; parent_gene=GRMZM2G044800 MAEQTEKAFL KQPKVFLSSK KSGKGKKPGK GGNRFWKSIG LGFKTPREAI EGTYIDKKCP FTGTVSIRGR IIAGTCHSAK MNRTIIVRRN YLHFVKKYQR YEKRHSNIPA HISPCFRVKE GDHVIIGQCR PLSKTVRFNV VKVIPAGSAA AGKKAFTAA 6.18098 -0.287487 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 2548 2548 2548 2504 2264 2181 1871 1601 1096 700 407 247 127 60 43 14 6 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2556 2556 2556 2506 2269 2158 1813 1307 669 299 105 95 2 1 1 0 0 1 2 3 4 5 6 7 936 1154 418 57 9 1 1 0 0 1 2 3 4 5 6 7 500 1345 530 161 29 8 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2769 (charge 2) 941.542 2 152.057 155.081 157.097 157.133 158.092 159.076 167.081 169.082 169.097 170.1 171.113 173.092 173.129 175.119 176.122 183.149 185.092 185.115 185.129 185.165 186.088 186.122 186.168 187.108 194.128 195.113 197.129 198.087 199.108 201.123 204.134 213.159 214.119 216.098 226.119 230.114 235.119 238.119 240.135 242.114 244.166 246.157 249.1 258.147 259.142 269.125 272.172 275.171 283.14 285.157 287.135 293.162 295.139 297.157 309.203 312.167 313.149 330.178 340.161 346.208 356.192 358.17 365.198 372.224 378.7 384.187 391.226 411.197 417.245 427.231 429.208 437.211 452.251 455.223 457.254 461.253 467.754 470.263 489.275 498.265 504.28 505.278 508.252 520.791 526.262 544.294 553.309 561.299 563.306 578.307 601.305 613.33 632.336 634.343 648.845 659.339 711.382 729.388 731.391 764.419 9 6 3 19 3 6 3 2 48 4 5 7 5 24 1 3 3 53 9 100 4 13 12 6 13 2 1 7 7 3 31 16 3 7 19 2 1 3 5 5 5 2 2 2 2 5 2 30 5 4 12 4 10 3 3 3 12 4 9 17 6 11 57 7 3 12 4 6 8 8 2 7 1 14 5 3 6 5 4 6 8 2 4 3 6 5 2 55 5 3 3 5 58 4 3 4 2 27 2 4 GRMZM5G819807_P01 NP_001140352 hypothetical protein LOC100272400 seq=translation; coord=3:38240385..38253883:-1; parent_transcript=GRMZM5G819807_T01; parent_gene=GRMZM5G819807 MEAAAAAFLS PPRVALDVRT LFSPPRCLPV SPSSQLRLAA RPRALAGAKP RFLSPHREPA VDGGRGARDV VAMVVPFLRG AAWEQPPPDL ASFLYKNRIV YLGMCLVPSV TELMLAEFLY LQYDDAEKPI YMYINSTGTT KNGEKLGYET EALAVYDAMR YVKVPIFTLC VGNAWGEAAL LLAAGAKGNR AALPSSTIMI KQPIGRFQGQ ATDVDIARKE IRNVKIEMVK LLARHIGKPM EEIARDIRRP KYFSPSEAVD YGIIDKVIYN EKIQEDGGVV SELKRSNLI GRMZM5G819807_P02 NP_001140352 hypothetical protein LOC100272400 seq=translation; coord=3:38240385..38255415:-1; parent_transcript=GRMZM5G819807_T02; parent_gene=GRMZM5G819807 MCLVPSVTEL MLAEFLYLQY DDAEKPIYMY INSTGTTKNG EKLGYETEAL AVYDAMRYVK VPIFTLCVGN AWGEAALLLA AGAKGNRAAL PSSTIMIKQP IGRFQGQATD VDIARKEIRN VKIEMVKLLA RHIGKPMEEI ARDIRRPKYF SPSEAVDYGI IDKVIYNEKI QEDGGVVSEL KRSNLI 5.9626 -0.290859 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 7168 7168 7168 7168 7057 6400 5867 4770 3621 2542 1698 952 571 283 150 70 26 7 3 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7172 7172 7172 7172 7061 6402 5757 4486 3071 1682 812 265 44 19 1 0 0 1 2 3 4 5 6 2424 2974 1351 329 81 13 0 0 1 2 3 4 5 6 7 1345 3000 1798 771 231 20 4 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2770 (charge 3) 1296.67 3 153.102 154.086 155.081 157.097 158.092 159.076 161.092 166.061 167.118 169.097 169.133 171.076 171.113 173.092 175.072 175.089 175.119 178.134 181.06 181.097 183.076 185.091 186.123 187.107 189.087 194.129 195.113 197.128 199.107 201.105 208.953 210.949 214.119 218.149 223.155 226.155 229.099 235.12 240.134 242.113 244.165 246.156 248.034 251.15 255.145 258.157 266.044 272.172 283.163 290.159 291.677 299.18 303.653 311.173 322.154 327.196 329.194 331.857 345.977 347.706 351.665 359.239 366.214 370.712 383.662 393.859 399.21 404.222 412.229 417.263 421.235 426.234 431.21 452.259 464.239 470.271 474.231 488.284 499.3 500.308 521.758 538.232 541.28 565.318 567.326 580.349 582.346 597.352 605.269 617.325 634.288 664.371 669.266 694.402 700.363 702.323 764.357 770.383 797.413 861.409 37 6 12 6 24 9 9 9 12 25 15 20 36 8 9 9 100 23 5 18 8 7 50 8 8 20 12 12 15 32 14 18 5 11 87 39 10 17 13 4 22 12 12 35 14 29 7 27 13 7 38 26 11 10 20 21 5 8 8 13 13 14 8 24 20 11 23 9 8 13 50 16 19 18 10 39 11 24 11 13 9 20 5 14 20 9 13 13 23 28 11 8 15 9 28 13 8 8 52 13 GRMZM2G036921_P01 NP_001148437 LOC100282052 seq=translation; coord=9:98777728..98779013:-1; parent_transcript=GRMZM2G036921_T01; parent_gene=GRMZM2G036921 6.36951 -0.296256 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 8485 8485 8485 8315 8232 7961 7558 6952 6333 4891 3830 2299 1115 636 331 159 76 33 10 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8477 8477 8477 8307 8224 7948 7531 6863 6108 4338 2829 981 144 12 1 0 0 1 2 3 4 5 6 7 2314 3803 1627 542 157 47 3 1 0 1 2 3 4 5 6 7 1387 3735 2337 783 215 19 16 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2771 (charge 3) 1243.66 3 154.086 155.082 156.076 157.061 157.109 157.133 158.092 159.076 159.091 166.061 167.081 169.097 169.133 171.113 172.117 173.092 173.128 175.071 175.119 176.121 179.127 181.095 181.109 183.076 183.149 184.108 185.092 186.124 197.128 200.139 201.123 204.134 210.087 212.103 214.118 218.15 221.103 226.119 228.098 230.113 232.141 240.134 242.15 244.129 246.109 249.098 254.114 256.145 257.652 260.197 264.661 267.108 269.123 271.139 281.122 283.176 286.152 287.135 289.187 299.138 303.177 309.203 311.171 315.128 327.131 329.182 337.187 344.976 350.146 354.214 357.249 360.224 362.164 368.157 370.174 374.214 382.209 386.161 398.204 400.219 416.26 431.263 439.193 444.194 451.232 457.201 485.248 492.717 497.271 503.257 514.298 528.314 538.264 585.337 599.349 656.372 666.32 670.386 727.41 757.414 7 16 7 7 4 7 31 32 13 7 13 47 14 60 4 74 27 4 100 4 6 3 6 10 30 4 7 8 13 9 10 3 13 17 18 24 4 17 29 9 3 82 12 35 8 7 3 9 20 9 40 13 8 6 4 23 14 4 24 82 12 22 63 3 7 4 4 10 8 16 11 27 7 9 7 45 37 8 7 10 11 24 8 4 3 7 14 3 11 64 48 69 4 19 11 61 32 4 7 9 GRMZM5G858454_P02 NP_001147431 aconitase2 seq=translation; coord=10:96330046..96338713:-1; parent_transcript=GRMZM5G858454_T02; parent_gene=GRMZM5G858454 MANPTATKHA FKRILTSLLK PGGGEYGKFF SLPALNDPRI DKLPYSIRVL LESAIRHCDN FQVTESDVEK IIDWENTSPK LAEIPFKPAR CILMDNTGVP AVVDLAAMRD MMPKLGCDPY KINPLIPVDA VIDHAVRVDV AGTYDALDRN EELEFQRNKE RFAFLKWASN AFHNMQVFPP GSGTVHQVNL EYLARVVFNE DGILYFDSVV GTDSHTTMIN SLGVAGWGVG GIEAVVAMLG QPMGMVLPGV VGFKLSGKLR DGVTTTDIVL TMTQMLRKHG AIGKFVEFYG VGVGELSLPA RATIANMSPE YGATMGFFPV DQVALDYLKL TGRSDETVSM IEAYLRANKM FVDKHEPETE RVFSSHLELD LSEVEPCVSG PKRPHDRVPL KEMKSDWHAC LDNEVGFKGY AVPKEQQGKV VKFDFHGRPA EIKHGSVVLA AICSSTNTSN PSVMIGAGLV AKKACELGLE VKPWVKTSLT PGSVVATEYL KHSGLQDYLN QQGFHVAAHG CATCVGNSGD LDGSVSAAIT ENDMVAAAVL SANRNFEGRV NPLTRANYLA SPPLVVAYAL AGTVDIDFEK EPIGVGKGGK EVFLRDIWPS NQEIDEVVES SVQTHLFKKV YDSIMERNPR WNQLPVPKEA LYPWEDRSTY IRKPTYLEGM SMTPPAAPPT VTEAYCLLNL GDSITTDHIS YSGKIPEGTP AAKYLLEYGV EPKNFSSYGG RRGNNEVVMR GAFANMRIVN KLLDGKAGPW TIHVPTGEKL YVYDAAMKYK SEGHDMVIIA GSEYGSGSSR DSAAKGPMLL GVKSVIAKSF ERIHRSNLVG MGIIPLCFKA GEDADSLGLT GRERYTIHLP TSTAELSPGQ DVTVTTHDGR SFTCTLRLDT QLEVTYFNHG GILPYMVRNL AAQMK GRMZM2G467338_P01 C4J6M5 Putative uncharacterized protein seq=translation; coord=2:114883820..114891121:-1; parent_transcript=GRMZM2G467338_T01; parent_gene=GRMZM2G467338 MAANSTATKH AFKRILTSLI KPGGGEYGKF FSLPALNDPR IDKLPYSIRV LLESAIRHCD NFQVTESDVE KIIDWENTSP KLAEIPFKPA RCILMDNTGV PAVVDLAAMR DMMPKLGCDP YKINPLIPVD AVIDHAVRVD VAGTYDALDR NEELEFQRNK ERFAFLKWAS NAFHNMQVFP PGSGTVHQVN LEYLARVVFN EDGILYFDSV VGTDSHTTMI NSLGVAGWGV GGIEAVVAML GQPMGMVLPG VVGFKLSGKL QDGVTTTDIV LTMTQMLRKH GAIGKFVEFY GVGVGELSLP ARATIANMSP EYGATMGFFP VDQVALDYLK LTGRSDETVS MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPHDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFDFHGRP AEIKHGSVVL AAICSSTNTS NPSVMIGAGL VAKKACELGL EVKPWVKTSL TPGSVVATEY LKHSGLQDYL NQQGFHVAAH GCATCVGNSG DLDGSVSAAI TENDIVAAAV LSANRNFEGR VNPLTRANYL ASPPLVVAYA LAGTVDIGFE EEPIGVGKGG KEIFLRDIWP SNQEIDEVVE SSVQTHLFKK VYDSIMERNP RWNQLPVPKE ALYPWDDRST YIRKPTYLEG MSMTPPGPPT VTEAYCLLNL GDSITTDHIS YSGKIPEGTP AAKYLLEYGV EPKNFSSYGG RRGNNEVVMR GAFANMRIVN KLLNGEAGPW TIHVPTGEKL YVYDAAMKYK SEGHDMVIIA GSEYGSGSSR DSAAKGPMLL GVKSVIAKSF ERIHRSNLVG MGIIPLCFQA GEDADSLGLT GRERYTIHLP TSTAEISPGQ DVTVTTHDGR SFTCTLRLDT QLEVTYFNHG GILPYMVRNL AAQMK GRMZM2G467338_P02 C4J6M5 Putative uncharacterized protein seq=translation; coord=2:114883990..114890380:-1; parent_transcript=GRMZM2G467338_T02; parent_gene=GRMZM2G467338 MEQQLLCGGC HTHTPPPPSL PCPCLRRRPR TLSVSSRCHA IHPDQLLRAR LVPDVTTSAK LQPRDDALHR IRVGVGATKH AFKRILTSLI KPGGGEYGKF FSLPALNDPR IDKLPYSIRV LLESAIRHCD NFQVTESDVE KIIDWENTSP KLAEIPFKPA RCILMDNTGV PAVVDLAAMR DMMPKLGCDP YKINPLIPVD AVIDHAVRVD VAGTYDALDR NEELEFQRNK ERFAFLKWAS NAFHNMQVFP PGSGTVHQVN LEYLARVVFN EDGILYFDSV VGTDSHTTMI NSLGVAGWGV GGIEAVVAML GQPMGMVLPG VVGFKLSGKL QDGVTTTDIV LTMTQMLRKH GAIGKFVEFY GVGVGELSLP ARATIANMSP EYGATMGFFP VDQVALDYLK LTGRSDETVS MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPHDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFDFHGRP AEIKHGSVVL AAICSSTNTS NPSVMIGAGL VAKKACELGL EVKPWVKTSL TPGSVVATEY LKHSGLQDYL NQQGFHVAAH GCATCVGNSG DLDGSVSAAI TENDIVAAAV LSANRNFEGR VNPLTRANYL ASPPLVVAYA LAGTVDIGFE EEPIGVGKGG KEIFLRDIWP SNQEIDEVVE SSVQTHLFKK VYDSIMERNP RWNQLPVPKE ALYPWDDRST YIRKPTYLEG MSMTPPGPPT VTEAYCLLNL GDSITTDHIS YSGKIPEGTP AAKYLLEYGV EPKNFSSYGG RRGNNEVVMR GAFANMRIVN KLLNGEAGPW TIHVPTGEKL YVYDAAMKYK SEGHDMVIIA GSEYGSGSSR DSAAKGPMLL GVKSVIAKSF ERIHRSNLVG MGIIPLCFQA GEDADSLGLT GRERYTIHLP TSTAEISPGQ DVTVTTHDGR SFTCTLRLDT QLEVTYFNHG GILPYMVRNL AAQMK GRMZM2G364988_P01 NP_001141579 hypothetical protein LOC100273695 seq=translation; coord=5:91434867..91439005:-1; parent_transcript=GRMZM2G364988_T01; parent_gene=GRMZM2G364988 MATLPSRPGT SSSFGPVPSA SSGVSAGHLD AVKPVGRVRV ISAPLLQMAK PYLVVASLPL QTPLSSWSVL PTTRLIRKHG AIGKFVEFYG VGVGELSLPA RATIANMSPE YGATMGFFLV SMIEAYLRAN KMFVDKHEPE TERVFSSYLE LDLSEVEPCV SGPKRPHDRV PLKEMKSDWH ACLDNEVGFK VKPWVKTSLT PGSVVATEYL KHRYRCCCGA VSYYLLNLGD SITTDHISYS GKIPEGTPAA KYLLEYGVEP KNFSSYGGRR GNNEVVMRGA FANMRIVNKL LNGEAGPWTI HVPTGEKLYV YDAAMVEKMV LLACGWRYTI TVCDSSNLYT YGWRKYVQLG HIDFEDDLVP HKLEALKDST ISQVIPFTNI P GRMZM2G029204_P01 seq=translation; coord=7:110162687..110164873:1; parent_transcript=GRMZM2G029204_T01; parent_gene=GRMZM2G029204 MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPRDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFDFHGRP AEIKHGSVVL AAICSSTNTS NPSVMIGAGL VAKKACELGL EVKPWVKTSL TPGSVVATEY LKHSGLQDYL NQQGFHVAAH GCATCVGNSG DLDGSISVAI TENDIVAATV LSANRNFEGR VNPHSG GRMZM2G364988_P02 NP_001141579 hypothetical protein LOC100273695 seq=translation; coord=5:91434878..91439446:-1; parent_transcript=GRMZM2G364988_T02; parent_gene=GRMZM2G364988 MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPHDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFNFHGRP AEIKHGSVVL AAICSSTNTS NPSFMIGAGL VEESMRIGP GRMZM2G364988_P03 NP_001141579 hypothetical protein LOC100273695 seq=translation; coord=5:91434878..91438625:-1; parent_transcript=GRMZM2G364988_T03; parent_gene=GRMZM2G364988 MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPHDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFNFHGRP AEIKHGSVVL AAICSSTNTS NPSFMIGAGL VEESMRIGP GRMZM2G036131_P01 NP_001141579 hypothetical protein LOC100273695 seq=translation; coord=3:64518828..64524123:-1; parent_transcript=GRMZM2G036131_T01; parent_gene=GRMZM2G036131 MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPHDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFNFHGRP AEIKHGSVVL AAICSSTNTS NPSFMIGAGL VEESMRIGP GRMZM2G036131_P03 NP_001141579 hypothetical protein LOC100273695 seq=translation; coord=3:64518825..64523306:-1; parent_transcript=GRMZM2G036131_T03; parent_gene=GRMZM2G036131 MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPHDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFNFHGRP AEIKHGSVVL AAICSSTNTS NPSFMIGAGL VEESMRIGP GRMZM2G036131_P04 NP_001141579 hypothetical protein LOC100273695 seq=translation; coord=3:64518828..64523306:-1; parent_transcript=GRMZM2G036131_T04; parent_gene=GRMZM2G036131 MIEAYLRANK MFVDKHEPET ERVFSSYLEL DLSEVEPCVS GPKRPHDRVP LKEMKSDWHA CLDNEVGFKG YAVPKEQQGK VVKFNFHGRP AEIKHGSVVL AAICSSTNTS NPSFMIGAGL VEESMRIGP 3.99948 -0.216188 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 7417 7417 7417 6698 6407 5583 4671 3620 2315 1542 1048 646 398 206 114 69 53 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7442 7442 7442 6723 6399 5515 4435 3078 1640 902 487 246 150 105 1 0 0 1 2 3 4 5 6 7 2528 3058 1418 347 79 11 2 0 0 1 2 3 4 5 6 7 1296 3159 1989 769 136 57 13 24 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2772 (charge 3) 1533.7 3 152.056 153.102 155.081 156.076 157.061 157.097 157.109 157.133 158.092 159.076 166.062 167.081 169.097 169.134 171.077 171.113 173.092 175.087 175.119 176.121 181.061 181.098 183.149 184.108 185.092 185.165 186.09 186.123 187.072 187.108 191.613 195.114 198.124 199.072 199.108 199.181 201.123 203.118 209.09 212.139 214.119 217.082 219.15 221.103 226.154 231.124 234.144 239.114 240.134 244.166 249.098 254.149 257.128 267.114 272.172 285.165 295.108 300.664 304.162 307.151 311.171 312.171 316.155 324.154 331.197 332.2 346.68 354.177 356.196 382.211 388.186 392.205 399.245 405.209 412.184 417.178 420.209 431.196 446.222 449.207 453.254 462.247 482.288 510.281 528.31 534.25 544.237 609.304 614.272 620.301 631.304 633.315 637.312 673.275 692.34 720.341 742.34 747.367 760.343 897.406 11 4 10 7 8 7 4 4 13 9 3 7 21 4 4 11 9 4 56 3 20 9 3 9 12 8 3 3 4 5 3 7 8 12 25 9 4 24 6 12 11 37 3 3 48 34 8 10 17 61 10 3 7 29 10 12 3 13 5 3 12 4 13 3 24 4 12 5 3 3 3 3 10 22 3 8 4 4 3 8 3 4 11 17 3 13 3 10 4 4 100 4 4 3 3 5 10 13 24 13 GRMZM2G124307_P01 NP_001152548 LOC100286188 seq=translation; coord=1:212054704..212055806:-1; parent_transcript=GRMZM2G124307_T01; parent_gene=GRMZM2G124307 MAMQVVRNLD LERYAGRWYE IACFPSRFQP KTGTNTRATY TLNPDGTVKV VNETWADGRR GHIEGTAWRA DPASDEAKLK VRFYVPPFLP LIPVTGDYWV LHIDADYQYA LVGQPSRNYL WILCRQPHMD ESVYKELVER AKEEGYDVSK LRKTAHPDPP PESEQSPRDG GMWWVKSIFG K 6.28956 -0.279536 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 8638 8638 8638 8638 8372 8014 7378 6686 5455 4304 2777 1669 940 492 268 157 70 29 13 9 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8638 8638 8638 8638 8372 8003 7262 6491 5112 3374 1642 607 167 15 1 0 0 1 2 3 4 5 6 7 3051 3614 1464 394 101 18 4 0 0 1 2 3 4 5 6 7 1525 3459 2379 1007 213 42 16 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2773 (charge 3) 1644.76 3 155.082 156.077 157.097 158.092 159.076 169.133 171.076 171.113 172.071 175.119 184.072 185.092 187.071 189.087 193.097 195.112 197.128 199.108 199.18 203.121 213.088 216.135 217.082 226.154 227.102 232.139 235.063 239.094 241.081 244.165 253.093 255.146 258.108 261.619 272.171 299.062 303.177 310.148 328.162 332.136 340.126 359.204 364.712 369.736 386.215 388.117 403.206 413.711 415.228 432.253 436.718 440.773 450.213 452.248 457.226 466.278 467.282 475.735 487.261 492.75 504.22 507.737 522.232 524.215 532.284 547.931 553.241 559.762 568.773 574.33 580.773 595.256 601.262 611.879 616.301 619.282 636.799 645.304 678.331 685.331 689.357 692.331 699.453 703.337 705.337 709.84 723.385 727.377 743.861 766.376 770.495 775.369 794.363 814.369 826.415 832.382 851.434 898.55 914.445 929.428 22 7 10 21 8 7 10 10 7 63 6 33 8 6 7 7 7 34 48 15 11 6 10 77 34 7 25 22 7 21 23 23 22 9 29 7 21 41 6 7 6 17 9 7 9 9 8 32 8 6 9 6 7 7 10 99 35 19 36 7 24 8 66 9 7 6 6 7 45 71 6 6 6 6 7 87 8 21 9 8 100 8 10 66 7 45 7 8 7 6 43 10 10 20 34 22 29 8 7 53 GRMZM2G042118_P01 NP_001150149 LOC100283778 seq=translation; coord=8:162236975..162239554:-1; parent_transcript=GRMZM2G042118_T01; parent_gene=GRMZM2G042118 MAAFNKLGGL LRHSALVSGI TGGSSPAVFN AARLMSTKLF IGGLDWGVDD VKLREAFSSF GEVTEARVIT DRETGRSRGF GFVNYSDSDA AKEAISAMDG KEIDGRQVRV NMANERPAGN RGGGGYGGGG YGGGGYGGGG GYGGGGYGGG SQSYDA 4.00476 -0.216474 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 6454 6454 6373 5859 4578 3620 2292 1630 892 551 288 167 91 56 43 36 28 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6431 6431 6348 5825 4456 3272 1855 923 407 196 56 23 6 1 0 0 1 2 3 4 5 6 7 2553 2518 935 339 73 38 0 1 0 1 2 3 4 5 6 7 1173 3430 1435 365 37 10 5 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2776 (charge 3) 1328.65 3 153.066 155.081 157.108 158.092 167.055 169.061 169.097 169.134 170.092 171.113 175.09 175.119 176.122 186.087 186.124 197.092 201.069 203.085 214.118 216.097 218.095 223.063 225.043 229.064 233.165 244.092 246.09 252.134 255.108 257.64 269.124 272.136 283.075 290.145 300.101 317.127 324.988 328.133 329.156 335.69 341.017 342.997 346.184 359.028 366.141 383.167 389.191 391.206 400.21 417.221 426.243 429.087 440.21 448.721 450.25 457.233 471.228 478.241 480.217 484.243 492.752 497.246 498.245 514.273 516.277 521.282 549.758 558.272 563.26 598.272 602.271 606.78 615.293 653.35 699.287 716.309 782.389 792.374 828.394 879.402 896.434 907.41 924.453 941.424 959.435 967.469 1056.46 3 1 2 4 29 1 15 2 9 1 6 20 1 3 5 9 1 3 15 1 7 3 8 5 1 3 5 6 1 3 2 2 2 1 2 3 1 3 1 10 5 7 3 100 1 2 1 1 3 2 1 2 2 3 2 9 2 2 2 2 19 5 2 29 1 1 3 18 2 1 2 12 21 4 1 1 3 1 1 1 4 1 1 1 1 4 1 GRMZM2G416388_P01 NP_001150216 CBS domain protein seq=translation; coord=1:273865741..273870770:-1; parent_transcript=GRMZM2G416388_T01; parent_gene=GRMZM2G416388 MQRAVQAVRS HGNVLKYAVL QHISAPKPAM LPAAFSRFMS VSSARLEDRG FETATVADVL KSKGKSADGS WLWCTTEDSV YDAVKSMTQH NVGALVVVKP GQNKSIAGIV TERDYLRKII VQGRSSKSTK VGDIMTEENK LITVNPDTKV LQAMQLMTEN RVRHIPVIDG TGMLGMVSIG DVVRAVVAEH REELNRLNDY IQGGY GRMZM2G416388_P02 NP_001150216 CBS domain protein seq=translation; coord=1:273865741..273870770:-1; parent_transcript=GRMZM2G416388_T02; parent_gene=GRMZM2G416388 MQRAVQAVRS HGNVLKYAVL QHISAPKPAM LPAAFSRFMS VSSARLEDRG FETATVADVL KSKGKSADGS WLWCTTEDSV YDAVKSMTQH NVGALVVVKP GQNKSIAGIV TERDYLRKII VQGRSSKSTK VGDIMTEENK LITVNPDTKV LQAMQLMTEN RVRHIPVIDG TGMLGMVSIG DVVRAVVAEH REELNRLNDY IQGGY GRMZM2G416388_P03 NP_001150216 CBS domain protein seq=translation; coord=1:273865741..273868546:-1; parent_transcript=GRMZM2G416388_T03; parent_gene=GRMZM2G416388 MQRAVQAVRS HGNVLKYAVL QHISAPKPAM LPAAFSRFMS VSSARLEDRG FETATVADVL KSKGKSADGS WLWCTTEDSV YDAVKSMTQH NVGALVVVKP GQNKSIAGIV TERDYLRKII VQGRSSKSTK VGDIMTEENK LITVNPDTKV LQAMQLMTEN RVRHIPVIDG TGMLGMVSIG DVVRAVVAEH REELNRLNDY IQGGY GRMZM2G416388_P06 NP_001150216 CBS domain protein seq=translation; coord=1:273866192..273868141:-1; parent_transcript=GRMZM2G416388_T06; parent_gene=GRMZM2G416388 MQRAVQAVRS HGNVLKYAVL QHISAPKPAM LPAAFSRFMS VSSARLEDRG FETATVADVL KSKGKSADGS WLWCTTEDSV YDAVKSVCPH FPMIVLTPSE SMVMHQMIRL PFGTLNFLQM TQHNVGALVV VKPGQNKSIA GIVTERGDEQ ISVLLASNFW PVAVHHSTFG IKESQLFRAL YSRYNRNCIK LKYTYYLRKI IVQGRSSKST KVGDIMTEEN KLITVNPDTK VLQAMQLMTE NRVRHIPVID GTGMLGMVSI GDVVRAVVAE HREELNRLND YIQGGY 6.49862 -0.302262 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 8007 8007 8007 7907 7479 7125 6403 5764 5082 3743 2833 1487 861 465 276 138 40 18 8 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8016 8016 8016 7916 7488 7093 6290 5484 4638 3061 1929 538 157 99 1 0 0 1 2 3 4 5 6 2028 3601 1763 495 97 33 0 0 1 2 3 4 5 6 7 2023 3307 1775 634 189 66 15 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2777 (charge 3) 1422.74 3 155.082 157.11 157.133 158.092 158.137 159.076 169.097 171.077 171.113 171.149 172.115 173.056 173.092 175.119 176.123 181.061 185.128 187.071 189.087 194.624 197.128 198.088 199.071 199.108 199.18 209.09 215.139 217.081 221.104 226.119 227.067 232.14 235.118 244.129 245.076 249.099 252.14 256.091 270.181 272.171 277.142 284.087 285.196 289.162 299.062 302.661 309.119 327.13 360.173 371.214 384.236 388.241 402.247 408.722 414.231 424.699 430.206 448.217 460.223 463.763 468.736 477.249 480.208 489.217 500.259 512.27 520.787 524.255 531.294 533.252 541.771 546.73 560.268 564.236 568.775 577.289 578.292 587.292 597.26 602.266 604.316 611.279 611.783 618.315 619.318 626.823 642.318 660.333 661.333 668.284 676.362 702.315 715.409 732.318 790.334 799.405 851.404 936.486 979.455 1078.53 8 5 100 13 9 4 6 5 64 11 6 12 7 98 8 15 19 4 5 17 4 4 17 7 14 7 9 14 5 23 20 5 5 10 10 8 7 5 4 12 5 6 8 4 4 35 5 5 7 10 5 6 12 4 6 6 4 6 8 8 17 56 7 23 4 5 5 5 9 8 15 19 5 5 13 63 16 8 8 5 7 15 6 15 5 85 5 17 6 8 7 6 6 6 4 9 6 7 4 5 GRMZM2G318635_P01 seq=translation; coord=5:213291570..213301733:-1; parent_transcript=GRMZM2G318635_T01; parent_gene=GRMZM2G318635 3.85748 -0.285739 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 797 797 797 757 688 517 376 194 122 72 23 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 802 802 802 762 693 517 373 186 114 66 10 7 1 0 0 1 2 3 4 423 351 25 6 0 0 1 2 3 4 5 6 7 262 505 33 1 0 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2781 (charge 2) 1398.56 2 155.081 157.097 166.985 171.076 173.128 175.119 181.06 187.072 189.087 194.129 197.128 198.087 198.124 199.108 201.069 209.055 212.103 216.134 219.079 224.116 226.082 228.135 234.145 240.098 244.167 252.109 264.098 281.124 286.14 314.133 319.178 332.106 340.096 345.177 357.123 363.188 409.116 455.124 460.24 555.211 579.288 587.172 597.297 637.316 711.334 727.383 812.387 894.309 923.961 927.411 1042.43 7 16 3 6 5 8 4 4 6 6 5 4 4 14 4 7 5 5 5 3 26 4 58 5 4 7 5 21 7 8 6 4 6 16 20 4 7 6 100 5 14 4 8 7 5 14 15 4 5 7 7 GRMZM2G035503_P01 NP_001130324 hypothetical protein LOC100191418 seq=translation; coord=5:208090222..208094428:-1; parent_transcript=GRMZM2G035503_T01; parent_gene=GRMZM2G035503 MEGRARLSLV HAAAALVVLL QLHGGAVVVA SEPPYTCGAG APPNIPFCDA GLPIDRRVDD LVSRMTVAEK ISQLGDQSPA IPRLGVPAYK WWSEALHGIS NQGRGIHLDG PLRAATSFPQ VILTAASFNP HLWYRIGQVI GVEARAVYNN GQAEGLTFWA PNINVFRDPR WGRGQETPGE DPTMTGKYAA VFVRGVQGYG LAGPVNSTGL EASACCKHFT AYDLENWKGV TRYVFDAKVT AQDLADTYNP PFKSCVEDGH ASGIMCSYNR VNGVPTCADY NLLSTTARQD WGFYGYITSD CDAVAIIHDA QGYAKTAEDA VADVLKAGMD VNCGSYVQDH GASALQQGKI TEQDINRALH NLFAVRMRLG LFNGDPRRNL YGDIGPDQVC TQEHQDLALE AAQDGIVLLK NDGGAGALPL SKPNVASLAV IGFNANDAIR LRGNYFGPPC VTVTPLQVLQ GYVKDTSFVA GCNSAACNVT TIPEAVQAAS SADSVVLFMG LDQDQEREEV DRLDLTLPGQ QQTLIESVAN AAKKPVILVL LCGGPVDVSF AKTNPKIGAI LWAGYPGEAG GIAIAQVLFG EHNPGGRLPV TWYPQDFTRV PMTDMRMRAD PATGYPGRTY RFYRGPTVFN FGYGLSYSKY SHRFATKPPP TSNVAGLKAV EATAGGMASY DVEAIGSETC DRLKFPAVVR VQNHGPMDGK HSVLVFMRWP NATDGSGRPA SQLIGFQSLH LRATQTAHVE FEVSPCKHFS RATEDGRKVI DQGSHFVMVG EDEFEMSFMA 5.39461 -0.326946 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1822 1822 1822 1822 1771 1153 877 615 316 161 71 48 10 5 2 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1828 1828 1828 1828 1777 1159 881 612 299 143 70 48 9 8 1 0 0 1 2 3 4 1214 583 30 1 0 0 1 2 3 4 5 465 1315 42 0 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2782 (charge 2) 1463.63 2 152.034 152.057 155.081 158.092 159.076 169.061 175.118 180.448 181.097 185.091 186.087 199.108 204.133 213.087 226.154 231.098 241.081 244.166 284.124 305.18 315.13 346.141 383.192 399.152 470.26 586.316 650.313 655.997 678.37 704.454 984.457 1048.47 1213.51 1458.17 7 5 6 9 6 55 10 5 6 18 100 10 8 10 62 6 7 18 8 9 26 6 7 35 6 44 47 6 6 5 42 31 5 5 GRMZM2G019177_P01 NP_001152706 LOC100286347 seq=translation; coord=4:169006869..169011322:1; parent_transcript=GRMZM2G019177_T01; parent_gene=GRMZM2G019177 MQEVFKRVDG KAAVAAQPSS EEERTKALQA LLSCPTSSIH TEKPPKDILK VQNMFPLPID DKLLPGVYLC GYNSEDSYGA TSYLVIHPQG NILIDSPRYT PKLANNIEKL GGARYMFLTH IDDVADHRKW AEQLKCERII HSGDVEEATA DVEWKLEGNG PWNLGTDFEL ITYARPYPRL SVLVLQTAKG AVHWRPCCKV RRIRRSEPLS DVQQAVSEPS AGKHQEATGA RVRVAFTWTW LSNQVQRCAC QECSHGVPPS GRMZM2G019177_P02 NP_001152706 LOC100286347 seq=translation; coord=4:169006869..169011322:1; parent_transcript=GRMZM2G019177_T02; parent_gene=GRMZM2G019177 MALMSLGAAG YTTATAPPRP RRCTLPFRAA ASPAALDRRR RPHNVAGDFF VDHRCIDCQT CRWMAPEVFK RVDGKAAVAA QPSSEEERTK ALQALLSCPT SSIHTEKPPK DILKVQNMFP LPIDDKLLPG VYLCGYNSED SYGATSYLVI HPQGNILIDS PRYTPKLANN IEKLGGARYM FLTHIDDVAD HRKWAEQLKC ERIIHSGDVE EATADVEWKL EGNGPWNLGT DFELITYARP YPRLSVLVLQ TAKGAVHWRP CCKVRRIRRS EPLSDVQQAV SEPSAGKHQE ATGARVRVAF TWTWLSNQVQ RCACQECSHG VPPS GRMZM2G019177_P03 NP_001152706 LOC100286347 seq=translation; coord=4:169006869..169011322:1; parent_transcript=GRMZM2G019177_T03; parent_gene=GRMZM2G019177 MALMSLGAAG YTTATAPPRP RRCTLPFRAA ASPAALDRRR RPHNVAGDFF VDHRCIDCQT CRWMAPEVFK RVDGKAAVAA QPSSEEERTK ALQALLSCPT SSIHTEKPPK DILKVQNMFP LPIDDKLLPG VYLCGYNSED SYGATSYLVI HPQGNILIDS PRYTPKLANN IEKLGGARYM FLTHIDDVAD HRKWAEQLKC ERIIHSGDVE EATADVEWKL EGNGPWNLGT DFELINTPGH TPGSVCLYFK PLKVLFTGDH VAKSEESDDL NLFLMYSKQS VSLQLESIRK LLELEFEWLL PGHGYRIKYK DVRAKNVAME SLLANYTS 4.75817 -0.288374 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4790 4790 4697 4430 4233 3957 3711 2169 1658 848 396 203 129 39 31 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4799 4799 4706 4439 4222 3878 3606 1956 1335 458 129 63 13 9 1 0 0 1 2 3 4 5 2676 1776 303 39 6 0 0 1 2 3 4 5 6 7 907 3076 692 99 20 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2786 (charge 2) 1344.64 2 152.056 155.081 156.076 157.097 157.108 158.092 159.076 166.062 167.117 169.097 169.133 171.077 171.113 175.119 185.165 195.113 197.129 200.103 214.118 217.082 221.103 227.102 230.113 242.15 249.099 253.089 257.16 267.109 271.14 285.156 297.156 303.176 313.187 325.15 339.204 342.177 353.181 356.228 361.027 363.024 384.223 400.703 413.213 417.183 424.218 428.26 430.24 433.205 441.718 468.004 472.713 490.245 494.262 498.228 501.639 530.204 538.775 613.328 641.283 656.334 659.257 680.865 731.847 736.31 744.357 773.34 816.349 833.362 835.368 882.432 944.397 961.416 979.481 1032.47 1076.53 1103.49 4 3 5 2 2 2 2 3 2 9 3 3 20 30 10 5 20 10 9 2 3 9 4 49 14 2 2 11 12 18 3 14 20 3 3 4 3 10 3 4 9 5 5 4 3 2 13 8 4 2 3 23 2 3 3 3 4 3 4 12 2 3 5 8 2 3 8 100 10 9 13 12 9 20 4 15 GRMZM2G085019_P01 P16243 NADP-dependent malic enzyme, chloroplastic Precursor (NADP-ME)(EC 1.1.1.40) seq=translation; coord=3:7275169..7280519:1; parent_transcript=GRMZM2G085019_T01; parent_gene=GRMZM2G085019 GRMZM2G085019_P02 P16243 NADP-dependent malic enzyme, chloroplastic Precursor (NADP-ME)(EC 1.1.1.40) seq=translation; coord=3:7275169..7280519:1; parent_transcript=GRMZM2G085019_T02; parent_gene=GRMZM2G085019 4.88291 -0.250406 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 7165 7165 7165 6672 6493 4736 4094 2744 1964 1151 774 487 303 98 50 23 17 13 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7169 7169 7169 6676 6485 4689 3819 2255 1161 565 240 50 31 4 1 0 0 1 2 3 4 5 6 7 4218 2373 489 74 14 0 4 0 0 1 2 3 4 5 6 7 1110 4475 1200 333 35 15 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2787 (charge 2) 1371.72 2 152.056 155.081 156.076 159.091 165.138 167.055 167.081 175.119 181.096 181.133 183.149 187.071 193.098 198.123 199.107 209.128 211.143 223.107 226.155 227.102 229.156 235.118 239.094 241.093 244.165 249.097 252.134 256.145 260.197 265.166 267.107 270.144 284.138 299.061 301.06 319.138 336.165 339.238 346.15 356.07 357.249 359.028 361.025 383.191 386.159 394.223 396.15 412.236 417.222 419.993 429.087 431.085 443.717 452.252 468.279 475.201 483.272 486.293 492.719 508.239 533.209 548.26 556.766 565.288 573.788 604.243 622.318 623.341 637.725 663.366 677.867 731.354 742.383 749.363 752.392 758.34 762.331 790.326 806.393 859.4 869.39 872.421 874.519 887.379 888.379 890.452 903.457 921.501 960.481 962.491 970.423 987.468 998.442 999.468 1015.47 1037.47 1146.56 1153.63 1225.59 1243.61 4 4 5 10 8 18 3 13 5 4 39 4 3 4 22 13 20 10 100 26 4 8 18 9 25 12 4 14 18 10 25 8 22 8 4 3 8 5 4 16 74 52 31 4 9 8 9 4 4 3 10 5 4 4 13 5 5 4 13 8 11 4 12 3 9 17 18 10 4 3 3 3 8 10 5 12 3 13 3 3 4 3 4 23 12 9 3 4 14 3 4 4 4 3 13 3 12 3 3 9 GRMZM5G844562_P01 O24562 Probable cinnamyl alcohol dehydrogenase (CAD)(EC 1.1.1.195)(Brown-midrib 1 protein) seq=translation; coord=5:98993016..98997371:-1; parent_transcript=GRMZM5G844562_T01; parent_gene=GRMZM5G844562 MGSLASERKV VGWAARDATG HLSPYSYTLR NTGPEDVVVK VLYCGICHTD IHQAKNHLGA SKYPMVPGHE VVGEVVEVGP EVAKYGVGDV VGVGVIVGCC RECSPCKANV EQYCNKKIWS YNDVYTDGRP TQGGFASTMV VDQKFVVKIP AGLAPEQAAP LLCAGVTVYS PLKHFGLTTP GLRGGILGLG GVGHMGVKVA KAMGHHVTVI SSSSKKRAEA MDHLGADAYL VSSDAAAMAA AADSLDYIID TVPVHHPLEP YLALLKLDGK LVLLGVIGEP LSFVSPMVML GRKAITGSFI GSIDETAEVL QFCVDKGLTS QIEVVKMGYV NEALERLERN DVRYRFVVDV AGSNVEAEAA AADAASN GRMZM5G844562_P03 O24562 Probable cinnamyl alcohol dehydrogenase (CAD)(EC 1.1.1.195)(Brown-midrib 1 protein) seq=translation; coord=5:98993016..98996099:-1; parent_transcript=GRMZM5G844562_T03; parent_gene=GRMZM5G844562 MVLVFGKKKK LTLVSFSYGM CCGGDNRNTG PEDVVVKVLY CGICHTDIHQ AKNHLGASKY PMVPGHEVVG EVVEVGPEVA KYGVGDVVGV GVIVGCCREC SPCKANVEQY CNKKIWSYND VYTDGRPTQG GFASTMVVDQ KFVVKIPAGL APEQAAPLLC AGVTVYSPLK HFGLTTPGLR GGILGLGGVG HMGVKVAKAM GHHVTVISSS SKKRAEAMDH LGADAYLVSS DAAAMAAAAD SLDYIIDTVP VHHPLEPYLA LLKLDGKLVL LGVIGEPLSF VSPMVMLGRK AITGSFIGSI DETAEVLQFC VDKGLTSQIE VVKMGYVNEA LERLERNDVR YRFVVDVAGS NVEAEAAAAD AASN GRMZM5G844562_P02 O24562 Probable cinnamyl alcohol dehydrogenase (CAD)(EC 1.1.1.195)(Brown-midrib 1 protein) seq=translation; coord=5:98993016..98997371:-1; parent_transcript=GRMZM5G844562_T02; parent_gene=GRMZM5G844562 MVVDQKFVVK IPAGLAPEQA APLLCAGVTV YSPLKHFGLT TPGLRGGILG LGGVGHMGVK VAKAMGHHVT VISSSSKKRA EAMDHLGADA YLVSSDAAAM AAAADSLDYI IDTVPVHHPL EPYLALLKLD GKLVLLGVIG EPLSFVSPMV MLGRKAITGS FIGSIDETAE VLQFCVDKGL TSQIEVVKMG YVNEALERLE RNDVRYRFVV DVAGSNVEAE AAAADAASN 7.12842 -0.347728 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 7958 7958 7958 7958 7705 7581 6964 6373 5087 3746 2254 1196 558 282 97 46 21 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7971 7971 7971 7971 7718 7588 6946 6252 4701 2992 1370 409 107 28 2 1 0 0 1 2 3 4 5 6 7 2853 3184 1430 404 98 2 1 0 0 1 2 3 4 5 6 7 1091 3643 2331 712 150 32 0 13 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2788 (charge 3) 1440.73 3 152.057 154.087 155.081 155.093 156.077 157.061 157.098 157.134 158.093 159.077 166.061 167.093 167.119 169.098 171.077 171.113 173.093 173.128 175.074 175.09 175.119 178.062 181.096 181.134 183.112 183.15 185.056 185.092 185.165 186.124 187.108 189.087 194.128 195.089 195.113 196.145 197.128 198.124 199.107 201.124 204.135 209.141 212.103 214.155 216.135 224.139 226.155 230.077 232.141 234.144 237.133 240.135 244.164 253.093 258.145 266.634 275.125 286.145 314.135 321.178 324.128 332.148 356.19 359.174 369.177 377.215 383.195 390.202 397.167 408.206 431.216 438.241 452.253 470.262 477.23 492.243 495.241 506.231 514.25 534.226 556.277 559.269 570.253 572.279 589.293 602.311 608.321 634.317 664.332 678.353 695.397 707.392 716.333 718.334 734.353 790.422 808.439 814.263 821.408 907.509 27 6 16 8 7 8 5 6 17 7 6 13 5 21 12 12 8 25 6 58 71 5 6 6 8 7 15 13 24 18 8 6 24 24 14 17 36 7 64 30 22 16 8 15 15 7 100 6 6 28 23 22 47 23 7 5 6 6 40 22 14 20 6 14 19 23 16 7 8 29 8 7 26 15 21 5 60 14 15 19 6 14 6 6 51 7 36 18 5 8 6 6 17 16 6 5 25 6 7 19 GRMZM5G821637_P04 NP_001140813 hypothetical protein LOC100272888 seq=translation; coord=1:298687651..298689984:1; parent_transcript=GRMZM5G821637_T04; parent_gene=GRMZM5G821637 MAEQIAKDPA FTEMAEQLQK TVVSPRQQQQ QQARQQQQQL DPQKYVATMQ QLMQNPQFVA MAERLGSALM QDPAMSAMLG GLTNPAHKEQ LEARVARMKE DPTLKPILDE IESGGPAAMM KYWNDPEALQ KFGRAMGVGV GPSGEAGGAE HAEAEDDAGE EGEYEDESIV HHTASVGDVE GLKKALEDGA DKDEEDSEGR RGLHFACGYG ELQCAQALLE AGAAVDAVDK NKNTALHYAA GYGRKDCVAL LLESGAAVTL QNLDGKTPID VAKLNNQDDV LKLLEKHAFV GRMZM5G821637_P05 NP_001140813 hypothetical protein LOC100272888 seq=translation; coord=1:298687651..298689984:1; parent_transcript=GRMZM5G821637_T05; parent_gene=GRMZM5G821637 MAAQEEKTAV VVAAAADVAT EEPTPAAEQQ PQPAGAARRA GPSAPGGAPP NPFDFSTMMN LLNDPSIKEM AEQIAKDPAF TEMAEQLQKT VVSPRQQQQQ QARQQQQQLD PQKYVATMQQ LMQNPQFVAM AERLGSALMQ DPAMSAMLGG LTNPAHKEQL EARVARMKED PTLKPILDEI ESGGPAAMMK YWNDPEALQK FGRAMGVGVG PSGEAGGAEH AEAEDDAGEE GEYEDESIVH HTASVGDVEG LKKALEDGAD KDEEDSEGRR GLHFACGYGE LQCAQALLEA GAAVDAVDKN KNTALHYAAG YGRKDCVALL LESGAAVTLQ NLDGKTPIDV AKLNNQDDVL KLLEKHAFV 5.29454 -0.286191 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 4093 4093 4049 3789 3481 3167 2759 2042 1535 840 461 237 125 76 43 7 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4098 4098 4054 3788 3463 3095 2636 1864 1130 485 140 6 1 0 0 1 2 3 4 5 6 7 1359 1633 756 262 85 0 4 3 0 1 2 3 4 5 6 7 904 1977 895 225 74 21 2 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2792 (charge 3) 1891.83 3 152.057 155.081 157.134 158.137 159.076 167.118 171.076 171.112 172.11 173.056 173.092 173.129 175.119 176.122 181.06 185.093 185.113 185.129 186.088 186.132 187.072 189.087 194.624 199.071 199.108 201.088 204.133 213.087 215.139 217.081 226.119 232.14 240.133 243.133 244.092 254.154 256.092 285.195 286.201 302.662 313.025 327.128 341.144 355.125 360.174 371.216 380.07 388.241 424.697 430.202 440.193 445.868 448.216 466.275 474.179 480.212 487.213 489.217 511.229 527.229 546.729 558.239 563.905 569.281 581.261 587.29 602.258 604.316 610.78 617.241 619.295 668.292 685.315 692.283 702.314 703.811 713.277 719.347 723.314 732.322 733.324 781.33 789.835 798.396 803.311 818.451 830.36 836.346 845.353 854.856 860.324 942.4 960.401 977.427 1015.42 1075.43 1077.45 6 2 100 10 1 1 2 3 1 2 1 3 39 3 2 1 2 30 2 3 2 1 5 6 2 1 2 1 8 3 10 2 1 5 7 1 2 5 1 29 1 2 2 3 6 6 1 8 3 1 1 3 3 3 2 2 6 29 2 6 11 2 12 3 2 6 11 15 46 6 3 15 2 2 8 7 7 2 5 51 15 10 25 2 2 2 3 5 19 22 3 2 3 3 2 7 2 GRMZM2G058173_P01 NP_001151824 undecaprenyl pyrophosphate synthetase seq=translation; coord=7:144837690..144838974:-1; parent_transcript=GRMZM2G058173_T01; parent_gene=GRMZM2G058173 8.53699 -0.517394 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 3178 3178 3178 3178 2965 2696 2565 2359 1049 924 319 72 15 4 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3178 3178 3178 3178 2965 2696 2553 2344 1019 847 264 28 2 1 1 0 0 1 2 3 4 5 2266 855 55 3 2 0 0 1 2 3 4 5 6 7 618 2428 126 7 0 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2798 (charge 2) 1442.65 2 152.057 167.092 171.076 175.119 189.087 192.261 195.088 209.104 226.083 234.144 237.135 241.082 258.432 270.146 275.554 293.452 296.134 310.178 332.147 342.129 360.141 366.682 419.715 429.162 499.936 523.291 530.206 630.322 682.943 701.357 743.302 838.408 895.439 996.48 1013.48 1083.5 1482.51 6 11 22 74 20 5 8 14 6 11 6 27 7 7 5 5 10 6 12 9 7 6 7 13 7 7 7 100 7 56 7 20 12 12 6 8 9 GRMZM2G013619_P01 seq=translation; coord=10:128864859..128868237:-1; parent_transcript=GRMZM2G013619_T01; parent_gene=GRMZM2G013619 MSAQVAVVPN GGPGAVPAVV SPGAVGVAQP LPTTSLYVGD LEGAVSDSQL YELFSQAGQV VSVRVCRDVT SRRSLGYAYV NYSNPLDAAR ALEVLNFAAL NNKPIRVMYS NRDPSSRRSG SANIFIKNLD KTIDNKTLHE TFSSFGTILS CKVAVDEAGQ SKGFGFVQYD KEEAAQNAIK SLNGMLINDK PVFVGPFVRK QERDHSFDKT KFNNVFVKNL SESTTKEDLL KIFGEYGDIT SAVVMIGMDG KSRCFGFINF ENPDAASHAV QELNGKKIND KEWYVGRAQK KSEREMELKR RFEQSLKDAA DKYQGLNLYL KNLDDSIGDD QLCELFSNFG KITSYKVMRD QNGLSKGSGF VAFSTREEAS QALTEMNGKM ISGKPLYVAF AQRKEDRKAM LQVTVLKPVE FV GRMZM2G352129_P01 NP_001151785 LOC100285420 seq=translation; coord=2:30905783..30911404:-1; parent_transcript=GRMZM2G352129_T01; parent_gene=GRMZM2G352129 MAAQVAAVVV PNGSPGAVPA VVSPGAVGVG LGVAQPLPTT SLYVGDLEGS VSDSQLYELF SQAGQVVSVR VCRDVTSRRS LGYAYVNFNN PLDAARALEV LNFAPLNNKP IRVMYSNRDP SSRRSGSANI FIKNLDKMID NKSLHETFSS FGTILSCKVA MDEGGQSKGF GFVQYEKEEA AQNAIKSLNG MLINDKPVFV GPFLRKQERD HSFDKTKFNN VFVKNLSEST TKEDLLKIFG EYGNITSAVV MIGMDGKSRC FGFINFENPD AASRAVQELN GKKINDKEWY VGRAQKKSER EMELKRRFEQ ILKDAADKYQ GLNLYLKNLD DSIGDDQLRE LFSNFGKITS CKVMRDQNGL SKGSGFVAFS TREEASQALT EMNGKMISGK PLYVAFAQRK EDRKAMLQAQ FSQMRPAVPM TPTLAPRLPM YPPMAPQQLF YGQAPPAMIP PQPGFGFQQQ LVPGMRPGGP HMPNYFVPVV QHQQGQQGPR PGIRRGAGAQ GQQPVPPFQQ QIVPRGRMYR YPTGRNMPEA PAMPGVAGGM MQAYDMGGFP VRDAALSPAA QIGTLTSALA NANPEQQRTI LGENLYPLVE QLEPNQAAKV TGMLLEMDQT EVLHLLESPD ALKSKVAEAM DVLHNVAHQQ NANTPTSQLA ALSLTEGIIS 6.50317 -0.351523 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 5705 5705 5619 5337 5101 4612 4221 3661 3018 2219 1215 718 319 175 42 8 3 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5695 5695 5609 5327 5071 4551 4012 3445 2789 1416 650 100 2 1 1 0 0 1 2 3 4 5 2044 2381 961 280 50 0 0 1 2 3 4 5 6 7 922 2438 1647 527 140 30 2 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2799 (charge 3) 1311.61 3 151.01 154.086 155.081 155.092 155.118 156.076 156.102 156.121 157.061 157.097 157.109 157.133 158.091 159.076 162.102 166.061 168.008 169.097 169.133 171.113 173.092 173.127 174.133 175.119 176.12 181.096 181.109 183.113 185.093 185.128 185.165 186.123 187.071 187.107 189.087 194.128 195.113 197.128 199.108 201.123 203.121 211.106 213.087 215.139 217.081 223.107 226.155 231.117 235.119 240.134 244.092 251.151 260.198 262.15 267.115 272.171 276.165 288.202 309.202 312.178 316.654 324.129 366.177 379.922 386.205 398.215 410.213 423.256 426.751 429.214 436.231 446.235 452.232 459.723 463.195 466.24 473.21 492.75 500.277 518.299 524.25 526.243 532.251 537.28 539.266 541.252 564.286 600.255 606.775 619.246 636.271 648.32 671.29 695.33 704.278 767.309 769.309 814.372 901.41 942.598 3 7 10 2 89 6 6 9 3 3 3 3 13 9 2 11 2 8 8 15 4 5 2 74 2 3 3 29 7 2 8 2 9 3 3 14 3 12 8 38 51 3 4 4 3 9 10 8 13 7 11 3 2 4 13 14 3 9 2 10 4 2 3 2 3 3 2 4 18 8 3 100 2 10 7 3 4 4 2 2 3 2 4 2 3 35 11 3 15 3 34 2 3 3 2 18 3 3 7 2 GRMZM2G137329_P01 NP_001148304 LOC100281913 seq=translation; coord=1:3000161..3000884:-1; parent_transcript=GRMZM2G137329_T01; parent_gene=GRMZM2G137329 MAKQQQQGMA AVALVVLVVL ATAAAETASA ASCNAGQLAA CAPAITAGAR PSASCCSNLK AQQGCFCQFV KNPTYGRYIN SPNARKVVAS CGVSVPRC 5.66113 -0.343099 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4113 4113 4078 3781 3451 3084 2755 1742 1149 514 227 81 37 20 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4116 4116 4081 3763 3404 3021 2656 1414 751 156 60 15 13 1 0 0 1 2 3 4 5 2253 1573 267 25 1 0 0 1 2 3 4 5 6 7 790 2456 762 101 6 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2807 (charge 2) 934.473 2 152.057 153.102 154.086 155.081 155.117 156.077 157.061 157.097 157.108 158.092 159.076 163.133 164.136 165.102 166.061 167.081 167.093 169.097 169.134 171.076 171.113 173.055 173.092 173.129 174.087 175.119 176.123 181.096 183.113 183.149 184.108 185.055 185.091 186.087 186.124 187.071 194.128 195.073 195.088 195.113 197.129 199.108 202.082 204.138 209.104 212.103 221.102 226.154 229.131 235.119 238.13 240.134 244.165 246.156 249.16 254.161 266.161 277.154 278.157 283.139 300.166 301.186 306.943 324.954 343.172 345.682 360.199 368.202 370.172 385.232 388.22 391.198 395.206 397.223 423.199 440.226 446.274 457.252 459.253 485.271 496.26 527.258 544.284 624.277 641.302 642.305 658.326 660.332 669.374 768.427 771.41 2 1 2 2 2 2 3 5 2 9 5 11 2 2 4 3 2 2 2 2 3 2 2 5 3 34 3 7 2 2 3 2 5 2 2 2 3 1 3 2 3 3 4 4 2 13 2 5 5 8 2 2 4 4 100 5 3 9 1 8 2 2 3 3 6 2 3 3 2 3 1 2 2 1 3 14 1 23 2 5 3 2 21 2 16 4 77 5 2 4 8 GRMZM2G053322_P01 NP_001148807 UDP-sulfoquinovose synthase seq=translation; coord=8:90964173..90967651:-1; parent_transcript=GRMZM2G053322_T01; parent_gene=GRMZM2G053322 MKMAHLITNC SFQTFSSSPN YCRNIGQLQN SKSSNLSLKS CSRRQKKSYV TCASAAVQGQ TQTPLTGSQQ AYEHSSSKPK KVMVIGGDGY CGWATALHLS NKGYEVAIVD NLVRRAFDNQ LGLDSLTPIT SIQNRVRRWK SLTAKTIQLF IGDICDFEFL SEAFKSFEPD AAVHFGEQRS APYSMIDRSR AVYTQHNNVI GTLNVLFAIK EYSEECHLVK LGTMGEYGTP NIDIEEGFIT ITHNGRTDTL PYPKQASSFY HLSKVHDSHN IAFTCKAWGI RATDLNQGVV YGVRTDETAM HEELSNRFDY DGVFGTALNR FCVQAAVGHP LTVYGKGGQT RGYLDIRDTV QCVELAIANP AKPGEFRVFN QFTEQFSVNE LAKLVTAAGA KLGLEVETKS IPNPRVEAEE HYYNAKHTKL IELGLVPHLL SDSLLDSLLN FAIQYKDRVD TAQIMPSVSW KKMGAKPRTV SV 5.91506 -0.338004 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 3339 3339 3265 3157 2897 2694 2444 1803 1302 707 360 163 71 25 8 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3341 3341 3267 3159 2897 2666 2369 1495 922 375 85 38 3 1 0 0 1 2 3 4 5 6 1419 1285 519 85 30 3 0 0 1 2 3 4 5 6 7 642 1486 845 295 58 13 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2808 (charge 3) 1548.66 3 153.066 155.082 157.097 158.093 167.081 169.098 171.076 173.056 173.092 173.129 175.119 181.061 185.092 189.087 193.095 195.076 195.113 199.071 199.108 201.087 203.103 213.087 217.082 221.104 226.155 231.097 238.118 240.134 244.165 255.107 256.128 259.093 262.151 267.109 272.134 284.124 289.162 290.986 299.009 301.187 304.693 308.196 328.112 342.138 346.125 350.146 353.218 359.167 376.194 378.141 396.153 399.15 405.25 408.751 417.265 424.703 434.24 442.715 452.248 462.273 475.719 480.282 484.232 489.278 493.314 502.232 511.323 519.751 522.23 551.75 561.27 563.28 570.276 577.335 590.368 600.303 602.274 608.376 616.785 618.32 620.327 625.792 635.315 657.791 672.337 683.303 687.417 692.307 705.429 707.439 724.313 729.351 747.362 749.37 833.527 868.395 884.422 886.428 967.459 1038.48 6 13 2 6 3 3 47 6 23 2 29 4 5 32 2 4 7 9 6 9 2 13 48 10 26 6 5 21 11 3 2 2 2 7 5 7 5 4 4 12 3 2 11 3 7 2 16 5 21 3 3 6 5 3 5 4 7 36 4 9 8 7 13 25 2 2 20 10 4 5 2 5 9 7 6 6 5 53 4 40 3 13 8 5 4 2 5 6 100 5 5 8 56 6 6 4 38 4 16 7 GRMZM2G110567_P01 NP_001151334 protein binding protein seq=translation; coord=10:92536953..92538977:1; parent_transcript=GRMZM2G110567_T01; parent_gene=GRMZM2G110567 MSFSDDEPII PSPNSGPRPT PIVPGRVQLV SKNNNMAPLE ENTQKVLLEL TGGDSTSDRS GLDLVAVLDV SGSMQGEKIE KMKTAMKFVV KKLSSIDRLS IVTFLDTANR ICPLRQVTED SQPQLLKLID ALQPGGNTNI SDGLQTGLKV LADRKLSSGR VVGVMLMSDG QQNRGEPAAN VKIGNVPVYT FGFGADYDPT VLNAVARNSM GGTFSVVNDV NLLSMAFSQC LAGLLTVVVQ DLTVTVARIE DESTLQKVAA GNYPQTPDAD AGSVTVAFGD LYSKEVRKVI VDLLLPAIDS DRGADILEVT YSYKTAGKLF DAPPATVTVR RSGTAFPADD PPVDVQTEEA RLKTATMIQQ ARTMADGKKL GDARDKLAEA QNALEDVVAQ SDPLLDALRT ELQELLKLMK SQDVYEKQGR PYAMSSETSH DRQRFAARGD IESNRLFSTP RMDKYLEQAK KFDEDPAAPL PSADKDEEEE VAANPLAPLV GPITFYIRAA VEALQAIEKL INKGAN GRMZM2G565911_P01 seq=translation; coord=10:35920773..35922350:1; parent_transcript=GRMZM2G565911_T01; parent_gene=GRMZM2G565911 MQGRGRRRSC PERVQLVSKN NNMAPLEENT QKVLLELTGD DSTSDRSGLD LVAVLDVSSS MQGEKIEKMK TAMKFVVKKL SSIDRLSIVT FLDTANRICP LRQVTEDSQP QLLKLIDALQ PGGNTNISDG LQTGLKVLAD RKLSSGRVVG VMLMSDGQQN RGEPAANVKI GNVPVYTFGF GAHYDPTVLN VVARNSMGGT FSVVNDVNLL SMAFSQCLAG LLTVVVQDLT LTVARIEDES TIQKVAAGNY LQTPDADAGS VTVAFGDLYS KEVRKVIFDL LLPAIDSDRG ADILEVTYSY KTAGKLFDAP PATVTVRRSG TAFPADDPPV DVQTEEARLK TATMIQQART MADGKKLGDA RDKLAEAQNA LENVVAQSDP LLDALRTELQ ELLKLMKSQE VYEKQGRPYA MSSETSHDRQ RFAARGDIEN NRLFSTPRMD KYLEQAKKFD EDPAAPLPSA DKDEEEEVAA NPLAPLVGPI TFYIRAAVEA LQAIEKLINK GAN 5.4343 -0.293746 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 3123 3123 3114 3010 2906 2676 2397 2134 1547 1199 683 394 193 84 34 16 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3119 3119 3110 3006 2900 2647 2331 1989 1350 764 250 24 1 0 0 1 2 3 4 5 6 7 1528 1067 381 111 35 2 0 4 0 1 2 3 4 5 6 7 471 1307 785 430 108 19 4 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2809 (charge 3) 1720.73 3 153.066 153.102 157.061 158.092 169.097 171.076 175.071 175.119 181.097 185.093 185.128 189.086 194.128 199.072 199.108 201.123 212.102 214.106 217.082 226.154 227.102 233.128 235.118 244.165 253.092 257.622 274.187 276.171 279.144 284.124 290.147 297.166 303.178 308.669 319.173 322.667 325.161 328.661 355.198 357.249 363.661 369.227 399.698 402.175 405.187 410.178 414.728 422.219 427.206 434.206 450.744 452.253 461.258 470.259 514.236 531.264 552.921 557.283 585.278 587.281 597.273 602.293 615.283 617.297 628.32 635.316 647.311 656.315 658.32 661.289 673.334 679.347 711.36 726.315 728.313 739.349 744.328 757.361 770.377 772.394 798.392 803.347 805.348 814.345 826.391 831.359 862.382 872.408 882.372 885.422 890.384 895.399 900.385 913.418 918.39 920.395 949.427 966.429 1014.49 1042.45 3 3 6 6 3 8 3 64 4 3 3 3 2 3 14 4 3 14 7 38 12 7 7 13 8 7 8 4 14 2 14 3 3 9 11 29 22 2 2 2 8 4 6 2 8 7 3 11 20 3 2 3 2 3 35 2 3 25 46 3 6 15 62 3 40 2 3 100 8 3 10 2 13 10 2 10 33 17 27 3 7 15 3 3 7 19 3 7 4 6 4 6 6 7 22 6 2 2 3 2 GRMZM2G318635_P01 seq=translation; coord=5:213291570..213301733:-1; parent_transcript=GRMZM2G318635_T01; parent_gene=GRMZM2G318635 6.94617 -0.338837 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 6547 6547 6547 6547 6400 6317 5856 5498 4976 3774 2774 1492 769 408 204 72 20 8 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6551 6551 6551 6551 6404 6321 5847 5451 4841 3443 2011 562 61 7 1 0 0 1 2 3 4 5 6 7 1997 2722 1368 363 83 18 1 0 0 1 2 3 4 5 6 7 1009 2927 1884 534 172 21 2 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2815 (charge 3) 1449.69 3 154.049 155.081 155.118 156.077 157.061 157.097 157.133 158.093 159.076 159.092 166.062 167.093 169.097 169.134 171.076 171.113 173.128 175.054 175.071 175.119 178.061 181.061 181.096 183.113 185.129 186.124 187.108 189.087 192.048 193.097 194.129 195.089 195.112 197.128 199.072 199.108 199.181 201.123 204.134 207.127 212.139 217.083 226.154 227.103 230.077 233.091 235.12 237.135 240.134 244.166 246.157 255.145 266.161 270.145 272.172 276.106 284.17 291.166 303.202 315.203 329.192 344.126 359.14 373.219 381.097 386.969 394.107 437.159 465.153 473.734 480.165 484.786 488.243 491.258 503.32 538.264 547.264 551.201 553.318 560.272 561.262 573.252 581.767 602.29 604.314 606.269 619.32 638.311 642.358 656.372 674.344 714.349 730.38 731.376 747.381 773.409 778.289 884.438 909.328 946.457 8 13 13 14 7 8 8 22 29 7 7 21 16 6 15 14 60 14 34 100 17 7 8 16 6 22 22 42 8 24 22 52 14 14 19 17 16 31 79 9 13 34 35 16 8 7 33 6 25 22 8 21 6 14 37 7 17 20 24 12 16 7 7 51 58 8 6 14 7 14 24 18 16 14 16 19 7 24 7 17 7 11 27 48 14 13 21 6 17 8 16 16 29 34 6 21 8 7 8 34 GRMZM2G102760_P01 NP_001105975 lipoxygenase seq=translation; coord=5:12274159..12279067:-1; parent_transcript=GRMZM2G102760_T01; parent_gene=GRMZM2G102760 GRMZM2G102760_P03 NP_001105975 lipoxygenase seq=translation; coord=5:12275542..12279067:-1; parent_transcript=GRMZM2G102760_T03; parent_gene=GRMZM2G102760 MFWHGVADRL TGKNKEAWSE GKIRGTVRLV KKEVLDVGDF NASLLDGVHR ILGWDDGVAF QLVSATAADP SNGGRGKVGK AAHLEEAVVS LKSTADGETV YRVSFEWDES QGIPGAVLVR NLQHAEFFLK TLTLEGVPGK GTVVFVANSW VYPHKLYSQE RIFFANDTYL PSKMPAALVP YRQDELKILR GDDNPGPYQE HDRVYRYDYY NDLGDPDKGE EHARPILGGS QEHPYPRRCR TGRHPTKKDP NSESRLFLLN LNIYVPRDER FGHLKMSDFL GYSLKTIIEA VLPTLGTFVD DTPKEFDSFE DILGLYELGP EAPNNPLIAE IRKKIPSEFL RSILPNGSHD HPLKMPLPNV IKSDVLKKAP EFKFGWRTDE EFARETLAGV NPVIIKRLTE FPAKSTLDPR QYGDHTSKIT EAHIRHNMGG LSVQNALRNK RLFILDHHDH FMPYLDEINE LEGNFIYASR TLLFLKDDGT LKPLAIELSL PHPDGQQRGA VSKVYTPAHT GVEGHVWQLA KAYACVNDSA WHQLISHWYK KCFWCLFLFF FPFN 4.04742 -0.261124 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 1537 1537 1537 1537 1463 1348 1199 1029 824 440 281 130 75 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1541 1541 1541 1541 1467 1350 1195 1002 758 357 171 68 3 1 0 0 1 2 3 4 5 6 664 691 142 43 3 1 0 0 1 2 3 4 5 6 7 304 806 305 111 14 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2817 (charge 3) 1499.62 3 152.057 155.081 156.076 157.097 157.133 158.092 159.076 159.112 167.081 169.097 169.134 171.076 172.108 173.056 173.092 173.129 175.119 176.122 183.112 185.056 185.092 185.129 185.165 186.122 187.071 187.107 195.04 195.076 199.107 201.123 204.135 205.1 212.102 221.103 226.118 230.077 233.128 235.071 239.114 240.098 244.166 246.156 249.097 253.092 256.164 257.124 261.123 267.108 270.072 288.082 290.146 303.175 333.187 339.093 357.104 367.17 372.225 389.184 393.499 421.727 424.187 427.204 442.247 451.266 468.297 472.714 479.769 489.276 492.714 501.54 503.291 512.622 526.309 528.288 545.319 549.751 556.247 557.253 559.284 565.819 568.818 577.33 587.999 601.014 618.316 626.356 646.365 667.274 673.328 684.302 699.382 706.366 744.361 815.402 817.396 826.366 847.369 886.436 944.419 1001.44 9 41 6 15 16 14 14 9 7 15 6 6 10 31 5 7 100 7 22 17 6 20 6 9 6 5 5 5 5 14 10 8 9 6 17 10 25 11 9 17 9 5 9 6 8 12 8 9 8 9 13 8 7 6 7 9 21 6 11 9 8 23 16 8 12 31 7 9 5 27 29 34 9 8 8 18 27 10 21 5 8 7 9 9 5 5 10 10 9 33 9 5 9 21 5 5 30 13 20 22 GRMZM2G059083_P01 NP_001104851 ferredoxin seq=translation; coord=3:147290518..147292751:-1; parent_transcript=GRMZM2G059083_T01; parent_gene=GRMZM2G059083 MAAVTAAAVS LPSSSSSPAA AKAKASASAS PSSPCGHLQF PRRHGGPRAV RLRVQVSTTE TAEAEPVKKL EKVSKKQEEG LVTNKYKPKE PYVGRCLLNT RITGDQAPGE TWHMVFSTEG EVPYREGQSI GVIADGEDKN GKPHKLRLYS IASSALGDFG DSKTVSLCVK RLVYTNDQGE VVKGVCSNFL CDLKPGAEVK ITGPVGKEML MPKDPNATII MLATGTGIAP FRSFLWKMFF EEHEDYKYTG LAWLFLGVPT SDTLLYKEEL EKMKEMAPDN FRLDFAVSRE QTNAAGEKMY IQTRMAEYKE ELWELLKKDN TYVYMCGLKG MEKGIDDIML DLAAKDGINW LDYKKQLKKS EQWNVEVY GRMZM2G059083_P03 NP_001104851 ferredoxin seq=translation; coord=3:147290712..147292701:-1; parent_transcript=GRMZM2G059083_T03; parent_gene=GRMZM2G059083 MAAVTAAAVS LPSSSSSPAA AKAKASASAS PSSPCGHLQF PRRHGGPRAV RLRVQVSTTE TAEAEPVKKL EKVSKKQEEG LVTNKYKPKE PYVGRCLLNT RITGDQAPGE TWHMVFSTEG EVPYREGQSI GVIADGEDKN GKPHKLRLYS IASSALGDFG DSKTVSLCVK RLVYTNDQGE VVKGVCSNFL CDLKPGAEVK ITGPVGKEML MPKDPNATII MLATGTGIAP FRSFLWKMFF EEHEDYKYTG LAWLFLGVPT SDTLLYKEEL EKMKEMAPDN FRLDFAVSRE QTNAAGEKMY IQTRMAEYKE ELWELLKKDN TYVYMCGLKG MEKGIDDIML DLAAKDGKLS VIALVLRFCA RYEQVAS GRMZM2G059083_P04 NP_001104851 ferredoxin seq=translation; coord=3:147286676..147292683:-1; parent_transcript=GRMZM2G059083_T04; parent_gene=GRMZM2G059083 MAAVTAAAVS LPSSSSSPAA AKAKASASAS PSSPCGHLQF PRRHGGPRAV RLRVQVSTTE TAEAEPVKKL EKVSKKQEEG LVTNKYKPKE PYVGRCLLNT RITGDQAPGE TWHMVFSTEG EVPYREGQSI GVIADGEDKN GKPHKLRLYS IASSALGDFG DSKTVSLCVK RLVYTNDQGE VVKGVCSNFL CDLKPGAEVK ITGPVGKEML MPKDPNATII MLATGTGIAP FRSFLWKMFF EEHEDYKYTG LAWLFLGVPT SDTLLYKEEL EKMKEMAPDN FRLDFAVSRE QTNAAGEKMY IQTRMAEYKE ELWELLKKDN TYVYMCGLKG MEKGIDDIML DLAAKDGINW LDYKKQLKKS EQWNVEVY GRMZM2G059083_P02 NP_001104851 ferredoxin seq=translation; coord=3:147290527..147292751:-1; parent_transcript=GRMZM2G059083_T02; parent_gene=GRMZM2G059083 MAAVTAAAVS LPSSSSSPAA AKAKASASAS PSSPCGHLQF PRRHGGPRAV RLRVQVSTTE TAEAEPVKKL EKVSKKQEEG LVTNKYKPKE PYVGRCLLNT RITGDQAPGE TWHMVFSTEG EVPYREGQSI GVIADGEDKN GKPHKLRLYS IASSALGDFG DSKTVSLCVK RLVYTNDQGE VVKGVCSNFL CDLKPGAEVK ITGPVGKEML MPKDPNATII MYTGLAWLFL GVPTSDTLLY KEELEKMKEM APDNFRLDFA VSREQTNAAG EKMYIQTRMA EYKEELWELL KKDNTYVYMC GLKGMEKGID DIMLDLAAKD GINWLDYKKQ LKKSEQWNVE VY 6.804 -0.316465 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 6941 6941 6789 6582 6288 5934 5526 5099 3428 2713 1288 583 282 144 77 44 12 6 3 2 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6946 6946 6794 6587 6279 5865 5449 4981 3027 1976 482 79 21 6 1 0 0 1 2 3 4 5 3127 2941 758 100 20 0 0 1 2 3 4 5 6 7 1396 4240 1106 177 23 1 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2819 (charge 2) 1175.58 2 152.057 155.082 157.061 157.097 158.081 158.1 159.077 167.081 169.097 169.134 171.076 171.113 173.056 173.092 173.129 174.087 175.107 175.122 176.111 181.098 183.076 184.072 185.075 185.092 186.094 187.071 187.108 195.075 197.128 199.108 201.087 203.121 213.086 214.118 216.134 226.154 227.102 231.116 233.165 238.119 240.134 242.114 244.167 246.156 248.16 254.114 258.145 266.114 270.144 273.132 284.124 296.123 298.14 301.13 314.134 315.135 325.223 329.662 343.234 346.182 353.143 355.159 373.172 395.154 401.165 413.165 418.728 431.18 446.235 454.266 468.208 472.273 474.224 484.199 502.215 520.265 526.285 530.298 540.267 543.313 548.27 561.266 585.299 611.8 654.341 658.314 670.39 672.367 698.385 700.382 743.392 745.346 832.381 844.44 882.382 929.398 946.424 955.457 973.488 1045.48 3 10 4 35 3 35 15 7 7 24 3 3 2 19 2 2 57 17 3 2 3 2 3 75 3 2 3 2 19 7 21 75 19 2 3 12 10 20 7 8 3 6 6 26 8 2 3 4 6 11 8 3 4 10 15 2 3 7 100 2 2 2 2 2 2 8 3 2 34 15 3 4 2 7 3 2 2 3 2 20 2 2 15 2 3 34 3 13 13 2 16 9 11 20 3 3 24 3 16 2 GRMZM2G053322_P01 NP_001148807 UDP-sulfoquinovose synthase seq=translation; coord=8:90964173..90967651:-1; parent_transcript=GRMZM2G053322_T01; parent_gene=GRMZM2G053322 5.71305 -0.368584 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2186 2186 2186 2178 2043 1858 1033 784 439 195 126 42 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2190 2190 2190 2182 2047 1860 1017 705 301 95 43 10 1 0 0 1 2 3 4 1484 641 63 7 0 0 1 2 3 4 5 6 7 468 1432 264 28 1 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2820 (charge 2) 1548.66 2 168.065 169.097 171.076 175.119 183.149 189.087 195.113 199.072 201.069 204.087 211.144 213.086 214.731 217.082 226.156 230.113 239.114 253.557 258.144 262.738 266.149 272.136 289.162 346.123 350.144 363.059 376.189 379.232 397.208 429.215 442.714 447.17 476.23 489.277 491.247 514.298 516.237 534.261 542.301 563.542 565.297 570.272 618.317 644.339 662.352 742.837 747.362 860.83 884.425 891.046 967.463 1039.49 1139.55 1236.18 6 3 6 21 22 9 5 3 5 5 18 7 3 43 5 6 4 3 4 4 8 4 10 15 4 4 6 6 8 8 25 6 4 23 5 7 7 7 15 6 30 9 26 19 100 10 43 5 39 5 31 15 9 5 GRMZM5G844562_P01 O24562 Probable cinnamyl alcohol dehydrogenase (CAD)(EC 1.1.1.195)(Brown-midrib 1 protein) seq=translation; coord=5:98993016..98997371:-1; parent_transcript=GRMZM5G844562_T01; parent_gene=GRMZM5G844562 GRMZM5G844562_P03 O24562 Probable cinnamyl alcohol dehydrogenase (CAD)(EC 1.1.1.195)(Brown-midrib 1 protein) seq=translation; coord=5:98993016..98996099:-1; parent_transcript=GRMZM5G844562_T03; parent_gene=GRMZM5G844562 GRMZM5G844562_P02 O24562 Probable cinnamyl alcohol dehydrogenase (CAD)(EC 1.1.1.195)(Brown-midrib 1 protein) seq=translation; coord=5:98993016..98997371:-1; parent_transcript=GRMZM5G844562_T02; parent_gene=GRMZM5G844562 4.77329 -0.272759 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 5906 5906 5906 5906 5906 5819 3876 3473 2065 1408 745 442 222 109 36 16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5917 5917 5917 5917 5917 5830 3887 3410 1964 1126 516 269 91 21 1 0 0 1 2 3 4 5 6 3774 1913 209 11 0 12 0 0 1 2 3 4 5 6 7 965 4295 571 72 4 0 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2823 (charge 2) 1440.73 2 150.067 164.082 167.092 169.097 171.075 175.073 175.09 175.119 189.087 195.088 199.107 201.123 204.132 209.14 216.134 226.155 234.145 237.134 244.093 247.13 282.18 314.134 321.174 332.634 369.17 374.194 397.166 408.209 411.246 428.458 472.817 477.228 495.242 506.229 523.76 534.223 550.332 557.604 568.37 602.312 605.296 608.321 623.423 630.319 633.296 659.4 701.356 714.302 716.325 734.339 776.393 808.44 815.398 833.404 895.438 907.51 931.696 1044.57 1046.52 1083.51 13 47 88 21 14 13 20 90 13 49 16 48 11 55 12 19 73 77 18 14 20 27 91 13 79 15 70 74 13 12 14 18 92 69 19 70 19 16 16 17 24 49 27 100 22 13 47 19 29 26 15 68 19 53 23 64 15 58 16 16 GRMZM2G063800_P01 seq=translation; coord=4:76812503..76816090:-1; parent_transcript=GRMZM2G063800_T01; parent_gene=GRMZM2G063800 MDIFKTFIEL LRQTGNVTKG QGDIDESSPR WLLKQEVPKV VKSINRQLRE KSIKTKVGAF SVLKELVVVL PDCLADHFGS LVPGIEKALN DKSSTSNLKI EALVLTRLVM ASHSPSVFHP YIKALSAPIL SVIRDRYYKV TTEALRKTVV DFEPYIGPIY NAILGRLANQ DQDQCTLIYH ANLCSPKREL PACLPILVDR MGNEITRLTA VKWMNMPNLL EVIDFKDTFL DANHVQQSFP DYQSRNNMAD GEPQKEKLIV ETYIPADPGP YPQDKPKQNS VRFTPTQEMY EDASQVAVDA VGSIRTVASF CAEKIVVAAY RDKCEALRKQ GIRNGVIGGL GYGFSFLMLF FTYGLCFYVG AQFVRQGKTT FPDVFKVFFA LVLAAIGVSQ ASALASDATK ARDSAISIFS VLDRESKIDS SSGDGMTLED VSGKIDFRNV SFKYPLCLDV QIFSDFTLRI PSGKTVALVR ESGSGKSTII ALLERLYDPD SVSQWVKLWF D GRMZM2G168629_P01 NP_001169972 hypothetical protein LOC100383873 seq=translation; coord=4:236362229..236373144:1; parent_transcript=GRMZM2G168629_T01; parent_gene=GRMZM2G168629 MANLNITNIL EKMTGKDKDY RYMATSDLLS ELNKESFKAD QDLEPKLTIT VLQQLEDASG DVSGLAVKCL APLVKKVGED RVVEMTNKLC DKLINGKDQH RDTASIALKT IIAEVTTPSL AEKILLSLAP QLIKGVNTAK SAEIKCECLD ILADVLHRFG NLITKDHEYM LNALLSQLGS NPASVRKKSI SCIASLAPSL SDDLLAKATL QVVQLLKNRG AKSEITRTNI QMIGSLSRSV GYRFGPHLAE TVPLLISYCT SASENDEELR EYSLQALESF MLRCPRDISP YCEGILNLAL EYVSYDPNFT DSMDEDTDEE AKEEDDDDES ANEYTDDEDA SWKVRRASAK CLSAIIVSRP EMLSKMFLEA CPKLIERFRE REENVKMDIF NTFIELLRQT GNVTKGQGDI DESSPRWLLK QEVPKVVKSI NRQLREKSIK TKVGAFSVLK ELVVVLPDCL ADHFGSLVPG IEKALNDKSS TSNLKIEALV LTRLVMASHS PSVFHPYIKA LSAPILSAIR DRYYKVTAEA LRVCGELVRV LRPNLETTSV DFKPYIGPIY NAILGRLANQ DQDQEVKECA ISCMSLVVST FGDGLERELP ACLPILVDRM GNEITRLTAV KAFSVIANSP LRIDLSCVLD HVVSELTAFL RKANRALRQA TLGTLNSLVV TYGGQIGSSS YETIIAELST LISDMDLHMT ALALELCCTI MVDRKSIQNV GLAVRDKVLP QALVLIRSAL LQGQALQALQ RFFASLVQSA NTSFDALLES LISAAKPSHS GSLAKQALSS IAKCVAVLCL AAGDQKCAST IEMLKGILKD DSTTNSAKQH MALLCLGEIG RRKDLSNHVQ IENIVIESFQ SPFEEIKSAA SYALGNIAVG NLSKYLPFIL DQIDNQQKKQ YLLLHSLKEV IVRQSVDHTG QSELQDSNIE KILALLFNHC ESEEEGVRNV VAECLGKISL IEPKKLVPAL EVRTSSPAAN TRATVAIAIK YSIVERPEKI DEIMYSKIST FLMLIKDSDR HVRRAAVLAL STAAHNKPNL IKGLLPEILP LLYDQTVIKQ ELIRTVDLGP FKHVVDDGLE LRKAAFECVD TLLDSCLDQV NPSSFIVPFL LSGLGDHYDV KMPCHLILSK LADKCPSAVL AVLDSIVEPI EKTISHKPKG DAVKQEVDRN EDMIRSALRA ISSLSRISGS DYSIRFKNLM NKITATPALA EKYNSVRGE GRMZM2G168629_P02 NP_001169972 hypothetical protein LOC100383873 seq=translation; coord=4:236362229..236373143:1; parent_transcript=GRMZM2G168629_T02; parent_gene=GRMZM2G168629 MANLNITNIL EKMTGKDKDY RYMATSDLLS ELNKESFKAD QDLEPKLTIT VLQQLEDASG DVSGLAVKCL APLVKKVGED RVVEMTNKLC DKLINGKDQH RDTASIALKT IIAEVTTPSL AEKILLSLAP QLIKGVNTAK SAEIKCECLD ILADVLHRFG NLITKDHEYM LNALLSQLGS NPASVRKKSI SCIASLAPSL SDDLLAKATL QVVQLLKNRG AKSEITRTNI QMIGSLSRSV GYRFGPHLAE TVPLLISYCT SASENDEELR EYSLQALESF MLRCPRDISP YCEGILNLAL EYVSYDPNFT DSMDEDTDEE AKEEDDDDES ANEYTDDEDA SWKVRRASAK CLSAIIVSRP EMLSKMFLEA CPKLIERFRE REENVKMDIF NTFIELLRQT GNVTKGQGDI DESSPRWLLK QEVPKVVKSI NRQLREKSIK TKVGAFSVLK ELVVVLPDCL ADHFGSLVPG IEKALNDKSS TSNLKIEALV LTRLVMASHS PSVFHPYIKA LSAPILSAIR DRYYKVTAEA LRVCGELVRV LRPNLETTSV DFKPYIGPIY NAILGRLANQ DQDQVWQNSL FSLPLLCACS ALSFIMQICV LPGGKRMRHI LHEFGGLYFW GRMZM2G168629_P03 NP_001169972 hypothetical protein LOC100383873 seq=translation; coord=4:236362229..236373143:1; parent_transcript=GRMZM2G168629_T03; parent_gene=GRMZM2G168629 MANLNITNIL EKMTGKDKDY RYMATSDLLS ELNKESFKAD QDLEPKLTIT VLQQLEDASG DVSGLAVKCL APLVKKVGED RVVEMTNKLC DKLINGKDQH RDTASIALKT IIAEVTTPSL AEKILLSLAP QLIKGVNTAK SAEIKCECLD ILADVLHRFG NLITKDHEYM LNALLSQLGS NPASVRKKSI SCIASLAPSL SDDLLAKATL QVVQLLKNRG AKSEITRTNI QMIGSLSRSV GYRFGPHLAE TVPLLISYCT SASENDEELR EYSLQALESF MLRCPRDISP YCEGILNLAL EYVSYDPNFT DSMDEDTDEE AKEEDDDDES ANEYTDDEDA SWKVRRASAK CLSAIIVSRP EMLSKMFLEA CPKLIERFRE REENVKMDIF NTFIELLRQT GNVTKGQGDI DESSPRWLLK QEVPKVVKSI NRQLREKSIK TKVGAFSVLK ELVVVLPDCL ADHFGSLVPG IEKALNDKSS TSNLKIEALV LTRLVMASHS PSVFHPYIKA LSAPILSAIR DRYYKVTAEA LRVCGELVRV LRPNLETTSV DFKPYIGPIY NAILGRLANQ DQDQEVKECA ISCMSLVVST FGDGLERELP ACLPILVDRM GNEITRLTAV KAFSVIANSP LRIDLSCVLD HVVSELTAFL RKANRALRQA TLGTLNSLVV TYGGQIGSSS YETIIAELST LISW GRMZM2G168629_P04 NP_001169972 hypothetical protein LOC100383873 seq=translation; coord=4:236362229..236372866:1; parent_transcript=GRMZM2G168629_T04; parent_gene=GRMZM2G168629 MANLNITNIL EKMTGKDKDY RYMATSDLLS ELNKESFKAD QDLEPKLTIT VLQQLEDASG DVSGLAVKCL APLVKKVGED RVVEMTNKLC DKLINGKDQH RDTASIALKT IIAEVTTPSL AEKILLSLAP QLIKGVNTAK SAEIKCECLD ILADVLHRFG NLITKDHEYM LNALLSQLGS NPASVRKKSI SCIASLAPSL SDDLLAKATL QVVQLLKNRG AKSEITRTNI QMIGSLSRSV GYRFGPHLAE TVPLLISYCT SASENDEELR EYSLQALESF MLRCPRDISP YCEGILNLAL EYVSYDPNFT DSMDEDTDEE AKEEDDDDES ANEYTDDEDA SWKVRRASAK CLSAIIVSRP EMLSKMFLEA CPKLIERFRE REENVKMDIF NTFIELLRQT GNVTKGQGDI DESSPRWLLK QEVPKVVKSI NRQLREKSIK TKVGAFSVLK ELVVVLPDCL ADHFGSLVPG IEKALNDKSS TSNLKIEALV LTRLVMASHS PSVFHPYIKA LSAPILSAIR DRYYKVTAEA LRVCGELVRV LRPNLETTSV DFKPYIGPIY NAILGRLANQ DQDQEVKECA ISCMSLVVST FGDGLERELP ACLPILVDRM GNEITRLTAV KAFSVIANSP LRIDLSCVLD HVVSELTAFL RKANRALRQA TLGTLNSLVV TYGGQIGSSS YETIIAELST LISDMDLHMT ALALELCCTI MVDRKSIQNV GLAVRDKVLP QALVLIRSAL LQGQALQALQ RFFASLVQSA NTSFDALLES LISAAKPSHS GSLAKQALSS IAKCVAVLCL AAGDQKCAST IEMLKGILKD DSTTNSAKQH MALLCLGEIG RRKDLSNHVQ IENIVIESFQ SPFEEIKSAA SYALGNIAVG NLSKYLPFIL DQIDNQQKKQ YLLLHSLKEV IVRQSVDHTG QSELQDSNIE KILALLFNHC ESEEEGVRNV VAECLGKISL IEPKKLVPAL EVRTSSPAAN TRATVAIAIK YSIVERPEKI DEIMYSKIST FLMLIKDSDR HVRRAAVLAL STAAHNKPNL IKGLLPEILP LLYDQTVIKQ ELIRTVDLGP FKHVVDDGLE LRKAAFECVD TLLDSCLDQV NPSSFIVPFL LSGLGDHYDV KMPCHLILSK LADKCPSAVL AVLDSIVEPI EKTISHKPKG DAVKQEVDRN EDMIRSALRA ISSLSRISGS DYSIRFKNLM NKITATPALA EKYNSVRGE GRMZM2G168629_P05 NP_001169972 hypothetical protein LOC100383873 seq=translation; coord=4:236362229..236371012:1; parent_transcript=GRMZM2G168629_T05; parent_gene=GRMZM2G168629 MANLNITNIL EKMTGKDKDY RYMATSDLLS ELNKESFKAD QDLEPKLTIT VLQQLEDASG DVSGLAVKCL APLVKKVGED RVVEMTNKLC DKLINGKDQH RDTASIALKT IIAEVTTPSL AEKILLSLAP QLIKGVNTAK SAEIKCECLD ILADVLHRFG NLITKDHEYM LNALLSQLGS NPASVRKKSI SCIASLAPSL SDDLLAKATL QVVQLLKNRG AKSEITRTNI QMIGSLSRSV GYRFGPHLAE TVPLLISYCT SASENDEELR EYSLQALESF MLRCPRDISP YCEGILNLAL EYVSYDPNFT DSMDEDTDEE AKEEDDDDES ANEYTDDEDA SWKVRRASAK CLSAIIVSRP EMLSKMFLEA CPKLIERFRE REENVKMDIF NTFIELLRQT GNVTKGQGDI DESSPRWLLK QEVPKVVKSI NRQLREKSIK TKVGAFSVLK ELVVVLPDCL ADHFGSLVPG IEKALNDKSS TSNLKIEALV LTRLVMASHS PSVFHPYIKA LSAPILSAIR DRYYKVTAEA LRVCGELVRV LRPNLETTSV DFKPYIGPIY NAILGRLANQ DQDQEVKECA ISCMSLVVST FGDGLERELP ACLPILVDRM GNEITRLTAV KAFSVIANSP LRIDLSCVLD HVVSELTAFL RKANRALRQA TLGTLNSLVV TYGGQIGSSS YETIIAELST LISDMDLHMT ALALELCCTI MVDRKSIQNV GLAVRDKVLP QALVLIRSAL LQGQALQALQ RFFASLVQSA NTSFDALLES LISAAKPSHS GSLAKQALSS IAKCVAVLCL AAGDQKCAST IEMLKGILKD DSTTNSAKQH MALLCLGEIG RRKDLSNHVQ IENIVIESFQ SPFEEIKSAA SYALGNIAVG NLSKYLPFIL DQIDNQQKKQ YLLLHSLKEV IVRQSVDHTG QSELQDSNIE KILALLFNHC ESEEEGVRNV VAECLGKISL IEPKKLVPAL EVRTSSPAAN TRATVAIAIK YSIVERPEKI DEIMYSKIST FLMLIKDSDR HVRRAAVLAL STAAHNKPNL IKGLLPEILP LLYDQTVIKV LSQFFELS 5.31329 -0.272476 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3528 3528 3528 3338 3262 2832 2643 2491 1721 1499 965 484 279 141 69 35 12 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3526 3526 3526 3336 3258 2823 2575 2406 1567 1048 531 161 33 1 0 0 1 2 3 4 2024 1188 276 50 0 0 1 2 3 4 5 6 7 678 1978 767 89 13 3 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2824 (charge 2) 1160.52 2 152.034 152.056 155.045 155.081 157.097 157.108 157.134 158.093 159.077 161.092 167.055 167.082 168.076 169.061 169.097 171.077 171.113 172.072 173.092 175.119 176.121 181.061 181.097 183.113 183.149 185.092 185.128 186.087 186.123 187.072 187.091 187.144 189.087 194.13 197.127 198.087 198.124 199.072 199.107 201.123 204.135 208.615 212.102 214.119 217.081 225.099 226.155 229.117 240.134 242.113 244.165 255.145 258.146 260.124 269.123 272.171 280.868 284.086 285.156 295.103 300.121 306.072 310.151 313.151 323.098 327.178 341.112 343.161 359.203 369.177 391.161 399.199 401.193 408.192 416.223 417.225 426.196 430.23 446.236 452.256 458.23 534.183 543.255 549.748 557.269 575.279 582.314 626.291 654.316 662.834 690.306 699.372 704.322 801.371 803.389 881.453 902.404 918.418 975.437 998.487 32 3 4 14 4 3 5 21 9 13 15 4 4 95 6 52 3 14 21 69 4 4 4 4 4 15 4 86 3 6 4 14 18 10 4 9 3 3 28 12 9 12 3 4 5 4 53 3 5 47 11 45 3 10 12 31 4 4 4 4 6 4 10 4 16 12 19 4 15 10 9 18 13 4 22 6 10 4 54 4 3 3 3 3 13 77 4 13 3 100 79 18 5 39 37 4 3 17 60 16 GRMZM2G059083_P01 NP_001104851 ferredoxin seq=translation; coord=3:147290518..147292751:-1; parent_transcript=GRMZM2G059083_T01; parent_gene=GRMZM2G059083 GRMZM2G059083_P03 NP_001104851 ferredoxin seq=translation; coord=3:147290712..147292701:-1; parent_transcript=GRMZM2G059083_T03; parent_gene=GRMZM2G059083 GRMZM2G059083_P04 NP_001104851 ferredoxin seq=translation; coord=3:147286676..147292683:-1; parent_transcript=GRMZM2G059083_T04; parent_gene=GRMZM2G059083 GRMZM2G059083_P02 NP_001104851 ferredoxin seq=translation; coord=3:147290527..147292751:-1; parent_transcript=GRMZM2G059083_T02; parent_gene=GRMZM2G059083 4.89037 -0.296386 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 6633 6633 6633 6475 6120 4468 3878 2249 1541 893 461 257 92 25 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6637 6637 6637 6479 6123 4459 3706 2010 1052 480 153 35 4 1 0 0 1 2 3 4 5 3169 2691 679 100 6 0 0 1 2 3 4 5 6 7 1520 4484 560 69 3 0 0 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2825 (charge 2) 1489.77 2 155.081 157.097 159.077 159.113 169.097 169.134 170.044 171.077 172.108 173.091 175.107 175.12 185.092 187.107 189.087 197.128 199.108 201.088 203.102 213.086 215.287 226.154 228.171 231.098 239.094 252.135 254.113 257.197 270.144 272.123 275.207 284.126 286.138 296.124 298.14 300.063 302.135 312.118 314.134 316.175 325.223 330.133 332.145 353.18 362.027 371.191 373.17 401.166 413.167 466.186 471.329 473.332 484.201 502.211 532.215 535.775 567.952 573.25 582.357 592.808 600.371 602.315 619.317 669.406 671.402 774.393 781.57 796.412 800.449 836.473 871.482 972.534 974.518 1083.56 1101.58 1202.62 1303.67 3 5 3 21 10 16 2 10 3 5 12 8 25 23 9 16 5 4 18 13 2 19 5 15 2 6 4 11 16 17 34 5 5 5 5 5 4 3 17 2 38 3 6 5 5 10 5 11 3 3 100 3 5 5 3 3 4 4 6 4 4 3 4 17 25 5 10 5 19 4 27 44 3 4 21 16 4 GRMZM2G375984_P01 seq=translation; coord=5:19048283..19055775:1; parent_transcript=GRMZM2G375984_T01; parent_gene=GRMZM2G375984 MEEKAVTNGA AAADVAAPDN KDNTKEEVSK SKEPVANKDA EEQNKGSENG AEGHSGGDVN MAEAEITEEG GGGDAGAAKQ VDSGDVKTDA DTKEDANART EEGEDAKMTE ADVGSTEVKD KEEKEDEVEN TNEQDESKEQ EKGASAEQEE NEGKETDADE NQEEEEAEEK GSADKKDEAE AEGDKKTEEN KETPKNKKAR SARDRSQGKD KEQDGSKSKE AKSLLNTPSP YGTNRPQRER KIVERLVEVI DKEPNKNFVV EKGQGTPLKD IPSVAHRISR KKPSDLKFLH SILFGRKGKA VDFKGHILQF SGFVWHESDE KQRAKAKEKL DKCVKDTLLD LCWTLGIPTP KANIRKEDIV SKLLDFIAEP HSAAESWGSD DQGSNSKKRK RGGESASKTP DGTPSRSRKK FVDDGTSSKR QNKALQYDTE EDESMKSDSE ENIDEDSDEA ADKQEVDYGS GKEKAGKKLS EVKESSGKKK SNTGSGHKSG PPNKIIKNLV KKVSSKIHEE KESPNGSAKV FSRKKKPTAE KEIKEKKSSG KKVTKGKGES AEAVLPSKDD LRKTITEILK KVDFNTATFS DILKKLDNHY KMDLTPKKEA IKVMIQDELT KLSEEDEEGE GDEDAGKKQQ QPQAQEIEA GRMZM2G375984_P02 seq=translation; coord=5:19048283..19055775:1; parent_transcript=GRMZM2G375984_T02; parent_gene=GRMZM2G375984 MEEKAVTNGA AAADVAAPDN KDNTKEEVSK SKEPVANKDA EEQNKGSENG AEGHSGGDVN MAEAEITEEG GGGDAGAAKQ VDSGDVKTDA DTKEDANART EEGEDAKMTE ADVGSTEVKD KEEKEDEVEN TNEQDESKEQ EKGASAEQEE NEGKETDADE NQEEEEAEEK GSADKKDEAE AEGDKKTEEN KETPKNKKAR SARDRSQGKD KEQDGSKSKE AKSLLNTPSP YGTNRPQRER KIVERLVEVI DKEPNKNFVV EKGQGTPLKD IPSVAHRISR KKPSDLKFLH SILFGRKGKA VDFKGHILQF SGFVWHESDE KQRAKAKEKL DKCVKDTLLD LCWTLGIPTP KANIRKEDIV SKLLDFIAEP HSAAESWGSD DQGSNSKKRK RGGESASKTP DGTPSRSRKK FVDDGTSSKR QNKALQYDTE EDESMKSDSE ENIDEDSDEA ADKQEVDYGS GKEKAGKKLS EVKESSGKKK SNTGSGHKSG PPNKIIKNLV KKVSSKIHEE KESPNGSAKV FSRKKKPTAE KEIKEKKSSG KKVTKGKGES AEAVLPSKDD LRKTITEILK KVDFNTATFS DILKKLDNHY KMDLTPKKEA IKVMIQDELT KLSEEDEEGE GDEDAGKKQQ QPQAQEIEA 6.21055 -0.376397 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2120 2120 2120 2056 1949 1809 1527 1152 821 417 153 55 21 8 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2116 2116 2116 2052 1945 1801 1515 1109 706 322 79 15 1 0 0 1 2 3 4 5 797 976 312 40 1 0 0 1 2 3 4 5 6 7 615 979 468 52 3 5 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2826 (charge 3) 1836.76 3 152.057 154.097 155.081 158.092 159.076 167.055 168.056 169.097 171.077 171.113 172.108 173.092 173.128 175.119 181.061 181.097 182.092 183.076 183.113 185.057 185.092 186.123 187.071 189.087 195.113 198.124 199.071 200.103 201.123 209.092 212.103 217.082 226.118 227.102 231.098 239.094 241.084 245.076 254.113 257.161 259.092 271.139 275.171 285.009 287.006 289.161 297.155 299.061 301.059 303.02 305.018 325.15 328.113 332.228 337.186 342.178 346.122 352.165 356.07 357.068 372.224 375.078 376.078 403.267 406.235 417.033 420.993 443.214 454.762 487.211 518.294 532.277 555.796 566.261 583.282 604.778 608.257 614.363 629.325 647.334 652.302 670.318 685.328 697.655 714.42 720.362 757.348 759.359 811.47 819.383 868.389 885.407 886.41 908.524 948.424 956.449 1005.45 1027.48 1134.5 1210.5 13 14 25 4 39 13 3 10 10 6 6 5 25 22 4 3 7 11 11 3 6 13 19 19 3 3 12 19 16 3 6 38 35 5 10 43 16 28 24 6 11 15 5 31 23 3 12 29 28 4 4 13 4 7 5 3 10 3 62 100 52 14 4 24 5 12 13 5 11 5 5 4 4 4 12 31 3 32 4 17 6 24 3 3 21 18 60 6 12 32 13 35 5 18 6 26 30 40 10 5 GRMZM2G174807_P01 Q41870 Aquaporin PIP1-1 (Plasma membrane intrinsic protein 1-1)(ZmPIP1-1)(ZmPIP1;1)(ZmPIP1a) seq=translation; coord=2:18133361..18135367:-1; parent_transcript=GRMZM2G174807_T01; parent_gene=GRMZM2G174807 GRMZM2G174807_P02 Q41870 Aquaporin PIP1-1 (Plasma membrane intrinsic protein 1-1)(ZmPIP1-1)(ZmPIP1;1)(ZmPIP1a) seq=translation; coord=2:18134011..18135367:-1; parent_transcript=GRMZM2G174807_T02; parent_gene=GRMZM2G174807 GRMZM2G174807_P03 Q41870 Aquaporin PIP1-1 (Plasma membrane intrinsic protein 1-1)(ZmPIP1-1)(ZmPIP1;1)(ZmPIP1a) seq=translation; coord=2:18133344..18135342:-1; parent_transcript=GRMZM2G174807_T03; parent_gene=GRMZM2G174807 7.8775 -0.384268 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 5579 5579 5579 5579 5486 5191 4915 3767 3300 2097 1293 763 310 129 70 8 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5592 5592 5592 5592 5499 5203 4906 3747 3048 1516 690 295 60 9 3 1 0 0 1 2 3 4 5 2866 2326 369 26 6 0 0 1 2 3 4 5 6 7 1136 3182 1062 185 21 1 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2830 (charge 2) 1301.63 2 152.056 155.081 157.096 158.092 159.076 167.055 167.081 169.097 171.076 171.112 172.072 173.092 173.128 175.119 180.113 181.062 181.097 183.15 185.092 186.087 186.123 191.084 193.097 197.128 198.087 198.124 199.071 199.107 201.123 208.108 212.102 215.139 219.08 226.155 227.103 233.384 239.094 241.08 244.165 254.15 258.108 262.14 264.863 269.16 272.165 292.13 294.18 297.121 299.065 301.15 306.047 309.119 314.132 322.175 327.13 355.07 359.028 363.185 377.166 379.198 397.17 402.157 462.232 478.216 520.204 533.268 535.232 550.3 610.836 619.307 622.305 628.323 642.315 646.265 663.29 707.853 717.352 734.336 749.384 765.313 792.402 805.369 848.402 869.411 892.485 906.418 916.451 945.431 963.437 1014.73 1022.48 1076.51 1137.5 44 17 9 8 26 25 9 9 21 10 6 22 25 41 19 6 45 8 6 7 7 7 6 7 17 6 9 34 10 89 18 10 7 72 41 5 25 40 24 33 16 76 5 6 8 8 9 5 6 8 6 54 5 11 19 11 100 11 26 9 7 7 47 8 5 9 57 10 7 7 21 19 40 30 10 6 8 34 9 6 8 49 41 7 6 10 7 11 32 6 22 11 9 GRMZM2G004878_P01 NP_001144569 hypothetical protein LOC100277576 seq=translation; coord=4:81250432..81251801:-1; parent_transcript=GRMZM2G004878_T01; parent_gene=GRMZM2G004878 MATEEVAKPS PIPPYPEMIL AAIEDLGDKS GSNKSAISRY IEGKYDGDLP PAHASLLAAH LARMKESGEL VFVKNNYFRA DAPDAPPKRG RGRPPKARDP GAPVSPPSGR GRGRPPKPKD PLDAAVKQAT AGMPRARGRP PKKAKTEGGA SPAPAGDGST PVKRGRGRPP KVRPVVPSET AAA 5.6224 -0.288328 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 11775 11775 11775 11637 11048 10289 9473 7608 6046 3627 2240 1117 506 278 121 64 36 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11778 11778 11778 11640 11048 10274 9350 7299 4944 2201 942 294 69 18 1 0 0 1 2 3 4 5 6 4616 4592 1829 608 115 19 0 0 1 2 3 4 5 6 7 2225 5715 2587 920 254 66 8 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2833 (charge 3) 1754.87 3 155.081 157.097 158.081 159.076 168.065 169.097 169.133 171.076 171.113 175.119 183.149 184.071 185.092 186.087 187.071 197.128 198.087 199.108 203.103 212.102 213.087 216.098 226.155 228.098 231.097 232.101 238.118 242.15 244.166 248.16 251.15 255.108 256.13 270.108 273.119 288.119 289.161 303.213 335.135 337.186 341.146 383.192 398.166 404.227 418.224 423.197 441.208 443.193 452.252 456.256 458.745 461.74 467.19 470.261 482.309 485.197 494.264 499.334 504.25 533.785 542.791 554.792 557.304 568.267 578.308 586.3 600.387 611.791 619.279 626.834 629.314 650.357 653.285 670.394 678.329 687.408 698.384 706.821 725.376 735.339 744.436 746.444 748.326 763.843 794.348 836.441 859.458 880.477 898.486 903.486 910.462 916.484 918.483 987.52 1066.56 1084.57 1086.58 1155.61 1252.68 1257.62 4 7 6 14 21 39 8 3 8 35 6 3 26 10 7 7 6 18 99 4 6 4 38 6 46 4 8 9 18 13 3 8 12 9 10 6 4 7 7 3 24 7 10 5 13 9 7 11 8 6 8 10 9 6 7 9 7 31 7 10 100 8 9 10 8 7 12 5 3 14 7 7 3 14 8 8 42 9 4 10 75 8 10 3 4 6 13 11 6 7 3 57 6 37 6 72 12 10 14 6 GRMZM2G162200_P01 Q9ZT00 Ribulose bisphosphate carboxylase/oxygenase activase, chloroplastic Precursor (RuBisCO activase)(RA) seq=translation; coord=4:693736..696087:1; parent_transcript=GRMZM2G162200_T01; parent_gene=GRMZM2G162200 MAAAFSSTVG APASTPTRSS FLGKKLNKPQ VSAAVTYHGK SSSSNSRFKA MAAKEVDETK QTDEDRWKGL AYDISDDQQD ITRGKGLVDN LFQAPMGDGT HVAVLSSYDY ISQGQKSYNF DNMMDGFYIA KGFMDKLVVH LSKNFMTLPN IKVPLILGIW GGKGQGKSFQ CELVFAKMGI TPIMMSAGEL ESGNAGEPAK LIRQRYREAS DLIKKGKMSC LFINDLDAGA GRMGGTTQYT VNNQMVNATL MNIADNPTNV QLPGMYNKED NPRVPIIVTG NDFSTLYAPL IRDGRMEKFY WAPTREDRIG VCKGIFRTDG VDEEHVVQLV DTFPGQSIDF FGALRARVYD DEVRRWVSET GVENIARKLV NSKEGPPTFE QPKITIEKLL EYGHMLVAEQ ENVKRVQLAD KYLNEAALGE ANEDAMKTGS FFK GRMZM2G162200_P02 Q9ZT00 Ribulose bisphosphate carboxylase/oxygenase activase, chloroplastic Precursor (RuBisCO activase)(RA) seq=translation; coord=4:693736..695531:1; parent_transcript=GRMZM2G162200_T02; parent_gene=GRMZM2G162200 MAAAFSSTVG APASTPTRSS FLGKKLNKPQ VSAAVTYHGK SSSSNSRFKA MAAKEVDETK QTDEDRWKGL AYDISDDQQD ITRGKGLVDN LFQAPMGDGT HVAVLSSYDY ISQGQKSYNF DNMMDGFYIA KGFMDKLVVH LSKNFMTLPN IKVPLILGIW GGKGQGKSFQ CELVFAKMGI TPIMMSAGEL ESGNAGEPAK LIRQRYREAS DLIKKGKMSC LFINDLDAGA GRMGGTTQYT VNNQMVNATL MNIADNPTNV QLPGMYNKED NPRVPIIVTG NDFSTLYAPL IRDGRMEKFY WAPTREDRIG VCKGIFRTDG VDEEHVVQLV DTFPGQSIDF FGALRARVYD DEVRRWVSET GVENIARKLV NSKEGPPTFE QPKITIEKLL EYGHMLVAEQ ENVKRVQLAD KYLNEAALGE ANEDAMKTGS FFK GRMZM2G162282_P01 NP_001168488 hypothetical protein LOC100382265 seq=translation; coord=4:691410..693139:1; parent_transcript=GRMZM2G162282_T01; parent_gene=GRMZM2G162282 MAAAAAFSST SVVAALAASG FLGKKLVTSI IIRNKKKGYD SLHGATTTIR VRAMAVNKET EQDRWRGLAL DTSDDQQDIT RGKGRVDPLF QAPMGDGTHV AVLSSYDYIS QGLRHYSLDN MMDGYYIAPA FMDKLVVHIA KNFMPLPNIK VPLILGIWGG KGQGKSFQCE LVLAKMGINP IVMSAGELES GNAGEPAKLI RQRYREAADM IKKGKMCVLF INDLDAGAGR MGGTTQYTVN NQMVNATLMN IADNPTNVQL PGMYNKEENP RVPIIVTGND FSTLYAPLIR DGRMDKFYWA PTREDRVGVC KGIFRSDGVP DEDVVRLVDA FPGQSIDFFG ALRARVYDDE VRRWVAETGV ENIARRLVNS KEGPPTFEQP RMTLDKLMEY GRMLVEEQEN VKRVQLADKY LSEAALGDAN DDDDLYGKAA QHVRVPVPEG CTDPKAGNFD PTARSDDGSC VYN 5.03821 -0.22392 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 6603 6603 6599 6288 6003 5540 4993 4656 4333 2918 2208 1543 703 373 249 171 80 59 37 18 13 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 6618 6618 6614 6303 6005 5512 4870 4464 4089 1902 992 281 1 0 0 1 2 3 4 5 6 2202 3368 918 122 18 3 0 0 1 2 3 4 5 6 7 1252 3215 1539 459 108 35 4 19 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2839 (charge 2) 1051.52 2 152.057 155.081 157.108 158.092 159.076 159.113 166.061 169.097 169.134 171.076 171.113 171.149 173.056 175.119 176.123 183.113 184.071 186.123 187.072 191.084 195.076 197.128 199.107 199.144 201.087 204.134 205.137 212.103 215.647 219.079 226.155 227.102 230.114 232.14 235.144 237.134 239.089 241.639 245.076 249.637 251.102 254.16 258.108 263.138 266.126 271.163 274.187 280.169 281.171 297.166 303.174 309.203 314.674 329.171 331.219 337.682 360.103 363.2 370.255 385.217 395.196 403.229 413.261 430.289 459.172 468.213 476.727 482.309 492.241 498.268 518.255 519.259 523.167 527.265 542.304 559.331 569.305 579.275 615.263 628.342 633.284 657.332 666.305 674.357 725.394 729.351 747.361 755.336 772.355 773.361 778.334 789.381 796.353 877.402 892.418 895.414 896.418 918.402 935.423 952.447 7 5 7 9 4 3 3 8 3 3 3 8 3 100 5 4 2 6 6 6 1 3 5 4 7 16 3 3 22 3 12 6 5 5 65 3 6 6 6 3 6 3 14 12 2 10 7 54 3 3 6 30 7 5 3 66 8 13 3 3 14 5 10 7 3 3 35 3 4 5 8 3 2 17 8 4 8 3 5 12 8 13 2 6 17 7 4 3 23 9 4 7 3 3 5 10 4 2 13 2 GRMZM2G077054_P01 seq=translation; coord=8:151204529..151215672:-1; parent_transcript=GRMZM2G077054_T01; parent_gene=GRMZM2G077054 MADSEACCSA MSTAQGTALK SAPIGAGHRA RRGRPVVPPY RSGWQAYGGV SLEGSGFLGG LQRTEERVAT LAPRAAARDA EVVRPLSKLP NSSIGLYDPS FERDACGVGF VAELSGDYKR ETVNDAIEML ERMAHRGACG CEKNTGDGAG IMVALPHDFF KEVTKDAGFE LPPPGDYAVG MFFMPTDEKR REKGKAEFKK VAESLGHVIL GWRPVPTDNS DLGESALETE PVIEQVFVTK SSRSEAEFEQ QLYILRRLSI ISVRASLNIK RGGERDFYMC SLSSRTIVYK GQLKPCQLKG YYYADLGQEN FMSYMALVHS RFSTNTFPSW DRAQPMRVLG HNGEINTLRG NKNWMTAREG LLEAEKLGLS KEQLARILPI VDATSSDSGA FDNVLELLVR GGRSLLEAVM MMIPEAWQND GNMDPEKKAL YEFLSALMEP WDGPALISFT DGRYLGATLD RNGLRPGRFY VTHSGRVIMG SEVGVVDVPP EDVLRKGRLN PGMMLLVDFE NHTVVDDEAL KAQYSKAHPY GEWLKRQKIY LKDIVESVPE TDRVAPSISS SLPAKNENKD HVGINGILTP LKAFGYTVEA LDMLLLPMAK DGVEALGSMG NDTPLAVMSN REKLTFEYFK QMFAQVTNPP IDPIREKIVT SMECMIGPEG DLLETTEKQC NRLSLKGPLV SIDEMEAIKK MNYRGWRSKV LDITYPKKSG RKGLEETLNR MCAEAREAIR EGYTILVLSD RGFSSDRVAA SSLLAVGAVH QHLVANLERT RIGLLVESAE PREVHHFCTL LGFGADAICP YLAIEAIWCL QNDGKIPPNG DGQPNSKEEL VKKYFYASNY GMMKVLAKMG ISTLASYKGA QIFEALGLSS EVIGKCFEGT PSRIEGATFE MLARDALRLH ELAFPSRTPP AGSADAKALP NPGDYHWRKN GEVHLNDPLA MGKLQEAARV NSRAAYKEYS KRIQELNKAC NLRGMLKFKD ISDKISLDDV EPASEIVKRF CTGAMSYGSI SLEAHTALAI AMNKLGGKSN TGEGGEQPSR MEPLPDGSMN PRRSAIKQVA SGRFGVSSYY LTNADELQIK MAQGAKPGEG GELPGHKVIG DIAVTRHSTA GVGLISPPPH HDIYSIEDLA QLIHDLKNSN PGARISVKLV SEAGVGVVAS GVVKGHADHV LISGHDGGTG ASRWTGIKNA GLPWELGLAE THQTLVANGL RGRAVLQTDG QLKTGRDVAV ACLLGAEEFG FSTAPLITLG CIMMRKCHMN TCPVGIATQD PVLREKFAGE PEHVINFFFM LAEELREIMA NLGFRTITEM VGRSDMLEVD PEVVKTNEKL ENIDLSLILK PASEIRPGVA QYCVEKQDHG LDMALDNKLI DLSRTAIEKQ VRVFIETPIQ NTNRAVGTML SHEVTKRYHI NGLPAGTIHV KFTGSAGQSF GAFLCPGVTL ELEGDSNDYL GKGLSGGKIV VYPPRNSSFS PEDNIVIGNV ALYGATMGEA YFNGMAAERF CVRNSGAQAV VEGIGDHGCE YMTGGTVVIL GKTGRNFAAG MSGGIAYVYD VDGKFSARCN NELVDLYHVE EEDDIITLKM MIEQHRRNTE SVLARDILSD FDNLLPKFVK VYPRDYKRVL ENMKLEKSVA NHAKEPKMVN GISVTTKKVQ PDQSASRPTR VANAKKYRGF ITYERESISY RDPKERVKDW KEVAIESTPG PLLNTQSARC MDCGTPFCHQ ESSGAGCPLG NKIPEFNELV HQNRWREALD RLLETNNFPE FTGRVCPAPC EGSCVLGIIE NPVSIKSIEC AIIDKGFEEG WMIPRPPLQR TGRKVAIVGS GPAGLAAADQ LNKMGHFVTV FERADRIGGL MMYGVPNMKT DKIGIVQRRV NLMAEEGVTF VVNANVGSDP LYSIERLRSE NDAVILACGA TKPRDLTIPG RELSGVHFAM EFLHANTKSL LDSNLEDGKY ISARGKKVVV IGGGDTGTDC IGTSIRHGCT SLVNLELLTK PPSNRAADNP WPQWPRIFRV DYGHQEAATK FGKDPRTYEV LTKRFIGDEN GKVKALELVR VKWEKVDGRF QLKEIQGSEE IIEADLVLLA MGFLGPEASI AEKLGLEKDN RSNFKAQFGD FATSVDGVFA AGDCRRGQSL VVWAITEGRQ AAAAVDKYIS RHDQNVAGDI TPFGAGLVQP VGA GRMZM2G085078_P01 seq=translation; coord=3:208332821..208344531:1; parent_transcript=GRMZM2G085078_T01; parent_gene=GRMZM2G085078 MTGCEACCSA MSTAQGTALR SAPLGAGRWA RRGRPVAAPY RSGWQAYGGV SLEGSGFLGR VHRTEERVAP RAPHAAARDA EVVRPLSKLP NSSIGLYDSS FERDACGVGF VAELSGDYKR ETVNDAIEML ERMAHRGACG CEKNTGDGAG IMVALPHDFF KEVAKDAGFE LPPPGEYAVG MFFMPTDEKR REKGKAEFMK VAESLGHVIL GWRLVPTDNS DLGESALETE PVIEQVFVTK SSRSEAEFEQ QLYILRRLSI ISVRASLNIK RGGERDFYMC SLSSRTIVYK GQLKPSQLKG YYYADLGHEN FMSYMALVHS RFSTNTFPSW DRAQPMRVLG HNGEINTLRG NKNWMTAREG LLEAEKLGLS KEQLSRILPI VDATSSDSGA FDNVLELLVR GGRSLPEAVM MMIPEAWQND VNMDPEKKAL YEFLSALMEP WDGPALISFT DGRYLGATLD RNGLRPGRFY VTHSGRVIMG SEVGVVDVPP EDVLRKGRLN PGMMLLVDFE NHTVVDDEAL KAQYSKAHPY GEWLKRQKIY LKDIVESVPE TDRVAPSISS SLSQKNENID HVGISGILTQ LKAFGYTVEA LEMLLLPMAK DGVEALGSMG NDTPLAVMSN REKLTFEYFK QMFAQVTNPP IDPIREKIVT SMECMIGPEG DLLETTEKQC NRLALKGPLV SIDEMEAIKK MNYRGWRSKV LDITYPKKSG RKGLEETLNR ICAEARKAIR EGYTILVLSD RGFSSDRVAA SSLLAVGAVH QHLVANLERT RIGLLVESAE PREVHHFCTL VGFGADAICP YLAIEAIWCL QNDGKITPNG DGQPYSKEEL VAKYFYASNY GMMKVLAKMG ISTLASYKGA QIFEALGLSS EVVGKCFEGT PSRIEGATFE MLARDALRLH ELAFPSRALP AGSADAKALP NPGDYHWRKN GEIHLNDPLA MGKLQEAARV NSRAAYKEYS KRIQELNKAC NLRGMLKFKH VSDKISLDEV EPASEIVKRF CTGAMSYGSI SLEAHTALAI AMNKLGGKSN TGEGGEQPSR MEPLPDGSMN PRRSAIKQVA SGRFGVSSYY LTNADELQIK MAQGAKPGEG GELPGHKVIG DIAVTRHSTA GVGLISPPPH HDIYSIEDLA QLIHDLKNSN PGARISVKLV SEAGVGVVAS GVVKGHADHV LISGHDGGTG ASRWTGIKNA GLPWELGLAE THQTLVANGL RGRAVLQTDG QLKTGRDVAV ACLLGAEEFG FSTAPLITLG CIMMRKCHMN TCPVGIATQD PVLREKFAGE PEHVINFFFM LAEELREIMA NLGFRTITEM VGRSDMLEVD PEVVKSNEKL ENIDLSLILK PASEIRPGVA QYCVEKQDHG LDMALDNKLI DLSRTAIEKQ VRVFIETPIQ NTNRAVGTML SHQVTKRYHM NGLPAGTIHV KFTGSAGQSF GAFLCPGITL ELEGDSNDYV GKGLSGGKIV VYPPRNSSFS PEDNIVIGNV ALYGATMGEA YFNGMAAERF CVRNSGAQAV VEGIGDHGCE YMTGGTVVIL GKTGRNFAAG MSGGIAYVYD VDGKFSARCN NELVDLYHVE EEDDIITLKM MIEQHRRNTE SVLARDILSD FDNLLPKFVK VYPRDYKRVL ESMKVEKAVA KHAKEPKMAN GISVTTKLSL TTCINFHVQK VQPDQSASRP THVANAKKYR GFITYERESI SYRDPKERVR DWKEVAIEST PGPLLNTQSA RCMDCGTPFC HQESSGAGCP LGNKIPEFNE LVHQNRWREA LDRLLETNNF PEFTGRVCPA PCEGSCVLGI IENPVSIKSI ECAIIDKGFE EGWMIPRPPL QRTGRKVAIV GSGPSGLAAA DQLNKMGHFV TVFERADRIG GLMMYGVPNM KTDKIGVVQR RVNLMAEEGV TFVVNANVGS DPLYSIERLR SENDAVILAC GATKPRDLTI PGRELSGVHF AMEFLHANTK SLLDSNLEDG KYISARGKKV VVIGGGDTGT DCIGTSIRHG CTSLVNLELL SKPPSTRAAD NPWPQWPRIF RVDYGHQEAA TKFGKDPRTY GVLTKRFIGD GNGKVKALEV VRVKWEKVDG RFQLKEMEGS EEIIEADLVL LAMGFLGPEA TIAEKLGLEK DNRSNFKAQF GDFATSVDGV FAAGDCRRGQ SLVVWAITEG RQAAAAVDKY LSRYDQNAAA TGDSTPSGTG LVQPVAA GRMZM2G085078_P02 seq=translation; coord=3:208332821..208344526:1; parent_transcript=GRMZM2G085078_T02; parent_gene=GRMZM2G085078 MTGCEACCSA MSTAQGTALR SAPLGAGRWA RRGRPVAAPY RSGWQAYGGV SLEGSGFLGR VHRTEERVAP RAPHAAARDA EVVRPLSKLP NSSIGLYDSS FERDACGVGF VAELSGDYKR ETVNDAIEML ERMAHRGACG CEKNTGDGAG IMVALPHDFF KEVAKDAGFE LPPPGEYAVG MFFMPTDEKR REKGKAEFMK VAESLGHVIL GWRLVPTDNS DLGESALETE PVIEQVFVTK SSRSEAEFEQ QLYILRRLSI ISVRASLNIK RGGERDFYMC SLSSRTIVYK GQLKPSQLKG YYYADLGHEN FMSYMALVHS RFSTNTFPSW DRAQPMRVLG HNGEINTLRG NKNWMTAREG LLEAEKLGLS KEQLSRILPI VDATSSDSGA FDNVLELLVR GGRSLPEAVM MMIPEAWQND VNMDPEKKAL YEFLSALMEP WDGPALISFT DGRYLGATLD RNGLRPGRFY VTHSGRVIMG SEVGVVDVPP EDVLRKGRLN PGMMLLVDFE NHTVVDDEAL KAQYSKAHPY GEWLKRQKIY LKDIVESVPE TDRVAPSISS SLSQKNENID HVGISGILTQ LKAFGYTVEA LEMLLLPMAK DGVEALGSMG NDTPLAVMSN REKLTFEYFK QMFAQVTNPP IDPIREKIVT SMECMIGPEG DLLETTEKQC NRLALKGPLV SIDEMEAIKK MNYRGWRSKV LDITYPKKSG RKGLEETLNR ICAEARKAIR EGYTILVLSD RGFSSDRVAA SSLLAVGAVH QHLVANLERT RIGLLVESAE PREVHHFCTL VGFGADAICP YLAIEAIWCL QNDGKITPNG DGQPYSKEEL VAKYFYASNY GMMKVLAKMG ISTLASYKGA QIFEALGLSS EVVGKCFEGT PSRIEGATFE MLARDALRLH ELAFPSRALP AGSADAKALP NPGDYHWRKN GEIHLNDPLA MGKLQEAARV NSRAAYKEYS KRIQELNKAC NLRGMLKFKH VSDKISLDEV EPASEIVKRF CTGAMSYGSI SLEAHTALAI AMNKLGGKSN TGEGGEQPSR MEPLPDGSMN PRRSAIKQVA SGRFGVSSYY LTNADELQIK MAQGAKPGEG GELPGHKVIG DIAVTRHSTA GVGLISPPPH HDIYSIEDLA QLIHDLKNSN PGARISVKLV SEAGVGVVAS GVVKGHADHV LISGHDGGTG ASRWTGIKNA GLPWELGLAE THQTLVANGL RGRAVLQTDG QLKTGRDVAV ACLLGAEEFG FSTAPLITLG CIMMRKCHMN TCPVGIATQD PVLREKFAGE PEHVINFFFM LAEELREIMA NLGFRTITEM VGRSDMLEVD PEVVKSNEKL ENIDLSLILK PASEIRPGVA QYCVEKQDHG LDMALDNKLI DLSRTAIEKQ VRVFIETPIQ NTNRAVGTML SHQVTKRYHM NGLPAGTIHV KFTGSAGQSF GAFLCPGITL ELEGDSNDYV GKGLSGGKIV VYPPRNSSFS PEDNIVIGNV ALYGATMGEA YFNGMAAERF CVRNSGAQAV VEGIGDHGCE YMTGGTVVIL GKTGRNFAAG MSGGIAYVYD VDGKFSARCN NELVDLYHVE EEDDIITLKM MIEQHRRNTE SVLARDILSD FDNLLPKFVK VYPRDYKRVL ESMKVEKAVA KHAKEPKMAN GISVTTKKVQ PDQSASRPTH VANAKKYRGF ITYERESISY RDPKERVRDW KEVAIESTPG PLLNTQSARC MDCGTPFCHQ ESSGAGCPLG NKIPEFNELV HQNRWREALD RLLETNNFPE FTGRVCPAPC EGSCVLGIIE NPVSIKSIEC AIIDKGFEEG WMIPRPPLQR TGRKVAIVGS GPSGLAAADQ LNKMGHFVTV FERADRIGGL MMYGVPNMKT DKIGVVQRRV NLMAEEGVTF VVNANVGSDP LYSIERLRSE NDAVILACGA TKPRDLTIPG RELSGVHFAM EFLHANTKSL LDSNLEDGKY ISARGKKVVV IGGGDTGTDC IGTSIRHGCT SLVNLELLSK PPSTRAADNP WPQWPRIFRV DYGHQEAATK FGKDPRTYGV LTKRFIGDGN GKVKALEVVR VKWEKVDGRF QLKEMEGSEE IIEADLVLLA MGFLGPEATI AEKLGLEKDN RSNFKAQFGD FATSVDGVFA AGDCRRGQSL VVWAITEGRQ AAAAVDKYLS RYDQNAAATG DSTPSGTGLV QPVAA 5.95035 -0.290261 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 10908 10908 10908 10415 10057 9302 8541 6587 4914 2843 1809 992 434 225 109 53 27 14 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10913 10913 10913 10420 10047 9243 8340 5995 3855 1554 515 141 27 14 1 0 0 1 2 3 4 5 6 7 3945 4242 1858 595 207 53 7 7 0 1 2 3 4 5 6 7 2057 5153 2606 748 299 37 8 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2840 (charge 3) 1843.88 3 150.066 155.081 156.076 157.097 158.093 159.076 167.093 172.107 175.119 178.061 185.092 185.165 187.144 195.088 196.09 199.108 201.124 204.135 209.139 213.16 215.139 226.154 233.165 237.134 241.092 242.114 244.164 248.114 253.092 255.148 259.609 264.109 266.124 306.118 309.142 310.11 315.165 324.129 341.155 346.113 352.161 357.067 365.683 381.151 390.209 395.203 397.147 412.182 423.198 429.197 435.043 440.18 452.25 455.174 458.207 465.243 478.219 483.175 490.21 501.223 518.208 532.26 536.279 544.279 548.278 557.766 560.264 582.242 587.292 589.282 605.299 610.315 617.278 652.331 666.281 673.336 679.32 687.841 702.375 717.344 720.326 730.368 738.368 822.353 826.395 830.394 840.358 844.44 857.387 914.408 930.475 965.413 983.432 996.474 1001.44 1003.45 1066.42 1114.52 1129.61 1227.61 10 3 3 6 4 6 31 3 28 31 11 3 29 89 6 11 3 4 10 3 5 32 23 5 3 3 12 4 29 3 6 3 17 11 13 3 3 34 4 5 13 4 10 14 4 5 6 3 16 22 3 3 4 4 3 5 3 4 10 12 25 3 14 3 11 9 5 4 4 13 100 3 27 3 9 16 3 5 4 4 59 17 13 3 4 9 3 6 6 17 4 3 4 4 43 8 6 18 4 21 GRMZM5G868664_P01 NP_001151884 snRK1-interacting protein 1 seq=translation; coord=7:138554824..138557837:1; parent_transcript=GRMZM5G868664_T01; parent_gene=GRMZM5G868664 MEAAAATALP FAAAVPTAWR VRASPRTRRR SVAAKLERGL GKGVPTTNYV VPLDKATGMT RPLVEILRDL NKRVPDKIID PDTNTVNWYH ANRMLSFYAP GWCGEVRDVI YSENGTVTVV YRVILKGTDG EAYRDATGTA QLHEGRREDA VAAAEEAAFC KACARFGFGL YLYHQDDSHY DDHFH 5.92548 -0.303871 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 5914 5914 5829 5521 5284 4807 4228 3369 2589 1568 906 364 192 103 43 28 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5917 5917 5832 5524 5277 4759 4120 3061 1866 737 267 38 2 1 0 0 1 2 3 4 5 6 7 1978 2572 1079 236 35 16 8 0 0 1 2 3 4 5 6 7 1041 2625 1396 644 167 40 6 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2841 (charge 3) 1255.6 3 155.081 155.092 157.097 157.109 157.134 158.092 159.076 159.112 160.08 166.061 167.081 167.093 169.061 169.097 169.134 171.076 171.113 173.092 173.129 175.119 176.122 183.076 183.113 183.149 184.108 185.092 187.071 187.108 188.075 194.094 195.088 197.129 198.087 199.071 200.103 201.123 203.048 207.149 212.102 214.118 216.098 220.108 224.103 226.154 229.129 232.14 237.134 239.114 242.113 244.165 249.624 251.15 255.145 260.125 262.05 267.107 270.108 272.171 277.159 284.121 292.166 301.15 302.681 306.166 311.688 315.672 322.185 323.138 338.115 340.162 343.172 352.197 358.172 361.184 366.189 369.226 377.192 388.194 394.183 405.714 436.226 456.251 467.297 476.742 493.249 498.241 500.247 516.254 533.282 535.293 553.31 564.281 611.326 613.319 621.315 624.344 630.336 722.363 739.385 810.418 6 2 5 2 3 9 100 9 6 5 5 3 3 3 3 6 3 9 5 31 3 3 4 2 4 12 22 4 2 2 3 3 3 2 13 4 3 3 11 3 3 2 8 6 2 26 4 4 11 10 11 7 4 6 4 6 4 4 5 5 3 3 6 4 4 6 3 3 5 3 4 4 2 23 2 5 2 5 3 8 4 8 4 2 3 35 3 3 20 4 19 4 25 3 4 4 12 5 11 10 GRMZM2G128491_P01 NP_001143558 hypothetical protein LOC100276254 seq=translation; coord=9:120079591..120082284:1; parent_transcript=GRMZM2G128491_T01; parent_gene=GRMZM2G128491 MERAAPVRSS HTSTAGLLAW PHPDGAGSLP ARRPNQPTEE FRNVVFGGQL TEGADGLNKT KRKTGSSPKG KETTGTGISK AESAVATASR DRQASQITFS QDGTVPTRKA TSVAGVARQR ELSHTVESEG DSKMKRQVSS TKSKELSGHD IFADHEDPKP NRSRRSDYGS SAAQSPVKNA NVSSFSFGEA DIDSTVKTAK KKGSSNLSTD LNGKTMPKKD SASAEKQPPN RARPKGMSGS SNFADGKAST STTGDHEGRR TRQPPGGDSS ILLG 6.56438 -0.397841 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 3030 3030 3030 3030 2972 2745 2523 1413 1119 461 231 75 27 6 4 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2982 2982 2982 2982 2924 2697 2460 1264 908 278 43 1 0 0 1 0 0 1 2 3 4 2397 596 31 10 0 0 1 2 3 4 5 6 7 368 2241 402 19 1 0 3 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2843 (charge 2) 1417.65 2 155.081 157.696 167.094 173.092 175.118 181.06 185.092 197.103 199.071 199.109 215.139 225.098 234.145 239.114 254.021 326.145 406.19 421.219 439.233 449.211 467.22 475.224 538.224 541.645 550.256 565.953 579.262 608.638 622.268 631.327 751.305 850.381 951.422 1188.85 1405.78 10 6 7 11 29 7 10 10 6 13 34 38 100 12 7 9 9 15 7 10 8 7 7 12 11 7 8 10 16 9 14 15 41 9 9 GRMZM2G102760_P01 NP_001105975 lipoxygenase seq=translation; coord=5:12274159..12279067:-1; parent_transcript=GRMZM2G102760_T01; parent_gene=GRMZM2G102760 GRMZM2G102760_P03 NP_001105975 lipoxygenase seq=translation; coord=5:12275542..12279067:-1; parent_transcript=GRMZM2G102760_T03; parent_gene=GRMZM2G102760 4.07741 -0.247116 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1255 1255 1252 1098 1067 931 583 425 233 150 68 33 21 14 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 1256 1256 1253 1099 1059 927 551 357 164 52 16 1 0 0 1 2 3 4 792 413 50 5 0 0 1 2 3 4 5 6 7 267 760 191 25 12 1 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2844 (charge 2) 1499.62 2 154.811 155.081 157.097 159.076 163.458 171.076 173.055 175.119 185.055 185.092 190.568 195.075 198.123 199.108 201.123 212.102 220.443 222.087 226.118 230.077 233.128 240.097 241.101 257.124 267.108 275.171 288.082 290.145 303.177 337.186 351.129 354.213 368.156 369.161 372.224 374.228 380.19 385.181 427.204 462.161 467.228 472.713 479.189 481.236 487.251 492.713 496.217 497.211 501.226 521.26 549.75 556.247 573.196 595.278 600.334 607.249 613.301 624.279 650.276 684.303 711.374 728.386 751.354 840.424 880.395 924.376 944.421 968.484 984.491 993.474 1001.44 1098.49 1108.52 2 10 2 5 2 3 11 21 3 3 2 3 5 3 9 9 2 5 43 4 4 53 5 35 4 4 3 3 4 17 16 4 33 4 100 4 2 17 11 4 3 9 8 2 5 3 12 3 4 3 16 9 2 3 4 3 3 10 3 3 3 3 4 3 2 3 21 3 3 3 18 12 12 GRMZM2G126190_P01 NP_001150248 LOC100283878 seq=translation; coord=4:214239084..214241779:1; parent_transcript=GRMZM2G126190_T01; parent_gene=GRMZM2G126190 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTTAEREI VRDIKEKLAY VALDYDQELE NAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KAEYDESGPA IVHRKCF GRMZM2G126190_P02 NP_001150248 LOC100283878 seq=translation; coord=4:214239217..214241699:1; parent_transcript=GRMZM2G126190_T02; parent_gene=GRMZM2G126190 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTTAEREI VRDIKEKLAY VALDYDQELE NAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KAEYDESGPA IVHRKCF GRMZM2G126190_P03 NP_001150248 LOC100283878 seq=translation; coord=4:214239219..214241500:1; parent_transcript=GRMZM2G126190_T03; parent_gene=GRMZM2G126190 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTTAEREI VRDIKEKLAY VALDYDQELE NAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KAEYDESGPA IVHRKCF GRMZM2G152328_P01 NP_001150462 LOC100284092 seq=translation; coord=5:10223674..10226373:-1; parent_transcript=GRMZM2G152328_T01; parent_gene=GRMZM2G152328 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN TPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDY LMKILTERGY SFTTTAEREI VRDMKEKLAY IALDYDQEME TAKTSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIA KAEYDESGPS IVHRKCF GRMZM2G152328_P02 NP_001150462 LOC100284092 seq=translation; coord=5:10224230..10226373:-1; parent_transcript=GRMZM2G152328_T02; parent_gene=GRMZM2G152328 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN TPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDY LMKILTERGY SFTTTAEREI VRDMKEKLAY IALDYDQEME TAKTSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIA KAEYDESGPS IVHRKCF GRMZM2G047055_P01 NP_001150462 LOC100284092 seq=translation; coord=1:269035042..269037767:1; parent_transcript=GRMZM2G047055_T01; parent_gene=GRMZM2G047055 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN TPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDY LMKILTERGY SFTTTAEREI VRDMKEKLAY IALDYDQEME TAKTSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIA KAEYDESGPS IVHRKCF GRMZM2G047055_P03 NP_001150462 LOC100284092 seq=translation; coord=1:269035096..269037632:1; parent_transcript=GRMZM2G047055_T03; parent_gene=GRMZM2G047055 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN TPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDY LMKILTERGY SFTTTAEREI VRDMKEKLAY IALDYDQEME TAKTSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIA KAEYDESGPS IVHRKCF GRMZM2G047055_P02 NP_001150462 LOC100284092 seq=translation; coord=1:269035042..269037447:1; parent_transcript=GRMZM2G047055_T02; parent_gene=GRMZM2G047055 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN TPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDY LMKILTERGY SFTTTAEREI VRDMKEKLAY IALDYDQEME TAKTSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQVNKR SSGQKIKKTH SDFPKSDLYL LTILLPSADV DCQG GRMZM2G067985_P04 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521573..134531903:1; parent_transcript=GRMZM2G067985_T04; parent_gene=GRMZM2G067985 MASIWPDPWC GVVWVEIHLQ GHGSASHESG SALLRAGEMV HGQQHRCIST SVEMADGEDI QPLVCDNGTG MVKAGFAGDD APRAVFPSIV GRPRHTGVMV GMGQKDAYVG DEAQSKRGIL TLKYPIEHGI VSNWDDMEKI WHHTFYNELR VAPEEHPVLL TEAPLNPKAN REKMTQIMFE TFNVPAMYVA IQAVLSLYAS GRTTGIVLDS GDGVSHTVPI YEGYALPHAI LRLDLAGRDL TDSLMKILTE RGYSFTTSAE REIVRDIKEK LAYIALDYEQ ELETAKNSSS VEKSYELPDG QVITIGAERF RCPEVLFQPS MIGMEAAGIH ETTYNSIMKC DVDIRKDLYG NIVLSGGSTM FPGIADRMSK EITSLAPSSM KIKVVAPPER KYSVWIGGSI LASLSTFQQM WISKEEYDES GPAIVHRKCF GRMZM2G067985_P05 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521573..134523825:1; parent_transcript=GRMZM2G067985_T05; parent_gene=GRMZM2G067985 MASIWPDPWC GVVWVEIHLQ GHGSASHESG SALLRAGEMV HGQQHRCIST SVEMADGEDI QPLVCDNGTG MVKAGFAGDD APRAVFPSIV GRPRHTGVMV GMGQKDAYVG DEAQSKRGIL TLKYPIEHGI VSNWDDMEKI WHHTFYNELR VAPEEHPVLL TEAPLNPKAN REKMTQIMFE TFNVPAMYVA IQAVLSLYAS GRTTGIVLDS GDGVSHTVPI YEGYALPHAI LRLDLAGRDL TDSLMKILTE RGYSFTTSAE REIVRDIKEK LAYIALDYEQ ELETAKNSSS VEKSYELPDG QVITIGAERF RCPEVLFQPS MIGMEAAGIH ETTYNSIMKC DVDIRKDLYG NIVLSGGSTM FPGIADRMSK EITSLAPSSM KIKVVAPPER KYSVWIGGSI LASLSTFQQM WISKEEYDES GPAIVHRKCF GRMZM2G067985_P06 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521637..134531903:1; parent_transcript=GRMZM2G067985_T06; parent_gene=GRMZM2G067985 MASIWPDPWC GVVWVEIHLQ GHGSASHESG SALLRAGEMV HGQQHRCIST SVEMADGEDI QPLVCDNGTG MVKAGFAGDD APRAVFPSIV GRPRHTGVMV GMGQKDAYVG DEAQSKRGIL TLKYPIEHGI VSNWDDMEKI WHHTFYNELR VAPEEHPVLL TEAPLNPKAN REKMTQIMFE TFNVPAMYVA IQAVLSLYAS GRTTGIVLDS GDGVSHTVPI YEGYALPHAI LRLDLAGRDL TDSLMKILTE RGYSFTTSAE REIVRDIKEK LAYIALDYEQ ELETAKNSSS VEKSYELPDG QVITIGAERF RCPEVLFQPS MIGMEAAGIH ETTYNSIMKC DVDIRKDLYG NIVLSGGSTM FPGIADRMSK EITSLAPSSM KIKVVAPPER KYSVWIGGSI LASLSTFQQM WISKEEYDES GPAIVHRKCF GRMZM2G067985_P09 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134526764..134531903:1; parent_transcript=GRMZM2G067985_T09; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G067985_P10 seq=translation; coord=8:134529140..134532339:1; parent_transcript=GRMZM2G067985_T10; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G067985_P12 seq=translation; coord=8:134529314..134532338:1; parent_transcript=GRMZM2G067985_T12; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G067985_P15 seq=translation; coord=8:134529353..134532428:1; parent_transcript=GRMZM2G067985_T15; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G104017_P02 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187787..41190730:-1; parent_transcript=GRMZM2G104017_T02; parent_gene=GRMZM2G104017 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G104017_P03 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187649..41190517:-1; parent_transcript=GRMZM2G104017_T03; parent_gene=GRMZM2G104017 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G104017_P04 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187649..41190516:-1; parent_transcript=GRMZM2G104017_T04; parent_gene=GRMZM2G104017 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G110378_P01 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236360..41239234:-1; parent_transcript=GRMZM2G110378_T01; parent_gene=GRMZM2G110378 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G110378_P02 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236434..41239320:-1; parent_transcript=GRMZM2G110378_T02; parent_gene=GRMZM2G110378 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G110378_P04 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236494..41239316:-1; parent_transcript=GRMZM2G110378_T04; parent_gene=GRMZM2G110378 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G110378_P05 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236752..41239103:-1; parent_transcript=GRMZM2G110378_T05; parent_gene=GRMZM2G110378 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KEEYDESGPA IVHRKCF GRMZM2G006765_P02 NP_001159156 hypothetical protein LOC100304239 seq=translation; coord=2:140057140..140059599:1; parent_transcript=GRMZM2G006765_T02; parent_gene=GRMZM2G006765 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVNN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY VALEYDQELE NAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KAEYDESGPG IVHRKCF GRMZM2G067985_P11 seq=translation; coord=8:134529314..134532428:1; parent_transcript=GRMZM2G067985_T11; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQVCIF YICFSCSTSF LLTLLSPK GRMZM2G067985_P13 seq=translation; coord=8:134529314..134532337:1; parent_transcript=GRMZM2G067985_T13; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQVCIF YICFSCSTSF LLTLLSPK GRMZM2G104017_P01 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187750..41190730:-1; parent_transcript=GRMZM2G104017_T01; parent_gene=GRMZM2G104017 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQVCGC LYLLSAAALH LF GRMZM2G110378_P03 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236442..41239320:-1; parent_transcript=GRMZM2G110378_T03; parent_gene=GRMZM2G110378 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTSAEREI VRDIKEKLAY IALDYEQELE TAKNSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAAGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT SLAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQVWVV YIAFSCCT GRMZM2G030169_P01 NP_001146931 actin-2 seq=translation; coord=5:23016144..23019861:1; parent_transcript=GRMZM2G030169_T01; parent_gene=GRMZM2G030169 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFS VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTTAEREI VRDIKEKLAY VALDYEQELE TAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS RAEYEESGPA IVHRKCF GRMZM2G030169_P02 NP_001146931 actin-2 seq=translation; coord=5:23016216..23019859:1; parent_transcript=GRMZM2G030169_T02; parent_gene=GRMZM2G030169 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFS VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTTAEREI VRDIKEKLAY VALDYEQELE TAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS RAEYEESGPA IVHRKCF GRMZM2G030169_P03 NP_001146931 actin-2 seq=translation; coord=5:23017613..23019859:1; parent_transcript=GRMZM2G030169_T03; parent_gene=GRMZM2G030169 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFS VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTTAEREI VRDIKEKLAY VALDYEQELE TAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSMIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS RAEYEESGPA IVHRKCF GRMZM2G082484_P01 NP_001167929 hypothetical protein LOC100381643 seq=translation; coord=1:224444114..224447387:-1; parent_transcript=GRMZM2G082484_T01; parent_gene=GRMZM2G082484 MADSEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFS VPAMYVAIQA VLSLYASGRT TGIVLDSGDG VSHTVPIYEG YALPHAILRL DLAGRDLTDS LMKILTERGY SFTTTAEREI VRDIKEKLAY VALDYEQELE TAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLFQPSFIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGSTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS RAEYEESGPA IVHRKCF GRMZM2G053299_P01 NP_001141313 hypothetical protein LOC100273404 seq=translation; coord=1:296022541..296026398:-1; parent_transcript=GRMZM2G053299_T01; parent_gene=GRMZM2G053299 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVNN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN APAMYVAIQA VLSLYASGRT TGIVLDSGDG VTHTVPIYEG YALPHAILRL DLAGRDLTDC LMKILTERGY SFTTTAEREI VRDIKEKLAF VALDYEQELE TAKSSSSVEK SYELPDGQVI TIGAERFRCP EVLLQPSLIG MEAPGIHETT YNSIMKCDVD IRKDLYGNIV LSGGTTMFPG IADRMSKEIT ALAPSSMKIK VVAPPERKYS VWIGGSILAS LSTFQQMWIS KDEYDESGPA IVHRKCF GRMZM2G469900_P01 seq=translation; coord=7:45858534..45867604:1; parent_transcript=GRMZM2G469900_T01; parent_gene=GRMZM2G469900 MEFVPRRGSS SRASPRAASR RTPRAGTSSS SSPPSASATP TASSTATSSP RISSLTSAAT SRSPTSALSA ANKFTEATLP ADAEKKPQDG KTLPKYGAMI MEALLELNEP NGSDIAAIFG FIEVSDFGLS AVADKFHPDA LLHTFCGTPS YVAPKVSSRS LKKAIGFKTH SRRPASSSGP TKRGGLLLGR YELGRLLAHG TFAKVYHARH DDDTGETIAI KVLDKEKALC NGLVLHIKRE IAILRRVRRP NIIRLFEVMA TRSKIYFAME FVRGGELFAC VAKGRLKEDT ARRYGAMIME ALLELNEPNG SDIAAIFGFI EVSDFGLSAV ADKFHPDALL HTFCGTPSYV APKVSSRSLK KAIGFKTHAA GVKHWPPGAA RQRPTGAPCR WAEAASDNSR AQHADIVNQG KLVSDEIIIN LLSRRLEEGE EKGELGFILD GFPRTLRQAK MADAEDIQPL VCDNRTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPILLTEV PLNPKANKEK MTQIMFETFN TPAIGRTTGI VLDSGDGVSH TVPIYEGYAL PHAILRLDLA GRDLTDCSSA LDCVCSKDII QNLTERFYSL HNYCIAFFVE YYLLGDGLLL LLAGLRTDGL QSIVGAWYQR GRQGCTCSQS GRMZM2G478779_P01 seq=translation; coord=1:287300193..287305323:-1; parent_transcript=GRMZM2G478779_T01; parent_gene=GRMZM2G478779 MDHVVGGKFK LGKKIRSGSF GKLYLAVNVQ NGEEVAVKLG GSCRREALAT GCCTSTANRG HRAGGQKQPA TTVGHRRLEE GEEKGELGFI LDGFPRTMRQ AHQPRQAGFA GDDAPRAVFP SIVGRPRHTG VMVGMGQKDA YVGDEAQSKR GILTLKYPIE HGIVSNWDDM EKIWHHTFYN ELRVAPEEHP VLLTEAPLNP KANREKMTQI MFETFNTPAM YVAIQTVLSL YASGRTTDFR DYLYRNFRYS VEKTEGLGVF RTHVLTGLAR CILVQ GRMZM2G478779_P02 seq=translation; coord=1:287301564..287305323:-1; parent_transcript=GRMZM2G478779_T02; parent_gene=GRMZM2G478779 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN TPAMYVAIQT VLSLYASGRT TGELIPFSA GRMZM2G478779_P04 seq=translation; coord=1:287301831..287302499:-1; parent_transcript=GRMZM2G478779_T04; parent_gene=GRMZM2G478779 MADAEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN TPAMYVAIQT VLSLYASGRT TGELIPFSA GRMZM2G067985_P01 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521536..134532296:1; parent_transcript=GRMZM2G067985_T01; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVL GRMZM2G067985_P02 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521536..134524347:1; parent_transcript=GRMZM2G067985_T02; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVL GRMZM2G067985_P03 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521536..134524303:1; parent_transcript=GRMZM2G067985_T03; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGIVL GRMZM2G067985_P07 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521637..134523822:1; parent_transcript=GRMZM2G067985_T07; parent_gene=GRMZM2G067985 MASIWPDPWC GVVWVEIHLQ GHGSASHESG SALLRAGEMV HGQQHRCIST SVEMADGEDI QPLVCDNGTG MVKAGFAGDD APRAVFPSIV GRPRHTGVMV GMGQKDAYVG DEAQSKRGIL TLKYPIEHGI VSNWDDMEKI WHHTFYNELR VAPEEHPVLL TEAPLNPKAN REKMTQIMFE TFNVPAMYVA IQAVLSLYAS GRTTGIVL GRMZM2G067985_P14 seq=translation; coord=8:134529314..134530793:1; parent_transcript=GRMZM2G067985_T14; parent_gene=GRMZM2G067985 MADGEDIQPL VCDNGTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPVLLTEA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYASGRT TGMT GRMZM2G053284_P01 NP_001141305 hypothetical protein LOC100273396 seq=translation; coord=3:175897257..175900286:-1; parent_transcript=GRMZM2G053284_T01; parent_gene=GRMZM2G053284 MAEEDVQPLV CDNGTGMVKA GFAGDDAPRA VFPSIVGRPR HTGVMVGMGQ KDAYVGDEAQ SKRGILTLKY PIEHGIVGNW DDMEKIWHHT FYNELRVAPE EHPILLTEAP LNPKANREKM TQIMFETFSC PAMYVSIQAV LSLYASGRTT GIVLDSGDGV SHTVPIYEGY TLPHAIIRLD LAGRDLTDNL MKILTERGYS FTTTAEREIV RDIKEKLAYV ALDYEQELET ARTSSTVEKS YELPDGQVIT IGAERFRCPE VLFQPSFIGM ESPGIHEATY NSIMKCDVDI RKDLYGNVVL SGGSTMFPGI GDRMSKEITA LAPSSMKVKV VAPPERKYSV WIGGSILASL STFQQMWISK EEYDESGPGI VHMKCF GRMZM2G084769_P01 seq=translation; coord=5:165863401..165866226:1; parent_transcript=GRMZM2G084769_T01; parent_gene=GRMZM2G084769 MANGEDIQPL VCDNGTRMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAL EEHPVLLTKA PLNPKANREK MTQIMFETFN VPAMYVAIQA VLSLYAILNG TYLYYINSVS LLDF GRMZM2G469900_P02 seq=translation; coord=7:45866261..45867604:1; parent_transcript=GRMZM2G469900_T02; parent_gene=GRMZM2G469900 MADAEDIQPL VCDNRTGMVK AGFAGDDAPR AVFPSIVGRP RHTGVMVGMG QKDAYVGDEA QSKRGILTLK YPIEHGIVSN WDDMEKIWHH TFYNELRVAP EEHPILLTEV PLNPKANKEK MTQIMFETFN TPAMYVAI GRMZM2G333399_P01 seq=translation; coord=2:37701545..37702934:1; parent_transcript=GRMZM2G333399_T01; parent_gene=GRMZM2G333399 HADIVNQGKL VSDEIIINLL SRRLEEGEEK GELGFILDGF PRTMRQAKMA DAEDIQPLVC DNRTGMVKAG FAGDDAPRAV FPSIVGRPRH TGVMVEMGQK DAYVGDEAQS KRGIRTLKYP IEHGIVSNWD DMEKIWHHTF YNELRVAPEE HPILLTEAPL NPKANKEKMT QIMFETFNTP AMYVAIQAVL SLYASGRTTG IVLDSGDGVS HTAPIYEGYA LPHAILRLDL AGRDLIDCSS ALDCVCSKDI IQNLTERFYS LHNYCIAFFV EYYLLGDGLL LLLAGLRTDG LQSIVGAWYQ RGRQGCTCSQ S GRMZM5G859691_P01 seq=translation; coord=2:79285142..79305370:1; parent_transcript=GRMZM5G859691_T01; parent_gene=GRMZM5G859691 MPLLPAAALA LFAPPDVPLP THTLALLLRR LFTTRSIAAA QGLLHKLHLP SCSALPARNL RAHPALPSFA QPPHAAKLPL ALISSHACLR TPLDPMPLLP AVALALFAPP DMPLPTHTLA LLLRRLFTTR SIAAVQGLLH KLLDIGVDAR PQFLEQQLKK AKGPNLMFGR GDETEGSDNS KSKFKDDEQD GQVSSRSLKK AIGFKTHVRY CDTLMVLKLW IMSKVPFRSS TGHRVLHVNG QQGHRAGGQK QPATTVGHSF LSYICMFFKG MYMDLPNTLD FCKQPKILSE KKVENGRCRG YPAPCLRQWN CMVKAGFAGD DAPRVVFPSI VGRPRHTGVM VGMGQKDAYV GDEAQSKRGI LTLKYPIEHG IASNWDDMEK IWHHTFYNEL RVAPEEHPVL LTEAPLNPKA KREKMTQIMF ETFNTPAMYV AIQVVLSLYA SGRTTGIVLD SGDGVSHTVP IYEGYTLPHA ILHLDLAGRD LTDCSFALDC VCSKDIIQNL TERFYLLHNY CIALFVEYYL LGDGLLLLLA GLRTDGLQSI VGAWYQRVHL FTILRSKVLG GEGLDNHQVA NYETITVDEL FRKWRGGSKD ECFNCGDPDH YIASCPKTKS RAEADKGDHH SGRRKGKQEY TSGEHKSKGT FDKEALKKAY LHKAKIK GRMZM2G320797_P03 NM_001154731 actin-7 (LOC100281811), mRNA seq=translation; coord=8:166528899..166530154:-1; parent_transcript=GRMZM2G320797_T03; parent_gene=GRMZM2G320797 MVGMGQKDAY VGDEAQSKRG ILTLKYPIEH GIVGNWDDME KIWHHTFYNE LRVAPEEHPI LLTEAPLNPK ANREKMTQIM FETFNCPAMY VAIQAVLSLY ASGRTTGIVL DSGDGVSHTV PIYEGYTLPH AILRLDLAGR DLTDNLMKIL TERGYSFTTT AEREIVRDIK EKLAYVALDY EQELETARTS SSVEKSYELP DGQVITIGAE RFRCPEVLFQ PSFIGMESAG IHEATYNSIM KCDVDIRKDL YGNVVLSGGS TMFPGIGDRM SKEITALAPS SMKVKVVAPP ERKYSVWIGG SILASLSTFQ QMWISKEEYD ESGPGIVHMK CF GRMZM2G465072_P01 seq=translation; coord=6:166831395..166832311:1; parent_transcript=GRMZM2G465072_T01; parent_gene=GRMZM2G465072 PRGSRPREQP YRTITTTALS SFALLCLPEL TAPRLLTVDP PLIRYKMADA EDIQPLVCDN GTGMVKAGFA GDDAPRAVFP SIVGRPRHTG VMVGMGQKDA YVGDEAQSKR GILTLKYLSL HIT GRMZM2G437445_P01 seq=translation; coord=2:232893400..232895794:-1; parent_transcript=GRMZM2G437445_T01; parent_gene=GRMZM2G437445 MTYFAEGSLL LGHVLALLEL KVRVEADPHG VQHWDPSNAA GLACEKEQFH PREDENDGCP ALMSSFMDSP IVHDIDLVSM QVSLVTTHRE LSFLALKTYR VCHTGVMVGM GQKDAYVGDE AQSKRGILIL KYPIEHGIVG NWDGMEKIWH HIFYNELRVE PEEHPIPLTE APLNPKENRE KMTQIMFETF NCPAMYVAIQ AVLSLYASGR TTGIVLDSGD GVSHTVPIYE GYTLPHAILR LDLAGHDLTD NLMKILTERG YSFTMTVDRE IVSDIKEKLV YVALDYEQEL ETARTSSSVE KSYEMPDGQV ITIGA 5.28863 -0.320523 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 5836 5836 5799 5535 5151 4581 4111 3313 2289 1280 582 227 90 52 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 5936 5936 5899 5618 5229 4611 4101 3263 2000 975 293 113 1 0 0 1 2 3 4 5 6 1877 2586 1108 286 65 18 0 0 1 2 3 4 5 6 7 1508 2870 1121 267 60 10 1 103 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2848 (charge 3) 1338.63 3 150.045 151.042 155.081 157.061 157.097 158.092 159.076 160.08 167.055 168.055 169.051 169.097 173.056 173.092 174.059 175.119 176.107 176.122 181.061 183.076 185.055 185.091 186.124 187.071 188.074 190.123 200.102 201.087 203.066 207.113 209.103 215.648 221.103 223.063 225.042 227.04 228.632 235.144 241.118 245.075 251.142 255.116 263.138 272.123 280.169 283.176 286.186 295.174 302.099 303.214 305.112 311.135 316.113 325.985 337.683 342.018 343.997 344.995 350.69 354.155 360.029 361.026 372.167 373.132 390.245 395.196 400.161 406.207 412.659 417.207 430.087 436.713 445.719 468.293 476.728 481.23 495.253 501.277 502.279 509.224 518.304 542.304 554.307 565.343 572.317 589.342 591.346 599.278 622.367 657.331 700.373 709.401 718.383 720.386 772.358 833.412 873.411 890.432 892.437 989.494 3 2 4 1 10 4 61 4 41 14 8 1 18 2 1 41 4 2 1 3 2 3 1 18 2 2 2 4 1 7 2 5 1 9 12 3 1 50 5 6 3 4 5 5 11 3 2 6 9 5 3 2 2 2 10 6 7 7 12 4 100 78 4 4 21 11 2 2 3 4 2 2 22 3 20 1 6 5 2 3 20 2 1 3 3 26 2 2 3 2 4 4 18 2 2 6 2 31 4 2 GRMZM2G077206_P01 NP_001105627 LOC542632 seq=translation; coord=8:136911622..136912881:1; parent_transcript=GRMZM2G077206_T01; parent_gene=GRMZM2G077206 MATAGGGAGH LKLLGAWPSP FVNRVRMALH LKGLEYENVE EDLTNKSDLL LASNPVHKLV PVLLHGDKPI SESLVIVEYL DDAFPGAGQA VLPADPYERA VARFWAKYVD GKLHGMMVKA LMGATEEERA TATVDALAAM DTLEGAFAEC SGGKKFFAGD APGYLDVALG GFIGWLRAWD KVGGVKLLDA GRVPRLATWA ERFAALDVAK EVIPDPDHIA EFAKVLQARS AAAATSN 4.85138 -0.262237 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 3462 3462 3421 3270 2873 2618 2463 1849 1557 913 633 264 190 74 34 18 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3481 3481 3440 3289 2875 2586 2378 1745 1177 544 147 49 3 1 0 0 1 2 3 4 5 6 1491 1425 457 101 7 2 0 0 1 2 3 4 5 6 7 596 2119 587 162 10 4 1 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2849 (charge 2) 981.512 2 150.066 155.082 156.076 157.097 157.108 158.092 159.076 167.093 169.061 169.097 169.133 171.076 172.071 172.108 173.056 173.092 173.128 175.119 176.122 181.097 184.072 185.092 185.165 186.095 187.107 193.097 195.089 197.092 197.129 198.094 201.086 204.134 215.102 216.106 222.124 226.119 230.114 240.134 251.15 258.144 260.197 266.15 268.129 272.136 286.139 289.161 295.15 308.172 311.208 320.184 323.146 325.15 334.217 343.163 348.694 352.172 354.213 364.163 371.239 380.166 397.256 409.193 419.238 428.234 437.189 438.191 442.28 447.221 452.227 454.279 465.257 480.23 489.176 493.252 497.286 509.245 514.237 522.278 525.315 532.262 539.33 541.338 543.262 550.273 566.266 571.258 582.336 593.315 621.312 623.29 639.355 667.426 678.376 680.311 696.378 698.385 706.33 737.327 767.416 796.468 3 9 9 4 2 9 3 5 2 14 6 5 4 2 2 20 5 39 3 2 3 34 6 3 3 7 6 59 8 4 14 2 35 3 4 6 4 47 7 5 6 2 21 3 8 11 2 3 2 3 3 2 3 3 3 3 16 3 9 4 7 12 2 2 17 4 5 3 3 7 3 4 3 3 3 5 3 10 4 2 100 5 6 12 4 15 7 2 3 3 11 12 4 3 36 4 5 4 8 4 GRMZM5G815453_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=Pt:56824..58323:1; parent_transcript=GRMZM5G815453_T01; parent_gene=GRMZM5G815453 MSCREGLMSP QTETKASVGF KAGVKDYKLT YYTPEYETKD TDILAAFRVT PQLGVPPEEA GAAVAAESST GTWTTVWTDG LTSLDRYKGR CYHIEPVPGD PDQYICYVAY PLDLFEEGSV TNMFTSIVGN VFGFKALRAL RLEDLRIPPA YSKTFQGPPH GIQVERDKLN KYGRPLLGCT IKPKLGLSAK NYGRACYECL RGGLDFTKDD ENVNSQPFMR WRDRFVFCAE AIYKAQAETG EIKGHYLNAT AGTCEEMIKR AVFARELGVP IVMHDYLTGG FTANTTLSHY CRDNGLLLHI HRAMHAVIDR QKNHGMHFRV LAKALRMSGG DHIHSGTVVG KLEGEREITL GFVDLLRDDF IEKDRSRGIF FTQDWVSMPG VIPVASGGIH VWHMPALTEI FGDDSVLQFG GGTLGHPWGN APGAAANRVA LEACVQARNE GRDLAREGNE IIKAACKWSA ELAAACEIWK EIKFDGFKAM DTI GRMZM2G448344_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=1:203925927..203931405:-1; parent_transcript=GRMZM2G448344_T01; parent_gene=GRMZM2G448344 MSCREGLMSP QTETKASVGF KAGVKDYKLT YYTPEYETKD TDILAAFRVT PQLGVPPEEA GAAVAAESST GTWTTVWTDG LTSLDRYKGR CYHIEPVPGD PDQYICYVAY PLDLFEEGSV TNMFTSIVGN VFGFKALRAL RLEDLRIPPA YSKTFQGPPH GIQVERDKLN KYGRPLLGCT IKPKLGLSAK NYGRACYECL RGGLDFTKDD ENVNSQPFMR WRDRFVFCAE AIYKAQAETG EIKGHYLNAT AGTCEEMIKR AVFARELGVP IVMHDYLTGG FTANTTLSHY CRDNGLLLHI HRAMHAVIDR QKNHGMHFRV LAKALRMSGG DHIHSGTVVG KLEGEREITL GFVDLLRDDF IEKDRSRGIF FTQDWVSMPG VIPVASGGIH VWHMPALTEI FGDDSVLQFG GGTLGHPWGN APGAAANRVA LEACVQARNE GRDLAREGNE IIKAACKWSA ELAAACEIWK EIKFDGFKAM DTI GRMZM2G385635_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=2:200096578..200100853:-1; parent_transcript=GRMZM2G385635_T01; parent_gene=GRMZM2G385635 MSCREGLMSP QTETKASVGF KAGVKDYKLT YYTPEYETKD TDILAAFRVT PQLGVPPEEA GAAVAAESST GTWTTVWTDG LTSLDRYKGR CYHIEPVPGD PDQYICYVAY PLDLFEEGSV TNMFTSIVGN VFGFKALRAL RLEDLRIPPA YSKTFQGPPH GIQVERDKLN KYGRPLLGCT IKPKLGLSAK NYGRACYECL RGGLDFTKDD ENVNSQPFMR WRDRFVFCAE AIYKAQAETG EIKGHYLNAT AGTCEEMIKR AVFARELGVP IVMHDYLTGG FTANTTLSHY CRDNGLLLHI HRAMHAVIDR QKNHGMHFRV LAKALRMSGG DHIHSGTVVG KLEGEREITL GFVDLLRDDF IEKDRSRGIF FTQDWVSMPG VIPVASGGIH VWHMPALTEI FGDDSVLQFG GGTLGHPWGN APGAAANRVA LEACVQARNE GRDLAREGNE IIKAACKWSA ELAAACEIWK EIKFDGFKAM DTI GRMZM2G360821_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=6:160783975..160786062:1; parent_transcript=GRMZM2G360821_T01; parent_gene=GRMZM2G360821 MSCREGLMSP QTETKASVGF KAGVKDYKLT YYTPEYETKD TDILAAFRVT PQLGVPPEEA GAAVAAESST GTWTTVWTDG LTSLDRYKGR CYHIEPVPGD PDQYICYVAY PLDLFEEGSV TNMFTSIVGN VFGFKALRAL RLEDLRIPPA YSKTFQGPPH GIQVERDKLN KYGRPLLGCT IKPKLGLSAK NYGRACYECL RGGLDFTKDD ENVNSQPFMR WRDRFVFCAE AIYKAQAETG EIKGHYLNAT AGTCEEMIKR AVFARELGVP IVMHDYLTGG FTANTTLSHY CRDNGLLLHI HRAMHAVIDR QKNHGMHFRV LAKALRMSGG DHIHSGTVVG KLEGEREITL GFVDLLRDDF IEKDRSRGIF FTQDWVSMPG VIPVASGGIH VWHMPALTEI FGDDSVLQFG GGTLGHPWGN APGAAANRVA LEACVQARNE GRDLAREGNE IIKAACKWSA ELAAACEIWK EIKFDGFKAM DTI GRMZM2G308907_P01 seq=translation; coord=9:32379686..32380603:1; parent_transcript=GRMZM2G308907_T01; parent_gene=GRMZM2G308907 MRWRDRFVFC AEAIYKAQAE TGEIKGHYLN ATAGTCEEMI KRAVFARELG VPIVMHDYLT GGFTANTTLS HYCRDNGLLL HIHRAMHAVI DRQKNHGMHF RVLAKALRMS GGDHIHSGTV VGKLEGEREI TLGFVDLLRD DFIEKDRSRG IFFTQDSVSM PGVIPVASGG IHVWHMPALT EIFGDDSVLQ FGGGTLGHPW GNAPGAAANR VALEACVQAR NEGRDLAREG NEIIKAACKW SAELAAACEI WKEIKFDGFK AMDTI GRMZM2G115168_P01 seq=translation; coord=1:131325136..131327527:1; parent_transcript=GRMZM2G115168_T01; parent_gene=GRMZM2G115168 MIKRVVFARE LGVPIVMHDY LTRGFTANTT LSHYCRDNDL LHIHRAMHAV IDRQKNHGMY FRVLAKALCM SGGDHIHSGT VVGKFEGERE ISLGFVDLLR NHFIEKDRSC SMFFTQDWVS MPGVIPVASG GIHV 6.00399 -0.32454 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 7797 7797 7797 7735 7347 6936 5648 4572 3055 1733 918 441 218 108 28 12 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 7801 7801 7801 7739 7351 6920 5560 4099 2238 758 160 54 1 0 0 1 2 3 4 5 6 7 2823 3120 1251 479 114 9 5 3 0 1 2 3 4 5 6 7 1288 3869 1925 585 120 12 0 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2852 (charge 3) 1481.72 3 156.076 157.097 159.076 159.113 166.061 169.097 171.113 173.092 174.058 175.119 186.123 187.108 191.085 197.128 199.108 201.087 204.134 213.033 216.133 219.08 223.155 225.098 227.103 234.145 239.15 244.165 251.15 253.093 256.177 258.145 291.166 303.202 310.114 327.166 339.14 345.171 365.155 367.135 378.199 402.272 404.23 415.678 418.228 422.688 426.172 428.264 431.692 436.157 452.22 454.167 456.256 461.215 462.905 466.203 467.214 472.221 475.207 480.219 482.235 495.833 501.74 510.743 517.788 521.247 534.25 539.257 549.242 552.262 557.305 558.83 560.342 563.294 567.25 575.282 581.307 585.298 615.302 617.276 632.326 647.376 670.392 676.332 686.292 698.384 699.388 704.307 705.31 766.424 784.431 786.436 796.329 844.365 848.36 862.38 897.518 931.402 949.411 961.443 1030.47 1048.48 4 6 6 5 4 10 5 6 4 15 29 15 43 7 9 8 100 5 6 13 11 13 5 12 14 4 13 5 7 5 8 35 6 7 13 8 7 16 12 5 5 7 6 10 17 7 7 7 10 30 16 5 9 30 6 4 15 10 10 22 7 7 6 4 4 16 5 26 18 5 7 5 20 10 11 41 5 6 7 14 6 13 6 19 4 17 6 6 26 5 5 7 5 4 6 13 8 4 10 7 GRMZM2G073351_P04 NP_001167680 protochlorophyllide reductase B seq=translation; coord=5:24860869..24863845:-1; parent_transcript=GRMZM2G073351_T04; parent_gene=GRMZM2G073351 MALQAATSFL PSALSARKER VSRSADIRAQ TAAVSSPSVT PASPSGKKTL RKGTAVITGA SSGLGLATAK ALAETGKWHV IMACRDFLKA SRAAKAAGMD KDSFTVVHLD LASLDSVRQF VRNVRQLEMP IDVVVCNAAV YQPTAKEPSY TADGFEMSVG VNHLGHFLLA RELLSDLQSS DYPSKRLIIV GSITGNTNTL AGNVPPKANL GDLRGLAGGL NGVGSSVMID GGEFDGAKAY KDSKVCNMLT MQEFHRRYHE ETGVTFASLY PGCIATTGLF REHIPLFRLL FPPFQKYITK GYVSEEEAGK RLAQVVSDPS LTKSGVYWSW NKNSASFENQ LSEEASDADK AKKLWEISEK LVGLA GRMZM2G073351_P02 NP_001167680 protochlorophyllide reductase B seq=translation; coord=5:24860812..24863845:-1; parent_transcript=GRMZM2G073351_T02; parent_gene=GRMZM2G073351 MALQAATSFL PSALSARKEG SVKDSASFLG VRLAADGLKL DTTALGLRTV RVSRSADIRA QTAAVSSPSV TPASPSGKKT LRKGTAVITG ASSGLGLATA KALAETGKWH VIMACRDFLK ASRAAKAAGM DKDSFTVVHL DLASLDSVRQ FVRNVRQLEM PIDVVVCNAA VYQPTAKEPS YTADGFEMSV GVNHLGHFLL ARELLSDLQS SDYPSKRLII VGSITGNTNT LAGNVPPKAN LGDLRGLAGG LNGVGSSVMI DGGEFDGAKA YKDSKVCNML TMQEFHRRYH EETGVTFASL YPGCIATTGL FREHIPLFRL LFPPFQKYIT KGYVSEEEAG KRLAQVVSDP SLTKSGVYWS WNKNSASFEN QLSEEASDAD KAKKLWEISE KLVGLA GRMZM2G036455_P01 NP_001149903 protochlorophyllide reductase B seq=translation; coord=1:227507580..227510668:-1; parent_transcript=GRMZM2G036455_T01; parent_gene=GRMZM2G036455 MALQAATSFL PSALSARKEG SSVKDSAFLG VHLADDGLKL ETAALGLRTK RVITSVAIRA QAAAVSSPSV TPASPSGKKT LRKGTAIITG ASSGLGLATA KALAETGKWH VIMACRDFLK ASRAAKAAGM DKDSFTVVHL DLASLDSVRQ FVKNVRQLEM PVDVVVCNAA VYQPTAKEPS YTADGFEMSV GVNHLGHFLL ARELLSDLQS SDYPSKRLII VGSITGNTNT LAGNVPPKAN LGDLRGLAGG LNGIGGSAMI DGGEFDGAKA YKDSKVCNML TMQEFHRRYH EETGVTFASL YPGCIATTGL FREHIPLFRL LFPPFQKYIT KGYVSEEEAG KRLSQVVSDP SLTKSGVYWS WNKNSASFEN QLSEEASDAD KAKKLWEISE KLVGLA 5.49735 -0.255691 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 7165 7165 7110 6850 6691 6097 5811 4426 3524 2130 1305 798 427 230 124 68 41 25 8 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7168 7168 7113 6853 6685 6078 5715 4194 2922 1439 713 225 85 7 2 1 0 0 1 2 3 4 5 3109 3073 882 97 7 0 0 1 2 3 4 5 6 7 1479 4286 1139 227 32 2 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2853 (charge 2) 1114.58 2 152.056 154.087 155.081 155.117 156.077 157.097 157.132 158.091 158.102 159.077 159.112 167.081 168.065 169.097 169.134 170.101 171.076 171.113 172.061 173.092 173.129 175.119 181.097 183.113 185.092 186.095 186.124 187.071 187.108 187.143 188.111 189.087 195.112 197.128 199.071 199.107 201.123 204.134 209.09 212.14 217.082 219.115 224.103 226.155 231.097 236.102 238.118 240.135 242.113 244.165 247.111 252.134 254.113 256.129 260.124 266.149 268.128 270.145 272.124 284.16 288.153 291.165 311.168 322.174 325.188 335.17 338.183 339.169 343.197 353.182 354.179 357.175 360.14 366.176 370.209 371.191 388.219 410.207 436.213 440.209 454.231 457.24 475.251 476.258 515.248 546.292 564.278 580.778 622.288 625.333 643.341 645.347 684.374 701.338 726.374 744.392 843.457 928.867 930.482 1068.2 2 2 11 9 3 97 2 2 3 3 23 21 3 20 3 3 9 8 2 12 15 33 3 10 93 8 11 4 22 3 3 3 7 3 3 17 9 23 6 3 5 4 9 25 7 11 3 8 4 10 2 3 76 16 4 15 2 10 38 8 4 11 2 13 10 14 4 8 11 20 4 3 3 3 16 4 100 3 4 3 3 11 31 4 2 13 15 2 3 10 83 3 4 4 4 35 8 3 14 3 GRMZM2G085019_P01 P16243 NADP-dependent malic enzyme, chloroplastic Precursor (NADP-ME)(EC 1.1.1.40) seq=translation; coord=3:7275169..7280519:1; parent_transcript=GRMZM2G085019_T01; parent_gene=GRMZM2G085019 GRMZM2G085019_P02 P16243 NADP-dependent malic enzyme, chloroplastic Precursor (NADP-ME)(EC 1.1.1.40) seq=translation; coord=3:7275169..7280519:1; parent_transcript=GRMZM2G085019_T02; parent_gene=GRMZM2G085019 5.8477 -0.316092 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 7473 7473 7473 7272 7148 6777 5696 4772 3112 1951 1123 580 244 89 40 27 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7486 7486 7486 7285 7160 6772 5671 4574 2642 1243 447 104 30 17 1 0 0 1 2 3 4 5 6 7 3391 2665 1050 295 67 7 5 10 0 1 2 3 4 5 6 7 1146 3903 1729 537 157 7 7 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2855 (charge 3) 1371.72 3 155.081 158.094 159.078 159.091 165.138 173.128 175.119 181.095 181.108 181.134 183.149 184.152 199.108 204.134 209.103 211.144 221.104 226.154 229.154 239.115 242.186 249.098 256.144 260.196 267.108 277.092 284.139 295.104 312.178 315.634 336.167 338.145 346.147 351.153 355.174 357.249 364.163 365.674 367.695 378.139 379.673 386.156 395.182 396.15 415.547 417.219 421.206 424.143 429.721 435.203 444.189 445.731 464.239 466.245 468.281 475.203 477.246 480.747 483.27 486.291 492.719 494.233 499.729 508.24 524.224 533.207 534.212 548.756 549.263 552.227 556.763 561.202 565.272 574.287 576.253 593.281 604.243 621.274 623.351 630.265 633.285 661.281 701.301 724.373 730.339 734.372 749.373 752.399 758.337 762.341 773.299 790.328 859.384 887.378 889.458 960.492 962.485 984.428 1015.47 1147.56 4 8 3 41 9 3 22 3 10 7 72 13 8 4 14 23 14 20 12 16 9 36 72 29 61 3 73 6 8 9 18 16 12 3 32 100 8 11 8 3 14 15 10 23 3 8 9 11 17 9 32 7 11 7 22 13 4 10 8 9 40 9 14 17 10 20 3 4 3 4 8 8 7 12 9 7 30 23 21 6 7 7 18 4 9 6 11 16 19 4 4 17 12 38 17 26 3 10 4 6 GRMZM2G119499_P01 NP_001104980 glutathione transferase11 seq=translation; coord=1:7824444..7825878:-1; parent_transcript=GRMZM2G119499_T01; parent_gene=GRMZM2G119499 MAAAHNHTRI ALHSFSSVVC SDSEMASVKV FGSPTSAEVA RVLMCLFEKE VEFQLIRVDA YRGTKRMPQY LKLQPQGEAL TFEDESLTLS DSRGILRHIS HKYAKQGNPY LIGTGALERA SIEQWLQTEA QSFDAPSAEM VYSLAFLPPT LPKQNDNGNG GAFNARDATV GSNADASSGK RGVAGSQPAA SQTKVSAQKE EEMLKLFEQR KKDLEKLLDI YEQRLEEATF LAGDNFTIAD LSHLPYADHL VSDPRSRRMF ESRKNVSRWW HDVSGRDTWK YVKTLQRPPS TSTDASAKNG QLGQQQHLPS STDGHGVKTQ RLVQNERHF 6.38781 -0.311601 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 11696 11696 11657 11109 9428 7824 5557 3734 2358 1449 754 407 263 91 51 31 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 11702 11702 11663 11072 9259 7447 4570 2660 1264 564 177 49 4 1 0 0 1 2 3 4 5 6 7 4083 4514 2218 638 213 42 0 1 0 1 2 3 4 5 6 7 2327 5667 2665 859 133 52 4 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2858 (charge 3) 1559.8 3 157.109 159.076 161.092 167.055 168.055 169.063 169.133 171.076 175.119 187.071 187.144 188.147 189.087 197.128 200.139 213.087 215.139 218.15 219.153 223.063 225.043 239.094 242.149 251.114 254.149 256.091 268.14 269.143 281.051 283.03 285.166 299.061 301.059 305.181 306.185 310.138 322.161 344.976 346.974 357.138 359.027 361.026 370.687 376.218 377.222 398.251 410.211 415.036 417.034 431.235 477.227 485.731 491.247 499.296 529.237 531.259 538.319 546.261 548.286 566.314 584.267 592.292 609.311 626.289 643.315 645.321 650.342 655.821 664.829 667.352 673.338 679.317 686.297 723.343 729.882 736.37 740.367 742.371 754.381 780.36 842.402 855.43 867.405 953.432 954.432 964.455 970.458 972.464 1041.5 1043.51 1061.51 1063.52 1083.54 1084.54 1100.53 1110.52 1128.53 1154.55 1171.57 1199.57 1 3 1 22 4 4 3 2 5 10 100 10 2 1 3 1 8 13 2 3 2 6 1 2 3 2 16 2 3 1 13 54 17 12 2 1 11 13 5 2 6 3 40 15 2 2 2 5 3 11 3 3 4 3 1 4 1 6 1 3 2 5 5 2 32 3 2 2 8 2 17 5 5 3 3 1 28 3 2 2 2 1 2 3 2 2 14 2 3 2 8 2 4 2 1 2 3 2 4 2 GRMZM2G126190_P01 NP_001150248 LOC100283878 seq=translation; coord=4:214239084..214241779:1; parent_transcript=GRMZM2G126190_T01; parent_gene=GRMZM2G126190 GRMZM2G126190_P02 NP_001150248 LOC100283878 seq=translation; coord=4:214239217..214241699:1; parent_transcript=GRMZM2G126190_T02; parent_gene=GRMZM2G126190 GRMZM2G126190_P03 NP_001150248 LOC100283878 seq=translation; coord=4:214239219..214241500:1; parent_transcript=GRMZM2G126190_T03; parent_gene=GRMZM2G126190 GRMZM2G152328_P01 NP_001150462 LOC100284092 seq=translation; coord=5:10223674..10226373:-1; parent_transcript=GRMZM2G152328_T01; parent_gene=GRMZM2G152328 GRMZM2G152328_P02 NP_001150462 LOC100284092 seq=translation; coord=5:10224230..10226373:-1; parent_transcript=GRMZM2G152328_T02; parent_gene=GRMZM2G152328 GRMZM2G047055_P01 NP_001150462 LOC100284092 seq=translation; coord=1:269035042..269037767:1; parent_transcript=GRMZM2G047055_T01; parent_gene=GRMZM2G047055 GRMZM2G047055_P03 NP_001150462 LOC100284092 seq=translation; coord=1:269035096..269037632:1; parent_transcript=GRMZM2G047055_T03; parent_gene=GRMZM2G047055 GRMZM2G047055_P02 NP_001150462 LOC100284092 seq=translation; coord=1:269035042..269037447:1; parent_transcript=GRMZM2G047055_T02; parent_gene=GRMZM2G047055 GRMZM2G067985_P04 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521573..134531903:1; parent_transcript=GRMZM2G067985_T04; parent_gene=GRMZM2G067985 GRMZM2G067985_P05 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521573..134523825:1; parent_transcript=GRMZM2G067985_T05; parent_gene=GRMZM2G067985 GRMZM2G067985_P06 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521637..134531903:1; parent_transcript=GRMZM2G067985_T06; parent_gene=GRMZM2G067985 GRMZM2G067985_P09 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134526764..134531903:1; parent_transcript=GRMZM2G067985_T09; parent_gene=GRMZM2G067985 GRMZM2G067985_P10 seq=translation; coord=8:134529140..134532339:1; parent_transcript=GRMZM2G067985_T10; parent_gene=GRMZM2G067985 GRMZM2G067985_P12 seq=translation; coord=8:134529314..134532338:1; parent_transcript=GRMZM2G067985_T12; parent_gene=GRMZM2G067985 GRMZM2G067985_P15 seq=translation; coord=8:134529353..134532428:1; parent_transcript=GRMZM2G067985_T15; parent_gene=GRMZM2G067985 GRMZM2G104017_P02 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187787..41190730:-1; parent_transcript=GRMZM2G104017_T02; parent_gene=GRMZM2G104017 GRMZM2G104017_P03 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187649..41190517:-1; parent_transcript=GRMZM2G104017_T03; parent_gene=GRMZM2G104017 GRMZM2G104017_P04 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187649..41190516:-1; parent_transcript=GRMZM2G104017_T04; parent_gene=GRMZM2G104017 GRMZM2G110378_P01 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236360..41239234:-1; parent_transcript=GRMZM2G110378_T01; parent_gene=GRMZM2G110378 GRMZM2G110378_P02 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236434..41239320:-1; parent_transcript=GRMZM2G110378_T02; parent_gene=GRMZM2G110378 GRMZM2G110378_P04 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236494..41239316:-1; parent_transcript=GRMZM2G110378_T04; parent_gene=GRMZM2G110378 GRMZM2G110378_P05 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236752..41239103:-1; parent_transcript=GRMZM2G110378_T05; parent_gene=GRMZM2G110378 GRMZM2G006765_P02 NP_001159156 hypothetical protein LOC100304239 seq=translation; coord=2:140057140..140059599:1; parent_transcript=GRMZM2G006765_T02; parent_gene=GRMZM2G006765 GRMZM2G067985_P11 seq=translation; coord=8:134529314..134532428:1; parent_transcript=GRMZM2G067985_T11; parent_gene=GRMZM2G067985 GRMZM2G067985_P13 seq=translation; coord=8:134529314..134532337:1; parent_transcript=GRMZM2G067985_T13; parent_gene=GRMZM2G067985 GRMZM2G104017_P01 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41187750..41190730:-1; parent_transcript=GRMZM2G104017_T01; parent_gene=GRMZM2G104017 GRMZM2G110378_P03 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=6:41236442..41239320:-1; parent_transcript=GRMZM2G110378_T03; parent_gene=GRMZM2G110378 GRMZM2G030169_P01 NP_001146931 actin-2 seq=translation; coord=5:23016144..23019861:1; parent_transcript=GRMZM2G030169_T01; parent_gene=GRMZM2G030169 GRMZM2G030169_P02 NP_001146931 actin-2 seq=translation; coord=5:23016216..23019859:1; parent_transcript=GRMZM2G030169_T02; parent_gene=GRMZM2G030169 GRMZM2G030169_P03 NP_001146931 actin-2 seq=translation; coord=5:23017613..23019859:1; parent_transcript=GRMZM2G030169_T03; parent_gene=GRMZM2G030169 GRMZM2G082484_P01 NP_001167929 hypothetical protein LOC100381643 seq=translation; coord=1:224444114..224447387:-1; parent_transcript=GRMZM2G082484_T01; parent_gene=GRMZM2G082484 GRMZM2G053299_P01 NP_001141313 hypothetical protein LOC100273404 seq=translation; coord=1:296022541..296026398:-1; parent_transcript=GRMZM2G053299_T01; parent_gene=GRMZM2G053299 GRMZM2G469900_P01 seq=translation; coord=7:45858534..45867604:1; parent_transcript=GRMZM2G469900_T01; parent_gene=GRMZM2G469900 GRMZM2G478779_P01 seq=translation; coord=1:287300193..287305323:-1; parent_transcript=GRMZM2G478779_T01; parent_gene=GRMZM2G478779 GRMZM2G478779_P02 seq=translation; coord=1:287301564..287305323:-1; parent_transcript=GRMZM2G478779_T02; parent_gene=GRMZM2G478779 GRMZM2G478779_P04 seq=translation; coord=1:287301831..287302499:-1; parent_transcript=GRMZM2G478779_T04; parent_gene=GRMZM2G478779 GRMZM2G067985_P01 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521536..134532296:1; parent_transcript=GRMZM2G067985_T01; parent_gene=GRMZM2G067985 GRMZM2G067985_P02 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521536..134524347:1; parent_transcript=GRMZM2G067985_T02; parent_gene=GRMZM2G067985 GRMZM2G067985_P03 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521536..134524303:1; parent_transcript=GRMZM2G067985_T03; parent_gene=GRMZM2G067985 GRMZM2G067985_P07 NP_001130463 hypothetical protein LOC100191561 seq=translation; coord=8:134521637..134523822:1; parent_transcript=GRMZM2G067985_T07; parent_gene=GRMZM2G067985 GRMZM2G067985_P14 seq=translation; coord=8:134529314..134530793:1; parent_transcript=GRMZM2G067985_T14; parent_gene=GRMZM2G067985 GRMZM2G053284_P01 NP_001141305 hypothetical protein LOC100273396 seq=translation; coord=3:175897257..175900286:-1; parent_transcript=GRMZM2G053284_T01; parent_gene=GRMZM2G053284 GRMZM2G084769_P01 seq=translation; coord=5:165863401..165866226:1; parent_transcript=GRMZM2G084769_T01; parent_gene=GRMZM2G084769 GRMZM2G469900_P02 seq=translation; coord=7:45866261..45867604:1; parent_transcript=GRMZM2G469900_T02; parent_gene=GRMZM2G469900 GRMZM2G333399_P01 seq=translation; coord=2:37701545..37702934:1; parent_transcript=GRMZM2G333399_T01; parent_gene=GRMZM2G333399 GRMZM5G859691_P01 seq=translation; coord=2:79285142..79305370:1; parent_transcript=GRMZM5G859691_T01; parent_gene=GRMZM5G859691 GRMZM2G320797_P03 NM_001154731 actin-7 (LOC100281811), mRNA seq=translation; coord=8:166528899..166530154:-1; parent_transcript=GRMZM2G320797_T03; parent_gene=GRMZM2G320797 GRMZM2G465072_P01 seq=translation; coord=6:166831395..166832311:1; parent_transcript=GRMZM2G465072_T01; parent_gene=GRMZM2G465072 GRMZM2G437445_P01 seq=translation; coord=2:232893400..232895794:-1; parent_transcript=GRMZM2G437445_T01; parent_gene=GRMZM2G437445 5.22552 -0.298601 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 4374 4374 4348 4149 3789 3553 3232 1889 1435 586 272 143 75 47 15 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4508 4508 4482 4281 3905 3648 3293 1829 1364 468 224 123 104 1 0 0 1 2 3 4 5 2403 1754 333 17 1 0 0 1 2 3 4 5 6 7 979 2841 409 132 15 29 0 103 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2859 (charge 2) 1338.63 2 152.034 157.097 158.092 159.076 167.055 169.061 173.055 175.119 185.092 186.087 187.071 188.075 201.087 207.112 216.134 225.043 235.144 239.093 242.113 245.076 260.197 263.138 272.123 285.009 302.096 305.113 322.14 332.124 350.134 359.027 361.026 373.218 390.245 417.208 445.719 495.254 501.278 518.304 572.313 576.786 589.34 648.34 700.376 718.383 720.386 813.349 816.385 833.408 841.86 873.409 874.417 890.431 892.438 972.48 989.5 991.507 1152.56 4 3 2 20 7 7 3 30 1 6 26 2 2 4 3 4 28 4 2 1 1 5 3 2 4 15 2 2 40 12 14 5 9 3 9 8 1 5 2 2 20 1 4 33 3 2 2 12 2 7 2 100 11 3 37 5 4 GRMZM2G142413_P01 seq=translation; coord=3:9460378..9462549:1; parent_transcript=GRMZM2G142413_T01; parent_gene=GRMZM2G142413 MEIGDLIYSM FYLQMESKLA ENEAALSLMR DNYEKRLLEQ QAAQKKQSMK FQEQEVSLSG QLASATKTLT SLSEEFRKEK KLAEELRDEI QRLESSITQA GIDNDVLETK LEEKLGEINF LQEKVSLLNQ EIDDKEKHIR ELSASLSSKE VDYQKLTAFT NQTKKSLELA NSRVQQLEEE LSTTKNALVS KISSIDSLNA KLETLNSEKE EADKKINELI QEYTDLKVAS ETRASHDSKL LSERDDLIKQ LEEKLSVALT DSSKDQETIV ELNKELDATK MMLKNELKSM EALKDSIRSS EEALKTSRSE VSKLSKELEE ANELNEDLVS QISKLREESN EMQVDLTNKL GEAESLSKAL SEDLASVNEM VQKGQEELEA TSIELASIAE ARDNLKKELL DAYKNLESTT HELVEERKIV TALNKELEAL AKQLQVDSEA RKSLESDLEE ATKSLDEMNN SALLLSKELE STHSRSATLE SEKEMLRKAL AEQTKITTEA KENTEDAQNL ITRLETEKES FELRCRHLEE ELALAKGEIL RLRRQISTNS SQKPRARGPP EASETLKEQP VNDYNQKTSG VVAGTPQPVK RTVRRRKGGA 4.95118 -0.253906 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 4963 4963 4904 4650 4435 4106 2952 2149 1269 748 508 302 183 140 38 15 8 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4966 4966 4907 4653 4429 4074 2757 1656 793 384 201 52 14 1 0 0 1 2 3 4 5 2534 1950 431 50 1 0 0 1 2 3 4 5 6 7 933 2944 867 153 65 1 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2861 (charge 2) 1234.57 2 152.057 155.081 157.096 159.076 159.113 167.081 169.097 169.133 170.136 173.093 175.119 178.049 181.097 183.076 183.149 184.108 185.092 187.108 187.144 188.147 189.087 195.075 197.128 199.107 201.124 203.103 206.045 209.091 212.103 216.098 218.15 223.071 226.154 230.077 233.093 240.097 243.108 244.129 249.124 253.092 256.13 258.144 266.148 270.107 275.171 278.112 284.123 285.166 292.128 302.135 305.181 309.119 311.171 320.126 327.129 329.146 337.151 341.144 355.161 372.186 375.127 380.192 389.214 393.141 398.168 405.155 408.186 426.197 489.238 497.283 535.254 536.252 552.277 561.267 568.306 589.265 635.238 651.263 652.334 667.301 674.344 679.336 686.28 703.306 720.323 744.334 764.32 776.388 781.346 795.403 831.36 863.414 880.421 887.454 891.382 906.348 929.421 960.469 977.465 994.498 2 10 13 8 3 12 11 100 11 2 14 4 7 2 4 3 44 3 47 7 3 16 31 7 4 3 4 3 30 4 4 20 16 12 3 56 9 11 2 2 8 27 3 3 12 3 3 2 8 3 4 8 16 3 9 6 9 3 15 11 3 2 30 15 2 4 2 21 11 3 4 2 25 9 2 7 3 2 3 11 3 8 3 3 6 21 9 20 43 3 3 4 12 4 3 3 3 14 24 2 GRMZM2G041275_P01 seq=translation; coord=3:207616747..207621242:-1; parent_transcript=GRMZM2G041275_T01; parent_gene=GRMZM2G041275 5.90061 -0.302595 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 11491 11491 11491 11410 11078 10467 8389 6537 4361 2508 1468 787 411 167 64 28 16 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11474 11474 11474 11393 11061 10433 8242 6175 3600 1579 602 192 41 2 1 1 0 0 1 2 3 4 5 6 3898 4938 2038 503 75 44 0 0 1 2 3 4 5 6 7 2475 5841 2466 584 115 11 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2862 (charge 3) 1834.97 3 152.057 155.081 159.076 167.056 167.118 169.097 171.113 173.092 175.119 181.061 181.096 183.076 185.092 186.087 186.124 187.072 195.113 200.103 201.087 210.087 212.103 216.097 221.084 224.103 226.154 228.096 239.094 240.095 242.114 252.098 254.114 260.123 270.107 271.139 283.14 285.01 287.007 295.14 299.061 301.058 303.021 313.15 325.151 327.165 337.15 341.144 344.977 355.069 357.067 373.08 375.079 382.172 384.187 398.203 400.182 406.237 416.038 417.257 419.995 420.993 433.277 454.762 512.248 514.26 568.309 583.281 586.313 599.276 617.369 625.308 633.33 636.801 648.331 653.295 665.36 670.31 688.325 690.341 696.413 714.416 715.415 720.363 723.342 741.349 757.352 759.364 762.414 793.454 811.467 813.472 885.401 887.457 889.471 908.519 910.525 933.469 979.557 1076.61 1091.54 1093.56 10 24 30 15 9 31 12 12 15 4 8 23 5 4 12 5 15 25 4 15 11 14 6 4 16 21 54 24 6 5 10 6 28 23 5 28 21 5 29 21 8 10 4 9 4 14 5 90 98 13 12 10 5 5 9 28 4 17 13 21 4 58 5 4 26 5 4 5 34 4 14 9 10 5 14 17 14 5 8 100 44 31 4 13 5 12 13 5 80 9 4 40 6 86 11 11 4 24 4 4 GRMZM2G119499_P01 NP_001104980 glutathione transferase11 seq=translation; coord=1:7824444..7825878:-1; parent_transcript=GRMZM2G119499_T01; parent_gene=GRMZM2G119499 4.52367 -0.231983 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 10724 10724 10724 10498 8283 7690 5527 4364 2870 1880 1174 641 371 201 108 78 24 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10711 10711 10711 10485 8264 7549 5219 3657 2027 1070 575 154 28 18 1 0 0 1 2 3 4 5 6 7 4362 4518 1512 263 69 0 0 2 0 1 2 3 4 5 6 7 3267 6387 959 108 3 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2863 (charge 2) 1559.8 2 155.08 157.108 159.076 160.385 164.957 167.081 169.099 171.076 175.119 183.076 187.144 188.147 189.086 197.128 200.139 215.139 218.149 219.152 226.118 243.145 250.129 256.092 268.14 273.83 285.167 287.172 300.117 305.181 306.185 329.143 343.198 358.208 376.219 388.17 471.303 482.273 491.245 499.298 526.28 531.26 593.297 596.352 619.091 673.338 686.304 711.341 742.828 758.386 771.899 781.409 839.398 842.398 868.415 881.479 883.671 912.415 940.519 954.43 964.466 968.515 970.459 1018.43 1025.5 1043.52 1061.51 1111.52 1112.59 1119.48 1140.57 1184.59 1186.59 1255.62 1314.65 1342.66 1386.7 1387.68 1413.7 3 3 4 2 2 3 2 14 7 3 98 3 3 5 14 39 75 5 7 7 4 4 16 3 6 3 10 48 4 3 3 5 69 5 7 4 4 82 5 7 15 4 4 5 24 12 4 6 22 40 5 7 5 6 4 4 4 11 4 18 25 6 5 4 33 7 7 4 20 100 12 13 13 21 23 10 17 GRMZM2G028156_P01 seq=translation; coord=8:4108305..4111250:-1; parent_transcript=GRMZM2G028156_T01; parent_gene=GRMZM2G028156 MAAAMGNPIL TLPAPEGNGT GGGDADQQLQ QAPPKPPPPG AKTDPPATVA THTRTIGIIH PPPDIRVIIE KTATFVAKNG PEFERRIISL NQGNAKFNFL QPSDPYHAYY QHRVSEIAAA PPGADGPSGA DTGAAPDESP ASAPADGAAA APVDGAAADA KADHSAPFRV GPPPKVLVPP KAELYTVRLP EGITGEELDI IKLTAQFVAR NGKNFLTSLA QRESNNMQFH FIRPTHSMFP FFTALTDAYS RVLRPAEGVP ALLKELREGS KDLTTVLERC LNRLEWDRSQ EQARQQAEDE VEQERMQMSM IDWHDFVVVE TIEFADDEYE GLPVPLTLEE LKRQKRMENL GEEEAMDLTE PSKEVEMEMD EEEMQLVEEG MRAARLEEND GAAQVSLPGD DEAPMRIVKN YKRPEERIPA ERDPTKFVVS PITGELIPIS EMEEHMRISL IDPKYKEQKE RMLAKIKETT LAPDDEISRN IVGLARTRPD IFGTTEEEVS NAVKAEIEKK KDEQPKQVIW DGHSGSIGRT ATHALSQPQG GEEQFDATNV DGRPVPGPAP LVRPGMPLPR PPQPLPLVNV PRFIAPPAPY SVPPPGSHMP GVPHMMPHMH LPPQQIPGQP PMVRMPGQMV HMPTSIPPPP GQTQFMPGPP RTFAMPPSSH MPPMINPIGI PQPPAPPLPP QPPAEEQPPP PDEPEPKRQR TDDASLIPAE QYLVQHPGPA SISVSVPNLD EGNLRGQILQ IPVQSLSDTV GSLKEQIAGE LQLPANKQKL SVRTSFLKDN LTLAYYNVGP GVVINLTLRE RGGRKK GRMZM2G431306_P01 NP_001169587 hypothetical protein LOC100383468 seq=translation; coord=3:39472712..39476212:-1; parent_transcript=GRMZM2G431306_T01; parent_gene=GRMZM2G431306 MPAAMGTPIL TLPAPDGNGT GGGDANQQLL QAPPKPPPPG AKTDPPATVA THTRTIGIIH PPPDIRVIIE KTATFVAKNG PEFERRIISL NQGNAKFNFL QPSDPYHAYY QHRVSEIAAT PPSADGLSGA ETDTAPAEAP ASTPADGAAA VPADGAAVDT KADHSAPFRV VPPPKVLVPP KAELYTVRLP EGITGEELDI IKLTAQFVAR NGKNFLTSLA QRESNNMQFH FIRPTHSMFP FFTELTDAYS RVLRPAEGVP ALLKELREGS KDLTTVLERC LNRLEWDRSQ EQARQQAEDE VEQERMQMSM IDWHDFVVVE TIEFADDEYE GLPVPLTLEE LKRQKRMENL GEEEAMDLTE PAKEVEMEMD EEEMQLVEEG MRAAQLEEND GGSQVNVAGD DETPMRIVKN YKRPEERIPA ERDPTKFVVS PITGELIPIS EMEEHMRISL IDPKYKEQKE RMLAKIKETT LAPDDEISRN IVGLARTRPD IFGTTEEEVS NAVKAEIEKK KDEQPKQVIW DGHSGSIGRT ATHALSQIQG GEEQFDASNV DGRPVPGPAP LVRPGMPLPR PPQPLPLVNV PRFIAPPAPY SVPPPGSHMP GVPQMMPHMH LHPQQIPGQP PMVRMPGQMV HMPTSIPPPP GQTQFMPGPP PHTFAMPPSS HMPHMINPIG IPQPPAPPLP PQPPAEEQPP PPDEPEPKRQ RTDDGSLIPA EQFLAQHQGP ASISVSVPNL DEGNLRGQVL QIPVQSLSDT VGSLKEQIAG ELQLPANKQK LSVRTSFLKD NLTLAYYNVG PGVVINLTLR ERGGRKK GRMZM2G431306_P02 NP_001169587 hypothetical protein LOC100383468 seq=translation; coord=3:39472712..39476212:-1; parent_transcript=GRMZM2G431306_T02; parent_gene=GRMZM2G431306 MPAAMGTPIL TLPAPDGNGT GGGDANQQLL QAPPKPPPPG AKTDPPATVA THTRTIGIIH PPPDIRVIIE KTATFVAKNG PEFERRIISL NQGNAKFNFL QPSDPYHAYY QHRVSEIAAT PPSADGLSGA ETDTAPAEAP ASTPADGAAA VPADGAAVDT KADHSAPFRV VPPPKVLVPP KAELYTVRLP EGITGEELDI IKLTAQFVAR NGKNFLTSLA QRESNNMQFH FIRPTHSMFP FFTELTDAYS RVLRPAEGVP ALLKELREGS KDLTTVLERC LNRLEWDRSQ EQARQQAEDE VEQERMQMSM IDWHDFVVVE TIEFADDEYE GLPVPLTLEE LKRQKRMENL GEEEAMDLTE PAKEVEMEMD EEEMQLVEEG MRAAQLEEND GGSQVNVAGD DETPMRIVKN YKRPEERIPA ERDPTKFVVS PITGELIPIS EMEEHMRISL IDPKYKEQKE RMLAKIKETT LAPDDEISRN IVGLARTRPD IFGTTEEEVS NAVKAEIEKK KDEQPKQVIW DGHSGSIGRT ATHALSQIQG GEEQFDASNV DGRPVPGPAP LVRPGMPLPR PPQPLPLVNV PRFIAPPAPY SVPPPGSHMP GVPQMMPHMH LHPQQIPGQP PMVRMPGQMV HMPTSIPPPP GQTQFMPGPP PHTFAMPPSS HMPHMINPIG IPQPPAPPLP PQPPAEEQPP PPDEPEPKRQ RTDDGSLIPA EQFLAQHQGP ASISVSVPNL DEGNLRGQVL QIPVQSLSDT VGSLKEQIAG ELQLPANKQK LSVRTSFLKD NLTLAYYNVG PGVVINLTLR ERGGRKK GRMZM2G431306_P03 NP_001169587 hypothetical protein LOC100383468 seq=translation; coord=3:39473215..39476212:-1; parent_transcript=GRMZM2G431306_T03; parent_gene=GRMZM2G431306 MPAAMGTPIL TLPAPDGNGT GGGDANQQLL QAPPKPPPPG AKTDPPATVA THTRTIGIIH PPPDIRVIIE KTATFVAKNG PEFERRIISL NQGNAKFNFL QPSDPYHAYY QHRVSEIAAT PPSADGLSGA ETDTAPAEAP ASTPADGAAA VPADGAAVDT KADHSAPFRV VPPPKVLVPP KAELYTVRLP EGITGEELDI IKLTAQFVAR NGKNFLTSLA QRESNNMQFH FIRPTHSMFP FFTELTDAYS RVLRPAEGVP ALLKELREGS KDLTTVLERC LNRLEWDRSQ EQARQQAEDE VEQERMQMSM IDWHDFVVVE TIEFADDEYE GLPVPLTLEE LKRQKRMENL GEEEAMDLTE PAKEVEMEMD EEEMQLVEEG MRAAQLEEND GGSQVNVAGD DETPMRIVKN YKRPEERIPA ERDPTKFVVS PITGELIPIS EMEEHMRISL IDPKYKEQKE RMLAKIKETT LAPDDEISRN IVGLARTRPD IFGTTEEEVS NAVKAEIEKK KDEQPKQVIW DGHSGSIGRT ATHALSQIQG GEEQFDASNV DGRPVPGPAP LVRPGMPLPR PPQPLPLVNV PRFIAPPAPY SVPPPGSHMP GVPQMMPHMH LHPQQIPGQP PMVRMPGQMV HMPTSIPPPP GQTQFMPGPP PHTFAMPPSS HMPHMINPIG IPQPPAPPLP PQPPAEEQPP PPDEPEPKRQ RTDDGSLIPA EQFLAQHQGP ASISVSVPNL DEGNLRGQVL QIPVQSLSDT VGSLKEQIAG ELQLPANKQK LSVRTSFLKD NLTLAYYNVG PGVVINLTLR ERGGRKK 6.81355 -0.316909 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 7789 7789 7789 7755 7648 7165 6694 6148 5433 3930 2732 1378 663 282 124 74 33 16 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7795 7795 7795 7761 7654 7166 6684 6008 5128 3367 1869 535 95 7 1 0 0 1 2 3 4 5 6 7 2646 3169 1509 388 69 14 3 0 0 1 2 3 4 5 6 7 1462 3252 2112 806 135 23 4 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2864 (charge 3) 1266.64 3 154.086 155.081 155.118 157.097 157.109 157.134 158.092 159.076 159.09 167.081 167.118 169.097 169.133 171.076 171.113 173.055 173.092 173.128 175.071 175.119 176.122 183.113 183.149 185.092 186.123 187.107 189.087 194.128 195.113 197.128 199.071 199.108 200.139 201.123 204.134 207.115 210.088 212.103 217.082 218.152 226.154 228.097 232.139 235.118 237.135 240.135 242.149 244.166 252.133 254.153 258.144 266.148 270.144 272.172 276.167 280.169 283.176 293.159 299.133 304.948 309.198 311.171 313.186 318.51 337.187 346.969 350.148 351.203 358.174 360.223 367.199 380.228 382.209 386.212 395.197 396.198 398.207 400.219 408.227 413.222 416.222 428.737 431.258 468.256 475.223 476.727 479.261 497.266 514.274 525.783 528.313 585.308 602.233 625.368 680.351 684.378 699.285 785.426 856.46 953.517 8 16 10 7 7 12 23 22 5 9 7 63 8 59 43 8 14 28 5 100 5 12 15 17 11 8 40 15 17 10 5 11 5 11 4 10 11 16 27 6 14 25 4 8 4 32 12 9 15 4 9 16 22 59 17 10 11 9 10 4 9 36 17 12 17 9 34 17 7 12 9 7 15 32 14 10 11 9 17 21 10 9 10 10 14 20 9 10 22 8 40 55 38 40 4 24 18 44 24 18 GRMZM5G834758_P02 P27347 DNA-binding protein MNB1B (HMG1-like protein) seq=translation; coord=5:63800401..63802605:-1; parent_transcript=GRMZM5G834758_T02; parent_gene=GRMZM5G834758 MKGAKSKGAA KADAKLAVKS KGAEKPAKGR KGKAGKDPNK PKRAPSAFFV FMEEFRKEFK EKNPKNKSVA AVGKAAGDRW KSLSESDKAP YVAKANKLKL EYNKAIAAYN KGESTAAKKA PAKEEEEEDE EESDKSKSEV NDEDDEEGSE EDEDDDE GRMZM5G834758_P03 P27347 DNA-binding protein MNB1B (HMG1-like protein) seq=translation; coord=5:63800401..63802605:-1; parent_transcript=GRMZM5G834758_T03; parent_gene=GRMZM5G834758 MKGAKSKGAA KADAKLAVKS KGAEKPAKGR KGKAGKDPNK PKRAPSAFFV FMEEFRKEFK EKNPKNKSVA AVGKAAGDRW KSLSESDKAP YVAKANKLKL EYNKAIAAYN KGESTAAKKA PAKEEEEEDE EESDKSKSEV NDEDDEEGSE EVYKIYSCLL HIFSLDKIPI NPGYIACSCI KQVAKFIFDH NVDLVVLYWI PSMQNICRFA YATLFCKSSI 5.6249 -0.288456 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 7383 7383 7383 7042 6813 6082 5678 3812 2987 1475 883 535 367 185 117 24 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7339 7339 7339 6998 6757 5978 5519 3437 2385 916 487 255 159 1 0 0 1 2 3 4 3433 3224 670 68 0 0 1 2 3 4 5 6 7 1798 4490 949 125 23 0 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2867 (charge 2) 1394.73 2 152.056 154.61 155.081 157.108 157.133 158.092 158.137 159.076 169.097 171.076 175.119 181.097 185.092 185.128 186.133 187.071 189.087 197.13 200.139 207.112 209.103 212.104 215.139 218.15 226.118 227.102 234.145 243.143 256.165 275.103 278.114 286.141 289.187 292.128 299.207 302.134 306.143 310.169 327.203 331.161 333.187 335.56 363.198 374.206 375.723 377.953 390.232 411.191 418.203 462.232 473.214 477.268 482.226 488.181 517.235 573.323 606.304 645.318 663.33 687.817 690.331 696.823 717.321 729.35 734.346 747.358 791.421 857.407 888.442 893.449 905.454 972.44 1068.53 1106.01 1133.51 1139.55 1210.59 3 2 4 3 100 4 4 4 3 6 29 13 3 84 3 11 14 5 4 5 12 3 30 23 12 5 4 11 67 3 4 3 11 3 9 4 6 13 14 3 9 2 4 3 3 3 6 4 5 4 3 17 14 3 3 5 6 9 37 17 3 47 4 10 5 5 14 5 3 5 13 5 11 3 5 12 10 GRMZM2G019876_P01 seq=translation; coord=2:18003198..18004791:-1; parent_transcript=GRMZM2G019876_T01; parent_gene=GRMZM2G019876 MAEAANEEDA KRTGLEGTGL PLQGGSHGNL RSAGSDQQLR QMLDSLKSSK SPAVINYGAS WCRVCSQILP SFCKCSDKFK KLTFIYVDID ECPETTQNIR YTPTFHFYRD GERVDEMLGA GEERLHDRLW LHS 5.9158 -0.319773 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3614 3614 3614 3555 3422 3181 2862 2672 1720 1022 493 261 115 57 22 11 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3619 3619 3619 3560 3427 3162 2841 2589 1301 661 150 69 10 1 0 0 1 2 3 4 2083 1315 202 19 0 0 1 2 3 4 5 6 7 679 2075 692 143 23 3 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2868 (charge 2) 1245.57 2 152.057 155.081 157.061 157.097 159.076 159.113 167.081 169.096 169.133 171.077 171.112 172.117 173.092 173.128 175.119 181.097 185.092 186.124 187.108 189.087 197.128 199.108 201.086 204.134 212.103 217.082 226.154 228.098 230.113 239.114 240.135 243.097 244.164 249.098 262.14 264.133 267.109 274.103 286.138 289.189 299.136 306.156 311.172 314.135 324.166 327.167 349.172 366.176 374.251 382.208 398.204 417.256 448.237 489.278 528.314 537.272 557.336 560.544 570.301 572.061 582.305 590.815 595.563 597.305 599.352 601.562 606.305 608.569 612.828 618.318 619.832 624.337 671.347 699.342 701.33 717.695 720.357 726.416 729.343 732.373 747.363 757.413 770.411 772.389 781.385 786.728 791.408 796.398 798.402 801.405 832.448 844.376 861.413 869.482 889.468 897.471 915.421 932.446 990.519 1003.48 10 14 10 12 35 12 11 9 5 9 48 8 16 4 43 11 11 6 5 5 5 13 17 6 10 13 20 13 6 21 21 53 10 6 12 5 21 11 5 4 4 13 14 29 22 5 19 4 17 10 4 4 4 4 21 4 11 26 4 4 4 20 5 12 4 100 4 22 27 11 4 5 9 37 4 4 10 21 5 12 16 5 12 16 12 58 6 5 33 6 4 10 20 14 10 9 5 19 14 10 GRMZM5G834758_P02 P27347 DNA-binding protein MNB1B (HMG1-like protein) seq=translation; coord=5:63800401..63802605:-1; parent_transcript=GRMZM5G834758_T02; parent_gene=GRMZM5G834758 GRMZM5G834758_P03 P27347 DNA-binding protein MNB1B (HMG1-like protein) seq=translation; coord=5:63800401..63802605:-1; parent_transcript=GRMZM5G834758_T03; parent_gene=GRMZM5G834758 5.78921 -0.31293 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 8977 8977 8841 8524 8147 7482 6302 4760 2932 1808 1088 604 229 105 43 14 6 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8981 8981 8845 8528 8122 7409 6012 4088 2155 881 393 104 10 1 0 0 1 2 3 4 5 6 2795 3651 1854 507 147 43 0 0 1 2 3 4 5 6 7 1685 4512 2036 551 183 14 6 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2871 (charge 3) 1394.73 3 155.081 155.118 157.098 157.133 158.092 158.137 159.076 163.133 166.062 167.055 169.097 169.133 170.117 171.076 171.149 173.092 173.128 175.119 176.107 181.11 183.113 185.092 185.128 187.071 189.087 192.077 195.088 197.128 198.13 199.107 201.123 204.134 207.112 209.105 213.086 215.139 218.15 221.128 226.118 227.102 232.141 234.144 235.118 243.142 245.075 256.166 266.161 270.96 278.115 287.975 290.985 296.134 300.119 304.947 309.669 322.958 328.113 333.188 347.228 360.028 361.026 363.023 365.154 383.163 389.19 401.212 404.17 417.707 431.086 444.221 453.24 460.211 462.219 473.222 477.267 482.228 485.273 518.239 526.253 531.229 534.767 539.741 566.256 569.306 573.326 575.259 588.282 599.332 601.305 603.263 606.308 645.321 663.33 704.314 716.328 768.43 782.293 791.426 817.379 905.475 3 2 4 100 7 8 9 12 3 3 2 3 3 3 3 4 9 18 7 3 2 4 23 9 2 2 3 31 3 4 4 4 9 10 4 23 14 3 9 8 3 4 3 4 4 3 3 7 6 6 2 4 3 22 16 18 2 7 3 4 18 4 5 6 4 2 3 8 3 3 3 3 5 6 8 16 4 2 2 2 3 13 3 3 8 20 2 3 3 3 4 3 19 2 3 5 4 7 4 5 GRMZM5G861390_P01 P05494 ATP synthase subunit alpha, mitochondrial seq=translation; coord=Mt:523288..525296:-1; parent_transcript=GRMZM5G861390_T01; parent_gene=GRMZM5G861390 MEFSPRAAEL TTLLESRMIN FYTNLKVDEI GRVVSVGDGI ARVYGLNEIQ AGEMVEFASG VKGIALNLEN ENVGIVVFGS DTAIKEGDLV KRTGSIVDVP AGKAMLGRVV DALGVPIDGK GALSDHERRR VEVKAPGIIE RKSVHEPMQT GLKAVDSLVP IGRGQRELII GDRQTGKTAI AIDTILNQKQ MNSRGTNESE TLYCVYVAIG QKRSTVAQLV QILSEANALE YSMLVAATAS DPAPLQFLAP YSGCAMGEYF RDNGMHALII YDDLSKQAVA YRQMSLLLRR PPGREAFPGD VFYLHSRLLE RAAKRSDQTG AGSLTALPVI ETQAGDVSAY IPTNVISITD GQICLETELF YRGIRPAINV GLSVSRVGSA AQLKAMKQVC GSSKLELAQY REVAAFAQFG SDLDAATQAL LNRGARLTEV PKQPQYEPLP IEKQIVVIYA AVNGFCDRMP LDRISQYEKN ILSTINPELL KSFLEKGGLT NERKMEPDAS LKESALNL GRMZM5G829375_P01 P05494 ATP synthase subunit alpha, mitochondrial seq=translation; coord=Mt:454351..456359:-1; parent_transcript=GRMZM5G829375_T01; parent_gene=GRMZM5G829375 MEFSPRAAEL TTLLESRMIN FYTNLKVDEI GRVVSVGDGI ARVYGLNEIQ AGEMVEFASG VKGIALNLEN ENVGIVVFGS DTAIKEGDLV KRTGSIVDVP AGKAMLGRVV DALGVPIDGK GALSDHERRR VEVKAPGIIE RKSVHEPMQT GLKAVDSLVP IGRGQRELII GDRQTGKTAI AIDTILNQKQ MNSRGTNESE TLYCVYVAIG QKRSTVAQLV QILSEANALE YSMLVAATAS DPAPLQFLAP YSGCAMGEYF RDNGMHALII YDDLSKQAVA YRQMSLLLRR PPGREAFPGD VFYLHSRLLE RAAKRSDQTG AGSLTALPVI ETQAGDVSAY IPTNVISITD GQICLETELF YRGIRPAINV GLSVSRVGSA AQLKAMKQVC GSSKLELAQY REVAAFAQFG SDLDAATQAL LNRGARLTEV PKQPQYEPLP IEKQIVVIYA AVNGFCDRMP LDRISQYEKN ILSTINPELL KSFLEKGGLT NERKMEPDAS LKESALNL GRMZM5G845063_P01 seq=translation; coord=3:74659634..74660746:1; parent_transcript=GRMZM5G845063_T01; parent_gene=GRMZM5G845063 MEFSPRAAEL TTLLESRMIN FYTNLKVDEI GRVVSVGDGI ARVYGLNEIQ AGEMVEFASG VKGIALNLEN ENVGIVVFGS DTAIKEGDLV KRTGSIVDVP AGKAMLGRVV DALGVPIDGK GALSDHEQRR VEVKAPGIIE RKSVHEPMQT GLKAVDSLVP IGRGQRELII GDRQTGKIAI AIDTILNQKQ MNSRGTNESE TLYCVYVAIG 7.9519 -0.429833 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 7363 7363 7363 7158 6844 6302 5069 3823 2468 1417 694 271 105 40 3 2 2 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 7366 7366 7366 7161 6842 6243 4905 3233 1491 367 79 1 0 0 1 2 3 4 5 6 7 2309 3022 1463 503 67 3 6 0 0 1 2 3 4 5 6 7 1199 3346 1968 670 173 13 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2872 (charge 3) 1242.61 3 153.102 155.081 157.108 157.133 158.092 159.078 159.091 159.113 160.117 166.061 167.082 169.097 171.113 173.092 173.128 175.119 181.097 183.149 184.108 185.091 186.124 187.107 194.093 195.076 197.129 198.124 199.108 201.123 204.134 209.091 212.103 213.087 221.103 226.119 230.114 232.616 237.135 239.114 242.186 244.166 249.098 252.632 256.145 260.197 267.108 269.126 275.635 284.138 287.136 294.15 299.139 303.154 306.156 309.203 317.217 318.222 320.169 324.166 326.169 346.15 347.154 349.17 357.25 362.182 364.161 366.178 382.209 394.172 401.217 418.267 425.214 435.198 438.645 447.2 453.21 456.051 464.23 467.456 470.242 488.261 491.226 501.24 505.235 511.289 513.348 515.026 529.299 530.3 532.287 536.786 546.327 550.262 558.801 570.304 573.053 612.331 629.361 633.299 709.387 726.415 3 4 3 3 5 8 4 100 8 5 4 4 5 4 15 19 17 7 3 4 3 13 5 4 4 3 4 3 5 3 7 3 8 5 4 4 12 21 3 4 18 6 3 12 42 5 10 3 3 3 3 9 15 7 21 4 3 25 6 15 3 3 5 3 5 5 4 4 3 18 3 11 5 5 20 4 4 3 3 3 6 4 3 5 4 3 17 6 3 6 5 11 4 3 4 3 3 3 4 8 GRMZM2G059083_P01 NP_001104851 ferredoxin seq=translation; coord=3:147290518..147292751:-1; parent_transcript=GRMZM2G059083_T01; parent_gene=GRMZM2G059083 GRMZM2G059083_P03 NP_001104851 ferredoxin seq=translation; coord=3:147290712..147292701:-1; parent_transcript=GRMZM2G059083_T03; parent_gene=GRMZM2G059083 GRMZM2G059083_P04 NP_001104851 ferredoxin seq=translation; coord=3:147286676..147292683:-1; parent_transcript=GRMZM2G059083_T04; parent_gene=GRMZM2G059083 GRMZM2G059083_P02 NP_001104851 ferredoxin seq=translation; coord=3:147290527..147292751:-1; parent_transcript=GRMZM2G059083_T02; parent_gene=GRMZM2G059083 6.90563 -0.354135 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 8743 8743 8743 8743 8185 7668 6583 5068 3567 2126 1068 479 186 69 22 9 6 5 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8750 8750 8750 8750 8192 7675 6538 4813 2888 1450 482 123 23 1 0 0 1 2 3 4 5 6 3275 3751 1339 336 46 9 0 0 1 2 3 4 5 6 7 1400 4586 2051 659 48 3 0 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2879 (charge 3) 1489.77 3 155.082 157.097 158.093 159.077 159.113 161.092 166.061 167.082 169.097 169.134 171.077 171.113 173.092 173.129 175.107 175.119 181.095 183.149 185.092 185.165 186.124 187.108 187.127 189.087 191.085 192.09 193.081 195.112 197.129 199.108 201.087 204.134 205.138 213.087 219.079 223.155 226.155 227.102 231.098 235.121 240.135 244.165 251.15 253.093 257.198 272.124 275.208 281.672 303.203 305.207 314.133 325.224 331.679 339.14 346.184 352.707 366.18 368.14 400.267 423.692 426.173 427.173 432.695 453.211 455.175 456.176 466.705 467.207 471.329 476.211 480.215 482.233 495.833 498.267 512.251 540.265 541.267 565.299 568.249 569.259 585.304 594.372 648.381 649.381 671.408 677.339 691.425 699.389 705.312 706.316 748.362 785.44 786.439 788.471 800.453 871.494 932.406 933.405 972.537 1101.58 9 10 7 10 26 7 10 9 18 11 10 7 15 9 7 31 10 7 24 9 28 39 11 7 30 9 16 8 15 8 16 100 35 18 9 9 19 11 14 8 7 9 11 13 7 14 25 7 29 8 12 19 13 8 11 12 8 9 10 11 12 12 8 8 14 10 18 23 53 12 7 13 10 46 8 11 10 14 14 9 10 30 10 7 21 10 8 7 11 12 7 15 14 7 17 13 7 11 17 8 GRMZM2G314647_P01 NP_001151777 dynamin-related protein 1A seq=translation; coord=8:66662443..66672048:-1; parent_transcript=GRMZM2G314647_T01; parent_gene=GRMZM2G314647 MDNLITLVNK LQRACTALGD HGEESALPTL WDSLPAIAVV GGQSSGKSSV LESVVGKDFL PRGSGIVTRR PLVLQLHRID GDREYAEFMH LPRKRFTDFA AVRKEIADET DRETGRSKQI SPVPIHLSIF SPYVVNLTLI DLPGLTKVAV EGQPENIVQD IENMVRSYIE KPNCIILAVS PANQDLATSD AIKISREVDP KGERTFGVLT KIDLMDKGTD AVDILEGRSY RLQTPWVGVV NRSQQDINKN VDMIAARRRE REYFATTPEY KHMASRMGSE YLGKMLSKHL EQVIKSRIPG IQSLITKTIA ELETELNRLG KPIANDAGGK LYTIMEICRM FDSIYKEHLD GVRPGGEKVY HVFDNQFPVA IKRLQFDKQL SMENVKKLIT EADGYQPHLI APEQGYRRLI ESCLISIRGP AEAAVDAVHA ILKDLVRKAI NETHELKQFP TLRVEVGNAA FESLDRMRDE SKKNTLKLVD MECSYLTVDF FRKLPQDVER GGNPSHSIFD RYNDSYLRRI GQTVLSYVNM VCSTLRNSIP KSIVYCQVRE AKRSLLDHFF TELGAREMKQ LSKLLDEDPA VMERRTNLAK RLELYRSAQS EIDAVAWSK GRMZM2G149717_P01 B8A3F5 Putative uncharacterized protein seq=translation; coord=6:163428972..163435944:-1; parent_transcript=GRMZM2G149717_T01; parent_gene=GRMZM2G149717 MDNLITLVNK LQRACTALGD HGEESALPTL WDSLPAIAVV GGQVPFFPSR ARFFALVLIG SGAVAPASWV WISRVAGGTA RSSGKSSVLE SVVGKDFLPR GSGIVTRRPL VLQLHRIDGD REYAEFMHLP RKRFTDFAAV RKEIADETDR ETGRSKQIST VPIHLSIFSP HGKMQTLEGY IVTVALSHLN CPLPIVNLTL IDLPGLTKVA VDGQPESIVH DIENMVRSYI EKKCTVVDSG ERTFGVLTKI DLMDKGTDAV DILEGRSYRL QTPWVGVVNR SQQDINKNVD MIAARRRERE YFASTPEYKH MASRMGSEYL GKMLSKHLEQ VIKSRIPGIQ SLITKTIAEL ETELNRLGKP IANDAGGKLY TIMEICRMFD GIYKEHLDGV RPGGEKVYHV FDNQFPVAIK RLQFDKQLSM ENVRKLITEA DGYQPHLIAP EQGYRRLIES CLISIRGPAE AAVDAVHAIL KDLVRKAINE THELKQFPTL RVEVGNAAFE SLDRMRDESK KNTLKLVDME CSYLTVDFFR KLPQDVEKGG NPSHSIFDRY NDSYLRRIGQ TVLSYVNMVC STLRNSIPKS IVYCQVREAK RSLLDHFFTE LGAREMKQLS KLLDEDPAVM ERRTNLAKRL ELYRSAQSEI DAVAWSK 5.11407 -0.276436 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 5205 5205 5205 5080 4844 4536 4106 3502 2752 1871 1115 605 300 122 74 38 15 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5215 5215 5215 5090 4853 4533 4059 3391 2400 1305 641 244 58 19 6 1 0 0 1 2 3 4 5 6 7 1709 2167 1029 266 24 21 1 0 0 1 2 3 4 5 6 7 945 2395 1324 429 105 8 0 11 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2882 (charge 3) 1391.64 3 157.098 157.134 158.092 158.137 159.076 159.092 167.056 168.055 169.052 169.134 170.117 171.077 171.149 173.092 173.129 175.119 176.107 177.111 181.061 183.113 185.092 185.129 186.091 187.072 189.087 197.129 198.133 199.071 200.139 201.123 204.135 207.113 209.089 213.087 215.139 217.082 221.129 223.064 226.119 232.14 237.136 239.114 243.142 245.076 249.123 256.166 270.959 278.113 287.975 290.986 300.166 301.158 304.948 309.67 322.958 329.997 333.188 346.97 360.029 361.026 363.199 367.183 389.195 401.213 407.216 415.726 417.707 430.091 431.087 444.215 453.24 460.214 462.267 473.223 474.224 477.269 482.229 518.238 531.228 539.742 566.257 569.304 574.283 575.26 599.328 601.308 606.299 663.331 700.377 716.33 774.369 782.294 789.343 791.431 814.425 817.38 905.479 928.445 946.422 1043.48 4 100 16 5 18 4 16 4 3 5 7 8 7 5 4 42 35 3 4 5 10 27 5 19 6 80 9 4 4 5 7 8 5 4 64 17 16 7 11 8 4 3 4 8 3 4 13 6 12 5 5 4 47 47 40 5 18 7 47 67 20 5 6 3 3 4 24 9 11 4 4 4 15 18 5 7 57 4 6 36 6 5 5 56 14 7 4 23 7 8 3 10 3 8 5 9 6 4 3 4 GRMZM5G815453_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=Pt:56824..58323:1; parent_transcript=GRMZM5G815453_T01; parent_gene=GRMZM5G815453 GRMZM2G448344_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=1:203925927..203931405:-1; parent_transcript=GRMZM2G448344_T01; parent_gene=GRMZM2G448344 GRMZM2G385635_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=2:200096578..200100853:-1; parent_transcript=GRMZM2G385635_T01; parent_gene=GRMZM2G385635 GRMZM2G360821_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=6:160783975..160786062:1; parent_transcript=GRMZM2G360821_T01; parent_gene=GRMZM2G360821 GRMZM2G308907_P01 seq=translation; coord=9:32379686..32380603:1; parent_transcript=GRMZM2G308907_T01; parent_gene=GRMZM2G308907 GRMZM2G115168_P01 seq=translation; coord=1:131325136..131327527:1; parent_transcript=GRMZM2G115168_T01; parent_gene=GRMZM2G115168 5.50872 -0.297769 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 8796 8796 8796 8548 8162 7512 6872 5345 4173 2241 1222 580 292 151 82 32 19 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 8797 8797 8797 8549 8163 7472 6692 4864 3070 1008 306 74 1 0 0 1 2 3 4 5 6 7 2753 3566 1601 667 172 39 4 7 0 1 2 3 4 5 6 7 1644 4082 2246 642 147 35 6 7 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2883 (charge 3) 1350.68 3 150.066 155.082 155.118 156.077 157.061 157.097 158.092 159.076 166.062 169.097 171.15 173.128 175.119 177.102 180.076 181.097 183.113 184.072 185.165 186.124 187.108 194.129 199.108 200.103 202.082 204.134 213.16 214.118 223.156 225.098 228.098 240.134 244.166 246.109 251.15 253.093 258.144 267.134 272.171 292.103 295.145 299.172 303.203 310.115 327.166 329.657 339.138 345.177 347.203 352.659 365.157 367.136 370.197 381.168 383.168 387.167 394.176 402.273 415.681 422.688 426.172 428.736 431.695 436.157 452.224 454.168 458.222 461.212 464.225 466.206 467.732 475.204 477.244 480.221 482.235 485.757 501.741 503.314 521.245 532.269 539.257 561.263 567.252 581.305 589.287 617.279 647.375 686.295 690.301 702.362 704.307 766.421 784.431 787.344 803.391 844.371 862.381 931.398 943.432 961.44 4 4 5 8 5 5 8 8 6 12 6 10 26 4 4 4 4 5 18 32 14 7 5 4 9 100 6 3 16 13 10 12 5 8 14 11 6 4 5 8 10 5 38 26 12 5 16 6 4 10 7 19 4 5 5 5 8 6 6 16 11 3 8 4 13 13 6 4 6 21 4 5 5 14 10 5 4 4 4 4 7 11 8 5 7 8 12 4 15 6 8 5 14 6 4 6 4 6 6 5 GRMZM2G050325_P01 NP_001151420 LOC100285053 seq=translation; coord=8:3921705..3924577:1; parent_transcript=GRMZM2G050325_T01; parent_gene=GRMZM2G050325 MGKDGIQYAV VDAFTAEPFK GNPAAVCLLE DAAKAADERW MQSVAAEFNI SETAFLLREK SSAAGAVPLF QLRWFTPVAE VELCGHATLA SAHFLFTSVL AEHEKLVEFS TKSGILTAKK VPAPQSTGVS GEGKLFIELD FPTIDLVDCH PSELPAIPDT LNGASIVSVH KSTTAGDLIV ELSSGKEVAD IIPNIHEIEK CSGRGIIVTG PAPAGSGYDF FTRFFCPKFG IDEDPVCGSA HCVLAPYWGG KLGKHKLIAF QASPRSGILY LELEATGRRV RIQGEAVSVM TGTLLA GRMZM2G050325_P02 NP_001151420 LOC100285053 seq=translation; coord=8:3921712..3924577:1; parent_transcript=GRMZM2G050325_T02; parent_gene=GRMZM2G050325 MQSVAAEFNI SETAFLLREK SSAAGAVPLF QLRWFTPVAE VELCGHATLA SAHFLFTSVL AEHEKLVEFS TKSGILTAKK VPAPQSTGVS GEGKLFIELD FPTIDLVDCH PSELPAIPDT LNGASIVSVH KSTTAGDLIV ELSSGKEVAD IIPNIHEIEK CSGRGIIVTG PAPAGSGYDF FTRFFCPKFG IDEDPVCGSA HCVLAPYWGG KLGKHKLIAF QASPRSGILY LELEATGRRV RIQGEAVSVM TGTLLA GRMZM2G050325_P03 NP_001151420 LOC100285053 seq=translation; coord=8:3921712..3923926:1; parent_transcript=GRMZM2G050325_T03; parent_gene=GRMZM2G050325 MQSVAAEFNI SETAFLLREK SSAAGAVPLF QLRWFTPVAE VELCGHATLA SAHFLFTSVL AEHEKLVEFS TKSGILTAKK VPAPQSTGVS GEGKLFIELD FPTIDLVDCH PSELPAIPDT LNGASIVSVH KSTTAGDLIV ELSSGKEVAD IIPNIHEIEK CSGRGIIVTG PAPAGSGYDF FTRFFCPKFG IDEDPVCGSA HCVLAPYWGG KLGKHKLIAF QVRFCTTLGL VRLHLDS 4.85825 -0.249141 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 7051 7051 7051 6488 6050 5439 4455 3567 2599 1597 1034 613 345 184 79 38 26 22 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7055 7055 7055 6492 6037 5364 4261 3104 1908 802 315 132 38 2 1 1 0 0 1 2 3 4 5 6 7 2269 2820 1371 420 126 55 5 0 0 1 2 3 4 5 6 7 1176 3173 1990 558 139 15 3 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2885 (charge 3) 1441.77 3 155.081 155.118 157.097 157.134 158.092 159.076 159.092 169.098 171.077 171.113 173.092 173.129 175.09 175.119 181.134 183.15 185.092 185.165 186.095 186.123 187.071 194.13 197.129 198.124 199.072 199.108 199.181 201.087 204.134 209.103 216.099 218.15 224.103 226.119 228.135 234.145 240.135 244.165 256.129 258.108 266.151 270.108 273.138 288.117 313.153 315.168 327.132 329.183 331.199 333.188 341.218 345.14 347.193 368.265 379.234 385.175 390.199 394.209 396.261 404.215 416.177 429.221 448.215 457.215 458.219 475.251 477.23 478.234 495.244 506.245 528.301 545.271 546.274 556.285 559.268 562.284 576.297 599.327 600.329 616.309 627.319 633.319 637.311 655.305 670.368 673.315 691.325 698.359 705.44 734.37 745.347 762.364 768.352 799.413 816.388 821.403 827.403 833.401 853.382 990.443 6 3 7 4 5 7 4 10 4 4 16 3 3 20 3 5 100 3 2 6 10 3 4 4 4 5 4 21 19 4 4 31 3 17 13 5 5 5 26 9 3 7 10 3 4 3 5 5 3 23 3 5 4 3 3 3 7 3 16 23 3 4 8 16 4 18 17 5 3 4 5 18 7 15 3 66 3 8 3 10 15 10 3 3 7 19 56 10 4 5 6 33 3 7 4 6 10 10 3 3 GRMZM2G351125_P01 seq=translation; coord=UNKNOWN:5070241..5074601:-1; parent_transcript=GRMZM2G351125_T01; parent_gene=GRMZM2G351125 MATTSDAAPV APVEEESTSP AAAEEEPPKK VEASMATTDV APVAPAPVED ENLASAAAEE SPSKKVEAAA AQEEVEEVVE APKKVVAGGG EEEEVRLEGI DEGFGGPEAE NGQAKGVGGG YDSGDVKEAD AEDKGGNLGP TEAEAETDDG GEEPASGDGE TPASLAAPMP VVESKSENAE LGDGDPSLVF LDALEGDEMG ELREEQDEDT GASVEVKVVD KVADDAEPPV TEEEKLEPEV EKGEEVGPRS GDGGELSNEK EVEVFSLREE AVEPQDMVAH VSEANGELGD EKEASDDVVV LGVEEAPEEP SNKDTDGDEV LVLGGKEAPE ESTKKDDDVE DEATKPEPMS EASPVVSQHP QSDLVASSLD VGGDVNNANV TLTQVLNDGS IEELAPASAD SVLEDSLEKE QNAENLATAS EAVEDVGAEV ENVAAPSVDG ILSRELAPES INENNGADEI EGATEVVDRE EEVAYNDIIE AVPDDEDGID NEADDDNDGA NSNTSPARVA ILESSEAAKQ IMKELTEGSS SGNVSRDFTN SMDGQIMLDD SEDDDDGDEK EFDSAALAAL LKAATGGSSD GNVTVASQDG SRIFTMDRPA GLGSSAPSLR PTAPRQPARS NLFSPSELAV TADPTEEMTE EEKKLHDKVE LIRVKFLRLV YRLGATPEET VAAQVLYRLS LAEGIRHGRQ TNRAFSLDNA RRKALLLEAE GKEDLNFSCN ILVLGKTGVG KSATINSVFG EEKSKTDAFS SATTNVREII GDVDGVKIRI IDTPGLRPNV MDQGSNRKIL AAVKKYTKKC PPDIVLYVDR LDSLSRDLND LPLLKTITSV LGSSIWFNAI VALTHAASAP PEGLNGAPMT YEVLMAQRSH IIQQSIRQAA GDMRLMNPVA LVENHPSCRK NREGQKVLPN GQSWRHQMLL LCYSSKILSE ANSLLKLQDP NPGKLFGFRF RSPPLPFLLS SLLQSRAHPK LSAEQGGNEG DSDIELDDYS DVEQDDEEEE YDQLPPFKPL TKAQLARLTK EQKNAYFDEY DYRVKLLQKK QWKDEIRRLK EMKKRGKTDL DDYGYANITG EDDQDPPPEN VSVPLPDMVL PPSFDCDNPT YRYRFLEPTS TVLARPVLDA HGWDHDCGYD GVSVEETLAI LSRFPANVAV QVTKDKKEFS IHLDSSIAAK HGENTSSLAG FDIQTVGRQL AYILRGETKI KNIKKNKTTG GFSVTFLGDI VATGLKIEDQ LSLGKRLSLV ASTGAMRAQG DTAYGANLEA RLKDKDYPIA QSLSTLGLSL MKWRRDLALG ANLQSQFSIG RGSKMAVRLG LNNKLSGQIT VRTSTSEQVQ IALLGLVPVA ASIYRSFRPS EPSFAY 5.74025 -0.294372 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 5601 5601 5570 5326 5081 4630 4298 3985 2860 2153 1231 732 387 208 112 31 12 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5588 5588 5557 5313 5064 4583 4207 3743 2177 1439 506 154 38 1 0 0 1 2 3 4 5 2768 2252 499 77 9 0 0 1 2 3 4 5 6 7 920 3158 1069 405 47 3 1 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2886 (charge 2) 1322.62 2 152.057 157.061 158.092 159.077 167.082 168.066 169.061 169.098 170.117 171.076 171.113 175.071 175.119 176.122 181.061 185.056 185.092 185.165 187.071 187.144 189.087 195.089 195.112 197.129 199.072 199.108 201.088 203.103 207.113 213.087 215.139 225.123 227.102 231.098 234.145 240.134 243.134 248.159 256.094 259.102 262.151 266.15 270.108 273.18 280.165 288.119 298.178 308.161 326.171 327.172 332.16 344.184 346.181 361.219 366.213 370.175 391.196 397.209 401.218 409.211 419.191 429.212 437.204 455.21 468.243 475.264 494.231 495.752 516.244 528.328 532.288 534.257 545.351 565.3 576.236 599.268 603.791 612.34 614.79 616.327 619.317 644.34 652.295 663.352 703.361 706.349 793.38 829.412 832.397 850.402 852.408 961.437 973.473 979.447 981.452 1036.47 1053.53 1062.48 1080.49 1082.49 3 6 6 3 3 5 2 10 3 3 7 9 45 2 2 3 11 2 9 3 2 2 6 29 6 9 3 32 3 14 96 25 5 29 7 3 31 3 6 3 20 10 7 10 3 9 3 14 26 3 7 6 5 3 16 2 3 9 8 3 2 13 10 2 3 3 4 8 3 3 17 17 3 21 3 2 12 2 3 6 25 11 3 16 3 42 34 2 11 100 10 11 3 31 2 3 6 2 28 7 GRMZM2G030167_P01 NP_001141326 hypothetical protein LOC100273417 seq=translation; coord=8:148264071..148273363:1; parent_transcript=GRMZM2G030167_T01; parent_gene=GRMZM2G030167 MNDADVSKQI QQMVRFIRQE ADEKANEISV SAEEEFNIEK LQLVEAEKKK IRQEYERKEK QVEVRKKIEY SMQLNASRIK VLQAQDDLVN KMKDDAMKEL LLVSHNHHEY KNLLKDLIIQ GLLRLKEPAV LLRCRKDDHH HVESVLHSAK HEYASKADVH EPEIFVDHDV YLPPAPSHHD AHGQFCSGGI VLASRDGKIV FESTLDARLE VVFRKKLPEI RKLLFGQTAA 6.00466 -0.387397 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 9735 9735 9581 9034 8025 5893 4182 2100 824 446 162 54 20 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 9739 9739 9585 9026 7964 5536 3397 1051 186 53 1 0 0 1 2 3 4 5 6 7 3411 4054 1812 364 83 12 1 2 0 1 2 3 4 5 6 7 2074 4872 2238 471 73 9 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2887 (charge 3) 1610.77 3 155.082 156.077 157.134 158.093 159.077 167.056 168.056 169.052 169.098 175.119 185.056 185.092 185.129 185.165 186.087 186.124 199.108 201.124 203.103 207.087 209.14 214.119 218.15 223.063 225.098 227.102 229.118 231.097 234.123 237.135 239.095 241.093 244.166 247.13 251.15 253.094 258.1 270.109 272.171 275.125 281.052 296.134 299.062 301.06 302.663 305.182 307.626 316.15 321.623 338.182 344.976 346.975 350.109 357.16 359.029 361.027 368.12 394.173 401.215 408.23 412.184 415.037 417.036 424.23 426.673 435.678 437.251 442.242 461.183 470.19 477.183 479.195 487.17 505.179 508.286 519.722 523.003 529.309 536.295 538.772 553.801 555.326 607.36 614.244 624.229 642.238 644.331 653.325 665.357 671.333 678.396 741.435 744.365 802.43 815.451 829.419 841.435 870.478 1038.45 1169.55 2 3 3 4 2 34 6 2 2 9 3 2 2 2 2 3 2 2 2 2 2 4 5 6 7 3 2 3 2 3 10 2 2 2 3 2 3 2 2 8 6 2 100 28 2 8 4 2 6 2 13 4 4 3 12 6 8 4 4 2 2 17 9 3 1 3 2 7 2 5 4 3 2 8 2 3 2 6 11 3 2 5 4 4 2 9 2 2 2 2 6 5 2 3 2 2 2 4 2 2 GRMZM2G314647_P01 NP_001151777 dynamin-related protein 1A seq=translation; coord=8:66662443..66672048:-1; parent_transcript=GRMZM2G314647_T01; parent_gene=GRMZM2G314647 GRMZM2G149717_P01 B8A3F5 Putative uncharacterized protein seq=translation; coord=6:163428972..163435944:-1; parent_transcript=GRMZM2G149717_T01; parent_gene=GRMZM2G149717 5.86191 -0.31686 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 4774 4774 4774 4423 4137 3886 3526 3257 2317 1784 925 426 191 87 40 17 6 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 4759 4759 4759 4408 4117 3847 3443 3146 1914 1208 485 91 51 3 2 2 1 0 0 1 2 3 4 2155 2207 401 24 0 0 1 2 3 4 5 6 7 1070 2621 966 105 17 0 8 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2889 (charge 2) 1391.64 2 155.082 157.097 157.108 157.134 158.093 159.077 167.082 167.661 169.098 171.077 175.12 176.108 181.097 183.112 185.092 185.129 187.071 189.087 197.129 199.072 199.107 204.133 213.088 215.139 218.151 221.129 226.119 227.104 232.14 240.099 243.133 249.123 256.165 257.125 275.102 283.71 292.128 302.134 306.151 309.669 333.188 363.198 408.586 417.706 455.225 460.218 462.223 473.219 482.23 534.77 540.242 599.326 601.309 605.806 618.333 632.306 636.092 663.337 674.311 687.321 697.328 700.374 716.329 729.353 747.374 807.35 817.388 837.264 857.403 893.454 905.472 921.448 929.447 946.412 972.452 1043.47 1061.46 1082.49 1089.48 1132.48 1144.52 6 3 5 48 13 7 3 3 4 7 60 17 16 3 5 35 18 7 20 3 5 3 4 100 12 15 12 4 4 6 22 4 25 5 3 3 5 6 3 55 20 16 3 20 4 4 6 7 48 5 4 10 4 4 4 11 3 11 11 50 57 7 5 18 4 4 6 4 6 12 4 13 5 6 5 6 4 5 11 13 7 GRMZM2G088196_P01 seq=translation; coord=8:136659605..136668296:-1; parent_transcript=GRMZM2G088196_T01; parent_gene=GRMZM2G088196 MPGCGVAGRG GVGVSSAARP TPRRPCLWMP IARGYGRQPE LKYCTSSQSK SVLLGAGFGR HVTRSNPYLL QNSSSTTMAR LQKSGQFQQL VLDPSRNYLT KTFYNANMKR RVLSRVECFV SSDPINNGWL KPRRSENFTS LESACVQREY KLPVRTRADC KAEQYEITGS PLSPSDADAV MIGDTNEISP WWQEFPKRWM IVLLCFFAFL LCNMDRVNMS IAILPMSSEF SWSPATVGLI QSSFFWGYLL TQILGGIWAD RFGGKLVLGF GVIWWSIATV LTPLAAKIGL PCLLTMRAFM GIGEGVAMPA MNNILSKWIP VSERSRSLAL VYSGMYLGSV TGLALSPLLI SRFGWPSVFY AFGSLGSVWF ALWQSKAHSS PDDDPELSKA EKRHILGGSP LKEPVTSIPW RLILSKAPVW ALIISHFCHN WGTFILLTWM PTYYNQVLKF NLTESGLLCV LPWLTMAVFA NIGGWIADTL VQRGISVTNV RKIMQSIGFL GPALFLTLLS KVRTPAMAVL CMACSQGSDA FSQSGLYSNH QDIGPRYAGV LLGLSNTAGV LAGVFGTAAT GYILQKGSWD SVFKVSVVLY IVGTVVWNVF ATGEKVLE GRMZM2G046681_P01 NP_001130577 hypothetical protein LOC100191676 seq=translation; coord=3:226572521..226577418:1; parent_transcript=GRMZM2G046681_T01; parent_gene=GRMZM2G046681 MPGCGVAGRG DVGVSSAARR TPPQGKSRPC LWMTIARGYG RQHELKYCTS PQSKSLLLEA RFGRHVTRST AYLLQNSRST AMTRLQKSGK FLQPVLDSSR NYLTSTFYNA SLKRRVLSRV ECFVSSDPIN NGWLKPRRSE NFTSLESACV QPEYKLPVRT RADCKAEQYE ITGSPLSPSD VPADAVMIGD TNEISPWWQE FPKRWTVVLL CFFAFLLCNM DRVNMSIAIL PMSSEFSWNP ATVGLIQSSF FWGYLLTQIL GGIWADRFGG KVVLGFGVVW WSFATVLTPL AAKIGLPCLL TMRAFMGIGE GVAMPAMNNI LSKWIPVSER SRSLALVYSG MYLGSVTGLS LSPLLISRFG WPSVFYAFGS LGTVWFALWQ SKAHSSPDDD PELSKAEKRH ILGGSALKEP VTSIPWRLIL SKAPVWALII SHFCHNWGTF ILLTWMPTYY NQVLKFNLTE SGLLCVLPWL TMAVFANIGG WIADTLVQRG VSVTNVRKIM QSIGFLGPAL FLTLLSKVRT PAMAVLCMAC SQGSDAFSQS GLYSNHQDIG PRYAGVLLGL SNTAGVLAGV FGTAATGYIL QKGSWDSVFK VSVVLYIVGT VVWNVFSTGE KILE GRMZM2G046681_P02 NP_001130577 hypothetical protein LOC100191676 seq=translation; coord=3:226572535..226577492:1; parent_transcript=GRMZM2G046681_T02; parent_gene=GRMZM2G046681 MPGCGVAGRG DVGVSSAARR TPPQGKSRPC LWMTIARGYG RQHELKYCTS PQSKSLLLEA RFGRHVTRST AYLLQNSRST AMTRLQKSGK FLQPVLDSSR NYLTSTFYNA SLKRRVLSRV ECFVSSDPIN NGWLKPRRSE NFTSLESACV QPEYKLPVRT RADCKAEQYE ITGSPLSPSD VPADAVMIGD TNEISPWWQE FPKRWTVVLL CFFAFLLCNM DRVNMSIAIL PMSSEFSWNP ATVGLIQSSF FWGYLLTQIL GGIWADRFGG KVVLGFGVVW WSFATVLTPL AAKIGLPCLL TMRAFMGIGE GVAMPAMNNI LSKWIPVSER SRSLALVYSG MYLGSVTGLS LSPLLISRFG WPSVFYAFGS LGTVWFALWQ SKAHSSPDDD PELSKAEKRH ILGGSALKEP VTSIPWRLIL SKAPVWALII SHFCHNWGTF ILLTWMPTYY NQVLKFNLTE SGLLCVLPWL TMAVFANIGG WIADTLVQRG VSVTNVRKIM QSIGFLGPAL FLTLLSKVRT PAMAVLCMAC SQGSDAFSQS GLYSNHQDIG PRYAGVLLGL SNTAGVLAGV FGTAATGYIL QKGSWDSVFK VSVVLYIVGT VVWNVFSTGE KILE GRMZM2G046681_P03 NP_001130577 hypothetical protein LOC100191676 seq=translation; coord=3:226572535..226577490:1; parent_transcript=GRMZM2G046681_T03; parent_gene=GRMZM2G046681 MPGCGVAGRG DVGVSSAARR TPPQGKSRPC LWMTIARGYG RQHELKYCTS PQSKSLLLEA RFGRHVTRST AYLLQNSRST AMTRLQKSGK FLQPVLDSSR NYLTSTFYNA SLKRRVLSRV ECFVSSDPIN NGWLKPRRSE NFTSLESACV QPEYKLPVRT RADCKAEQYE ITGSPLSPSD VPADAVMIGD TNEISPWWQE FPKRWTVVLL CFFAFLLCNM DRVNMSIAIL PMSSEFSWNP ATVGLIQSSF FWGYLLTQIL GGIWADRFGG KVVLGFGVVW WSFATVLTPL AAKIGLPCLL TMRAFMGIGE GVAMPAMNNI LSKWIPVSER SRSLALVYSG MYLGSVTGLS LSPLLISRFG WPSVFYAFGS LGTVWFALWQ SKAHSSPDDD PELSKAEKRH ILGGSALKEP VTSIPWRLIL SKAPVWALII SHFCHNWGTF ILLTWMPTYY NQVATMLCCE TFDFPHYLNY IMIAYHAIGC APQILLSRF 4.47441 -0.271177 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2745 2745 2719 2597 2417 1522 1029 563 277 147 109 53 28 8 3 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2745 2745 2719 2594 2401 1449 933 452 178 70 52 25 23 2 1 1 0 0 1 2 3 4 1748 920 77 19 0 0 1 2 3 4 5 6 425 1982 322 23 0 12 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2890 (charge 2) 1397.62 2 152.057 155.082 156.077 157.098 157.134 164.082 166.061 171.077 173.093 175.119 181.109 182.112 185.092 185.128 189.087 192.077 195.088 199.108 201.123 207.114 209.104 213.087 216.135 225.098 227.102 234.145 240.098 246.098 248.114 256.166 263.105 266.161 272.172 278.124 286.139 294.12 296.135 300.121 322.114 328.114 338.143 340.187 342.131 347.228 365.159 386.215 427.219 433.637 443.141 458.269 460.261 485.275 530.174 555.311 573.325 585.213 606.308 614.35 630.301 642.805 663.322 669.24 688.343 697.826 736.253 756.271 768.429 790.271 807.289 825.303 1015.45 1189.5 2 8 2 2 20 3 19 2 2 9 31 2 3 11 2 31 2 9 2 1 100 3 3 10 24 17 2 2 2 9 2 2 8 13 3 3 17 2 7 7 2 13 2 17 8 3 3 2 19 2 2 3 3 3 50 3 2 6 2 2 2 3 2 2 2 2 6 3 3 9 9 3 GRMZM2G103430_P01 NP_001130564 hypothetical protein LOC100191663 seq=translation; coord=4:38181649..38185320:-1; parent_transcript=GRMZM2G103430_T01; parent_gene=GRMZM2G103430 MSDRQPSEEP EEQVDLEGDD DGMDDDDAGY RRRGSRDDSE EPEEDDDNDE RHGDADDDAG MEPEPAGSKG GDDTGKGPDV AGGGPEDEEE RSKWDDMLAL PPHGSEVFIG GLPRDITEED LRELCEPLGE IYEVRLTKDK DTKENKGFAF VTFMDKEAAQ RAIEDVQDRE FKGRTLRCSL SQAKHRLFVG NVPKGLSEEE LTNTIKGKGP GVINIEMFKD QHDPNRNRGF LFVEYYNHAC ADYARQKLSS PNFKVDGSQL TVSWAEPKGS TDASSAAAQV KTIYVKNLPE NVSKEKIKDL FDKHGEVTKI VLPPAKAGHK RDFGFVHFAE RSSALKAVKG SEKYEIDGQV LEVSMAKPLA DKKPDHSHRP GGGPNYPLPP YGGGGYMGDP YGAYGGGGPA YNQPMIYGRG PAPAGMRMVP MVLPDGRLGY VLQQPGGMPP PPPPRRGSDR RDSGRGGEGH SRRYRPY GRMZM2G103430_P02 NP_001130564 hypothetical protein LOC100191663 seq=translation; coord=4:38181649..38185316:-1; parent_transcript=GRMZM2G103430_T02; parent_gene=GRMZM2G103430 MSDRQPSEEP EEQVDLEGDD DGMDDDDAGY RRRGSRDDSE EPEEDDDNDE RHGDADDDAG MEPEPAGSKG GDDTGKGPDV AGGGPEDEEE RSKWDDMLAL PPHGSEVFIG GLPRDITEED LRELCEPLGE IYEVRLTKDK DTKENKGFAF VTFMDKEAAQ RAIEDVQDRE FKGRTLRCSL SQAKHRLFVG NVPKGLSEEE LTNTIKGKGP GVINIEMFKD QHDPNRNRGF LFVEYYNHAC ADYARQKLSS PNFKVDGSQL TVSWAEPKGS TDASSAAAQV KTIYVKNLPE NVSKEKIKDL FDKHGEVTKI VLPPAKAGHK RDFGFVHFAE RSSALKAVKG SEKYEIDGQV LEVSMAKPLA DKKPDHSHRP GGGPNYPLPP YGGGGYMGDP YGAYGGGGPA YNQPMIYGRG PAPAGMRMVP MVLPDGRLGY VLQQPGGMPP PPPPRRGSDR RDSGRGGEGH SRRYRPY GRMZM2G103430_P03 NP_001130564 hypothetical protein LOC100191663 seq=translation; coord=4:38181649..38185316:-1; parent_transcript=GRMZM2G103430_T03; parent_gene=GRMZM2G103430 MSDRQPSEEP EEQVDLEGDD DGMDDDDAGY RRRGSRDDSE EPEEDDDNDE RHGDADDDAG MEPEPAGSKG GDDTGKGPDV AGGGPEDEEE RSKWDDMLAL PPHGSEVFIG GLPRDITEED LRELCEPLGE IYEVRLTKDK DTKENKGFAF VTFMDKEAAQ RAIEDVQDRE FKGRTLRCSL SQAKHRLFVG NVPKGLSEEE LTNTIKGKGP GVINIEMFKD QHDPNRNRGF LFVEYYNHAC ADYARQKLSS PNFKVDGSQL TVSWAEPKGS TDASSAAAQV KTIYVKNLPE NVSKEKIKDL FDKHGEVTKI VLPPAKAGHK RDFGFVHFAE RSSALKAVKG SEKYEIDGQV LEVSMAKPLA DKKPDHSHRP GGGPNYPLPP YGGGGYMGDP YGAYGGGGPA YNQPMIYGRG PAPAGMRMVP MVLPDGRLGY VLQQPGGMPP PPPPRRGSDR RDSGRGGEGH SRRYRPY GRMZM2G103430_P04 NP_001130564 hypothetical protein LOC100191663 seq=translation; coord=4:38181649..38185316:-1; parent_transcript=GRMZM2G103430_T04; parent_gene=GRMZM2G103430 MSDRQPSEEP EEQVDLEGDD DGMDDDDAGY RRRGSRDDSE EPEEDDDNDE RHGDADDDAG MEPEPAGSKG GDDTGKGPDV AGGGPEDEEE RSKWDDMLAL PPHGSEVFIG GLPRDITEED LRELCEPLGE IYEVRLTKDK DTKENKGFAF VTFMDKEAAQ RAIEDVQDRE FKGRTLRCSL SQAKHRLFVG NVPKGLSEEE LTNTIKGKGP GVINIEMFKH DPNRNRGFLF VEYYNHACAD YARQKLSSPN FKVDGSQLTV SWAEPKGSTD ASSAAAQVKT IYVKNLPENV SKEKIKDLFD KHGEVTKIVL PPAKAGHKRD FGFVHFAERS SALKAVKGSE KYEIDGQVLE VSMAKPLADK KPDHSHRPGG GPNYPLPPYG GGGYMGDPYG AYGGGGPAYN QPMIYGRGPA PAGMRMVPMV LPDGRLGYVL QQPGGMPPPP PPRRGSDRRD SGRGGEGHSR RYRPY GRMZM2G103430_P05 NP_001130564 hypothetical protein LOC100191663 seq=translation; coord=4:38182016..38185320:-1; parent_transcript=GRMZM2G103430_T05; parent_gene=GRMZM2G103430 MSDRQPSEEP EEQVDLEGDD DGMDDDDAGY RRRGSRDDSE EPEEDDDNDE RHGDADDDAG MEPEPAGSKG GDDTGKGPDV AGGGPEDEEE RSKWDDMLAL PPHGSEVFIG GLPRDITEED LRELCEPLGE IYEVRLTKDK DTKENKGFAF VTFMDKEAAQ RAIEDVQDRE FKGRTLRCSL SQAKHRLFVG NVPKGLSEEE LTNTIKGKGP GVINIEMFKD QHDPNRNRGF LFVEYYNHAC ADYARQKLSS PNFKVDGSQL TVSWAEPKGS TDASSAAAQV KTIYVKNLPE NVSKEKIKDL FDKHGEVTKI VLPPAKAGHK RDFGFVHFAE RSSALKAVKG SEKYEIDGQV LEVSMAKPLA DKKPDHSHRP GGGPNYPLPP YGGGGYMGDP YGAYGGGGPA YNQPMIYGRG PAPAGMRMVP MVLPDGRLGY VLQQPGGMPP PPPPRRGSDR RDSGRGGEGH SRRYRPY 6.76089 -0.346712 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 6807 6807 6807 6793 6343 6147 5531 4240 3416 2030 1163 550 207 73 46 24 5 3 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6809 6809 6809 6795 6345 6125 5479 4137 2753 1320 333 77 16 3 1 0 0 1 2 3 4 3377 2991 421 22 0 0 1 2 3 4 5 6 7 1283 3911 1340 237 32 4 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2902 (charge 2) 1192.58 2 152.057 153.102 155.081 156.077 157.061 157.097 158.092 159.076 166.062 167.056 167.081 169.052 169.097 171.076 171.113 171.149 173.056 173.092 173.129 175.072 175.119 176.123 181.062 181.096 182.092 183.078 183.113 185.092 186.124 187.072 189.087 191.085 195.09 198.123 199.071 200.103 201.123 204.134 210.088 212.103 214.119 217.082 221.085 226.155 228.098 230.114 235.118 239.095 241.092 244.165 246.181 252.135 255.117 262.153 270.108 272.17 274.188 285.01 287.007 289.085 299.063 301.06 302.06 305.018 309.204 311.134 317.145 325.113 339.13 343.123 352.162 356.071 357.069 359.067 362.163 365.697 372.167 374.24 390.2 396.155 400.16 412.662 415.164 420.994 421.995 429.211 445.276 454.167 478.21 482.238 516.316 523.298 587.348 659.348 674.381 690.342 730.389 761.415 817.41 832.454 4 4 15 5 16 5 5 20 6 24 8 6 7 36 4 8 6 6 17 7 41 4 5 4 7 6 14 17 6 13 19 13 5 4 19 26 19 30 16 7 5 34 4 49 34 13 5 30 7 22 29 5 6 5 17 5 6 51 51 5 23 27 8 8 100 5 6 8 8 8 5 40 58 7 7 6 6 15 6 7 5 7 5 7 5 4 29 5 5 5 17 43 19 8 33 7 27 36 13 15 GRMZM2G156861_P02 NP_001105003 lipoxygenase seq=translation; coord=3:168695539..168699190:1; parent_transcript=GRMZM2G156861_T02; parent_gene=GRMZM2G156861 5.02942 -0.257919 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 7412 7412 7412 7403 6343 5986 4498 3719 2787 1969 1309 756 323 181 83 43 22 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7415 7415 7415 7406 6346 5939 4269 3221 2080 1092 474 184 40 9 1 0 0 1 2 3 4 5 3074 3272 902 151 16 0 0 1 2 3 4 5 6 7 1411 4252 1419 278 51 2 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2904 (charge 2) 1173.65 2 154.087 155.082 155.093 155.118 156.077 157.097 158.093 159.077 159.113 161.092 167.093 169.097 169.134 171.076 171.113 171.149 173.092 175.106 175.119 176.123 181.097 183.077 183.113 185.092 186.124 187.072 187.108 189.087 191.085 194.13 195.09 195.113 196.145 197.129 199.108 201.088 204.134 211.119 214.155 219.08 224.14 226.155 228.099 231.098 235.119 239.115 242.15 244.166 254.153 256.129 258.145 270.145 272.172 284.125 295.15 303.204 311.172 316.175 323.18 334.188 346.183 373.706 397.215 405.191 411.247 415.431 436.161 449.255 457.253 466.276 476.236 491.269 493.278 498.121 508.3 543.292 556.802 579.311 585.309 586.309 621.323 645.365 650.362 651.364 657.347 672.358 729.388 741.367 743.391 746.408 748.407 784.43 800.385 845.463 916.477 932.505 988.509 1008.67 1085.56 1156.56 5 23 4 7 4 5 9 8 8 4 5 20 26 7 14 4 50 5 98 5 4 5 6 27 16 5 8 8 23 5 6 5 39 56 23 37 48 7 48 6 13 46 6 8 5 16 19 19 5 6 14 18 8 6 13 12 19 5 16 5 5 5 5 4 5 4 5 7 5 6 7 14 6 4 100 14 25 5 14 6 5 31 36 17 7 15 5 4 5 33 6 5 14 6 7 34 5 5 7 5 GRMZM2G107089_P01 NP_001149927 prolyl-tRNA synthetase seq=translation; coord=7:7453972..7459323:1; parent_transcript=GRMZM2G107089_T01; parent_gene=GRMZM2G107089 MAIALAFGGT EPPNPGGQSP QATMASLLRL PSLLSPSKPL LRRRLPAARL AASAASRGQA SATAGAAAPA AAETRGGDRE GQVTPRSADF NAWYTDVIAA AELADYGPVR GTMVIRPYGY AIWEAIQDYL NVKFKETGHS NMYFPQFIPY SFIEKEASHV EGFSPELALV TIGGGKELEE KLVVRPTSET IVNHMFTKWI QSYRDLPLMI NQWANVTRWE MRTKPFIRTL EFLWQEGHTA HATLEEAEKE AMQMIDVYTK FAFEHAAIPV IPGRKSRVET FAGANRTYTI EAMMGDKKAL QAGTSHNLGQ NFSRAFGTQF MDENGQIEHV WQTSWAISTR FVGGIIMTHG DDAGLMLPPR IAPIQVIIVP IWKKGDEKAV VVEAVDSVQK ILKEAGIRVK VDDSELRTPG WKFNHYEMKG VPVRIEIGPR DVTNKSVVVS RRDVPGKQGK EFGVSMEPSI LVNHIKGRLD DIQASLLQKA ITFRDSNIVD VSSYGELKEA ISEGKWARGP WSASDADELK VKEETSATIR CYPFEQPEGT KKCFMTGNPA EEVAIFAKSY 4.72663 -0.201133 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 6558 6558 6229 6146 5840 5409 5010 3642 2932 1770 1016 660 338 198 123 80 54 45 22 19 10 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6560 6560 6231 6148 5792 5276 4924 3202 2300 848 367 74 19 8 1 0 0 1 2 3 4 5 6 3297 2599 577 80 6 1 0 0 1 2 3 4 5 6 7 1020 3577 1545 340 44 25 8 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2908 (charge 2) 1228.63 2 153.066 155.07 155.082 157.097 158.093 159.077 161.092 169.098 170.092 171.076 171.113 172.108 173.093 175.119 181.061 181.097 182.067 185.092 185.165 186.125 187.072 187.144 197.129 198.088 198.123 199.071 200.103 204.135 212.103 214.119 216.098 226.119 227.102 230.114 233.165 238.119 240.135 243.146 244.128 252.136 256.129 259.14 262.085 271.14 272.171 276.167 283.14 287.008 289.163 297.158 301.151 305.184 309.154 311.172 314.182 323.171 327.167 342.178 344.195 354.177 357.067 358.191 362.182 372.186 380.195 382.211 386.215 395.194 398.204 399.202 408.719 419.693 425.214 440.214 443.225 459.233 477.209 533.253 547.283 563.289 585.816 618.323 655.335 673.338 698.346 702.389 715.375 717.38 786.412 788.409 816.435 837.454 857.447 859.45 901.456 903.456 928.481 985.508 987.491 1056.54 3 2 48 2 10 3 3 14 7 3 6 3 18 27 20 9 2 8 3 4 3 19 9 3 2 2 28 9 6 3 3 34 9 12 14 3 18 11 5 4 7 3 8 21 15 33 18 3 6 12 13 2 7 12 8 3 13 6 6 17 8 8 3 7 2 2 2 2 9 2 2 7 18 2 6 2 3 2 3 2 6 6 2 7 8 6 100 3 35 2 7 9 36 2 2 2 8 17 2 6 GRMZM2G034243_P01 NP_001145084 hypothetical protein LOC100278292 seq=translation; coord=9:152858133..152859928:-1; parent_transcript=GRMZM2G034243_T01; parent_gene=GRMZM2G034243 MATSSVLPLH LLSCARRAST STSTAARASA APAVAATTAQ SLEESFGRKG LRFVADPAGG PLAAELSVRN GSSLHLRLGD GLVTSYRPKV YWKDDGCREV LHTVAGKGGV GLVLNDATSS SAQPSLVDGA EWAVRDADSD SYDAVQVELG CTIGKLDISY VVTLYSLSMA TAVIVRNTGS KPVALTGAVL SHIKFDKRGG TAVEGLRGCP YCSYPPPAAA FSLLSPAEAM KREDPGWFGG AEELRQGVWT VEEDLYTTLK KKVSRVYAAP PEERKKRVYS TAPSKFTTID QYSGLGFRLV RMGFDDMYLC SPGGMYDKFG KDYFLCTGMA SMLVPVVVNP GEEWKAAQVI EHDNL 4.12064 -0.249736 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 2574 2574 2574 2555 2464 2300 2087 1906 1427 1149 702 454 175 86 27 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2604 2604 2604 2585 2494 2328 2067 1904 1355 911 457 119 80 2 1 1 0 0 1 2 3 4 1182 1159 240 27 0 0 1 2 3 4 5 6 7 475 1497 494 129 9 1 1 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2910 (charge 2) 953.54 2 154.087 155.082 155.093 155.117 156.086 157.097 157.109 157.134 158.092 159.077 159.092 166.061 166.098 167.055 167.081 169.097 169.134 171.113 171.15 173.093 173.129 175.119 181.097 183.113 183.15 185.056 185.092 185.165 186.096 186.124 187.071 192.996 193.096 194.093 194.13 195.088 195.113 197.128 199.072 199.108 201.124 204.135 209.09 211.12 215.139 217.082 221.104 223.156 226.155 227.103 229.119 231.097 234.124 239.115 244.166 249.161 251.15 254.151 260.124 269.126 272.172 275.17 292.176 294.157 297.672 301.186 306.678 329.191 338.187 341.219 352.2 354.215 363.211 374.24 409.223 433.257 436.221 438.272 445.241 448.227 461.252 466.247 468.771 471.745 475.289 496.605 544.291 548.281 558.323 562.296 580.311 612.347 643.368 661.366 677.321 714.382 725.432 783.364 790.398 796.439 4 39 4 6 9 4 4 4 16 13 13 8 18 10 4 22 10 11 15 4 15 73 9 37 3 3 17 13 4 26 5 4 4 5 4 15 9 10 4 14 100 53 7 11 5 4 10 13 21 5 33 4 10 35 13 38 29 4 4 4 6 23 5 5 14 5 18 5 8 5 5 5 8 15 9 14 5 9 12 4 11 4 5 4 24 4 4 13 11 11 4 15 5 3 25 19 5 4 5 14 GRMZM2G102499_P03 P49106 14-3-3-like protein GF14-6 seq=translation; coord=2:41302953..41306867:-1; parent_transcript=GRMZM2G102499_T03; parent_gene=GRMZM2G102499 MASAELSREE NVYMAKLAEQ AERYEEMVEF MEKVAKTVDS EELTVEERNL LSVAYKNVIG ARRASWRIIS SIEQKEEGRG NEDRVTLIKD YRGKIETELT KICDGILKLL ETHLVPSSTA PESKVFYLKM KGDYYRYLAE FKTGAERKDA AENTMVAYKA AQDIALAELA PTHPIRLGLA LNFSVFYYEI LNSPDRACSL AKQAFDEAIS ELDTLSEESY KDSTLIMQLL RDNLTLWTSD ISEDPAEEIR EAPKRDSSEG Q GRMZM2G102499_P04 P49106 14-3-3-like protein GF14-6 seq=translation; coord=2:41302953..41306867:-1; parent_transcript=GRMZM2G102499_T04; parent_gene=GRMZM2G102499 MASAELSREE NVYMAKLAEQ AERYEEMVEF MEKVAKTVDS EELTVEERNL LSVAYKNVIG ARRASWRIIS SIEQKEEGRG NEDRVTLIKD YRGKIETELT KICDGILKLL ETHLVPSSTA PESKVFYLKM KGDYYRYLAE FKTGAERKDA AENTMVAYKA AQDIALAELA PTHPIRLGLA LNFSVFYYEI LNSPDRACSL AKQAFDEAIS ELDTLSEESY KDSTLIMQLL RDNLTLWTSD ISEDPAEEIR EAPKRDSSEG Q GRMZM2G078641_P01 Q01526 14-3-3-like protein GF14-12 seq=translation; coord=10:123105640..123109630:1; parent_transcript=GRMZM2G078641_T01; parent_gene=GRMZM2G078641 MASAELSREE NVYMAKLAEQ AERYEEMVEF MEKVAKTVDS EELTVEERNL LSVAYKNVIG ARRASWRIIS SIEQKEEGRG NEDRVTLIKD YRGKIETELT KICDGILKLL ESHLVPSSTA PESKVFYLKM KGDYYRYLAE FKTGAERKDA AENTMVAYKA AQDIALAELA PTHPIRLGLA LNFSVFYYEI LNSPDRACSL AKQAFDEAIS ELDTLSEESY KDSTLIMQLL RDNLTLWTSD ISEDPAEEIR EAPKHDSSEG Q GRMZM2G102499_P02 P49106 14-3-3-like protein GF14-6 seq=translation; coord=2:41302953..41306124:-1; parent_transcript=GRMZM2G102499_T02; parent_gene=GRMZM2G102499 MYICRSGVLQ ILKLNCKMAS AELSREENVY MAKLAEQAER YEEMVEFMEK VAKTVDSEEL TVEERNLLSV AYKNVIGARR ASWRIISSIE QKEEGRGNED RVTLIKDYRG KIETELTKIC DGILKLLETH LVPSSTAPES KVFYLKMKGD YYRYLAEFKT GAERKDAAEN TMVAYKAAQD IALAELAPTH PIRLGLALNF SVFYYEILNS PDRACSLAKQ AFDEAISELD TLSEESYKDS TLIMQLLRDN LTLWTSDISE DPAEEIREAP KRDSSEGQ GRMZM2G078641_P02 Q01526 14-3-3-like protein GF14-12 seq=translation; coord=10:123105938..123116261:1; parent_transcript=GRMZM2G078641_T02; parent_gene=GRMZM2G078641 MASAELSREE NVYMAKLAEQ AERYEEMVEF MEKVAKTVDS EELTVEERNL LSVAYKNVIG ARRASWRIIS SIEQKEEGRG NEDRVTLIKD YRGKIETELT KICDGILKLL ESHLVPSSTA PESKVFYLKM KGDYYRYYDC MNPIVVIRYL AEFKTGAERK DAAENTMVAY KAAQDIALAE LAPTHPIRLG LALNFSVFYY EILNSPDRAC SLAKQAFDEA ISELDTLSEE SYKDSTLIMQ LLRDNLTLWT SDISSCLYYS LRAERRRPHH HGSASAHPLP PRRDARQSRH RVLRAPPISQ RRARQTLFPT AVPLSPPTGD HALPPSPQRP PDPAWHTPEI ALFPTESGLA HTGDHALPPF PTVATGSSMA HARSSMAHPQ RERPEWSSEH PCTHWRPGHS PPQSPPHPIP PRITPNPHPD PETFIHLPWS LSLFGSNIRE FGSVSGSDGV TGVASNADAV AMWMVSCRAP CGWCSSPQAT PRLRPRCPPQ HPQHPGGWAA RDTRSSQSPT SRWVATASAI GIHHKTTQWR ARSSLLERMH VLDEANYLVK RAASIQAAVP SVNSAPAVTS GGPFKLPNGV GKPAAPLADL LDLSSDDAPV TISAPTTAPN DFLQDLLGIG LTHSSPIGGA PSISTDILMD LLSIGSSSVQ NGPPTSNFSL PSIETKSVAV TPQVVDLLDG LSSGTSLSVH PVRLDPASNS TLPASGNGSV TQSLSVTNNQ HGQISKGFKF NVKGVVVVLD KFSGRSRGLG FVNFNEKQAM EDAIEATNGL CLDGSNITVD KARPHGPSRD RNGDRYYDRE LGSRYDHGRN YGGGCALRGG GGDCFKCGNP IILLETTHLG TVGEGTNMVV GMTCMVVLEV VMVLIVAVTN TLVIVEMAVA IGAATVMALI DQVLPDGLSS 6.79005 -0.315816 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 6954 6954 6954 6954 6954 6628 6296 5862 5154 3964 2825 1541 878 361 204 109 55 30 3 2 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6965 6965 6965 6965 6965 6639 6289 5727 4921 3428 2023 781 183 16 1 0 0 1 2 3 4 5 6 7 2388 2794 1268 388 86 27 2 19 0 1 2 3 4 5 6 7 1171 2886 2028 659 179 47 2 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2915 (charge 3) 1356.65 3 151.063 153.066 155.082 155.118 157.097 157.108 158.093 159.077 167.082 167.118 169.097 171.076 171.113 173.092 173.128 175.119 181.061 181.097 183.113 185.091 185.165 186.124 187.072 187.108 194.129 195.113 197.091 198.087 199.108 201.087 204.135 207.113 209.09 213.087 214.119 216.098 219.116 226.155 227.103 240.135 244.129 245.097 247.113 249.092 251.151 254.148 258.106 261.156 272.172 274.188 279.162 282.163 293.163 295.148 298.141 303.203 310.177 315.167 318.148 332.193 343.682 347.207 349.183 356.666 359.195 368.192 369.179 379.202 381.215 384.683 386.205 418.242 424.202 426.196 428.736 433.728 451.756 456.259 459.228 469.236 477.244 480.282 485.758 497.237 515.248 525.226 532.275 541.285 563.325 584.334 612.322 620.334 627.319 629.29 669.329 677.361 686.351 712.326 740.371 757.396 10 11 20 24 12 11 25 59 12 9 46 15 27 22 13 100 8 27 17 15 10 74 51 10 42 14 19 11 24 14 57 29 13 13 39 10 9 37 30 14 41 14 14 9 11 17 15 11 30 14 31 9 23 11 18 12 93 30 17 13 9 15 12 13 8 9 8 45 68 11 37 15 11 10 65 14 10 14 13 12 60 48 91 9 30 11 18 35 26 18 17 11 16 15 19 25 8 12 27 12 GRMZM2G102499_P03 P49106 14-3-3-like protein GF14-6 seq=translation; coord=2:41302953..41306867:-1; parent_transcript=GRMZM2G102499_T03; parent_gene=GRMZM2G102499 GRMZM2G102499_P04 P49106 14-3-3-like protein GF14-6 seq=translation; coord=2:41302953..41306867:-1; parent_transcript=GRMZM2G102499_T04; parent_gene=GRMZM2G102499 GRMZM2G078641_P01 Q01526 14-3-3-like protein GF14-12 seq=translation; coord=10:123105640..123109630:1; parent_transcript=GRMZM2G078641_T01; parent_gene=GRMZM2G078641 GRMZM2G102499_P02 P49106 14-3-3-like protein GF14-6 seq=translation; coord=2:41302953..41306124:-1; parent_transcript=GRMZM2G102499_T02; parent_gene=GRMZM2G102499 GRMZM2G078641_P02 Q01526 14-3-3-like protein GF14-12 seq=translation; coord=10:123105938..123116261:1; parent_transcript=GRMZM2G078641_T02; parent_gene=GRMZM2G078641 4.47482 -0.241882 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 5315 5315 5315 5279 4879 4759 3132 2569 1710 1063 657 438 213 119 48 20 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5323 5323 5323 5287 4887 4748 3097 2327 1401 731 427 207 80 31 2 1 1 0 0 1 2 3 4 5 6 7 2836 2000 403 72 4 0 16 0 0 1 2 3 4 5 6 7 1140 3492 591 88 4 0 16 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2916 (charge 2) 1356.65 2 152.057 155.082 155.118 157.062 157.098 159.077 165.102 167.081 169.097 171.113 173.092 175.119 181.097 184.108 185.092 185.13 186.123 187.072 194.129 198.088 200.104 201.087 204.135 207.113 209.092 212.103 214.118 216.098 226.118 227.102 242.113 244.129 248.161 258.109 259.112 283.141 292.167 297.155 310.177 315.167 317.182 319.197 325.184 329.145 331.196 352.953 356.668 381.213 386.206 400.181 430.186 434.229 439.191 442.602 480.286 487.257 490.423 497.227 515.238 521.064 563.319 592.239 629.787 633.322 646.828 671.844 680.362 696.325 712.331 728.362 762.362 778.415 813.371 817.884 842.413 877.387 889.411 907.438 912.435 931.411 971.467 978.481 1005.49 1032.46 1047.5 1049.52 1131.51 1164.56 6 18 17 6 4 70 3 7 18 6 7 20 4 6 6 4 5 100 28 4 19 8 14 5 13 14 29 6 32 25 4 29 16 71 5 8 7 6 45 15 20 14 4 23 5 4 6 32 4 5 7 5 5 5 7 4 4 4 5 4 4 6 8 6 15 4 39 4 5 5 7 7 7 5 6 24 4 6 5 8 5 13 7 7 5 13 5 16 GRMZM2G090542_P01 seq=translation; coord=1:217021624..217059348:1; parent_transcript=GRMZM2G090542_T01; parent_gene=GRMZM2G090542 MAASPDQFRG HARLPHFAAP LRYDLRLRPD LAACTFTGAA AIAVVVSAPT RFLVLNAAEL DVDRASIRFQ DLAPTDVAQF DEDEIMVISF DRELPFGEGV LTMDFTGTLN DQMRGFYRSK YVYNGESRNM AVTQFEAADA RRCFPCWDDP AFKAKFKLTL EVPSDLVALS NMPVAKETVS GLTKTIYYEE SPLMSTYLVA IVVGIFDYIE SSTSEGTKVR VYTQVGKTNQ GKFALDVAVK SLDLYKDYFA TPYPLPKLDM IAIPDFSAGA MENYGLVTYR DTALLYDELL SSASNKQQVA ITVAHELAHQ WFGNLVTMEW WTHLWLNEGF ASWVSYLAVE SLFPEWNNWT QFLDETTSGL RLDALAESHP IEVEVNHASE IDAIFDSISY DKGASVIRML QSYLGAECFQ KALASYIKKY AYSNAKTEDL WVVLEEESGE PVKDLMTTWT KQQGYPVIYA KINGHDLELE QAQFLSDGSS GPGMWIVPVT ACCGSYDAQK KFLLKDKMDK INIKEFSDSQ SADGEKNQII WIKLNIDQTG FYRVKYDDEL AAGLVNAIKA KKLSLMDKIG IVEDSYALSV ACKQTLTSLL RLLNAYNDES DYTVLSHVTS VCLSISKITV DATPDLNKDI KQLLINLLLP AVIKLGWDPK DGESHLDVML RSLLLTALVR LGHNETINEG VRRFHIFFED GKTSLLPPDT RKAAYLAVMR TVSTSSRSGF DALLKIYREA SEPQEKSRVL GSLSSSPDQD IVLEALNFMF TDEVRNQDSF YILGGISLEG REIAWTWLKE NWDHVLKTWK SSSLISDFIE SIVPRFTSEE KAVEVTEFFA GQVKPSFERA LKQSLERVRI SARWIESIRS EPKLGQTVQE LLQADA 4.10015 -0.264526 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1401 1401 1401 1329 1275 1184 1073 745 535 376 206 92 34 13 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1406 1406 1406 1334 1279 1167 1037 669 455 224 79 22 7 1 0 0 1 2 3 4 5 645 570 169 22 3 0 0 1 2 3 4 5 6 7 376 781 209 41 0 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2917 (charge 2) 1299.53 2 152.057 155.081 155.118 157.061 157.097 158.092 159.076 163.06 167.055 169.097 171.077 171.114 172.072 173.056 173.092 173.127 175.071 175.119 183.113 185.056 185.092 186.091 186.124 187.071 198.087 199.072 199.108 201.087 203.067 205.102 207.112 212.103 216.098 219.116 226.155 227.157 231.113 235.108 240.134 244.166 249.123 258.145 259.108 267.108 272.088 277.119 283.107 290.098 299.136 302.1 309.119 311.171 313.115 315.167 318.146 326.145 328.13 333.177 346.14 359.029 371.172 384.151 397.151 400.145 402.173 415.158 418.207 422.219 443.158 448.203 461.17 507.253 519.24 530.189 548.199 581.267 588.264 606.273 608.271 622.21 675.339 678.333 696.374 717.305 734.333 770.415 781.321 791.356 799.342 803.358 821.367 843.431 855.363 878.385 896.387 936.39 1005.41 1013.49 1023.43 1141.53 4 12 8 12 18 4 12 16 4 16 9 3 6 3 14 3 13 27 3 3 4 20 15 11 4 3 10 8 32 4 3 4 16 14 25 4 96 3 12 22 100 9 30 3 10 10 3 9 3 3 4 4 4 3 3 3 4 72 17 31 4 3 11 9 3 3 9 4 4 30 4 10 27 3 3 20 8 70 3 3 3 3 3 17 11 5 4 9 3 4 31 4 4 3 4 11 4 11 29 3 GRMZM2G110201_P01 NP_001142099 hypothetical protein LOC100274263 seq=translation; coord=5:31131578..31135872:-1; parent_transcript=GRMZM2G110201_T01; parent_gene=GRMZM2G110201 MEKAVDRQRV LLRHLNPAAA GSPAPPAISA SACAAGDSAA YHRRPAFADD VVIVAAYRTA ICKAKRGGFK DTFAEDLLVP VFKALVDKTK LDPSEVGDIV VGTVLAPGSQ RAIECRMAAL YAGFPDTVPL KTVNRQCSSG LQAVADVATA IKAGLYDIGI AAGLESMTVN KVSLDGQANP KVELFSQARD CLLPMGLTSE NVAHRFGITR LEQDQAAVES HRKAAAAAAA GKFKEEIVPV HTKIVDPKTG EEKKIVISAD DGIRVDTSLA VLSKLKPAFS KDGSTTAGNA SQVSDGAGAV LLMRRDVAMK KGLPVLGVFR TFAAVGVDPA VMGIGPAVAI PAAVKAAGLQ MDDIDLFEIN EAFASQYVYC CKKLKLDPAK VNVNGGAMAL GHPLGATGAR CVSTLLNEMK RRGKDCRFGV ISMCIGSGMG AAAVFERGDG VDELTNARGI STHNWLSKDA M GRMZM2G110201_P02 NP_001142099 hypothetical protein LOC100274263 seq=translation; coord=5:31131598..31135872:-1; parent_transcript=GRMZM2G110201_T02; parent_gene=GRMZM2G110201 MTVNKVSLDG QANPKVELFS QARDCLLPMG LTSENVAHRF GITRLEQDQA AVESHRKAAA AAAAGKFKEE IVPVHTKIVD PKTGEEKKIV ISADDGIRVD TSLAVLSKLK PAFSKDGSTT AGNASQVSDG AGAVLLMRRD VAMKKGLPVL GVFRTFAAVG VDPAVMGIGP AVAIPAAVKA AGLQMDDIDL FEINEAFASQ YVYCCKKLKL DPAKVNVNGG AMALGHPLGA TGARCVSTLL NEMKRRGKDC RFGVISMCIG SGMGAAAVFE RGDGVDELTN ARGISTHNWL SKDAM GRMZM2G110201_P03 NP_001142099 hypothetical protein LOC100274263 seq=translation; coord=5:31131598..31135872:-1; parent_transcript=GRMZM2G110201_T03; parent_gene=GRMZM2G110201 MAALYAGFPD TVPLKTVNRQ CSSGLQAVAD VATAIKAGLY DIGIAAGLES MTVNKVSLDG QANPKVELFS QARDCLLPMG LTSENVAHRF GITRLEQDQA AVESHRKAAA AAAAGKFKEE IVPVHTKIVD PKTGEEKKIV ISADDGIRVD TSLAVLSKLK PAFSKDGSTT AGNASQVSDG AGAVLLMRRD VAMKKGLPVL GVFRTFAAVG VDPAVMGIGP AVAIPAAVKA AGLQMDDIDL FEINEAFASQ YVYCCKKLKL DPAKVNVNGG AMALGHPLGA TGARCVSTLL NEMKRRGKDC RFGVISMCIG SGMGAAAVFE RGDGVDELTN ARGISTHNWL SKDAM 5.37339 -0.346671 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 5973 5973 5925 5459 4971 4524 2999 2103 1121 473 193 71 30 7 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 5981 5981 5927 5434 4910 4417 2822 1655 635 147 16 2 1 0 0 1 2 3 4 5 6 2441 2457 900 149 23 12 0 0 1 2 3 4 5 6 7 1096 3215 1298 292 70 2 0 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2920 (charge 3) 1382.67 3 155.082 156.077 157.108 158.092 159.077 167.056 167.082 171.059 171.113 175.119 181.061 197.129 198.087 200.105 201.124 212.103 215.139 217.134 223.064 225.043 227.066 233.165 235.119 240.098 244.093 245.129 252.147 255.625 258.109 269.125 292.615 295.151 299.063 304.162 312.177 314.081 329.193 338.1 341.018 342.997 350.148 355.124 356.127 359.029 369.19 372.151 382.183 386.215 399.21 417.258 423.682 426.163 429.089 445.12 486.222 501.243 503.247 510.243 528.254 554.222 562.279 602.236 604.235 610.299 627.322 699.28 701.285 769.396 880.416 897.462 1012.49 2 1 1 4 1 18 1 1 1 19 1 1 1 1 1 1 10 8 3 5 3 1 1 4 7 3 1 1 1 1 1 2 1 2 3 3 5 1 4 3 36 8 2 100 1 3 2 29 10 1 3 3 16 1 1 4 2 2 13 1 1 29 2 1 11 13 2 6 1 2 2 GRMZM2G083841_P01 P04711 Phosphoenolpyruvate carboxylase 1 (PEPCase 1)(PEPC 1)(EC 4.1.1.31) seq=translation; coord=9:61296279..61301686:1; parent_transcript=GRMZM2G083841_T01; parent_gene=GRMZM2G083841 6.64811 -0.282898 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 8406 8406 8406 8406 8301 7854 7182 5754 4660 3596 2101 1260 776 431 287 165 77 36 13 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 8366 8366 8366 8366 8261 7813 7118 5594 3733 2149 693 165 1 0 0 1 2 3 4 5 6 7 1883 4168 1779 468 90 26 1 3 0 1 2 3 4 5 6 1907 4845 1468 175 21 2 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2924 (charge 2) 1260.64 2 152.057 155.081 155.118 157.061 157.097 157.109 157.134 158.091 159.077 167.082 169.097 171.077 171.112 172.108 173.092 175.072 175.119 183.076 183.112 185.092 185.129 187.144 188.103 194.128 197.128 199.072 200.139 201.088 204.136 214.082 216.098 218.15 226.155 233.642 240.135 242.113 252.098 258.145 260.088 270.107 272.172 276.156 283.141 311.098 317.22 329.11 347.12 352.201 356.2 369.225 373.171 400.692 408.687 428.177 456.255 466.28 485.248 515.292 525.22 528.313 537.315 543.291 566.287 572.283 597.257 606.272 614.29 631.825 652.332 672.284 697.361 703.329 714.389 717.341 728.3 734.345 745.33 767.36 782.368 788.373 797.426 800.378 801.381 816.366 818.367 822.361 825.418 833.399 854.407 916.432 927.392 944.426 945.429 1015.5 1017.49 1043.48 1069.5 1086.53 1114.52 1132.55 5 15 10 10 14 9 19 5 10 6 11 16 10 15 5 23 33 14 6 16 17 13 6 14 5 15 26 18 18 11 21 81 15 10 12 16 11 11 13 20 19 13 11 12 18 5 22 9 5 15 13 14 15 15 22 47 10 15 20 12 28 40 6 5 6 15 62 11 11 11 16 33 5 12 5 5 69 5 6 22 9 70 33 69 13 10 14 10 17 40 11 100 48 37 6 15 5 22 12 5 GRMZM2G427404_P01 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=5:209967831..209970936:1; parent_transcript=GRMZM2G427404_T01; parent_gene=GRMZM2G427404 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYRKKTN PFVARHLLAK IEKVNMKEEK EIIVTWSRAS SILPAMVGHT IAIHNGKEHI PIYITNPMVG RKLGEFVPTR HFTSYESTRK DTKSRR GRMZM2G427404_P02 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=5:209968651..209970215:1; parent_transcript=GRMZM2G427404_T02; parent_gene=GRMZM2G427404 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYSDSFI LRRRK GRMZM2G427404_P03 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=5:209968406..209969950:1; parent_transcript=GRMZM2G427404_T03; parent_gene=GRMZM2G427404 MGNALPLTDM PLGTAIHNIE ITRGRGGQLA RAAGAVAKLI AKEGKLATLR LPSGEVRLVS QNCLATVGQV GNVGVNQKSL GRAGSKCWLG KRPVVRGVVM NPVDHPHGGG EGKAPIGRKK PTTPWGYPAL GRRTRKRKKY SDSFILRRRK GRMZM2G455420_P01 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=10:100018777..100021282:-1; parent_transcript=GRMZM2G455420_T01; parent_gene=GRMZM2G455420 MGNALPLTDM PLGTAIHNIE ITRGRGGQLA RAAGAVAKLI AKEGKLATLR LPSGEVRLVS QNCLATVGQV GNVGVNQKSL GRAGSKCWLG KRPVVRGVVM NPVDHPHGGG EGKAPIGRKK PTTPWGYPAL GRRTRKRKKY SDSFILRRRK GRMZM2G405476_P01 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=10:90119267..90121274:-1; parent_transcript=GRMZM2G405476_T01; parent_gene=GRMZM2G405476 MGNALPLTDM PLGTAIHNIE ITRGRGGQLA RAAGAVAKLI AKEGKLATLR LPSGEVRLVS QNCLATVGQV GNVGVNQKSL GRAGSKCWLG KRPVVRGVVM NPVDHPHGGG EGKAPIGRKK PTTPWGYPAL GRRTRKRKKY SDSFILRRRK GRMZM2G405476_P02 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=10:90119739..90120227:-1; parent_transcript=GRMZM2G405476_T02; parent_gene=GRMZM2G405476 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYSDSFI LRR GRMZM5G813019_P01 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=Pt:82930..84414:-1; parent_transcript=GRMZM5G813019_T01; parent_gene=GRMZM5G813019 MGNALPLTDM PLGTAIHNIE ITRGRGGQLA RAAGAVAKLI AKEGKLATLR LPSGEVRLVS QNCLATVGQV GNVGVNQKSL GRAGSKCWLG KRPVVRGVVM NPVDHPHGGG EGKAPIGRKK PTTPWGYPAL GRRTRKRKKY SDSFILRRRK GRMZM5G818111_P01 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=Pt:139291..139807:1; parent_transcript=GRMZM5G818111_T01; parent_gene=GRMZM5G818111 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYSDSFI LRRRK GRMZM5G818111_P02 P17788 50S ribosomal protein L2, chloroplastic seq=translation; coord=Pt:138323..139807:1; parent_transcript=GRMZM5G818111_T02; parent_gene=GRMZM5G818111 MGNALPLTDM PLGTAIHNIE ITRGRGGQLA RAAGAVAKLI AKEGKLATLR LPSGEVRLVS QNCLATVGQV GNVGVNQKSL GRAGSKCWLG KRPVVRGVVM NPVDHPHGGG EGKAPIGRKK PTTPWGYPAL GRRTRKRKKY SDSFILRRRK GRMZM5G854146_P01 YP_588382 hypothetical protein ZeamMp129 seq=translation; coord=1:234659420..234660776:1; parent_transcript=GRMZM5G854146_T01; parent_gene=GRMZM5G854146 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYSDSFI LRRRKVSKYV TRNMENCIFG ICNNAMGERR ELNPRMVDSQ STALIHLATS APYPAKGFSL FSIHYYSIYS DLHTSIEIVD IGCHSLK GRMZM2G343713_P01 seq=translation; coord=2:9501629..9502126:-1; parent_transcript=GRMZM2G343713_T01; parent_gene=GRMZM2G343713 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYSDSFI LRRRK GRMZM2G309193_P01 YP_588382 hypothetical protein ZeamMp129 seq=translation; coord=2:65002440..65016255:1; parent_transcript=GRMZM2G309193_T01; parent_gene=GRMZM2G309193 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYSDSFI LRRRKVSKYV TRNMENCIFG ICNNAMGERR ELNPRMVDSQ STALIHLATS APYPAKGFSL FSIHYYSIYS DLHTSIEIVD IGCHSLK GRMZM2G309193_P02 YP_588382 hypothetical protein ZeamMp129 seq=translation; coord=2:65001638..65016255:1; parent_transcript=GRMZM2G309193_T02; parent_gene=GRMZM2G309193 MGNALPLTDM PLGTAIHNIE ITRGRGGQLA RAAGAVAKLI AKEGKLATLR LPSGEVRLVS QNCLATVGQV GNVGVNQKSL GRAGSKCWLG KRPVVRGVVM NPVDHPHGGG EGKAPIGRKK PTTPWGYPAL GRRTRKRKKY SDSFILRRRK VSKYVTRNME NCIFGICNNA MGERRELNPR MVDSQSTALI HLATSAPYPA KGFSLFSIHY YSIYSDLHTS IEIVDIGCHS LK GRMZM2G056170_P01 seq=translation; coord=3:152609586..152610053:1; parent_transcript=GRMZM2G056170_T01; parent_gene=GRMZM2G056170 GRGGQLARAA GAVAKLIAKE GKLATLRLPS GEVRLVSQNC LATVGQVGNV GVNQKSLGRA GSKCWLGKRP VVRGVVMNPV DHPHGGGEGK APIGRKKPTT PWGYPALGRR TRKRKKYSDS FILRRRK GRMZM5G827951_P01 YP_588382 hypothetical protein ZeamMp129 seq=translation; coord=Mt:346145..347501:-1; parent_transcript=GRMZM5G827951_T01; parent_gene=GRMZM5G827951 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR KRKKYSDSFI LRRRKVSKYV TRNMENCIFG ICNNAMGERR ELNPRMVDSQ STALIHLATS APYPAKGFSL FSIHYYSIYS DLHTSIEIVD IGCHSLK GRMZM2G430501_P01 seq=translation; coord=4:139905281..139905770:1; parent_transcript=GRMZM2G430501_T01; parent_gene=GRMZM2G430501 MLWKKLVQFG KGFFEKKEES TSTDMPLGTA IHNIEITRGR GGQLARAAGA VAKLIAKEGK LATLRLPSGE VRLVSQNCLA TVGQVGNVGV NQKSLGRAGS KCWLGKRPVV RGVVMNPVDH PHGGGEGKAP IGRKKPTTPW GYPALGRRTR EKEKI 6.31889 -0.308238 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 9051 9051 9051 9051 8446 8322 7731 6783 5403 3741 2110 1141 611 324 106 52 25 11 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9073 9073 9073 9073 8468 8336 7712 6667 4990 2794 1028 400 204 58 1 0 0 1 2 3 4 5 6 7 3076 3918 1443 487 124 21 7 0 0 1 2 3 4 5 6 7 1563 4226 2260 829 159 12 3 24 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2925 (charge 3) 1702.8 3 153.066 155.082 157.097 157.134 158.093 159.077 166.062 166.086 169.098 169.134 171.077 171.113 173.092 175.119 181.061 183.113 185.092 185.129 186.124 187.072 187.108 189.087 195.113 197.129 198.087 199.108 199.181 201.124 204.135 207.112 209.14 211.144 217.064 225.099 226.155 230.084 235.109 237.136 240.134 242.114 244.166 247.111 253.094 256.165 258.145 262.086 272.171 297.156 304.13 312.155 321.155 322.14 326.147 354.167 368.212 376.22 380.157 416.736 421.219 440.262 447.224 449.213 504.241 535.233 545.258 563.333 569.304 576.295 584.783 592.256 593.784 610.256 613.861 620.352 638.368 641.303 651.3 675.384 692.324 718.381 720.342 735.412 738.353 740.353 743.411 748.417 786.35 814.441 832.468 857.409 875.424 892.469 901.468 902.484 935.409 961.466 984.435 990.442 998.418 1186.57 5 7 41 12 6 15 7 61 6 27 6 7 6 39 6 19 7 6 17 7 7 6 7 7 14 17 14 6 61 48 7 16 21 21 49 12 24 11 7 6 14 33 25 29 8 23 13 14 14 23 6 7 12 11 48 7 5 20 17 20 6 12 55 14 7 5 53 7 7 7 61 7 5 12 30 37 19 6 12 6 19 25 100 13 36 6 6 12 71 6 20 11 20 14 7 6 6 20 7 15 GRMZM2G018619_P01 NP_001149955 ras-related protein RIC2 seq=translation; coord=9:76755814..76760164:1; parent_transcript=GRMZM2G018619_T01; parent_gene=GRMZM2G018619 MAAGYRAEDD YDYLFKVVLI GDSGVGKSNL LSRFTRNEFS LESKSTIGVE FATRSLQVDG KVVKAQIWDT AGQERYRAIT SAYYRGAVGA LLVYDVTRHS TFENVERWLK ELRDHTDPNI VVMLVGNKSD LRHLVAVQTD EGKAFAERES LYFMETSALE STNVENAFAE VLAQIYRIVD KRAVEAGEDA ASGPGRGEKI NIKDDVSAVK KGGCCSS GRMZM2G018619_P02 NP_001149955 ras-related protein RIC2 seq=translation; coord=9:76755814..76760102:1; parent_transcript=GRMZM2G018619_T02; parent_gene=GRMZM2G018619 MLVGNKSDLR HLVAVQTDEG KAFAERESLY FMETSALEST NVENAFAEVL AQIYRIVDKR AVEAGEDAAS GPGRGEKINI KDDVSAVKKG GCCSS 5.17314 -0.265289 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4127 4127 4127 4101 3768 3664 3190 2396 1890 1220 731 396 230 125 83 19 10 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4127 4127 4127 4101 3768 3656 3143 2302 1469 753 310 110 62 2 1 1 0 0 1 2 3 4 5 2121 1626 357 30 1 0 0 1 2 3 4 5 6 7 779 2308 868 146 29 1 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2932 (charge 2) 1286.59 2 152.057 153.103 155.082 157.097 158.093 159.077 161.092 166.061 167.082 169.097 169.135 170.046 171.077 171.113 173.057 173.092 175.12 181.097 183.077 184.072 185.056 185.092 186.125 187.072 189.087 198.124 199.072 199.107 201.087 204.135 207.125 210.088 212.103 214.118 217.082 223.071 226.155 231.062 235.119 240.097 244.166 254.15 258.108 260.124 269.161 272.171 275.208 284.09 289.187 300.156 302.099 310.145 312.166 323.172 329.146 348.071 369.185 373.138 377.201 386.215 421.177 445.276 456.218 469.278 473.246 500.266 506.759 515.213 522.228 544.286 573.283 575.287 585.773 615.323 619.284 632.29 663.336 670.38 689.342 703.33 719.323 730.35 748.404 819.392 859.395 916.411 917.417 929.426 932.426 987.447 1013.52 1019.46 1032.45 1098.49 1116.5 1118.51 1308.56 79 19 18 14 5 20 4 6 8 15 4 4 7 100 5 17 42 15 20 14 6 16 8 31 4 8 8 25 15 7 4 6 17 4 7 4 55 6 18 19 18 4 23 6 6 6 4 6 13 22 15 7 8 5 8 8 8 8 5 21 4 5 5 6 41 20 5 4 8 29 5 5 4 65 18 8 4 13 6 6 5 40 15 5 16 64 26 6 7 44 18 6 15 5 24 5 5 GRMZM2G155662_P01 NP_001123589 LOC100170235 seq=translation; coord=6:71618436..71621497:-1; parent_transcript=GRMZM2G155662_T01; parent_gene=GRMZM2G155662 MPPPAPLFLS LASTPPPALM PVHHPRAPQS LTLVPPVASS RKAAAVPACP VASPRHSDYF DPRAPPPPRG DGGYGRPPNG AQDGRVFTSY SIYKGKAALS FDPRPPLFVP LDSGAYKVAK EGFVLLQFAP AVATRQYDWT RKQVFSLSVW EIGTLLTLGP TDSCEFFHDP FKGRSEEGKV RKVLKIEPTP DGNGRFFNLS VQNRLINVDE SIYIPITKGE FAVIVSTFNY IIPHLMGWST FVSSIKPEES RPYSRPQSTS EYEWRR GRMZM2G155662_P02 NP_001123589 LOC100170235 seq=translation; coord=6:71618445..71621426:-1; parent_transcript=GRMZM2G155662_T02; parent_gene=GRMZM2G155662 MPPPAPLFLS LASTPPPALM PVHHPRAPQS LTLVPPVASS RKAAAVPACP VASPRHSDYF DPRAPPPPRG DGGYGRPPNG AQDGRVFTSY SIYKGKAALS FDPRPPLFVP LDSGAYKVAK EGFVLLQFAP AVATRQYDWT RKQVFSLSVW EIGTLLTLGP TDSCEFFHDP FKGRSEEGKV RKVLKIEPTP DGNGRFFNLK SAYQR GRMZM2G155662_P03 NP_001123589 LOC100170235 seq=translation; coord=6:71618445..71621426:-1; parent_transcript=GRMZM2G155662_T03; parent_gene=GRMZM2G155662 MPPPAPLFLS LASTPPPALM PVHHPRAPQS LTLVPPVASS RKAAAVPACP VASPRHSDYF DPRAPPPPRG DGGYGRPPNG AQDGRVFTSY SIYKGKAALS FDPRPPLFVP LDSGAYKVAK EGFVLLQFAP AVATRQYDWT RKQVFSLSVW EIGTLLTLGP TDSCEFFHDP FKGRRLI GRMZM2G155662_P04 NP_001123589 LOC100170235 seq=translation; coord=6:71620756..71621431:-1; parent_transcript=GRMZM2G155662_T04; parent_gene=GRMZM2G155662 MPPPAPLFLS LASTPPPALM PVHHPRAPQS LTLVPPVASS RKAAAVPACP VASPRHSDYF DPRAPPPPRG DGGYGRPPNG AQDGRVFTSY SIYKGKAALS FDPRPPLFVP LDSGAYKVAK EGFVLLQFAP AVATRQYDWT RKQVCFFIPN API 4.5128 -0.273503 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 4091 4091 4091 4005 3827 2433 2070 1131 546 377 166 87 40 18 12 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4091 4091 4091 4005 3827 2417 2013 1078 469 150 75 30 1 0 0 1 2 3 4 3118 926 42 14 0 0 1 2 3 4 5 538 3100 431 22 9 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2934 (charge 2) 1573.71 2 152.057 154.309 158.092 169.197 172.108 175.119 183.179 185.091 201.562 212.952 215.114 219.114 221.698 224.183 232.141 241.092 247.39 287.097 290.185 330.144 409.179 422.167 456.223 603.284 663.284 680.298 701.834 778.354 788.364 800.17 911.427 971.611 1030.4 1342.57 1543.03 4 2 7 2 3 9 3 3 3 4 3 3 3 4 100 5 4 4 4 4 4 6 8 6 19 6 49 6 31 5 37 5 6 21 6 GRMZM5G815453_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=Pt:56824..58323:1; parent_transcript=GRMZM5G815453_T01; parent_gene=GRMZM5G815453 GRMZM2G448344_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=1:203925927..203931405:-1; parent_transcript=GRMZM2G448344_T01; parent_gene=GRMZM2G448344 GRMZM2G385635_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=2:200096578..200100853:-1; parent_transcript=GRMZM2G385635_T01; parent_gene=GRMZM2G385635 GRMZM2G360821_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=6:160783975..160786062:1; parent_transcript=GRMZM2G360821_T01; parent_gene=GRMZM2G360821 GRMZM2G308907_P01 seq=translation; coord=9:32379686..32380603:1; parent_transcript=GRMZM2G308907_T01; parent_gene=GRMZM2G308907 GRMZM2G115168_P01 seq=translation; coord=1:131325136..131327527:1; parent_transcript=GRMZM2G115168_T01; parent_gene=GRMZM2G115168 4.93446 -0.281969 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 4578 4578 4480 3859 3294 2362 1880 1239 841 392 216 112 79 17 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4599 4599 4501 3876 3216 2220 1657 964 563 174 63 31 1 0 0 1 2 3 4 5 6 7 1642 2367 473 88 13 15 0 5 0 1 2 3 4 5 6 7 1874 2149 533 35 7 0 0 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2936 (charge 2) 1481.72 2 156.077 157.097 167.055 169.097 171.149 173.129 186.124 187.108 191.084 196.091 201.123 204.134 219.08 223.155 225.098 228.098 236.067 240.135 246.108 251.15 253.093 258.09 299.062 303.203 317.109 327.165 339.142 345.177 359.029 365.157 367.135 370.199 383.167 402.272 418.181 422.689 426.172 432.194 448.15 452.224 454.168 464.226 466.204 475.21 481.203 482.237 490.205 518.723 522.719 524.74 526.735 531.725 540.73 553.311 557.213 560.341 563.296 567.266 576.266 581.26 585.208 587.213 590.263 595.315 632.326 647.372 652.287 670.297 675.843 680.281 698.293 704.307 732.359 766.418 784.432 807.356 817.346 835.353 844.368 862.369 897.523 904.38 922.382 931.403 943.435 949.403 961.426 979.403 1030.46 1034.57 1036.43 1062.45 1064.44 1080.46 1135.5 1151.54 1161.51 1179.53 1181.51 1278.6 3 1 3 3 3 1 22 9 12 2 3 100 9 6 5 4 1 2 4 8 3 3 6 43 5 4 2 3 3 3 6 2 3 7 2 5 3 1 4 3 4 4 8 6 4 6 9 7 6 1 5 38 21 1 15 7 2 10 8 7 29 1 6 3 3 13 3 13 6 3 22 4 4 4 21 5 3 12 4 1 7 4 5 5 3 3 3 3 3 2 3 12 3 8 1 4 6 9 2 4 GRMZM2G126594_P02 NP_001132615 hypothetical protein LOC100194089 seq=translation; coord=6:131423962..131426896:1; parent_transcript=GRMZM2G126594_T02; parent_gene=GRMZM2G126594 MVKYSTEPSN PTKSAKAMGR DLRVHFKNTR ETAFALRKLS LTKAKSYLED VIAHKQAIPF RRYCGGVGRT AQAKSRHSNG QGRWPVKSAK FILDLLKNAE SNAEVKGLDV DTLYVSHIQV NQAQKQRRRT YRAHGRINPY MSSPCHIELI LSEKEEPVKK EAESQIATRK A GRMZM2G126594_P03 NP_001132615 hypothetical protein LOC100194089 seq=translation; coord=6:131423962..131426896:1; parent_transcript=GRMZM2G126594_T03; parent_gene=GRMZM2G126594 MVKYSTEPSN PTKSAKAMGR DLRVHFKNTR ETAFALRKLS LTKAKSYLED VIAHKQAIPF RR 5.20856 -0.297632 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 5662 5662 5662 4777 4710 4090 3478 2752 1691 1049 618 352 132 75 18 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5677 5677 5677 4792 4695 4028 3084 2239 1138 444 152 22 5 2 1 0 0 1 2 3 4 5 2416 2641 576 44 3 0 0 1 2 3 4 5 6 7 1183 3040 1126 290 34 0 3 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2937 (charge 2) 1123.52 2 155.081 156.077 157.097 157.134 158.092 159.076 161.092 166.061 167.081 168.066 169.097 169.134 171.076 171.113 173.093 173.128 175.087 175.119 178.086 181.06 181.097 183.076 184.108 185.092 185.128 187.072 187.107 189.087 195.113 197.128 198.087 199.108 201.087 203.103 205.097 209.091 213.087 216.097 218.15 223.108 226.155 231.097 233.092 240.135 244.094 248.16 251.103 254.113 258.108 265.118 269.125 281.124 282.108 288.134 299.135 300.119 304.162 310.104 316.13 322.175 327.202 329.147 334.139 345.213 355.163 357.178 363.2 371.154 375.136 386.209 396.189 398.167 404.212 416.18 433.203 434.738 442.228 459.255 497.282 525.782 546.29 563.286 626.308 643.341 645.345 658.36 663.298 725.391 733.314 754.37 763.365 772.386 773.385 791.355 799.384 830.365 873.431 891.465 931.455 960.457 13 3 10 16 7 20 3 3 11 11 10 8 18 12 8 10 4 42 35 8 8 7 3 25 9 20 8 7 9 7 4 17 10 40 15 4 22 13 42 70 16 21 28 12 7 17 23 8 14 13 4 15 11 3 22 8 12 3 14 16 11 3 19 70 3 3 3 3 3 4 7 3 11 7 4 3 9 15 9 14 10 15 10 100 3 9 4 3 9 9 9 9 4 13 4 9 15 3 3 10 GRMZM2G033641_P01 NP_001131001 hypothetical protein LOC100192106 seq=translation; coord=6:148590842..148593721:1; parent_transcript=GRMZM2G033641_T01; parent_gene=GRMZM2G033641 MADETKQEAA APAAEVVVTE EEKKAEETAP VAEEKAVEAA VEKAAEAEAG AEEKAAEADS EEEKKAEEAE EAAAGDEAAV IDGTGSFKEE SNLVSELPDP ERTALAQLKE LVATALANGE FNLPPPPAKE EAKKEEPAKE EAPADKEDEP KAEEAAAQEP VKEEAKPEEP KTEAPAEAAP EEVKDETPVP EETKTEAPAP EEPKAEEPAK EELKAEAATE AVAEETKPAE PVPEEEEKTV VVAEEEATKT VEAIEETVAV AVAAAASEEP EAGEPKEELI WGVPLAGDDE RTDTVLLKFL RAREFKVKEA MAMLKSAVLW RKRFGIDELL LDADLGLREL EGVVFYRGAD REGHPVCYNV YGEFQDKELY ERAFGDEEKR ERFLKWRIQL LERGIREQLD FSPSGICSMV QVTDLKNSPP MLGKHRAVTR QALALLQDNY PEFVAKKVFI NVPWWYLAAN KVMSPFLTQR TKSKIVFCSP GKSAETLFRY IAPEQVPVQF GGLYKEDDTE FSTSDAVTEL TVKPSSKETV EIPATENSTV VWELRVLGWE VSYGAEFTPD AEGGYTVIVQ KTRKVPAHEE PIMKGSFKAT EPGKLVLGVN NPASRKKKLL CRFKVRSAAA 6.0703 -0.258311 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6127 6127 6121 5922 5723 5263 4064 3237 1833 1152 625 384 208 126 68 27 11 5 4 3 3 2 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6124 6124 6118 5899 5678 5210 3672 2669 1049 431 184 53 2 1 1 0 0 1 2 3 4 5 3020 2485 513 107 17 0 0 1 2 3 4 5 6 7 945 3581 1234 329 41 8 2 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2940 (charge 2) 1173.57 2 155.082 155.117 156.065 156.085 157.098 158.093 161.092 166.05 167.082 169.097 169.134 171.077 171.113 172.109 173.092 174.096 175.119 181.097 183.077 185.092 187.109 194.13 195.076 197.129 199.108 201.087 203.103 209.092 213.087 215.139 226.155 228.135 231.098 238.119 241.082 244.166 246.181 252.135 258.145 266.115 268.165 270.145 272.171 276.155 284.124 302.135 306.16 312.119 324.121 330.129 336.683 339.204 342.13 351.203 355.163 367.162 369.215 379.661 387.188 389.174 395.157 397.209 405.198 413.166 417.192 431.177 435.201 436.204 440.252 452.252 468.247 476.236 478.243 480.245 484.202 498.255 526.251 528.286 544.264 550.229 556.795 575.304 585.3 588.29 650.37 654.352 660.279 672.358 674.362 678.294 725.38 743.394 775.341 788.324 844.439 902.411 930.419 955.46 973.453 975.443 28 2 2 1 1 4 1 9 4 4 23 2 16 3 100 7 15 5 17 5 2 1 5 20 16 71 4 3 14 6 11 1 7 3 7 3 1 1 13 3 17 3 3 13 7 1 8 3 6 10 9 3 7 3 3 3 5 2 10 2 3 16 8 7 1 1 15 3 1 3 1 26 1 3 1 3 6 1 3 10 4 6 3 3 5 3 3 49 4 3 1 12 13 3 7 1 4 1 13 1 GRMZM2G300408_P01 NP_001159062 transposon protein seq=translation; coord=9:14534848..14536203:1; parent_transcript=GRMZM2G300408_T01; parent_gene=GRMZM2G300408 MATTPTTAIL RLTPAPSPRT ARHPRSATFL QPALSVSLSY SLPDCRNHRL AAASKDTASS KGQEQDQEPA PSAPQEGGPE KVTEVGAASP GEKSPEAVAA ELKEVLRARK EAEAAEGRGG WWAGVAQEMT EIEWPAPGKV LGTTGVVLGV IAGSTVALLS VNALLAELSD TVFAGRGLQD FFSG 4.87086 -0.216483 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 7626 7626 7573 7379 6337 5854 4668 3789 2655 1904 1150 749 431 274 156 73 43 26 22 13 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7624 7624 7571 7377 6328 5673 4234 3054 1835 839 389 134 16 5 1 0 0 1 2 3 4 5 6 3478 3129 820 170 29 2 0 0 1 2 3 4 5 6 7 1222 4034 1899 375 84 12 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2941 (charge 2) 1144.58 2 153.102 155.082 155.118 157.097 158.092 159.077 166.061 167.081 168.065 169.061 169.098 169.133 171.077 172.108 173.092 173.129 174.132 175.119 181.097 183.113 183.148 184.119 185.056 185.092 186.087 187.071 187.108 195.113 197.129 198.124 199.108 201.123 203.103 207.125 209.092 211.108 213.087 216.098 226.155 228.05 231.098 232.101 235.119 240.135 242.113 244.166 252.134 256.129 258.145 262.104 268.13 270.11 272.172 276.155 284.124 285.129 287.137 297.156 300.12 302.135 309.156 312.156 313.157 328.169 330.166 333.177 337.151 339.166 341.145 355.199 369.179 371.155 376.117 394.199 412.22 426.207 430.23 431.234 445.246 469.277 487.293 499.252 513.242 517.262 518.267 588.299 590.283 602.315 638.811 659.34 687.364 694.422 698.345 716.358 718.365 761.413 815.425 817.431 926.454 944.47 6 12 7 7 3 6 6 2 2 6 3 3 11 4 3 40 3 7 4 84 5 8 4 8 9 3 2 3 7 3 6 45 16 4 7 6 13 3 19 4 25 2 13 8 8 9 2 4 9 4 5 2 4 7 19 4 4 3 3 6 3 45 9 3 16 9 3 4 4 2 3 7 2 2 8 3 100 20 4 3 2 5 2 25 6 16 4 6 5 8 2 2 3 43 4 2 14 2 3 8 GRMZM2G132069_P01 NP_001147976 6-phosphofructokinase 2 seq=translation; coord=3:6801004..6804943:-1; parent_transcript=GRMZM2G132069_T01; parent_gene=GRMZM2G132069 MESFGVPPAP VAAPEKRKKP LDLKDPVPAA AAAAANGGGA TKASPAAKWA EKKKLVGGDA GYVLEDVPHL TDYLPQLPTY PNPLQDNPAY SVVKQYFVNP DDTVTQKIVV HKTSARGTHF RRAGPRQRVY FQPDEVNAAI VTCGGLCPGL NTVIRELVCG LYDMYGVTSV VGIEGGYKGF YSKNTVALTP RSVNGIHKRG GTVLGTSRGG HDTAKIVDCL QDRGINQVYI IGGDGTQKGA SVIYEEVRRR GLKCAVVGVP KTIDNDIAVI DKSFGFDTAV EEAQRAINAA HVEAESAENG IGVVKLMGRN SGFIAMYATL ASRDVDCCLI PESPFYLEGK GGLLEFVERR LKDNGHMVIV VAEGAGQDLI AKSMNSVDTQ DASGNKLLLD VGLWLSQKIK DHFKKKPRFP ITLKYIDPTY MIRAVSSNAS DNVYCTLLAH SALHGAMAGY TGFIVAPVNG RHAYIPFYRI TEKQNKVVIT DRMWARVLCS TNQPCFLSHE DVENMKHDDD EHHLHNTLLL DSPENSSK 5.40254 -0.348551 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 2035 2035 2035 2035 1975 1881 1291 988 629 363 119 48 21 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2035 2035 2035 2035 1975 1881 1289 947 572 266 46 6 1 0 0 1 2 3 4 5 1110 811 105 13 1 0 0 1 2 3 4 5 6 7 552 1354 119 13 0 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2947 (charge 2) 1453.62 2 156.077 157.061 157.097 159.076 169.098 170.092 174.087 175.119 183.112 184.071 185.092 187.071 187.107 191.085 192.089 199.071 199.107 202.082 204.133 209.091 212.103 214.119 219.08 226.155 228.135 230.112 244.092 246.09 261.156 268.317 283.141 298.141 301.149 318.178 327.131 333.123 370.171 384.236 402.144 405.212 444.247 460.166 474.194 476.246 491.247 591.272 611.03 698.392 702.3 740.245 763.545 820.387 918.388 935.414 937.413 948.339 1034.46 8 12 36 12 21 28 22 20 6 29 8 7 9 100 6 7 9 36 7 9 11 23 55 10 7 7 10 10 10 7 27 6 8 21 7 8 10 6 29 50 7 6 7 45 9 30 6 6 12 8 12 24 9 62 7 6 20 GRMZM2G004694_P01 seq=translation; coord=7:160808166..160810461:1; parent_transcript=GRMZM2G004694_T01; parent_gene=GRMZM2G004694 MASAPLPAAI EPGKKGNVKF AFACAILASM TSILLGYDIG VMSGASLYIK KDLKISDVKL EILMGILNVY SLIGSFAAGR TSDWIGRRYT IVFAAVIFFA GAFLMGFAVN YWMLMFGRFV AGIGVGYALM IAPVYTAEVS PASARGFLTS FPEVFINFGI LLGYVSNYAF SRLPLRLGWR VMLGIGAAPS VVLALMVLGM PESPRWLVMK GRLADAKVVL GKTSDTPEEA AERLADIKAA AGIPQELDGD VVAVPKKRDS EEARVWKELI LSPTPAMRRI LLSGIGIHFF QQASGIDAVV LYSPRVFKAA GITSDNQLLG TTCAVGVTKT LFILVATFLL DRVGRRPLLL SSVGGMIFSL VGLAAGLTVI GHYQDEKIPW AIGVAIASTM AYVAFFSIGL GPITWVYSSE VFPLHVRAMG CALGVASNRL TSGVISMTFI SLSKAITIGG AFFLYAGVAV LAWVFFFTFL PETRGRTLEA MSKLFGATDD ELKPQDGATK DKQKLELAAT GTN 6.46214 -0.349305 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 2320 2320 2320 2320 2312 2119 2033 1840 1688 928 661 302 102 35 17 12 10 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2323 2323 2323 2323 2315 2122 2020 1837 1666 839 515 197 23 1 0 0 1 2 3 4 5 1464 753 97 9 1 0 0 1 2 3 4 5 6 7 420 1609 256 25 11 0 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2948 (charge 2) 1205.53 2 152.057 155.082 157.061 158.057 158.093 161.092 167.082 169.097 171.076 171.113 173.127 175.119 181.06 185.092 185.165 187.071 189.087 191.118 193.098 198.034 198.088 199.108 201.124 204.134 208.072 210.477 212.105 217.082 226.154 241.08 244.165 249.042 254.151 276.167 286.104 304.114 337.189 341.139 356.147 360.158 386.214 391.194 401.191 443.233 446.235 472.215 517.268 533.688 555.79 575.278 584.302 607.268 704.317 801.375 803.382 842.451 1017.45 1150.91 8 15 8 13 14 56 8 14 14 10 8 100 7 24 13 10 44 7 8 8 8 46 9 11 9 7 8 30 82 10 32 9 8 65 16 26 8 15 8 9 16 10 10 8 14 8 9 8 8 29 9 14 13 68 9 11 11 9 GRMZM2G055165_P01 Q9TJN6 30S ribosomal protein S17, chloroplastic Precursor seq=translation; coord=8:167665901..167667102:1; parent_transcript=GRMZM2G055165_T01; parent_gene=GRMZM2G055165 MLLLSSPFVS VSPPPPPLSS HGARPALRIE AARQLTGRVV TTKADKTVGV EVVRLAPHPK YKRRERIKKK YQAHDPDNQF KVGDVVELQP SRPISKTKHF LAIPLPPRDT RRKSQLLPPL QSDDDQEPSS RE GRMZM2G038013_P01 seq=translation; coord=10:149531451..149532176:1; parent_transcript=GRMZM2G038013_T01; parent_gene=GRMZM2G038013 MLLLSSPFVS VSPPPPPLIS HGARPALRIE AVRQLTRRVV TTKADKTIGV EVVHLAPHPK YKRRERIKKK YQAHDPDNQF KVGDVVELQP SCPISKTKHF LAIPLPPRDT RRKSQLLPPL QSDDSQESSL RE 6.23105 -0.265151 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 6573 6573 6573 6573 6530 6182 5911 5360 4627 3146 2273 1116 605 286 179 85 52 17 13 10 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6573 6573 6573 6573 6530 6182 5903 5307 4437 2585 1273 252 25 2 1 1 0 0 1 2 3 4 5 6 7 1719 2832 1448 441 111 17 4 10 0 1 2 3 4 5 6 7 1097 3153 1670 523 93 34 4 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2949 (charge 3) 1490.7 3 155.081 157.097 158.092 166.086 167.117 169.097 169.134 172.108 173.13 175.119 176.121 181.097 181.109 183.112 183.149 185.092 185.165 186.124 187.108 195.113 200.103 204.134 209.105 213.087 226.155 227.103 230.078 235.119 240.135 243.109 247.144 253.093 275.136 276.171 292.154 294.181 300.666 306.151 314.664 320.135 324.13 327.129 331.678 337.159 344.156 358.134 363.664 372.177 374.684 378.71 403.197 405.212 427.195 435.162 438.162 442.157 446.242 452.186 455.189 456.184 463.268 468.297 472.226 474.233 475.775 478.211 491.263 500.225 501.236 507.624 512.297 518.313 536.286 537.287 544.26 557.24 560.824 565.298 570.217 572.797 580.218 582.666 596.017 601.319 615.251 626.362 628.317 634.28 646.364 651.306 652.309 658.8 683.389 726.314 731.324 743.343 748.363 750.37 863.391 1071.48 13 9 14 11 9 17 14 20 9 77 7 23 22 9 10 19 10 11 16 13 12 19 26 31 12 7 9 8 11 22 24 59 9 8 42 36 42 18 18 9 36 28 12 9 34 11 24 18 18 7 23 20 7 28 9 9 12 12 41 10 8 16 15 22 9 9 21 13 12 30 10 14 34 12 10 7 9 18 7 10 8 9 9 18 35 14 9 9 13 28 10 8 24 9 12 13 100 11 13 7 GRMZM2G089136_P01 NP_001147628 phosphoglycerate kinase seq=translation; coord=6:156256123..156258890:-1; parent_transcript=GRMZM2G089136_T01; parent_gene=GRMZM2G089136 MASAAAPPTS LSLAARAATR AAAAAAAPLR RGGLATACQP ARSLAFAAGD ARLAVHVASR CRQAFSGRGT RAMATMAKKS VGELTEADLE GKRVFVRADL NVPLDENQNI TDDTRIRAAI PTIQYILSKG AKVILSSHLG RPKGFTPKFS LAPLVGRLSE LLGIQVQKAD DVIGPEVEKL VAALPNGGVL LLENVRFYKE EEKNDPEFAQ KLASLADLYV NDAFGTAHRA HASTEGVTKF LQPSVAGFLL QKELDYLVGA VSSPKRPFAA IVGGSKVSSK IGVIESLLEK CDILLLGGGM IFTFYKAQGL PVGASLVEED KLELATSLLA KAKEKGVSLM LPTDVVIADK FAPDANSQIV PASAIPDGWM GLDIGPDSVA SFNAALDTTK TVIWNGPMGV FEFDKFAVGT EAVAKKLAEL SGKGVTTIIG GGDSVAAVEK VGVADVMSHI STGGGASLEL LEGKELPGVV ALNEAATVTV GRMZM2G089136_P02 NP_001147628 phosphoglycerate kinase seq=translation; coord=6:156255713..156258890:-1; parent_transcript=GRMZM2G089136_T02; parent_gene=GRMZM2G089136 MASAAAPPTS LSLAARAATR AAAAAAAPLR RGGLATACQP ARSLAFAAGD ARLAVHVASR CRQAFSGRGT RAMATMAKKS VGELTEADLE GKRVFVRADL NVPLDENQNI TDDTRIRAAI PTIQYILSKG AKVILSSHLG RPKGFTPKFS LAPLVGRLSE LLGIQVQKAD DVIGPEVEKL VAALPNGGVL LLENVRFYKE EEKNDPEFAQ KLASLADLYV NDAFGTAHRA HASTEGVTKF LQPSVAGFLL QKELDYLVGA VSSPKRPFAA IVGGSKVSSK IGVIESLLEK CDILLLGGGM IFTFYKAQGL PVGASLVEED KLELATSLLA KAKEKGVSLM LPTDVVIADK FAPDANSQIV PASAIPDGWM GLDIGPDSVA SFNAALDTTK TVIWNGPMGV FEFDKFAVGT EAVAKKLAEL SGKGVTTIIG GGDSVAAVEK VGVADVMSHI STGGGASLEL LEGKELPGVV ALNEAATVTR SKL GRMZM2G083016_P01 NP_001151968 metacaspase type II seq=translation; coord=8:120773908..120778906:-1; parent_transcript=GRMZM2G083016_T01; parent_gene=GRMZM2G083016 MASAAAPPTS LSLAARAASR AAAAPLRRGG LAAARQPARS LAFAAGDARL AVHVASRCRQ ASSARGTRAM ATMAKKSVGD LTEADLKGKR VFVRADLNVP LDENQNITDD TRIRAAIPTI QYLLGKGAKV ILSSHLGRPK GFTPKFSLAP LVARLSELLG IQVQKADDVI GPEVEKLVAA LPNGGVLLLE NVRFYKEEEK NDPEFAQKLA SVADLYVNDA FGTAHRAHAS TEGVTKFLKP SVAGFLLQKE LDYLVGAVSS PTRPFAAIVG GSKVSSKIGV IESLLEKCDI LLLGGGMIFT FYKAQGLSVG ASLVEEDKLD LATSLLAKAK EKGVSLMLPT DVVIADKFAP DANSQIVPAS AIPDGWMGLD IGPDSIAAFN AALETTQTVI WNGPMGVFEY DKFAIGTEAV AKKLAELSRK GVTTIIGGGD SVAAVEKVGV ADVMSHISTG GGASLELLEG KELPGVTALD EAATVTV 4.4494 -0.269661 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 4945 4945 4945 4945 4807 4632 4383 3521 2864 1871 1137 686 267 132 27 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4942 4942 4942 4942 4804 4623 4332 3438 2559 1315 606 266 15 1 0 0 1 2 3 4 5 6 1755 1884 1036 244 50 4 0 0 1 2 3 4 5 6 7 894 2324 1305 360 68 10 12 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2950 (charge 3) 1463.67 3 152.057 155.081 157.097 158.092 159.076 167.082 168.065 169.097 171.112 173.092 173.129 175.119 183.077 185.092 185.164 186.123 187.071 191.082 191.118 195.076 195.113 196.06 198.124 199.108 200.102 201.122 204.134 208.108 213.087 219.113 222.124 226.119 227.103 231.096 234.145 240.134 241.082 243.144 247.107 249.123 258.144 259.149 265.118 272.172 275.171 277.119 293.111 295.14 311.171 315.203 323.136 330.145 331.198 337.151 341.145 342.133 346.209 351.181 354.178 358.172 360.19 374.171 396.108 400.267 418.206 438.247 445.206 452.176 469.204 476.26 480.208 487.211 493.277 498.221 573.263 577.222 584.267 587.286 594.25 596.251 598.247 601.333 604.31 605.307 612.263 613.26 622.322 631.307 649.32 683.353 684.357 687.404 692.251 709.277 710.265 719.372 727.289 729.295 824.339 953.382 8 11 8 7 8 27 7 6 7 10 6 26 13 14 9 7 6 6 22 41 11 7 9 39 31 6 6 16 49 22 19 16 58 27 13 99 49 6 9 12 100 13 16 8 33 10 7 13 17 6 11 11 35 7 21 7 68 9 9 24 20 26 7 10 9 6 12 13 17 11 9 14 90 15 9 7 6 6 24 6 7 9 38 16 26 14 30 15 6 16 9 9 12 18 35 41 98 11 7 7 GRMZM2G408768_P01 P29306 14-3-3-like protein Fragment seq=translation; coord=2:224904656..224907978:1; parent_transcript=GRMZM2G408768_T01; parent_gene=GRMZM2G408768 MSPSEPTREE SVYMAKLAEQ AERYEEMVEF MERVARSAGG AGGGEELSVE ERNLLSVAYK NVIGARRASW RIISSIEQKE EGRGNEAHAA SIRAYRSKIE TELARICDGI LALLDSHLVP SAGGAESKVF YLKMKGDYHR YLAEFKSGAE RKDAAESTMN AYKAAQDIAL ADLAPTHPIR LGLALNFSVF YYEILNSPDR ACNLAKQAFD EAISELDSLG EESYKDSTLI MQLLRDNLTL WTSDTNEDGG DEIKDAAAPK ESAEGQ GRMZM2G106424_P01 NP_001148842 LOC100282460 seq=translation; coord=4:209797311..209800557:1; parent_transcript=GRMZM2G106424_T01; parent_gene=GRMZM2G106424 MSPSEPTREE SVYMAKLAEQ AERYEEMVEF MERVARYAGG AGGGDELSVE ERNLLSVAYK NVIGARRASW RIISSIEQKE EGRGNEAHAA SIRAYRSKIE AELARICDGI LALLDSHLVP SAGGAESKVF YLKMKGDYHR YLAEFKSGAE RKDAAESTMN AYKAAQDIAL ADLAPTHPIR LGLALNFSVF YYEILNSPDR ACNLAKQAFD EAISELDSLG EESYKDSTLI MQLLRDNLTL WTSDTNEDAG DEIKEAAAAP KESAPEGQ GRMZM2G408768_P02 P29306 14-3-3-like protein Fragment seq=translation; coord=2:224904893..224906863:1; parent_transcript=GRMZM2G408768_T02; parent_gene=GRMZM2G408768 MSPSEPTREE SVYMAKLAEQ AERYEEMVEF MERVARSAGG AGGGEELSVE ERNLLSVAYK NVIGARRASW RIISSIEQKE EGRGNEAHAA SIRAYRSKIE TELARICDGI LALLDSHLVP SAGGAESKVF YLKMKGDYHR YLAEFKSGAE RKDAAESTMN AYKAAQDIAL ADLAPTHPIR LGLALNFSVF YYEILNSPDR ACNLAKQIVC SFWATD GRMZM2G408768_P03 P29306 14-3-3-like protein Fragment seq=translation; coord=2:224904656..224906683:1; parent_transcript=GRMZM2G408768_T03; parent_gene=GRMZM2G408768 MSPSEPTREE SVYMAKLAEQ AERYEEMVEF MERVARSAGG AGGGEELSVE ERNLLSVAYK NVIGARRASW RIISSIEQKE EGRGNEAHAA SIRAYRSKIE TELARICDGI LALLDSHLVP SAGGAESKVF YLKMKGDYHR YLAEFKSGAE RKDAAESTMN AYKAAQDIAL ADLAPTHPIR LGLALNFSVF YYEILNSPDR ACNLAKQVCF FSFYPPFVTC FHFETLCDLF GRMZM2G305211_P02 seq=translation; coord=7:159911588..159920834:-1; parent_transcript=GRMZM2G305211_T02; parent_gene=GRMZM2G305211 MPRSAPAAAR RGGCAVDPTC RLVAPRASTR GRSNIHFRRL VEYHRRLRMM RSLRDSLHGR ITARLEAKTV QPMCNRSIKK SRAYSLISSP KSGGGEELSV EERNLLSVAY KNVIGARRAS WRIISSIEQK EEGRGNEAHA ASIRAYRSKI ETELARICDG ILALLDSHLV PSAGGAESKV FYLKMKGDYH RYLAEFKSGA ERKDAAESTM NAYKAAQALS SFSHFFELAV KIMRINMGPP VVSNASVRVA VQQDVGAASA LPQPLPLHFM VHLQPPCAWR KKETAMRGQR EVFEHEKIKD WSNVVVAYEP VWAIGTGKVA TPAQAQEVHA SLRDWLKTNV SPEVAESTRI IYGGSVTVAN CKELAAQPDV DGFLVGGASL KVNSYPTDRG LTEIGTGGDD FVQTLVVVVE SILQEYLCSV IGDLTIHFCW LWRYYRNITA NTLAVLEAMA AHNVRTLIYS STCVTYGEPD KMPIAEGTPQ GIRLEKSQAG IFKVSLNCFP DLFTALKTKH STPKYGSSTM HPQLGRLLKS IMEKTLGLYL QKLLLLSDRM PLVLMRTTPL VLRVDSRKMC CKPSSVHAQP FALVCLPCPS NRVLAFARLI DHSESAGYSN LKYLVGAGNL RLEDLICSDA KDSSDRRSLV SIGG GRMZM2G329740_P01 seq=translation; coord=1:255639238..255646058:1; parent_transcript=GRMZM2G329740_T01; parent_gene=GRMZM2G329740 MCNRSIKKSR AYSLISSPKS GGGEELSVEE RNLLSVAYKN VIGARRASWR IISSIEQKEE GRGNEAHAAS IRAYRSKIET ELARICDGIL ALLDSHLVPS AGGAESKVFY IKMKGDYHRC LIFVGTGHPM GNPYPHGYGY LAEFKSGAER KDAAESTMNA YKAAQDIALA DLAPTHPIRL GLALNFSVFY YKILNSPDRA CNLAKQALYK PDADTNDMIS EKLMVQINLN EGIEEDIPPS QYTTRCEEKL TMTQAAISRE AGPPGYDPGE NFLQVSSMIT SCEQSVIMAP SAIARGVGPP GYTPGEHQGN GAPWNTSYER RAFTSPATSS REVRPPGYGP EENQGSGISC NTSREQILFM SPTTISRELG PPGYLPRENQ RSDTSWNTSC LTIQFINIGS YLSAFKATRV HLDFDYPNSL PLLPLGNGAP WNTSNERRAF TSPATSSREV RPPGYGPEEN QGSGISCNTS REQILFMSPT TISRELGPPG YLPRENQRSD TSWNISCLTI QFINIGSYLS AFKATRVHLD FDYPNSLPLL PLAVELIDAE IAQSFSQQRK KRDGGGPTYH ETFAYAQGPF ARVPEAYVLS LGIYLLPNRE CTRTLFTCGI PTIKMWEQQV LEISAMVPPP STSADRLGPV LLGCIRDVLW HGHFLRYLLI LDRTNWKTNM LTALLVPYIF FTLPNVLFSL IRGEVGKWIA IIAVILRLFF PRHFTDWLEL PGSIILLTAV APSLFAHTFR DDLVGVFICL AIGCYLLQEH IRASDGLRNA FRKGNGVSNS IGILLLFIYP VWTGVLRIL GRMZM2G329740_P02 seq=translation; coord=1:255639238..255646058:1; parent_transcript=GRMZM2G329740_T02; parent_gene=GRMZM2G329740 MCNRSIKKSR AYSLISSPKS GGGEELSVEE RNLLSVAYKN VIGARRASWR IISSIEQKEE GRGNEAHAAS IRAYRSKIET ELARICDGIL ALLDSHLVPS AGGAESKVFY IKMKGDYHRY LAEFKSGAER KDAAESTMNA YKAAQDIALA DLAPTHPIRL GLALNFSVFY YKILNSPDRA CNLAKQALYK PDADTNDMIS EKLMVQINLN EGIEEDIPPS QYTTRCEEKL TMTQAAISRE AGPPGYDPGE NFLQVSSMIT SCEQSVIMAP SAIARGVGPP GYTPGEHQGN GAPWNTSYER RAFTSPATSS REVRPPGYGP EENQGSGISC NTSREQILFM SPTTISRELG PPGYLPRENQ RSDTSWNTSC LTIQFINIGS YLSAFKATRV HLDFDYPNSL PLLPLGNGAP WNTSNERRAF TSPATSSREV RPPGYGPEEN QGSGISCNTS REQILFMSPT TISRELGPPG YLPRENQRSD TSWNISCLTI QFINIGSYLS AFKATRVHLD FDYPNSLPLL PLAVELIDAE IAQSFSQQRK KRDGGGPTYH ETFAYAQGPF ARVPEAYVLS LGIYLLPNRE CTRTLFTCGI PTIKMWEQQV LEISAMVPPP STSADRLGPV LLGCIRDVLW HGHFLRYLLI LDRTNWKTNM LTALLVPYIF FTLPNVLFSL IRGEVGKWIA IIAVILRLFF PRHFTDWLEL PGSIILLTAV APSLFAHTFR DDLVGVFICL AIGCYLLQEH IRASDGLRNA FRKGNGVSNS IGILLLFIYP VWTGVLRIL GRMZM2G378515_P01 seq=translation; coord=2:236255190..236260495:1; parent_transcript=GRMZM2G378515_T01; parent_gene=GRMZM2G378515 MCNRSIKKSR AYSLISSPKS GGGEELSVEE RNLLSVAYKN VISVRRASWR IISSIEQKEE GRGNEAHAAS IRAYRSKIET ELARICDGIL ALLDSHLVPS AGGAESKVFY IKMKGDYHRG MRLPVKTSSN RVCSVHSTQK VFYKRSMYLA EFKSGAERKD AAESTMNAYK AAQDIALADL APTHPIRLGL ALNFSVFYYK ILNSPDRACN LAKQALYKPD ADTNDMISEK LMVQINLNEG IEEDIPPSQY TTRCEEKLTM TQAAISREAG PPGYDPGENF LQVSSMITSC EQSVIMAPSA IARGVGPPGY TPGEHQGNGA PWNTSYERRP FTSPATSSRE VRPPGYGPEE NQGSGISCNT SREQILFMSP TTISRELGPP GYLPRENQRS DTSWNTSCLT IQFINIGSYL SAFKATRVHL DFDYPNSLPL LPLAVELIDA EIAQSFSQQR KKRDGGGPTY HETFAYAQGP FARVPEAYVL SLGIYLLPNR ECTRTLFTCG IPTIKMWEQQ VLEISAMVPP PSTSADRLGP VLLGCIRDVL WHGHFLRYLL ILDRTNWKTN MLTALLVPYI FFTLPNVLFS LIRGEVGKWI VIIAVILRLF FPRHFPD GRMZM2G378515_P02 seq=translation; coord=2:236255190..236260495:1; parent_transcript=GRMZM2G378515_T02; parent_gene=GRMZM2G378515 MCNRSIKKSR AYSLISSPKS GGGEELSVEE RNLLSVAYKN VISVRRASWR IISSIEQKEE GRGNEAHAAS IRAYRSKIET ELARICDGIL ALLDSHLVPS AGGAESKVFY IKMKGDYHRG MRLPVKTSSN RVCSVHSTQK VFYKRSMYLA EFKSGAERKD AAESTMNAYK AAQDIALADL APTHPIRLGL ALNFSVFYYK ILNSPDRACN LAKQALYKPD ADTNDMISEK LMVQINLNEG IEEDIPPSQY TTRCEEKLTM TQAAISREAG PPGYDPGENF LQVSSMITSC EQSVIMAPSA IARGVGPPGY TPGEHQGNGA PWNTSYERRP FTSPATSSRE VRPPGYGPEE NQGSGISCNT SREQILFMSP TTISRELGPP GYLPRENQRS DTSWNTSCLT IQFINIGSYL SAFKATRVHL DFDYPNSLPL LPLAVELIDA EIAQSFSQQR KKRDGGGPTY HETFAYAQGP FARVPEAYVL SLGIYLLPNR ECTRTLFTCG IPTIKMWEQQ VLEISAMVPP PSTSADRLGP VLLGCIRDVL WHGHFLRYLL ILDRTNWKTN MLTALLVPYI FFTLPNVLFS LIRGEVGKWI VIIAVILRLF FPRHFPAVAP SLFAHTFRDD LVGVFICLAI GCYLLQEHIR ASDGLRNAFR KGNGVSNSIG ILLLFIYPV GRMZM2G093944_P01 seq=translation; coord=9:155536907..155542207:-1; parent_transcript=GRMZM2G093944_T01; parent_gene=GRMZM2G093944 MAESPHASKP RGELFVEERN LLSVAYKNVI GARRASWRII SSIEQKEEGR GNEAHAATIR AYRSKIETEL ARICDGILAL LDSHLVPSAG GAESKVFYLK MKGDYHRYLA EFKSGAERKD AAESTMNAYK AAQDIALADL APTHPIRLGI ALNFSVFYYK ILNSPDRACN LAKQALYKPD ADTNDMISEK LMVQINLNEG IEEDIPPSQY TTRCEEKLTM TQAAISREAG PPGYDPGENF LQVSSMITSC EQSVIMAPSA IARGVGPPGY TPGEHQGNGA PWNTSYERRP FTSPATSSRE VRPPGYGPEE NQGSGISCNT SREQILFMSP TTISRELGPP GYFPRENQRS DTSWNTSCES GLFMSPATTS IEHEIAQSFS QQRKKREGGG PTYHETFAYA QGPFACVPEA YVLSLGIYLL PNRECTRTLF TCGIPTIKMW EQQVLEISAM VPPPSTSADR LGPVLLGCIR DVLWHGHFLR YLLILDRTNW KTNMLTTLLV PYIFFTLPNV LFSLIRGEVG KWIAIIAVIL RLFFPRHFPD WLELPGSIIL LTAVAPSLFA HTFRDDLVGV FICLAIGCYC FKSTSGRQMD LGTPSGRAMA CPTPLASSCS SSTLSGPGCC ESCRHCCLRV PVCCRSHFGQ FRLPMM GRMZM2G097856_P01 seq=translation; coord=7:7070541..7083416:-1; parent_transcript=GRMZM2G097856_T01; parent_gene=GRMZM2G097856 MCNRSIKKSR AYSLISSPKS GGGEELSVEE RNLLSVAYKN VIGARRASWR IISSIEQKEE GRGNEAHAAS IRAYRSKIET ELARICDGIL ALLDSHLVPS AGGAESKVFY LKMKGDYHRY LAEFKSGAER KDAAESTMNA YKAAQDIALA DLAPTHPIRL GLALNFSVFY YKILNSPDRA CNLAKQALCI EEDIPPSQYT TRCEEKLTMT QAAISREAGP PGYDPGENFL QVSSMITRCE QSVIMAPSAI ARGVGPPGYT PGEHQGNGAP WNTSYERRPF TSPATSSREV RPPGYGPEEN QGSGISCNTS REQILFMSPT TISRELGPPG YLPRENQRSD TSWNTSCESG LFMSPATTSI EHEIAQSFSQ QRKKREGGGP TYHETFAYAQ GSFARVPEAY VLSLGIYLLP NRECTRTLST CGIPTIKMWE QQVLEISAMV PPPSTSADRL GPVLLGCIRD VLWHDHFLRY LLILDRTNWK TNMLTALLVP YIFFTLPNVL FSLIRGEVGK WIAIIAVILR LFFPRHFPGT TSSVSSYALR SDATCSKSTS GRQMDLGASD GLRNAFRKGN GVSNSIGILL LFIYPVWTGV LRIL GRMZM2G097856_P03 seq=translation; coord=7:7070286..7083416:-1; parent_transcript=GRMZM2G097856_T03; parent_gene=GRMZM2G097856 MCNRSIKKSR AYSLISSPKS GGGEELSVEE RNLLSVAYKN VIGARRASWR IISSIEQKEE GRGNEAHAAS IRAYRSKIET ELARICDGIL ALLDSHLVPS AGGAESKVFY LKMKGDYHRY LAEFKSGAER KDAAESTMNA YKAAQDIALA DLAPTHPIRL GLALNFSVFY YKILNSPDRA CNLAKQALCI EEDIPPSQYT TRCEEKLTMT QAAISREAGP PGYDPGENFL QVSSMITRCE QSVIMAPSAI ARGVGPPGYT PGEHQGNGAP WNTSYERRPF TSPATSSREV RPPGYGPEEN QGSGISCNTS REQILFMSPT TISRELGPPG YLPRENQRSD TSWNTSCESG LFMSPATTSI EHEIAQSFSQ QRKKREGGGP TYHETFAYAQ GSFARVPEAY VLSLGIYLLP NRECTRTLST CGIPTIKMWE QQVLEISAMV PPPSTSADRL GPVLLGCIRD VLWHDHFLRY LLILDRTNWK TNMLTALLVP YIFFTLPNVL FSLIRGEVGK WIAIIAVILR LFFPRHFPDW LELPGSIILL TAVAPSLFAH TFRDDLVGVF ICLAIGCYLL QEHIRASDGL RGVRWT GRMZM2G366778_P01 seq=translation; coord=6:164997957..165011468:-1; parent_transcript=GRMZM2G366778_T01; parent_gene=GRMZM2G366778 MCNRSIKKSR AYSLISSPKS GGVEELSVEE RNLLSVAYKN VIGARRASWR IISSIEQKEE GRGNEAHAAS IRAYRSKIET ELARICDGIL ALLDSHLILS AGGAESKVFY LKMKGDYHRY LAEFKSGAER KDAAESTMNA YKAAQDIALA DLAPTHPIRL GLALNFSVFY YEILNSPDRA CNLAKQALYK PDADTNDMIS EKLMVQINLN EGIEEDIPPS QYTTRCEEKL TMTQAAISRE AGPPGYDPGE NFLQVSSMIT SCEQSVIMAP SAIARGVGPP GYTPGEHQGN GAPWNTSYER RPFTSPATSS REVRPPGYGP EENQGSGISC NTSREQILFM SPTTISRELG LPGYLPRENQ RSDTSWNTSC ESGLFMSPAT TSIEHEIAQS FSQQRKKREG GGPTYHETFA YAQGSFARVP EAYVLSLGIY LLPNRECTRT LFTCGIPTIK MWEQQVLEIS AMVPPPSTSA DRLGLVLLGC IRDVLWHGHF LRYLLILDRT NWKTNMLTAL LVPYIFFTLP NVLFSLIRLV RASRFHHPAH SGRPSLFAHT FRDDLVGVFI CLAIGCYLLQ EHIRASDGLR NAFRKGNGVS NSIGILLLFI YPVWTGVLRI L GRMZM2G305211_P01 seq=translation; coord=7:159919660..159920834:-1; parent_transcript=GRMZM2G305211_T01; parent_gene=GRMZM2G305211 MPRSAPAAAR RGGCAVDPTC RLVAPRASTR GRSNIHFRRL VEYHRRLRMM RSLRDSLHGR ITARLEAKTV QPMCNRSIKK SRAYSLISSP KSGGGEELSV EERNLLSVAY KNVIGARRAS WRIISSIEQK EEGRGNEAHA ASIRAYRSKI ETELARICDG ILALLDSHLV PSAGGAESKV FYLKMKGDYH RYLAEFKSGA ERKDAAESTM NAYKAAQVGP WCTC 3.74533 -0.241634 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1688 1688 1657 1544 1351 967 787 455 276 162 84 42 22 10 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1711 1711 1679 1545 1346 926 643 372 203 134 75 12 11 1 0 0 1 2 3 4 5 758 829 85 43 2 0 0 1 2 3 4 5 6 7 398 977 270 43 1 0 28 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2953 (charge 2) 1216.51 2 152.057 153.066 155.081 155.117 156.076 157.134 158.093 159.076 160.08 167.056 169.061 169.097 170.045 171.077 171.112 171.15 173.092 174.095 175.119 176.121 181.061 183.076 183.113 184.059 185.092 186.087 187.071 188.076 189.087 194.128 195.113 198.087 199.071 199.108 201.087 203.102 213.086 217.081 218.15 221.085 226.154 227.102 234.145 239.095 241.09 244.165 249.092 253.093 258.108 262.085 266.115 268.977 272.124 277.167 285.009 287.137 299.061 303.02 310.176 333.122 344.976 349.148 353.152 355.07 363.131 373.081 381.213 387.151 407.178 415.036 418.994 434.169 452.25 457.205 462.224 478.228 495.253 497.717 521.204 523.757 535.248 575.287 578.291 586.253 642.29 661.31 679.343 686.371 730.352 733.355 743.335 766.377 826.378 830.367 878.403 895.404 960.412 966.448 1031.48 1225.09 1 1 6 1 1 1 5 78 2 15 2 1 1 4 1 1 20 1 13 1 1 1 2 1 4 1 100 8 2 7 4 1 4 5 20 2 11 2 2 5 12 5 5 38 1 1 1 4 22 2 1 2 1 1 24 1 25 7 10 2 5 1 1 69 2 8 5 1 1 5 10 4 2 2 1 2 8 2 2 1 2 1 5 1 4 1 2 1 1 1 5 13 1 12 1 7 1 2 1 1 GRMZM5G845611_P01 B4F8L7 Glyceraldehyde-3-phosphate dehydrogenase BPutative uncharacterized protein ; seq=translation; coord=1:6410461..6413123:1; parent_transcript=GRMZM5G845611_T01; parent_gene=GRMZM5G845611 GRMZM2G337113_P02 P09315 Glyceraldehyde-3-phosphate dehydrogenase A, chloroplastic Precursor (EC 1.2.1.13)(NADP-dependent glyceraldehydephosphate dehydrogenase subunit A) seq=translation; coord=2:42257261..42259297:-1; parent_transcript=GRMZM2G337113_T02; parent_gene=GRMZM2G337113 4.71533 -0.269447 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 3739 3739 3563 3262 3057 1870 1475 811 522 267 178 111 39 24 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 3732 3732 3556 3246 2992 1711 1242 553 290 105 43 1 0 0 1 2 3 4 5 6 2000 1451 263 24 2 6 0 0 1 2 3 4 5 6 7 764 2355 535 80 5 1 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2954 (charge 2) 1555.68 2 154.061 158.092 159.077 160.079 175.119 185.092 189.087 195.089 205.1 215.084 223.108 225.099 233.095 239.114 242.114 260.123 268.139 269.125 272.105 274.103 286.15 290.115 296.134 303.177 316.132 326.143 328.132 343.164 346.143 355.144 363.169 373.154 391.163 438.182 456.189 474.204 475.224 482.218 532.74 539.23 557.238 572.241 576.274 643.252 661.26 664.355 668.284 684.313 694.298 702.325 712.305 730.317 739.338 762.307 809.344 817.346 826.369 828.369 945.406 963.427 965.43 1046.46 1064.47 1165.52 1266.56 1 2 6 1 10 8 3 2 4 3 1 5 6 6 4 2 3 2 9 1 10 2 1 100 3 1 1 1 2 2 1 4 5 2 4 3 2 6 2 1 3 1 8 3 5 4 1 2 2 3 1 3 12 2 1 2 33 4 2 21 3 2 14 9 4 GRMZM5G808402_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=Pt:54176..56114:-1; parent_transcript=GRMZM5G808402_T01; parent_gene=GRMZM5G808402 GRMZM2G385622_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=2:200098864..200103052:1; parent_transcript=GRMZM2G385622_T01; parent_gene=GRMZM2G385622 GRMZM2G062854_P01 Q5SBI2 Putative uncharacterized protein seq=translation; coord=6:160782373..160789444:-1; parent_transcript=GRMZM2G062854_T01; parent_gene=GRMZM2G062854 GRMZM2G448142_P02 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203904004..203910810:-1; parent_transcript=GRMZM2G448142_T02; parent_gene=GRMZM2G448142 GRMZM2G448142_P03 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203907697..203910810:-1; parent_transcript=GRMZM2G448142_T03; parent_gene=GRMZM2G448142 GRMZM2G113408_P01 P19023 ATP synthase subunit beta, mitochondrial Precursor (EC 3.6.3.14) seq=translation; coord=6:162937179..162940714:-1; parent_transcript=GRMZM2G113408_T01; parent_gene=GRMZM2G113408 GRMZM2G041275_P01 seq=translation; coord=3:207616747..207621242:-1; parent_transcript=GRMZM2G041275_T01; parent_gene=GRMZM2G041275 GRMZM2G021331_P01 NP_001151807 ATP synthase beta chain seq=translation; coord=8:65969534..65973268:1; parent_transcript=GRMZM2G021331_T01; parent_gene=GRMZM2G021331 GRMZM2G478934_P01 Q5SBI3 Putative uncharacterized protein seq=translation; coord=4:111776910..111780853:1; parent_transcript=GRMZM2G478934_T01; parent_gene=GRMZM2G478934 GRMZM2G113408_P02 P19023 ATP synthase subunit beta, mitochondrial Precursor (EC 3.6.3.14) seq=translation; coord=6:162937243..162940714:-1; parent_transcript=GRMZM2G113408_T02; parent_gene=GRMZM2G113408 GRMZM2G155238_P01 seq=translation; coord=4:111657121..111661039:1; parent_transcript=GRMZM2G155238_T01; parent_gene=GRMZM2G155238 GRMZM2G384988_P01 seq=translation; coord=5:35005734..35007041:1; parent_transcript=GRMZM2G384988_T01; parent_gene=GRMZM2G384988 5.29125 -0.302357 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 4287 4287 4287 4287 4091 3817 3605 3359 3097 2169 1599 818 413 196 67 14 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4250 4250 4250 4250 4054 3770 3533 3237 2932 1701 996 351 43 1 0 0 1 2 3 4 5 2643 1370 264 28 2 0 0 1 2 3 4 5 6 7 653 2443 971 212 16 2 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2956 (charge 2) 1056.5 2 155.081 157.061 157.097 157.108 158.092 159.077 159.113 160.076 166.061 167.081 167.119 169.061 169.097 169.133 171.076 171.113 171.149 173.092 175.071 175.119 181.097 183.077 183.113 185.092 185.164 186.087 186.124 187.107 189.102 194.128 195.088 195.113 196.072 197.128 198.088 199.108 201.087 204.134 212.102 215.139 216.098 221.129 226.155 230.114 232.14 240.134 244.128 246.181 249.122 251.151 255.145 258.146 262.151 269.124 272.125 274.118 283.142 286.152 294.181 297.155 303.176 308.638 312.191 323.136 341.145 343.233 359.158 372.261 383.201 400.23 404.189 412.188 414.247 422.277 440.287 448.239 454.241 471.267 490.248 497.283 511.322 519.274 525.271 542.304 547.793 554.281 582.359 616.263 621.331 626.324 629.336 653.393 677.3 700.375 735.334 740.362 787.404 814.369 830.425 871.406 21 6 6 5 26 29 18 10 11 11 5 24 35 10 9 49 6 29 11 85 11 100 5 9 18 42 45 22 9 12 9 12 12 11 5 43 86 44 27 41 11 61 34 13 69 16 22 10 11 5 13 6 5 5 42 10 5 5 13 15 9 28 14 5 32 14 14 10 10 16 28 5 5 5 74 10 26 47 9 46 5 11 5 14 23 5 13 40 11 5 58 10 13 24 29 5 43 16 10 10 GRMZM5G845611_P01 B4F8L7 Glyceraldehyde-3-phosphate dehydrogenase BPutative uncharacterized protein ; seq=translation; coord=1:6410461..6413123:1; parent_transcript=GRMZM5G845611_T01; parent_gene=GRMZM5G845611 GRMZM2G337113_P02 P09315 Glyceraldehyde-3-phosphate dehydrogenase A, chloroplastic Precursor (EC 1.2.1.13)(NADP-dependent glyceraldehydephosphate dehydrogenase subunit A) seq=translation; coord=2:42257261..42259297:-1; parent_transcript=GRMZM2G337113_T02; parent_gene=GRMZM2G337113 4.40834 -0.205039 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4797 4797 4740 4108 3460 2782 2131 1555 981 617 385 238 149 92 63 47 43 7 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 4772 4772 4715 4063 3271 2444 1374 801 389 114 69 1 0 0 1 2 3 4 5 6 7 1330 1760 1155 429 93 28 8 0 0 1 2 3 4 5 6 7 664 2187 1260 477 139 27 43 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2959 (charge 3) 1555.68 3 154.061 156.077 157.097 157.109 158.092 159.076 160.079 167.056 167.093 175.107 175.119 183.059 185.092 187.072 193.109 195.088 196.09 196.108 203.103 205.1 211.119 215.085 221.104 223.108 225.098 233.095 239.114 240.137 244.111 252.096 268.141 269.124 272.106 274.102 278.125 281.051 286.15 296.135 299.062 303.177 305.182 308.136 316.132 322.156 326.146 340.166 344.976 359.028 370.688 391.167 395.206 409.182 413.214 415.036 417.181 423.201 427.193 431.238 441.216 458.2 471.197 473.213 475.226 482.217 510.231 523.737 526.245 528.238 532.741 544.255 554.241 559.246 572.248 574.264 576.273 583.265 624.782 633.79 641.268 643.317 659.281 661.256 673.29 691.313 699.312 706.43 722.316 739.337 741.354 744.295 762.304 808.357 826.369 828.372 836.349 946.406 963.428 965.421 1064.48 1165.53 1 1 8 2 3 15 8 13 2 2 9 1 7 2 1 4 1 2 3 8 3 4 1 3 7 5 10 2 3 1 4 3 5 2 2 2 10 2 39 100 2 2 3 3 3 2 10 5 7 1 1 1 3 4 2 2 1 1 2 1 1 7 9 11 2 3 2 3 3 2 2 2 2 2 15 2 2 4 1 4 2 5 2 1 1 2 1 18 2 1 2 4 44 5 2 2 11 2 4 2 GRMZM2G066460_P01 O24573 60S acidic ribosomal protein P0 seq=translation; coord=6:9203729..9206286:-1; parent_transcript=GRMZM2G066460_T01; parent_gene=GRMZM2G066460 MAIKRTKAEK KIAYDKKLCS LLDEYTKVLI ALADNVGSKQ LQDIRRGLRG DSVVLMGKNT LIRRCIKVYA EKTGNHTFDP LMDLLVGNVG LIFTKGDLKE VREEVAKYKV GAPARVGLVA PVDVVVPPGN TGLDPSQTSF FQVLNIPTKI NKGTVEIITP VELIKKGEKV GSSESALLAK LGIRPFSYGL QVTSVYEDGS VFSPEVLDLS EEDLIEKFAT GVSMVASLSL AISYPTLAAV PHMFINGYKN VLAVAVETDY SYPHADKIKE YLKDPSKFAV AAPVAAGDSG AAAAPKEEEK AAEPEEESDE EMGFSLFDD GRMZM2G179976_P01 NP_001141489 hypothetical protein LOC100273601 seq=translation; coord=4:36122702..36125196:1; parent_transcript=GRMZM2G179976_T01; parent_gene=GRMZM2G179976 MAIKRTKAEK KIAYDKKLCS LLDEYTKVLI ALADNVGSKQ LQDIRRGLRG DSVVLMGKNT LIRRCIKVYA EKTGNHTFDP LMDLLVGNVG LIFTKGDLKE VREEVAKYKV GAPARVGLVA PVDVVVPPGN TGLDPSQTSF FQVLNIPTKI NKGTVEIITP VELIKKGEKV GSSESALLAK LGIRPFSYGL QVTSVYEDGS VFSPEVLDLS EEDLIEKFAT GVSMVASLSL ALSYPTLAAV PHMFINGYKN VLAVAVETDY SYPHADKIKE YLKDPSKFAV AAPVAAADSS AAAAPKEEEK APEPAEESDE EMGFSLFDD 4.33512 -0.234331 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 4345 4345 4345 4242 4146 3714 3403 2703 1938 1444 819 402 220 129 93 51 26 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4342 4342 4342 4239 4133 3692 2897 2511 1496 887 338 70 2 1 1 0 0 1 2 3 4 5 1181 1828 1197 106 41 0 0 1 2 3 4 5 6 7 1385 2229 606 117 8 0 8 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2961 (charge 2) 979.511 2 153.102 155.081 156.077 157.097 158.092 159.077 167.081 168.066 169.097 169.133 171.077 171.113 173.056 173.092 173.129 175.119 181.097 183.077 183.15 185.092 186.091 187.072 191.118 194.129 195.075 195.114 196.08 197.129 198.123 199.108 202.086 203.103 207.111 209.091 213.087 214.09 217.098 219.114 220.096 222.124 226.119 227.102 231.096 234.145 240.134 242.186 244.129 247.108 249.16 252.108 258.144 259.148 263.103 265.118 273.12 275.171 284.171 293.113 295.178 300.122 304.162 311.172 313.186 331.197 334.138 339.203 341.147 344.202 346.21 357.214 361.188 374.172 401.175 418.205 419.208 428.212 446.224 447.227 469.204 475.225 493.277 502.228 519.253 574.324 595.249 603.253 605.309 613.284 614.293 623.32 630.286 631.307 647.311 649.318 687.402 710.273 718.348 720.374 728.288 833.374 3 5 8 11 9 8 9 3 3 3 3 4 3 4 10 48 4 7 3 20 3 7 11 4 13 4 3 4 8 24 8 3 4 5 16 3 19 5 5 6 17 17 7 41 29 13 13 27 5 3 22 6 36 61 7 8 4 16 3 3 3 4 13 100 4 3 4 3 10 10 4 5 3 19 3 3 14 3 3 3 12 4 28 8 3 3 3 6 3 3 7 23 9 5 11 4 18 3 7 8 GRMZM2G089136_P01 NP_001147628 phosphoglycerate kinase seq=translation; coord=6:156256123..156258890:-1; parent_transcript=GRMZM2G089136_T01; parent_gene=GRMZM2G089136 GRMZM2G089136_P02 NP_001147628 phosphoglycerate kinase seq=translation; coord=6:156255713..156258890:-1; parent_transcript=GRMZM2G089136_T02; parent_gene=GRMZM2G089136 GRMZM2G083016_P01 NP_001151968 metacaspase type II seq=translation; coord=8:120773908..120778906:-1; parent_transcript=GRMZM2G083016_T01; parent_gene=GRMZM2G083016 4.52256 -0.244463 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4226 4226 4226 3894 3346 2850 2141 1507 1089 716 482 311 172 70 36 10 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4240 4240 4240 3908 3357 2718 1818 1128 692 434 266 192 84 18 13 1 0 0 1 2 3 4 5 6 2104 1690 364 70 5 12 0 0 1 2 3 4 5 6 7 862 2400 799 153 18 1 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2962 (charge 2) 1463.66 2 155.081 156.076 159.078 167.082 167.117 169.097 171.077 175.12 183.076 185.091 186.087 187.071 195.076 195.113 198.123 199.108 201.087 204.134 208.108 213.087 219.113 222.123 226.155 227.103 231.097 232.1 236.139 239.15 240.134 242.085 244.165 258.144 259.092 275.172 295.14 299.17 303.204 306.109 311.171 324.122 329.182 342.128 344.155 346.209 352.115 354.18 358.173 361.183 370.125 372.188 374.172 383.192 388.135 432.219 445.207 452.254 462.237 469.202 476.254 487.219 493.278 497.235 501.236 515.244 535.812 539.265 561.26 567.234 573.268 584.27 591.276 595.238 604.301 612.26 622.32 630.274 674.275 690.303 702.351 703.346 710.266 719.373 721.373 723.832 727.291 743.366 745.302 768.385 802.36 819.345 834.398 903.5 914.393 931.414 935.386 948.428 953.386 971.389 1076.54 1206.5 8 10 6 16 3 3 3 7 8 3 8 4 21 4 4 18 5 3 9 27 9 10 48 50 58 4 3 12 91 8 11 72 56 22 4 8 3 3 8 3 4 15 3 44 15 3 10 4 16 3 25 4 9 16 16 6 4 8 3 8 33 3 3 4 8 4 11 3 10 4 3 9 3 12 3 3 5 14 13 3 11 100 10 8 26 4 13 3 7 15 9 4 3 5 3 26 10 9 4 3 AC189750.4_FGP004 seq=translation; coord=7:152351854..152354543:-1; parent_transcript=AC189750.4_FGT004; parent_gene=AC189750.4_FG004 MASATTSISS HPAALRDVKG DMFSLFWMLF PLYNFCSDPT FQLVKCAAPQ QNSPEFEAHT GLTLLISLPS VRAAARIGGL RQQQASVAPS AAAARGQRAR AVRSLRAAEP ARQPVAASAA AAAPAAPVAD EAAALAAVDY EALARELEGA SPLEIMDRAL AMFGSEIAIA FSGAEDVALI EYAKLTGRPF RVFSLDTGRL NPETYQLFDK VEKHYGIRIE YMFPDASEVQ ELVRTKGLFS FYEDGHQECC RVRKVRPLRR ALKGLRAWIT GQRKDQSPGT RASIPLVQVD PSFEGLDGGA GSLVKWNPVA NVDGKDIWTF LRTMDVPVNT LHAQGYVSIG CEPCTRPVLP GQHEREGRWW WEDAKAKECG LHKGNIDKDA QAAAPRSANG NGSAGAPDIF ESPAVVSLTR TGIENLLRLE NRAEPWLVVL YAPWCPFCQA MEASYVELAE KLAGSGVKVA KFRADGEQKP FAQAELQLQS FPTVLLFPGR TARPIKYPSE KRDVDSLLAF VNSLR GRMZM2G087254_P01 NP_001105805 adenosine 5'-phosphosulfate reductase 2 seq=translation; coord=2:202525441..202528769:-1; parent_transcript=GRMZM2G087254_T01; parent_gene=GRMZM2G087254 MASATTSISS HPAALRDVKA ARIGGALRQV GVAARGQRAR AVPPLRAAEP ARRPVAASAA AAPPAAPVAD EAAVDYEALA RELEGASPLE IMDRALAMFG SEIAIAFSGA EDVALIEYAK LTGRPFRVFS LDTGRLNPET YQLFDRVEKH YGIRIEYMFP DASEVQELVR TKGLFSFYED GHQECCRVRK VRPLRRALRG LRAWITGQRK DQSPGTRASI PLVQVDPSFE GLDGGAGSLV KWNPVANVDG KDIWTFLRTM DVPVNALHAQ GYVSIGCEPC TRPVLPGQHE REGRWWWEDA KAKECGLHKG NIDKDGQAAA AAAAPRTANG NGSAGAPDIF ESPAVVSLTR AGVENLLRLE SRAEPWLVVL YAPWCPFCQA MEASYVELAE RLAGSGGVKV ARFRADGEQK PFAQAELQLQ SFPTVLLFPS RTARPIKYPS EKRDVDSLLA FVNSLR 5.81777 -0.283794 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6541 6541 6541 6541 6503 6254 5945 5458 4739 3652 2756 1306 645 311 127 76 42 29 2 1 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6541 6541 6541 6541 6503 6254 5935 5405 4567 3355 2011 603 74 1 0 0 1 2 3 4 5 6 7 1758 2791 1519 395 73 4 11 0 0 1 2 3 4 5 6 7 1475 2781 1687 505 60 32 11 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2963 (charge 3) 1289.72 3 152.057 153.102 154.086 155.082 156.077 157.097 157.109 157.134 158.092 159.077 162.103 166.061 167.055 167.081 169.097 169.134 171.113 172.072 173.093 173.129 175.119 176.122 181.097 183.149 184.108 185.092 185.129 187.072 187.144 189.087 193.096 194.129 195.113 197.129 198.124 199.072 199.108 200.14 201.123 207.126 208.953 211.12 213.086 217.081 226.119 230.623 233.128 235.119 240.133 244.166 252.109 255.145 258.146 265.623 272.171 274.014 276.155 279.134 284.01 289.162 292.661 296.124 312.167 314.136 329.192 344.976 359.029 360.029 363.187 371.7 393.859 401.748 404.224 406.744 412.166 415.749 426.249 442.23 447.223 453.246 460.24 464.735 487.262 503.295 511.335 513.239 521.756 539.333 556.357 575.315 584.315 590.281 597.308 623.303 630.3 638.81 667.426 675.339 725.363 746.374 8 10 7 40 9 16 10 27 23 34 8 28 27 15 11 10 17 13 21 8 100 8 18 50 9 28 15 21 11 11 7 10 11 10 7 8 10 11 10 14 17 14 14 9 23 15 9 44 17 19 10 15 29 8 27 11 16 35 40 7 7 17 8 13 39 15 44 44 37 14 27 8 10 12 8 13 28 10 8 7 58 15 11 19 37 12 26 20 17 11 22 15 9 9 7 11 31 22 7 16 GRMZM2G701221_P01 NP_001148935 LOC100282555 seq=translation; coord=6:156819019..156827574:1; parent_transcript=GRMZM2G701221_T01; parent_gene=GRMZM2G701221 MATHPASPTA GAGGDRSPSG PPPVRLSAAQ AVAAIQPTSP RYFFSSLAAA SAAASSPHRR IGIAVDLSDE SAFAVKWAVQ NYLRPGDAVV LLHVRPTSVL YGADWGSIPV SVDDDPDVDI AEGAVRAAAA EEEPEEAKKK REEEFDSFTS TKAQDLAQPL VGAQIPFKIH IVKDHDMKER LCLEAERLGL SAMIMGSRGF GASRRVGKGR LGSVSDYCVH HCVCPVVVVR YPDDAFGDEL RTVPENEPVY HAAPEAQKEN 6.33381 -0.436815 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4642 4642 4549 4420 4135 3942 3666 1944 1428 515 152 39 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4650 4650 4557 4428 4141 3900 3615 1808 1210 288 45 5 1 0 0 1 2 3 4 2928 1487 232 11 0 0 1 2 3 4 5 6 7 901 3288 446 18 1 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2968 (charge 2) 1407.66 2 151.006 152.057 155.081 157.098 163.06 167.093 169.097 171.076 171.113 175.119 178.462 178.714 181.096 189.087 193.108 199.071 199.108 201.123 211.119 226.156 235.119 239.114 244.166 256.129 259.143 261.212 286.14 288.145 306.156 308.135 324.166 334.15 352.162 404.185 476.645 532.245 588.279 603.284 714.868 757.352 767.651 783.358 801.386 882.406 888.42 959.447 967.745 1039.48 1040.49 1056.51 1058.52 1133.55 1247.64 2 3 8 2 7 3 9 3 2 30 2 2 3 9 3 2 4 2 17 3 13 9 3 11 2 2 10 2 16 3 28 16 27 2 2 3 9 7 2 2 2 2 21 2 18 15 2 7 2 100 12 2 2 GRMZM2G140051_P01 NP_001105215 nucleosome/chromatin assembly factor group A seq=translation; coord=9:19393494..19397648:-1; parent_transcript=GRMZM2G140051_T01; parent_gene=GRMZM2G140051 MGGEKETFDT SDLNASLPAA AAALSAEDRA GLVNALKDKL QSLAGQHADV LETLSPNVRK RVEFLREIQS QHDEIEAKFF EERAALEAKY QKLYEPLYTK RYGIVNGEVE VDGVCDEPAS ENTVEGKEPD AKGVPDFWLT AMKTNEVLSE EIQERDEAAL KYLKDIKWSR IEDPKGFKLD FFFDTNPFFK NSVLTKTYHM VDEDDPILEK AIGTEIEWYP GKNLTQKILK KKPKKGSKNT KPITKTEDCE SFFNFFNPPQ VPEDDDDIDE DTADELQSQM EHDYDIGTTI RDKIIPHAVS WFTGEAVQGE DFGELGDDDE DDDDEDDDED DEDEEEDDDE EEDDEEESKP ARKSGSGRRH KAPQKVSQGN AEQPAECKQQ GRMZM2G140051_P02 NP_001105215 nucleosome/chromatin assembly factor group A seq=translation; coord=9:19393494..19397627:-1; parent_transcript=GRMZM2G140051_T02; parent_gene=GRMZM2G140051 MGGEKETFDT SDLNASLPAA AAALSAEDRA GLVNALKDKL QSLAGQHADV LETLSPNVRK RVEFLREIQS QHDEIEAKFF EERAALEAKY QKLYEPLYTK RYGIVNGEVE VDGVCDEPAS ENTVEGKEPD AKGVPDFWLT AMKTNEVLSE EIQERDEAAL KYLKDIKWSR IEDPKGFKLD FFFDTNPFFK NSVLTKTYHM VDEDDPILEK AIGTEIEWYP GKNLTQKILK KKPKKGSKNT KPITKTEDCE SFFNFFNPPQ VPEDDDDIDE DTADELQSQM EHDYDIGTTI RDKIIPHAVS WFTGEAVQGE DFGELGDDDE DDDDEDDDED DEDEEEDDDE EEDDEEESKP ARKSGSGRRH KVHDLKFTG 5.75629 -0.311151 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 6584 6584 6584 6580 6322 6034 5661 4789 3883 2661 1536 809 439 170 78 25 2 1 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6606 6606 6606 6602 6344 6046 5635 4686 3435 1984 638 212 74 11 5 1 0 0 1 2 3 4 5 6 7 2389 2637 1294 248 31 9 1 0 0 1 2 3 4 5 6 7 1119 2909 1736 674 111 56 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2979 (charge 3) 1426.68 3 155.082 157.097 158.092 159.077 160.08 166.061 169.097 169.133 170.117 171.076 171.112 173.092 175.119 176.123 181.061 181.095 185.056 185.092 185.165 186.097 186.169 187.071 188.075 197.129 198.087 198.132 199.072 200.14 201.124 204.135 209.104 213.16 215.139 216.098 218.15 221.104 225.123 230.078 235.119 243.133 245.124 249.098 253.093 256.129 258.108 262.151 263.154 272.159 279.665 300.155 301.158 313.842 328.192 329.182 347.193 354.136 362.203 364.126 382.136 401.73 421.207 436.194 445.241 460.275 464.187 470.259 479.228 480.233 493.167 495.219 505.78 532.241 541.299 550.266 551.27 558.325 563.28 564.291 579.217 580.218 584.268 589.321 597.226 624.265 641.358 649.334 650.336 655.378 680.264 693.336 698.387 704.347 708.256 726.412 762.417 763.423 795.438 821.346 841.405 950.389 15 10 10 31 7 6 9 11 4 8 5 5 36 4 5 8 6 18 20 5 7 39 11 100 6 11 8 11 24 7 9 7 42 8 50 8 12 6 5 5 9 8 12 4 4 27 10 7 4 14 9 4 19 15 7 4 11 7 8 7 13 8 6 5 5 8 14 6 4 5 8 4 6 55 23 25 5 4 12 5 8 5 5 6 4 51 25 15 4 5 4 12 21 7 14 7 11 7 10 6 GRMZM2G157018_P01 NP_001150316 ATP synthase D chain, mitochondrial seq=translation; coord=1:200480447..200483616:-1; parent_transcript=GRMZM2G157018_T01; parent_gene=GRMZM2G157018 MSGNGAKKVV DAAVKAGRTI IDWDGMAKLL VTDEARKEFA ALRRAFDDVN HQLQTKFSQE PQPIDWEYYR KGIGSKVVDM YKEAFESIEI PKYVDTVTPQ YKPKFDAVIA ELKEAEKEHQ KESERIEKEL AEMEEMRKKI STMTADDYFE KYPELRKKFD DEIRNDNWGY 5.17365 -0.295637 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1777 1777 1767 1707 1500 1400 1261 977 820 548 301 168 61 31 8 2 1 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1784 1784 1774 1714 1499 1384 1228 922 633 303 81 16 10 1 0 0 1 2 3 4 802 923 145 15 0 0 1 2 3 4 5 6 7 436 865 362 93 22 103 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2980 (charge 2) 1169.48 2 152.056 155.082 155.117 157.097 157.134 158.092 159.076 166.05 167.081 169.097 169.133 170.118 171.076 171.113 172.109 173.092 173.128 175.119 176.122 181.098 183.077 183.112 185.092 187.108 191.118 194.129 195.075 195.112 197.128 200.103 201.087 203.103 213.087 215.139 219.113 223.155 226.155 227.102 240.134 243.134 249.095 251.15 258.154 265.119 268.165 277.086 284.123 290.147 293.113 296.161 303.178 306.16 322.154 324.12 332.141 341.146 346.208 355.66 364.14 388.171 400.183 414.171 430.23 432.185 435.203 446.172 451.197 456.248 487.251 493.276 499.268 516.242 527.286 547.243 550.226 555.791 562.227 568.315 572.25 580.241 582.247 599.278 645.267 655.345 661.262 663.273 678.294 681.357 710.304 728.321 729.322 775.338 792.325 799.358 801.365 811.467 863.36 927.36 973.439 1072.58 5 11 8 3 6 7 6 6 6 5 2 7 2 13 2 17 2 41 2 3 18 3 5 2 7 4 13 2 39 17 27 2 8 100 6 3 16 8 7 22 2 2 12 2 7 5 8 5 4 8 9 8 13 2 7 3 3 2 2 18 2 5 5 4 17 2 10 7 5 2 6 17 11 2 12 12 4 7 2 17 5 18 3 9 2 20 6 2 6 15 5 15 11 21 2 2 20 5 14 2 GRMZM2G434173_P01 NP_001148093 LOC100281701 seq=translation; coord=1:299988513..299993142:-1; parent_transcript=GRMZM2G434173_T01; parent_gene=GRMZM2G434173 MATIPTTDSG LVLSSSALLR RTRRAASSVT ARLPAVARRR PQLLVRASAK EIAFDQGSRA ALQAGVEKLA AAVGVTLGPR GRNVVLDEFG TPKVVNDGVT IARAIELADP MENAGASLIR EVASKTNDSA GDGTTTASVL AREIIKLGML SITSGANPVS VKKGIDKTVQ KLVEELEKKS RPVKGSGDIK AVAAISAGND EFVGTMIAEA IDKVGPDGVL SIESSSSFET TVEVEEGMEL DRGYISPQFV TNLEKSIVEF ENARILVTDQ KISSIKEIIP LLEQTTQLRA PLLIIAEDVS GEALATLVIN KLRGILNVAA IKAPGFGERR KALLQDIAIV TGAEYQSKDL GLLVEDTTVE QLGIARKVTI SSSSTTIIAD AASKDDIQAR IAQLKRELSQ TDSTYDSEKL AERIAKLSGG VAVVKVGAST EAELEDRKLR IEDAKNATFA AIEEGIVPGG GAAYVHLSTF VPAIKETLDD PEERLGADII QKALVAPAAL IAHNAGVEGE VIVDKIRESE WEFGYNAMAD KHENLVEAGV IDPAKVTRCA LQNAASVAGM VLTTQAIVVE KPKKAPAAAA AAAP 4.53821 -0.211079 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2272 2272 2272 2272 2209 2115 1990 1786 1451 1221 901 641 409 242 166 113 59 33 13 12 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2267 2267 2267 2267 2204 2110 1940 1733 1399 1017 464 164 48 1 0 0 1 2 3 4 5 6 7 1020 896 237 119 2 0 0 5 0 1 2 3 4 5 6 7 463 1024 564 159 59 9 1 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2989 (charge 2) 909.514 2 155.082 155.118 157.097 157.133 158.092 159.076 161.074 167.081 167.118 169.097 169.134 171.076 172.072 173.128 175.119 181.061 183.113 183.149 185.092 185.104 186.124 187.108 188.111 189.069 193.097 194.129 195.113 197.128 198.087 200.139 201.123 203.103 212.139 214.118 226.118 228.632 231.097 237.135 240.134 241.137 243.182 254.162 255.655 257.161 272.172 277.656 283.177 285.156 289.159 291.174 297.192 311.172 323.207 326.693 329.191 337.187 342.215 346.183 354.216 356.193 359.204 362.69 368.228 370.214 382.208 387.201 399.235 408.225 413.253 425.252 427.231 439.273 441.241 442.241 453.246 457.257 479.26 482.308 484.283 487.261 496.292 510.304 513.293 524.284 528.278 536.316 554.3 557.306 581.341 595.317 606.325 608.307 611.325 624.385 644.336 652.379 695.426 701.36 707.342 724.373 12 18 7 7 21 11 33 8 7 40 9 33 10 18 70 7 9 16 9 7 15 100 8 7 7 15 16 8 10 11 11 35 14 27 14 13 24 26 71 10 10 44 10 14 11 40 14 35 11 42 8 85 8 19 26 11 11 36 14 31 9 59 7 7 82 12 8 13 15 14 9 16 7 7 81 35 11 7 10 8 11 45 7 58 8 8 30 10 88 15 8 12 33 11 25 80 11 11 12 48 GRMZM2G018197_P01 NP_001147047 60S ribosomal protein L4 seq=translation; coord=2:233433323..233435947:-1; parent_transcript=GRMZM2G018197_T01; parent_gene=GRMZM2G018197 MAASSRPLVS VKALEGDMVT DAPGIALPPV FGAPIRPDVV RFTHKLLSCN KRQPYAVSRR AGHQTSAESW GTGRAVSRIP RVPGGGTHRA GQGAFGNMCR GGRMFAPTKI WRKWHRRVNV NLRRVAVASA LAATAVPALV QARGHRIETV PEMPLVISDS AESIEKTSQA LKILKQVGAY ADAEKAKDSV GIRPGKGKMR NRRYINRKGP LVVYGTEGSK VVKAFRNLPG VDVANVERLN LLDLAPGGHL GRFVIWTESA FKKLEEVYGS FDAPSQKKKG FVLPRPKMAN ADLGRIINSD EVQSVVKPLN KEVKRREKRK NPLKNMAAVL KLNPYLGTAR KMATLAEAAR VKARKEKLDS KRTKLTSEET AKVKAAGKAW YKTMISDSDY TEFENFTKWL GVTQ GRMZM2G100403_P02 NP_001168309 hypothetical protein LOC100382075 seq=translation; coord=7:10287294..10291100:1; parent_transcript=GRMZM2G100403_T02; parent_gene=GRMZM2G100403 MVAVNRPLVS VKALEGDMVT DAPGIALPPV FGAPIRPDVV RFTHKLLSCN KRQPYAVSRR AGHQTSAESW GTGRAVSRIP RVPGGGTHRA GQGAFGNMCR GGRMFAPTKI WRKWHRRVNI NLRRVAVASA LAATAVPALV QARGHRIESV PEMPLVISDS AESIEKTSQA LKILKQIGAH ADAEKAKDSV GIRPGKGKMR NRRYINRKGP LIVYGTEGSK VVKAFRNLPG VDVANVERLN LLDLAPGGHL GRFVIWTQSA FNKLEEVYGS YDAPSQKKKG FVLPRPKMSN ADLGRIINSD EVQSVVKPLN KEVKRREKRK NPLKNMAAVL KLNPYLGTAR KMATLAEAAR VKARKAKLDS KRTKLTPETA KVKAAGKAWY KTMVSDSDYT EFENFSKWLG VTQ GRMZM2G007695_P01 NP_001130508 hypothetical protein LOC100191607 seq=translation; coord=5:4268599..4271215:1; parent_transcript=GRMZM2G007695_T01; parent_gene=GRMZM2G007695 MAASARPLVT VRALEGDMAT DSAGVPLADV LRAPIRPDIV RFVHKLLSCN SRQPYAVSRR AGHQTSAESW GTGRAVSRIP RVPGGGTHRA GQGAFGNMCR GGRMFAPTKI WRRWHRRVNI HLRRVAIASA LSATAVPSLV LARGHRVESV PELPLVVSDS AESIEKTAQA INILKQLGAY ADAEKAKDSV GIRPGKGKMR NRRYINRKGP LVVYGTEGSK VVKAFRNLPG VDVANVERLN LLDLAPGGHL GRFVIWTECA FKKLDEVYGT FNAPSAKKKG FVLPRPKMAN ADLSRLINSD EVQSVVKPIN KDVKRREPRK NPLKNMAAVL KLNPYLGTAR KMAALAEAAR VKARKQKLDS KRTKLSPEEA SKVKAAGKAW YKTMVSDSDY TEFENFTKWL GVTQ GRMZM2G068952_P01 NP_001130220 hypothetical protein LOC100191314 seq=translation; coord=1:287818241..287821189:-1; parent_transcript=GRMZM2G068952_T01; parent_gene=GRMZM2G068952 MAAGARPLVS VRALEGDMAT DSVGVPLPDV LRAPIRPDIV RFVHKLLSCN SRQPYAVSRR AGHQTSAESW GTGRAVSRIP RVPGGGTHRA GQGAFGNMCR GGRMFAPTKI WRRWHRRVNI HLRRVAIASA LAATAVPSLV LARGHRVEYV PELPLVVSDS AESIEKTAQA IKVLKQLGAS ADADKAKDSV SIRPGKGKMR NRRYINRKGP LIVYGAEGSK IVKAFRNLPG VDVANVERLN LLDLAPGGHL GRFVIWTECA FKKLDEVYGT FDTPSAKKKG FLLPRPKMAN ADLSRLINSD EVQSVVKPIN KEVKRREPRK NPLKNMAAVL KLNPYLGTAR KMAALAEAAR VKARKQKLDS KRTKLSPEET SKVKAAGKAW YKTMISDSDY TEFENFTKWL GVTQ GRMZM2G100403_P01 NP_001168309 hypothetical protein LOC100382075 seq=translation; coord=7:10287328..10288164:1; parent_transcript=GRMZM2G100403_T01; parent_gene=GRMZM2G100403 MVAVNRPLVS VKALEGDMVT DAPGIALPPV FGAPIRPDVV RFTHKLLSCN KRQPYAVSRR AGHQTSAESW GTGRAVSRIP RVPGGGTHRA GQGAFGNMCR GGRMFAPTKI WRKWHRRVNI NHRRPGPRPG ARPPHRVCPR DAPCHFRLRG VH 5.81423 -0.270429 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 9389 9389 9389 9239 8687 8111 7581 6184 4711 3187 1987 1071 620 305 164 84 50 23 9 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9406 9406 9406 9256 8704 8110 7458 5613 3495 1555 446 88 52 15 1 0 0 1 2 3 4 5 6 7 3291 3519 1738 693 132 12 0 25 0 1 2 3 4 5 6 7 1686 3726 2158 1346 355 87 26 26 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2990 (charge 3) 1600.76 3 158.092 159.077 159.092 167.081 169.097 171.077 173.093 175.119 183.124 184.108 185.093 187.088 193.097 197.619 198.058 198.121 199.107 201.087 211.617 215.114 220.13 226.119 227.102 232.141 239.095 242.114 244.166 246.124 258.145 261.648 266.126 274.119 275.646 280.135 285.167 288.118 299.061 303.175 304.153 308.653 312.17 317.165 326.17 333.188 338.667 343.164 347.175 351.675 355.172 360.68 369.686 372.227 374.186 377.204 387.688 390.21 394.231 396.197 405.203 422.226 424.234 439.252 468.173 469.72 475.226 506.284 522.293 532.253 535.295 542.329 548.709 550.286 559.265 576.288 604.295 645.315 646.299 663.321 665.335 668.327 677.374 699.411 716.358 734.398 738.366 774.349 781.41 792.364 794.37 809.396 829.443 856.429 863.401 910.449 932.425 938.455 950.434 952.435 1007.46 1051.48 11 10 28 5 4 7 5 25 4 4 4 5 4 36 8 9 5 5 20 7 40 16 5 6 6 6 6 7 7 18 5 4 51 6 17 4 4 23 8 4 4 24 24 6 8 7 5 23 5 25 14 20 4 6 4 57 36 10 11 100 4 6 5 5 4 11 5 4 5 7 11 14 7 32 4 4 5 58 4 5 4 5 8 10 4 9 6 28 4 4 9 5 23 5 4 4 31 5 6 15 GRMZM2G102075_P01 NP_001148770 40S ribosomal protein S15 seq=translation; coord=7:11335166..11337275:1; parent_transcript=GRMZM2G102075_T01; parent_gene=GRMZM2G102075 MADVDVEPEV AAGAPKKRTF RKYSYRGVDL DALLDMSTDD LVQLFPARAR RRFQRGLKRK PMALIKKLRK AKKDAPVGEK PEPVKTHLRN MIIVPEMIGS IVGVYNGKTF NQVEIKPEMI GHYLAEFSIS YKPVKHGRPG IGATHSSRFI PLK 5.79588 -0.282726 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 7606 7606 7589 7291 7027 6493 5906 4591 3561 2109 1303 753 404 204 97 48 28 9 7 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7610 7610 7593 7295 6995 6407 5676 4132 2868 1066 398 117 39 32 1 0 0 1 2 3 4 5 6 7 2137 2935 1625 719 134 58 2 0 0 1 2 3 4 5 6 7 1598 3330 1843 618 159 57 3 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2993 (charge 3) 1265.67 3 155.082 155.118 157.097 157.109 157.134 158.091 159.077 160.08 166.062 166.103 167.082 169.061 169.098 169.134 170.137 171.077 171.113 171.15 173.092 173.129 175.119 183.113 183.149 185.056 185.092 187.072 187.108 194.128 195.113 197.129 199.108 200.14 201.124 203.066 209.092 213.088 216.134 217.135 225.099 227.102 231.062 234.145 238.119 240.135 242.187 244.129 247.108 249.16 254.147 258.146 265.118 272.172 279.15 285.169 286.143 287.665 297.157 313.187 315.166 324.155 329.193 331.198 337.188 342.622 343.234 346.971 350.148 355.198 357.214 359.204 369.194 383.194 386.215 414.238 417.721 436.681 442.249 446.222 454.27 491.782 496.261 503.245 511.288 541.264 552.776 569.331 574.323 602.235 625.305 631.307 638.32 640.328 697.424 699.289 724.37 737.386 836.45 883.486 885.499 982.559 4 3 10 2 3 7 100 8 3 2 3 3 3 92 10 3 4 3 3 10 29 3 4 9 8 21 8 3 3 29 8 4 5 5 3 3 6 5 2 15 4 11 3 11 4 5 16 3 6 3 9 5 7 6 3 4 4 4 2 6 3 29 3 4 39 3 28 10 3 9 3 8 27 3 3 3 16 4 5 11 4 3 4 7 4 30 3 26 4 5 4 5 7 12 2 8 3 17 3 4 GRMZM2G343688_P02 NP_001137129 hypothetical protein LOC100217311 seq=translation; coord=1:79707321..79716130:-1; parent_transcript=GRMZM2G343688_T02; parent_gene=GRMZM2G343688 MAETVDDKVS YFQAVTGISN TDLCTEILAA HNWDLQLAVS TITANPSSPS ASASTSSRDP APSAPLAVDA EYVAPPPPLP LPLPPQQQPG IAWKLVTLPF HVVSGGVGLV AGTFRLGAWV AGGVLSRSLS LLGLAGQAGS GDRLLELPPS AAEAADFVAE FEREFGAGRG PRFVAEGFAD ALKRAQREFK LLFVYLHSPD HPDTPAFCGG CLCAEPVAAF IDENFVAWGG SIRRTEGFKM SNSLNASRFP FCAVVMASTN QRIVLLQQVE GPKSPEEMIT VLQRVVEECA TSLVAARIEA EERLNNQRLR EEQDAAYRAA LEADQARERE RLEELKRRER EAAEAEKKRK EEEEAVARAS QEAAEKEAAL ARRRQEKAMA LGAEPEKGPG VTRVLIRFPT GERRERRFYS SATVASLYDY VDSLDCMKAE KYTLVSNFPR VTYGPEKQSL TLEEAGLHLQ ASLFIEIEQ GRMZM2G159538_P01 NP_001149312 fas-associated factor 1-like protein seq=translation; coord=9:155793124..155797446:1; parent_transcript=GRMZM2G159538_T01; parent_gene=GRMZM2G159538 MAETVDDKIS YFQAVTGISD TDLCTEILAA HNWDLQLAVS SITANPSSPS APVSTSSRDP APSAPLADAE FVAPPPPIPP PPQQQPGIAW KLVTLPFYVV SGGASLVAGS FRLGAWVAGG VLSRSLSLLG LAGQAGSGDR LLELPPSAAE AADFVAEFER ECGAGRGPRF VAEGFADALQ RAQREFKLLF VYLHSPDHPD TPAFCGGCLC AEPVAAFIDE NFVAWGGSIR RTEGFKMSNS LNASRFPFCA VVMASTNQRI VLLQQVEGPK SPEEMITILQ RVVEECATSL VAARIEAEER LNNQRLREEQ DAAYRAALEA DQARERERIE EQERREREAV EAEKKRKEEE EAVARAAQEA AEKEAALARR RQEKAMALGA EPEKGPGVTR VLIRFPTGER KERRFHSSAT VTSLYDYVDS LDCMKAENYS LVSNFPRVTY GPEKHSLTLE EAGLHPQASL FIEIEQ 6.54216 -0.290763 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 7553 7553 7553 7429 7000 6708 5786 5347 4809 3262 2568 1533 682 425 243 152 35 21 8 7 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7567 7567 7567 7443 7012 6704 5720 5108 4595 2540 1494 344 40 1 0 0 1 2 3 4 5 6 7 2680 3438 1202 172 65 5 8 0 0 1 2 3 4 5 6 7 1786 4077 1398 257 35 3 6 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2995 (charge 2) 1250.62 2 152.057 154.086 155.082 155.118 157.097 157.109 158.092 159.076 159.113 167.056 167.081 169.06 169.097 169.134 171.077 173.092 175.119 181.096 183.113 185.091 187.072 187.109 195.076 198.124 200.139 201.124 204.134 206.093 208.144 211.108 213.087 226.154 228.135 232.112 239.097 240.097 243.08 248.16 253.166 256.128 260.106 267.109 270.195 297.119 300.12 303.177 314.147 321.155 327.167 338.183 339.165 341.146 359.174 369.187 375.172 396.19 409.22 434.26 447.747 453.212 454.73 474.232 480.257 495.217 528.279 543.046 561.253 568.322 576.286 578.319 595.294 601.81 617.298 624.301 659.308 683.343 710.391 719.333 723.335 740.367 746.349 763.396 765.391 771.36 777.356 826.37 842.396 852.38 874.434 885.435 891.448 894.495 911.484 913.431 951.867 963.419 981.43 990.519 1048.5 1076.5 19 4 21 5 18 6 24 12 7 4 6 5 19 5 17 23 100 3 16 24 7 6 6 4 16 4 5 5 4 5 6 36 16 4 6 6 21 19 32 4 100 19 4 5 5 21 4 17 7 6 6 4 7 4 3 4 5 7 4 4 7 5 56 4 12 4 13 29 6 21 5 6 6 4 5 19 7 5 12 14 5 30 4 43 5 5 17 7 23 7 7 21 13 20 4 6 20 13 7 5 GRMZM2G018197_P01 NP_001147047 60S ribosomal protein L4 seq=translation; coord=2:233433323..233435947:-1; parent_transcript=GRMZM2G018197_T01; parent_gene=GRMZM2G018197 GRMZM2G100403_P02 NP_001168309 hypothetical protein LOC100382075 seq=translation; coord=7:10287294..10291100:1; parent_transcript=GRMZM2G100403_T02; parent_gene=GRMZM2G100403 GRMZM2G007695_P01 NP_001130508 hypothetical protein LOC100191607 seq=translation; coord=5:4268599..4271215:1; parent_transcript=GRMZM2G007695_T01; parent_gene=GRMZM2G007695 GRMZM2G068952_P01 NP_001130220 hypothetical protein LOC100191314 seq=translation; coord=1:287818241..287821189:-1; parent_transcript=GRMZM2G068952_T01; parent_gene=GRMZM2G068952 GRMZM2G100403_P01 NP_001168309 hypothetical protein LOC100382075 seq=translation; coord=7:10287328..10288164:1; parent_transcript=GRMZM2G100403_T01; parent_gene=GRMZM2G100403 6.29303 -0.381396 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6763 6763 6763 6489 5811 5436 4901 2838 2142 1065 438 183 51 17 5 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 6774 6774 6774 6500 5822 5386 4860 2611 1709 675 130 1 0 0 1 2 3 4 5 4087 2320 284 78 20 0 0 1 2 3 4 5 6 7 1462 4443 779 83 2 0 20 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 2999 (charge 2) 1600.76 2 155.093 157.108 158.092 159.078 159.092 168.065 175.119 183.124 185.005 195.088 211.118 215.114 240.134 258.514 266.125 286.151 303.177 316.159 355.168 369.687 373.186 377.205 389.152 405.198 422.227 427.146 442.164 459.296 463.176 468.17 469.724 475.229 504.237 513.74 533.258 576.281 588.565 656.247 663.325 664.329 669.25 671.251 675.75 684.27 733.222 770.353 778.865 783.869 792.372 801.883 910.459 921.419 938.447 993.405 1001.92 1008.46 1025.48 1051.48 1094.46 1179.55 1445.67 3 6 15 5 17 3 32 7 3 5 5 7 4 3 13 5 59 5 6 4 4 4 3 4 5 5 4 4 4 4 5 4 4 5 4 4 5 11 22 5 5 15 6 7 4 8 16 6 100 93 5 5 20 5 4 5 7 15 6 7 5 GRMZM2G163437_P01 P55240 Glucose-1-phosphate adenylyltransferase small subunit Fragment (EC 2.7.7.27)(Alpha-D-glucose-1-phosphate adenyl transferase)(ADP-glucose pyrophosphorylase)(AGPase B)(ADP-glucose synthase) seq=translation; coord=1:221648603..221653196:1; parent_transcript=GRMZM2G163437_T01; parent_gene=GRMZM2G163437 MAMAAIASPS SRTLIPPRHH GAAPSPSTSG DSSLRLLCAH PRHGRRGRAM SVSTPAARSR PFVFSPRAVS DSKSSQTCLD PDASTSVLGI ILGGGAGTRL YPLTKKRAKP AVPLGANYRL IDIPVSNCLN SNISKIYVLT QFNSASLNRH LSRAYGNNIG GYKNDGFVEV LAAQQSPDNP NWFQGTADAV RQYLWLFEEH NVMEFLILAG DHLYRMDYEK FIQAHRETDA DITVAALPMD EKRATAFGLM KIDEEGRIIE FAEKPKGDQL KAMMVDTTIL GLDDERAKEM PYIASMGIYV FSKDVMLQLL REQFPGANDF GSEVIPGATS IGKRVQAYLY DGYWEDIGTI EAFYNANLGI TKKPIPDFSF YDRSAPIYTQ PRHLPPSKVL DADVTDSVIG EGCVIKNCKI HHSVVGLRSC ISEGAIIEDT LLMGADYYET EADKKLLAEN GGIPIGIGKN SHIRKAIIDK NARIGDNVKI LNADNVQEAA RETDGYFIKG GIVTVIKDAL LPSGTVI GRMZM2G163437_P02 P55240 Glucose-1-phosphate adenylyltransferase small subunit Fragment (EC 2.7.7.27)(Alpha-D-glucose-1-phosphate adenyl transferase)(ADP-glucose pyrophosphorylase)(AGPase B)(ADP-glucose synthase) seq=translation; coord=1:221648607..221653113:1; parent_transcript=GRMZM2G163437_T02; parent_gene=GRMZM2G163437 MAMAAIASPS SRTLIPPRHH GAAPSPSTSG DSSLRLLCAH PRHGRRGRAM SVSTPAARSR PFVFSPRAVS DSKSSQTCLD PDASTSVLGI ILGGGAGTRL YPLTKKRAKP AVPLGANYRL IDIPVSNCLN SNISKIYVLT QFNSASLNRH LSRAYGNNIG GYKNDGFVEV LAAQQSPDNP NWFQGTADAV RQYLWLFEEH NVMEFLILAG DHLYRMDYEK FIQAHRETDA DITVAALPMD EKRATAFGLM KIDEEGRIIE FAEKPKGDQL KAMMVDTTIL GLDDERAKEM PYIASMGIYV FSKDVMLQLL REQFPGANDF GSEVIPGATS IGKRVQAYLY DGYWEDIGTI EAFYNANLGI TKKPIPDFSF YDRSAPIYTQ PRHLPPSKVL DADVTDSVIG EGCVIKNCKI HHSVVGLRSC ISEGAIIEDT LLMGADYYET EADKKLLAEN GGIPIGIGKN SHIRKAIIDK NARIGDNVKI LNADNVQEAA RETDGYFIKG GIVTVIKDAL LPSGTVI GRMZM2G163437_P03 P55240 Glucose-1-phosphate adenylyltransferase small subunit Fragment (EC 2.7.7.27)(Alpha-D-glucose-1-phosphate adenyl transferase)(ADP-glucose pyrophosphorylase)(AGPase B)(ADP-glucose synthase) seq=translation; coord=1:221649581..221653196:1; parent_transcript=GRMZM2G163437_T03; parent_gene=GRMZM2G163437 MEFLILAGDH LYRMDYEKFI QAHRETDADI TVAALPMDEK RATAFGLMKI DEEGRIIEFA EKPKGDQLKA MMVDTTILGL DDERAKEMPY IASMGIYVFS KDVMLQLLRE QFPGANDFGS EVIPGATSIG KRVQAYLYDG YWEDIGTIEA FYNANLGITK KPIPDFSFYD RSAPIYTQPR HLPPSKVLDA DVTDSVIGEG CVIKNCKIHH SVVGLRSCIS EGAIIEDTLL MGADYYETEA DKKLLAENGG IPIGIGKNSH IRKAIIDKNA RIGDNVKILN ADNVQEAARE TDGYFIKGGI VTVIKDALLP SGTVI 5.31986 -0.259506 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 5210 5210 5210 5053 4784 4220 3714 3113 2342 1560 853 516 269 155 69 39 15 11 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5221 5221 5221 5064 4791 4197 3543 2643 1566 624 175 53 28 1 0 0 1 2 3 4 5 2165 2581 441 35 2 0 0 1 2 3 4 5 6 7 1179 2177 1383 371 93 14 1 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3000 (charge 2) 1017.6 2 152.056 154.086 155.082 157.097 157.108 157.134 158.092 159.076 159.091 159.113 166.061 167.065 167.081 169.097 169.134 171.076 171.113 173.093 173.129 175.09 175.119 176.122 178.134 181.097 183.113 185.093 185.164 186.087 186.124 187.071 187.108 189.087 195.088 195.113 197.128 197.165 198.124 199.107 201.123 204.135 207.088 212.103 215.14 218.15 221.103 223.156 225.099 227.102 234.124 235.122 240.135 242.15 244.165 247.131 249.098 251.15 256.128 258.099 267.109 271.176 275.126 284.126 288.203 290.146 299.172 303.119 306.156 317.182 324.166 327.167 328.197 333.189 343.199 345.224 359.203 370.201 375.225 384.23 388.211 423.233 427.266 435.24 443.756 452.76 461.195 492.283 543.361 574.28 577.276 626.307 630.394 640.38 666.323 687.358 727.378 749.444 767.453 769.458 775.388 888.473 3 3 26 9 3 3 20 11 3 10 100 3 7 10 10 6 18 3 15 8 86 3 18 5 3 13 6 5 10 8 13 6 8 3 8 7 3 13 9 27 3 7 8 3 3 35 29 10 45 8 6 16 5 6 6 88 3 14 3 6 20 5 10 3 8 8 3 37 11 4 9 8 3 7 3 11 19 21 8 10 3 6 15 21 8 3 15 11 3 3 77 3 6 8 3 10 91 7 3 3 GRMZM2G140051_P01 NP_001105215 nucleosome/chromatin assembly factor group A seq=translation; coord=9:19393494..19397648:-1; parent_transcript=GRMZM2G140051_T01; parent_gene=GRMZM2G140051 GRMZM2G140051_P02 NP_001105215 nucleosome/chromatin assembly factor group A seq=translation; coord=9:19393494..19397627:-1; parent_transcript=GRMZM2G140051_T02; parent_gene=GRMZM2G140051 4.43795 -0.268967 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 5356 5356 5356 5184 5059 4611 4333 2689 2004 976 480 282 146 72 10 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5321 5321 5321 5149 5022 4557 4228 2368 1631 665 215 85 67 2 1 1 0 0 1 2 3 4 5 6 3041 2076 208 33 0 4 0 0 1 2 3 4 5 6 7 1019 3533 721 76 9 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3003 (charge 2) 1426.68 2 151.084 155.081 155.118 159.077 168.872 169.134 171.077 171.113 175.119 181.061 186.088 194.092 197.129 198.087 200.14 201.123 209.102 215.139 218.15 221.104 225.123 230.078 235.12 243.133 249.098 253.094 306.156 326.147 329.182 335.146 344.118 347.193 353.181 364.125 371.195 382.134 387.157 415.16 460.275 468.183 493.167 495.218 505.781 579.218 584.27 589.32 597.231 624.263 634.323 639.589 646.321 655.339 668.852 675.091 679.345 686.35 690.361 704.357 708.259 710.311 723.344 725.294 821.346 823.386 838.365 841.398 842.4 949.397 951.383 967.408 1056.49 1062.48 1167.52 1191.55 1409.41 3 3 3 3 3 3 11 3 26 3 3 2 37 5 16 4 3 100 64 4 17 5 3 15 3 9 5 5 25 4 4 10 16 10 11 15 3 4 9 4 6 6 3 10 11 13 18 14 4 4 5 9 3 4 16 5 10 22 13 4 4 4 14 5 12 23 5 15 4 14 16 4 3 3 3 GRMZM2G077851_P01 NP_001136667 hypothetical protein LOC100216796 seq=translation; coord=1:151356484..151358622:1; parent_transcript=GRMZM2G077851_T01; parent_gene=GRMZM2G077851 GRMZM2G072729_P01 NP_001130582 hypothetical protein LOC100191681 seq=translation; coord=7:34222504..34224841:1; parent_transcript=GRMZM2G072729_T01; parent_gene=GRMZM2G072729 GRMZM2G072729_P02 NP_001130582 hypothetical protein LOC100191681 seq=translation; coord=7:34222942..34224888:1; parent_transcript=GRMZM2G072729_T02; parent_gene=GRMZM2G072729 GRMZM2G067456_P01 NP_001131396 hypothetical protein LOC100192723 seq=translation; coord=3:127004080..127006073:-1; parent_transcript=GRMZM2G067456_T01; parent_gene=GRMZM2G067456 GRMZM2G077851_P03 NP_001136667 hypothetical protein LOC100216796 seq=translation; coord=1:151356736..151358244:1; parent_transcript=GRMZM2G077851_T03; parent_gene=GRMZM2G077851 GRMZM2G072729_P03 NP_001130582 hypothetical protein LOC100191681 seq=translation; coord=7:34223087..34224612:1; parent_transcript=GRMZM2G072729_T03; parent_gene=GRMZM2G072729 GRMZM2G067456_P02 NP_001131396 hypothetical protein LOC100192723 seq=translation; coord=3:127004341..127005956:-1; parent_transcript=GRMZM2G067456_T02; parent_gene=GRMZM2G067456 4.78624 -0.273499 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 8093 8093 8093 8005 7327 6351 5283 3883 2834 1654 1056 509 250 103 54 22 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8103 8103 8103 8015 7337 6334 5169 3640 2283 1119 613 257 84 18 1 0 0 1 2 3 4 5 6 2806 3839 1172 232 54 2 0 0 1 2 3 4 5 6 7 2909 3673 1270 210 27 4 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3004 (charge 3) 2696.29 3 186.077 195.088 197.128 204.087 205.088 209.092 217.109 221.103 228.135 235.119 246.091 249.098 264.134 267.108 274.188 283.176 293.162 297.156 303.178 317.127 326.17 337.822 342.177 354.168 394.173 423.176 428.198 432.245 435.233 445.218 463.226 489.769 533.304 543.279 544.791 556.276 629.295 657.292 670.362 727.386 736.361 742.365 755.869 764.88 769.35 785.353 794.354 824.398 832.909 840.474 860.898 872.931 881.436 922.406 936.442 940.962 977.536 979.497 1005.49 1015.48 1104.03 1105.58 1113.05 1161.05 1169.56 1320.63 1330.39 1470.72 1527.75 1529.77 1761.85 1763.85 9 5 7 41 3 7 7 10 83 31 9 9 11 9 5 9 5 11 8 11 29 5 6 23 8 8 8 27 11 7 16 8 26 6 6 7 7 7 25 97 8 11 8 27 8 11 7 8 45 57 8 40 100 11 9 7 66 7 9 7 7 24 52 7 22 10 7 10 40 7 21 11 GRMZM2G415359_P02 Q08062 Malate dehydrogenase, cytoplasmic (EC 1.1.1.37) seq=translation; coord=1:231336278..231341950:-1; parent_transcript=GRMZM2G415359_T02; parent_gene=GRMZM2G415359 MAKEPMRVLV TGAAGQIGYA LVPMIARGVM LGADQPVILH MLDIPPAAEA LNGVKMELVD AAFPLLKGVV ATTDVVEACT GVNVAVMVGG FPRKEGMERK DVMSKNVSIY KSQASALEAH AAPNCKVLVV ANPANTNALI LKEFAPSIPE KNVTCLTRLD HNRALGQISE RLNVQVSDVK NVIIWGNHSS SQYPDVNHAT VKTSTGEKPV RELVSDDEWL NGEFITTVQQ RGAAIIKARK FSSALSAASS ACDHIRDWVL GTPEGTFVSM GVYSDGSYGV PSGLIYSFPV TCSGGEWKIV QGLPIDEFSR KKMDATAQEL TEEKTLAYSC LE GRMZM2G415359_P03 Q08062 Malate dehydrogenase, cytoplasmic (EC 1.1.1.37) seq=translation; coord=1:231336334..231337977:-1; parent_transcript=GRMZM2G415359_T03; parent_gene=GRMZM2G415359 MGVYSDGSYG VPSGLIYSFP VTCSGGEWKI VQGLPIDEFS RKKMDATAQE LTEEKTLAYS CLE 6.72705 -0.274574 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 12522 12522 12522 12522 12410 12142 11596 10874 8987 7510 5342 3357 2140 1191 666 331 204 99 43 22 7 5 2 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 12524 12524 12524 12524 12412 12144 11579 10780 8532 5991 3025 894 208 33 1 0 0 1 2 3 4 5 6 7 3188 5183 2708 1130 253 39 21 4 0 1 2 3 4 5 6 7 1965 4780 3371 1634 549 179 38 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3005 (charge 3) 1637.81 3 152.057 155.082 155.118 156.077 157.097 158.092 159.077 167.081 169.097 171.077 171.113 173.093 173.129 175.119 183.077 185.092 187.071 189.087 194.129 195.076 195.113 197.129 199.071 200.103 201.087 203.103 212.103 213.087 215.14 217.082 222.123 226.118 227.102 231.098 232.14 240.134 243.133 244.165 246.156 258.145 276.156 289.162 303.176 308.162 317.174 323.668 326.171 332.179 336.669 344.181 346.179 351.171 354.166 357.25 360.14 369.178 372.69 381.696 387.188 390.206 405.199 429.713 437.203 446.229 455.211 467.257 488.234 495.767 506.247 514.793 519.256 526.295 547.278 575.28 590.3 601.323 619.331 627.348 632.337 661.327 672.329 674.328 691.346 698.384 730.362 748.374 750.377 760.376 762.381 790.405 836.449 841.397 847.43 859.402 860.41 877.43 890.439 894.408 912.434 947.479 7 17 11 7 11 10 18 7 12 10 11 25 12 46 13 12 7 16 16 7 16 26 18 22 7 7 7 23 24 10 7 14 19 45 12 42 11 12 17 100 81 12 14 15 13 15 26 14 21 6 12 12 13 6 17 18 15 13 65 21 30 17 32 13 22 17 12 6 97 12 21 14 18 15 24 12 68 13 12 14 31 13 14 18 31 73 15 7 18 19 7 14 11 55 27 31 13 10 15 15 GRMZM2G102075_P01 NP_001148770 40S ribosomal protein S15 seq=translation; coord=7:11335166..11337275:1; parent_transcript=GRMZM2G102075_T01; parent_gene=GRMZM2G102075 5.55094 -0.246708 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 6936 6936 6936 6700 6333 5945 4534 3708 2371 1708 1041 626 354 221 135 80 35 16 8 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6946 6946 6946 6710 6342 5929 4278 3066 1524 712 257 106 50 14 1 0 0 1 2 3 4 5 6 3657 2561 593 123 11 1 0 0 1 2 3 4 5 6 7 1118 3713 1600 403 87 15 8 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3006 (charge 2) 1265.67 2 152.057 157.097 159.077 161.092 167.093 169.097 169.134 170.137 171.076 171.113 173.092 175.12 183.113 185.092 187.072 195.089 197.129 198.088 199.108 201.087 203.102 211.12 213.087 216.098 226.155 227.103 234.144 239.114 240.135 246.182 248.16 251.102 254.149 256.128 259.093 265.118 272.172 275.208 279.098 284.124 286.145 293.113 295.637 303.177 311.174 315.166 329.183 331.157 338.181 339.167 343.235 347.229 352.16 355.198 366.674 383.194 384.19 417.724 423.216 433.244 440.215 442.245 453.258 454.266 456.255 466.278 473.211 482.219 491.783 511.29 512.288 534.292 537.315 540.309 543.29 551.32 562.288 567.311 569.33 576.271 587.266 590.266 602.358 640.327 661.305 682.338 697.432 709.385 737.385 773.324 781.41 826.351 883.49 885.495 893.476 933.501 963.431 967.465 982.561 1079.6 7 3 54 3 6 9 100 11 6 5 5 18 5 11 26 9 39 19 8 8 4 4 3 11 14 12 5 25 20 9 7 9 8 9 6 5 4 13 4 25 6 5 9 45 4 6 3 6 5 4 51 5 3 13 6 13 3 8 8 7 5 7 6 6 5 6 3 5 8 13 5 7 5 40 6 3 12 8 36 4 5 6 12 5 5 15 13 5 20 10 5 16 61 8 3 7 3 5 22 10 GRMZM5G862331_P02 NP_001132591 hypothetical protein LOC100194063 seq=translation; coord=5:208749279..208751400:-1; parent_transcript=GRMZM5G862331_T02; parent_gene=GRMZM5G862331 MDEEEHEVYG QEIPEDGDMD GADVDMAASG DDAAKLQELD EMKRRLKEME EEAAALRDMQ AKVAKEMQGG DPSASTAEAK EQVDARSVYV GNVRIYNNLP LFIVTLHISG NMLCCFEIFI GRMZM5G862331_P03 NP_001132591 hypothetical protein LOC100194063 seq=translation; coord=5:208748919..208751400:-1; parent_transcript=GRMZM5G862331_T03; parent_gene=GRMZM5G862331 MDEEEHEVYG QEIPEDGDMD GADVDMAASG DDAAKLQELD EMKRRLKEME EEAAALRDMQ AKVAKEMQGG DPSASTAEAK EQVDARSVYV GNG GRMZM5G862331_P04 NP_001132591 hypothetical protein LOC100194063 seq=translation; coord=5:208745686..208751400:-1; parent_transcript=GRMZM5G862331_T04; parent_gene=GRMZM5G862331 MDEEEHEVYG QEIPEDGDMD GADVDMAASG DDAAKLQELD EMKRRLKEME EEAAALRDMQ AKVAKEMQGG DPSASTAEAK EQVDARSVYV GNVDYACTPE EVQQHFQACG TVNRVTILTD KFGQPKGFAY VEFLEQEGVQ EALNLNESEL HGRQIKVAPK RTNVPGMKQR PPRGYNPYHG YPYRSYGAPY FPPYGYGRAP RFRRPMRYRP YF 5.88425 -0.287037 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 2597 2597 2591 2399 2324 2206 1731 1418 866 557 358 200 120 69 40 11 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2619 2619 2613 2421 2343 2220 1675 1172 666 331 136 73 14 2 1 0 0 1 2 3 4 5 6 1193 1002 363 46 10 19 0 0 1 2 3 4 5 6 7 605 1460 452 93 8 0 0 15 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3007 (charge 2) 1478.64 2 152.057 155.082 157.097 158.092 159.076 165.103 167.056 167.082 169.061 171.075 173.092 175.12 185.092 186.089 186.124 187.072 191.085 198.087 201.087 204.135 209.371 212.103 215.086 218.15 224.103 227.085 230.079 233.096 238.119 240.098 243.08 256.13 258.107 260.105 269.125 272.172 295.105 297.121 299.062 302.136 303.204 313.113 325.151 329.182 340.125 343.162 344.977 347.193 358.135 371.138 389.157 392.157 408.187 415.038 418.231 426.203 428.16 431.219 442.192 472.857 481.202 485.195 497.235 519.275 531.726 540.731 557.212 572.226 585.209 600.778 606.309 616.3 626.279 644.29 661.296 677.347 698.297 712.086 741.366 746.375 764.375 784.437 843.419 861.432 863.433 931.432 976.458 1033.46 1062.44 1090.5 1179.53 1201.56 1274.96 4 4 8 4 9 3 13 75 4 3 4 16 56 11 4 4 3 4 9 24 2 3 21 45 4 7 2 52 15 3 38 14 3 15 4 38 13 7 33 3 12 3 4 21 31 8 10 11 19 40 4 4 4 4 15 3 5 12 3 2 3 3 4 20 15 8 3 2 4 5 32 3 5 10 3 18 5 3 5 3 15 5 5 100 8 3 8 3 3 22 4 4 3 GRMZM2G130095_P01 NP_001148654 KH domain containing protein seq=translation; coord=1:167864280..167870604:1; parent_transcript=GRMZM2G130095_T01; parent_gene=GRMZM2G130095 MDVPVDDPVE NLTGSPSTLG NEEEATTYAN VQDQSKEEPE KLYEEPKDPM QDELGNQGHV SMNNEDVGGQ NKVDQATPTE HGEEAGVKQH DATVPDDKKW PGWPGESVFR ILVPTTKVGA VIGRKGDFIK KMCEESRARI KVLEGPPAVP ERAVMISAKD EPDTELPPAV DGLLRVHRRI TDGLETETDQ PQRATVNTGP TRLLVPASQA GSLIGKQGAT IKSIQDASKC VLRIVENVPP VALNDDRVVE IQGEPHDSHK AVELIASHLR KFLVDRSVLP LFETQIKAHN MHREQPMPPP QAWGPPPPSP WGHPPPNLPP GGPGYVGNPH YMPPRPQENY YPPPDVPPVE KQPHYGISSY GRDAPPSAPP GNQNQAHGSS QVTHSMQVPL SYADAVIGAA GASISYIRRH SGATISIQEG APGEMTVEIT GSASQVQTAQ QLIKNFMAEA SPQGPPAPGP HGQPVDTGYG SYPPYGGASY GSPPGAPAPA PHNGGSYGAA PYSSSYGY GRMZM2G130095_P03 NP_001148654 KH domain containing protein seq=translation; coord=1:167864280..167870561:1; parent_transcript=GRMZM2G130095_T03; parent_gene=GRMZM2G130095 MDVPVDDPVE NLTGSPSTLG NEEEATTYAN VQDQSKEEPE KLYEEPKDPM QDELGNQGHV SMNNEDVGGQ NKVDQATPTE HGEEAGVKQH DATVPDDKKW PGWPGESVFR ILVPTTKVGA VIGRKGDFIK KMCEESRARI KVLEGPPAVP ERAVMISAKD EPDTELPPAV DGLLRVHRRI TDGLETETDQ PQRATVNTGP TRLLVPASQA GSLIGKQGAT IKSIQDASKC VLRIVENVPP VALNDDRVVE IQGEPHDSHK AVELIASHLR KFLVDRSVLP LFETQIKAHN MHREQPMPPP QAWGPPPPSP WGHPPPNLPP GGPGYVGNPH YMPPRPQENY YPPPDVPPVE KQPHYGISSY GRDAPPSAPP GNQNQAHGSS QVTHSMQVPL SYADAVIGAA GASISYIRRH SGATISIQEG APGEMTVEIT GSASQVQTAQ QLIKGPPAPG PHGQPVDTGY GSYPPYGGAS YGSPPGAPAP APHNGGSYGA APYSSSYGY 5.09018 -0.261035 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 9447 9447 9447 9447 8437 7945 6815 5622 4191 2997 1951 1017 535 253 138 61 29 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9452 9452 9452 9452 8442 7831 6612 5068 3229 1975 805 250 75 36 1 0 0 1 2 3 4 5 6 7 3686 3738 1535 395 76 25 2 0 0 1 2 3 4 5 6 7 1585 3940 2429 1206 232 53 5 7 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3009 (charge 3) 1667.78 3 155.082 157.097 158.092 159.076 159.113 167.082 169.097 169.133 171.077 171.113 173.092 173.129 175.09 175.119 181.098 183.077 185.092 186.124 187.108 189.087 199.108 201.087 204.135 212.104 215.103 216.099 226.155 227.103 238.119 240.097 242.113 244.093 246.181 249.098 254.114 256.13 272.125 283.142 298.105 303.176 310.14 315.13 322.174 325.152 335.171 343.161 353.183 357.18 360.196 370.209 372.226 374.241 386.166 388.219 413.707 438.247 439.24 457.242 459.267 475.251 481.24 498.268 503.282 514.275 525.807 528.753 546.289 558.321 569.302 577.278 580.297 593.265 622.332 626.324 628.307 643.342 680.304 689.341 691.356 697.394 700.364 705.359 726.38 744.388 762.387 782.414 826.404 851.347 863.427 893.433 908.378 916.394 930.496 955.445 957.463 1007.45 1056.51 1077.54 1135.54 1153.55 19 41 6 6 5 7 28 4 12 21 23 5 6 54 7 6 49 5 30 5 23 13 14 7 17 5 32 15 5 14 5 41 7 4 38 7 17 6 6 15 7 16 5 7 6 6 13 5 11 13 4 13 5 64 20 10 5 6 6 18 13 34 4 5 39 13 13 100 4 56 13 5 21 48 6 86 6 37 4 19 5 4 12 49 16 20 40 5 13 5 15 5 21 13 4 6 15 5 4 33 GRMZM2G127648_P01 NP_001148331 ras-related protein RIC2 seq=translation; coord=6:159006258..159010274:-1; parent_transcript=GRMZM2G127648_T01; parent_gene=GRMZM2G127648 4.29957 -0.232409 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 5347 5347 5322 5200 4798 4450 2927 2152 1192 629 411 240 123 73 38 32 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5349 5349 5324 5195 4739 4350 2407 1545 585 199 147 52 13 1 0 0 1 2 3 4 5 2641 1942 696 51 20 0 0 1 2 3 4 5 6 7 1005 3014 1129 189 11 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3010 (charge 2) 1316.63 2 152.057 154.679 155.081 155.117 157.097 158.093 159.077 160.079 167.082 167.118 169.097 171.078 173.093 173.129 174.132 175.119 181.097 183.076 183.113 185.091 186.087 186.124 187.108 189.088 195.113 198.124 199.072 199.108 200.104 201.124 204.135 213.087 217.082 226.155 228.104 239.114 241.082 244.166 251.103 254.15 258.145 266.111 270.109 272.171 276.155 284.01 288.119 298.102 301.187 303.178 309.158 311.171 315.04 324.153 330.165 337.187 341.181 355.198 365.184 369.1 372.225 381.141 383.193 394.127 399.15 434.24 438.235 440.178 443.259 452.255 470.262 474.189 529.267 561.296 571.319 579.788 598.241 600.271 616.254 628.32 633.33 660.357 664.332 677.401 690.35 695.405 700.358 714.385 715.389 762.384 789.409 800.399 834.426 889.436 903.503 917.432 921.501 987.482 1116.53 1129.59 5 1 8 1 2 2 3 2 2 1 3 2 11 100 8 15 2 2 3 2 1 2 2 2 2 5 7 32 2 31 12 5 6 86 3 2 3 20 2 2 3 1 6 6 5 4 2 2 54 5 2 2 7 2 8 2 3 3 2 2 11 1 11 4 2 5 3 2 1 15 6 1 2 2 5 6 1 2 2 2 2 9 2 9 2 3 1 6 2 2 2 5 2 2 9 2 2 2 2 2 GRMZM2G180625_P01 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903246:-1; parent_transcript=GRMZM2G180625_T01; parent_gene=GRMZM2G180625 MTYMFKYDTV HGQWKHSDIA LKDSKTLLFG EKPVTVFGIR NPEEIPWGEA GAEYVVESTG VFTDKDKAAA HLKGGAKKVV ISAPSKDAPM FVVGVNEDKY TSDVNIVSNA SCTTNCLAPL AKVIHDNFGI IEGLMTTVHA ITATQKTVDG PSAKDWRGGR AASFNIIPSS TGAAKAVGKV LPELNGKLTG MSFRVPTVDV SVVDLTVRIE KGASYEEIKK AIKAASEGPL KGIMGYVEED LVSTDFTGDS RSSIFDAKAG IALNDHFIKL VSWYDNEWGY SNRVVDLIRH MFKTQ GRMZM2G180625_P02 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903246:-1; parent_transcript=GRMZM2G180625_T02; parent_gene=GRMZM2G180625 MGKIKIGING FGRIGRLVAR VALQSEDVEL VAVNDPFITT DYMTYMFKYD TVHGQWKHSD IALKDSKTLL FGEKPVTVFG IRNPEEIPWG EAGAEYVVES TGVFTDKDKA AAHLKGGAKK VVISAPSKDA PMFVVGVNED KYTSDVNIVS NASCTTNCLA PLAKVIHDNF GIIEGLMTTV HAITATQKTV DGPSAKDWRG GRAASFNIIP SSTGAAKAVG KVLPELNGKL TGMSFRVPTV DVSVVDLTVR IEKGASYEEI KKAIKAASEG PLKGIMGYVE EDLVSTDFTG DSRSSIFDAK AGIALNDHFI KLVSWYDNEW GYSNRVVDLI RHMFKTQ GRMZM2G180625_P03 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903153:-1; parent_transcript=GRMZM2G180625_T03; parent_gene=GRMZM2G180625 MRLLEKGKIK IGINGFGRIG RLVARVALQS EDVELVAVND PFITTDYMTY MFKYDTVHGQ WKHSDIALKD SKTLLFGEKP VTVFGIRNPE EIPWGEAGAE YVVESTGVFT DKDKAAAHLK GGAKKVVISA PSKDAPMFVV GVNEDKYTSD VNIVSNASCT TNCLAPLAKV IHDNFGIIEG LMTTVHAITA TQKTVDGPSA KDWRGGRAAS FNIIPSSTGA AKAVGKVLPE LNGKLTGMSF RVPTVDVSVV DLTVRIEKGA SYEEIKKAIK AASEGPLKGI MGYVEEDLVS TDFTGDSRSS IFDAKAGIAL NDHFIKLVSW YDNEWGYSNR VVDLIRHMFK TQ 5.88616 -0.301855 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 6341 6341 6341 6124 5844 5308 4112 3314 2203 1342 716 323 156 68 30 18 8 2 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 6363 6363 6363 6146 5856 5279 3918 2822 1418 498 107 15 1 0 0 1 2 3 4 5 2818 2901 581 55 9 0 0 1 2 3 4 5 6 7 1483 3271 1223 299 63 11 2 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3012 (charge 2) 1024.53 2 152.057 155.082 157.061 157.097 157.109 158.091 159.077 160.077 162.113 167.082 169.098 171.077 171.113 173.056 173.093 173.129 175.072 175.119 176.071 178.087 181.098 183.113 183.15 185.091 186.091 186.125 187.072 187.108 188.072 189.088 194.13 195.113 197.129 198.087 198.124 199.072 199.108 204.135 205.098 209.092 213.087 216.098 217.082 223.108 226.155 232.14 233.094 235.093 239.115 242.186 244.166 249.123 251.102 254.152 257.197 259.092 265.118 267.109 272.171 275.208 276.212 286.144 293.113 301.188 303.178 314.687 324.157 326.174 333.155 354.169 362.136 372.178 380.146 383.193 388.292 405.224 416.23 422.156 448.74 452.258 481.195 489.269 491.179 499.327 504.258 509.187 517.335 548.281 620.317 628.368 646.378 649.334 650.337 678.344 720.403 740.341 748.403 782.375 809.441 896.479 4 6 6 9 3 5 11 3 4 5 4 20 4 3 3 3 3 22 3 6 3 15 4 7 3 4 3 3 3 3 6 6 5 12 4 4 25 5 8 4 5 19 6 100 42 11 4 4 5 20 16 12 27 5 12 31 10 4 8 45 7 3 17 4 13 3 5 5 6 3 5 6 13 5 18 8 3 20 7 5 3 5 4 5 3 16 16 6 8 8 29 7 3 3 4 3 3 3 11 12 GRMZM2G096153_P01 NM_001111509 glutathione transferase10 (gst10), mRNA seq=translation; coord=1:7866607..7868253:-1; parent_transcript=GRMZM2G096153_T01; parent_gene=GRMZM2G096153 GRMZM2G096153_P02 NM_001111509 glutathione transferase10 (gst10), mRNA seq=translation; coord=1:7866691..7868236:-1; parent_transcript=GRMZM2G096153_T02; parent_gene=GRMZM2G096153 4.86232 -0.237186 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 7177 7177 7177 6846 6726 6144 5821 3675 2253 1243 696 385 218 164 79 60 20 17 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7179 7179 7179 6848 6726 6119 5736 3413 1847 725 292 150 91 16 3 1 0 0 1 2 3 4 5 6 3241 3218 613 94 18 1 0 0 1 2 3 4 5 6 7 1720 4612 727 104 14 0 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3016 (charge 2) 1360.69 2 152.057 155.081 157.097 158.093 161.092 165.916 166.06 167.055 167.117 169.097 171.076 171.113 172.108 173.091 175.12 176.123 181.059 183.077 183.149 185.092 185.129 186.123 187.072 187.108 189.087 194.129 195.113 200.176 203.103 210.16 213.085 215.139 217.082 226.155 228.171 231.097 237.135 240.132 242.151 254.161 260.107 267.185 285.155 299.139 344.165 362.138 371.139 414.246 439.232 442.242 456.257 490.192 513.291 539.276 557.304 562.272 574.181 586.364 618.285 623.789 644.338 667.374 672.344 681.852 728.369 754.378 772.395 823.876 868.427 886.402 903.431 905.433 931.427 1032.47 1046.5 1078.46 1089.5 1116.5 1117.51 1133.53 1135.53 1232.59 1234.59 4 4 4 3 4 3 3 3 6 12 5 3 4 5 24 3 4 4 45 4 11 3 6 3 4 3 5 6 37 18 3 4 5 5 20 24 22 3 6 11 4 4 4 4 3 5 3 4 14 4 33 4 3 12 14 4 11 15 4 4 43 5 4 5 4 6 40 3 3 3 52 6 6 31 4 5 12 7 4 100 20 19 4 GRMZM2G124307_P01 NP_001152548 LOC100286188 seq=translation; coord=1:212054704..212055806:-1; parent_transcript=GRMZM2G124307_T01; parent_gene=GRMZM2G124307 5.26229 -0.269861 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 8601 8601 8601 8391 8242 7850 7282 6174 5019 3675 2478 1502 869 448 226 92 32 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 8609 8609 8609 8399 8240 7810 7166 5869 4255 2348 1000 310 143 28 10 1 0 0 1 2 3 4 5 6 7 2633 3597 1660 549 147 16 4 5 0 1 2 3 4 5 6 7 1291 3368 2480 1049 371 43 4 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3018 (charge 3) 1644.76 3 156.102 157.097 158.093 159.077 167.081 169.097 171.077 173.092 173.129 175.119 183.113 185.092 186.123 189.087 195.113 199.071 199.108 199.181 201.124 204.135 211.108 213.087 216.135 217.082 226.155 227.102 229.118 231.098 234.145 239.094 241.082 245.077 254.163 255.145 259.092 261.619 267.109 272.171 288.201 292.138 299.063 303.178 306.159 310.149 312.155 322.155 324.157 337.187 342.178 346.124 350.143 355.198 358.673 363.166 374.12 379.199 383.194 397.208 427.181 446.237 452.249 457.161 462.263 470.249 475.165 487.264 504.216 508.241 513.745 516.236 522.231 526.251 550.264 560.314 591.291 598.296 601.277 616.305 619.283 621.29 627.312 637.282 655.293 678.351 703.336 706.347 727.384 750.361 752.306 766.37 770.321 814.369 832.38 853.357 871.368 894.413 904.488 912.421 929.432 982.445 9 9 8 3 4 4 14 3 6 34 79 8 3 20 3 14 25 3 100 3 15 10 9 39 57 30 12 3 40 12 7 12 6 21 12 8 6 18 3 7 4 13 4 40 14 8 7 7 3 14 6 8 10 6 15 3 7 44 3 3 9 6 3 7 16 25 15 15 4 4 57 21 13 7 7 3 6 13 83 8 4 22 35 11 41 4 8 6 5 4 43 9 17 9 54 7 3 9 40 3 GRMZM2G169384_P01 NP_001149362 DAG protein seq=translation; coord=9:150809669..150813518:1; parent_transcript=GRMZM2G169384_T01; parent_gene=GRMZM2G169384 MASASRALLL SRALQAGASR RVPALLRPVA AAASLLPAVA GPAGAALGAR VRCFATQPAT SSLRDSSPNW SNRPPKETIL LDGCDFEHWL VIMEPPPGDA SNPDITRDEI IDSYIKTLAQ VVGSEEEARQ KIYSVSTRHY FGFGALVSEE LSYKLKEIPK VRWVLPDSYL DVKNKDYGGE PFINGQAVPY DPKYHEEWVR NNARANDRNR RNDRPRNFDR SRNFDRRREN MQNYQNRDGP PAQGFNGPPP PPGQNQMPSH HSQGNMSPQP PHAGGGQPNY QPQMQNPQTG YNPGGAPHYQ QGAAPGYQGG PPGYQGGYQG NPGPAYQGGN TGYQGGNPPP PYQGSNPPPP YQGGSPPGPP PPYRGGSPPG PPPPYRGGNP NVPPYSGGGN PGYPGGSPGY QGQGGNSNFQ 5.43358 -0.293707 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2304 2304 2304 2245 2163 1875 1670 1516 1034 844 521 294 129 60 28 10 6 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2307 2307 2307 2248 2160 1862 1641 1449 942 621 286 65 17 1 0 0 1 2 3 4 5 1216 902 171 17 2 0 0 1 2 3 4 5 6 7 478 1258 478 80 9 3 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3022 (charge 2) 1196.51 2 153.066 155.082 157.061 157.097 157.109 158.093 159.077 166.05 169.097 169.134 170.092 171.077 171.113 173.092 175.119 176.122 181.061 181.097 185.091 194.129 195.114 197.129 198.087 198.124 199.072 199.108 201.123 204.135 209.057 212.103 216.099 218.096 226.082 227.103 229.065 234.146 236.102 240.135 244.093 245.096 250.12 255.108 260.107 264.098 272.135 278.114 281.125 289.162 292.13 303.178 309.119 312.102 323.137 329.128 337.189 340.095 341.098 344.126 357.123 366.142 374.148 383.166 389.143 394.179 400.193 402.691 406.171 417.221 420.152 427.206 432.244 438.238 452.255 460.68 485.181 546.233 557.222 559.299 563.258 564.268 569.255 580.284 590.268 660.278 661.273 677.296 694.327 696.335 732.387 788.332 805.359 806.363 822.386 824.382 833.356 903.489 953.425 955.427 963.408 1078.43 6 12 12 8 6 17 4 8 7 3 10 7 18 7 71 3 31 10 3 3 4 3 13 3 37 29 7 6 14 7 14 3 90 24 6 10 3 8 67 7 13 9 22 35 29 7 32 47 8 8 9 9 3 6 5 31 3 6 33 6 11 7 10 3 20 7 12 41 3 3 9 3 11 3 3 6 3 3 8 3 3 65 7 8 3 21 100 8 3 9 35 17 49 3 6 6 27 6 3 8 GRMZM2G112149_P01 B8A1R8 Putative uncharacterized protein seq=translation; coord=5:15546617..15552849:-1; parent_transcript=GRMZM2G112149_T01; parent_gene=GRMZM2G112149 MASHIVGYPR MGPKRELKFA LESFWDGKSS AEDLEKVATD LRSSIWKQMS EAGIKYIPSN TFSYYDQVLD TTAMLGAVPE RYSWTGGEIG LSTYFSMARG NATVPAMEMT KWFDTNYHFI VPELGPSTKF TYASHKAVSE YKEAKALGID TVPVLVGPVS YLLLSKPAKG VEKSFSLLSL LGSILPIYKE VVAELKAAGA SWIQLDEPTL VKDLDAHELA AFSSAYAELE SSFSGLNVLI ETYFADIPAE SYKTLTSLSG VTAYGFDLIR GAKTLDLIRS SFPSGKYLFA GVVDGRNIWA DDLAASLSTL HSLEAVAGKD KLVVSTSCSL MHTAVDLVNE TKLDDEIKSW LAFAAQKVVE VNALAKALAG QKDEVYFAAN AAAQASRRSS PRVTNEEVQK AAAALRGSDH RRSTTVSARL DAQQKKLNLP VLPTTTIGSF PQTVELRRVR REYKAKKITE DEYISAIKEE ISKVVKIQEE LDIDVLVHGE PERNDMVEYF GEQLSGFAFT ANGWVQSYGS RCVKPPIIYG DVSRPNPMTV FWSKMAQSMT PRPMKGMLTG PVTILNWSFV RNDQPRFETC YQIALAIKKE VEDLEAAGIQ VIQIDEAALR EGLPLRKSEH AFYLDWAVHS FRITNCGVQD TTQIHTHMCY SNFNDIIHSI IDMDADVITI ENSRSDEKLL SVFREGVKYG AGIGPGVYDI HSPRIPSTEE IADRVEKMLA VLDTNILWVN PDCGLKTRKY TEVKPALTNM VSATKLIRTQ LASAK GRMZM2G112149_P03 B8A1R8 Putative uncharacterized protein seq=translation; coord=5:15547422..15552620:-1; parent_transcript=GRMZM2G112149_T03; parent_gene=GRMZM2G112149 MASHIVGYPR MGPKRELKFA LESFWDGKSS AEDLEKVATD LRSSIWKQMS EAGIKYIPSN TFSYYDQVLD TTAMLGAVPE RYSWTGGEIG LSTYFSMARG NATVPAMEMT KWFDTNYHFI VPELGPSTKF TYASHKAVSE YKEAKALGID TVPVLVGPVS YLLLSKPAKG VEKSFSLLSL LGSILPIYKE VVAELKAAGA SWIQLDEPTL VKDLDAHELA AFSSAYAELE SSFSGLNVLI ETYFADIPAE SYKTLTSLSG VTAYGFDLIR GAKTLDLIRS SFPSGKYLFA GVVDGRNIWA DDLAASLSTL HSLEAVAGKD KLVVSTSCSL MHTAVDLVNE TKLDDEIKSW LAFAAQKVVE VNALAKALAG QKDEVYFAAN AAAQASRRSS PRVTNEEVQK AAAALRGSDH RRSTTVSARL DAQQKKLNLP VLPTTTIGSF PQTVELRRVR REYKAKKITE DEYISAIKEE ISKVVKIQEE LDIDVLVHGE PERNDMVEYF GEQLSGFAFT ANGWVQSYGS RCVKPPIIYG DVSRPNPMTV FWSKMAQSMT PRPMKGMLTG PVTILNWSFV RNDQPRFETC YQIALAIKKE VEDLEAAGIQ VIQIDEAALR EGLPLRKSEH AFYLDWAVHS FRITNCGVQD TTQIHTHMCY SNFNDIIHSI IDMDADVITI ENSRSDEKLL SVFREGVKYG AGIGPGVYDI HSPRIPSTEE IADRVEKMLA VLDTNILWVN PDCGLKTRKY TEVKPALTNM VSATKLIRTQ LASAK GRMZM2G112149_P02 B8A1R8 Putative uncharacterized protein seq=translation; coord=5:15547422..15552849:-1; parent_transcript=GRMZM2G112149_T02; parent_gene=GRMZM2G112149 MKPTNPSDFP CSSSPVHHPP PTPSSPRRPR RHHSSSPGAT PPLHGPRMAS HIVGYPRMGP KRELKFALES FWDGKSSAED LEKVATDLRS SIWKQMSEAG IKYIPSNTFS YYDQVLDTTA MLGAVPERYS WTGGEIGLST YFSMARGNAT VPAMEMTKWF DTNYHFIVPE LGPSTKFTYA SHKAVSEYKE AKALGIDTVP VLVGPVSYLL LSKPAKGVEK SFSLLSLLGS ILPIYKEVVA ELKAAGASWI QLDEPTLVKD LDAHELAAFS SAYAELESSF SGLNVLIETY FADIPAESYK TLTSLSGVTA YGFDLIRGAK TLDLIRSSFP SGKYLFAGVV DGRNIWADDL AASLSTLHSL EAVAGKDKLV VSTSCSLMHT AVDLVNETKL DDEIKSWLAF AAQKVVEVNA LAKALAGQKD EVYFAANAAA QASRRSSPRV TNEEVQKAAA ALRGSDHRRS TTVSARLDAQ QKKLNLPVLP TTTIGSFPQT VELRRVRREY KAKKITEDEY ISAIKEEISK VVKIQEELDI DVLVHGEPER NDMVEYFGEQ LSGFAFTANG WVQSYGSRCV KPPIIYGDVS RPNPMTVFWS KMAQSMTPRP MKGMLTGPVT ILNWSFVRND QPRFETCYQI ALAIKKEVED LEAAGIQVIQ IDEAALREGL PLRKSEHAFY LDWAVHSFRI TNCGVQDTTQ IHTHMCYSNF NDIIHSIIDM DADVITIENS RSDEKLLSVF REGVKYGAGI GPGVYDIHSP RIPSTEEIAD RVEKMLAVLD TNILWVNPDC GLKTRKYTEV KPALTNMVSA TKLIRTQLAS AK 4.45573 -0.270044 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2434 2434 2411 2266 2024 1801 1280 1082 519 380 121 80 41 20 10 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 2430 2430 2407 2227 1980 1750 1102 632 212 78 1 0 0 1 2 3 4 1327 986 117 8 0 0 1 2 3 4 5 6 7 357 1309 578 161 28 3 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3023 (charge 2) 921.427 2 155.082 157.109 157.133 158.064 158.092 159.077 167.056 167.082 169.097 169.134 170.093 171.077 171.113 173.092 173.129 175.09 175.119 176.093 176.122 181.061 181.096 183.077 187.144 191.085 197.129 198.087 200.103 203.085 209.092 212.139 217.134 219.081 223.064 225.043 227.103 233.095 244.166 246.156 251.15 255.145 269.124 272.172 287.137 303.214 312.167 314.08 324.986 329.193 341.017 342.997 345.225 350.148 356.193 359.028 371.103 373.22 383.2 386.215 400.23 409.229 418.238 429.089 431.162 486.252 504.261 535.248 547.267 549.282 556.322 562.291 573.278 591.292 593.29 602.234 627.358 633.324 699.287 702.325 703.327 719.351 724.412 773.362 790.388 4 1 1 4 4 2 21 1 2 1 1 2 1 2 2 21 18 2 1 1 1 2 1 1 2 2 4 7 1 2 2 1 3 5 2 1 2 2 1 13 1 11 1 6 2 1 1 3 5 3 2 14 2 100 1 5 1 12 2 1 1 11 1 2 5 1 1 1 2 1 1 14 2 9 2 2 4 4 2 8 1 1 5 GRMZM2G027640_P01 B6SLG6 Lil3 protein seq=translation; coord=4:238744350..238745606:1; parent_transcript=GRMZM2G027640_T01; parent_gene=GRMZM2G027640 MAMATSTFSP RPASLRPLRA GGKPVGLLPF PRRLACATAS GEAPPVEQRD EAEPALAAAS NGAAVKSEAP PPPPAPAPVP AFRDARWVNG TWDLAKFDKG SGVDWDAVID AEARRRRWLE DYPEATNTDE AVVFATSIIP WWAWMKRFHL PEAEKLNGRA AMVGFFMAYF VDSLTGAGLV DQMGNFFCKT LLFAAVAGVL LVRKNEDVES LKKLVDETTF YDRQWQATWQ DDSAGGPNN 6.60308 -0.33862 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 6145 6145 6145 5825 5715 5311 4868 3846 3082 1871 1044 599 347 133 43 18 6 3 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6137 6137 6137 5817 5682 5259 4761 3705 2564 1296 356 98 38 1 0 0 1 2 3 4 5 2813 2803 500 29 1 0 0 1 2 3 4 5 6 7 1205 3622 996 250 70 2 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3027 (charge 2) 1241.61 2 152.057 155.082 157.097 157.109 158.092 159.077 161.092 166.061 167.081 169.097 169.134 171.076 171.112 173.092 173.129 175.119 183.076 185.093 185.128 185.164 186.087 186.123 187.071 187.108 189.087 190.053 194.129 195.113 197.129 198.086 198.126 199.071 199.108 201.087 213.087 214.118 217.082 223.107 226.154 229.117 231.097 240.134 242.113 244.166 256.093 258.109 260.125 266.15 272.171 274.104 276.168 294.182 299.135 303.177 311.17 314.674 327.13 337.15 345.141 363.202 404.253 423.217 429.182 458.214 467.169 499.21 505.24 516.522 543.609 561.28 569.302 591.816 611.309 619.637 628.344 645.309 651.805 665.354 700.333 708.369 715.376 725.394 727.398 729.374 769.375 773.364 786.406 796.432 799.422 828.911 857.451 870.421 915.416 919.433 926.486 982.494 985.487 1028.49 1069.52 17 13 10 5 5 29 17 4 3 32 4 10 19 60 12 41 3 5 4 4 3 3 19 10 16 10 4 17 4 3 3 4 12 24 6 4 11 4 23 6 6 23 9 10 4 15 4 18 12 21 3 3 11 33 4 5 10 4 6 41 4 4 4 4 3 4 4 3 4 4 4 3 4 4 20 4 4 4 4 14 19 100 11 4 3 4 4 32 12 4 5 4 4 4 4 15 3 3 18 GRMZM2G033641_P01 NP_001131001 hypothetical protein LOC100192106 seq=translation; coord=6:148590842..148593721:1; parent_transcript=GRMZM2G033641_T01; parent_gene=GRMZM2G033641 GRMZM2G429695_P01 seq=translation; coord=8:101897957..101900533:1; parent_transcript=GRMZM2G429695_T01; parent_gene=GRMZM2G429695 MADETKQEVA APAVELVVTE AEKNAEDPAL VAEKKAVEAA EEKAMEAEEN ATEADSEEEK KAEEAAAGDE AAVIDGTGSF KEESNLVSEL PDPERTVLAQ LKELVATTLA NGEFNLPPPP PVKEETKKEE PAKEEAPADK EDEPKAEEAP RSLPKRSSRQ RRRRETKPAE PVLEEKTVVV ADEPAKEELK EEATMEAVVE ETKPAYPVPE EKTVVVAEEE ATKTVEAIEE TAAAASEPEA EAAPSPAAEP KEELIWGVPL VGDDERTDTV LLKFLRAREF KVKEAMAMLK SAVLWRKRLG IDELLGADLG LPDLEKMVFY RGANRKGHPV CYNVTDLKNS PPMLGKHRGV TRQALALLQD NYPEFVAKKV FINVPWWYFA ANKVMSPFLT QRTKSKIVFC SPGRYVAPEQ VPVQFGDLYK EDDTEFSASN AVIKLIVKPS SKETVEVPAT EGSTVVWELR VLGWEVSYDA EFTPDAEGGY TVIVQKTRKV PAHEEPIMKG SFKAAGPGKV VLAVDNRASK KKMLLYRFRV KSTAAEPAT GRMZM2G352319_P01 seq=translation; coord=2:161032899..161034897:-1; parent_transcript=GRMZM2G352319_T01; parent_gene=GRMZM2G352319 MDASAPRPHP PPHDIISLRD GHNDVVGEAV RVRTVRIARG SVAQRGAGVE GEAVASTSIQ CEQAREQALR SVGESDAKTS ARISSGQFKV KEAMAMLKSV VLWRKRFGID ELLGVDLGLP ELEKVVFYRG ADREGHPVCY NVTDLKNSSP MLGKHQGVTR QALALLQDNY PEFVAKKVFI NVSWWYLATN KVMSPFLTQR TKSKIVFCSP DRYVALEQVP VRFGGLYKED DTEFSASDVV TELTVKPSSK ETIELRVLGW EVSYDAEFAP DAEGGYTVIV EKMRKVPAHE EPIMKGSFKA AGPSKVVLAV DNRASKKKKL LLYRFRVKST AAEPAA GRMZM5G882189_P01 seq=translation; coord=2:164164062..164169326:-1; parent_transcript=GRMZM5G882189_T01; parent_gene=GRMZM5G882189 MDASAPRPHP PPHDIISFCD GHSAVVGEVV RARTVRTARG SVAQRGAGIE GEAVASTSIQ REQAREQALR SVGESDAKTS ARISSGSNTK DSLEFASARR VKIRTRVTVA CEDWVVDHNV DAATMADMAY LTHDYFTLPP EDKPPLGPYI DTAPSPASFI PQLVETEEED EFFHTSPSTC STMVPNRDAT TSMLAMVEAT WSDEYTLVDL QSVCYYSTSN AKPKLNSLDE VDPKLLKTFI PLTEQKHLSD VAIDAVINSA SITITHHDAL MAKGVIFCSI PKSICEYPDL VRHYLGSIVL PGDNYYAALN SAVFSDGSFC FVPKDTVCPM EIWTYFRINK KETNQFESTL IVADERCTYV LLIELCLQVD GVKVRLPPWP PPVWTFWLPY DARSPKYISL LNHLRIYLPE LFPNLNKVVF LDDDIVVQRY LSSLWAINLE GKVNEAVETC RREDHWVMCK RFRTYFNFSH PMMAQRLDPD ECDWAYGEGG HGDAQVGGAV AQALRHRRAP GRRPRPAGAG EGGVLPRRRP RGPPRLLQRV RRVPGKELYE KAFRNAGKRE RFLRWRIQLL ERNIREQLDF SPNGICSMVQ VTDLKNSPPM LGKHHGVTCQ SLALLQDNYP EFVAKKVFIN VPWWYLAANK VMSPFLTQRT KSKIVFCSPD RSAETLFRNR RGPRQRGLHG GVAVWKLRVL GWEVSYGAEF APDAEGRYTV IVEKMRKVPA HEEPIMKGSF KAAGPDKVVL AVDNRASKKK KLLLYRFRVK STATEPAA 7.56164 -0.387776 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 8084 8084 8084 8084 7911 7702 7063 6202 5300 3594 2432 1107 521 206 82 33 6 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8104 8104 8104 8104 7931 7721 7066 6086 4984 2928 1560 329 61 36 1 0 0 1 2 3 4 5 6 2462 3708 1527 311 69 27 0 0 1 2 3 4 5 6 7 1372 3590 2036 978 103 8 1 16 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3030 (charge 3) 1278.69 3 155.081 155.118 156.077 157.097 157.134 158.092 159.077 162.103 166.062 166.086 167.08 167.093 169.061 169.097 169.133 170.06 171.113 173.092 175.119 183.113 183.149 184.153 185.092 185.129 186.124 187.144 191.118 193.097 194.129 197.128 199.108 201.123 204.134 207.124 209.106 211.144 213.087 215.139 217.064 219.112 225.099 227.102 231.098 235.12 239.114 244.652 247.111 249.098 251.15 253.093 260.143 267.109 278.153 285.653 302.15 306.157 323.174 331.15 342.185 346.184 354.17 356.145 366.144 378.139 387.691 390.203 391.237 396.153 405.218 435.198 442.221 447.216 467.191 477.74 487.263 488.288 493.205 495.185 504.242 526.263 533.307 536.25 546.232 564.242 570.3 575.315 599.326 606.293 617.335 634.304 641.333 647.285 661.295 663.314 684.353 728.369 738.349 746.378 774.379 883.432 12 8 6 21 6 19 17 6 13 31 10 6 6 15 20 6 6 9 79 11 100 9 5 6 11 6 24 9 6 9 9 6 23 8 16 42 8 9 8 17 11 11 7 24 8 8 6 14 7 11 10 20 49 12 6 39 5 21 7 6 6 9 12 9 11 6 6 16 5 28 28 6 6 6 56 30 8 7 11 13 6 21 9 39 14 10 9 9 7 7 12 8 28 6 7 6 16 18 19 6 GRMZM2G415359_P02 Q08062 Malate dehydrogenase, cytoplasmic (EC 1.1.1.37) seq=translation; coord=1:231336278..231341950:-1; parent_transcript=GRMZM2G415359_T02; parent_gene=GRMZM2G415359 GRMZM2G415359_P03 Q08062 Malate dehydrogenase, cytoplasmic (EC 1.1.1.37) seq=translation; coord=1:231336334..231337977:-1; parent_transcript=GRMZM2G415359_T03; parent_gene=GRMZM2G415359 6.15766 -0.332846 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 8167 8167 8167 8167 8148 5615 4906 3463 2356 1653 829 416 186 72 27 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8170 8170 8170 8170 8151 5618 4893 3406 1973 1227 517 157 28 8 1 0 0 1 2 3 4 5 6064 1928 159 20 1 0 0 1 2 3 4 5 6 7 1110 6047 919 89 3 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3035 (charge 2) 1637.81 2 155.082 163.06 171.077 175.119 189.107 197.129 204.087 231.098 240.134 246.603 251.098 258.146 270.107 276.155 287.976 292.755 325.113 327.171 369.179 387.187 405.195 437.204 506.246 510.244 619.332 659.299 748.373 755.361 787.91 947.469 1048.52 1068.56 1119.55 1234.58 1299.64 1317.61 1381.62 7 10 9 10 7 11 14 19 23 8 10 78 14 64 10 10 21 11 12 62 15 14 100 22 45 12 41 21 65 20 43 14 36 49 22 55 14 GRMZM2G046804_P01 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36880092..36884475:-1; parent_transcript=GRMZM2G046804_T01; parent_gene=GRMZM2G046804 MGKIKIGING FGRIGRLVAR VALQSEDVEL VAVNDPFITT DYMTYMFKYD TVHGHWKHSD ITLKDSKTLL FGDKPVTVFG IRNPEEIPWG EAGAEYVVES TGVFTDKDKA AAHLKGGAKK VVISAPSKDA PMFVVGVNED KYTSDVNIVS NASCTTNCLA PLAKVIHDNF GIVEGLMTTV HAITATQKTV DGPSAKDWRG GRAASFNIIP SSTGAAKAVG KVLPDLNGKL TGMSFRVPTV DVSVVDLTVR IEKGASYEDI KKAIKAASEG PLKGIMGYAE EDLVSTDFLG DSRSSIFDAK AGIALNDHFV KLVSWYDNEW GYSNRVVDLI RHMFKTQ GRMZM2G046804_P02 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881035..36884475:-1; parent_transcript=GRMZM2G046804_T02; parent_gene=GRMZM2G046804 MGNSSLPDSA SGKIKIGING FGRIGRLVAR VALQSEDVEL VAVNDPFITT DYMTYMFKYD TVHGHWKHSD ITLKDSKTLL FGDKPVTVFG IRNPEEIPWG EAGAEYVVES TGVFTDKDKA AAHLKGGAKK VVISAPSKDA PMFVVGVNED KYTSDVNIVS NASCTTNCLA PLAKVIHDNF GIVEGLMTTV HAITATQKTV DGPSAKDWRG GRAASFNIIP SSTGAAKAVG KVLPDLNGKL TGMSFRVPTV DVSVVDLTVR IEKGASYEDI KKAIKAASEG PLKGIMGYAE EDLVSTDFLG DSRSSIFDAK AGIALNDHFV KLVSWYDNEW GYSNRVVDLI RHMFKTQ GRMZM2G046804_P04 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T04; parent_gene=GRMZM2G046804 MGNSSLPDSA SGFSLSLYNY HYLLLPHAPC SNLTKVGSAD CFLCFFGVSR SSLDAGKIKI GINGFGRIGR LVARVALQSE DVELVAVNDP FITTDYMTYM FKYDTVHGHW KHSDITLKDS KTLLFGDKPV TVFGIRNPEE IPWGEAGAEY VVESTGVFTD KDKAAAHLKG GAKKVVISAP SKDAPMFVVG VNEDKYTSDV NIVSNASCTT NCLAPLAKVI HDNFGIVEGL MTTVHAITAT QKTVDGPSAK DWRGGRAASF NIIPSSTGAA KAVGKVLPDL NGKLTGMSFR VPTVDVSVVD LTVRIEKGAS YEDIKKAIKA ASEGPLKGIM GYAEEDLVST DFLGDSRSSI FDAKAGIALN DHFVKLVSWY DNEWGYSNRV VDLIRHMFKT Q GRMZM2G046804_P05 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T05; parent_gene=GRMZM2G046804 MTYMFKYDTV HGHWKHSDIT LKDSKTLLFG DKPVTVFGIR NPEEIPWGEA GAEYVVESTG VFTDKDKAAA HLKGGAKKVV ISAPSKDAPM FVVGVNEDKY TSDVNIVSNA SCTTNCLAPL AKVIHDNFGI VEGLMTTVHA ITATQKTVDG PSAKDWRGGR AASFNIIPSS TGAAKAVGKV LPDLNGKLTG MSFRVPTVDV SVVDLTVRIE KGASYEDIKK AIKAASEGPL KGIMGYAEED LVSTDFLGDS RSSIFDAKAG IALNDHFVKL VSWYDNEWGY SNRVVDLIRH MFKTQ GRMZM2G046804_P06 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T06; parent_gene=GRMZM2G046804 MTYMFKYDTV HGHWKHSDIT LKDSKTLLFG DKPVTVFGIR NPEEIPWGEA GAEYVVESTG VFTDKDKAAA HLKGGAKKVV ISAPSKDAPM FVVGVNEDKY TSDVNIVSNA SCTTNCLAPL AKVIHDNFGI VEGLMTTVHA ITATQKTVDG PSAKDWRGGR AASFNIIPSS TGAAKAVGKV LPDLNGKLTG MSFRVPTVDV SVVDLTVRIE KGASYEDIKK AIKAASEGPL KGIMGYAEED LVSTDFLGDS RSSIFDAKAG IALNDHFVKL VSWYDNEWGY SNRVVDLIRH MFKTQ GRMZM2G046804_P07 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881117..36884877:-1; parent_transcript=GRMZM2G046804_T07; parent_gene=GRMZM2G046804 MGNSSLPDSA SGFSLSLYNY HYLLLPHAPC SNLTKVGSAD CFLCFFGVSR SSLDAGKIKI GINGFGRIGR LVARVALQSE DVELVAVNDP FITTDYMTYM FKYDTVHGHW KHSDITLKDS KTLLFGDKPV TVFGIRNPEE IPWGEAGAEY VVESTGVFTD KDKAAAHLKG GAKKVVISAP SKDAPMFVVG VNEDKYTSDV NIVSNASCTT NCLAPLAKVI HDNFGIVEGL MTTVHAITAT QKTVDGPSAK DWRGGRAASF NIIPSSTGAA KAVGKVLPDL NGKLTGMSFR VPTVDVSVVD LTVRIEKGAS YEDIKKAIKA ASEGPLKGIM GYAEEDLVST DFLGDSRSSI FDAKAGIALN DHFVKLVSWY DNEWGYSNRV VDLIRHMFKT Q GRMZM2G046804_P08 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881357..36884877:-1; parent_transcript=GRMZM2G046804_T08; parent_gene=GRMZM2G046804 MTYMFKYDTV HGHWKHSDIT LKDSKTLLFG DKPVTVFGIR NPEEIPWGEA GAEYVVESTG VFTDKDKAAA HLKGGAKKVV ISAPSKDAPM FVVGVNEDKY TSDVNIVSNA SCTTNCLAPL AKVIHDNFGI VEGLMTTVHA ITATQKTVDG PSAKDWRGGR AASFNIIPSS TGAAKAVGKV LPDLNGKLTG MSFRVPTVDV SVVDLTVRIE KGASYEDIKK AIKAASEGPL KGIMGYAEED LVSTDFLGDS RSSIFDAKAG IALNDHFVKL VSWYDNEWGY SNRVVDLIRH MFKTQ GRMZM2G180625_P01 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903246:-1; parent_transcript=GRMZM2G180625_T01; parent_gene=GRMZM2G180625 GRMZM2G180625_P02 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903246:-1; parent_transcript=GRMZM2G180625_T02; parent_gene=GRMZM2G180625 GRMZM2G180625_P03 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903153:-1; parent_transcript=GRMZM2G180625_T03; parent_gene=GRMZM2G180625 GRMZM2G046804_P03 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884877:-1; parent_transcript=GRMZM2G046804_T03; parent_gene=GRMZM2G046804 MGNSSLPDSA SGFSLSLYNY HYLLLPHAPC SNLTKVGSAD CFLCFFGVSR SSLDAGKIKI GINGFGRIGR LVARVALQSE DVELVAVNDP FITTDYMTYM FKYDTVHGHW KHSDITLKDS KTLLFGDKPV TVFGIRNPEE IPWGEAGAEY VVESTGVFTD KDKAAAHLKG GAKKVVISAP SKDAPMFVVG VNEDKYTSDV NIVSNASCTT NCLAPLAKVI HDNFGIVEGL MTTVHAITAT QKTVDGPSAK DWRGGRAASF NIIPSSTGAA KAVGKVLPDL NGKLTGMSFR VPTVDVSVVD LTVRIEKGAS YEDIKKAIKA ASEGPLKGIM GYAEEDLVST DFLGDSRYGF ASII GRMZM2G176307_P01 NP_001105951 cytosolic glyceroldehyde-3-phosphate dehydrogenase GAPC4 seq=translation; coord=5:181520274..181524899:1; parent_transcript=GRMZM2G176307_T01; parent_gene=GRMZM2G176307 MAKIKIGING FGRIGRLVAR VALQSDDVEL VAVNDPFIST DYMTYMFKYD TVHGQWKHHE VKVKDSKTLL FGEKEVAVFG CRNPEEIPWG SVGAEYVVES TGVFTDQEKA AAHLKGGAKK VVISAPSKDA PMFVVGVNEK EYKSDINIVS NASCTTNCLA PLAKVINDKF GIVEGLMTTV HAITATQKTV DGPSSKDWRG GRAASFNIIP SSTGAAKAVG KVLPVLNGKL TGMSFRVPTV DVSVVDLTVR LEKSATYDEI KAAVKAEAEG SLKGILGYVE EDLVSTDFQG DSRSSIFDAK AGIALNGNFV KLVSWYDNEW GYSTRVVDLI RHMNSTN GRMZM2G176307_P02 NP_001105951 cytosolic glyceroldehyde-3-phosphate dehydrogenase GAPC4 seq=translation; coord=5:181520571..181525066:1; parent_transcript=GRMZM2G176307_T02; parent_gene=GRMZM2G176307 MAKIKIGING FGRIGRLVAR VALQSDDVEL VAVNDPFIST DYMTYMFKYD TVHGQWKHHE VKVKDSKTLL FGEKEVAVFG CRNPEEIPWG SVGAEYVVES TGVFTDQEKA AAHLKGGAKK VVISAPSKDA PMFVVGVNEK EYKSDINIVS NASCTTNCLA PLAKVINDKF GIVEGLMTTV HAITATQKTV DGPSSKDWRG GRAASFNIIP SSTGAAKAVG KVLPVLNGKL TGMSFRVPTV DVSVVDLTVR LEKSATYDEI KAAVKAEAEG SLKGILGYVE EDLVSTDFQG DSRSSIFDAK AGIALNGNFV KLVSWYDNEW GYSTRVVDLI RHMNSTN GRMZM2G071630_P01 Q43247 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 3 (EC 1.2.1.12) seq=translation; coord=4:133103720..133107109:1; parent_transcript=GRMZM2G071630_T01; parent_gene=GRMZM2G071630 MAKIKIGING FGRIGRLVAR VALQSDDVEL VAVNDPFIST DYMTYMFKYD TVHGQWKHHE VKVKDSKTLL FGEKEVAVFG CRNPEEIPWG SVGAEYVVES TGVFTDQEKA AAHLKGGAKK VVISAPSKDA PMFVVGVNEK EYKSDINIVS NASCTTNCLA PLAKVINDKF GIVEGLMTTV HAITATQKTV DGPSSKDWRG GRAASFNIIP SSTGAAKAVG KVLPVLNGKL TGMSFRVPTV DVSVVDLTVR LEKSATYDEI KAAVKAEAEG SLKGILGYVE EDLVSTDFQG DSRSSIFDAK AGIALNGNFV KLVSWYDNEW GYSTRVVDLI RHMNSTK GRMZM2G071630_P02 Q43247 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 3 (EC 1.2.1.12) seq=translation; coord=4:133104109..133107067:1; parent_transcript=GRMZM2G071630_T02; parent_gene=GRMZM2G071630 MTYMFKYDTV HGQWKHHEVK VKDSKTLLFG EKEVAVFGCR NPEEIPWGSV GAEYVVESTG VFTDQEKAAA HLKGGAKKVV ISAPSKDAPM FVVGVNEKEY KSDINIVSNA SCTTNCLAPL AKVINDKFGI VEGLMTTVHA ITATQKTVDG PSSKDWRGGR AASFNIIPSS TGAAKAVGKV LPVLNGKLTG MSFRVPTVDV SVVDLTVRLE KSATYDEIKA AVKAEAEGSL KGILGYVEED LVSTDFQGDS RSSIFDAKAG IALNGNFVKL VSWYDNEWGY STRVVDLIRH MNSTK GRMZM2G104632_P01 NP_001149357 LOC100282981 seq=translation; coord=5:85252669..85257667:1; parent_transcript=GRMZM2G104632_T01; parent_gene=GRMZM2G104632 MAALSAPLRA VAAGSRVAAS DPVKVSCVRS TGSAHFGCAF PYIRASSSAA RNLEPLRAIA TQAPPAMPQY SSGEKTKIGI NGFGRIGRLV LRIATSRDDI EVVAVNDPFI DAKYMAYMFK YDSTHGPFKG SIRVVDDSTL EINGKKVTIT SKRDPAEIPW GNFGAEYVVE SSGVFTTTDK ASAHLKGGAK KVVISAPSAD APMFVVGVNE NSYDPKMNVV SNASCTTNCL APLAKVVHEE FGIVEGLMTT VHATTATQKT VDGPSMKDWR GGRGAAQNII PSSTGAAKAV GKVLPELNGK LTGMAFRVPT PNVSVVDLTC RIEKSASYDD VKAAIKTASE GALKGILGYT DEDVVSNDFV GDSRSSIFDA KAGIGLSSSF MKLVSWYDNE WGYSNRVLDL IAHMALVSAK H GRMZM2G051004_P01 NP_001130796 hypothetical protein LOC100191900 seq=translation; coord=4:236083133..236088143:-1; parent_transcript=GRMZM2G051004_T01; parent_gene=GRMZM2G051004 MAALSVPLHA AAGSRAAAAD PVKVPCVRST GSAHFGRAFP SVAVSSLAAR HIEPMRAIAT QAPPAVPQYL SGEKTKIGIN GFGRIGRLVL RIATSRDDIE VVAVNDPFVD AKYMAYMFKY DSTHGPFKGS ICVVDDSTLE INGKKVTITS KRDPAEIPWG NFGAEYVVES SGVFTTTDKA SAHLKGGAKK VVISAPSADA PMFVVGVNEN SYDSKMNVVS NASCTTNCLA PLAKVVHEEF GIVEGLMTTV HATTATQKTV DGPSMKDWRG GRGAGQNIIP SSTGAAKAVG KVLPELNGKL TGMAFRVPTP NVSVVDLTCR IEKNASYDDV KAAIKAASEG ALKGILGYTD EDVVSNDFVG DSRSSIFDAK AGIGLSSSFM KLVSWYDNEW GYSNRVLDLI AHMALVSAAA KL 4.88378 -0.25045 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3841 3841 3818 3732 3572 3283 2826 2296 1451 957 471 301 200 119 86 15 13 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3870 3870 3847 3761 3595 3288 2783 2043 1066 440 186 161 2 1 1 0 0 1 2 3 4 5 1437 1958 402 87 12 0 0 1 2 3 4 5 6 7 853 2133 676 133 82 6 0 13 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3037 (charge 2) 944.541 2 155.081 157.097 158.091 159.077 167.081 169.097 171.076 171.113 171.149 173.092 175.119 181.061 183.113 185.092 185.114 185.165 186.097 186.12 187.072 189.087 193.097 194.129 199.071 199.108 199.181 201.087 212.103 216.097 218.15 219.153 221.103 224.103 227.176 228.133 230.114 237.124 240.135 244.166 246.107 249.099 254.113 256.129 258.108 262.152 270.108 272.124 288.12 289.187 299.134 301.151 315.131 317.146 327.129 329.183 341.145 346.208 347.21 355.162 359.69 368.156 370.173 386.164 388.181 394.172 398.167 404.217 412.184 414.245 416.177 430.193 442.762 447.257 456.26 465.208 475.254 478.227 483.222 490.256 501.23 516.28 534.289 536.249 544.275 549.261 554.258 562.283 572.266 603.308 621.32 623.326 631.305 648.33 673.315 691.325 700.359 718.373 720.373 748.346 762.358 833.4 4 25 4 11 7 4 3 4 7 11 21 2 2 87 9 5 3 3 14 3 6 3 3 5 100 13 3 3 45 2 3 3 14 8 6 3 2 4 3 3 7 14 12 4 6 8 2 6 4 3 2 6 4 5 3 13 2 4 31 3 3 3 3 2 3 10 3 2 2 2 3 9 4 4 7 2 5 3 5 3 21 3 6 7 2 21 4 4 42 2 3 5 6 12 3 35 4 3 6 2 GRMZM5G863596_P01 seq=translation; coord=3:202942770..202965565:-1; parent_transcript=GRMZM5G863596_T01; parent_gene=GRMZM5G863596 MRPPGSVAIK DYAIETPLEI LPNSEGQPLY EMQIKFDKDI PIAAVNFVLK EEETGAWFQH KGRDFRIPLN GSFNDGGKQD IDIWPGDLGH VLKKSEGSSS QPQNTSPEDT GLSGKHISGF YEEYPILKSE YVQNLVTVTV RRDIEAHKRL VEFDTDIPGE VIIHWGVCRD NTMTWEIPPE PHPPKTKIFR HKALQTLLQQ KADGAGNSIS FSLDAEYSCL FFVLKLDEYT WLRNLENGSD FYVPLTRVGQ YGSTQDPDKA EAQKIEDKSS QADGLISDIR NLVVGLSSRR GQKAKNKVLQ EDILQEIERL AAEAYSIFRS PTIDSVDESV QLDDTLSAKP ACSGTGSGFE ILCQGFNWES HKSGKWYVEL GTKAKELSSL GFTIVWSPPP TDSVSPEGYM PRDLYNLNSR YGSMDELKEL VKIFHEAGIK VLGDAVLNHR CAQFQNNNGV WNIFGGRMNW DDRAVVADDP HFQGRGNKSS GDNFHAAPNI DHSQEFVRND LKEWLCWMRK EVGYDGWRLD FVRGFWGGYV KDYLEASEPY FAVGEYWDSL SYTYGEMDYN QDAHRQRIVD WINATNGTAG AFDVTTKGIL HAALERSEYW RLSDEKGKPP GVLGWWPSRA VTFIENHDTG STQGHWRFPY GMELQGYAYI LTHPGTPAVF YDHIFSHLQP EIAKFISIRH RQKIHCRSKI KILKAERSLY AAEIDEKVTM KIGSEHFEPS GPQNWIVAAE GQDYKIWEAS S GRMZM5G863596_P02 seq=translation; coord=3:202942770..202965565:-1; parent_transcript=GRMZM5G863596_T02; parent_gene=GRMZM5G863596 MRPPGSVAIK DYAIETPLEI LPNSEGQPLY EMQIKFDKDI PIAAVNFVLK EEETGAWFQH KGRDFRIPLN GSFNDGGKQD IDIWPGDLGH VLKKSEGSSS QPQNTSPEDT GLSGKHISGF YEEYPILKSE YVQNLVTVTV RRDIEAHKRL VEFDTDIPGE VIIHWGVCRD NTMTWEIPPE PHPPKTKIFR HKALQTLLQQ KADGAGNSIS FSLDAEYSCL FFVLKLDEYT WLRNLENGSD FYVPLTRVGQ YGSTQDPDKA EAQKIEDKSS QADGLISDIR NLVVGLSSRR GQKAKNKVLQ EDILQEIERL AAEAYSIFRS PTIDSVDESV QLDDTLSAKP ACSGTGSGFE ILCQGFNWES HKSGKWYVEL GTKAKELSSL GFTIVWSPPP TDSVSPEGYM PRDLYNLNSR YGSMDELKEL VKIFHEAGIK VLGDAVLNHR CAQFQNNNGV WNIFGGRMNW DDRAVVADDP HFQGRGNKSS GDNFHAAPNI DHSQEFVRND LKEWLCWMRK EVGYDGWRLD FVRGFWGGYV KDYLEASEPY FAVGEYWDSL SYTYGEMDYN QDAHRQRIVD WINATNGTAG AFDVTTKGIL HAALERSEYW RLSDEKGKPP GVLGWWPSRA VTFIENHDTG STQGHWRFPY GMELQGYAYI LTHPGTPAVF YDHIFSHLQP EIAKFISIRH RQKIHCRSKI KILKAERSLY AAEIDEKVTM KIGSEHFEPS GPQNWIVAAE GQDYKIWEAS S 6.57771 -0.30594 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 10336 10336 10336 10336 10075 9754 8704 7459 5806 4106 2511 1338 766 451 185 83 43 13 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 10324 10324 10324 10324 10063 9724 8609 7176 5055 2949 1226 329 150 87 9 4 1 0 0 1 2 3 4 5 6 7 3331 4185 2021 582 202 17 2 0 0 1 2 3 4 5 6 7 1740 4741 2799 859 170 26 1 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3040 (charge 3) 1821.87 3 153.066 155.082 157.097 157.134 158.092 159.077 167.055 167.082 169.061 171.077 173.092 173.128 174.124 175.119 185.092 186.087 187.072 189.087 195.075 195.113 199.071 200.14 201.087 204.134 213.087 221.091 223.108 226.155 227.102 230.081 239.095 244.093 247.108 258.108 261.156 272.172 275.102 285.155 299.059 311.171 323.172 327.129 341.18 346.208 349.151 355.069 359.194 401.669 412.219 426.249 432.172 443.737 475.25 478.714 495.252 504.254 521.207 541.263 546.291 549.927 556.77 572.305 584.304 607.254 608.827 612.297 620.325 642.288 652.262 655.34 670.326 674.385 679.343 687.827 717.376 723.339 729.337 740.354 743.344 748.408 760.403 766.373 769.369 789.398 794.353 817.382 830.372 842.409 869.433 886.463 888.463 895.421 927.489 956.402 959.419 966.453 984.472 1001.49 1069.54 1112.52 5 13 35 13 6 75 6 6 15 14 25 7 15 22 11 45 100 6 6 12 6 14 30 6 23 13 12 38 7 16 26 17 34 27 11 6 11 35 11 11 13 5 24 29 6 21 5 17 12 40 6 27 14 6 13 6 6 15 23 5 5 12 6 11 6 24 17 5 6 5 13 22 7 25 11 5 6 27 12 5 5 31 5 14 5 13 30 21 13 94 11 16 16 9 13 11 5 18 11 6 GRMZM2G044132_P01 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53846005:1; parent_transcript=GRMZM2G044132_T01; parent_gene=GRMZM2G044132 4.19204 -0.239545 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1641 1641 1627 1568 1520 1363 1243 722 576 341 219 108 57 38 16 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1651 1651 1637 1578 1526 1354 1222 671 491 238 133 46 12 3 1 0 0 1 2 3 4 5 1005 527 98 17 5 0 0 1 2 3 4 5 6 348 1035 200 63 0 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3042 (charge 2) 1620.67 2 153.388 155.082 158.093 159.076 160.078 163.06 173.092 175.119 176.124 185.092 187.071 188.075 199.071 201.087 213.087 226.119 258.108 274.238 280.131 286.151 293.106 298.103 303.178 316.113 325.113 341.144 367.179 387.152 431.706 444.174 458.246 461.177 475.273 502.179 508.251 524.737 536.249 551.25 560.255 577.269 587.291 600.244 604.311 618.266 665.291 706.28 716.333 718.322 733.367 747.38 753.327 779.848 794.317 802.339 811.842 845.375 874.345 881.393 945.384 976.37 988.43 1031.44 1078.41 1094.45 1102.48 1217.51 1465.59 1 3 2 18 2 35 4 35 2 3 46 2 3 10 8 2 29 2 2 3 2 3 20 17 22 2 3 10 10 3 9 2 10 5 3 12 4 5 100 5 4 2 7 16 3 22 10 11 3 13 53 3 3 11 25 9 5 3 3 4 4 16 3 3 4 8 3 GRMZM2G083841_P01 P04711 Phosphoenolpyruvate carboxylase 1 (PEPCase 1)(PEPC 1)(EC 4.1.1.31) seq=translation; coord=9:61296279..61301686:1; parent_transcript=GRMZM2G083841_T01; parent_gene=GRMZM2G083841 6.31391 -0.360795 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 6059 6059 5952 5685 5338 4903 4472 3172 2529 1333 649 280 96 35 11 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6073 6073 5966 5698 5327 4808 4299 2853 1893 575 175 19 6 1 0 0 1 2 3 4 5 6 7 2215 2441 1099 251 60 5 5 0 0 1 2 3 4 5 6 7 1191 2649 1582 522 104 16 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3043 (charge 3) 1328.64 3 153.102 155.081 157.108 158.092 159.076 164.609 167.055 167.081 168.113 169.097 170.092 171.077 171.113 172.118 173.129 174.07 175.119 176.123 178.606 179.107 181.097 183.125 183.148 185.092 185.165 186.123 198.124 199.072 199.108 201.123 204.621 209.091 211.119 217.081 223.063 226.118 228.145 229.149 237.626 245.172 246.14 254.653 255.653 264.134 269.141 272.171 277.656 289.133 294.664 297.156 299.062 303.178 306.159 311.183 321.168 324.988 328.209 339.177 341.146 342.997 356.204 359.028 373.136 379.66 388.173 400.165 417.191 429.09 435.202 437.204 442.192 444.242 453.163 470.188 482.282 493.254 510.275 511.275 526.309 527.313 533.202 536.295 545.267 550.229 552.23 554.305 601.228 646.299 658.351 661.261 662.265 678.287 680.282 715.325 740.302 758.312 775.34 777.343 10 2 4 8 1 2 21 1 1 3 2 1 27 2 2 2 27 3 7 2 6 5 2 2 3 1 5 1 5 2 8 3 6 1 2 10 25 2 2 10 19 42 2 3 4 2 11 5 3 1 1 10 27 3 1 2 26 13 6 5 100 77 2 3 6 2 3 1 18 1 1 1 1 5 3 1 9 2 11 3 2 5 1 13 2 10 1 1 2 10 3 13 3 2 3 3 45 6 GRMZM2G113250_P01 seq=translation; coord=1:296260884..296265865:-1; parent_transcript=GRMZM2G113250_T01; parent_gene=GRMZM2G113250 MVKFTAEELR AIMDKKNNIR NMSVIAHVDH GKSTLTDSLV AAAGIIAQEV AGDVRMTDTR ADEAERGITI KSTGISLYYE MTDESLKNYK GERDGNQYLI NLIDSPGHVD FSSEVTAALR ITDGALVVVD CIEGVCVQTE TVLRQALGER IRPVLTVNKM DRCFLELQVE GEEAYQTFSR VIENANVIMA TYEDKLLGDV QVYPEKGTVA FSAGLHGWAF TLTNFAKMYA SKFGVDESKM MERLWGENFF DPATKKWTTK NTGSPTCKRG FVQFCYEPIK QIIKTCMNDQ KEKLWPMLQK LNVTMKADEK ELIGKALMKR VMQTWLPAST ALLEMMIFHL PSPAKAQKYR VENLYEGPLD DVYATAIRNC DPEGPLMLYV SKMIPASDKG RFFAFGRVFS GKVATGMKVR IMGPNYVPGQ KKDLYVKSVQ RTVIWMGKKQ ESVEDVPCGN TVAMVGLDQF ITKNATLTNE KETDACPIRA MKFSVSPVVR VAVQCKVASD LPKLVEGLKR LAKSDPMVLC TMEESGEHII AGAGELHLEI CLKDLQEDFM GGAEIIVSPP VVSFRETVLE KSCRTVMSKS PNKHNRLYME ARPLEEGLAE AIDDGRIGPR DDPKVRSQIL SQEFGWDKDL AKKIWCFGPE TTGPNMVVDM CKGVQYLNEI KDSVVAGFQW ASKEGALAEE NMRGICFEVC DVVLHADAIH RGGGQVIPTA RRVIYASQLT AKPRLLEPVY LVEIQAPENA LGGIYGVLNQ KRGHVFEEMQ RPGTPLYNIK AYLPVIESFG FSSQLRAATS GQAFPQAVFD HWDMMGSDPL EAGSQAAQLV LDIRKRKGLK EQMIPLSEFE DKL GRMZM2G040369_P01 NP_001151465 LOC100285098 seq=translation; coord=1:296477860..296482170:1; parent_transcript=GRMZM2G040369_T01; parent_gene=GRMZM2G040369 MVKFTAEELR AIMDKKNNIR NMSVIAHVDH GKSTLTDSLV AAAGIIAQEV AGDVRMTDTR ADEAERGITI KSTGISLYYE MTDESLKNYK GERDGNQYLI NLIDSPGHVD FSSEVTAALR ITDGALVVVD CIEGVCVQTE TVLRQALGER IRPVLTVNKM DRCFLELQVE GEEAYQTFSR VIENANVIMA TYEDKLLGDV QVYPEKGTVA FSAGLHGWAF TLTNFAKMYA SKFGVDETKM MERLWGENFF DPATKKWTTK NTGSPTCKRG FVQFCYEPIK QIIKTCMNDQ KEKLWPMLQK LNVTMKADEK ELIGKALMKR VMQTWLPAST ALLEMMIFHL PSPAKAQKYR VENLYEGPLD DVYATAIRNC DPEGPLMLYV SKMIPASDKG RFFAFGRVFS GKVATGMKVR IMGPNYVPGQ KKDLYVKSVQ RTVIWMGKKQ ESVEDVPCGN TVAMVGLDQF ITKNATLTNE KETDACPIRA MKFSVSPVVR VAVQCKVASD LPKLVEGLKR LAKSDPMVLC TMEESGEHII AGAGELHLEI CLKDLQEDFM GGAEIIVSPP VVSFRETVLE KSCRTVMSKS PNKHNRLYME ARPLEEGLAE AIDDGRIGPR DDPKVRSQIL SQEFGWDKDL AKKIWCFGPE TTGPNMVVDM CKGVQYLNEI KDSVVAGFQW ASKEGALAEE NMRGICFEVC DVVLHADAIH RGGGQVIPTA RRVIYASQLT AKPRLLEPVY LVEIQAPENA LGGIYGVLNQ KRGHVFEEMQ RPGTPLYNIK AFLPVIESFG FSSQLRAATS GQAFPQCVFD HWDMMGSDPL EAGSQAAQLV LDIRKRKGLK EQMTPLSEFE DKL GRMZM2G040369_P02 NP_001151465 LOC100285098 seq=translation; coord=1:296477860..296482080:1; parent_transcript=GRMZM2G040369_T02; parent_gene=GRMZM2G040369 MVKFTAEELR AIMDKKNNIR NMSVIAHVDH GKSTLTDSLV AAAGIIAQEV AGDVRMTDTR ADEAERGITI KSTGISLYYE MTDESLKNYK GERDGNQYLI NLIDSPGHVD FSSEVTAALR ITDGALVVVD CIEGVCVQTE TVLRQALGER IRPVLTVNKM DRCFLELQVE GEEAYQTFSR VIENANVIMA TYEDKLLGDV QVYPEKGTVA FSAGLHGWAF TLTNFAKMYA SKFGVDETKM MERLWGENFF DPATKKWTTK NTGSPTCKRG FVQFCYEPIK QIIKTCMNDQ KEKLWPMLQK LNVTMKADEK ELIGKALMKR VMQTWLPAST ALLEMMIFHL PSPAKAQKYR VENLYEGPLD DVYATAIRNC DPEGPLMLYV SKMIPASDKG RFFAFGRVFS GKVATGMKVR IMGPNYVPGQ KKDLYVKSVQ RTVIWMGKKQ ESVEDVPCGN TVAMVGLDQF ITKNATLTNE KETDACPIRA MKFSVSPVVR VAVQCKVASD LPKLVEGLKR LAKSDPMVLC TMEESGEHII AGAGELHLEI CLKDLQEDFM GGAEIIVSPP VVSFRETVLE KSCRTVMSKS PNKHNRLYME ARPLEEGLAE AIDDGRIGPR DDPKVRSQIL SQEFGWDKDL AKKIWCFGPE TTGPNMVVDM CKGVQYLNEI KDSVVAGFQW ASKEGALAEE NMRGICFEVC DVVLHADAIH RGGGQVIPTA RRVIYASQLT AKPRLLEPVY LVEIQAPENA LGGIYGVLNQ KRGHVFEEMQ RPGTPLYNIK AFLPVIESFG FSSQLRAATS GQAFPQCVFD HWDMMGSDPL EAGSQAAQLV LDIRKRKGLK EQMTPLSEFE DKL GRMZM2G095851_P01 NP_001151465 LOC100285098 seq=translation; coord=1:296344357..296348667:1; parent_transcript=GRMZM2G095851_T01; parent_gene=GRMZM2G095851 MVKFTAEELR AIMDKKNNIR NMSVIAHVDH GKSTLTDSLV AAAGIIAQEV AGDVRMTDTR ADEAERGITI KSTGISLYYE MTDESLKNYK GERDGNQYLI NLIDSPGHVD FSSEVTAALR ITDGALVVVD CIEGVCVQTE TVLRQALGER IRPVLTVNKM DRCFLELQVE GEEAYQTFSR VIENANVIMA TYEDKLLGDV QVYPEKGTVA FSAGLHGWAF TLTNFAKMYA SKFGVDETKM MERLWGENFF DPATKKWTTK NTGSPTCKRG FVQFCYEPIK QIIKTCMNDQ KEKLWPMLQK LNVTMKADEK ELIGKALMKR VMQTWLPAST ALLEMMIFHL PSPAKAQKYR VENLYEGPLD DVYATAIRNC DPEGPLMLYV SKMIPASDKG RFFAFGRVFS GKVATGMKVR IMGPNYVPGQ KKDLYVKSVQ RTVIWMGKKQ ESVEDVPCGN TVAMVGLDQF ITKNATLTNE KETDACPIRA MKFSVSPVVR VAVQCKVASD LPKLVEGLKR LAKSDPMVLC TMEESGEHII AGAGELHLEI CLKDLQEDFM GGAEIIVSPP VVSFRETVLE KSCRTVMSKS PNKHNRLYME ARPLEEGLAE AIDDGRIGPR DDPKVRSQIL SQEFGWDKDL AKKIWCFGPE TTGPNMVVDM CKGVQYLNEI KDSVVAGFQW ASKEGALAEE NMRGICFEVC DVVLHADAIH RGGGQVIPTA RRVIYASQLT AKPRLLEPVY LVEIQAPENA LGGIYGVLNQ KRGHVFEEMQ RPGTPLYNIK AFLPVIESFG FSSQLRAATS GQAFPQCVFD HWDMMGSDPL EAGSQAAQLV LDIRKRKGLK EQMTPLSEFE DKL GRMZM2G095851_P02 NP_001151465 LOC100285098 seq=translation; coord=1:296344357..296348577:1; parent_transcript=GRMZM2G095851_T02; parent_gene=GRMZM2G095851 MVKFTAEELR AIMDKKNNIR NMSVIAHVDH GKSTLTDSLV AAAGIIAQEV AGDVRMTDTR ADEAERGITI KSTGISLYYE MTDESLKNYK GERDGNQYLI NLIDSPGHVD FSSEVTAALR ITDGALVVVD CIEGVCVQTE TVLRQALGER IRPVLTVNKM DRCFLELQVE GEEAYQTFSR VIENANVIMA TYEDKLLGDV QVYPEKGTVA FSAGLHGWAF TLTNFAKMYA SKFGVDETKM MERLWGENFF DPATKKWTTK NTGSPTCKRG FVQFCYEPIK QIIKTCMNDQ KEKLWPMLQK LNVTMKADEK ELIGKALMKR VMQTWLPAST ALLEMMIFHL PSPAKAQKYR VENLYEGPLD DVYATAIRNC DPEGPLMLYV SKMIPASDKG RFFAFGRVFS GKVATGMKVR IMGPNYVPGQ KKDLYVKSVQ RTVIWMGKKQ ESVEDVPCGN TVAMVGLDQF ITKNATLTNE KETDACPIRA MKFSVSPVVR VAVQCKVASD LPKLVEGLKR LAKSDPMVLC TMEESGEHII AGAGELHLEI CLKDLQEDFM GGAEIIVSPP VVSFRETVLE KSCRTVMSKS PNKHNRLYME ARPLEEGLAE AIDDGRIGPR DDPKVRSQIL SQEFGWDKDL AKKIWCFGPE TTGPNMVVDM CKGVQYLNEI KDSVVAGFQW ASKEGALAEE NMRGICFEVC DVVLHADAIH RGGGQVIPTA RRVIYASQLT AKPRLLEPVY LVEIQAPENA LGGIYGVLNQ KRGHVFEEMQ RPGTPLYNIK AFLPVIESFG FSSQLRAATS GQAFPQCVFD HWDMMGSDPL EAGSQAAQLV LDIRKRKGLK EQMTPLSEFE DKL AC203173.3_FGP004 seq=translation; coord=8:175215853..175219214:-1; parent_transcript=AC203173.3_FGT004; parent_gene=AC203173.3_FG004 MVKFTAEELR AIMDKKNNIR NMSVIAHVDH GKSTLTDSLV AAAGIIAQEV AGDVRMTDTR ADEAERGITI KSTGISLYYE MTDESLKNYK GERDGNQYLI NLIDSPGHVD FSSEVTAALR ITDGALVVVD CIEGVCVQTE TVLRQALGER IRPVLTVNKM DRCFLELQVE GEEAYQTFSR VIENANVIMA TYEDKLLGDV QVYPEKGTVA FSAGLHGWAF TLTNFAKMYA SKFGVDESKM MERLWGENFF DPATKKWTTK NTGSPTCKRG FVQFCYEPIK QIIKTCMNDQ KEKLWPMLQK LNVTMKADEK ELIGKALMKR VMQTWLPAST ALLEMMIFHL PSPAKAQKYR VENLYEGPLD DVYATAIRNC DPEGPLMLYV SKMIPASDKG RFFAFGRVFS GKVATGMKVR IMGPNYVPGQ KKDLYVKSVQ RTVIWMGKKQ ESVEDVPCGN TVAMVGLDQF ITKNATLTNE KEVDACPIRA MKFSVSPVVR VAVQCKVASD LPKLVEGLKR LAKSDPMVLC TMEESGEHII AGAGELHLEI CLKDLQEDFM GGAEIIVSPP VVSFRETVLE KSCRTVMSKS PNKHNRLYME ARPLEEGLAE AIDDGRIGPR DDPKVRSQIL SQEFGWDKDL AKKIWCFGPE TTGPNMVVDM CKGVQYLNEI KDSVVAGFQW ASKEGALAEE NMRGICFEVC DVVLHADAIH RGGGQVIPTA RRVIYASQLT AKPRLLEPVY LVEIQAPENA LGGIYGVLNQ KRGHVFEEMQ RPGTPLYNIK AFLPVIESFG FSSQLRAATS GQAFPQCVFD HWDMMGSDPL EAGSQAAQLV LDIRKRKGLK EQMTPLSEFE DKL 5.42335 -0.293154 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3286 3286 3281 3155 2992 2800 2606 1743 1389 867 482 262 156 43 20 10 6 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3296 3296 3291 3161 2994 2778 2547 1609 1140 542 218 127 64 4 1 0 0 1 2 3 4 5 1463 1282 492 58 1 0 0 1 2 3 4 5 6 7 766 2033 420 61 7 0 0 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3044 (charge 2) 1135.5 2 155.081 157.061 157.098 157.134 158.092 159.077 166.086 169.061 169.097 169.134 171.077 171.113 172.072 173.092 173.128 175.119 176.122 178.086 181.098 183.113 185.092 185.129 187.071 187.107 188.074 189.087 194.129 195.076 197.129 198.088 199.108 201.087 203.103 205.098 212.103 213.087 216.098 223.107 226.155 230.113 233.092 240.098 242.15 244.092 248.112 251.102 256.166 258.109 266.114 282.109 284.124 295.141 300.12 309.119 313.152 316.13 322.156 325.187 327.202 329.184 334.138 343.197 345.213 353.181 355.172 372.198 373.2 397.212 424.225 436.197 442.231 459.254 483.233 501.242 565.239 567.243 603.263 612.271 622.333 630.284 632.296 639.347 657.358 674.303 676.277 684.3 694.282 696.291 701.321 703.324 738.354 747.309 765.32 767.324 814.405 878.404 885.444 887.446 942.471 974.473 4 3 5 29 7 10 5 25 3 2 4 3 1 9 7 31 2 6 3 1 4 18 57 3 4 3 1 2 3 2 8 14 5 4 33 9 1 16 8 7 7 24 9 3 2 6 4 58 1 1 8 6 2 1 7 3 8 30 3 5 4 6 17 15 6 19 3 3 2 11 2 4 5 33 20 1 3 8 1 62 4 1 22 3 3 4 24 1 100 8 2 3 31 5 23 5 4 5 3 1 GRMZM2G109526_P01 NP_001141889 hypothetical protein LOC100274034 seq=translation; coord=3:168480648..168483295:1; parent_transcript=GRMZM2G109526_T01; parent_gene=GRMZM2G109526 MQQLLPGPPR PCTPSPLPKV QLISCPVDSF QHALNPKVTG QVHAHTKTCG ACKCPTHIHG LLVSAGGRRT FLPVSAVGSG QGSSVTEADR KSDLSLENVK TSVVSRDGEK INVRVQLPGK ATQKVFDEAL TFLARDAPPV PGFRKSKGGK TSNIPSSILL QMLGKSRVTK FVLQEILSIT IEEFVKKENL KVKPEIQTTQ SEGEMESAFA PGSAFGFNVV LQLETPDSDD PEEKPGSDDD LQEESGSSE GRMZM2G109526_P02 NP_001141889 hypothetical protein LOC100274034 seq=translation; coord=3:168480648..168483295:1; parent_transcript=GRMZM2G109526_T02; parent_gene=GRMZM2G109526 MASAATATLP KVQLRPRCNS YFQVTGQVHA HTKTCGACKC PTHIHGLLVS AGGRRTFLPV SAVGSGQGSS VTEADRKSDL SLENVKTSVV SRDGEKINVR VQLPGKATQK VFDEALTFLA RDAPPVPGFR KSKGGKTSNI PSSILLQMLG KSRVTKFVLQ EILSITIEEF VKKENLKVKP EIQTTQSEGE MESAFAPGSA FGFNVVLQLE TPDSDDPEEK PGSDDDLQEE SGSSE GRMZM2G109526_P03 NP_001141889 hypothetical protein LOC100274034 seq=translation; coord=3:168480648..168483088:1; parent_transcript=GRMZM2G109526_T03; parent_gene=GRMZM2G109526 MASAATATLP KVQLRPRCNS YFQVTGQVHA HTKTCGACKC PTHIHGLLVS AGGRRTFLPV SAVGSGQGSS VTEADRKSDL SLENVKTSVV SRDGEKINVR VQLPGKATQK VFDEALTFLA RDAPPVPGFR KSKGGTDHHK HTATSLSLSL SLSLSLSISY GRMZM2G109526_P04 NP_001141889 hypothetical protein LOC100274034 seq=translation; coord=3:168480648..168483088:1; parent_transcript=GRMZM2G109526_T04; parent_gene=GRMZM2G109526 MASAATATLP KVQLRPRCNS YFQVTGQVHA HTKTCGACKC PTHIHGLLVS AGGRRTFLPV SAVGSGQGSS VTEADRKSDL SLENVKTSVV SRDGEKINVR VQLPGKATQK VFDEALTFLA RDAPPVPGFR KSKGDTQQHP AADAWQEPGH QIRSSGNTEH HH GRMZM2G109526_P05 NP_001141889 hypothetical protein LOC100274034 seq=translation; coord=3:168480648..168482368:1; parent_transcript=GRMZM2G109526_T05; parent_gene=GRMZM2G109526 MQQLLPGPPR PCTPSPLPKV QLISCPVDSF QHALNPKVTG QVHAHTKTCG ACKCPTHIHG LLVSAGGRRT FLPVSAVGSG QGSSVTEADR KSDLSLENVK TSVVSRDGEK INVRVQLPGK ATQKVFDEAL TFLARDAPPV PGFRKSKGGK TSNIPSSILL QMLGKSRVTK FVLQEILSIT IEEFVKKVNA SSDNTWQKKK PVTGRYDTDL LLINQENLKV KPEIQT GRMZM2G109526_P06 NP_001141889 hypothetical protein LOC100274034 seq=translation; coord=3:168480648..168481862:1; parent_transcript=GRMZM2G109526_T06; parent_gene=GRMZM2G109526 MQQLLPGDRS SPCPHQNMRC LQVSDPYPRV NKLDAAPLSP VIFRFSVFSL HVCLHRLLVS AGGRRTFLPV SAVGSGQGSS VTEADRKSDL SLENVKTSVV SRDGEKINVS SNQLSCPDVQ IESFDLIWPC QLFLCMQVRV QLPGKATQKV FDEALTFLAR DAPPVPGFRK SKGGTDHHKH TATSLSLSLS LSLSLSISY 5.76956 -0.295875 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 4871 4871 4847 4652 4373 4080 3722 3379 2308 1792 922 614 365 171 99 28 8 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4879 4879 4855 4660 4377 4038 3674 3239 2177 1365 519 138 40 8 1 0 0 1 2 3 4 5 2318 2060 436 65 1 0 0 1 2 3 4 5 6 7 1051 2823 789 195 15 1 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3046 (charge 2) 1420.66 2 155.081 155.118 157.06 157.097 158.092 159.077 167.082 168.065 169.061 169.098 171.076 171.113 172.117 173.092 175.119 176.122 183.075 183.113 184.072 185.092 186.088 187.107 193.096 195.113 198.087 199.072 199.108 201.099 208.107 213.124 214.118 216.098 219.109 226.154 228.134 242.114 247.11 251.1 255.108 264.134 270.146 273.12 276.11 290.144 295.104 302.135 312.13 315.167 325.116 327.164 330.141 339.168 344.155 352.123 361.183 369.151 414.198 437.207 441.219 443.736 455.229 465.211 490.221 492.264 516.239 527.721 539.273 540.786 579.262 591.274 610.606 616.779 631.34 632.341 644.134 690.343 718.377 725.359 754.341 777.373 864.407 886.463 904.41 905.476 921.427 922.427 969.339 983.517 985.523 1032.45 1049.48 1071.48 1089.46 1106.51 1163.53 1193.54 1221.6 1232.54 1250.56 1386.74 5 9 5 4 10 2 36 3 10 4 4 59 4 35 75 5 2 9 12 4 27 4 3 4 2 3 5 9 2 4 4 2 19 12 20 11 3 3 10 65 14 21 2 5 4 3 9 3 2 3 5 3 5 4 29 3 4 3 3 4 4 3 17 27 5 3 5 5 3 47 4 5 12 4 4 25 4 3 3 33 31 40 12 2 100 52 3 19 3 5 11 4 3 26 3 5 5 4 26 3 GRMZM2G031501_P03 NP_001140638 hypothetical protein LOC100272713 seq=translation; coord=1:261486889..261490473:1; parent_transcript=GRMZM2G031501_T03; parent_gene=GRMZM2G031501 MPRRSSGRSA PRPAPRAASL RNPPQPARQA PPPAPVRDGG GSMFGGIGST IAQGMAFGTG SAMAHRAVDS VLGPRTIQHE TLATEAPAAA PAAPAMNADA CSFHSKAFQD CLNNYGSEIS KCQFYLDMLN ECRRGGVSV GRMZM2G031501_P05 NP_001140638 hypothetical protein LOC100272713 seq=translation; coord=1:261486945..261491063:1; parent_transcript=GRMZM2G031501_T05; parent_gene=GRMZM2G031501 MPRRSSGRSA PRPAPRAASL RNPPQPARQA PPPAPVRDGG GSMFGGIGST IAQGMAFGTG SAMAHRAVDS VLGPRTIQHE TLATEAPAAA PAAPAMNADA CSFHSKAFQD CLNNYGSEIS KCQFYLDMLN ECRRGGVSV GRMZM2G028379_P01 NP_001150231 p8MTCP1 seq=translation; coord=1:261408681..261412620:1; parent_transcript=GRMZM2G028379_T01; parent_gene=GRMZM2G028379 LREPTRQIFL CRKTGPQTGT NGSRVETSSA FSLIKPNAQG PPCSISLSVV LSLSIRSPPH PEPAVSLGFR RRRRHASPQL RSAPRPAPRA APVRNPPQPA RQAPPPAPVR DGGGSMFGGI GSTIAQGMAF GTGSAMAHRA VDAVLGPRTI QHETVASEAA AAAPAPPVMN ADACSIHSKA FQDCLNNYGS EISKCQFYLD MLNECRRGGV SA GRMZM2G028379_P02 NP_001150231 p8MTCP1 seq=translation; coord=1:261408681..261412620:1; parent_transcript=GRMZM2G028379_T02; parent_gene=GRMZM2G028379 MPRRSSGRSA PRPAPRAAPV RNPPQPARQA PPPAPVRDGG GSMFGGIGST IAQGMAFGTG SAMAHRAVDA VLGPRTIQHE TVASEAAAAA PAPPVMNADA CSIHSKAFQD CLNNYGSEIS KCQFYLDMLN ECRRGGVSA GRMZM2G028379_P04 NP_001150231 p8MTCP1 seq=translation; coord=1:261408716..261411902:1; parent_transcript=GRMZM2G028379_T04; parent_gene=GRMZM2G028379 MPRRSSGRSA PRPAPRAAPV RNPPQPARQA PPPAPVRDGG GSMFGGIGST IAQGMAFGTG SAMAHRAVDA VLGPRTIQHE TVASEAAAAA PAPPVMNADA CSIHSKAFQD VCLLATLCSL IFPQFDAVVK VV 5.99854 -0.279002 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3114 3114 3114 3114 3089 2951 2810 2511 2208 1730 1332 806 475 244 121 61 21 11 9 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3124 3124 3124 3124 3099 2961 2799 2484 2124 1336 764 150 20 4 1 0 0 1 2 3 4 5 1379 1249 437 61 7 0 0 1 2 3 4 5 6 7 525 1454 868 229 38 9 0 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3049 (charge 2) 932.532 2 152.057 154.097 155.081 155.118 157.097 157.134 158.092 159.077 163.133 164.137 166.062 167.082 167.118 169.097 169.134 171.113 172.108 173.055 173.092 173.129 175.119 181.061 182.093 183.077 183.113 185.093 185.128 187.107 187.145 189.087 193.098 194.129 195.077 195.114 197.128 198.087 200.103 201.123 204.135 209.104 212.104 215.14 217.082 218.15 223.108 226.119 227.102 230.15 232.141 235.119 240.134 242.15 244.165 246.157 249.159 252.109 253.094 258.146 262.151 266.153 270.168 272.172 276.157 280.127 287.977 290.115 294.149 297.156 303.146 304.948 306.941 316.133 318.695 322.959 324.954 354.215 361.028 363.024 367.221 368.704 371.238 377.181 390.238 398.24 410.179 417.221 442.279 462.236 514.235 517.289 539.33 545.283 627.326 630.372 636.383 658.364 703.336 733.436 759.423 787.416 10 50 50 10 11 41 20 7 84 9 10 8 11 20 14 13 38 15 10 10 88 7 42 10 10 8 14 8 8 7 9 7 8 17 17 8 16 24 10 10 10 13 12 8 8 26 14 11 18 10 16 14 16 15 18 17 9 18 41 9 30 20 7 16 8 9 10 9 29 12 13 8 100 9 13 13 12 19 28 7 14 11 7 25 7 20 7 23 14 12 87 35 9 26 53 9 8 44 8 9 GRMZM5G861390_P01 P05494 ATP synthase subunit alpha, mitochondrial seq=translation; coord=Mt:523288..525296:-1; parent_transcript=GRMZM5G861390_T01; parent_gene=GRMZM5G861390 GRMZM5G829375_P01 P05494 ATP synthase subunit alpha, mitochondrial seq=translation; coord=Mt:454351..456359:-1; parent_transcript=GRMZM5G829375_T01; parent_gene=GRMZM5G829375 GRMZM5G845063_P01 seq=translation; coord=3:74659634..74660746:1; parent_transcript=GRMZM5G845063_T01; parent_gene=GRMZM5G845063 5.97246 -0.29134 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 6741 6741 6741 6559 6387 6113 5537 4233 3423 1836 1050 599 323 175 94 40 15 8 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6747 6747 6747 6565 6393 6102 5432 3900 2562 923 358 108 33 19 1 0 0 1 2 3 4 5 6 3474 2638 553 69 9 8 0 0 1 2 3 4 5 6 7 881 3874 1650 278 52 7 0 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3050 (charge 2) 1354.72 2 152.056 153.102 155.082 155.118 157.06 157.097 158.092 159.077 161.092 164.118 166.061 171.076 171.113 173.092 175.071 175.119 176.119 183.149 185.092 186.123 187.072 187.108 189.087 198.124 199.072 199.107 201.087 204.133 209.14 213.086 215.102 216.134 221.14 226.155 230.113 237.136 239.113 244.166 249.098 254.149 260.196 262.153 267.109 270.107 279.181 284.124 287.206 306.155 315.203 317.217 324.167 352.16 357.158 366.176 397.218 402.234 407.241 414.248 416.25 418.265 424.265 434.252 440.196 452.262 458.202 460.721 472.781 514.275 520.764 529.294 546.327 551.234 553.303 563.29 577.309 581.31 600.317 628.307 630.327 634.336 638.84 713.366 737.334 740.352 757.391 765.364 774.418 776.42 784.391 824.37 885.442 893.429 894.429 903.461 982.459 989.478 1006.5 1012.4 1040.51 1095.53 12 10 20 5 4 4 4 6 23 4 11 11 5 14 6 31 5 10 4 5 7 19 25 12 6 12 4 4 4 6 5 6 11 16 6 28 17 6 16 52 11 20 50 4 5 4 4 15 6 14 16 5 23 23 4 4 5 41 4 29 12 5 5 24 4 4 6 23 26 6 4 4 5 6 6 25 11 4 19 35 11 10 6 5 14 5 100 14 4 5 19 10 5 24 4 4 6 41 20 5 GRMZM2G141277_P01 NP_001148494 stem 28 kDa glycoprotein seq=translation; coord=8:109218692..109219673:-1; parent_transcript=GRMZM2G141277_T01; parent_gene=GRMZM2G141277 MALEPLRHGL VSLLVLLLLL VHAASAARAR DLHLEMVTTS AATARAVPSC ASWRLGVETN NIRDWYSIPA ECRGYVRDYM YGDLFRQDCA VVAREAAAYA EGLELGGDGK EVWVFDVDDT TLSNLPYYAD TGFGAEPYNA TYFDEYVANA TAPPLPEVLQ LYETLLSLGI KVVFITGRHD YEKEPTIKNL RSAGYHTWDK LVLKYVNFLI FAYQVG 6.59181 -0.356314 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 7858 7858 7858 7525 7255 6650 6162 4774 3768 2112 850 434 234 108 47 8 2 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 7866 7866 7866 7533 7257 6615 5988 4414 2895 989 185 34 15 5 2 1 1 0 0 1 2 3 4 5 6 7 2849 3366 1268 308 58 16 3 0 0 1 2 3 4 5 6 7 1183 3441 2250 873 88 26 7 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3051 (charge 3) 1259.63 3 155.082 156.077 157.097 157.134 158.092 159.077 159.113 164.082 166.061 167.118 168.102 169.096 169.134 171.113 175.119 176.122 181.097 181.109 182.1 183.113 183.149 185.092 185.129 187.144 188.147 193.097 194.129 195.113 197.129 199.108 201.123 205.098 210.025 212.14 213.124 215.139 222.124 225.098 227.103 229.652 232.141 235.083 235.144 240.134 242.186 244.166 249.16 251.102 253.093 255.145 258.144 260.197 272.172 279.098 294.182 307.679 310.14 312.191 328.146 331.209 332.211 352.197 361.245 369.225 371.229 379.167 388.163 392.666 395.229 398.146 401.672 403.707 408.14 416.156 437.23 440.29 458.297 466.278 485.759 499.3 517.205 527.187 532.244 545.199 546.203 550.25 553.273 562.227 569.333 575.299 576.299 581.269 647.268 665.277 667.299 673.294 695.411 709.351 784.321 802.339 6 3 3 3 6 3 3 3 3 4 3 4 14 22 28 2 35 10 3 5 3 4 3 19 2 2 3 18 7 31 6 4 20 3 4 5 5 6 3 16 8 9 12 24 5 5 5 18 100 3 6 29 6 8 13 3 6 5 4 9 3 4 17 6 8 3 4 10 3 43 13 3 3 34 3 7 32 14 4 10 8 3 3 28 8 4 3 8 8 10 3 3 6 10 3 5 3 3 7 2 GRMZM2G076075_P02 seq=translation; coord=2:187379358..187383614:1; parent_transcript=GRMZM2G076075_T02; parent_gene=GRMZM2G076075 MASISGAAAP PSSAVCRLRL RRHLLLRPSH LRLRAPHSIA DLSRSSNSAP SPARPALGSG PENGSGGVRA VEKDPIKLWE RYVEWLYQHK ELGIFVDVSR MGFTEEFLRQ MEPRMQQAFV DMRELEKGAI ANPDEGRMVG HYWLRDPALA PNSFLRNKIE TALDRILAFS QDVVSGKILS PSGRFTSILS IGIGGSALGP QFVAEALAPD NPPLKIRFID NTDPAGIDHQ IAQLGPELAT TLVIVISKSG GTPETRNGLL EVQKAFRDAG LQFSKQGVAI TQENSLLDNT ARIEGWLARF PMFDWVGGRT SEMSAVGLLP AALQGIDIKE MLVGAALMDE ETRNTVVKAN PAALLALCWY WASEGIGKKD MVVLPYKDSL LLLSRYLQQL VMESLGKEFD LDGNRVNQGL TVYGNKGSTD QHAYIQQLRE GVQNFFVTFI EVLRDRPAGH DWELEPGVTC GDYLFGMLQG TRSALYANDR ESISVTVQEV TPRAVGALIA LYERAVGIYA SLVNINAYHQ PGVEAGKKAA GEVLALQKRV LTVLKEAMYG TSDLCSFCFS VK GRMZM2G076075_P01 seq=translation; coord=2:187379328..187383441:1; parent_transcript=GRMZM2G076075_T01; parent_gene=GRMZM2G076075 MASISGAAAP PSSAVCRLRL RRHLLLRPSH LRLRAPHSIA DLSRSSNSAP SPARPALGSG PENGSGGVRA VEKDPIKLWE RYVEWLYQHK ELGIFVDVSR MGFTEEFLRQ MEPRMQQAFV DMRELEKGAI ANPDEGRMVG HYWLRDPALA PNSFLRNKIE TALDRILAFS QDVVSGKILS PSGRFTSILS IGIGGSALGP QFVAEALAPD NPPLKIRFID NTDPAGIDHQ IAQLGPELAT TLVIVISKSG GTPETRNGLL EVQKAFRDAG LQFSKQGVAI TQENSLLDNT ARIEGWLARF PMFDWVGGRT SEMSAVGLLP AALQGIDIKE MLVGAALMDE ETRNTVVSHY 5.91683 -0.303427 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 2838 2838 2838 2769 2656 2467 2245 2060 1434 1124 627 305 162 71 38 15 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2839 2839 2839 2770 2653 2455 2208 2002 1262 785 278 60 11 1 0 0 1 2 3 4 5 1588 1026 211 19 2 0 0 1 2 3 4 5 6 7 490 1579 631 131 8 0 1 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3053 (charge 2) 999.485 2 152.057 155.081 157.097 157.108 157.134 158.092 159.077 161.092 167.082 169.061 169.097 169.133 171.077 171.113 171.149 173.093 173.129 175.119 181.061 183.113 183.149 185.055 185.092 185.129 185.165 186.087 186.124 187.108 187.144 189.087 193.097 195.076 195.113 197.129 198.088 199.072 199.108 201.124 204.135 209.14 212.103 213.087 215.139 218.15 226.155 232.14 233.145 237.135 240.135 242.15 244.166 255.145 268.166 269.124 272.172 285.192 287.136 294.146 297.12 299.171 301.188 303.203 306.156 308.171 311.173 314.142 325.224 327.13 336.167 342.129 357.7 361.183 362.187 377.231 405.224 409.25 426.246 459.186 470.226 476.209 480.276 546.305 556.241 568.288 573.262 575.271 598.321 630.282 659.372 670.279 671.28 673.363 687.304 700.874 714.393 727.362 730.419 758.343 760.352 871.422 19 13 10 5 25 22 7 20 9 9 15 12 34 15 3 6 11 62 18 9 6 3 10 22 6 20 7 8 3 28 6 6 3 23 13 3 7 7 7 19 8 21 6 6 14 47 3 17 8 73 8 9 6 18 7 3 19 3 16 7 3 5 35 3 13 8 5 10 18 12 13 89 15 11 29 3 3 6 3 10 7 12 8 3 100 3 9 5 7 12 5 16 38 3 21 13 6 60 8 3 GRMZM2G092021_P01 NP_001140569 hypothetical protein LOC100272635 seq=translation; coord=3:231116120..231118084:1; parent_transcript=GRMZM2G092021_T01; parent_gene=GRMZM2G092021 MEGEAVHMLQ SGHHQWNKGQ PTLQAFPATQ RLNSRLHQIS EETKKMAPKL VFVLPVVLLA LALQAILRPP PPKLCGSPGG PPLTSPRIKL RDGRYLAYKE DGVQRDKARY KIITVHAFDS TKDFPSPVSK ELVEGLGIYL LAYDRAGYGE SDPNPNRHVK SEALDIEELA DQLGLGHKFY VLGASMGGYS VWGCLQYIPH RLAGAALVVP IINYWWPSFP AELSKQAFNR LIVPEQRTLW IAHNIPSLLY LWMTQRWFPS SAAAMHHPEI FSKHDMEVLQ KMMAMPRTIE NKSRQQGIYE SIHRDLLVAF GTWEFDPMNV TNPFPQNEGS VHIWQGREDR LVLVELQRYI AKKLPWIKYH EVPEGGHMFV MVDGWTDRIL KALLLGEEPL DV 5.29312 -0.392083 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2525 2525 2484 2288 2166 1938 1018 656 322 97 29 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2529 2529 2488 2279 2157 1888 863 487 145 20 1 0 0 0 1 0 0 1 2 3 4 5 1560 812 153 8 15 0 0 1 2 3 4 5 6 7 480 1680 327 39 4 13 0 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3054 (charge 2) 1276.56 2 152.057 155.081 158.093 159.076 169.097 171.076 171.113 173.092 175.072 175.119 183.076 183.149 185.092 185.128 186.088 187.071 193.097 199.108 199.181 201.087 204.135 212.102 216.098 221.092 226.155 230.113 238.119 244.166 254.15 258.11 270.108 278.153 292.129 299.161 306.158 309.156 317.182 321.155 326.18 349.151 352.161 360.237 369.188 371.12 386.214 442.221 450.199 452.249 483.233 488.292 500.257 526.264 542.303 564.242 580.285 597.31 599.315 671.334 703.325 712.338 746.375 762.346 774.376 800.374 801.376 883.44 928.409 967.425 985.432 987.429 1051.52 2 3 3 5 2 1 1 1 1 16 1 3 1 1 1 11 12 4 3 3 1 7 1 11 11 1 1 2 5 1 1 4 2 3 1 1 1 1 3 1 1 1 9 1 14 7 1 1 2 3 3 5 1 4 6 100 6 1 1 3 3 8 2 8 3 1 4 1 13 2 3 GRMZM2G169160_P01 B6TBG7 Seryl-tRNA synthetase seq=translation; coord=4:5666220..5677820:-1; parent_transcript=GRMZM2G169160_T01; parent_gene=GRMZM2G169160 GRMZM2G169160_P03 B6TBG7 Seryl-tRNA synthetase seq=translation; coord=4:5666399..5677820:-1; parent_transcript=GRMZM2G169160_T03; parent_gene=GRMZM2G169160 5.69449 -0.27778 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 8451 8451 8451 8190 7496 5557 4266 2681 1742 1086 545 270 144 71 38 17 10 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8448 8448 8448 8187 7493 5510 3869 2188 1082 543 110 58 17 2 1 0 0 1 2 3 4 5 6 4386 3325 622 117 1 6 0 0 1 2 3 4 5 6 7 1450 5646 1196 152 6 1 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3056 (charge 2) 1533.75 2 152.057 157.097 157.667 167.081 171.076 175.119 185.091 193.304 199.107 204.133 212.139 214.406 217.083 226.154 230.149 244.129 248.16 264.134 282.145 303.145 320.172 335.193 365.182 383.194 400.189 426.215 436.239 442.232 448.718 457.72 470.224 504.254 506.753 516.254 563.216 589.284 620.329 651.84 667.372 688.339 699.364 717.377 720.618 727.903 740.346 748.409 758.374 768.385 789.387 817.383 819.376 914.43 956.419 1030.49 1055.49 1112.5 1181.56 1258.59 1359.64 1510.78 3 6 3 4 5 12 14 3 3 5 3 3 3 15 12 4 32 4 11 55 30 20 7 4 4 4 5 5 4 6 4 6 3 4 4 5 6 3 5 6 13 56 3 4 4 5 11 16 30 100 5 6 14 5 6 13 4 5 5 5 GRMZM2G016066_P01 NP_001149700 photosystem I reaction center subunit IV A seq=translation; coord=2:169557301..169558384:-1; parent_transcript=GRMZM2G016066_T01; parent_gene=GRMZM2G016066 MASTNMASAT SRFMLAAGVP TASSGSGRVS FASAPNRLGR RLVVRADEES PAEPAPTAEG EGAVATKPKA EKPPPIGPKR GAKVKILRRE SYWYNGIGNV VTVDQDPNTR YPVVVRFNKV NYAGVSTNNY ALDEILEVK GRMZM2G016622_P02 NP_001149459 LOC100283085 seq=translation; coord=7:38025162..38027027:1; parent_transcript=GRMZM2G016622_T02; parent_gene=GRMZM2G016622 MASTNMASAT SRFMLAAGVP TGSSGGRVNF ASAPNRLGRR LVARADNEAA AAEAAEGEGA VATKPKAEKP PPIGPKRGAK VKILRRESYW YNGIGNVVTV DQDPNTRYPV VVRFNKVNYA GVSTNNYALD EVSEVK GRMZM2G016066_P02 NP_001149700 photosystem I reaction center subunit IV A seq=translation; coord=2:169557404..169558294:-1; parent_transcript=GRMZM2G016066_T02; parent_gene=GRMZM2G016066 SLSPSAPVQP SQHPRAARSS RPWRAPTWRR PPRGSCWPRA CPPPVAAEGE GAVATKPKAE KPPPIGPKRG AKVKILRRES YWYNGIGNVV TVDQDPNTRY PVVVRFNKVN YAGVSTNNYA LDEILEVK GRMZM2G016622_P01 NP_001149459 LOC100283085 seq=translation; coord=7:38025162..38027027:1; parent_transcript=GRMZM2G016622_T01; parent_gene=GRMZM2G016622 MASTNMASAT SRFMLAAGVP TGSSGGRVNF ASAPNRLGRR LVARADNEAA AAEAAEGEGA VATKPKAEKP PPIGPKRGAK VKILRRESYW YNGIGNVVTV DQVTSSLSSS 4.8692 -0.249702 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 3397 3397 3357 2655 2239 1555 1166 753 532 382 265 124 57 30 15 6 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3390 3390 3350 2647 2202 1375 899 522 344 203 86 2 1 1 0 0 1 2 3 4 1901 1171 280 60 0 0 1 2 3 4 5 6 7 649 2123 541 79 7 1 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3060 (charge 2) 1033.6 2 155.081 157.097 159.077 165.138 167.118 173.092 174.096 175.119 181.134 183.149 195.113 198.087 201.087 208.145 211.144 216.096 218.15 222.124 226.155 240.134 244.166 254.15 258.145 262.15 268.131 280.202 283.176 286.142 294.145 299.063 301.187 304.691 308.196 311.171 329.182 353.218 365.219 377.255 383.231 405.249 408.754 414.269 417.266 424.255 426.237 434.274 448.585 462.271 480.283 493.314 503.274 511.324 514.236 577.335 590.365 608.376 610.382 627.319 632.324 687.419 705.429 707.432 731.387 833.523 16 3 2 3 5 33 3 3 3 4 14 2 11 2 2 1 5 4 7 41 11 2 3 6 3 2 3 2 2 2 26 7 6 2 3 23 7 6 2 11 2 4 4 2 3 2 3 14 9 3 11 37 3 9 11 80 5 2 4 9 100 10 5 6 GRMZM2G172932_P01 NP_001168511 hypothetical protein LOC100382290 seq=translation; coord=8:171328319..171331663:-1; parent_transcript=GRMZM2G172932_T01; parent_gene=GRMZM2G172932 MREILHIQGG QCGNQIGAKF WEVVCDEHGI DTTGRYTGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DDDEEAEYED EEEPADGM GRMZM2G172932_P02 NP_001168511 hypothetical protein LOC100382290 seq=translation; coord=8:171328319..171331663:-1; parent_transcript=GRMZM2G172932_T02; parent_gene=GRMZM2G172932 MREILHIQGG QCGNQIGAKF WEVVCDEHGI DTTGRYTGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DDDEEAEYED EEEPADGM GRMZM2G172932_P03 NP_001168511 hypothetical protein LOC100382290 seq=translation; coord=8:171328488..171331663:-1; parent_transcript=GRMZM2G172932_T03; parent_gene=GRMZM2G172932 MREILHIQGG QCGNQIGAKF WEVVCDEHGI DTTGRYTGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DDDEEAEYED EEEPADGIIP PSWPIPSIVA VDACVSLFYR TLLLVR GRMZM2G043822_P02 Q41784 Tubulin beta-7 chain (Beta-7-tubulin) seq=translation; coord=6:92813319..92815990:-1; parent_transcript=GRMZM2G043822_T02; parent_gene=GRMZM2G043822 MREILHIQGG QCGNQIGAKF WEVICDEHGI DHTGKYAGDS DLQLERINVY YNEASGGRFV PRAVLMDLEP GTMDSVRSGP FGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLSTP TFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDSKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM LNVQNKNSSY FVEWIPNNVK SSVCDIPPIG LKMSSTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVA EYQQYQDATA EDEEYEEEEE EDPAA GRMZM2G043822_P03 Q41784 Tubulin beta-7 chain (Beta-7-tubulin) seq=translation; coord=6:92813568..92815975:-1; parent_transcript=GRMZM2G043822_T03; parent_gene=GRMZM2G043822 MREILHIQGG QCGNQIGAKF WEVICDEHGI DHTGKYAGDS DLQLERINVY YNEASGGRFV PRAVLMDLEP GTMDSVRSGP FGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLSTP TFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDSKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM LNVQNKNSSY FVEWIPNNVK SSVCDIPPIG LKMSSTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVA EYQQYQDATA EDEEYEEEEE EDPAA GRMZM5G853513_P01 C0PDB9 Putative uncharacterized protein seq=translation; coord=5:5214906..5217855:-1; parent_transcript=GRMZM5G853513_T01; parent_gene=GRMZM5G853513 MREILHIQGG QCGNQIGAKF WEVICDEHGI DATGRYAGDS DLQLERVNVY YNEASGGRFV PRAVLMDLEP GTMDSVRSGP FGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLSTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM LNVQNKNSSY FVEWIPNNVK SSVCDIPPRG LKMAGTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVA EYQQYQDATA DEEYEDEEEE ENVAE AC234515.1_FGP003 seq=translation; coord=5:83557023..83560095:1; parent_transcript=AC234515.1_FGT003; parent_gene=AC234515.1_FG003 MREILHIQGG QCGNQIGAKF WEVICDEHGI DHTGKYAGDS DLQLERINVY YNEAGGGRFV PRAVLMDLEP GTMDSVRSGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLATP TFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM LNVQNKNSSY FVEWIPNNVK SSVCDIPPTG LAMASTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVA EYQQYQDATA EEEEEYKEGD EVAA GRMZM2G066191_P01 Q41782 Tubulin beta-4 chain (Beta-4-tubulin) seq=translation; coord=5:14853348..14857185:-1; parent_transcript=GRMZM2G066191_T01; parent_gene=GRMZM2G066191 MREILHIQGG QCGNQIGAKF WEVICGEHCV DSTGRYSGTS SQQLELERIN VYYNEAGGGR YVPRAVLMDL EPGTMESIRA GPFGGIFRPD NFVYGQSGAG NNWAKGHYTE GAELIDSVLD VVRKEAENCD CLQGFQVCHS LGGGTGSGMG TLLISKIREE YPDRMMLTFS VFPSPKVSDT VVEPYNATLS VHQLVENADE CMVLDNEALY DICFRTLKLT NPSFGDLNHL ISATMSGVTC CLRFPGQLNS DLRKLAVNLI PFPRLHFFMV GFAPLTSRGS QQYRALTVPE LTQQMWDAKN MMCAADPRHG RYLTASAMFR GKMSTKEVDE QMINVQNKNS SYFVEWIPNN VKSSVCDIPP VGLPMASTFV GNSTSIQEMF RRVSEQFTAM FRRKAFLHWY TSEGMDEMEF TEAESNMNDL VAEYQQYQDA TAEEYEEEEH DGEEEHA GRMZM2G066191_P03 Q41782 Tubulin beta-4 chain (Beta-4-tubulin) seq=translation; coord=5:14852959..14857053:-1; parent_transcript=GRMZM2G066191_T03; parent_gene=GRMZM2G066191 MREILHIQGG QCGNQIGAKF WEVICGEHCV DSTGRYSGTS SQQLELERIN VYYNEAGGGR YVPRAVLMDL EPGTMESIRA GPFGGIFRPD NFVYGQSGAG NNWAKGHYTE GAELIDSVLD VVRKEAENCD CLQGFQVCHS LGGGTGSGMG TLLISKIREE YPDRMMLTFS VFPSPKVSDT VVEPYNATLS VHQLVENADE CMVLDNEALY DICFRTLKLT NPSFGDLNHL ISATMSGVTC CLRFPGQLNS DLRKLAVNLI PFPRLHFFMV GFAPLTSRGS QQYRALTVPE LTQQMWDAKN MMCAADPRHG RYLTASAMFR GKMSTKEVDE QMINVQNKNS SYFVEWIPNN VKSSVCDIPP VGLPMASTFV GNSTSIQEMF RRVSEQFTAM FRRKAFLHWY TSEGMDEMEF TEAESNMNDL VAEYQQYQDA TAEEYEEEEH DGEEEHA GRMZM2G108766_P01 Q43695 Tubulin beta-3 chain (Beta-3-tubulin) seq=translation; coord=1:258551317..258555202:-1; parent_transcript=GRMZM2G108766_T01; parent_gene=GRMZM2G108766 MREILHIQGG QCGNQIGAKF WEVICGEHGV DSTGCYSGVS PQQLERINVY YNEAGGGRYV PRAVLMDLEP GTMESIRAGP FGGIFRPDNF VYGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTNP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPVG LSMSSTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTS EGMDEMEFTE AESNMNDLVA EYQQYQDATA EEYDEEEQDG EEEHA GRMZM2G108766_P02 Q43695 Tubulin beta-3 chain (Beta-3-tubulin) seq=translation; coord=1:258551378..258555288:-1; parent_transcript=GRMZM2G108766_T02; parent_gene=GRMZM2G108766 MREILHIQGG QCGNQIGAKF WEVICGEHGV DSTGCYSGVS PQQLERINVY YNEAGGGRYV PRAVLMDLEP GTMESIRAGP FGGIFRPDNF VYGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTNP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPVG LSMSSTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTS EGMDEMEFTE AESNMNDLVA EYQQYQDATA EEYDEEEQDG EEEHA GRMZM2G108766_P03 Q43695 Tubulin beta-3 chain (Beta-3-tubulin) seq=translation; coord=1:258551401..258555376:-1; parent_transcript=GRMZM2G108766_T03; parent_gene=GRMZM2G108766 MREILHIQGG QCGNQIGAKF WEVICGEHGV DSTGCYSGVS PQQLERINVY YNEAGGGRYV PRAVLMDLEP GTMESIRAGP FGGIFRPDNF VYGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTNP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPVG LSMSSTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTS EGMDEMEFTE AESNMNDLVA EYQQYQDATA EEYDEEEQDG EEEHA GRMZM2G042636_P01 NP_001140291 hypothetical protein LOC100272336 seq=translation; coord=8:1370962..1373972:-1; parent_transcript=GRMZM2G042636_T01; parent_gene=GRMZM2G042636 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE VHDE GRMZM2G042636_P02 NP_001140291 hypothetical protein LOC100272336 seq=translation; coord=8:1370993..1374720:-1; parent_transcript=GRMZM2G042636_T02; parent_gene=GRMZM2G042636 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE DLDAADI GRMZM2G042636_P03 NP_001140291 hypothetical protein LOC100272336 seq=translation; coord=8:1371027..1374720:-1; parent_transcript=GRMZM2G042636_T03; parent_gene=GRMZM2G042636 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE VHDE GRMZM2G042636_P04 NP_001140291 hypothetical protein LOC100272336 seq=translation; coord=8:1371027..1374637:-1; parent_transcript=GRMZM2G042636_T04; parent_gene=GRMZM2G042636 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE VHDE GRMZM2G071790_P01 Q41783 Tubulin beta-6 chain (Beta-6-tubulin) seq=translation; coord=3:187441065..187444892:-1; parent_transcript=GRMZM2G071790_T01; parent_gene=GRMZM2G071790 MLAAATAAYG YFNPALLPTP HSPPASSRLP DLARSAPVAS QFGSSHTSAK MREILHIQGG QCGNQIGAKF WEVVCDEHGI DPTGRYTGNS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE VQADDM GRMZM2G071790_P02 Q41783 Tubulin beta-6 chain (Beta-6-tubulin) seq=translation; coord=3:187441506..187445356:-1; parent_transcript=GRMZM2G071790_T02; parent_gene=GRMZM2G071790 MREILHIQGG QCGNQIGAKF WEVVCDEHGI DPTGRYTGNS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE VQADDM GRMZM2G071790_P03 Q41783 Tubulin beta-6 chain (Beta-6-tubulin) seq=translation; coord=3:187441509..187443944:-1; parent_transcript=GRMZM2G071790_T03; parent_gene=GRMZM2G071790 MREILHIQGG QCGNQIGAKF WEVVCDEHGI DPTGRYTGNS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE VQADDM GRMZM2G071790_P04 Q41783 Tubulin beta-6 chain (Beta-6-tubulin) seq=translation; coord=3:187441519..187444944:-1; parent_transcript=GRMZM2G071790_T04; parent_gene=GRMZM2G071790 MLAAATAAYG YFNPALLPTP HSPPASSRLP DLARSAPVAS QFGSSHTSAK MREILHIQGG QCGNQIGAKF WEVVCDEHGI DPTGRYTGNS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEEYEDEEE VQADDM GRMZM2G071790_P05 Q41783 Tubulin beta-6 chain (Beta-6-tubulin) seq=translation; coord=3:187441570..187444557:-1; parent_transcript=GRMZM2G071790_T05; parent_gene=GRMZM2G071790 MRLDPLICHL GMSWPMLVSL SLSFDEGYSI GFVIDSLVCR AKMREILHIQ GGQCGNQIGA KFWEVVCDEH GIDPTGRYTG NSDLQLERVN VYYNEASCGR FVPRAVLMDL EPGTMDSVRT GPYGQIFRPD NFVFGQSGAG NNWAKGHYTE GAELIDSVLD VVRKEAENCD CLQGFQVCHS LGGGTGSGMG TLLISKIREE YPDRMMLTFS VFPSPKVSDT VVEPYNATLS VHQLVENADE CMVLDNEALY DICFRTLKLT TPSFGDLNHL ISATMSGVTC CLRFPGQLNS DLRKLAVNLI PFPRLHFFMV GFAPLTSRGS QQYRALTVPE LTQQMWDAKN MMCAADPRHG RYLTASAMFR GKMSTKEVDE QMINVQNKNS SYFVEWIPNN VKSSVCDIPP RGLSMASTFI GNSTSIQEMF RRVSEQFTAM FRRKAFLHWY TGEGMDEMEF TEAESNMNDL VSEYQQYQDA TADEEEYEDE EEVQADDM GRMZM2G133802_P01 Q43697 Tubulin beta-5 chain (Beta-5-tubulin) seq=translation; coord=3:47736769..47739503:-1; parent_transcript=GRMZM2G133802_T01; parent_gene=GRMZM2G133802 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEAEYEDEE AIQDE GRMZM2G133802_P02 Q43697 Tubulin beta-5 chain (Beta-5-tubulin) seq=translation; coord=3:47736772..47740094:-1; parent_transcript=GRMZM2G133802_T02; parent_gene=GRMZM2G133802 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEAEYEDEE AIQDE GRMZM2G133802_P03 Q43697 Tubulin beta-5 chain (Beta-5-tubulin) seq=translation; coord=3:47736824..47739988:-1; parent_transcript=GRMZM2G133802_T03; parent_gene=GRMZM2G133802 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEAEYEDEE AIQDE GRMZM2G099944_P01 NP_001168917 hypothetical protein LOC100382727 seq=translation; coord=1:276428674..276431930:-1; parent_transcript=GRMZM2G099944_T01; parent_gene=GRMZM2G099944 MREILHIQGG QCGNQIGAKF WEVICDEHGI DATGRYAGDS DLQLERVNVY YNEASGGRFV PRAVLMDLEP GTMDSLRSGP FGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADQCM VLDNEALYDI CFRTLKLATP TFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM LNVQNKNSSY FVEWIPNNVK SSVCDIPPKG LRMSGTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVA EYQQYQDATA DEEYEDEDEE EAVSE GRMZM2G133802_P04 Q43697 Tubulin beta-5 chain (Beta-5-tubulin) seq=translation; coord=3:47737075..47740094:-1; parent_transcript=GRMZM2G133802_T04; parent_gene=GRMZM2G133802 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYVGTS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMASTFIGN STSIQEMRKA FLHWYTGEGM DEMEFTEAES NMNDLVSEYQ QYQDATADEE AEYEDEE GRMZM2G164696_P01 P18025 Tubulin beta-1 chain (Beta-1-tubulin) seq=translation; coord=1:2038186..2040079:1; parent_transcript=GRMZM2G164696_T01; parent_gene=GRMZM2G164696 MREILHIQGG QCGNQIGAKF WEVVCAEHGI DATGRYGGDS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRSGP YGHIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM LNVQNKNSSY FVEWIPNNVK STVCDIPPTG LKMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEGEYEDEE EGDLQD GRMZM2G164696_P03 P18025 Tubulin beta-1 chain (Beta-1-tubulin) seq=translation; coord=1:2037790..2039758:1; parent_transcript=GRMZM2G164696_T03; parent_gene=GRMZM2G164696 MREILHIQGG QCGNQIGAKF WEVVCAEHGI DATGRYGGDS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRSGP YGHIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRALTVPELT QQMWDAKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM LNVQNKNSSY FVEWIPNNVK STVCDIPPTG LKMASTFIGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEGEYEDEE EGDLQD GRMZM2G334899_P01 P18026 Tubulin beta-2 chain (Beta-2-tubulin) seq=translation; coord=8:104770563..104774039:-1; parent_transcript=GRMZM2G334899_T01; parent_gene=GRMZM2G334899 MREILHIQGG QCGNQIGSKF WEVVCDEHGI DPTGRYMGTS DVQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDAVRTGP YGQIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMMTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMVGF APLTSRGSQQ YRSLTVPELT QQMWDSKNMM CAADPRHGRY LTASAMFRGK MSTKEVDEQM INVQNKNSSY FVEWIPNNVK SSVCDIPPRG LSMSSTFVGN STSIQEMFRR VSEQFTAMFR RKAFLHWYTG EGMDEMEFTE AESNMNDLVS EYQQYQDATA DEEADYEEEE AAAE GRMZM2G164696_P02 P18025 Tubulin beta-1 chain (Beta-1-tubulin) seq=translation; coord=1:2038220..2039999:1; parent_transcript=GRMZM2G164696_T02; parent_gene=GRMZM2G164696 MREILHIQGG QCGNQIGAKF WEVVCAEHGI DATGRYGGDS DLQLERVNVY YNEASCGRFV PRAVLMDLEP GTMDSVRSGP YGHIFRPDNF VFGQSGAGNN WAKGHYTEGA ELIDSVLDVV RKEAENCDCL QGFQVCHSLG GGTGSGMGTL LISKIREEYP DRMMLTFSVF PSPKVSDTVV EPYNATLSVH QLVENADECM VLDNEALYDI CFRTLKLTTP SFGDLNHLIS ATMSGVTCCL RFPGQLNSDL RKLAVNLIPF PRLHFFMMWD AKNMMCAADP RHGRYLTASA MFRGKMSTKE VDEQMLNVQN KNSSYFVEWI PNNVKSTVCD IPPTGLKMAS TFIGNSTSIQ EMFRRVSEQF TAMFRRKAFL HWYTGEGMDE MEFTEAESNM NDLVSEYQQY QDATADEEGE YEDEEEGDLQ D GRMZM2G043822_P01 Q41784 Tubulin beta-7 chain (Beta-7-tubulin) seq=translation; coord=6:92813290..92815973:-1; parent_transcript=GRMZM2G043822_T01; parent_gene=GRMZM2G043822 MGTLLISKIR EEYPDRMMLT FSVFPSPKVS DTVVEPYNAT LSVHQLVENA DECMVLDNEA LYDICFRTLK LSTPTFGDLN HLISATMSGV TCCLRFPGQL NSDLRKLAVN LIPFPRLHFF MVGFAPLTSR GSQQYRALTV PELTQQMWDS KNMMCAADPR HGRYLTASAM FRGKMSTKEV DEQMLNVQNK NSSYFVEWIP NNVKSSVCDI PPIGLKMSST FIGNSTSIQE MFRRVSEQFT AMFRRKAFLH WYTGEGMDEM EFTEAESNMN DLVAEYQQYQ DATAEDEEYE EEEEEDPAA GRMZM2G373040_P01 seq=translation; coord=5:16371197..16373966:-1; parent_transcript=GRMZM2G373040_T01; parent_gene=GRMZM2G373040 MQQQYKLVPI QMKKMSNNVK ELSAANREIC WDAFGHTLLI SKIREEYPDR MMLTFSVFPS PKVSDTVVEP YNATLGENVG VLYWHLDPKK SESEEELAKI RRDRGYSYMD LIEICPDKLE NYEEKVKNFF REHMHADEEI RYCLEGSGFF DVRDKDDKWI RIRIREGDMI ILPAGIYHRL TLDSAKYTKE DHPARQEYVK NVSASTGFAL VAHFLANTNL PSKPF 5.55133 -0.258201 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 6961 6961 6918 6697 5946 5225 4220 3568 2977 1823 1439 844 490 284 141 66 50 10 5 2 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 7073 7073 7030 6803 5952 5126 3932 3024 2524 1047 749 126 1 0 0 1 2 3 4 5 6 7 2305 3264 1145 235 122 1 2 0 0 1 2 3 4 5 6 7 1207 3922 1493 297 71 5 0 79 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3061 (charge 2) 1077.53 2 155.081 156.113 157.097 157.109 158.092 159.077 166.061 167.055 169.133 173.092 175.09 175.119 176.123 181.061 183.113 185.091 185.106 185.165 187.071 199.108 201.087 203.085 209.105 211.144 213.087 221.103 223.155 226.119 228.134 230.114 235.12 241.13 249.098 253.166 259.092 267.109 270.192 273.119 290.146 299.061 301.059 303.177 327.167 332.176 352.162 356.203 370.172 376.151 382.209 387.198 394.169 398.166 417.246 462.267 474.214 482.726 500.282 511.249 524.737 528.277 530.762 533.237 540.772 550.262 560.252 617.767 661.296 663.346 674.315 679.304 682.287 691.342 693.34 717.809 727.385 790.335 808.346 810.354 831.436 833.428 840.467 846.412 903.421 905.409 921.428 947.421 977.529 2 3 9 2 12 9 2 2 4 2 5 100 7 1 1 2 4 2 7 2 2 1 1 3 8 2 1 2 4 4 3 2 2 27 3 2 7 5 2 5 5 3 3 2 2 2 13 1 4 9 2 3 2 2 5 4 8 5 2 22 3 2 2 14 5 2 2 8 1 6 2 13 1 2 4 3 13 1 5 1 2 3 16 3 3 6 2 GRMZM2G113696_P01 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=2:209289645..209292956:-1; parent_transcript=GRMZM2G113696_T01; parent_gene=GRMZM2G113696 MSDSEEHHFE SKADAGASKT YPQQAGTVRK NGFIVIKNRP CKVVEVSTSK TGKHGHAKCH FVAIDIFNGK KLEDIVPSSH NCDIPHVNRT EYQLIDISED GFVSLLTSDG NTKDDLRLPT DETLVAQIKE GFESGKDLVV TVQSAMGEEQ ICALKDVGPK GRMZM2G144030_P01 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=7:163002247..163005888:-1; parent_transcript=GRMZM2G144030_T01; parent_gene=GRMZM2G144030 MSDSEEHHFE SKADAGASKT YPQQAGTVRK NGFIVIKNRP CKVVEVSTSK TGKHGHAKCH FVAIDIFNGK KLEDIVPSSH NCDIPHVNRT EYQLIDISED GFVSLLTSDG NTKDDLRLPT DETLVAQIKE GFESGKDLVV TVQSAMGEEQ ICALKDVGPK GRMZM2G113696_P02 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=2:209289645..209292956:-1; parent_transcript=GRMZM2G113696_T02; parent_gene=GRMZM2G113696 MSDSEEHHFE SKADAGASKT YPQQAGTVRK NGFIVIKNRP CKVVEVSTSK TGKHGHAKCH FVAIDIFNGK KLEDIVPSSH NCDVS GRMZM2G113696_P03 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=2:209289645..209292956:-1; parent_transcript=GRMZM2G113696_T03; parent_gene=GRMZM2G113696 MSDSEEHHFE SKADAGASKT YPQQAGTVRK NGFIVIKNRP CKVVEVSTSK TGKREPSYFR WQH GRMZM2G144030_P02 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=7:163002247..163005888:-1; parent_transcript=GRMZM2G144030_T02; parent_gene=GRMZM2G144030 MSDSEEHHFE SKADAGASKT YPQQAGTVRK NGFIVIKNRP CKVVEVSTSK TGKHGHAKCH FVAIDIFNGK KLEDIVPSSH NCDVS 3.89247 -0.222427 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1541 1541 1541 1541 1424 1330 1210 955 674 456 233 146 93 49 34 13 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1550 1550 1550 1550 1433 1323 1176 864 564 243 76 47 12 7 1 0 0 1 2 3 4 5 6 7 531 585 332 72 23 3 9 0 0 1 2 3 4 5 6 7 326 643 409 129 27 9 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3062 (charge 3) 1373.56 3 154.049 155.082 156.077 157.061 158.093 159.076 161.074 166.062 167.056 169.097 171.076 171.112 173.129 175.071 175.119 181.061 181.097 185.056 189.087 192.102 194.13 198.124 199.071 199.108 201.123 203.066 216.134 221.104 226.156 227.066 229.119 232.141 234.145 237.122 239.093 241.082 244.165 247.13 249.098 255.146 257.139 259.093 267.108 272.171 275.125 278.157 285.134 293.65 299.061 314.098 324.163 329.193 341.217 345.177 363.19 378.14 386.157 392.69 396.164 404.173 414.177 426.245 428.252 448.207 455.186 483.188 487.208 501.209 510.256 512.728 515.201 521.736 533.219 551.237 554.302 555.31 565.247 570.216 580.201 586.292 592.246 598.21 612.331 613.753 620.242 622.763 629.304 647.315 662.265 680.277 690.257 707.261 717.262 725.377 726.379 735.268 767.307 784.372 896.37 913.417 6 6 7 20 5 9 10 4 5 7 18 10 5 35 27 5 7 15 24 8 5 9 17 15 15 17 31 9 7 34 5 5 100 7 6 4 19 6 12 4 12 5 15 6 20 15 27 6 4 15 6 8 7 25 31 8 9 14 22 14 14 5 4 8 7 13 5 6 31 7 7 5 8 10 7 10 12 8 5 7 7 12 11 6 8 8 7 31 8 6 7 5 4 23 7 13 8 13 7 6 GRMZM2G099657_P01 NP_001149295 40S ribosomal protein SA seq=translation; coord=9:150090384..150093179:-1; parent_transcript=GRMZM2G099657_T01; parent_gene=GRMZM2G099657 MAASAGGGAV RALSQKEQDI QMMLAADVHL GTKNCDFQME RYVFKRRTDG IYIINLGKTW DKLQLAARVI VAIENPQDII VQSARPYGQR AVLKFAQYTG AHAIAGRHTP GTFTNQLQTS FSEPRLLILT DPRTDHQPIK ESALGNIPTI AFCDTDSPMR YVDIGIPANN KGRNSIGCLF WLLARMVLQM RGTILPGHKW EVMVDLFFYR DPEEAKEQEE EAAAAPEFAA VTDYQGADQW GGDQWTSDVA APPVAPTGAD WGAAPAPVPT GDGWDQTVAP VPVDGTVPPV VAPTGWESAA QPTAQGWE GRMZM2G099657_P02 NP_001149295 40S ribosomal protein SA seq=translation; coord=9:150092448..150093179:-1; parent_transcript=GRMZM2G099657_T02; parent_gene=GRMZM2G099657 MAASAGGGAV RALSQKEQDI QMMLAADVHL GTKNCDFQME RYVFKRRTDG MFFPPASLPF CLSACESM 4.41474 -0.196211 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3668 3668 3614 3488 3100 2810 2597 2371 1540 1334 878 586 383 229 132 77 58 30 22 14 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3667 3667 3613 3481 3075 2747 2457 2257 1153 791 295 97 61 4 1 0 0 1 2 3 4 5 6 926 1931 619 188 11 2 0 0 1 2 3 4 5 6 7 548 2141 756 188 34 2 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3063 (charge 2) 858.443 2 153.102 155.082 157.061 157.097 157.109 158.092 159.076 160.08 166.061 167.056 167.081 169.061 169.097 169.133 171.112 171.149 172.072 173.092 173.129 175.119 176.122 183.113 183.149 184.108 185.056 185.092 185.128 186.087 186.095 186.123 187.108 187.143 193.097 194.128 195.113 197.129 198.087 199.108 199.144 200.14 201.123 203.067 208.953 212.103 213.087 215.114 218.149 226.154 228.182 231.061 235.119 240.135 243.109 254.113 256.177 260.196 269.124 272.124 274.187 279.145 284.008 286.151 289.673 297.155 298.679 314.176 316.151 325.151 328.195 342.178 346.087 353.228 356.193 359.028 361.245 370.256 383.71 385.221 402.246 413.705 426.242 432.234 440.729 449.241 459.267 481.325 487.261 499.265 516.289 518.297 567.303 570.298 584.318 587.326 589.327 596.354 656.347 674.358 684.343 745.396 2 6 2 7 9 12 27 2 2 11 7 3 3 8 4 3 5 4 4 58 5 4 3 5 2 65 2 3 4 2 3 5 2 2 2 5 6 3 3 2 5 2 4 10 2 8 4 11 15 3 3 4 16 74 24 4 2 12 5 2 3 3 3 7 3 5 2 11 3 5 3 2 4 19 4 5 3 4 9 5 3 3 2 4 21 2 3 5 100 5 2 2 4 41 2 3 2 19 4 2 GRMZM2G044074_P01 O81220 Uroporphyrinogen decarboxylase, chloroplastic Precursor (URO-D)(UPD)(EC 4.1.1.37) seq=translation; coord=1:56558248..56562800:1; parent_transcript=GRMZM2G044074_T01; parent_gene=GRMZM2G044074 MATACPPLSL PSTSLFRGRS ARAGPRRRQL TAVRCSAVGE AVVEEASPRT AEEPLLVSAI RGRKVERPPV WLMRQAGRYM KSYQLLCERY PSFRERSENV DLVVEISLQP WKVFKPDGVI LFSDILTPLP GMNIPFDIVK GKGPVIYDPL RTAAAVNEVR EFVPEEWVPY VGQALNILRQ EVKNEAAVLG FVGAPFTLAS YCVEGGSSKN FTLIKKMAFS EPAILHNLLQ KFTTSMANYI KYQADNGAQA VQIFDSWATE LSPADFEEFS LPYLKQIVDS VRETHPNLPL ILYASGSGGL LERLPLTGVD VVSLDWTVDM AEGRKRLGSN TAVQGNVDPG VLFGSKEFIS RRIYDTVQKA GNVGHVLNLG HGIKVGTPEE NVAHFFEVAK GIRY GRMZM2G044074_P02 O81220 Uroporphyrinogen decarboxylase, chloroplastic Precursor (URO-D)(UPD)(EC 4.1.1.37) seq=translation; coord=1:56558221..56561693:1; parent_transcript=GRMZM2G044074_T02; parent_gene=GRMZM2G044074 MATACPPLSL PSTSLFRGRS ARAGPRRRQL TAVRCSAVGE AVVEEASPRT AEEPLLVSAI RGRKVERPPV WLMRQAGRYM KSYQLLCERY PSFRERSENV DLVVEISLQP WKVFKPDGVI LFSDILTPLP GMNIPFDIVK GKGPVIYDPL RTAAAVNEVR EFVPEEWVPY VGQALNILRQ EVKNEAAVLG FVGAPFTLAS YCVEGGSSKN FTLIKKMAFS EPAILHNLLQ KFTTSMANYI KYQADNGAQA VQIFDSWATE LSPADFEEFS LPYLKQIVDS VRETHPNLPL ILYASGSGGL LERLPLTGVD VVSLDWTVDM AEGRKRLGSN TAVQGNVDPG VLFGSKEFIS RRIYDTVQKA GNVGHVLNLG HGIKVGTPEE NVAHFFEVAK GIRY 5.11437 -0.249481 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 6149 6149 6149 6149 5879 5665 4876 4024 3273 2178 1425 931 554 346 174 96 48 14 7 1 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6138 6138 6138 6138 5868 5648 4814 3734 2496 1084 440 93 35 1 0 0 1 2 3 4 5 6 7 1764 2689 1244 404 49 0 0 4 0 1 2 3 4 5 1153 3685 1075 204 37 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3065 (charge 2) 1022.56 2 155.082 157.061 157.097 157.109 158.093 159.077 166.086 167.081 167.118 171.076 173.129 175.072 175.119 181.097 183.149 185.092 187.071 189.087 195.113 198.087 199.071 199.108 199.18 204.135 205.098 209.092 211.144 213.123 216.098 217.083 223.108 225.171 226.155 234.145 240.134 242.184 244.166 248.16 251.102 258.144 259.148 261.125 265.12 268.13 270.193 275.208 282.148 286.139 293.113 301.187 303.145 310.666 320.172 333.156 335.192 351.166 359.193 380.146 388.292 422.156 433.256 436.239 448.741 470.223 476.297 486.246 504.257 505.26 509.188 517.335 523.27 531.256 548.283 589.279 591.22 602.313 605.301 620.325 622.339 628.368 631.319 646.378 649.331 651.34 660.345 670.331 671.333 676.377 688.341 689.35 704.377 717.379 720.406 748.398 789.391 809.442 817.386 848.463 876.455 896.466 12 7 20 10 6 8 7 17 8 19 8 6 20 7 15 28 6 11 13 8 8 6 21 7 6 7 7 7 18 9 77 15 12 6 30 14 15 9 19 80 12 5 7 13 6 28 5 8 12 36 51 16 27 5 14 6 30 9 11 15 12 11 7 6 9 14 42 14 14 11 15 15 100 8 7 8 19 59 7 8 27 27 80 6 16 27 12 13 14 7 14 35 52 37 32 11 19 11 11 12 conta|P35527|K1CI_HUMAN Keratin, type I cytoskeletal 9 (Cytokeratin 9) (K9) (CK 9) - Homo sapiens (Human). 5.625 -0.25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 1413 1413 1412 1347 1208 962 800 498 319 178 100 62 33 23 18 12 5 4 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 1440 1440 1439 1373 1230 955 677 400 183 71 19 1 0 0 1 2 3 4 5 6 692 571 137 29 8 5 0 0 1 2 3 4 5 6 7 319 745 281 61 5 14 6 11 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3066 (charge 2) 1791.73 2 175.119 182.093 184.072 185.093 196.072 202.082 214.082 221.092 223.107 226.082 233.092 241.095 253.093 259.104 262.149 271.103 273.085 274.14 281.087 283.104 289.113 290.114 293.087 298.114 302.112 310.115 316.124 319.172 328.124 338.108 340.126 347.136 355.136 359.135 365.145 367.135 377.145 385.146 387.13 399.128 404.156 406.204 412.158 416.156 424.158 432.22 434.166 440.217 442.165 456.152 461.177 463.229 473.178 485.179 491.19 503.19 513.175 518.196 520.239 530.2 538.222 548.209 557.21 560.235 575.219 577.269 587.215 605.232 632.242 644.244 662.254 701.264 719.273 740.334 797.35 819.344 854.377 887.87 911.396 913.397 948.391 980.413 998.428 1055.45 1057.46 1077.44 1112.47 1151.47 1169.5 1171.49 1191.48 1206.48 1208.5 1226.51 1228.51 1335.52 1389.58 1391.58 1464.58 1476.61 12 2 7 2 5 12 3 4 7 2 5 9 7 9 3 10 2 5 4 4 3 8 5 13 5 6 7 8 5 2 7 5 7 5 2 12 5 19 2 2 5 5 4 6 2 5 9 2 4 5 6 8 6 5 4 7 4 4 13 13 4 8 2 5 5 36 6 6 6 4 3 3 4 13 16 2 21 7 32 2 4 3 24 23 2 5 32 4 41 5 2 3 8 100 12 4 26 5 4 8 GRMZM2G044132_P01 B6UCP6 Putative uncharacterized protein seq=translation; coord=2:53844493..53846005:1; parent_transcript=GRMZM2G044132_T01; parent_gene=GRMZM2G044132 4.76924 -0.272528 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 2387 2387 2340 2246 1816 1536 1223 832 556 392 214 122 50 26 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2388 2388 2341 2247 1810 1501 1150 662 396 244 71 30 2 1 1 0 0 1 2 3 4 5 6 1009 926 366 92 7 3 0 0 1 2 3 4 5 6 7 381 1374 471 116 33 18 4 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3067 (charge 3) 1620.67 3 155.081 157.097 157.109 158.092 159.077 160.08 169.134 173.092 175.092 175.119 176.123 177.102 185.165 187.071 187.107 188.075 197.128 201.087 203.085 212.103 213.087 217.137 221.103 228.134 235.12 238.14 241.082 245.077 247.108 249.098 253.166 254.169 258.108 265.118 267.108 270.192 272.171 298.104 302.662 316.114 326.171 355.124 367.183 370.172 382.208 387.198 395.184 399.234 431.705 458.248 462.268 474.713 483.227 496.227 500.285 511.25 524.735 528.277 531.26 533.305 539.772 550.262 552.262 560.255 587.293 604.313 609.256 617.769 663.349 670.361 673.278 679.308 682.29 683.292 688.287 692.344 693.347 708.376 717.808 718.309 727.384 733.358 764.884 790.34 791.336 802.373 809.35 810.356 832.442 833.424 837.423 840.473 845.373 904.424 905.423 922.435 948.422 949.426 977.535 1031.44 3 9 2 7 57 4 7 9 6 70 8 2 3 54 2 4 3 10 2 4 7 3 3 5 6 3 4 4 2 4 15 5 9 4 3 4 2 4 3 9 2 2 5 9 2 7 4 2 8 6 3 4 3 3 5 3 12 14 4 4 100 10 3 45 5 3 3 21 4 2 8 5 14 4 3 13 5 2 19 15 11 2 3 3 4 3 13 3 5 2 3 5 6 21 10 4 6 2 4 4 GRMZM2G156673_P01 NP_001132138 hypothetical protein LOC100193556 seq=translation; coord=8:6590983..6592937:1; parent_transcript=GRMZM2G156673_T01; parent_gene=GRMZM2G156673 MAEVEQQQDT PKLFNRWTFD DVQVNDISLN DYLAVNATKH AMYLPHTAGR YSKKRFRKAQ CPIVERLTNS LMMHGRNNGK KVMAVRIIKH TLEIIHLLTD ANPIQVVVDA IINSGPREDA TRIGSAGVVR RQAVDISPLR RVNQAIYLLT TGARESAFRN IKTIAECLAD ELINAAKGSS NSYAIKKKDE IERVAKANR GRMZM2G156673_P03 NP_001132138 hypothetical protein LOC100193556 seq=translation; coord=8:6591025..6592937:1; parent_transcript=GRMZM2G156673_T03; parent_gene=GRMZM2G156673 MAEVEQQQDT PKLFNRWTFD DVQVNDISLN DYLAVNATKH AMYLPHTAGR YSKKRFRKAQ CPIVERLTNS LMMHGRNNGK KVMAVRIIKH TLEIIHLLTD ANPIQVVVDA IINRYSLNLG 6.35223 -0.309865 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6781 6781 6781 6773 6486 6228 5933 5598 4437 3352 2056 1142 602 313 126 50 24 15 4 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6791 6791 6791 6783 6496 6235 5929 5477 4114 2661 1189 375 107 26 1 0 0 1 2 3 4 5 6 7 1762 2865 1464 534 156 9 3 0 0 1 2 3 4 5 6 7 1236 3018 1719 600 175 28 5 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3068 (charge 3) 1269.62 3 152.071 155.082 155.118 157.097 158.092 159.077 159.113 161.093 164.082 166.061 167.046 169.097 169.134 170.137 171.076 171.113 172.108 173.092 173.129 174.132 175.119 180.105 181.109 183.112 185.056 185.09 186.059 187.073 187.108 188.111 189.088 197.129 201.124 203.066 207.124 209.104 212.104 215.103 219.08 221.104 229.117 231.061 235.119 239.114 247.107 248.635 262.14 267.109 271.146 274.129 283.11 286.153 292.14 298.14 301.188 303.178 310.666 313.156 316.149 318.146 319.672 338.129 341.193 342.176 346.088 350.147 356.138 359.204 362.691 366.177 382.142 386.215 404.225 413.213 442.245 455.203 467.224 491.207 496.262 519.203 523.27 525.318 541.285 542.289 568.289 588.293 602.229 604.299 607.297 608.291 620.327 625.305 632.281 638.337 640.337 653.41 699.283 724.374 754.459 825.424 5 8 5 5 19 45 9 9 4 12 8 6 35 4 11 4 4 8 80 8 61 4 24 7 100 6 7 6 65 6 5 10 32 50 16 44 4 12 19 10 5 45 45 12 7 24 18 13 14 22 5 5 8 12 4 21 11 10 6 9 15 10 7 15 16 8 17 86 10 7 6 23 59 11 4 8 5 12 51 25 10 5 27 8 11 6 10 5 7 4 12 46 8 56 6 18 5 21 6 20 GRMZM2G116292_P01 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31201315..31206122:-1; parent_transcript=GRMZM2G116292_T01; parent_gene=GRMZM2G116292 GRMZM2G116292_P02 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T02; parent_gene=GRMZM2G116292 GRMZM2G116292_P03 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T03; parent_gene=GRMZM2G116292 GRMZM2G116292_P04 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T04; parent_gene=GRMZM2G116292 GRMZM2G116292_P05 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31206122:-1; parent_transcript=GRMZM2G116292_T05; parent_gene=GRMZM2G116292 GRMZM2G047727_P01 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=2:165103157..165107176:-1; parent_transcript=GRMZM2G047727_T01; parent_gene=GRMZM2G047727 GRMZM2G409726_P01 NP_001105376 polyubiquitin seq=translation; coord=5:82443403..82446794:-1; parent_transcript=GRMZM2G409726_T01; parent_gene=GRMZM2G409726 GRMZM2G409726_P02 NP_001105376 polyubiquitin seq=translation; coord=5:82443815..82446714:-1; parent_transcript=GRMZM2G409726_T02; parent_gene=GRMZM2G409726 GRMZM2G409726_P03 NP_001105376 polyubiquitin seq=translation; coord=5:82443856..82446714:-1; parent_transcript=GRMZM2G409726_T03; parent_gene=GRMZM2G409726 GRMZM2G006293_P01 NP_001150700 40S ribosomal protein S27a seq=translation; coord=1:191263450..191264705:-1; parent_transcript=GRMZM2G006293_T01; parent_gene=GRMZM2G006293 GRMZM2G118637_P01 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236857988..236860949:1; parent_transcript=GRMZM2G118637_T01; parent_gene=GRMZM2G118637 GRMZM2G118637_P02 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859470..236861173:1; parent_transcript=GRMZM2G118637_T02; parent_gene=GRMZM2G118637 GRMZM2G118637_P03 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859530..236860675:1; parent_transcript=GRMZM2G118637_T03; parent_gene=GRMZM2G118637 GRMZM2G118637_P04 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859530..236860669:1; parent_transcript=GRMZM2G118637_T04; parent_gene=GRMZM2G118637 GRMZM2G118637_P05 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859647..236860633:1; parent_transcript=GRMZM2G118637_T05; parent_gene=GRMZM2G118637 GRMZM2G419891_P01 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883718:1; parent_transcript=GRMZM2G419891_T01; parent_gene=GRMZM2G419891 GRMZM2G419891_P02 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883699:1; parent_transcript=GRMZM2G419891_T02; parent_gene=GRMZM2G419891 GRMZM2G419891_P03 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883232:1; parent_transcript=GRMZM2G419891_T03; parent_gene=GRMZM2G419891 GRMZM2G419891_P04 NP_001105376 polyubiquitin seq=translation; coord=4:236879381..236883699:1; parent_transcript=GRMZM2G419891_T04; parent_gene=GRMZM2G419891 GRMZM2G419891_P05 NP_001105376 polyubiquitin seq=translation; coord=4:236881289..236883469:1; parent_transcript=GRMZM2G419891_T05; parent_gene=GRMZM2G419891 GRMZM2G431821_P01 P27923 Ubiquitin-40S ribosomal protein S27a Precursor [Contains Ubiquitin;40S ribosomal protein S27a] seq=translation; coord=8:171603815..171604536:-1; parent_transcript=GRMZM2G431821_T01; parent_gene=GRMZM2G431821 GRMZM2G047732_P01 NP_001105472 40S ribosomal protein S27a seq=translation; coord=8:39126474..39127702:1; parent_transcript=GRMZM2G047732_T01; parent_gene=GRMZM2G047732 GRMZM2G047732_P02 NP_001105472 40S ribosomal protein S27a seq=translation; coord=8:39126804..39127596:1; parent_transcript=GRMZM2G047732_T02; parent_gene=GRMZM2G047732 GRMZM2G357296_P01 B6SIL9 40S ribosomal protein S27a seq=translation; coord=6:125241154..125242106:-1; parent_transcript=GRMZM2G357296_T01; parent_gene=GRMZM2G357296 GRMZM2G116689_P01 NP_001148606 LOC100282222 seq=translation; coord=7:116376688..116380988:1; parent_transcript=GRMZM2G116689_T01; parent_gene=GRMZM2G116689 GRMZM2G116689_P03 NP_001148606 LOC100282222 seq=translation; coord=7:116376702..116380916:1; parent_transcript=GRMZM2G116689_T03; parent_gene=GRMZM2G116689 GRMZM2G005461_P01 seq=translation; coord=9:19289416..19290344:-1; parent_transcript=GRMZM2G005461_T01; parent_gene=GRMZM2G005461 GRMZM2G406643_P01 seq=translation; coord=7:150270916..150273417:1; parent_transcript=GRMZM2G406643_T01; parent_gene=GRMZM2G406643 6.57992 -0.306043 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 13645 13645 13645 13410 13003 12426 11353 10049 7691 5268 3255 1828 891 454 210 104 42 17 8 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 13648 13648 13648 13413 13006 12379 11106 9326 5962 2782 523 73 16 3 1 0 0 1 2 3 4 5 6 7 3933 5179 2990 1110 585 62 11 0 0 1 2 3 4 5 6 7 2150 5422 3764 1594 601 88 24 227 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3070 (charge 3) 1523.78 3 155.082 157.097 157.134 158.092 166.061 167.081 169.097 171.112 173.129 175.119 181.097 183.113 185.092 185.128 186.124 187.072 187.108 191.084 195.113 199.107 201.124 204.134 213.087 218.15 223.155 226.119 227.102 233.092 240.133 242.15 244.093 246.156 250.118 251.15 253.093 255.146 258.145 261.088 269.125 272.171 274.187 278.113 286.151 292.13 303.205 310.142 317.183 322.161 333.188 337.15 341.147 355.16 357.178 367.133 370.688 371.189 396.153 400.258 414.208 431.237 432.24 445.236 447.232 454.166 466.203 475.207 500.757 507.268 509.757 515.284 539.259 541.227 543.278 546.264 558.257 567.252 575.29 583.286 596.304 626.307 627.304 643.317 645.321 654.309 662.327 671.335 689.345 704.304 723.352 733.365 738.352 740.369 741.372 756.431 768.386 784.431 818.376 835.373 852.396 863.367 7 4 12 10 4 4 5 4 9 43 6 6 7 4 10 4 6 11 4 5 7 23 7 5 4 8 5 19 4 16 6 4 7 5 5 4 4 10 6 4 6 15 6 5 8 4 8 22 7 4 6 5 5 4 47 19 4 4 4 39 9 8 17 6 9 5 3 4 25 11 4 5 4 20 8 5 16 5 5 15 4 100 8 4 5 13 6 3 10 7 27 47 19 4 4 8 8 5 12 4 GRMZM5G800734_P02 B6TNC0 Ankyrin repeat domain-containing protein 2Putative uncharacterized protein ; seq=translation; coord=7:138591141..138594806:1; parent_transcript=GRMZM5G800734_T02; parent_gene=GRMZM5G800734 MASDESKNSK PEKPSSAAGA GLPNPFDFSS MSNLLNDPSI REMAEQIASD PVFNQMAEQL QKSAQGAGEQ GIPALDPQQY METMQQVMQN PQFVSMAERL GNALMQDPAM SSMLENLTSP AHKEQLEERM ARIKEDPSLK PILDEIENGG PSAMVKYWND PEVLQKIGQA MGVNLPGDSS VSTVLSGPEE TEEEGGDDDE SIVHHTASVG DEEGLKKALE GGADKDEEDA EGRRALHFAC GYGELKCAEI LLEAGAAVDA LDKNKNTPLH YAAGYGRKEC VDLLLKYGAA VTLQNLDGKT PIEVAKLNSQ DEVLKLLEKD AFL 6.44358 -0.286381 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 6425 6425 6397 6233 5793 5364 4762 3783 2967 1810 1086 569 312 178 93 39 13 11 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6429 6429 6401 6237 5797 5347 4667 3564 2278 1112 263 56 16 11 1 0 0 1 2 3 4 5 6 7 2086 2605 1234 397 97 8 2 3 0 1 2 3 4 5 6 7 1581 2794 1375 437 163 65 10 7 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3071 (charge 3) 1817.83 3 155.082 157.097 157.134 158.093 158.137 159.077 167.056 169.061 173.093 175.119 185.093 185.129 186.087 187.072 194.625 198.087 199.109 201.124 209.09 215.139 217.081 226.119 227.102 232.141 239.095 244.128 258.145 269.126 272.171 285.157 294.665 297.12 301.114 310.072 323.173 352.177 355.07 359.193 371.216 388.242 401.668 412.142 416.701 420.133 426.246 432.221 466.103 472.214 481.221 483.218 500.258 502.227 504.255 529.272 539.235 544.238 546.292 571.294 572.3 577.744 584.306 588.322 594.273 598.249 602.782 608.377 617.242 620.328 651.782 655.269 660.292 670.331 673.268 677.232 680.371 686.327 687.831 696.316 703.34 717.382 724.323 740.354 744.323 748.411 752.834 788.268 800.341 802.324 808.35 815.371 817.36 886.477 903.451 917.353 943.431 961.436 1028.39 1059.43 1082.44 1459.6 4 4 100 4 8 2 2 7 5 40 4 32 8 4 6 4 4 4 3 9 4 18 6 2 6 9 3 5 3 5 22 4 3 5 3 4 5 8 6 11 17 3 4 4 28 8 5 4 20 5 4 8 5 7 20 5 4 9 5 5 5 18 7 6 43 5 4 6 5 6 10 2 8 4 4 5 5 4 6 7 8 3 12 9 39 6 5 3 16 2 31 10 6 4 2 5 3 4 4 4 GRMZM2G113696_P01 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=2:209289645..209292956:-1; parent_transcript=GRMZM2G113696_T01; parent_gene=GRMZM2G113696 GRMZM2G144030_P01 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=7:163002247..163005888:-1; parent_transcript=GRMZM2G144030_T01; parent_gene=GRMZM2G144030 GRMZM2G113696_P02 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=2:209289645..209292956:-1; parent_transcript=GRMZM2G113696_T02; parent_gene=GRMZM2G113696 GRMZM2G113696_P03 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=2:209289645..209292956:-1; parent_transcript=GRMZM2G113696_T03; parent_gene=GRMZM2G113696 GRMZM2G144030_P02 P80639 Eukaryotic translation initiation factor 5A (eIF-5A)(eIF-4D) seq=translation; coord=7:163002247..163005888:-1; parent_transcript=GRMZM2G144030_T02; parent_gene=GRMZM2G144030 3.77488 -0.215707 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 1391 1391 1391 1385 1260 1129 793 569 383 229 133 87 51 29 15 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1364 1364 1364 1358 1233 1101 732 497 262 107 22 5 3 2 2 1 0 0 1 2 3 4 5 6 7 682 570 119 23 0 0 0 12 0 1 2 3 4 5 6 7 402 806 165 21 0 0 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3072 (charge 2) 1373.56 2 153.102 155.081 156.077 157.061 157.097 157.134 158.093 159.077 167.056 171.076 171.113 175.071 175.119 181.097 185.056 185.092 186.087 189.087 198.124 199.071 199.108 203.066 216.134 221.104 225.043 227.066 234.145 239.095 240.096 242.113 245.077 247.129 249.099 257.139 259.093 267.109 275.125 277.118 285.134 296.087 304.113 314.098 332.107 345.177 360.028 361.026 363.187 378.14 386.157 392.689 396.164 404.176 414.178 443.142 455.192 457.207 461.154 469.278 483.189 501.209 510.256 515.201 533.219 551.234 565.75 570.3 582.301 589.803 592.248 620.245 629.297 633.646 647.315 673.367 680.28 699.259 709.243 727.256 732.354 735.269 740.34 767.314 770.415 784.377 796.875 816.898 836.319 844.899 860.9 864.309 895.403 901.432 904.417 913.41 950.461 965.47 983.383 993.373 1011.38 1140.42 7 9 5 8 8 6 6 3 3 14 10 9 22 5 18 7 5 7 10 18 12 9 29 8 5 57 100 6 3 9 11 7 5 12 6 13 23 8 27 9 12 35 13 25 9 15 16 5 9 3 22 15 14 17 5 6 11 6 10 6 34 5 7 13 7 7 14 18 8 10 8 9 47 5 8 8 8 29 7 6 5 8 27 16 31 6 13 6 8 25 6 15 9 7 9 6 6 4 10 6 GRMZM2G700208_P01 NP_001130085 hypothetical protein LOC100191178 seq=translation; coord=10:33349087..33352992:-1; parent_transcript=GRMZM2G700208_T01; parent_gene=GRMZM2G700208 MGTNDRAVIS LVLLVCIASR SSLGAAETDV EQKRLSVPLM FVFGDSLVDV GNNNFLPPPA PRAASPYGID FHAGTAGAVS GRFTNGYNLA DLVARRLGFK MSPPAYLSLT PVSKFDLFTC RIGANYASGG SGILNTTGNG TLTLQKQITL FSKTQARMSW ARCKLRSMVS RSLFLVSAGG NDFSAFSEMG MGEQDAPAYI SSMVSTYVQH IDALYKLGAR RLGILDVPAI GCTPGSRVPM ANGGCNDAAN SMAQNFNRLL RLEVAKAVAS SMPGMKYSIA STYNFVTDLM NSHLVAGLRV VDRACCGSGK LNAAVMCAQP NTTYCSDRDD YMFWDMLHPT QATNERGVVA IFYGPQEYAD PINFAQLAAA TANDDDDINT AMTAGVYAAI 4.29316 -0.209422 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3354 3354 2818 2780 2431 2027 1723 1264 828 609 335 226 127 78 38 21 19 11 9 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3305 3305 2769 2731 2336 1884 1463 841 441 252 102 11 1 0 0 1 2 3 4 5 1734 1244 314 56 9 0 0 1 2 3 4 5 6 7 543 1894 750 147 20 1 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3075 (charge 2) 994.47 2 155.082 157.061 157.097 157.133 158.092 159.077 166.061 167.081 167.118 169.061 169.097 169.134 171.113 172.117 173.092 173.129 175.072 175.089 175.119 176.122 177.102 181.096 183.113 183.149 185.092 186.088 186.124 187.071 187.108 191.084 191.118 195.088 195.113 197.103 197.128 198.125 199.108 201.124 204.134 209.103 211.144 213.087 215.14 217.137 225.099 228.098 230.15 235.119 238.118 240.135 242.15 244.165 246.108 249.098 256.13 267.109 272.172 274.187 287.17 294.148 296.133 302.118 313.151 315.202 320.129 331.157 341.144 351.169 356.686 361.197 366.215 375.172 384.224 430.214 432.272 446.189 448.223 450.222 453.21 460.268 503.308 515.268 524.246 525.248 531.299 557.22 565.297 579.261 602.299 615.317 666.3 689.33 712.36 733.36 742.346 748.338 753.33 760.366 802.385 824.359 14 5 8 6 6 17 5 4 4 2 13 5 100 18 8 5 2 2 49 4 2 8 2 6 6 2 2 4 7 2 6 6 6 6 9 2 7 9 5 5 2 2 8 22 14 11 8 7 8 7 9 5 4 2 6 5 5 12 4 8 5 11 2 19 4 8 2 6 10 8 2 2 77 6 7 4 61 4 5 8 6 7 11 4 6 2 6 6 8 7 2 11 5 8 2 7 6 22 2 10 GRMZM2G141277_P01 NP_001148494 stem 28 kDa glycoprotein seq=translation; coord=8:109218692..109219673:-1; parent_transcript=GRMZM2G141277_T01; parent_gene=GRMZM2G141277 5.78774 -0.296807 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 7343 7343 7265 6821 6706 6162 4821 3938 2324 1344 514 320 168 97 37 17 9 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 7345 7345 7267 6823 6697 6131 4660 3410 1781 486 135 36 7 4 2 1 1 0 0 1 2 3 4 5 6 3094 3501 676 66 7 3 0 0 1 2 3 4 5 6 7 1523 4460 1146 183 28 4 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3076 (charge 2) 1259.63 2 152.057 155.082 157.061 157.097 158.093 159.077 164.082 167.081 169.097 169.134 171.077 171.113 173.093 175.072 175.12 181.094 181.111 183.076 183.112 185.092 187.071 187.145 189.087 194.129 195.113 197.127 198.087 199.072 199.107 201.124 207.113 209.093 212.104 214.084 216.097 218.15 222.123 225.098 226.155 235.082 240.134 242.114 244.165 251.102 253.093 258.145 260.197 268.13 270.108 272.171 276.155 279.099 283.141 294.181 297.158 311.099 312.19 315.129 343.235 347.12 358.143 361.245 369.176 371.23 382.212 398.146 401.673 408.141 416.158 421.208 440.286 458.297 487.224 491.715 501.222 525.231 532.239 534.261 537.321 543.27 545.199 550.249 562.227 567.326 569.33 587.341 631.333 647.265 665.282 673.29 703.321 715.431 784.326 785.342 800.378 802.336 844.471 915.401 1007.54 1122.56 10 9 7 2 4 8 4 3 11 3 8 15 4 9 22 16 22 3 2 3 3 9 6 3 7 3 3 2 25 7 6 9 3 4 12 3 3 7 14 10 20 7 9 12 100 10 19 2 4 8 4 3 3 13 2 4 3 3 4 3 3 9 2 8 3 26 3 3 15 2 12 56 2 3 3 9 3 4 3 8 25 3 8 12 12 8 8 8 9 9 13 8 23 11 21 8 9 2 9 11 GRMZM5G803275_P01 NP_001147154 RNA-binding protein 8A seq=translation; coord=10:88191606..88197105:1; parent_transcript=GRMZM5G803275_T01; parent_gene=GRMZM5G803275 MAAVMNADVE VVDFDLDDDD LMDEDAGPDP APAPTSRLRS TIAGDDAPRR TKGRGFREDP NSSAPRDSRF GAGGRADLDS LGGPGPIQSI EGWIVLVTGV HEEAQEDDLQ NAFQEFGQVK NLHLNLDRRT GFVKGYALIE YEKFEEAQAA IKELDGAELY EQKMSVDWAF SSGPAKRRFT RKRSPPRARS RTPPRRRH GRMZM5G817255_P03 NP_001150298 LOC100283928 seq=translation; coord=8:128698509..128701507:1; parent_transcript=GRMZM5G817255_T03; parent_gene=GRMZM5G817255 MAAAATNADV EVVDFDLDDD DLMDEDAGPD PAPPPASRLR STIAGDDAPR RTKGRGFRED PNSSATRDSR FGAGGRADLD SLGGPGPIQS IEGWIVLVTG VHEEAQEDDL QNAFQEFGQV KNLHLNLDRR TGFVKGYALI EYEKFEEAQA AIKELDGAEL YKQRMSVDWA FSSGPAKRRN TRKRSPPRAR SRTPPRRRH GRMZM5G817255_P02 NP_001150298 LOC100283928 seq=translation; coord=8:128698509..128701507:1; parent_transcript=GRMZM5G817255_T02; parent_gene=GRMZM5G817255 MAAAATNADV EVVDFDLDDD DLMDEDAGPD PAPPPASRLR STIAGDDAPR RTKGRGFRED PNSSATRDSR FGAGGRADLD SLGGPGPIQS IEGWIVLVTG VHEEAQEDDL QNAFQEFGQV KNLHLNLDRR TGFVKVTTKS SFKDPTQEKA LMFPQHVLNY LLCVTESKKS GDSKYYLGVC GSPDFDGGY 5.42989 -0.241329 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 5026 5026 5026 4895 4854 4467 4272 3849 3602 2637 1882 1088 611 334 163 95 67 45 15 13 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5005 5005 5005 4874 4832 4430 4198 3757 3444 2093 1250 488 91 1 0 0 1 2 3 4 5 2435 2257 298 44 2 0 0 1 2 3 4 5 6 7 1074 2454 1142 275 74 7 1 9 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3077 (charge 2) 1002.48 2 154.086 155.081 157.061 157.097 157.109 157.134 158.092 158.128 159.076 159.113 161.092 167.055 167.082 169.061 169.097 169.134 171.077 173.092 173.129 175.119 176.123 181.061 181.097 183.113 183.149 185.093 185.129 186.089 186.124 187.108 187.144 189.087 193.098 194.129 195.077 195.113 197.092 197.128 198.088 199.072 199.108 201.124 209.14 212.14 213.086 215.14 217.082 226.155 229.118 231.098 232.14 237.135 240.135 242.15 244.165 255.145 256.167 259.093 268.167 269.125 272.172 284.16 288.083 297.121 299.062 302.171 306.158 326.182 336.173 343.208 355.2 361.184 362.187 377.231 383.195 400.701 415.036 431.273 453.214 458.235 470.263 543.326 556.237 560.318 573.262 575.27 630.284 632.3 659.377 687.307 689.36 701.32 703.331 714.393 730.414 758.338 800.399 814.409 818.402 905.431 3 15 3 8 3 29 19 6 12 16 44 23 7 4 29 10 41 13 9 100 3 7 6 9 7 9 22 8 9 13 15 61 8 4 8 8 3 16 7 9 19 11 9 11 12 11 12 35 6 6 18 8 10 22 41 60 8 3 3 8 27 41 7 3 41 4 9 9 6 73 3 19 3 3 3 7 4 15 12 43 3 3 3 12 29 3 60 3 4 10 17 83 8 8 3 16 3 23 14 17 GRMZM2G000280_P01 NP_001131404 hypothetical protein LOC100192732 seq=translation; coord=5:204209307..204287307:-1; parent_transcript=GRMZM2G000280_T01; parent_gene=GRMZM2G000280 MASPTAGDAP LASPSPSPAA DATDAALAAA AAVPDPDISF GFLRPELGKE KLVGTVGFHE RHVFLCYKGP EVWPSHVEAA HSDRLPRLLA AAIKARKPNL KKTIKFTICE GEDGTESSNG DVLIFPDMIR YKGLTHFDVD NFVEEVFVKD IDWLPGSPEP ISGSYVFVCS HQRRDIRCGI CGPALIKRFK EEINGLGLDG QVAVSACSHV GGHKYAGNVI IFSSDAKGEV VGHWYGYVVP DDVPVLLHKH IGQGEVVDRL WRGQMGLSEE QQKQALELRS MTNGGKESLE ETETDGASCN PAATGGCCQG NGGFTRALEQ QKQALELRSM TNGGKESLEE TETDGASCNP AATGGCCQGN GSFTCCHPDL PKEKRDKSIA IEQNPKSCEE NGKEGGGAGS KKGNSKTCPM PTWFETWERA DTYAALAVVA AAAAVFISFR IYKNLN 7.42758 -0.401491 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 6438 6438 6262 6107 5854 5395 4978 4516 4109 2216 1434 575 297 86 50 7 2 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6449 6449 6273 6114 5835 5318 4809 4282 3952 1410 1035 48 9 1 0 0 1 2 3 4 3186 2740 495 29 0 0 1 2 3 4 5 6 7 982 3900 1359 189 18 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3079 (charge 2) 1109.57 2 152.057 153.065 154.05 155.081 155.118 156.077 157.061 157.097 157.108 158.092 159.077 166.06 169.06 169.097 169.134 171.076 171.113 173.092 175.072 175.119 176.122 178.134 181.061 181.097 183.113 185.055 185.092 185.165 186.088 186.123 187.072 187.108 187.144 189.087 194.129 195.113 197.128 198.124 199.071 199.107 199.181 201.123 203.066 206.129 212.103 216.135 217.081 219.08 221.103 223.155 226.154 227.1 234.145 240.134 241.081 244.165 246.181 251.15 258.146 267.109 273.119 275.125 285.133 290.146 303.176 308.17 314.098 323.171 345.177 378.14 386.16 389.215 392.69 396.162 404.169 408.187 414.273 426.198 448.211 455.188 477.243 482.283 488.282 498.267 510.263 517.265 526.308 565.751 598.208 626.32 647.314 668.355 674.348 727.354 822.43 842.402 859.427 861.436 896.361 972.505 3 2 2 8 3 3 10 10 2 11 8 3 3 6 3 9 8 12 14 80 3 19 3 5 3 3 8 3 6 3 6 7 2 6 3 3 6 3 8 9 3 6 7 3 6 11 8 5 2 100 12 4 31 7 3 10 2 32 2 7 6 6 9 2 2 2 3 2 8 3 2 2 6 2 2 2 3 2 2 2 3 2 6 3 8 2 6 3 2 2 9 2 3 2 3 2 47 2 2 14 GRMZM2G010196_P01 NP_001131876 hypothetical protein LOC100193255 seq=translation; coord=1:54598727..54601782:1; parent_transcript=GRMZM2G010196_T01; parent_gene=GRMZM2G010196 MVTPATFSLR PSAPPAPPRA GLPRARACFA PAIRTSPSVA FSYQPRRFSG IRRAVAVDSE QGSPESPEQE KKPKTYYFLV ANAKFMLDEE EHFQEQLAEK LRNYAERDKE QDFWLVVEPK FLDRFPNITK RLKRPAVALV STDGNWITFM KLRLDRVLQD QFDAESVEEA LASNPVELKF EKPEKWTAPY PKYGFGWWEP FLPPKFSNGT A 5.5569 -0.271068 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 11421 11421 11163 10103 9183 7180 5546 4049 2775 1833 1237 729 456 250 91 47 22 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11421 11421 11163 10103 9087 6990 5002 3230 1910 1151 771 351 250 23 4 1 0 0 1 2 3 4 5 6 7 3741 4929 2086 583 71 16 2 0 0 1 2 3 4 5 6 7 2441 5745 2524 592 90 27 4 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3080 (charge 3) 2240.11 3 155.082 157.097 159.077 167.083 169.061 169.097 171.077 171.113 172.117 175.071 175.12 183.15 185.056 186.087 187.109 189.087 197.128 199.071 199.108 203.066 215.103 217.083 223.072 226.155 240.098 242.15 244.166 251.15 255.109 257.196 268.131 273.12 275.125 286.14 296.124 314.134 327.13 332.11 345.143 355.162 357.249 372.262 384.145 386.24 394.176 416.205 425.262 460.168 484.205 492.279 500.357 511.254 517.191 535.796 539.272 553.224 571.239 612.295 618.026 638.347 640.344 644.684 648.845 650.35 653.668 668.297 677.345 683.347 692.376 699.336 712.347 716.34 719.364 721.37 740.402 746.401 748.415 776.391 797.318 827.428 893.438 925.429 942.444 950.452 983.563 985.55 1036.52 1053.52 1055.53 1070.59 1160.57 1199.61 1296.68 1298.69 1383.71 1441.72 1541.69 1659.44 2 2 2 2 2 2 3 100 6 2 3 4 2 4 2 2 9 4 3 5 4 5 2 24 12 57 49 10 3 5 2 3 5 18 5 16 3 2 3 11 13 18 3 3 5 3 3 4 12 6 9 3 3 6 5 3 5 11 3 5 4 13 25 18 4 3 10 4 10 4 3 4 4 6 18 4 43 12 4 10 9 13 5 14 24 5 12 22 4 19 4 4 44 10 9 13 4 3 GRMZM2G116292_P01 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31201315..31206122:-1; parent_transcript=GRMZM2G116292_T01; parent_gene=GRMZM2G116292 GRMZM2G116292_P02 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T02; parent_gene=GRMZM2G116292 GRMZM2G116292_P03 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T03; parent_gene=GRMZM2G116292 GRMZM2G116292_P04 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31074889:-1; parent_transcript=GRMZM2G116292_T04; parent_gene=GRMZM2G116292 GRMZM2G116292_P05 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=1:31068644..31206122:-1; parent_transcript=GRMZM2G116292_T05; parent_gene=GRMZM2G116292 GRMZM2G047727_P01 B6SHW9 Putative uncharacterized proteinUbiquitin fusion protein ; seq=translation; coord=2:165103157..165107176:-1; parent_transcript=GRMZM2G047727_T01; parent_gene=GRMZM2G047727 GRMZM2G409726_P01 NP_001105376 polyubiquitin seq=translation; coord=5:82443403..82446794:-1; parent_transcript=GRMZM2G409726_T01; parent_gene=GRMZM2G409726 GRMZM2G409726_P02 NP_001105376 polyubiquitin seq=translation; coord=5:82443815..82446714:-1; parent_transcript=GRMZM2G409726_T02; parent_gene=GRMZM2G409726 GRMZM2G409726_P03 NP_001105376 polyubiquitin seq=translation; coord=5:82443856..82446714:-1; parent_transcript=GRMZM2G409726_T03; parent_gene=GRMZM2G409726 GRMZM2G006293_P01 NP_001150700 40S ribosomal protein S27a seq=translation; coord=1:191263450..191264705:-1; parent_transcript=GRMZM2G006293_T01; parent_gene=GRMZM2G006293 GRMZM2G118637_P01 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236857988..236860949:1; parent_transcript=GRMZM2G118637_T01; parent_gene=GRMZM2G118637 GRMZM2G118637_P02 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859470..236861173:1; parent_transcript=GRMZM2G118637_T02; parent_gene=GRMZM2G118637 GRMZM2G118637_P03 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859530..236860675:1; parent_transcript=GRMZM2G118637_T03; parent_gene=GRMZM2G118637 GRMZM2G118637_P04 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859530..236860669:1; parent_transcript=GRMZM2G118637_T04; parent_gene=GRMZM2G118637 GRMZM2G118637_P05 NP_001148453 polyubiquitin containing 7 ubiquitin monomers seq=translation; coord=4:236859647..236860633:1; parent_transcript=GRMZM2G118637_T05; parent_gene=GRMZM2G118637 GRMZM2G419891_P01 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883718:1; parent_transcript=GRMZM2G419891_T01; parent_gene=GRMZM2G419891 GRMZM2G419891_P02 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883699:1; parent_transcript=GRMZM2G419891_T02; parent_gene=GRMZM2G419891 GRMZM2G419891_P03 NP_001105376 polyubiquitin seq=translation; coord=4:236879357..236883232:1; parent_transcript=GRMZM2G419891_T03; parent_gene=GRMZM2G419891 GRMZM2G419891_P04 NP_001105376 polyubiquitin seq=translation; coord=4:236879381..236883699:1; parent_transcript=GRMZM2G419891_T04; parent_gene=GRMZM2G419891 GRMZM2G419891_P05 NP_001105376 polyubiquitin seq=translation; coord=4:236881289..236883469:1; parent_transcript=GRMZM2G419891_T05; parent_gene=GRMZM2G419891 GRMZM2G431821_P01 P27923 Ubiquitin-40S ribosomal protein S27a Precursor [Contains Ubiquitin;40S ribosomal protein S27a] seq=translation; coord=8:171603815..171604536:-1; parent_transcript=GRMZM2G431821_T01; parent_gene=GRMZM2G431821 GRMZM2G047732_P01 NP_001105472 40S ribosomal protein S27a seq=translation; coord=8:39126474..39127702:1; parent_transcript=GRMZM2G047732_T01; parent_gene=GRMZM2G047732 GRMZM2G047732_P02 NP_001105472 40S ribosomal protein S27a seq=translation; coord=8:39126804..39127596:1; parent_transcript=GRMZM2G047732_T02; parent_gene=GRMZM2G047732 GRMZM2G357296_P01 B6SIL9 40S ribosomal protein S27a seq=translation; coord=6:125241154..125242106:-1; parent_transcript=GRMZM2G357296_T01; parent_gene=GRMZM2G357296 GRMZM2G116689_P01 NP_001148606 LOC100282222 seq=translation; coord=7:116376688..116380988:1; parent_transcript=GRMZM2G116689_T01; parent_gene=GRMZM2G116689 GRMZM2G116689_P03 NP_001148606 LOC100282222 seq=translation; coord=7:116376702..116380916:1; parent_transcript=GRMZM2G116689_T03; parent_gene=GRMZM2G116689 GRMZM2G005461_P01 seq=translation; coord=9:19289416..19290344:-1; parent_transcript=GRMZM2G005461_T01; parent_gene=GRMZM2G005461 GRMZM2G406643_P01 seq=translation; coord=7:150270916..150273417:1; parent_transcript=GRMZM2G406643_T01; parent_gene=GRMZM2G406643 5.36986 -0.275378 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 9619 9619 9538 8891 8188 5697 4598 2374 1324 605 373 216 105 47 26 12 7 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9609 9609 9528 8847 8008 5455 3742 1543 468 123 25 2 1 1 0 0 1 2 3 4 5 6 4866 3636 967 138 12 224 0 0 1 2 3 4 5 6 7 1858 6070 1472 186 30 0 4 223 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3082 (charge 2) 1523.79 2 157.133 158.093 159.077 168.066 169.097 175.119 185.129 187.071 187.108 197.129 199.108 204.136 209.092 216.1 218.15 226.118 227.103 230.115 240.135 242.15 244.129 251.149 254.151 256.13 258.145 301.128 310.139 337.151 341.146 355.163 357.178 369.254 373.175 413.222 428.252 431.236 438.194 453.702 456.249 459.259 462.269 466.198 483.22 515.281 525.262 532.22 539.269 541.225 543.277 546.264 566.26 584.273 588.257 596.305 614.317 626.316 636.301 643.318 653.326 661.784 667.377 671.335 680.341 682.352 723.345 724.344 740.369 742.373 757.425 784.419 853.453 910.472 912.483 986.435 1021.5 1039.52 1089.48 1167.61 1282.64 8 2 1 1 1 13 4 1 1 1 2 2 2 1 2 11 2 1 2 12 9 1 2 1 2 2 2 4 2 6 7 1 2 2 4 34 1 1 1 1 1 1 2 4 1 1 2 2 5 5 4 4 1 5 7 2 2 8 4 1 2 8 7 1 14 4 100 6 4 5 7 25 2 1 2 14 1 4 6 GRMZM2G001327_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695861:-1; parent_transcript=GRMZM2G001327_T01; parent_gene=GRMZM2G001327 GRMZM2G001327_P03 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695738:-1; parent_transcript=GRMZM2G001327_T03; parent_gene=GRMZM2G001327 GRMZM2G154218_P01 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515921..136519080:-1; parent_transcript=GRMZM2G154218_T01; parent_gene=GRMZM2G154218 GRMZM2G154218_P02 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515968..136519018:-1; parent_transcript=GRMZM2G154218_T02; parent_gene=GRMZM2G154218 GRMZM2G149768_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136568621..136572271:-1; parent_transcript=GRMZM2G149768_T01; parent_gene=GRMZM2G149768 GRMZM2G110509_P01 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T01; parent_gene=GRMZM2G110509 GRMZM2G110509_P02 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T02; parent_gene=GRMZM2G110509 GRMZM2G110509_P03 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607316..84610225:1; parent_transcript=GRMZM2G110509_T03; parent_gene=GRMZM2G110509 4.26897 -0.230755 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 6965 6965 6965 6463 6158 4255 3479 2316 1407 899 564 290 195 102 63 26 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6983 6983 6983 6480 6135 4025 2877 1646 585 267 43 11 3 1 0 0 1 2 3 4 5 3452 2737 671 111 23 0 0 1 2 3 4 5 6 7 1081 4091 1384 350 49 10 0 29 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3084 (charge 2) 1335.65 2 152.056 155.082 157.097 159.077 167.056 167.081 168.056 169.097 171.076 171.113 172.108 173.092 175.119 177.102 178.106 185.092 187.107 189.087 198.124 199.108 201.086 205.097 213.088 216.134 218.15 225.043 227.102 239.095 242.112 244.166 259.144 272.124 281.125 283.14 285.01 297.192 299.062 301.187 304.165 305.168 315.203 324.987 341.019 342.994 355.069 359.029 361.026 375.204 382.171 399.15 414.238 416.261 418.994 428.179 430.23 446.188 481.231 508.088 511.285 514.221 516.754 518.263 532.234 545.257 560.232 568.309 569.316 579.619 603.27 608.378 618.316 647.266 655.341 666.821 673.353 701.279 705.428 718.301 733.348 752.397 753.402 760.389 809.413 811.413 817.362 834.398 848.401 874.43 892.412 920.44 944.439 949.425 961.456 1015.47 1021.46 1032.49 1034.5 1092.54 1131.56 1179.58 3 13 3 7 32 3 4 10 1 6 1 5 9 45 6 3 1 1 4 1 3 50 2 4 11 20 1 20 5 6 10 3 4 3 13 1 12 3 19 4 44 1 4 6 13 100 20 3 1 1 5 4 6 3 7 4 1 2 9 1 3 1 3 5 4 6 3 2 3 1 4 11 1 5 3 2 4 13 3 6 6 6 12 4 6 2 2 5 3 3 2 2 12 3 4 14 4 1 3 2 GRMZM2G018484_P01 NP_001168313 hypothetical protein LOC100382079 seq=translation; coord=5:213279291..213281471:1; parent_transcript=GRMZM2G018484_T01; parent_gene=GRMZM2G018484 MTTPSTAPAP LASLLRVSAA AVPVARRRPK SPAAAAAARW EGGGGRRRCR AAVVEEAGVL LPKEGEGEGE GEEAPDAAAG RYDWREEWYP LYLAKEVPDD AALPLTVFDR QLVLWRDAHG VLRCHEDRCP HRLAKLSEGQ IVDGKLECLY HGWQFDGDGK CVKIPQLPEG AKIPRSACAR NYEVRDSQGV VWVWMSDANP PDEGKLPWFE PYARAGFTDL STVHELPYDH SILLENLMDP AHVPISHDRT DWTAKREDAQ PLFFDVTERT PRGFAGYWGR TGTPHLRNLL RFEAPCVLTN TLEFADKDGR EQCFSAHFLC RPAGQGKSML LVRFGSTLRS PLAKVLPSWY FHQNACKVFE QDMGFLSSQN EVLLREKLPT RELYLNLRSS DTWVAEYRKW MDRAGHGMPY YFGHSTLSPP PVPAVVEQAP AGAVAGISAS FPAKGGVGMV HAPNPTNRYF RHVVHCKGCR ATVKKYTSLK TVFAALAAAA LSAAILAATR QWKAVLVAAS AVLAAASYAC DAVLSLITTN FIRTHRRL 5.6775 -0.306892 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 2502 2502 2497 2258 2190 2056 1815 1675 1184 814 357 183 114 60 24 7 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2492 2492 2487 2248 2175 2031 1782 1619 896 576 159 52 26 1 0 0 1 2 3 4 1098 1140 232 33 0 0 1 2 3 4 5 6 7 680 1371 379 66 4 2 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3086 (charge 2) 1358.58 2 152.034 152.057 155.081 156.077 157.061 157.109 158.092 159.076 161.092 167.081 169.061 169.098 170.045 171.076 171.113 172.107 173.092 175.071 175.119 181.061 184.072 185.092 186.088 187.072 187.089 188.075 189.087 195.089 198.087 199.109 201.087 213.087 216.098 217.082 224.102 226.119 229.131 230.114 232.141 241.082 244.093 256.13 257.124 259.092 267.11 270.108 272.171 284.124 286.15 288.119 298.103 300.166 303.177 306.16 309.119 311.171 316.114 319.172 329.17 337.115 341.147 355.124 374.214 398.202 414.246 438.159 445.252 484.171 491.255 560.277 613.214 634.331 640.312 657.332 659.344 664.298 671.31 682.292 728.369 730.382 737.343 775.426 810.338 827.363 839.406 857.412 859.419 861.398 893.372 895.378 924.453 930.446 948.429 968.435 986.448 1001.5 1012.41 1035.46 1043.47 1115.55 4 9 9 2 8 3 11 26 11 3 39 4 9 2 18 3 3 10 47 9 3 4 20 97 3 3 4 7 4 2 12 12 4 3 3 8 4 3 13 14 15 3 9 7 8 16 3 11 3 3 35 3 15 8 4 3 24 7 7 7 3 19 11 3 10 3 71 3 2 11 2 4 7 100 28 4 4 3 48 17 3 2 2 4 4 33 11 2 2 3 2 10 4 2 8 3 14 10 21 3 GRMZM2G156861_P02 NP_001105003 lipoxygenase seq=translation; coord=3:168695539..168699190:1; parent_transcript=GRMZM2G156861_T02; parent_gene=GRMZM2G156861 GRMZM2G156861_P03 NP_001105003 lipoxygenase seq=translation; coord=3:168695539..168839001:1; parent_transcript=GRMZM2G156861_T03; parent_gene=GRMZM2G156861 GRMZM2G156861_P01 NP_001105003 lipoxygenase seq=translation; coord=3:168835321..168839001:1; parent_transcript=GRMZM2G156861_T01; parent_gene=GRMZM2G156861 GRMZM2G109130_P01 NP_001105515 lipoxygenase seq=translation; coord=1:264200949..264205758:1; parent_transcript=GRMZM2G109130_T01; parent_gene=GRMZM2G109130 GRMZM2G109130_P02 NP_001105515 lipoxygenase seq=translation; coord=1:264202964..264205732:1; parent_transcript=GRMZM2G109130_T02; parent_gene=GRMZM2G109130 6.92845 -0.337973 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 5299 5299 5299 5299 5000 4822 4347 3907 3432 2110 1435 761 436 184 104 34 20 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5322 5322 5322 5322 5023 4837 4331 3836 3297 1755 930 276 50 29 1 0 0 1 2 3 4 5 6 7 2189 2079 708 258 56 12 0 20 0 1 2 3 4 5 6 7 1162 2461 1220 344 90 23 0 22 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3087 (charge 3) 1927.86 3 152.057 155.082 157.085 157.097 157.133 158.093 175.119 181.061 183.113 185.079 199.072 200.139 201.125 208.109 212.104 214.106 218.15 226.155 228.134 233.128 235.12 240.098 244.092 258.109 260.197 267.109 268.093 286.103 290.147 314.16 329.182 344.672 361.245 384.235 391.676 400.188 410.177 418.204 421.727 427.206 434.72 443.235 445.237 470.254 472.715 483.243 491.757 499.772 540.285 546.262 556.251 572.238 596.348 599.327 612.268 625.363 645.31 654.289 667.283 668.287 671.311 674.355 684.308 688.338 711.373 717.373 724.373 726.389 745.376 765.384 771.371 791.372 795.395 799.37 808.404 816.399 826.403 842.453 847.365 868.43 885.457 899.427 909.439 923.47 927.421 929.464 939.505 944.427 946.431 956.456 965.48 967.433 982.506 984.448 1001.44 1003.46 1024.51 1026.53 1111.6 1161.57 19 11 5 5 5 6 81 19 5 6 20 21 5 6 5 6 18 17 6 20 20 15 6 14 11 6 16 28 20 4 9 14 4 5 5 6 5 13 27 25 10 22 10 83 14 22 55 5 11 18 33 4 5 4 10 11 29 10 25 5 100 5 40 22 13 10 18 15 12 10 14 5 5 39 5 6 20 40 39 24 33 17 6 6 20 15 39 38 10 10 24 14 30 33 52 10 5 5 5 4 GRMZM2G083841_P01 P04711 Phosphoenolpyruvate carboxylase 1 (PEPCase 1)(PEPC 1)(EC 4.1.1.31) seq=translation; coord=9:61296279..61301686:1; parent_transcript=GRMZM2G083841_T01; parent_gene=GRMZM2G083841 5.14939 -0.239507 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5707 5707 5576 5345 5073 4717 4350 4061 2646 2332 1259 834 478 308 173 116 32 23 14 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5713 5713 5582 5351 5052 4664 4276 3885 2412 1616 598 108 20 1 0 0 1 2 3 4 5 6 7 1843 2709 954 180 28 1 1 4 0 1 2 3 4 5 6 7 1021 3546 940 176 20 5 8 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3089 (charge 2) 1328.64 2 157.108 158.092 159.076 167.081 168.113 169.098 171.113 174.07 175.119 176.123 181.097 183.124 185.092 198.124 200.151 208.107 211.119 226.119 228.146 244.165 245.077 258.145 277.656 289.133 297.156 306.159 308.158 311.183 324.119 328.209 339.177 341.146 342.148 356.204 388.172 400.166 417.192 435.202 437.202 442.196 453.161 470.189 493.25 510.276 511.279 515.191 519.269 526.309 533.201 537.281 538.279 542.25 550.228 554.305 634.293 642.809 647.8 656.31 665.824 715.307 734.393 741.297 751.419 758.315 762.383 775.34 777.338 779.42 792.364 797.433 805.431 822.46 833.394 850.417 860.385 873.429 877.413 878.415 894.442 896.448 929.414 956.409 973.441 975.448 979.467 995.494 1006.46 1023.49 1025.5 1084.48 1085.47 1101.5 1126.53 1128.53 1138.5 1154.53 1156.52 1172.54 1174.54 1269.59 18 21 2 3 6 5 5 7 68 4 4 30 2 3 4 4 28 12 12 3 6 2 3 15 5 100 2 7 4 8 13 20 3 20 4 4 5 66 3 3 3 7 3 9 2 2 2 11 4 7 3 3 3 32 6 18 3 55 77 3 2 3 4 6 3 19 3 9 2 3 4 8 4 5 5 2 19 10 64 7 5 3 24 5 4 10 7 28 4 7 3 2 7 3 2 5 2 14 3 4 GRMZM2G079538_P01 NP_001147014 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=10:110621503..110626726:1; parent_transcript=GRMZM2G079538_T01; parent_gene=GRMZM2G079538 MHMSEATTVN FQVVTLTSPV FSILFQLLTI IHVFFSALVS ATSECSNLPR CYYLPNPSPY QVWSRSFASD NGDKFEAVVP FMGESVTDGT LANFLKKPGD RVEADEPIAQ IETDKVTIDV ASPEAGVIEK LIASEGDTVT PGTKVAIISK SAQPAETHVA PSEEATSKES SPPKVEDKPK VEEKAPKVDP PKMQAPKPTA PSKTSPSEPQ LPPKERERRV PMPRLRKRIA NRLKDSQNTF AMLSTFNEVD MTNLMKLRSD YKDEFVTKHG VKLGLMSCFV KAAVSALQNQ PIVNAVIDGD DIIYRDYVDI SVAVGTSKGL VVPVIRDADT MNFADIEKGI NNLAKKATEG ALSIDDMAGG TFTISNGGVY GSLLSTPIIN PPQSSILGMH SIVQRPVVVN GDILARPMMY LALTYDHRLI DGREAVFFLR RIKDVVEDPR RLLLDI GRMZM2G079538_P02 NP_001147014 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=10:110620918..110626719:1; parent_transcript=GRMZM2G079538_T02; parent_gene=GRMZM2G079538 MASRVASGLL RRRAGATLGL LRSYAHVRSY NSQLSALVSA TSECSNLPRR CYYLPNPSPY QVWSRSFASD NGDKFEAVVP FMGESVTDGT LANFLKKPGD RVEADEPIAQ IETDKVTIDV ASPEAGVIEK LIASEGDTVT PGTKVAIISK SAQPAETHVA PSEEATSKES SPPKVEDKPK VEEKAPKVDP PKMQAPKPTA PSKTSPSEPQ LPPKERERRV PMPRLRKRIA NRLKDSQNTF AMLSTFNEVD MTNLMKLRSD YKDEFVTKHG VKLGLMSCFV KAAVSALQNQ PIVNAVIDGD DIIYRDYVDI SVAVGTSKGL VVPVIRDADT MNFADIEKGI NNLAKKATEG ALSIDDMAGG TFTISNGGVY GSLLSTPIIN PPQSSILGMH SIVQRPVVVN GDILARPMMY LALTYDHRLI DGREAVFFLR RIKDVVEDPR RLLLDI GRMZM2G079538_P03 NP_001147014 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=10:110621503..110626716:1; parent_transcript=GRMZM2G079538_T03; parent_gene=GRMZM2G079538 MASRVASGLL RRRAGATLGL LRSYAHVRSY NSQLSALVSA TSECSNLPRC YYLPNPSPYQ VWSRSFASDN GDKFEAVVPF MGESVTDGTL ANFLKKPGDR VEADEPIAQI ETDKVTIDVA SPEAGVIEKL IASEGDTVTP GTKVAIISKS AQPAETHVAP SEEATSKESS PPKVEDKPKV EEKAPKVDPP KMQAPKPTAP SKTSPSEPQL PPKERERRVP MPRLRKRIAN RLKDSQNTFA MLSTFNEVDM TNLMKLRSDY KDEFVTKHGV KLGLMSCFVK AAVSALQNQP IVNAVIDGDD IIYRDYVDIS VAVGTSKGLV VPVIRDADTM NFADIEKGIN NLAKKATEGA LSIDDMAGGT FTISNGGVYG SLLSTPIINP PQSSILGMHS IVQRPVVVNG DILARPMMYL ALTYDHRLID GREAVFFLRR IKDVVEDPRR LLLDI GRMZM5G807639_P03 NP_001150636 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=2:66624116..66641809:-1; parent_transcript=GRMZM5G807639_T03; parent_gene=GRMZM5G807639 MASRVASGLL RRRAVATLGL LRSHTHVRNY SSQLSALIPA TSQCSNLTRR RYYLPNPSLY QVWSRSFASD SGDKFEAVVP FMGESVTDGT LANFLKKPGD RVEADEPIAQ IETDKVTIDV ASPEAGVIEK LIASEGDTVT PGTKVAIISK SAQPAETHVA PSEEATSKGS SPPKVEEKSR VEEKAPKVEP PKMQAPKPTA PLKTSPSEPQ LPPKERERRV PMPRLRKRIA NRLKDSQNTF AMLSTFNEVD MTNLMKLRSD YKDEFVTKHG VKLGLMSCFV KAAVSALQNQ PIVNAVIDGD DIIYRDYVDV SVAVGTSKGL VVPVIRDADT MNFADIEKGI NNLAKKANEG ALSIDDMAGG TFTISNGGVY GSLLSTPIIN PPQSSILGMH SIVQRPVVVN GDILARPMMF LALTYDHRLI DGREAVFFLR RIKDVVEDPR RLLLDI GRMZM5G807639_P02 NP_001150636 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=2:66624116..66641809:-1; parent_transcript=GRMZM5G807639_T02; parent_gene=GRMZM5G807639 MASRVASGLL RRRAVATLGL LRSHTHVRNY SSQLSALIPA TSQCSNLTRR YYLPNPSLYQ VWSRSFASDS GDKFEAVVPF MGESVTDGTL ANFLKKPGDR VEADEPIAQI ETDKVTIDVA SPEAGVIEKL IASEGDTVTP GTKVAIISKS AQPAETHVAP SEEATSKGSS PPKVEEKSRV EEKAPKVEPP KMQAPKPTAP LKTSPSEPQL PPKERERRVP MPRLRKRIAN RLKDSQNTFA MLSTFNEVDM TNLMKLRSDY KDEFVTKHGV KLGLMSCFVR LLFLHFKTSQ LLMLSLMAMT SYTETT 4.70186 -0.229359 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 8390 8390 8378 6522 5798 4687 3956 3023 2081 1255 688 392 227 127 68 31 18 14 8 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8391 8391 8379 6523 5698 4422 3288 2216 1297 484 188 55 8 1 0 0 1 2 3 4 5 6 7 4958 2627 719 75 11 0 0 10 0 1 2 3 4 5 6 7 1355 4856 1767 370 30 11 1 10 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3090 (charge 2) 1839.87 2 159.076 163.061 169.097 171.076 173.093 175.119 176.103 185.093 189.087 200.102 204.087 206.718 216.135 224.534 226.118 234.145 237.133 239.113 242.113 284.123 287.135 290.16 294.372 296.123 298.139 302.135 308.172 314.134 325.112 335.192 338.182 367.162 371.198 381.178 384.186 388.219 399.186 406.229 409.22 443.177 444.768 453.662 455.222 490.243 508.251 514.217 518.235 536.247 538.264 557.255 566.255 574.763 578.292 585.256 597.246 607.318 615.265 635.312 664.311 668.289 681.56 685.313 686.307 688.336 706.35 719.184 722.345 746.348 751.347 759.349 768.875 777.375 794.379 804.363 817.386 822.372 824.393 830.39 833.396 848.4 850.409 877.414 883.422 893.449 901.423 903.426 911.44 919.437 922.434 964.469 992.484 1018.51 1155.56 1257.61 1302.6 1385.64 1401.72 1456.69 1505.67 1554.75 34 3 21 3 2 3 10 3 2 6 3 2 14 2 2 47 4 14 2 5 19 5 2 5 36 2 3 6 14 36 20 4 3 16 3 3 16 32 6 18 3 3 3 4 15 23 4 31 6 4 5 4 4 5 4 11 4 29 4 6 11 4 5 5 34 5 4 5 11 4 3 34 6 13 10 15 6 19 15 88 5 4 4 6 11 6 4 100 12 4 22 41 28 16 4 10 11 5 4 31 GRMZM2G129513_P01 P15719 Malate dehydrogenase [NADP], chloroplastic Precursor (EC 1.1.1.82)(NADP-MDH) seq=translation; coord=1:203170067..203174226:-1; parent_transcript=GRMZM2G129513_T01; parent_gene=GRMZM2G129513 MGLSTVYSPA GPRLVPAPLG RCRSAQPRRP RRAPLATVRC SVDATKQAQD GVATAVATEA PASRKECFGV FCTTYDLKAE DKTKSWKKLV NVAVSGAAGM ISNHLLFKLA SGEVFGQDQP IALKLLGSER SFQALEGVAM ELEDSLYPLL REVSIGIDPY VVFQDVDWAL LIGAKPRGPG MERAALLDIN GQIFADQGKA LNAVASRNAK VLVVGNPCNT NALICLKNAP NIPAKNFHAL TRLDENRAKC QLALKAGVFY DKVSNVTIWG NHSTTQVPDF LNAKIDGRPV KEVIKDTKWL EEEFTLTVQK RGGVLIQKWG RSSAASTAVS IVDAIRSLVT PTPEGDWFST GVYTTGNPYG IAEDIVFSMP CRSKGDGDYE LASDVLMDDF LWERIKKSEA ELLAEKKCVA HLTGEGNAFC DLPEDTMLPG EV 4.61059 -0.236441 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2593 2593 2577 2438 2338 2154 2011 1403 1020 672 422 225 124 77 49 23 10 3 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2596 2596 2580 2436 2331 2081 1734 1208 690 218 84 43 9 1 0 0 1 2 3 4 5 1170 973 426 23 5 0 0 1 2 3 4 5 6 7 486 1204 690 176 34 5 2 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3091 (charge 2) 824.462 2 155.081 155.118 157.109 157.134 158.093 158.136 159.079 159.095 166.062 167.081 169.061 169.097 169.134 170.101 171.077 171.113 172.108 173.093 173.129 175.119 176.121 181.096 181.11 183.077 183.113 183.149 184.108 185.129 185.166 186.087 187.09 187.108 194.129 195.113 197.128 200.14 201.124 204.135 209.104 212.103 213.106 215.139 218.15 219.113 221.091 224.103 226.154 228.135 238.119 240.135 244.166 249.087 254.152 255.145 258.147 269.163 272.172 280.166 283.111 290.145 293.125 297.192 301.187 304.693 308.16 311.681 315.203 317.208 320.195 323.207 325.187 329.192 341.219 365.22 368.232 375.766 378.215 387.2 396.224 404.223 414.271 422.237 426.235 428.287 473.247 493.284 500.282 515.292 517.323 525.304 528.277 542.331 586.332 608.376 628.377 639.382 657.367 680.358 690.36 720.404 8 2 3 12 100 2 3 8 2 3 2 25 2 2 2 3 2 6 11 33 2 2 1 3 6 3 4 3 2 19 2 8 1 3 6 7 4 3 2 56 6 5 13 3 6 2 5 3 2 2 24 2 2 5 2 2 4 3 3 1 3 8 15 4 3 2 80 2 14 2 13 3 21 2 2 3 2 6 1 3 19 2 2 9 2 1 2 2 3 3 2 6 3 2 2 12 5 2 5 3 GRMZM2G046804_P01 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36880092..36884475:-1; parent_transcript=GRMZM2G046804_T01; parent_gene=GRMZM2G046804 GRMZM2G046804_P02 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881035..36884475:-1; parent_transcript=GRMZM2G046804_T02; parent_gene=GRMZM2G046804 GRMZM2G046804_P04 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T04; parent_gene=GRMZM2G046804 GRMZM2G046804_P05 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T05; parent_gene=GRMZM2G046804 GRMZM2G046804_P06 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T06; parent_gene=GRMZM2G046804 GRMZM2G046804_P07 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881117..36884877:-1; parent_transcript=GRMZM2G046804_T07; parent_gene=GRMZM2G046804 GRMZM2G046804_P08 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881357..36884877:-1; parent_transcript=GRMZM2G046804_T08; parent_gene=GRMZM2G046804 GRMZM2G046804_P03 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884877:-1; parent_transcript=GRMZM2G046804_T03; parent_gene=GRMZM2G046804 5.73728 -0.29422 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 6377 6377 6377 6262 5951 5530 5129 4591 2827 1911 823 364 193 88 52 33 13 5 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 6407 6407 6407 6292 5981 5527 5069 4410 2177 1359 234 7 1 0 0 1 2 3 4 5 3300 2707 360 38 4 0 0 1 2 3 4 5 6 7 1122 3840 1148 229 35 8 6 21 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3092 (charge 2) 1010.52 2 153.066 153.103 154.05 155.081 156.077 157.097 158.092 159.077 159.113 167.055 169.097 169.133 171.076 171.112 173.093 173.129 175.119 176.071 178.086 181.061 181.097 185.092 186.124 187.108 188.071 188.103 189.087 193.097 194.101 194.129 197.128 198.087 199.071 199.108 200.14 201.123 205.098 209.092 213.087 216.098 217.082 221.091 223.108 226.155 227.103 231.115 233.092 241.081 242.186 245.077 249.123 251.102 255.145 257.197 272.173 275.208 284.171 293.113 299.063 301.058 312.698 316.13 333.189 336.177 345.182 351.166 358.162 360.235 366.202 377.221 380.149 388.292 398.216 400.701 408.14 418.995 431.273 441.732 448.221 453.22 466.245 468.295 477.163 493.23 495.172 497.262 503.318 535.242 560.314 614.355 632.362 636.298 689.359 712.361 737.347 740.371 795.423 818.406 882.453 906.437 4 4 4 8 4 6 9 10 9 9 5 6 26 6 4 4 47 5 6 4 4 5 7 7 4 4 17 69 11 3 5 13 5 5 4 8 8 3 5 21 12 14 100 12 6 6 5 10 16 15 9 29 12 10 10 40 4 8 5 6 8 4 8 4 3 5 4 6 4 11 5 21 11 4 24 14 11 7 5 7 4 16 4 5 20 5 17 7 8 7 29 5 9 6 6 4 13 4 15 4 GRMZM2G169160_P01 B6TBG7 Seryl-tRNA synthetase seq=translation; coord=4:5666220..5677820:-1; parent_transcript=GRMZM2G169160_T01; parent_gene=GRMZM2G169160 GRMZM2G169160_P03 B6TBG7 Seryl-tRNA synthetase seq=translation; coord=4:5666399..5677820:-1; parent_transcript=GRMZM2G169160_T03; parent_gene=GRMZM2G169160 7.34576 -0.326478 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 11977 11977 11977 11806 11332 10769 9295 7566 5644 3726 2179 1290 711 345 172 91 40 8 3 2 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 11984 11984 11984 11813 11339 10739 9159 7166 4613 2131 659 231 60 12 1 0 0 1 2 3 4 5 6 7 4460 4605 2198 569 123 29 1 0 0 1 2 3 4 5 6 7 1768 5148 3375 1220 355 92 21 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3093 (charge 3) 1533.76 3 152.034 155.082 157.061 157.097 158.092 159.077 167.082 167.118 169.061 169.097 171.076 171.113 173.092 175.072 175.119 181.061 181.097 183.149 185.092 186.087 189.087 195.112 197.129 198.087 199.072 199.108 199.181 204.135 209.091 211.143 216.098 217.082 223.108 225.172 226.155 230.149 234.145 238.635 240.135 244.166 248.161 251.103 258.144 268.165 275.207 283.177 286.143 287.162 296.124 301.187 303.145 310.666 320.172 335.194 355.16 359.193 398.208 414.271 418.237 424.256 436.239 470.219 476.259 486.246 493.314 504.258 505.262 510.257 513.333 523.273 548.283 565.239 575.314 589.284 602.318 605.304 620.325 622.333 631.321 646.384 649.331 660.345 663.346 670.331 676.37 688.342 689.351 717.378 720.401 726.412 748.4 789.39 791.407 814.426 817.385 819.39 828.411 848.461 876.454 896.467 4 17 5 14 5 5 11 4 8 5 8 4 6 5 23 6 6 22 16 5 8 4 4 3 7 9 6 4 6 6 5 9 10 4 20 5 14 4 9 34 7 4 17 10 4 8 5 4 4 100 30 12 20 9 4 29 5 16 5 11 6 5 7 10 7 34 14 4 5 15 22 5 4 10 5 4 56 5 6 6 18 11 12 25 9 15 5 38 12 4 12 30 4 5 24 5 4 3 7 4 GRMZM2G023591_P01 NP_001150253 ribonucleoprotein seq=translation; coord=1:182100287..182102156:-1; parent_transcript=GRMZM2G023591_T01; parent_gene=GRMZM2G023591 MALALPLARL VPACQCQPWP HLRFRKRHVS FAAHASSRAA FAACAAAPAL QVQAPEAEAE AETVEQVGPK TRLVAQNIPW DCTADEMRAL FESHGSVVGV ELSMYSANKN RGLAFVTMGS EEEALAALTH LNSTILNDRK IKVDFARPRK KQPKQPAVVS DDTEKYVVFV GNLTWRVRNR HLRELFASAP GVVSAEVIFH TTTPRRSAGY AFVSFSSKES AGAAISAFNG KILMGRPINV MFKDENGEKN EPSSVPKKAE VEPSDDQSDK LSMNC GRMZM2G023591_P02 NP_001150253 ribonucleoprotein seq=translation; coord=1:182100190..182102107:-1; parent_transcript=GRMZM2G023591_T02; parent_gene=GRMZM2G023591 MALALPLARL VPACQCQPWP HLRFRKRHVS FAAHASSRAA FAACAAAPAL QVQAPEAEAE AETVEQVGPK TRLVAQNIPW DCTADEMRAL FESHGSVVGV ELSMYSANKN RGLAFVTMGS EEEALAALTH LNSTILNDRK IKVDFARPRK KQPKQPAVVS DDTEKCGIS 5.07798 -0.307756 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5662 5662 5662 5596 5402 5088 4733 3162 2507 1434 687 292 119 55 10 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 5658 5658 5658 5592 5396 5080 4671 3047 2066 719 121 12 1 0 0 1 2 3 4 5 2700 2722 226 11 9 0 0 1 2 3 4 5 6 7 1419 3048 982 209 6 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3094 (charge 2) 1188.57 2 155.081 157.061 157.097 158.092 159.076 159.113 161.092 167.056 168.055 169.097 171.077 171.113 171.149 173.092 175.072 175.119 180.113 181.061 181.097 183.076 185.092 186.088 186.123 187.072 187.107 189.087 195.09 197.104 197.128 198.088 198.125 199.071 199.108 200.103 201.123 203.066 208.108 212.103 217.081 221.085 226.154 227.103 232.14 239.095 241.094 244.165 252.134 255.146 258.144 268.978 272.171 276.155 280.13 282.053 285.01 286.01 299.062 301.06 303.02 305.019 309.204 314.1 317.181 344.977 346.974 351.202 356.07 357.068 374.081 375.078 377.203 379.197 401.131 417.034 419.996 420.993 430.238 470.262 474.224 477.284 492.226 501.277 510.233 530.171 554.322 564.307 572.313 585.786 586.787 607.256 629.245 631.768 673.297 676.275 679.348 694.288 793.358 795.365 877.401 963.469 12 8 7 8 7 6 5 38 9 17 12 18 7 6 3 34 16 8 23 5 6 3 3 7 11 5 2 3 3 2 7 10 11 8 6 6 46 3 5 8 19 8 33 68 14 7 20 8 22 12 9 11 8 2 100 57 53 19 23 11 75 3 9 8 3 38 85 58 11 5 24 12 6 3 18 15 6 5 5 3 11 5 2 3 7 11 6 18 6 6 3 3 3 2 10 34 33 10 3 10 GRMZM5G815453_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=Pt:56824..58323:1; parent_transcript=GRMZM5G815453_T01; parent_gene=GRMZM5G815453 GRMZM2G448344_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=1:203925927..203931405:-1; parent_transcript=GRMZM2G448344_T01; parent_gene=GRMZM2G448344 GRMZM2G385635_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=2:200096578..200100853:-1; parent_transcript=GRMZM2G385635_T01; parent_gene=GRMZM2G385635 GRMZM2G360821_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=6:160783975..160786062:1; parent_transcript=GRMZM2G360821_T01; parent_gene=GRMZM2G360821 GRMZM2G308907_P01 seq=translation; coord=9:32379686..32380603:1; parent_transcript=GRMZM2G308907_T01; parent_gene=GRMZM2G308907 GRMZM2G115168_P01 seq=translation; coord=1:131325136..131327527:1; parent_transcript=GRMZM2G115168_T01; parent_gene=GRMZM2G115168 8.14446 -0.397291 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 7819 7819 7819 7819 7410 7062 6469 5268 3852 2252 1092 523 230 81 13 4 3 3 2 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 7832 7832 7832 7832 7423 7020 6382 5058 3324 1387 256 61 1 0 0 1 2 3 4 5 6 7 2818 3025 1385 459 132 12 1 3 0 1 2 3 4 5 6 7 1473 3921 1945 401 79 11 0 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3098 (charge 3) 1481.72 3 155.081 156.077 157.097 157.133 158.092 159.077 166.062 169.097 169.134 171.076 171.113 171.15 173.092 173.128 175.119 181.096 183.15 185.092 186.124 187.108 191.085 199.108 201.123 204.134 205.137 208.108 215.139 219.08 223.156 225.098 228.098 235.119 240.135 244.166 249.161 251.15 253.093 258.145 267.109 282.187 301.187 303.203 327.167 331.678 339.139 345.176 365.155 367.135 415.679 422.69 426.173 436.158 452.219 454.167 457.196 461.207 464.218 466.203 475.208 480.22 482.237 486.292 495.835 501.741 510.748 515.74 517.791 521.248 524.743 527.293 539.259 549.247 555.323 560.347 563.295 565.3 567.254 581.305 617.276 632.325 647.377 676.336 704.307 718.312 766.416 784.431 791.342 844.366 847.353 862.385 897.518 905.461 931.401 933.429 949.417 984.409 1020.48 1030.48 1048.49 1081.46 10 5 5 5 9 7 8 13 12 5 6 7 17 9 39 7 6 4 28 13 43 6 14 100 8 5 5 14 10 15 7 9 12 7 8 12 6 8 5 5 11 34 7 5 9 5 6 15 5 11 18 8 10 31 8 6 6 32 20 10 13 6 17 8 10 6 6 5 5 5 17 5 5 6 6 7 22 11 6 7 13 12 15 10 5 27 6 8 10 5 7 5 15 5 10 5 5 8 7 5 GRMZM5G838129_P01 seq=translation; coord=5:205580677..205582732:-1; parent_transcript=GRMZM5G838129_T01; parent_gene=GRMZM5G838129 MAKEPSRLCV EEVHRVLLDI VNAAANATPG LGRYPPFKRE VIAIASNALD AFKSDAKKMV VALVDMERAF VPPQHFIRLV QRRMERQRRE DELKNNRSSK KGQDAELSKM NRASSPQTGS DEAGGNLKSM KDKSNKQDND TKEGPNLQVA GPGGEITAGY LLKKSAKNNE WSKR 5.34953 -0.305687 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 6158 6158 6158 6151 4587 4176 2730 2097 1304 769 476 324 88 23 10 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6160 6160 6160 6153 4589 3989 2593 1664 881 454 306 195 19 2 1 0 0 1 2 3 4 5 3741 2087 321 11 1 0 0 1 2 3 4 5 6 7 1225 3893 923 114 2 2 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3099 (charge 2) 1518.7 2 150.13 155.081 157.061 157.097 159.076 166.63 167.055 167.081 171.113 172.345 175.119 181.097 183.078 185.092 187.742 195.076 198.123 199.108 209.093 212.104 216.134 226.119 228.098 229.093 239.094 242.113 244.13 246.156 252.099 260.196 270.107 283.137 295.141 299.062 309.156 313.152 316.116 323.136 325.151 327.167 345.139 352.162 355.071 357.211 359.028 361.028 374.239 431.262 453.203 488.284 559.32 579.775 582.218 586.251 628.792 637.307 688.366 705.42 764.346 803.384 890.416 902.385 947.441 952.432 1030.49 1048.49 1159.52 1176.54 1274.59 4 4 5 20 8 4 15 5 4 4 6 4 4 22 3 5 31 9 6 6 8 100 20 6 7 5 5 6 4 18 4 5 24 35 9 8 5 4 6 18 6 5 7 6 21 5 6 7 5 38 42 8 5 7 20 20 28 6 9 16 20 5 50 5 12 81 19 5 7 GRMZM5G821637_P04 NP_001140813 hypothetical protein LOC100272888 seq=translation; coord=1:298687651..298689984:1; parent_transcript=GRMZM5G821637_T04; parent_gene=GRMZM5G821637 GRMZM5G821637_P05 NP_001140813 hypothetical protein LOC100272888 seq=translation; coord=1:298687651..298689984:1; parent_transcript=GRMZM5G821637_T05; parent_gene=GRMZM5G821637 5.00965 -0.270792 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 1492 1492 1492 1492 1426 1297 937 768 368 214 126 66 31 13 12 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 1493 1493 1493 1493 1427 1294 922 737 290 96 34 4 1 0 0 1 2 3 4 897 526 68 9 0 0 1 2 3 4 5 6 7 425 838 193 27 8 1 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3100 (charge 2) 1735.72 2 152.057 157.134 158.092 171.077 175.119 183.148 185.128 215.115 226.118 232.141 234.146 236.89 240.134 244.093 248.383 272.124 275.103 291.166 311.17 343.161 350.135 407.155 420.227 448.215 461.21 474.267 488.168 518.23 528.316 563.24 595.304 605.265 606.841 654.288 662.833 699.378 711.785 742.318 748.862 776.309 813.361 821.333 823.324 827.878 870.441 936.36 1056.45 1064.45 1179.47 1201.52 1307.54 1402.8 1422.57 4 44 6 3 23 3 30 4 7 65 6 4 8 5 4 24 11 11 22 10 24 20 5 43 6 33 8 7 34 11 8 21 5 7 100 9 11 20 21 6 9 27 8 19 44 36 10 9 25 8 10 7 24 GRMZM2G109448_P01 B6T101 Histone H2A seq=translation; coord=7:143296604..143298282:-1; parent_transcript=GRMZM2G109448_T01; parent_gene=GRMZM2G109448 MDASGAGSKA KKGAAGRKAG GPRKKSVSRS VKAGLQFPVG RIGRYLKKGR YAQRVGTGAP VYLAAVLEYL AAEVLELAGN AAKDNKKTRI VPRHVLLAIR NDVELGKLLA GVTIAHGGVL PNINPVLLPK KVAEKASSGG SKESKSPKKA AKSPKKAAKS PKKA 5.12891 -0.29308 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1794 1794 1794 1695 1590 1439 1299 1042 871 380 239 123 56 25 10 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 1801 1801 1801 1702 1597 1429 1256 995 555 227 61 14 1 0 0 1 2 3 4 5 983 731 88 8 1 0 0 1 2 3 4 5 6 7 331 909 451 91 21 2 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3103 (charge 2) 865.372 2 153.102 155.081 157.097 157.109 157.134 158.092 159.077 166.061 167.081 169.097 171.076 171.113 172.108 173.091 173.129 174.058 175.061 175.119 181.097 185.092 185.165 186.095 187.072 190.061 191.084 193.098 194.649 195.076 198.087 199.072 199.108 201.123 207.089 212.139 213.087 216.134 218.056 223.108 224.114 226.119 228.134 232.141 234.145 235.146 237.637 240.135 244.166 251.103 255.145 257.653 267.109 272.173 273.121 275.208 279.098 288.203 289.207 291.166 306.167 312.167 331.687 342.141 345.225 347.099 362.204 364.123 369.189 377.214 381.151 387.201 393.86 403.23 413.174 419.226 426.211 443.236 454.238 460.256 464.244 474.267 476.139 488.247 493.17 506.258 510.196 514.274 531.331 577.295 589.293 594.302 605.184 611.326 632.365 639.236 645.333 662.36 674.31 682.361 692.32 732.365 4 7 8 3 3 14 21 5 3 14 4 3 2 4 5 52 3 42 3 100 5 5 10 2 8 3 2 3 5 3 5 8 6 5 4 5 4 22 5 8 5 4 15 3 3 7 3 33 8 3 5 4 3 5 4 71 6 21 16 6 4 4 15 3 8 4 3 3 5 4 3 20 3 13 4 19 4 4 4 23 3 3 3 22 4 22 8 8 3 4 3 47 4 2 5 3 3 3 12 4 GRMZM2G135498_P01 NP_001149639 3-oxoacyl-synthase I seq=translation; coord=6:107821435..107825807:-1; parent_transcript=GRMZM2G135498_T01; parent_gene=GRMZM2G135498 MQSLLLPTAA VAPVAPPCGR RNLPGRLSVR ASATVVAAPR RETDPKKRVV ITGMGLVSVF GNDVDAYYDR LLVGESGIGP IDRFDASKFP TRFAGQIRGF SSEGYIDGKN DRRLDDCLRY CIVSGKKALE ASGIAHGSKP MEKIDKTRAG VLVGTGMGGL TVFSDGVQNL IEKGYRKITP FFIPYAITNM GSALLGMDIG FMGPNYSIST ACATSNYCFY AAANHIRRGE ADIMIAGGTE AAIIPIGVGG FVACRALSQR NDDPKTASRP WDKDRDGFVM GEGAGVLVME SLEHAMKRDA PIIAEYLGGA VNCDAYHMTD PRSDGLGVSS CIKQSLKDAG VAPEEVNYIN AHATSTLAGD LAEVNAIKQV FKDPSGIKIN ATKSMIGHCL GAAGGLEAIA TIKAITTGWV HPSINQFNPE EAVEFDTVPN VKKQHEVNVG ISNSFGFGGH NSVVVFAPFK P 5.96891 -0.277624 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 11946 11946 11946 11820 11495 10905 10196 8675 7151 4826 3038 1728 888 521 303 166 81 35 8 4 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 11931 11931 11931 11805 11480 10835 10030 8215 6038 3012 897 350 35 1 0 0 1 2 3 4 5 6 7 3507 4975 2315 868 248 24 9 2 0 1 2 3 4 5 6 7 1981 4857 3179 1409 337 154 28 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3104 (charge 3) 1641.83 3 155.082 157.098 157.134 158.093 158.137 159.077 166.061 171.077 171.113 173.092 175.119 176.123 181.096 183.077 185.092 185.129 185.165 187.108 195.089 195.113 197.129 198.087 199.072 199.108 199.181 209.105 213.087 215.139 223.108 226.155 235.119 240.134 243.133 244.166 258.145 262.15 266.124 270.108 272.172 274.13 276.156 301.187 309.119 311.172 314.172 327.129 329.182 345.141 359.198 375.229 392.196 410.215 412.219 433.231 438.239 452.252 456.245 465.23 468.748 478.774 481.251 500.748 520.241 522.237 531.318 538.3 564.31 582.319 597.321 602.306 620.313 621.321 629.312 632.834 664.833 673.375 688.855 697.857 701.378 702.381 719.387 728.393 729.393 731.429 737.335 738.341 772.447 792.394 800.433 801.449 840.468 849.36 859.491 865.378 866.362 868.382 929.452 936.496 956.542 1000.49 17 11 100 6 10 6 5 3 5 10 33 5 5 6 6 36 3 5 9 3 3 5 3 12 35 10 6 11 19 23 47 12 9 8 40 3 7 6 10 12 18 7 7 3 6 11 5 6 5 13 5 6 10 9 8 7 22 12 8 8 6 10 24 12 9 12 6 3 8 9 14 5 8 8 5 6 5 7 16 10 11 20 10 3 13 3 6 20 8 3 3 8 12 10 24 5 15 13 10 6 GRMZM5G876898_P01 NP_001145825 hypothetical protein LOC100279332 seq=translation; coord=2:8906086..8909067:-1; parent_transcript=GRMZM5G876898_T01; parent_gene=GRMZM5G876898 MRGLLACATL ARRAAASSAP ARVRHLAGAA EAAEAELKRT ALYDFHVAHG GKMVPFAGWS MPIQYRDSIM DSTVNCRANG SLFDVAHMCG LSLKGRGAIP FLESLVVADV AALRDGTGTL TVFTNEQGGA IDDSVIAKVT DHHIYLVVNA GCRDKDLAHI EAHMEAFNKK GGDVKWHIHD DRSLLALQGP LAAPTLQLLT KEDLSKMYFS DFKMIDINGY ACFLTRTGYT GEDGFEISVP SENAVDLAEA ILERSEGKVR LTGLGARDSL RLEAGLCLYG NDMEQHITPV EAGLSWAIGK RRRAEGGFLG ADVILKQLQE GPKIRRVGMV TQGPPARSHS ELVSGSGERI GEVTSGGFSP CLKKNIAMGY VKSGMHKAGT ELKVVVRGKS YDAVVTKMPF VPTKYYKPS GRMZM5G876898_P02 NP_001145825 hypothetical protein LOC100279332 seq=translation; coord=2:8906080..8909067:-1; parent_transcript=GRMZM5G876898_T02; parent_gene=GRMZM5G876898 MRGLLACATL ARRAAASSAP ARVRHLAGAA EAAEAELKRT ALYDFHVAHG GKMVPFAGWS MPIQYRDSIM DSTVNCRANG SLFDVAHMCG LSLKGRGAIP FLESLVVADV AALRDGTGTL TVFTNEQGGA IDDSVIAKVT DHHIYLVVNA GCRDKDLAHI EAHMEAFNKK GGDVKWHIHD DRSLLALQGP LAAPTLQLLT KEDLSKMYFS DFKMIDINGY ACFLTRTGYH FDSLSPLFEQ YCKDCLISYF SYTGEDGFEI SVPSENAVDL AEAILERSEG KVRLTGLGAR DSLRLEAGLC LYGNDMEQHI TPVEAGLSWA IGKRRRAEGG FLGADVILKQ LQEGPKIRRV GMVTQGPPAR SHSELVSGSG ERIGEVTSGG FSPCLKKNIA MGYVKSGMHK AGTELKVVVR GKSYDAVVTK MPFVPTKYYK PS 6.6667 -0.310079 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 7070 7070 7070 6988 6832 6506 6230 5612 4491 3800 2426 1533 844 512 231 120 51 14 6 2 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7070 7070 7070 6988 6832 6488 6181 5476 4208 3089 1510 457 121 12 1 0 0 1 2 3 4 5 6 3232 2872 819 127 25 1 0 0 1 2 3 4 5 6 7 1164 4017 1457 396 35 1 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3105 (charge 2) 1128.58 2 152.057 154.086 155.082 155.118 157.097 157.108 157.133 158.093 159.076 166.062 167.082 169.097 169.134 171.113 173.092 173.128 175.119 176.123 181.097 183.113 185.091 186.088 187.071 187.108 188.037 194.129 195.075 195.113 198.124 199.108 199.125 199.181 201.123 205.064 209.092 211.107 213.088 216.134 218.15 219.117 226.155 227.102 229.118 234.145 240.134 242.15 244.166 248.161 254.15 258.108 270.107 272.172 284.16 287.137 304.133 311.208 324.155 327.129 332.16 341.184 343.208 355.197 375.206 383.195 387.168 391.197 394.692 397.209 402.211 419.192 422.211 440.261 446.232 450.222 452.247 468.251 470.26 480.256 497.283 517.276 547.28 563.781 566.301 608.314 625.342 628.329 629.332 631.34 682.36 705.427 709.366 726.39 728.392 746.372 789.382 808.439 825.457 827.462 900.437 965.508 4 8 25 15 29 6 8 13 11 4 7 77 7 4 13 7 70 4 10 41 13 9 8 11 17 4 4 8 10 47 4 8 71 34 10 16 16 9 17 25 100 35 27 28 29 8 27 11 4 8 17 17 4 8 58 8 7 8 22 5 8 11 8 14 4 4 9 22 14 9 14 39 14 4 11 17 4 10 64 9 12 8 4 17 42 8 4 14 8 4 9 82 9 17 8 4 35 4 4 12 GRMZM5G859592_P01 seq=translation; coord=1:248587698..248589524:-1; parent_transcript=GRMZM5G859592_T01; parent_gene=GRMZM5G859592 4.02328 -0.243835 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1729 1729 1729 1729 1423 1293 1163 887 764 494 366 220 88 26 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1735 1735 1735 1735 1429 1297 1094 878 691 467 235 149 21 1 0 0 1 2 3 4 825 694 204 12 0 0 1 2 3 4 5 6 7 535 974 210 12 1 0 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3108 (charge 2) 1565.65 2 152.057 171.077 173.128 175.118 183.113 185.091 187.072 189.087 199.071 201.124 203.103 208.526 213.087 217.082 227.067 229.118 231.098 241.082 245.077 258.144 274.102 276.156 284.122 300.155 302.098 312.156 328.113 338.099 346.125 356.109 374.119 377.204 457.158 461.15 492.23 531.717 549.252 556.222 620.288 674.208 677.309 740.377 757.701 761.028 775.373 784.428 790.43 806.36 863.377 974.412 992.416 1107.44 11 10 38 5 53 6 14 33 28 38 36 5 8 56 10 6 13 49 42 28 9 12 6 82 9 40 10 6 12 37 7 52 6 9 11 7 58 7 12 9 100 8 9 7 8 9 7 13 79 11 14 27 GRMZM2G025227_P02 NM_001175054 hypothetical protein LOC100382305 (LOC100382305), mRNA seq=translation; coord=5:1457568..1462915:1; parent_transcript=GRMZM2G025227_T02; parent_gene=GRMZM2G025227 MAEATDTAAA TPPPAPAMAT LSPPPKSGIP PRYNLDAKWD ACLDLSIRRV AYSSLAGALA GLLLFRSPTT RWASVTLGAG VGIGAAYTEC SYLFSGGPPN WSPKVSTIPS AHSEGEDK 8.46865 -0.376384 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 6509 6509 6509 6509 6509 6384 6123 5785 5000 3932 2962 1719 946 495 214 93 41 7 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6527 6527 6527 6527 6527 6402 6141 5757 4933 3628 2273 772 227 75 22 1 0 0 1 2 3 4 5 6 7 2067 2766 1227 314 132 19 2 0 0 1 2 3 4 5 6 7 1323 2717 1662 657 143 14 8 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3113 (charge 3) 1456.69 3 155.082 157.098 157.133 158.092 159.077 159.113 161.092 167.081 169.097 169.134 171.076 171.113 171.149 173.092 173.128 175.119 181.109 183.077 183.113 183.149 185.092 185.165 187.071 187.108 187.144 188.147 189.087 194.129 197.129 199.107 200.103 201.124 209.104 211.144 213.086 216.133 217.082 223.107 226.119 227.102 230.113 232.14 234.145 238.154 240.134 244.167 252.135 256.128 258.109 262.14 270.145 272.173 283.139 296.134 298.176 304.162 306.119 324.13 328.167 365.191 371.683 383.697 389.195 393.188 401.173 444.282 448.204 480.213 515.323 518.271 520.228 528.733 542.301 577.247 591.246 604.334 609.254 614.306 635.245 643.381 649.333 664.276 666.286 669.337 714.414 732.428 742.36 749.353 758.408 766.389 782.313 795.325 801.336 837.432 850.431 872.367 910.35 959.402 1056.46 1058.47 30 32 12 21 58 70 11 23 42 28 33 21 42 30 14 83 57 14 11 31 28 31 96 35 98 10 24 11 20 12 18 17 77 19 15 18 14 16 33 12 15 12 44 21 18 17 23 16 63 49 38 16 13 11 19 12 10 11 20 24 20 14 10 18 23 100 19 24 18 24 13 66 12 16 13 15 17 36 39 61 15 66 11 23 26 24 21 11 22 83 33 20 37 15 12 24 19 28 63 12 GRMZM2G039396_P01 NP_001105564 protoporphyrinogen IX oxidase seq=translation; coord=8:876212..882478:-1; parent_transcript=GRMZM2G039396_T01; parent_gene=GRMZM2G039396 MVAATATATA MATAASPLLN GTRIPARLRH RGLSVRCAAV AGGAAEAPAS TGARLSADCV VVGGGISGLC TAQALATRHG VGDVLVTEAR ARPGGNITTV ERPEEGYLWE EGPNSFQPSD PVLTMAVDSG LKDDLVFGDP NAPRFVLWEG KLRPVPSKPA DLPFFDLMSI PGKLRAGLGA LGIRPPPPGR EESVEEFVRR NLGAEVFERL IEPFCSGVYA GDPSKLSMKA AFGKVWRLEE TGGSIIGGTI KTIQERSKNP KPPRDARLPK PKGQTVASFR KGLAMLPNAI TSSLGSKVKL SWKLTSITKS DDKGYVLEYE TPEGVVSVQA KSVIMTIPSY VASNILRPLS SDAADALSRF YYPPVAAVTV SYPKEAIRKE CLIDGELQGF GQLHPRSQGV ETLGTIYSSS LFPNRAPDGR VLLLNYIGGA TNTGIVSKTE SELVEAVDRD LRKMLINSTA VDPLVLGVRV WPQAIPQFLV GHLDLLEAAK AALDRGGYDG LFLGGNYVAG VALGRCVEGA YESASQISDF LTKYAYK 5.32059 -0.259541 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 6568 6568 6520 6239 5954 5675 5311 3882 3234 1807 1108 675 375 232 121 47 22 11 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6569 6569 6521 6240 5950 5631 5189 3559 2611 1151 492 167 47 12 1 0 0 1 2 3 4 5 2725 2840 867 118 22 0 0 1 2 3 4 5 6 7 1534 3791 1010 202 28 6 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3114 (charge 2) 1356.69 2 152.057 155.082 157.097 158.092 159.077 161.092 167.081 169.061 169.097 169.134 171.076 171.113 172.116 173.092 175.119 183.113 183.149 185.093 186.087 187.072 187.09 187.107 189.087 197.092 197.129 199.072 200.104 201.087 212.103 224.103 227.103 229.13 232.141 239.151 240.135 242.15 244.093 252.097 254.15 257.125 259.093 268.165 270.109 272.125 283.14 286.151 298.104 300.166 303.178 306.159 309.118 311.171 316.113 328.161 330.178 337.115 341.147 343.163 355.125 368.156 371.202 374.215 382.21 386.167 399.197 404.225 412.182 414.247 427.23 438.272 445.252 457.201 474.231 491.257 528.24 562.293 599.315 634.33 642.323 657.331 659.347 661.349 713.349 728.366 730.384 732.388 841.421 857.411 859.428 861.428 912.444 930.465 932.472 986.452 1001.51 1012.39 1043.47 1058.52 1115.54 1186.58 7 8 3 12 9 7 5 13 11 5 3 60 2 8 35 4 2 5 34 34 2 9 5 2 8 2 7 13 10 2 8 26 6 2 5 10 2 3 3 41 3 5 5 13 14 5 13 14 7 2 4 9 7 33 5 3 5 3 8 10 2 3 11 3 6 3 7 5 8 5 28 9 2 3 3 5 3 5 8 42 100 5 5 20 62 4 4 19 40 6 3 48 4 3 12 2 7 13 22 17 GRMZM2G079538_P01 NP_001147014 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=10:110621503..110626726:1; parent_transcript=GRMZM2G079538_T01; parent_gene=GRMZM2G079538 GRMZM2G079538_P02 NP_001147014 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=10:110620918..110626719:1; parent_transcript=GRMZM2G079538_T02; parent_gene=GRMZM2G079538 GRMZM2G079538_P03 NP_001147014 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=10:110621503..110626716:1; parent_transcript=GRMZM2G079538_T03; parent_gene=GRMZM2G079538 GRMZM5G807639_P03 NP_001150636 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=2:66624116..66641809:-1; parent_transcript=GRMZM5G807639_T03; parent_gene=GRMZM5G807639 GRMZM5G807639_P02 NP_001150636 dihydrolipoyllysine-residue succinyltransferase component of 2-oxoglutarate dehydrogenase complex seq=translation; coord=2:66624116..66641809:-1; parent_transcript=GRMZM5G807639_T02; parent_gene=GRMZM5G807639 5.97758 -0.254365 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 9980 9980 9980 9980 9689 9003 7961 6511 4855 3549 2160 1323 765 465 190 102 60 38 16 12 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9969 9969 9969 9969 9678 8985 7828 5741 3481 1639 639 97 18 1 0 0 1 2 3 4 5 6 7 2558 3922 2368 801 287 50 4 1 0 1 2 3 4 5 6 7 1788 4042 2704 1021 335 71 15 15 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3119 (charge 3) 1839.87 3 157.097 159.076 162.103 169.097 175.119 176.103 181.097 183.076 185.092 190.097 193.095 200.103 201.087 209.092 216.134 221.092 234.145 237.134 239.114 242.15 268.627 284.124 287.135 290.161 296.125 298.14 309.653 314.134 318.16 323.651 335.193 338.182 350.146 368.156 373.182 381.178 388.218 399.189 406.229 409.22 411.198 424.702 439.187 443.177 467.232 486.219 490.24 492.219 508.251 510.259 514.214 518.235 536.246 537.248 559.295 574.762 578.287 585.247 597.25 607.321 609.3 615.26 617.308 619.284 629.264 635.314 647.281 648.285 664.315 678.357 684.312 687.356 688.349 706.352 718.354 729.352 746.348 747.352 751.346 752.349 777.375 786.425 817.385 818.393 830.387 833.401 848.398 850.404 857.465 901.424 905.433 906.435 919.436 921.442 985.518 1018.5 1020.5 1155.57 1219.57 1256.62 5 76 9 29 8 16 7 7 7 7 9 15 10 9 13 5 46 12 24 9 6 6 15 8 8 23 12 13 6 15 35 25 8 10 5 13 8 16 32 9 5 15 8 20 6 6 7 6 30 9 22 14 57 16 6 8 11 8 12 16 8 6 7 8 7 41 26 8 11 8 6 19 12 39 9 7 22 7 23 8 30 11 23 17 14 11 100 11 10 10 11 6 90 12 11 39 8 14 6 6 GRMZM2G087570_P01 seq=translation; coord=6:44382950..44385913:-1; parent_transcript=GRMZM2G087570_T01; parent_gene=GRMZM2G087570 GRMZM2G076544_P01 NP_001149265 peptidyl-prolyl cis-trans isomerase seq=translation; coord=8:135138380..135140767:-1; parent_transcript=GRMZM2G076544_T01; parent_gene=GRMZM2G076544 6.48184 -0.35037 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 5965 5965 5915 5783 5476 5048 4868 2505 1816 694 397 139 61 20 19 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 5968 5968 5918 5783 5450 4969 4758 2285 1553 439 55 27 1 0 0 1 2 3 4 5 3528 2115 289 39 2 0 0 1 2 3 4 5 6 7 1090 4112 656 100 10 0 0 5 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3120 (charge 2) 1090.54 2 157.109 158.092 171.076 175.119 176.123 181.061 187.144 189.087 195.076 197.128 198.087 199.072 199.18 213.087 215.139 217.081 227.175 228.178 231.097 241.081 243.133 258.109 273.119 275.207 290.146 309.119 315.646 327.129 342.132 345.139 374.164 391.193 456.17 474.184 502.225 520.237 574.263 631.267 648.293 718.308 735.326 737.329 820.344 846.357 848.355 864.368 866.374 977.453 1 5 3 34 3 1 5 2 1 2 2 4 100 2 12 2 20 3 2 3 7 2 2 3 3 4 1 4 1 2 2 10 2 1 2 8 1 4 4 2 24 2 1 9 1 38 4 4 GRMZM2G001327_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695861:-1; parent_transcript=GRMZM2G001327_T01; parent_gene=GRMZM2G001327 GRMZM2G001327_P03 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695738:-1; parent_transcript=GRMZM2G001327_T03; parent_gene=GRMZM2G001327 GRMZM2G154218_P01 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515921..136519080:-1; parent_transcript=GRMZM2G154218_T01; parent_gene=GRMZM2G154218 GRMZM2G154218_P02 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515968..136519018:-1; parent_transcript=GRMZM2G154218_T02; parent_gene=GRMZM2G154218 GRMZM2G149768_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136568621..136572271:-1; parent_transcript=GRMZM2G149768_T01; parent_gene=GRMZM2G149768 GRMZM2G110509_P01 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T01; parent_gene=GRMZM2G110509 GRMZM2G110509_P02 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T02; parent_gene=GRMZM2G110509 GRMZM2G110509_P03 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607316..84610225:1; parent_transcript=GRMZM2G110509_T03; parent_gene=GRMZM2G110509 6.25024 -0.337851 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 7690 7690 7600 7120 5924 4835 3445 2224 1275 622 357 170 84 19 11 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7664 7664 7568 7056 5761 4342 2551 1061 448 142 59 2 1 1 0 0 1 2 3 4 5 6 7 2387 3027 1597 540 124 19 6 6 0 1 2 3 4 5 6 7 1560 3443 1989 566 93 40 3 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3121 (charge 3) 1335.65 3 155.081 157.061 157.097 158.093 159.076 166.061 167.055 168.056 169.052 169.097 171.076 171.113 174.088 175.119 177.102 178.106 181.109 183.113 185.056 187.107 192.076 195.113 198.123 200.139 202.082 205.097 209.104 216.134 218.15 223.063 225.043 228.134 232.14 237.135 240.135 244.165 253.093 255.145 258.144 272.171 289.115 297.192 304.165 313.15 315.202 317.208 324.986 338.148 341.017 342.996 344.995 347.168 356.203 359.028 361.026 366.655 382.171 400.179 424.169 430.23 437.713 456.258 467.191 473.212 481.232 517.254 532.234 545.257 560.232 585.26 603.273 615.325 630.237 647.261 659.37 673.357 701.276 718.3 737.315 760.381 815.347 817.367 857.397 874.422 886.385 961.459 1032.49 1 3 1 1 5 2 37 5 2 8 1 13 2 5 95 10 3 1 1 3 2 1 2 3 5 18 5 4 13 5 11 2 5 1 2 1 2 1 2 1 1 2 2 2 48 1 2 1 6 7 2 1 1 100 20 2 1 1 1 4 2 3 1 1 4 3 2 4 4 1 2 1 2 8 1 3 1 10 1 6 1 3 1 3 1 5 1 GRMZM5G849087_P01 seq=translation; coord=6:167749462..167750447:-1; parent_transcript=GRMZM5G849087_T01; parent_gene=GRMZM5G849087 MAGSAADAEQ EQKRAAAAAY DYEGDARWAE YWSNVLVPPN LASRPDVVDH LKRKFYQRYI DRNFNLVYYR KREKSLNFGE SQPKFVTLVR ILILL 5.3598 -0.274861 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 5347 5347 5337 5283 5052 4698 4458 3120 2335 1312 726 384 210 104 61 28 10 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5287 5287 5277 5221 4982 4568 4238 2789 1606 653 158 2 1 1 0 0 1 2 3 4 5 2723 2124 437 69 14 0 0 1 2 3 4 5 6 7 839 3274 943 253 38 3 0 17 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3123 (charge 2) 1402.66 2 153.066 155.082 157.061 158.092 159.077 166.05 169.097 169.134 170.093 171.076 172.108 173.092 175.119 183.076 183.113 185.092 187.071 187.108 194.128 195.076 197.128 198.087 200.103 201.106 212.103 213.087 216.098 218.149 226.119 230.113 240.098 242.112 244.131 258.108 269.16 283.14 287.135 297.155 299.171 301.151 303.213 311.135 312.138 315.202 316.205 323.134 325.187 329.145 333.188 345.141 368.193 372.224 373.228 384.148 386.205 394.171 400.185 402.163 416.25 431.272 443.26 445.229 478.267 497.198 502.245 514.301 529.246 537.762 545.263 560.318 573.273 585.337 616.8 626.266 636.298 645.306 671.352 686.384 688.374 703.349 799.403 815.431 817.415 871.433 872.432 888.452 890.453 916.474 986.448 987.457 997.528 1003.48 1005.47 1017.52 1057.5 1074.52 1076.51 1104.55 1145.55 1203.62 6 13 2 2 10 9 3 4 2 26 6 7 36 30 2 6 7 8 4 2 3 19 97 9 8 4 8 2 10 24 100 2 3 46 2 9 2 4 8 3 8 59 10 14 2 7 2 36 4 4 2 24 4 2 2 8 5 6 2 13 18 2 2 4 7 12 2 7 4 12 5 8 2 2 2 4 8 9 23 19 4 7 22 4 2 41 3 10 5 2 2 43 4 6 5 34 2 13 14 6 GRMZM2G180399_P01 NP_001131336 hypothetical protein LOC100192652 seq=translation; coord=8:161837476..161841019:1; parent_transcript=GRMZM2G180399_T01; parent_gene=GRMZM2G180399 MALRLHDVAL CLSPPLAARR RSGGSFVAVA SMTSAAVSTR VENKKPFAPP REVHVQVTHS MPSHKIEIFK SLDDWARDNI LTHLKPVEKC WQPQDFLPDP ASEGFHDEVK ELRERAKEIP DDYFVCLVGD MITEEALPTY QTMLNTLDGV RDETGASPTA WAVWTRAWTA EENRHGDLLN KYMYLTGRVD MRQIEKTIQY LIGSGMDPRT ENNPYLGFIY TSFQERATFI SHGNTARHAK DFGDLKLAQI CGIIASDEKR HETAYTKIVE KLFEIDPDGT VVALADMMKK KISMPAHLMF DGQDDKLFEH FSMVAQRLGV YTARDYADIL EFLVDRWKVA DLTGLSGEGN KAQDYLCTLA SRIRRLDERA QSRAKKAGTL PFSWVYGREV QL GRMZM5G852502_P01 NP_001130573 hypothetical protein LOC100191672 seq=translation; coord=3:160666715..160671398:1; parent_transcript=GRMZM5G852502_T01; parent_gene=GRMZM5G852502 MALRLNDVAL CLSPPLAARR RRSRSRSSGR FVAVASMTSA VSTKVENKKP FAPPREVHVQ VTHSMPPHKI EIFKSLDDWA RDNILTHLKP VEKCWQPQDF LPDPASEGFH DEVKELRERA KEIPDDYFVC LVGDMITEEA LPTYQTMLNT LDGVRDETGA SPTAWAVWTR AWTAEENRHG DLLNKYMYLT GRVDMRQIEK TIQYLIGSGM DPRTENNPYL GFIYTSFQER ATFISHGNTA RHAKDFGDLK LAQICGIIAS DEKRHETAYT KIVEKLFEID PDGTVVALAD MMRKKISMPA HLMFDGQDDK LFEHFSMVAQ RLGVYTARDY ADILEFLVDR WKVVNLTGLS GEGNKAQDYL CTLASRIRRL EERAQSRAKK AGTLPFSWVY GRDVQL GRMZM2G027673_P01 NP_001140670 hypothetical protein LOC100272745 seq=translation; coord=4:102090319..102092193:-1; parent_transcript=GRMZM2G027673_T01; parent_gene=GRMZM2G027673 MATVTSLSFS GSCRHGPRYT ARPAASSRSS QLLNDQLARA SRRLQVAAGM AVAAFPSCGA FAPPCLVSTR RAFSSVVAMA SAAPVRAPSR KPFAPPREVH RPVAHSLPPQ KREIFESLES WAADNILVLL KPVERSWQPQ DYLPDAASES FDDEVRELRE RAREIPDDYF VCFVGDMVTE EALPTYQTML NTLDGGVRDE TGASSTSWAV WTRAWAAEEN RHGDLMNKYL FLTGRVDMRQ IEKTVQYLIA SGMDPKTETN PYMGFVYTSF QERATFISHG NTARHARRYG DTKLAQICGT IAADEKRHES AYERIVEKLF EVDPDYTVRA FADTMRKKVA MPAHLMYDGQ DDGLFARFSA VAQRIGVYTA RDYVDILEFL VRRWGVQELT GLSGEGRRAQ EFVCELGPRF RRLEERAHDN KAKDPEFAPF SWIHGRQVQL GRMZM2G027673_P02 NP_001140670 hypothetical protein LOC100272745 seq=translation; coord=4:102090150..102092144:-1; parent_transcript=GRMZM2G027673_T02; parent_gene=GRMZM2G027673 MAVAAFPSCG AFAPPCLVST RRAFSSVVAM ASAAPRKPFA PPREVHRPVA HSLPPQKREI FESLESWAAD NILVLLKPVE RSWQPQDYLP DAASESFDDE VRELRERARE IPDDYFVCFV GDMVTEEALP TYQTMLNTLD GGVRDETGAS STSWAVWTRA WAAEENRHGD LMNKYLFLTG RVDMRQIEKT VQYLIASGMD PKTETNPYMG FVYTSFQERA TFISHGNTAR HARRYGDTKL AQICGTIAAD EKRHESAYER IVEKLFEVDP DYTVRAFADT MRKKVAMPAH LMYDGQDDGL FARFSAVAQR IGVYTARDYV DILEFLVRRW GVQELTGLSG EGRRAQEFVC ELGPRFRRLE ERAHDNKAKD PEFAPFSWIH GRQVQL GRMZM2G027673_P03 NP_001140670 hypothetical protein LOC100272745 seq=translation; coord=4:102090437..102092144:-1; parent_transcript=GRMZM2G027673_T03; parent_gene=GRMZM2G027673 MAVAAFPSCG AFAPPCLVST RRAFSSVVAM ASAAPVRAPS RKPFAPPREV HRPVAHSLPP QKREIFESLE SWAADNILVL LKPVERSWQP QDYLPDAASE SFDDEVRELR ERAREIPDDY FVCFVGDMVT EEALPTYQTM LNTLDGGVRD ETGASSTSWA VWTRAWAAEE NRHGDLMNKY LFLTGRVDMR QIEKTVQYLI ASGMDPKTET NPYMGFVYTS FQERATFISH GNTARHARRY GDTKLAQICG TIAADEKRHE SAYERIVEKL FEVDPDYTVR AFADTMRKKV AMPAHLMYDG QDDGLFARFS AVAQRIGVYT ARDYVDILEF LVRRWGVQEL TGLSGEGRRA QEFVCELGPR FRRLEERAHD NKAKDPEFAP FSWIHGRQVQ L GRMZM2G027673_P04 NP_001140670 hypothetical protein LOC100272745 seq=translation; coord=4:102090235..102091953:-1; parent_transcript=GRMZM2G027673_T04; parent_gene=GRMZM2G027673 MVTEEALPTY QTMLNTLDGG VRDETGASST SWAVWTRAWA AEENRHGDLM NKYLFLTGRV DMRQIEKTVQ YLIASGMDPK TETNPYMGFV YTSFQERATF ISHGNTARHA RRYGDTKLAQ ICGTIAADEK RHESAYERIV EKLFEVDPDY TVRAFADTMR KKVAMPAHLM YDGQDDGLFA RFSAVAQRIG VYTARDYVDI LEFLVRRWGV QELTGLSGEG RRAQEFVCEL GPRFRRLEER AHDNKAKDPE FAPFSWIHGR QVQL 6.55404 -0.319709 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 7889 7889 7689 7518 7073 6787 6203 5688 4108 3253 1524 978 354 149 68 40 20 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7905 7905 7705 7534 7073 6705 6063 5527 3694 2233 684 121 20 1 0 0 1 2 3 4 5 3849 3409 573 80 5 0 0 1 2 3 4 5 6 7 1338 4637 1580 294 38 13 0 16 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3124 (charge 2) 1174.6 2 155.081 157.061 157.097 158.092 159.112 169.097 169.134 171.113 173.092 173.128 175.119 181.061 181.097 183.076 183.112 183.149 184.107 185.056 185.092 187.107 191.084 194.129 195.088 197.103 197.129 198.087 199.071 199.108 201.124 208.072 212.139 216.098 218.15 221.128 225.099 226.153 229.129 233.165 240.135 242.149 244.166 246.156 249.122 254.078 257.128 261.16 269.161 272.087 274.155 276.137 282.118 291.165 295.104 302.15 309.132 313.115 315.202 318.149 320.16 326.148 328.167 331.126 343.234 345.161 354.166 362.677 366.178 367.162 371.683 389.182 428.226 444.22 461.246 483.296 485.239 503.247 504.247 515.323 518.268 552.281 555.837 568.246 574.281 595.29 609.797 638.305 655.327 674.358 707.327 725.339 729.426 731.437 742.359 744.367 753.395 761.345 802.419 855.443 965.482 1002.51 18 8 2 15 5 9 4 16 28 26 70 5 3 2 3 5 2 7 5 6 3 5 5 6 3 5 6 7 16 7 11 6 5 18 27 13 4 29 6 2 11 7 11 7 5 7 4 10 6 3 2 12 6 76 2 7 13 2 12 2 40 2 2 2 6 4 5 5 23 5 9 3 6 5 4 17 5 3 65 2 7 2 8 2 7 6 44 2 2 7 44 4 100 10 2 5 5 27 5 12 GRMZM2G013342_P01 NP_001130880 hypothetical protein LOC100191984 seq=translation; coord=1:290448166..290449263:1; parent_transcript=GRMZM2G013342_T01; parent_gene=GRMZM2G013342 MAMATQASAA TRHLLAAAWA PAAKPRQLSS QLALPSSSSR GPAPLRASTE EAVEAPKGFV APQLDPSTPS PIFGGSTGGL LRKAQVEEFY VITWTSPKEQ VFEMPTGGAA IMREGPNLLK LARKEQCLAL GTRLRSKYKI TYQFYRVFPN GEVQYLHPKD GVYPEKVNPG REGVGQNFRS IGKNVNPIDV KFTGKATFD 6.85483 -0.334382 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 6122 6122 6094 5871 5701 5485 5099 4766 3475 2194 1463 735 394 172 78 38 10 3 2 1 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6090 6090 6062 5839 5660 5428 4995 4653 2920 1668 522 154 46 1 0 0 1 2 3 4 5 2817 2696 505 102 3 0 0 1 2 3 4 5 6 7 1264 3289 1317 225 26 1 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3126 (charge 2) 1060.52 2 152.057 153.102 155.081 155.154 156.077 157.061 157.097 157.108 158.092 159.076 159.092 161.092 166.061 167.081 169.097 169.133 171.076 171.113 172.081 173.092 173.128 175.071 175.119 181.097 183.113 183.149 185.056 185.091 186.123 187.071 189.087 193.097 194.129 195.076 195.113 197.128 198.124 199.071 199.108 201.087 203.103 211.144 213.087 216.134 217.081 221.128 226.155 227.102 229.117 231.097 234.145 241.081 244.165 246.154 249.123 251.103 254.163 256.13 259.092 272.173 283.152 284.126 288.202 293.16 300.156 312.119 315.202 330.132 331.679 345.177 369.225 383.192 389.195 397.209 398.21 411.19 419.192 429.205 437.204 444.242 453.688 468.245 486.268 497.323 516.245 521.269 534.258 543.315 547.283 565.298 584.353 591.813 614.347 662.351 725.377 735.336 743.396 744.394 763.356 872.429 6 3 10 3 5 6 4 2 8 8 7 49 3 3 36 2 49 14 2 11 7 4 44 6 3 45 2 4 5 4 32 3 20 6 6 6 5 6 14 16 10 21 11 7 5 24 40 13 8 9 27 14 83 2 4 6 9 4 8 7 15 5 7 6 14 9 30 9 100 3 5 6 5 16 2 5 8 7 2 12 3 11 8 15 2 5 7 12 6 84 5 10 16 30 3 8 12 5 3 9 conta|P13645|K1CJ_HUMAN KERATIN, TYPE I CYTOSKELETAL 10 (CYTOKERATIN 10) (K10) (CK 10) 5.43585 -0.29383 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 3627 3627 3488 3379 3098 2843 2555 2330 1366 834 499 348 146 71 28 12 4 1 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3629 3629 3490 3377 3079 2785 2434 2223 1080 588 133 48 2 1 1 0 0 1 2 3 4 5 6 1917 1450 220 43 0 2 0 0 1 2 3 4 5 6 7 663 2160 648 128 28 1 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3129 (charge 2) 1300.59 2 152.057 155.082 156.113 157.097 157.108 158.092 159.076 166.061 167.055 169.097 169.134 171.076 171.112 173.056 173.092 175.119 179.092 181.097 185.092 187.108 190.061 193.097 197.092 197.128 199.071 199.108 201.087 207.089 209.091 212.103 214.118 218.056 224.115 226.154 230.077 235.083 239.115 240.134 244.166 249.097 252.109 256.129 258.107 267.109 271.175 272.173 283.14 285.155 288.203 310.14 311.172 326.173 354.176 359.028 364.122 367.197 372.187 381.151 388.136 397.208 443.226 446.236 452.254 454.731 488.246 510.199 517.272 536.257 540.234 553.297 584.261 592.782 599.269 633.776 642.294 646.313 656.403 660.303 662.359 717.348 719.354 744.284 773.391 776.37 788.384 791.409 833.394 851.41 859.431 876.401 890.421 903.45 907.442 920.45 922.456 930.444 932.406 1032.47 1049.49 1051.48 11 7 2 4 2 7 5 6 2 13 2 5 2 5 8 43 5 2 5 20 2 6 5 2 2 9 5 10 2 7 11 5 7 17 11 48 4 5 6 5 43 4 2 7 5 4 8 2 100 2 2 2 6 17 7 2 2 9 2 2 2 5 4 2 2 2 7 2 2 4 2 21 2 4 5 5 2 2 7 7 2 2 2 2 6 8 5 2 7 2 7 2 2 18 2 2 4 6 23 5 GRMZM2G028834_P01 seq=translation; coord=2:233905742..233910753:1; parent_transcript=GRMZM2G028834_T01; parent_gene=GRMZM2G028834 MRPILMKGHE RPLTFLRYNR DGDLLFSCAK DHTPTVWYAD NGDRLGTYRG HNGAVWTCDV SRDSARLITG SADQTAKLWE VSTGKELFSF RFDAPARSVE FAIGDALAVV TTDNFMDHVP TVQVKRIAED IDDQTEESAL VITGIKGRIN RAVWGPLNRT IITAGEDATI RIWDSETGQL LKESDKESGH QKTISSLSKS LDWSHFITGS LDKSAKLWDT RTLTLIKTYV TERPVNAVDI SPTHDTVVLG GGQDAMNVTM TDRRAGKFEA KFYHKILQEE IGGVKGHFGP INALAFNPDG RSFSSGGEDG YVRLHHFDSD YFSIKM GRMZM2G028834_P02 seq=translation; coord=2:233905762..233910628:1; parent_transcript=GRMZM2G028834_T02; parent_gene=GRMZM2G028834 MRPILMKGHE RPLTFLRYNR DGDLLFSCAK DHTPTVWYAD NGDRLGTYRG HNGAVWTCDV SRDSARLITG SADQTAKLWE VSTGKELFSF RFDAPARSVE FAIGDALAVV TTDNFMDHVP TVQVKRIAED IDDQTEESAL VITGIKGRIN RAVWGPLNRT IITAGEDATI RIWDSETGQL LKESDKESGH QKTISSLSKS LDWSHFITGS LDKSAKLWDT RTLTLIKTYV TERPVNAVDI SPTHDTVVLG GGQDAMNVTM TDRRAGKFEA KFYHKILQEE IGGVKGHFGP INALAFNPDG RSFSSGGEDG YVRLHHFDSD YFSIKM GRMZM2G028834_P03 seq=translation; coord=2:233905762..233910320:1; parent_transcript=GRMZM2G028834_T03; parent_gene=GRMZM2G028834 MRPILMKGHE RPLTFLRYNR DGDLLFSCAK DHTPTVWYAD NGDRLGTYRG HNGAVWTCDV SRDSARLITG SADQTAKLWE VSTGKELFSF RFDAPARSVE FAIGDALAVV TTDNFMDHVP TVQVKRIAED IDDQTEESAL VITGIKGRIN RAVWGPLNRT IITAGEDATI RIWDSETGQL LKESDKESGH QKTISSLSKS LDWSHFITGS LDKSAKLWDT RTLTLIKTYV TERPVNAVDI SPTHDTVVLG GGQDAMNVTM TDRRAGKFEA KFYHKILQEE IGGVKGHFGP INALAFNPDG RSFSSGGEDG YVRLHHFDSD YFSIKM GRMZM2G143330_P01 NP_001147501 eukaryotic translation initiation factor 3 subunit 2 seq=translation; coord=7:7507005..7510800:-1; parent_transcript=GRMZM2G143330_T01; parent_gene=GRMZM2G143330 MRPILMKGHE RPLTFLRYNR DGDLLFSCAK DHTPTVWYAD NGDRLGTYRG HNGAVWTCDV SRDSARLITG SADQTAKLWD VSTGKELFSF RFDAPARSVE FAIGDALAVV TTDNFMDHVP TVQVKRIAED IDDQTEESAL VITGIKGRIN RAVWGPLNRT IITAGEDATV RIWDSETGQL LKESDKESGH QKTISSLSKS LDWSHFITGS LDKSAKLWDT RTLTLIKTYV TERPVNAVDI SPTHDTVVLG GGQDAMNVTM TDRRAGKFEA KFYHKILQEE IGGVKGHFGP INALAFNPDG RSFSSGGEDG YVRLHHFDSD YFSIKM 5.09527 -0.308804 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 8214 8214 8108 7857 7438 6571 4517 3610 1775 1006 412 215 77 39 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8262 8262 8156 7905 7470 6552 4250 2893 872 271 124 24 3 1 0 0 1 2 3 4 5 4456 3227 550 28 2 0 0 1 2 3 4 5 6 7 1376 5214 1239 372 55 3 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3130 (charge 2) 1104.59 2 155.081 156.077 157.061 157.097 158.092 159.076 167.082 168.077 169.098 171.076 172.071 173.128 174.087 175.072 175.119 183.15 184.072 185.056 185.091 185.165 186.087 186.123 187.071 187.144 189.086 193.097 197.128 198.087 198.124 199.071 199.108 199.18 202.082 203.066 207.089 212.103 215.139 218.15 226.155 227.175 230.114 234.145 240.096 244.092 246.181 258.107 267.109 275.126 276.112 285.133 297.155 299.135 315.165 319.198 327.129 331.125 346.656 363.183 382.705 392.691 395.182 398.165 403.207 413.17 414.172 423.242 430.23 432.171 447.256 449.198 496.265 510.256 518.262 544.302 546.771 554.299 562.283 565.247 575.28 595.25 628.305 633.323 643.27 647.314 656.807 667.355 685.321 692.301 720.353 725.357 764.404 777.372 784.375 789.355 821.427 845.474 860.413 878.42 880.417 888.406 3 2 7 4 7 11 2 2 3 4 4 2 3 6 21 4 4 5 3 11 2 2 2 3 3 3 3 3 2 3 4 100 29 3 2 4 9 6 4 19 3 14 3 5 4 2 2 3 2 3 2 3 3 9 3 2 6 8 3 2 10 2 2 2 4 3 8 3 8 2 4 4 2 2 2 3 6 3 11 3 8 5 2 4 3 5 2 7 6 11 3 11 2 4 5 2 3 20 2 2 GRMZM2G117707_P02 NP_001150866 phospho-2-dehydro-3-deoxyheptonate aldolase 1 seq=translation; coord=7:166462601..166467163:-1; parent_transcript=GRMZM2G117707_T02; parent_gene=GRMZM2G117707 MALATNSAAA AAAAVSGGAA SQPHRAATFL PLKRRTISAI HAADPSKNNG PAVPAAAAAK SSASAVATPE KNPAAPVKWA VDSWKSKKAL QLPEYPNQEE LDTVLKTIET FPPVVFAGEA RHLEERMAEA AMGRAFILQG GDCAESFKEF HANNIRDTFR ILLQMGAVLM FGGQVPVVKV GRMAGQFAKP RSEPLEERDG VKLPSYRGDN VNGDDFTEKS RVPDPQRMIR AYSQSVATLN LLRALATGGY AAMQRVTQWN LDFMDHSEQG DRYRELAHRV DEALGFMTAA GLTVDHPIMT TTDFWTSHEC LLLPYEQSLT RKDSTSGLFY DCSAHMLWVG ERTRQLDGAH VEFLRGVANP LGIKVSDKMN PSDLVKLIEI LNPSNKPGRI TIITRMGAEN MRVKLPHLIR AVRNAGLIVT WITDPMHGNT IKAPCGLKTR PFDSILAEVR AFFDVHDQEG SHPGGIHLEM TGQNVTECIG GSRTVTFDDL SDRYHTHCDP RLNASQSLEL AFIIAERLRK RRMRSGLNNS LPLPPLAF GRMZM2G365160_P01 C4J284 Putative uncharacterized protein seq=translation; coord=2:212180089..212183936:-1; parent_transcript=GRMZM2G365160_T01; parent_gene=GRMZM2G365160 MALATNSAAA AAAVSGGVAS QPRRAAVFLP LKRRTISAIH AADPSKNNGP AVPAAAGANS SASAVATPEK KPAAHGKWAV YSWRSKKALQ LPEYPNAEEL DAVLKTIETF PPVVFAGEAR RLEERMAEAA MGRAFVLQGG DCAESFKEFH ANNIRDTFRV LLQMGVVLMF GGQMPVVKVG RMAGQFAKPR SEPFEEKDGV KLPSYRGDNV NGDDFTEKSR VPDPQRMIRA YAQSVATLNL LRAFATGGYA AMQRVTQWNL DFMDHNEQGD RYRELAHRVD DALGFMTASG LTVDHPIMTT TDFWTSHECL LLPYEQALTR EDSTSGLFYD CSAHMLWVGE RTRQLDGAHV EFLRGVANPL GIKVSDKMNP SELVKLIDIL NPSNKPGRIT IITRMGAENM RVKLPHLIRA VRNAGLIVTW ITDPMHGNTI KAPCGLKTRP FDSILAEVRA FFDVHDQEGS HPGGVHLEMT GQNVTECIGG SRTVTFDDLS DRYHTHCDPR LNASQSLELA FIIAERLRKR RMRSGLNSSL PLPPLAF GRMZM2G117707_P01 NP_001150866 phospho-2-dehydro-3-deoxyheptonate aldolase 1 seq=translation; coord=7:166462601..166467163:-1; parent_transcript=GRMZM2G117707_T01; parent_gene=GRMZM2G117707 MALATNSAAA AAAAVSGGAA SQPHRAATFL PLKRRTISAI HAADPSKNNG PAVPAAAAAK SSASAVATPE KNPAAPVKWA VDSWKSKKAL QLPEYPNQEE LDTVLKTIET FPPVVFAGEA RHLEERMAEA AMGRAFILQG GDCAESFKEF HANNIRDTFR ILLQMGAVLM FGGQVPVVKV GRMAGQFAKP RSEPLEERDG VKLPSYRGDN VNGDDFTEKS RVPDPQRMIR AYSQSVATLN LLRALATGGY AAMQRVTQWN LDFMDHSEQG DRYRELAHRV DEALGFMTAA GLTVDHPIMT TTDFWTSHEC LLLPYEQSLT RKDSKDYACL FVDAWCGGLV GALGTSYMLG SYRRVPVALW KTVASIMCCN CMPSFHVLGA GRMZM2G145692_P01 seq=translation; coord=5:197981348..197982126:1; parent_transcript=GRMZM2G145692_T01; parent_gene=GRMZM2G145692 MALATNSAAA AAAVSGGAAS QSRRAVAFLP LKRRTISAIH AADPSKNNGP VVPAAAGAKS SSSAVATPEK KPAALGNWAV DSWRSKKALQ LPEYSNAEEL DAVLKTIETF PPVVFAGEAR HLEERMAEAA MGRAFVLQGS DCAESFKEFH ANNICDTFRI LLQMGVVLMF GGQVPVVKVP TDTSNPPPNS GHQVCRFARS DPTLLCVVGG EDGWPVRQVK 5.31389 -0.272507 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2219 2219 2111 2046 1912 1752 1608 1394 1258 898 573 332 175 83 45 20 9 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2226 2226 2118 2053 1914 1746 1534 1265 1123 557 279 85 15 1 0 0 1 2 3 4 1190 841 176 21 0 0 1 2 3 4 5 6 7 288 1200 516 195 20 1 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3131 (charge 2) 836.375 2 154.087 155.081 155.118 157.097 157.109 157.133 158.064 158.092 159.077 159.093 159.113 165.138 166.061 167.118 169.097 169.134 170.138 171.076 171.112 172.108 173.092 173.127 174.056 175.09 175.119 176.093 176.122 177.086 181.097 181.134 183.076 183.113 183.149 185.091 187.072 187.108 187.144 189.07 194.129 195.113 197.129 198.086 201.087 203.085 206.094 211.144 213.087 215.114 218.15 226.154 229.1 232.14 235.119 240.134 244.166 248.15 250.152 254.113 256.13 258.146 262.05 268.165 272.124 274.124 278.184 286.151 301.187 304.692 309.156 311.172 313.188 323.208 332.128 341.185 343.161 346.154 353.217 363.181 399.18 414.272 417.193 426.235 434.218 436.223 466.277 487.291 499.299 505.255 507.254 511.324 519.776 608.377 610.387 616.287 634.297 636.304 681.372 695.423 705.331 707.336 2 19 1 3 4 5 12 20 4 3 6 2 2 3 3 26 3 1 4 6 23 4 1 100 54 9 4 3 1 3 3 2 5 4 2 2 11 2 4 5 9 2 25 40 1 1 2 18 2 6 1 18 3 8 9 6 6 4 2 1 4 1 21 2 2 3 14 2 5 1 3 4 6 1 6 11 5 12 1 3 4 5 20 2 2 3 22 41 4 8 3 10 1 7 30 3 2 2 23 3 GRMZM2G146951_P01 NP_001130383 hypothetical protein LOC100191479 seq=translation; coord=10:47749003..47752985:1; parent_transcript=GRMZM2G146951_T01; parent_gene=GRMZM2G146951 MEPSAWAVAF AALCIVALAP PASGFYLPGV APNDFEKKDP LPVKVNKLTS IKTQLPYSYY SLPFCKPDTI VDSAENLGEV LRGDRIENSP YTFEMREPQM CQVVCKISVG EKEAKLLKEK IEDEYRVNMI LDNLPLVVPI QRVDQEGAYF YQHGFHVGAK GKYSGSKDEK YFIHNHLSFT VKYHRDEQRD VSRIVAFEVK PYSVKHEYEG QWNDKKTRLT TCDPHAQRII TSSESPQEVE VGKDIIFTYD VDFKESDIKW ASRWDSYLLM TDDQIHWFSI VNSLMIVLFL SGMVAMIMLR TLYRDISKYN QLETQEEAQE ETGWKLVHGD VFRPPSNSDW LCVYVGTGVQ FFGMLLVTMV FAVLGFLSPS NRGGLMTAML LLWVFMGLLA GYSSSRLYKL FKGSEWKNIA LRTAFTFPGS VFAIFFFLNA LIWGQKSSGA VPFTTMFALV LLWFGISVPL VFVGSFLGFK KPTIEDPVKT NKIPRQIPEQ AWYMNPIFSI LIGGILPFGA VFIELFFILT SIWLHQFYYI FGFLFLVFLI LIVTCAEISI VLCYFQLCSE DYLWWWRSYL TSGSSALYLF LYATFYFFTK LEITKFVSAV MYFGYMLIAS YAFFALTGTI GFYACFLFTR LIYSSVKIE 4.81764 -0.275294 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 4390 4390 4390 4390 4009 3782 3174 2442 1696 1101 649 318 152 63 33 3 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4383 4383 4383 4383 4002 3773 3117 2349 1480 695 272 58 1 0 0 1 2 3 4 5 6 1327 1994 836 211 18 12 0 0 1 2 3 4 5 939 2312 829 288 30 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3133 (charge 3) 1433.65 3 152.056 155.081 155.118 157.097 157.134 158.06 158.092 159.076 159.092 160.095 169.061 169.097 169.134 170.06 171.112 173.092 173.129 175.087 175.119 176.082 181.061 183.113 183.148 185.092 185.165 186.087 186.123 187.073 187.087 187.107 191.118 193.097 194.092 195.076 197.129 199.071 199.107 200.139 203.119 209.092 212.103 213.087 216.098 221.103 226.119 227.102 230.078 234.145 239.115 240.097 244.129 246.158 249.098 253.093 257.196 265.118 267.109 270.124 272.171 275.208 277.639 284.102 293.112 305.686 323.136 341.144 358.172 375.199 390.235 401.196 412.16 430.171 431.173 443.578 457.243 470.758 487.254 492.765 504.286 513.314 542.297 555.294 559.214 575.274 590.823 598.226 601.321 610.369 616.233 626.339 633.258 655.324 673.331 682.595 686.314 690.357 697.4 703.339 744.291 790.367 13 14 8 23 7 6 16 26 100 10 10 13 15 13 10 9 6 7 74 6 7 10 7 24 8 11 6 13 7 17 6 9 8 6 17 9 10 12 11 8 9 7 7 14 27 6 7 7 30 18 17 13 22 13 12 18 85 12 24 42 8 6 7 14 11 6 7 11 14 6 57 46 16 14 15 10 15 18 18 19 9 10 22 22 12 7 10 36 15 7 20 6 6 7 7 19 27 10 14 15 GRMZM2G035520_P01 C4J9I5 Putative uncharacterized protein seq=translation; coord=3:93414907..93420917:1; parent_transcript=GRMZM2G035520_T01; parent_gene=GRMZM2G035520 MAEKEGNLEA VLKEAVDLEN IPLEEVFENL RCSREGLSTE QAQQRLEIFG PNKLEEKEES KFLKFLGFMW NPLSWVMEAA AIMAIALANG GGKPPDWQDF VGIITLLVIN STISFIEENN AGNAAAALMA RLAPKAKVLR DGRWTEEDAA ILVPGDIVSI KLGDIIPADA RLLEGDPLKI DQSALTGESL PVTKGPGDGV YSGSTVKQGE IEAVVIATGV HTFFGKAAHL VDSTNQVGHF QKVLTAIGNF CICSIAVGMF VEIIVMYPIQ HRAYRPGIDN LLVLLIGGIP IAMPTVLSVT MAIGSHRLSQ QGAITKRMTA IEEMAGMDVL CSDKTGTLTL NKLTVDRNLV EVFERGTTQD QVILMAARAS RTENQDAIDT AIVGMLADPK EARAGIQEVH FLPFNPTDKR TALTYIDGDG KMYRVSKGAP EQILHLAHNK SDIERRVHAM IDKFAERGLR SLAVAYQEVP EGRKESPGGP WHFVGLMPLF DPPRHDSAET IRRALNLGVN VKMITGDQLA IGKETGRRLG MGTNMYPSSA LLGQNKDESI AALPVDDLIE KADGFAGVFP EHKYEIVKRL QARKHICGMT GDGVNDAPAL KKADIGIAVA DATDAARSAS DIVLTEPGLS VIISAVLTSR AIFQRMKNYT IYAVSITIRI VLGFMLLALI WKFDFPPFMV LIIAILNDGT IMTISKDRVK PSPLPDSWKL AEIFTTGVVL GGYQAMMTVI FFWAAYKTNF FPKIFHVESL EKTAQDDFQK LASAVYLQVS TISQALIFVT RSRSWSFVER PGFLLVFAFL VAQLIATLIA VYADWAFTSI KGIGWGWAGI VWLYNIIFYF PLDIIKFLIR YALSGKAWDL VIEQRIAFTR KKDFGREERE LKWAHAQRTL HGLQAPDAKM FPEKAGYNEL NQMAEEAKRR AEIARLRELH TLKGHVESVV KLKGLDIETI QQSYTV GRMZM2G035520_P02 C4J9I5 Putative uncharacterized protein seq=translation; coord=3:93414907..93420917:1; parent_transcript=GRMZM2G035520_T02; parent_gene=GRMZM2G035520 MAEKEGNLEA VLKEAVDLEN IPLEEVFENL RCSREGLSTE QAQQRLEIFG PNKLEEKEES KFLKFLGFMW NPLSWVMEAA AIMAIALANG GGKPPDWQDF VGIITLLVIN STISFIEENN AGNAAAALMA RLAPKAKVLR DGRWTEEDAA ILVPGDIVSI KLGDIIPADA RLLEGDPLKI DQSALTGESL PVTKGPGDGV YSGSTVKQGE IEAVVIATGV HTFFGKAAHL VDSTNQVGHF QKVLTAIGNF CICSIAVGMF VEIIVMYPIQ HRAYRPGIDN LLVLLIGGIP IAMPTVLSVT MAIGSHRLSQ QGAITKRMTA IEEMAGMDVL CSDKTGTLTL NKLTVDRNLV EVFERGTTQD QVILMAARAS RTENQDAIDT AIVGMLADPK EARAGIQEVH FLPFNPTDKR TALTYIDGDG KMYRVSKGAP EQILHLAHNK SDIERRVHAM IDKFAERGLR SLAVAYQEVP EGRKESPGGP WHFVGLMPLF DPPRHDSAET IRRALNLGVN VKMITGDQLA IGKETGRRLG MGTNMYPSSA LLGQNKDESI AALPVDDLIE KADGFAGVFP EHKYEIVKRL QARKHICGMT GDGVNDAPAL KKADIGIAVA DATDAARSAS DIVLTEPGLS VIISAVLTSR AIFQRMKNYT IYAVSITIRI VLGFMLLALI WKFDFPPFMV LIIAILNDGT IMTISKDRVK PSPLPDSWKL AEIFTTGVVL GGYQAMMTVI FFWAAYKTNF FPKIFHVESL EKTAQDDFQK LASAVYLQVS TISQALIFVT RSRSWSFVER PGFLLVFAFL VAQLVSSYSL SL 5.21562 -0.242587 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 5915 5915 5827 5692 5358 5172 4853 4531 3473 2873 1679 1099 690 395 212 116 59 26 16 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5861 5861 5773 5638 5302 5102 4714 4312 3175 2023 886 273 62 3 2 2 1 0 0 1 2 3 4 5 2640 2379 736 155 12 0 0 1 2 3 4 5 6 7 1201 3068 1295 301 46 7 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3134 (charge 2) 1246.6 2 152.057 153.066 155.082 155.118 157.097 157.109 158.093 159.076 161.092 167.081 169.061 169.097 170.063 171.076 171.113 173.092 173.129 175.119 176.122 181.061 183.113 183.149 185.092 187.071 188.075 189.087 194.129 195.112 197.128 199.071 200.103 201.123 203.103 207.113 213.086 216.098 225.099 227.102 231.098 239.094 240.098 244.165 254.149 258.145 262.151 269.125 272.163 274.103 282.145 286.151 297.147 300.155 303.177 311.136 323.172 328.161 337.151 341.182 351.166 359.155 369.177 371.19 380.156 383.193 397.182 410.165 413.223 414.212 424.218 431.237 432.24 434.204 439.198 446.188 447.708 452.213 456.219 485.246 502.273 581.26 613.307 614.31 625.318 630.331 632.34 678.344 698.358 724.336 741.365 759.375 761.375 816.391 843.397 860.422 862.42 911.432 930.434 931.43 947.454 949.456 14 28 7 5 6 3 14 19 8 3 44 6 4 30 13 7 16 74 5 2 12 2 8 100 10 12 3 2 2 2 11 16 10 6 10 7 13 7 13 9 17 3 30 10 2 7 6 3 19 22 6 12 31 13 3 9 3 8 15 3 15 2 3 3 7 2 3 12 2 35 7 14 6 3 5 3 6 7 74 3 23 7 5 75 6 2 5 6 13 69 6 3 3 65 6 16 7 3 71 7 GRMZM2G015419_P04 NP_001105980 lipoxygenase seq=translation; coord=4:233625700..233629448:1; parent_transcript=GRMZM2G015419_T04; parent_gene=GRMZM2G015419 GRMZM2G015419_P02 NP_001105980 lipoxygenase seq=translation; coord=4:233625689..233629426:1; parent_transcript=GRMZM2G015419_T02; parent_gene=GRMZM2G015419 GRMZM2G015419_P05 NP_001105980 lipoxygenase seq=translation; coord=4:233625821..233629381:1; parent_transcript=GRMZM2G015419_T05; parent_gene=GRMZM2G015419 4.34422 -0.248241 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 1198 1198 1134 1044 856 667 510 376 222 147 78 34 19 8 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1202 1202 1138 1034 844 620 465 287 146 93 49 8 5 1 0 0 1 2 3 4 5 428 626 136 14 3 0 0 1 2 3 4 5 6 7 468 565 149 11 8 0 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3138 (charge 2) 1664.68 2 153.066 155.081 164.034 169.133 170.092 170.137 171.076 171.096 172.107 173.091 181.06 182.068 196.071 197.128 198.087 213.086 217.117 229.117 239.096 245.059 259.093 262.085 276.155 278.111 280.164 284.123 295.139 298.1 299.061 308.158 311.171 326.171 327.172 341.146 344.164 359.192 372.224 380.157 394.208 396.158 399.171 413.168 418.18 423.189 430.211 455.214 458.207 470.226 488.233 496.202 503.612 509.197 523.25 527.205 529.302 534.222 552.235 569.249 617.279 628.25 638.242 670.297 674.295 702.299 739.29 753.34 767.294 771.351 785.293 817.367 828.37 835.349 836.352 852.372 867.384 885.392 892.37 949.391 981.411 996.429 1014.43 1057.43 1060.43 1071.5 1078.43 1107.47 1115.54 1125.47 1143.48 1145.49 1189.47 1207.48 1242.55 1306.53 1322.59 1339.6 1341.61 1385.57 1403.6 1405.62 8 3 8 43 37 3 1 1 1 2 100 25 2 24 12 1 2 3 2 20 3 67 3 1 1 11 7 2 2 1 2 17 3 2 2 6 5 2 2 2 2 8 2 12 3 10 2 2 9 2 2 7 2 2 2 2 10 3 2 2 2 5 2 3 2 5 2 27 2 2 12 20 8 6 2 30 15 35 3 7 17 2 6 2 17 3 2 13 23 3 8 17 5 5 5 39 8 2 21 3 GRMZM2G069095_P01 NP_001105380 vacuolar proton pump homolog1 seq=translation; coord=5:95903606..95910954:-1; parent_transcript=GRMZM2G069095_T01; parent_gene=GRMZM2G069095 MAAAAILPEL ATQVLIPVAA AVGIAFAVVQ WVLVSKVRVT PERRADGGAV KSGPSDYLIE EEEGLNDHNV VVKCAEIQTA ISEGATSFLF TEYKYVGLFM GIFAILIFLF LGSVEGFSTK SQPCHYIKDQ TCKPALANAI FSTIAFVLGA VTSLVSGFLG MKIATYANAR TTLEARKGVG KAFITAFRAG AVMGFLLAAS GLLVLYIAIN LFGIYYGDDW EGLFEAITGY GLGGSSMALF GRVGGGIYTK AADVGADLVG KVERNIPEDD PRNPAVIADN VGDNVGDIAG MGSDLFGSYA ESSCAALVVA SISSFGINHE FTPMVYPLLV SSVGIIACLI TTLFATDFFE IKAVDEIEPA LKKQLIISTI VMTIGIALIS WLGLPYTFTI FNFGVQKTVQ SWQLFLCVAV GLWAGLVIGF VTEYYTSNAY SPVQDVADSC RTGAATNVIF GLALGYKSVI IPIFAIAFSI FLSFSLAAMY GVAVAALGML STIATGLAID AYGPISDNAG GIAEMAGMSH RIRERTDALD AAGNTTAAIG KGFAIGSAAL VSLALFGAFV SRAAISTVDV LTPKVFIGLI VGAMLPYWFS AMTMKSVGSA ALKMVEEVRR QFNNIPGLME GTTKPDYATC VKISTDASIK EMIPPGALVM LTPLIVGILF GVETLSGVLA GALVSGVQIA ISASNTGGAW DNAKKYIEAG VSEHARTLGP KGSDPHKAAV IGDTIGDPLK DTSGPSLNIL IKLMAVESLV FAPFFAAHGG ILFKWL GRMZM2G069095_P02 NP_001105380 vacuolar proton pump homolog1 seq=translation; coord=5:95903606..95910785:-1; parent_transcript=GRMZM2G069095_T02; parent_gene=GRMZM2G069095 MVYPLLVSSV GIIACLITTL FATDFFEIKA VDEIEPALKK QLIISTIVMT IGIALISWLG LPYTFTIFNF GVQKTVQSWQ LFLCVAVGLW AGLVIGFVTE YYTSNAYSPV QDVADSCRTG AATNVIFGLA LGYKSVIIPI FAIAFSIFLS FSLAAMYGVA VAALGMLSTI ATGLAIDAYG PISDNAGGIA EMAGMSHRIR ERTDALDAAG NTTAAIGKGF AIGSAALVSL ALFGAFVSRA AISTVDVLTP KVFIGLIVGA MLPYWFSAMT MKSVGSAALK MVEEVRRQFN NIPGLMEGTT KPDYATCVKI STDASIKEMI PPGALVMLTP LIVGILFGVE TLSGVLAGAL VSGVQIAISA SNTGGAWDNA KKYIEAGVSE HARTLGPKGS DPHKAAVIGD TIGDPLKDTS GPSLNILIKL MAVESLVFAP FFAAHGGILF KWL 5.7193 -0.27899 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 8993 8993 8993 8993 8640 8313 7714 7103 6372 4909 3703 2470 1283 744 336 161 66 36 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9006 9006 9006 9006 8653 8309 7668 6870 5924 4347 2487 709 117 32 1 0 0 1 2 3 4 5 6 7 2456 3660 1876 717 231 60 4 3 0 1 2 3 4 5 6 7 1655 3538 2585 905 287 28 5 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3140 (charge 3) 1359.7 3 155.081 155.117 157.097 157.108 157.133 158.093 159.076 166.061 169.097 169.133 171.077 171.112 173.092 173.128 175.119 176.123 177.102 183.076 183.113 186.123 187.073 187.107 189.086 192.111 195.113 197.129 199.071 199.108 201.087 203.121 209.104 212.102 215.139 218.15 221.104 226.117 231.116 239.162 240.134 243.134 244.164 246.156 249.159 250.163 255.145 258.107 264.17 267.108 272.171 275.138 277.154 288.202 292.166 300.147 311.171 329.181 336.13 339.167 341.229 343.233 354.139 366.187 371.193 378.194 383.215 384.217 387.194 400.23 406.196 413.712 446.278 453.205 457.258 462.27 489.276 494.244 508.299 512.257 513.258 534.299 535.249 561.294 573.305 575.263 581.276 582.267 599.289 601.3 627.322 644.341 655.357 662.352 674.314 698.358 700.341 755.38 809.39 826.415 937.443 955.459 17 7 6 5 14 12 16 5 11 7 6 9 14 13 100 7 13 11 7 6 7 7 12 24 5 5 5 5 13 21 12 7 24 8 6 12 7 10 8 20 10 35 60 7 6 8 5 10 66 7 13 7 6 14 9 6 6 6 10 5 12 13 5 6 52 9 7 6 5 6 9 10 6 5 5 7 9 19 8 7 7 7 8 5 8 9 82 7 5 6 5 10 5 6 6 29 5 34 6 25 GRMZM2G059191_P01 NP_001149023 ferredoxin--NADP reductase, leaf isozyme seq=translation; coord=8:157455159..157458787:-1; parent_transcript=GRMZM2G059191_T01; parent_gene=GRMZM2G059191 5.44241 -0.294184 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 7531 7531 7400 7005 6608 6151 4397 2918 2049 1329 910 338 150 53 30 11 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7533 7533 7402 6990 6569 6060 3950 2377 1258 691 439 31 4 1 0 0 1 2 3 4 5 3584 3037 727 147 39 0 0 1 2 3 4 5 6 7 1541 4669 1075 229 16 1 0 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3141 (charge 2) 1402.72 2 153.065 155.081 159.077 166.05 169.097 171.076 172.108 173.092 175.119 183.076 183.112 184.079 185.092 187.072 187.108 189.087 194.129 198.087 200.103 201.106 212.102 216.098 218.149 226.119 228.134 230.113 240.098 242.114 244.129 252.134 254.115 258.108 270.145 272.124 283.139 287.135 297.156 299.17 301.151 303.213 311.135 312.138 315.202 316.206 323.134 329.145 333.188 351.166 354.214 368.193 372.224 384.152 394.172 397.212 400.183 402.162 416.248 431.273 443.261 497.199 502.236 514.298 527.247 537.757 545.264 560.317 573.271 585.336 626.277 671.349 686.382 688.376 703.353 799.41 815.422 817.419 871.418 888.451 916.471 986.458 1003.48 1005.48 1017.52 1057.5 1068.53 1074.52 1076.52 1086.53 1104.55 1106.55 1145.55 1203.62 2 9 4 9 4 11 5 5 13 35 3 3 3 3 6 2 5 7 100 10 3 3 3 8 1 7 32 1 2 2 2 17 3 2 4 2 4 10 2 3 23 5 16 2 2 12 3 2 2 2 31 1 2 2 2 2 3 6 19 2 2 12 2 3 4 5 2 8 2 2 11 9 6 2 6 7 2 14 9 2 14 2 7 2 2 13 2 2 14 3 5 8 GRMZM2G122871_P01 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104066600..104071298:1; parent_transcript=GRMZM2G122871_T01; parent_gene=GRMZM2G122871 MALVLHSGAG NKNAFKALIA AEYSGIKVEL TKDFEMGVSN KTPEFLKMNP LGKVPVLETP DGPVFESNAI ARYVARLKDD NPLFGSSRIE QAHVEQWMDF AATEVDPGVA WYLYPRLGYL PYVSTTEETA ISSLKRSLGA LNTHLASNTY LVGHAVTLAD IVMTCNLYHG IARILTKTFT SDFPHVERYF WTMVNQPNFK KVIGEVKQAE SAPPIPKKAA PSKEPKAKDV KKEAPKEAPK PKVVEAPAEE EAPKPKPKNP LDLLPPSKMV LDDWKRLYSN TKTNFREVAI KGFWDMYDPE GYSLWFCDYK YNDENTVSFV TLNKVGGFLQ RMDLCRKYAF GKMLVIGSEP PFKLKGLWLF RGQDVPKFVM DEVYDMELYE WTKVDISDEA QKERVNAMIE DQEPFEGEAL LDAKCFK GRMZM2G122871_P04 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104068352..104071134:1; parent_transcript=GRMZM2G122871_T04; parent_gene=GRMZM2G122871 MGVSNKTPEF LKMNPLGKVP VLETPDGPVF ESNAIARYVA RLKDDNPLFG SSRIEQAHVE QWMDFAATEV DPGVAWYLYP RLGYLPYVST TEETAISSLK RSLGALNTHL ASNTYLVGHA VTLADIVMTC NLYHGIARIL TKTFTSDFPH VERYFWTMVN QPNFKKVIGE VKQAESAPPI PKKAAPSKEP KAKDVKKEAP KEAPKPKVVE APAEEEAPKP KPKNPLDLLP PSKMVLDDWK RLYSNTKTNF REVAIKGFWD MYDPEGYSLW FCDYKYNDEN TVSFVTLNKV GGFLQRMDLC RKYAFGKMLV IGSEPPFKLK GLWLFRGQDV PKFVMDEVYD MELYEWTKVD ISDEAQKERV NAMIEDQEPF EGEALLDAKC FK GRMZM2G122871_P02 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104066600..104071298:1; parent_transcript=GRMZM2G122871_T02; parent_gene=GRMZM2G122871 MALVLHSGAG NKNAFKALIA AEYSGIKVEL TKDFEMGVSN KTPEFLKMNP LGKVPVLETP DGPVFESNAI ARYVARLKDD NPLFGSSRIE QAHVEQWMDF AATEVDPGVA WYLYPKVVEA PAEEEAPKPK PKNPLDLLPP SKMVLDDWKR LYSNTKTNFR EVAIKGFWDM YDPEGYSLWF CDYKYNDENT VSFVTLNKVG GFLQRMDLCR KYAFGKMLVI GSEPPFKLKG LWLFRGQDVP KFVMDEVYDM ELYEWTKVDI SDEAQKERVN AMIEDQEPFE GEALLDAKCF K GRMZM2G122871_P03 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104066600..104070943:1; parent_transcript=GRMZM2G122871_T03; parent_gene=GRMZM2G122871 MALVLHSGAG NKNAFKALIA AEYSGIKVEL TKDFEMGVSN KTPEFLKMNP LGKVPVLETP DGPVFESNAI ARYVARLKDD NPLFGSSRIE QAHVEQWMDF AATEVDPGVA WYLYPRLGYL PYVSTTEETA ISSLKRSLGA LNTHLASNTY LVGHAVTLAD IVMTCNLYHG IARILTKTFT SDFPHVERYF WTMVNQPNFK KVIGEVKQAE SAPPIPKKAA PSKEPKAKDV KKEAPKEAPK PKVVEAPAEE EAPKPKPKNP LDLLPPSKMV LDDWKRLYSN TKTNFREVAI KADGPVPQVR LWEDARDRL 6.26599 -0.338702 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 8711 8711 8610 8387 7893 7317 5947 4662 3043 1768 962 481 238 93 21 10 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8694 8694 8593 8370 7873 7251 5770 4191 2414 1192 446 201 88 1 0 0 1 2 3 4 5 6 7 2779 3925 1674 298 36 9 2 0 0 1 2 3 4 5 6 7 1995 4448 1786 382 95 5 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3144 (charge 3) 1718.93 3 153.102 155.081 158.092 159.076 169.097 171.076 171.149 172.153 173.092 173.129 175.119 181.061 181.097 183.076 183.113 186.124 187.071 197.128 198.088 198.124 199.108 199.144 201.087 212.103 226.155 227.159 229.118 235.119 240.134 244.165 259.093 270.145 280.129 298.14 299.141 303.177 315.201 328.186 330.129 341.182 351.166 358.207 369.177 372.261 399.191 416.225 427.181 440.91 451.305 469.317 523.079 532.484 538.283 541.294 543.283 547.29 550.293 555.491 557.227 561.098 564.305 567.814 576.817 597.407 599.26 601.31 610.847 612.835 627.257 628.263 630.321 632.332 651.855 654.831 655.839 660.861 662.833 672.1 678.591 682.849 694.461 696.883 699.383 704.343 712.853 731.427 759.37 760.901 765.499 797.365 876.526 887.438 894.54 909.468 998.494 1023.59 1077.56 1152.61 1223.66 1320.73 2 10 2 6 34 5 95 9 12 5 20 6 6 4 2 4 4 2 2 4 11 47 15 4 100 12 14 4 7 61 8 6 9 28 5 4 3 12 5 4 6 6 2 4 4 6 15 5 10 24 6 4 2 5 4 5 4 26 2 2 8 2 5 3 3 5 8 7 13 4 2 4 7 4 5 29 33 4 5 14 34 5 7 5 5 2 4 2 17 5 2 4 11 4 5 14 8 13 12 6 GRMZM2G064518_P01 NP_001145761 hypothetical protein LOC100279268 seq=translation; coord=6:104269642..104276065:-1; parent_transcript=GRMZM2G064518_T01; parent_gene=GRMZM2G064518 MAGYGEENQN TMSGYEEEEE EEVEEVEEVY EEEEEEEVEE EEEDGEGEAD EGAVASEPAA MAAETRSVVG GRGLAKAVGN VDTGGEDGRD ADSSGGDASG KIFVGGVAWE TTEETFTKHF QKYGAITDSV IMKDKHTRMP RGFGFVTFSD PSVLDRVLED EHVIDGRTVE VKRTVPKEEM SSKDGPKTKK IFVGGIPPSL TEDKLKEHFS SYGKVVEHQI MLDHSTGRSR GFGFVTFESE DAVERVMSEG RMHDLGGKQV EIKKAEPKKP GVGDSSSNGR HSRGGGHRDS YRGSGGNGFS GNSSGGGYGY SGGYRSTAAA HYGSTAYGAY GRGYGYGGTA GYGLGYGSAY GGSMYGGPYG AYAAYGGAYG GGAYGAPGGY GAGGYGSYGG AGGMGGGGSA GGRGSSRYHP YGK 4.21614 -0.240922 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 2568 2568 2568 2568 2452 1892 1514 1175 908 650 384 210 114 59 13 8 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2569 2569 2569 2569 2453 1891 1448 1124 806 481 269 120 38 6 1 0 0 1 2 3 4 5 1030 1115 317 94 17 0 0 1 2 3 4 5 6 7 617 1380 471 87 14 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3145 (charge 3) 2293.98 3 159.076 169.097 171.113 172.072 172.117 175.118 186.124 187.107 197.165 198.086 199.071 199.108 204.134 212.102 214.117 217.081 223.107 226.118 228.134 237.432 241.082 244.165 256.093 259.092 271.14 273.155 291.166 297.155 313.151 325.149 337.151 342.176 344.193 355.197 359.119 362.203 369.14 388.141 396.225 413.25 424.219 432.234 441.247 443.497 454.293 477.225 515.22 540.237 555.237 591.275 613.245 640.277 650.288 659.331 670.294 678.305 714.286 730.376 742.372 745.323 764.379 766.855 788.31 791.805 801.408 819.338 860.851 869.859 874.35 902.454 918.357 927.357 929.445 931.447 974.377 976.892 1053.94 1062.43 1089.41 1276.47 1279.55 1359.53 1377.52 1493.53 1563.6 1762.66 9 8 69 72 4 8 37 6 6 5 7 5 84 5 5 8 8 52 11 5 36 99 6 22 39 5 100 57 5 21 7 30 9 21 6 79 8 7 12 7 8 8 9 5 6 7 10 6 6 31 6 33 7 13 6 11 8 26 8 9 10 60 9 8 44 55 9 76 7 70 41 54 8 7 28 17 8 36 20 10 10 8 21 21 8 8 GRMZM2G030784_P01 P12863 Triosephosphate isomerase, cytosolic (TIM)(Triose-phosphate isomerase)(EC 5.3.1.1) seq=translation; coord=3:17824258..17828243:1; parent_transcript=GRMZM2G030784_T01; parent_gene=GRMZM2G030784 MGRKFFVGGN WKCNGTTDQV EKIVKTLNEG QVPPSDVVEV VVSPPYVFLP VVKSQLRQEF HVAAQNCWVK KGGAFTGEVS AEMLVNLGVP WVILGHSERR ALLGESNEFV GDKVAYALSQ GLKVIACVGE TLEQREAGST MDVVAAQTKA IAEKIKDWSN VVVAYEPVWA IGTGKVATPA QAQEVHASLR DWLKTNASPE VAESTRIIYG GSVTAANCKE LAAQPDVDGF LVGGASLKPE FIDIINAATV KSA GRMZM2G030784_P02 P12863 Triosephosphate isomerase, cytosolic (TIM)(Triose-phosphate isomerase)(EC 5.3.1.1) seq=translation; coord=3:17823962..17827573:1; parent_transcript=GRMZM2G030784_T02; parent_gene=GRMZM2G030784 MQLCNASMQT RPSVRHPCRD APAADSPPPP VPRSTATART FAVRSSAPQS NRHLTEMGRK FFVGGNWKCN GTTDQVEKIV KTLNEGQVPP SDVVEVVVSP PYVFLPVVKS QLRQEFHVAA QNCWVKKGGA FTGEVSAEML VNLGVPWVIL GHSERRALLG ESNEFVGDKV AYALSQGLKV IACVGETLEQ REAGSTMDVV AAQTKAIAEK IKDWSNVVVA YEPVWAIGTG KVATPAQAQE VHASLRDWLK TNASPEVAES TRIIYGGSVT AANCKELAAQ PDVDGFLVGG ASLKPEFIDI INAATVKSA 6.04006 -0.294637 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 5920 5920 5809 5706 5233 5017 4546 3241 2580 1385 800 274 147 59 26 13 10 8 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5923 5923 5812 5709 5227 4922 4438 2879 1929 820 359 53 10 1 0 0 1 2 3 4 5 6 2600 2654 595 74 5 1 0 0 1 2 3 4 5 6 7 1238 3588 936 144 14 4 1 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3146 (charge 2) 1261.6 2 152.057 155.082 155.118 157.097 158.092 159.076 166.05 167.081 169.061 169.097 171.077 171.113 172.072 172.108 173.092 173.128 175.071 175.119 181.061 183.076 183.111 185.092 186.087 186.123 187.143 188.103 198.087 199.072 199.107 201.123 204.134 212.103 213.087 216.098 224.104 226.154 227.102 229.118 241.081 242.113 244.165 252.098 256.092 259.14 270.107 272.171 276.165 284.126 287.135 288.14 296.124 301.115 311.134 314.135 326.172 329.145 339.13 346.174 357.141 358.142 363.198 374.167 376.155 397.21 428.179 444.725 454.763 466.275 492.24 526.25 537.306 543.286 563.276 601.376 632.357 656.345 662.346 672.412 684.313 703.325 773.38 785.387 791.391 800.372 803.45 825.407 852.419 854.398 870.425 884.449 888.441 890.446 908.498 932.491 967.487 975.473 977.487 1044.52 1046.51 1061.53 11 6 2 6 11 10 2 4 2 9 12 6 6 2 4 2 4 36 8 11 3 6 7 2 3 7 7 12 14 9 4 2 4 100 2 9 26 2 4 6 5 4 4 6 7 10 2 5 41 2 2 2 7 5 11 14 7 5 6 9 19 6 2 4 2 12 4 6 5 2 5 2 22 5 6 6 26 7 2 2 2 7 13 4 7 2 2 2 4 4 94 11 2 2 2 23 2 2 22 7 GRMZM2G430266_P01 seq=translation; coord=3:220854440..220857597:1; parent_transcript=GRMZM2G430266_T01; parent_gene=GRMZM2G430266 MMAPAAPPPP PPPPRRRRRS VEKLPTSEEL EQEIVVEEVR NPPMPPPSLA MFPPGTPPPP PPPLPPPSTV SRSKKKRSGS VGGAKELASA IATFYQKKRK SITMKAKRRP HAHHHHHSDG QYYSSPSSDA SASPDSTART TTAPPRPPPP PPPPPPPSSI FSNLFRNKKG GSKNRRIHSV APPQPPPPPP PARRSKKPPP PPSRPAPPAP PPPPQPVRTR PQRAHVHAST QQPPLYPRRV YYTYYPLPPP SPPLPPPPPP PPPLVPEGED DSPSVTASPA PAYCASPDVN TKADRFIESF REGLKLEKLN SYREKWQRQI QENAAVEIGE EEEGEFMVIG SLFGDDDEED EDGISLPQTP ATAVAVGF 6.64294 -0.308974 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 5711 5711 5711 5689 5484 5088 4484 3382 2339 1564 905 436 227 95 48 18 11 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5717 5717 5717 5695 5490 5078 4407 3132 1921 902 252 70 9 1 0 0 1 2 3 4 5 6 7 1584 2540 1124 381 73 12 2 2 0 1 2 3 4 5 6 7 954 2478 1658 502 94 29 1 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3147 (charge 3) 1261.72 3 155.081 155.118 156.077 157.097 157.109 157.134 158.092 159.076 166.049 166.061 167.081 167.118 169.097 169.133 171.113 172.108 173.092 173.128 175.091 175.119 176.123 181.095 183.076 183.113 183.149 185.091 185.129 185.165 186.124 187.071 187.144 190.624 194.129 195.074 195.113 197.128 200.103 201.124 203.085 204.621 210.025 213.086 218.15 226.154 227.103 231.097 233.095 235.119 239.15 241.081 244.164 251.102 253.147 255.146 259.092 272.172 282.168 287.676 292.679 299.17 301.673 303.214 309.198 311.181 312.179 331.143 336.709 341.219 350.199 352.197 357.222 361.242 369.224 372.121 374.251 398.143 402.231 408.235 416.156 422.26 447.253 449.247 458.296 462.74 466.276 473.321 500.293 505.294 518.295 522.269 545.199 563.33 569.328 584.354 601.377 618.285 655.385 660.386 672.414 803.456 14 7 4 6 7 6 18 13 16 4 12 5 8 11 11 5 8 9 10 100 8 12 29 13 7 11 4 5 6 5 9 16 8 9 14 10 29 9 5 17 77 13 4 6 4 16 6 5 77 20 8 8 64 10 15 13 4 20 6 5 43 7 6 8 4 5 7 6 8 9 5 5 16 9 30 11 6 9 5 4 5 5 6 9 37 26 6 8 4 5 5 29 5 9 20 5 5 7 30 15 GRMZM5G838396_P01 P06586 30S ribosomal protein S3, chloroplastic seq=translation; coord=Pt:81113..82518:-1; parent_transcript=GRMZM5G838396_T01; parent_gene=GRMZM5G838396 MGQKINPLGF RLGTTQNHHS FWFAQPKNYS EGLQEDKKIR NCIKNYIQKN RKKGSNRKME SDSSSEVITH IEIQKEIDTI HVIIHIGFPN LLKKKGAIEE LEKDLQKEVN SVNQRLNIAI EKVKEPYRQP NILAEYIAFQ LKNRVSFRKA MKKAIELTKK ADIKGIKIQI AGRLAGKEIA RAECIKKGRL PLQTIRAKID YCCYPIRTIY GVLGVKIWIF VEEE GRMZM2G448151_P01 P06586 30S ribosomal protein S3, chloroplastic seq=translation; coord=1:203905970..203907361:1; parent_transcript=GRMZM2G448151_T01; parent_gene=GRMZM2G448151 MGQKINPLGF RLGTTQNHHS FWFAQPKNYS EGLQEDKKIR NCIKNYIQKN RKKGSNRKME SDSSSEVITH IEIQKEIDTI HVIIHIGFPN LLKKKGAIEE LEKDLQKEVN SVNQRLNIAI EKVKEPYRQP NILAEYIAFQ LKNRVSFRKA MKKAIELTKK ADIKGIKIQI AGRLAGKEIA RAECIKKGRL PLQTIRAKID YCCYPIRTIY GVLGVKIWIF VEEE 5.4876 -0.296627 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 5643 5643 5614 5441 5055 3909 3114 2109 1384 676 365 195 81 33 18 8 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 5648 5648 5619 5436 5035 3746 2716 1435 665 159 65 20 1 0 0 1 2 3 4 5 2507 2380 624 126 14 0 0 1 2 3 4 5 6 7 1418 2975 1007 217 24 6 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3149 (charge 2) 1310.63 2 155.081 155.117 157.096 159.076 169.097 171.076 171.113 173.092 175.119 181.06 182.127 183.148 185.091 187.072 187.107 188.071 189.086 191.081 195.112 198.087 199.071 199.107 201.123 205.097 209.092 213.122 217.082 223.107 226.118 227.102 233.092 234.095 240.134 242.149 244.128 250.118 256.093 258.144 261.086 275.207 276.155 278.113 282.146 286.141 299.171 309.119 311.17 327.13 330.111 337.187 347.133 355.123 359.193 362.133 365.144 369.174 373.208 375.222 382.207 387.188 390.233 397.704 408.223 410.238 430.227 446.257 458.223 479.266 483.216 501.277 515.246 519.275 603.787 612.306 622.808 626.303 630.311 632.319 647.335 685.387 687.394 726.387 727.387 760.415 783.407 794.398 817.44 819.43 853.475 858.415 865.434 870.441 924.509 928.464 936.469 946.483 967.493 1016.51 1033.52 1035.52 4 5 4 2 10 4 6 2 10 2 2 2 4 6 2 4 5 10 4 2 4 4 2 4 2 4 7 4 12 10 29 6 18 4 7 100 3 16 14 23 6 26 2 2 4 7 12 5 2 5 8 2 4 2 4 4 12 2 2 6 11 2 3 5 2 5 5 8 2 7 2 8 3 1 5 1 7 4 8 12 1 6 3 3 4 4 19 6 15 9 2 3 4 4 5 10 2 3 28 7 GRMZM2G001327_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695861:-1; parent_transcript=GRMZM2G001327_T01; parent_gene=GRMZM2G001327 GRMZM2G001327_P03 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136692489..136695738:-1; parent_transcript=GRMZM2G001327_T03; parent_gene=GRMZM2G001327 GRMZM2G154218_P01 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515921..136519080:-1; parent_transcript=GRMZM2G154218_T01; parent_gene=GRMZM2G154218 GRMZM2G154218_P02 NP_001105935 elongation factor 1 alpha seq=translation; coord=6:136515968..136519018:-1; parent_transcript=GRMZM2G154218_T02; parent_gene=GRMZM2G154218 GRMZM2G149768_P01 NP_001105933 elongation factor alpha2 seq=translation; coord=6:136568621..136572271:-1; parent_transcript=GRMZM2G149768_T01; parent_gene=GRMZM2G149768 GRMZM2G110509_P01 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T01; parent_gene=GRMZM2G110509 GRMZM2G110509_P02 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607094..84610318:1; parent_transcript=GRMZM2G110509_T02; parent_gene=GRMZM2G110509 GRMZM2G110509_P03 NP_001104939 elongation factor alpha6 seq=translation; coord=8:84607316..84610225:1; parent_transcript=GRMZM2G110509_T03; parent_gene=GRMZM2G110509 5.86588 -0.300815 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 10846 10846 10846 10562 10125 9305 7962 6470 4438 2759 1412 704 356 147 68 36 15 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 10846 10846 10846 10562 10122 9256 7740 5820 3360 1435 515 141 28 1 0 0 1 2 3 4 5 6 7 3057 4776 2195 617 119 72 14 3 0 1 2 3 4 5 6 7 2369 4571 2798 982 111 8 11 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3151 (charge 3) 1621.87 3 153.102 156.077 157.097 158.093 159.076 166.061 167.081 169.097 169.134 171.113 173.092 173.129 175.119 177.102 178.106 181.096 185.092 185.164 187.071 187.107 188.111 199.107 202.082 204.134 205.097 207.125 209.14 213.087 215.102 218.149 223.107 226.155 227.101 229.099 235.119 237.135 240.134 244.165 251.102 258.145 272.171 279.097 297.192 301.059 303.177 304.16 313.15 315.202 323.169 341.218 360.15 430.234 437.714 446.185 454.214 459.208 481.234 493.724 502.738 505.247 508.239 513.307 516.751 532.238 539.771 545.255 548.279 560.234 566.284 570.321 603.268 617.28 620.274 627.325 645.331 647.258 655.337 667.388 673.356 701.287 718.297 727.386 739.368 746.38 752.359 760.376 770.36 799.355 803.373 815.354 817.369 840.468 845.443 874.424 886.388 907.419 961.455 1004.47 1032.49 1164.54 4 2 6 5 14 4 2 12 4 16 3 3 17 100 11 5 8 9 4 46 4 11 4 4 28 3 4 5 12 14 5 6 9 2 14 4 3 3 2 4 5 4 3 5 4 6 4 73 8 3 3 6 3 5 16 5 9 11 17 4 3 3 21 2 5 8 6 7 6 3 4 3 5 3 33 14 12 3 6 3 22 5 3 10 3 12 20 2 4 2 15 3 4 7 3 4 12 5 3 3 GRMZM2G061928_P01 O48556 Soluble inorganic pyrophosphatase (EC 3.6.1.1)(Pyrophosphate phospho-hydrolase)(PPase) seq=translation; coord=2:24608141..24615659:1; parent_transcript=GRMZM2G061928_T01; parent_gene=GRMZM2G061928 MSEEDKTAAS AEQPKRAPKL NERILSSLSR RSVAAHPWHD LEIGPDAPAV FNVVVEITKG SKVKYELDKK TGLIKVDRVL YSSVVYPHNY GFVPRTLCED NDPMDVLVLM QEPVVPGSFL RARAIGLMPM IDQGEKDDKI IAVCADDPEY RHYNDISELS PHRLQEIKRF FEDYKKNENK EVAVDAFLPA TTAREAIQYS MDLYAQYILQ SLRQ GRMZM2G061928_P02 O48556 Soluble inorganic pyrophosphatase (EC 3.6.1.1)(Pyrophosphate phospho-hydrolase)(PPase) seq=translation; coord=2:24608141..24615659:1; parent_transcript=GRMZM2G061928_T02; parent_gene=GRMZM2G061928 MSEEDKTAAS AEQPKRAPKL NERILSSLSR RSVAAHPWHD LEIGPDAPAV FNVVVEITKG SKVKYELDKK TGLIKVDRVL YSSVVYPHNY GFVPRTLCED NDPMDVLVLM QEPVVPGSFL RARAIGLMPM IDQGEKDDKI IAVCADDPEY RHYNDISELS PHRLQEIKRF FEDYKKNENK EVAVDAFLPA TTAREAIQYS MDLYAQYILQ SLRQ GRMZM2G061928_P03 O48556 Soluble inorganic pyrophosphatase (EC 3.6.1.1)(Pyrophosphate phospho-hydrolase)(PPase) seq=translation; coord=2:24608141..24615659:1; parent_transcript=GRMZM2G061928_T03; parent_gene=GRMZM2G061928 MSEEDKTAAS AEQPKRAPKL NERILSSLSR RSVAAHPWHD LEIGPDAPAV FNVVVEITKG SKVKYELDKK TGLIKVDRVL YSSVVYPHNY GFVPRTLCED NDPMDVLVLM QEPVVPGSFL RARAIGLMPM IDQGEKDDKI IAVCADDPEY RHYNDISELS PHRLQEIKRF FEDYKKNENK EVAVDAFLPA TTAREAIQYS MDLYAQYILQ SLRQ GRMZM2G061928_P04 O48556 Soluble inorganic pyrophosphatase (EC 3.6.1.1)(Pyrophosphate phospho-hydrolase)(PPase) seq=translation; coord=2:24608141..24615457:1; parent_transcript=GRMZM2G061928_T04; parent_gene=GRMZM2G061928 MSEEDKTAAS AEQPKRAPKL NERILSSLSR RSVAAHPWHD LEIGPDAPAV FNVVVEITKG SKVKYELDKK TGLIKVDRVL YSSVVYPHNY GFVPRTLCED NDPMDVLVLM QEPVVPGSFL RARAIGLMPM IDQGEKDDKI IAVCADDPEY RHYNDISELS PHRLQEIKRF FEDYKKNENK EVAVDAFLPA TTAREAIQYS M 4.30765 -0.220905 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5887 5887 5838 4493 3593 2923 2134 1558 1008 745 478 386 166 86 47 17 12 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5882 5882 5833 4450 3445 2664 1685 1060 637 452 354 295 42 33 1 0 0 1 2 3 4 5 6 7 2553 2499 672 145 16 2 8 0 0 1 2 3 4 5 6 7 1232 3901 676 76 2 0 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3152 (charge 2) 1532.71 2 155.081 157.097 159.076 169.096 171.075 171.112 172.071 173.092 175.119 181.096 185.091 186.124 189.087 199.071 199.106 201.087 204.134 209.092 212.102 217.081 223.107 226.154 228.133 230.112 241.081 242.084 244.165 248.16 259.092 271.139 283.14 288.119 291.165 297.155 301.149 310.176 313.15 325.15 327.164 329.144 331.161 337.15 342.176 355.196 356.201 359.155 362.203 366.18 369.142 372.225 374.119 384.187 388.132 412.18 416.175 441.245 456.21 467.138 485.153 495.213 501.267 503.161 513.231 515.78 531.241 558.251 572.3 591.278 613.251 631.25 638.273 641.275 642.292 659.336 670.263 696.277 714.294 717.372 730.371 732.302 758.336 765.332 774.355 785.33 787.392 801.411 817.376 869.849 874.357 885.428 902.454 904.453 918.359 927.869 943.379 996.42 1030.55 1146.57 1225.21 1493.55 2 1 4 2 2 15 13 5 2 2 2 8 2 9 1 5 14 6 5 2 2 28 2 2 50 5 100 1 16 6 4 1 9 5 4 6 4 2 2 4 1 6 4 25 4 5 6 2 2 8 6 2 7 2 2 2 1 2 5 2 6 4 4 2 4 3 5 2 2 2 1 4 2 12 6 2 9 2 15 7 2 2 2 5 2 18 5 2 2 4 29 4 2 2 3 2 4 2 1 1 GRMZM2G352415_P01 NP_001130539 hypothetical protein LOC100191638 seq=translation; coord=1:297016125..297019051:-1; parent_transcript=GRMZM2G352415_T01; parent_gene=GRMZM2G352415 MSSSAENDPT VTVTERGGKD KHEDGGDKEQ GGGGFIDKVK DFIHDIGEKI EEVVGFGKPT ADVCGIHIPH ISLHRADLVV DVLIKNPNPV PIPLVDIDYL IDSDGRKLVS GLIPDAGTIH AHGQETVKIP VSLVFDDIKS TYKDIQPGSI IPYLVRVVLL VDVPIIGRVK IPIQKDGEIP IPYKPDVDVE KIKFHHFSFE ETTATLHLKL ENKNDFDLGL NLLEYEMWLG DDSIASAELT QTAKIEKQGI TRMQVPFSFR PKDFGSAVWD MIRGRGTGYT IKGKIDVDTP FGNMKLPISK EGGTTRLKKE EEEDDDDDN GRMZM2G352415_P02 NP_001130539 hypothetical protein LOC100191638 seq=translation; coord=1:297016125..297018853:-1; parent_transcript=GRMZM2G352415_T02; parent_gene=GRMZM2G352415 MSSSAENDPT VTVTERGGKD KHEDGGDKEQ GGGGFIDKVK DFIHDIGEKI EEVVGFGKPT ADVCGIHIPH ISLHRADLVV DVLIKNPNPV PIPLVDIDYL IDSDGRKLVS GLIPDAGTIH AHGQETVKIP VSLVFDDIKS TYKDIQPGSI IPYLVRVVLL VDVPIIGRVK IPIQKDGEIP IPYKPDVDVE KIKFHHFSFE ETTATLHLKL ENKNDFDLGL NLLEYEMWLG DDSIASAELT QTAKIEKQGI TRMQVPFSFR PKDFGSAVWD MIRGRGTGYT IKGKIDVDTP FGNMKLPISK EGGTTRLKKE EEEDDDDDN GRMZM2G352415_P03 NP_001130539 hypothetical protein LOC100191638 seq=translation; coord=1:297016039..297018846:-1; parent_transcript=GRMZM2G352415_T03; parent_gene=GRMZM2G352415 MSSSAENDPT VTVTERGGKD KHEDGGDKEQ GGGGFIDKVK DFIHDIGEKI EEVVGFGKPT ADVCGIHIPH ISLHRADLVV DVLIKNPNPV PIPLVDIDYL IDSDGRKLVS GLIPDAGTIH AHGQETVKIP VSLVFDDIKS TYKDIQPGSI IPYLVRVVLL VDVPIIGRVK IPIQKDGEIP IPYKPDVDVE KIKFHHFSFE ETTATLHLKL ENKNDFDLGL NLLEYEMWLG DDSIASAELT QTAKIEKQGI TRMQVPFSFR PKDFGSAVWD MIRGRGTGYT IKGKIDVDTP FGNMKLPISK EGGTTRLKKE EEEDDDDDN 6.0145 -0.29339 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 5791 5791 5791 5492 5319 4945 4123 3422 2288 1594 975 567 293 123 55 34 10 4 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5797 5797 5797 5498 5323 4915 3996 3061 1654 737 284 71 2 1 1 0 0 1 2 3 4 5 6 7 2150 2354 859 351 65 14 6 0 0 1 2 3 4 5 6 7 1013 2471 1554 555 176 15 13 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3153 (charge 3) 1988.89 3 152.057 155.081 158.092 167.081 173.092 175.119 184.108 185.092 185.165 186.087 195.112 198.123 199.107 209.091 226.118 231.124 234.144 239.113 240.134 244.129 249.097 262.139 267.108 270.145 283.103 285.12 291.145 295.104 306.16 327.165 340.126 348.165 363.177 375.225 382.134 401.217 425.67 429.21 430.714 435.198 459.198 461.25 468.183 487.2 492.217 498.714 510.229 522.292 534.252 554.299 565.297 579.316 582.927 597.263 602.24 611.2 615.28 625.256 628.225 636.333 642.39 644.339 656.306 660.319 662.35 664.821 672.282 683.321 693.356 703.274 713.274 715.327 721.284 731.289 734.316 739.299 750.378 752.383 754.328 775.336 792.357 796.349 805.363 836.317 850.328 854.329 860.406 861.409 871.35 873.38 878.433 879.434 894.441 906.437 973.435 990.453 991.447 1007.48 1023.48 1172.5 3 3 3 3 4 16 7 3 3 3 10 4 7 16 51 52 3 9 6 20 10 58 25 8 3 3 6 3 14 3 15 12 23 16 12 3 10 8 6 9 7 4 3 10 3 3 10 3 7 4 7 3 7 3 3 21 4 13 3 10 6 4 20 9 42 100 7 3 14 3 10 3 3 3 3 10 44 4 3 4 7 4 4 3 7 14 7 21 3 7 9 3 15 4 8 3 6 12 11 3 GRMZM2G010960_P01 seq=translation; coord=6:114177100..114187293:-1; parent_transcript=GRMZM2G010960_T01; parent_gene=GRMZM2G010960 MSGAWGGTTQ KCASCGRRVY PVEELAADGR VYHRPCFRCH HCKSTLQFSN YSSVEGVLYC KPHYDQILKS TGSLEKSFEG VARSAKSEKS NGHKGQQSSR FSNMFVGTQE KCVVCNKTVY PLEKVALNGN SYHKSCFRCT HGGCTLSPSN HITHEGKLYC KTHHSQLFMV KGNFSQFEDN SGNAKVTIEK LPETEEATKN PDQGDEATRK PVENEPTDEK TSKNNVAAEK QLQSGVDVTK PSESTTAENE RGTEGESKSN VVNKKPSESI VEKPLQNSVV DVKPSGNSAA MRKPWQRSMQ TDKPFLSSTS TVNPSSSSDT TEKLSSSNGV DMKQSESSTL VKTTCKQNSP TENPPQSVLP SDKPSATSVD DAKPSESSKV IKKPWQRNMA AEKQLQNSAP SQKSVATDKP SPTTGMKSLD NTTEVKSPWG RRMFNNKSLK RSVDTEKSSE TSVVDVRPGE TSTVAPVPQQ QTENVEKPSA TSADDAKSAD DTKSADDVKP SVASPDAKST DDVKSSENNA AVVRKPWQRN IGTGKQPLTT VVGPKTTETS GTVKRLWQRS AATASKSGTA VVTPLQSSVV VSKPFQSNVA VKKTWQRSVT PENQLESNMS SNKPLPSKVV VESLLQSNTV EKVFQSTVPT EEPQKGIMAT ENQSQTIKVT KKSNETSMEL SVTSETTKPP PLAATVLQSD VSTEQPSQTD MPTMAPSQIP EPTEKPSESD FNAEKLSESV VKAEKSSTTD TAAEKPLPSM ITEKVESVAG TLKPSQSDTA LQEILERNMA TEEILQTAMA VEDAPPTNLI TEKSLMKDAS EEPVQTNEPS EQPLKTEEIE KPQQSEKIAT DTRGSEVSTE EMLELESNAT KLNKDQSELE GLSSGRNPPN FQSNPNAGQR SESKGIVAEK AADHIMEAED DVDAEHSSES QSVAPAEVRK EQPSEHQKDV DMEQLLEPQN QDHPWNPLDP VSDTAAKDSS EPKSDIATEK PAESQNNAEQ SVEQQSEPQS DKSTERPEVH QSNTSNDELS RLQNDAGTDK LSVQSSDPES NASVSKPSES QTDVATMEAL EPQIDAPPDK ATDQPVKPQD DASAKNPMGT ESDAVCDKPS ESSSDTETLL VCHQNSSITT DEPVQGGISY DTPHQRSAPI ETTPGSETVV DDCIHHEDTS SKPSEENKAI EEPEEVSAKL PDDHVTSEKS SEEDKENAEA SVDSAPLGNP LEVNEESSNP SGDTVTPEKP LEEDKTSAEP SESDASFGKI LEADEVSANP SEDIATPEKP LEEGVGSVEP SEDNSVLDKP LEEEEVDAKP VKDVVTPEKP LEEGSTTAEP LEDNAAHEEA KEEDEVIAKP LSSVALEKSL EGSEASVEPS EDNAALEKPS EDDEANAKSS EDSVYVEKPQ QEEDDNGVKA LEEGVSPEKS AAGKPLEEDP VHEKPADAVA EPSSQDDTAT EKPSATTDTA ETA 5.53561 -0.27003 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 7493 7493 7490 7239 6825 6549 5824 4711 3661 2330 1298 641 304 190 82 40 27 19 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7495 7495 7492 7241 6825 6530 5764 4369 2967 1511 375 155 32 13 1 0 0 1 2 3 4 5 6 7 2959 3129 1150 194 38 24 0 2 0 1 2 3 4 5 6 7 1382 3141 1869 852 216 31 1 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3157 (charge 3) 2186.01 3 152.057 155.093 158.092 159.076 161.092 171.076 175.119 183.15 187.107 189.086 197.092 199.107 202.083 209.092 215.102 227.102 237.135 240.135 245.124 246.155 249.098 262.149 266.124 269.125 272.171 286.461 294.118 306.158 310.14 326.169 330.788 375.233 397.206 446.262 454.732 468.73 474.232 477.244 486.262 504.279 512.642 518.76 532.759 567.271 576.273 619.304 624.291 633.289 642.277 656.401 672.333 700.323 702.323 716.314 717.994 723.669 728.379 731.31 733.348 768.384 771.396 799.393 801.401 820.381 833.874 842.375 908.453 921.425 936.455 938.45 985.423 1018.46 1035.48 1105.48 1122.5 1124.49 1233.55 1250.56 1383.42 1440.77 2 3 7 4 4 7 31 3 23 4 4 5 3 3 7 13 5 3 4 3 4 6 7 4 5 3 3 14 3 3 3 14 4 5 30 25 15 27 3 38 4 5 28 5 14 15 5 7 4 7 17 100 7 5 5 16 19 32 13 4 17 94 15 42 5 5 24 20 62 6 4 7 27 12 55 6 13 13 4 5 GRMZM2G157061_P01 seq=translation; coord=2:32257322..32262715:1; parent_transcript=GRMZM2G157061_T01; parent_gene=GRMZM2G157061 MQPDQPVISL RPGGGGGPRA GRLFSPAFAT SVSGDFLRPH GGGASGISKI GDSHFEPRER VRYTRDQLLE LREIVDVSEE ILRIKQEIDV ELHGEDQSWV RNDSTVQGQA QAQTQAQNRY AETDSRDWRA RSAQLTPTNE EKSWDNIREA KEAYASSGRQ QEQANRQDQL SSQFASKAQV GPTPALIKAE VPWSARRGNL SEKERVLKTV KGILNKLTPE KFDLLKGQLM EAGITTADIL KDVISLIFEK AVFEPTFCPM YAQLCSDLNE KLPTFPSEEP GGKEITFKRV ILNNCQEAFE GASNLRAEIS KLTGPDQGME RRDKERLVKL RTLGNIRLIG ELLKQKMVPE KIVHHIVMEL LGSGTDKKPC PEEEDVEAIC HFFNTIGKQL DENTKSRRIN DTYFIQMKEL TMNPQLAPRL RFMVRDVIDL RSNNWVPRRE EIKAKTISEI HSEAEKNLGL RPGAASVIRN GRSSPGGPLS PGGGFPMNRP GTGGMMPGMP GSRKMPGMPG LDNDNWEVPR SKSMPRGDSI RNQGLLLNKP STVHKTSSIN TRLLPQGSGA ALIGKSALLG TGVSASRPLS FTPGPTPAQT TPKPIRAAPA VVPAPDKQAS APKGNTAELQ KKTIALLEEY FGIRILDEAH QCIVELQSPD YYPEIVKEAV NLALDKGTNF VDPLVRLLEH LYTKKIFKTQ DLESGCLLYG TLLDDIGIDL PKAPAQFGEI IARLTLLGAL RFEALEVILK KMEDTYNRKA VSNAFMKTLE ANPSGQAILG SPAAAAVIDA CNSLLE 5.8112 -0.314119 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 6350 6350 6224 6141 5584 5247 3832 2929 1709 943 579 267 133 53 26 8 3 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6325 6325 6199 6109 5542 5137 3365 2353 936 394 145 2 1 1 0 0 1 2 3 4 5 2856 2727 674 81 14 0 0 1 2 3 4 5 6 7 1115 3735 1281 210 9 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3164 (charge 2) 1217.6 2 155.081 155.118 157.097 158.092 159.076 167.055 167.081 169.097 169.133 171.077 171.112 173.092 173.128 175.119 176.103 181.097 183.076 183.113 185.091 185.128 186.123 187.071 187.144 193.107 195.112 196.144 197.128 200.102 201.086 212.103 214.154 216.097 218.15 221.083 226.154 227.101 239.094 240.097 242.149 244.092 256.129 258.145 262.139 264.134 266.161 269.124 276.154 281.05 285.009 287.134 295.139 297.119 299.061 303.02 310.173 313.151 325.186 327.129 344.975 355.069 359.172 373.079 375.23 387.186 400.215 405.201 412.266 415.036 418.993 442.193 454.23 474.183 483.263 487.286 502.208 512.752 514.266 519.24 521.259 543.237 571.233 602.273 616.329 620.291 627.322 666.309 675.397 699.328 703.361 705.344 717.339 719.351 774.361 777.334 785.435 818.386 820.386 905.416 914.455 931.473 4 2 2 3 38 20 2 2 2 3 34 11 2 14 7 5 7 5 8 2 5 2 2 5 2 5 13 12 9 3 11 5 2 6 10 4 50 8 9 8 5 13 2 2 8 6 10 2 32 31 5 2 35 8 6 7 6 2 7 100 6 13 2 7 4 4 5 9 19 11 5 2 5 2 4 2 2 11 4 5 8 2 2 12 8 11 2 6 2 2 43 4 4 2 2 20 2 4 6 7 GRMZM2G112165_P01 seq=translation; coord=2:189443283..189447454:1; parent_transcript=GRMZM2G112165_T01; parent_gene=GRMZM2G112165 MASETETFAF QAEINQLLSL IINTFYSNKE IFLRELISNS SDALDKIRFE SLTDKSKLDA QPELFIHLVP DKATNTLSII DSGIGMTKSD LVNNLGTIAR SGTKEFMEAL AAGADVSMIG QFGVGFYSAY LVADRVVVTT KHNDDEQYVW ESQAGGSFTV TRDTSGEQLG RGTKITLFLK DDQLEYLEER RLKDLVKKHS EFISYPISLW TEKTTEKEIS DDEDEEEKKD AEEGKVEDVD EKEEKEKKKK KIKEVSHEWS LVNKQKPIWM RKPEEITKEE YAAFYKSLTN DWEEHLAVKH FSVEGQLEFK AVLFVPKRAP FDLFDTKKKQ NNIKLYVRRV FIMDNCEELI PEWLSFVKGI VDSEDLPLNI SRETLQQNKI LKVIRKNLVK KCVELFFEIA ENKEDYNKFY EAFSKNLKLG IHEDSQNRTK IAELLRYHST KSGDELTSLK DYVTRMKEGQ NDIYYITGES KKAVENSPFL EKLKKRGYEV LYMVDAIDEY AVGQLKEFEG KKLVSATKEG LKLDETEDEK KRKEELKEKF EGLCKVIKEV LGDKVEKVVV SDRVVDSPCC LVTGEYGWTA NMERIMKAQA LRDSSMAGYM SSKKTMEINP ENPIMDELRK RAEADKNDKS VKDLVMLLFE TALLTSGFSL DDPNTFGNRI HRMLKLGLSI DEDEPVEAEA EMPQLEDDAG ESKMEEVD GRMZM2G112165_P02 seq=translation; coord=2:189443283..189447454:1; parent_transcript=GRMZM2G112165_T02; parent_gene=GRMZM2G112165 MASETETFAF QAEINQLLSL IINTFYSNKE IFLRELISNS SDQQNKILKV IRKNLVKKCV ELFFEIAENK EDYNKFYEAF SKNLKLGIHE DSQNRTKIAE LLRYHSTKSG DELTSLKDYV TRMKEGQNDI YYITGESKKA VENSPFLEKL KKRGYEVLYM VDAIDEYAVG QLKEFEGKKL VSATKEGLKL DETEDEKKRK EELKEKFEGL CKVIKEVLGD KVEKVVVSDR VVDSPCCLVT GEYGWTANME RIMKAQALRD SSMAGYMSSK KTMEINPENP IMDELRKRAE ADKNDKSVKD LVMLLFETAL LTSGFSLDDP NTFGNRIHRM LKLGLSIDED EPVEAEAEMP QLEDDAGESK MEEVD 4.00441 -0.258349 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 736 736 736 727 683 622 527 458 306 215 141 67 28 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 776 776 776 767 723 657 556 475 300 226 150 36 6 1 0 0 1 2 3 4 333 350 93 1 0 0 1 2 3 4 5 6 7 273 372 88 10 2 0 12 20 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3165 (charge 2) 1195.46 2 153.066 154.05 155.081 157.061 157.133 158.092 159.076 165.103 169.096 171.076 173.092 173.128 174.095 175.071 175.119 176.075 181.061 181.096 183.076 183.112 185.055 185.091 187.071 189.087 191.084 193.097 195.113 198.087 198.123 199.071 199.107 201.087 203.066 213.087 214.085 216.133 219.08 221.091 222.087 226.154 230.113 234.145 240.097 244.092 254.077 268.165 272.087 273.09 278.152 287.006 290.094 296.159 299.134 304.161 308.123 314.171 317.146 321.176 327.129 337.116 354.14 357.067 365.184 372.15 383.193 404.214 417.244 439.164 452.215 468.21 476.217 488.198 493.239 564.282 577.264 587.318 594.29 624.296 631.276 651.314 672.302 681.32 688.295 693.32 711.33 716.354 738.347 741.32 759.333 775.327 780.345 795.364 803.388 842.371 867.381 882.394 884.394 906.361 929.4 932.427 15 23 57 41 8 6 9 11 6 28 94 20 6 81 46 4 6 5 64 8 54 3 8 15 25 6 6 3 5 21 18 100 29 7 10 13 17 6 7 42 7 43 12 22 43 14 80 9 7 6 14 8 6 8 25 3 6 69 7 7 6 6 30 6 12 17 9 3 24 9 9 6 12 5 6 20 9 16 6 15 14 8 15 3 39 8 13 9 40 27 6 33 19 16 5 51 6 8 9 8 GRMZM2G179941_P01 seq=translation; coord=9:98884455..98895674:1; parent_transcript=GRMZM2G179941_T01; parent_gene=GRMZM2G179941 MASAPFPPVA ASAASAPPRL APRHPFAAAA AARRSSLSFR PAARRPVLPL RSSAVAANTL RCTHRRAVSS RSRRRAQELG AAPALAASTW GVGEEKGGCL SCFPKSRRGR SGLARFAPCA LPHASGLSFR SRLSGSKVKP SHILHAAGPD EPHVASPTWS DTSLDTRDMD HAISKEELED VLNTPLPEHP KLIRGQLKNG LRYLILPNKV PANRFEAHME VHVGSIDEEE DEQGIAHMIE HVAFLGSKKR EKLLGTGARS NAYTDFHHTV FHIHSPTKTK EYGEDLLPSV LDALNEIAFH PKFSSSRVEK ERRAILSELQ MMNTIEYRVD CQLLQHLHSE NKLSNRFPIG LEEQIQKWDP EKIRRFHERW YYPANATLYL VGEIDDIPRA VREIEAVFEH TLSENEGNPV PSTSPFGAMA SLFAPKLPSG FTTNLTGEKS PATDKIKPVK RERQAVRPPV EHKWSLPEVA QDAKPPAIFQ HELIQSFSIN MFCKIPVSKV QTYKDLRSVL MKRIFLSALH FRINTRYKSS NPPFTSVELD HSDSGREGCT VTTLTVTAEP QNWRSAIKVA VHEVRRLKEF GVTMGEMTRY MDALIKDSEQ LAMMIDSVPS VDNLDFIMES DALGHTVMDQ LQGHESLLAV AETVTLEEVN TVGAEVLEFI SDFGKPNAPL PAAIVACVPK KVHVDDIGET EFEIYPEEIT EAIKAGLEEP IYPEPELEVP KELITQSKLD ELKLQHNPSF VPLTKEENAV KVFDSETGIS QRRLSNGISI NYKITQNEAR VGVMRLIVGG GRATEDSESK GSVIVGVRSL SEGGCVGNFS REQVELFCVN NLINCSLESN EEFIFMEFRF ALRDNGMRAA FQLLHMVLEH NVWLEDAFDR AIQLYLSYYR SIPKSLERST AHKLMLAMLN HDERFVEPSP HSLQKLTLQS VKDAVMNQFV GSNMEVSIVG DFTEEEVESC VLDYLGTVRA SSSPTIEERI EKISFRPFPS DVHFQQVYIK DTDERACAYI AGPAPNRWGF ATEGNDLFNV IQRSDADAEI SEPVSLDLTG KRHINVRSHP LFFGITLSLL AEIINSRLFT TVRDSMGLTY DVSFELNLFD KLDLGWYVIA VTSTPSKVHK AVDACKGVLR GLHSSRIVER ELDRAKRTLL MKHEAETKTN AYWLGLLAHL QSSSVPRKDV SCIKELTTLY ENATIEDLYI AYEHLKVDDS SLFACIGIAG AESGEDTNGN KLLMLIQL 6.73693 -0.345484 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 6799 6799 6799 6605 6352 6016 5700 5341 4867 3010 2165 1466 468 211 102 33 15 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6808 6808 6808 6614 6342 5997 5653 5281 4773 2591 1677 464 22 1 0 0 1 2 3 4 3680 2791 319 24 0 0 1 2 3 4 5 6 7 1234 3875 1457 207 33 6 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3166 (charge 2) 1076.52 2 152.057 153.102 154.086 155.081 157.061 157.097 157.108 157.133 158.092 159.076 166.086 167.055 167.081 168.055 169.051 169.097 169.133 171.076 171.112 173.091 173.128 175.072 175.119 176.122 181.096 183.077 183.113 183.149 185.092 185.164 187.108 187.144 194.128 195.113 197.128 198.087 199.071 199.107 201.087 204.134 208.108 210.087 213.159 215.139 217.081 223.063 226.154 228.097 235.119 236.103 239.095 241.09 244.165 252.096 254.113 259.091 269.124 272.17 275.126 281.051 287.135 288.202 294.18 297.12 299.061 301.059 304.16 305.164 315.129 345.977 346.973 355.161 360.029 361.025 370.173 372.697 382.207 398.166 407.208 416.037 417.033 433.202 441.236 505.232 528.276 540.275 546.286 550.263 620.263 647.334 649.335 657.318 691.338 727.375 744.387 746.396 802.361 831.417 903.413 918.451 8 6 3 13 29 19 4 5 23 64 3 69 6 18 18 9 2 3 21 9 9 12 100 8 15 11 5 5 11 23 3 6 3 2 9 5 3 32 6 3 6 29 10 5 3 12 13 31 6 5 15 6 13 3 7 2 11 6 3 6 9 5 6 9 91 88 51 3 9 11 18 5 8 15 5 48 3 6 10 7 25 24 3 7 7 3 33 3 3 44 5 7 5 10 85 9 9 21 7 20 GRMZM2G344911_P01 NM_001157408 estradiol 17-beta-dehydrogenase 8 (LOC100284513), mRNA seq=translation; coord=7:88915398..88917303:-1; parent_transcript=GRMZM2G344911_T01; parent_gene=GRMZM2G344911 MGVGAGEAVG AERAPMGARR PSAGAYGGGS RWRGGKRRDG RLLGLEVTSF ISTRQTVHTF EPHMAEPKSN NGGADATASM MLHGRVAIVT GGAGGIGSAV SKHLSSLGAR VVVGYIGDPA PALTLVAAIN SSEHPGESQQ PRAIAVEADV SDAAAVKALF DAAAAAFGGE LHILVTLAAV LDYSYPPLAE TSEATFDAAF SVNTRGTFLC CREAARRLVR DGRGRIVTFS SSGVGSLRPG YSAYAASKAA VEVMTKILAR ELRGTGITAN VVAPGSTGTP MMYTGKTEDD MERYIAEAPL GRLGMPEDIA PLVSFLASDA GHWVNAQVLR CNGGTI 5.73807 -0.255025 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 5052 5052 5052 4970 4800 4535 4217 3998 3674 2566 1857 1212 643 375 249 141 87 36 17 6 2 1 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5044 5044 5044 4962 4792 4462 4150 3833 3486 1773 1003 246 34 2 1 1 0 0 1 2 3 4 5 2513 1887 537 90 26 0 0 1 2 3 4 5 6 7 601 2407 1553 431 55 5 0 1 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3168 (charge 2) 946.478 2 154.086 155.081 155.118 157.061 157.097 157.108 158.092 159.076 159.112 160.08 160.116 166.061 167.081 169.061 169.097 171.076 171.113 173.092 173.128 175.119 176.122 181.096 183.112 185.092 185.164 186.088 186.123 187.071 187.107 188.074 189.087 190.122 194.129 197.129 198.124 199.071 199.108 199.18 201.086 204.134 209.091 214.118 215.139 218.149 223.107 226.118 227.175 230.113 235.143 237.122 240.134 242.113 244.166 246.181 248.104 256.127 258.109 262.149 270.107 272.172 274.102 276.155 284.124 286.14 288.202 299.136 302.134 317.218 327.127 329.145 335.174 345.157 355.161 371.156 388.255 398.164 404.215 416.176 444.205 446.208 456.258 459.291 475.25 515.243 528.278 546.287 549.264 562.282 574.32 621.321 634.321 646.287 648.331 661.349 675.33 684.293 691.32 760.414 762.357 818.404 4 13 5 4 11 4 25 98 100 4 6 4 6 5 17 6 11 15 8 83 5 6 5 50 17 4 6 64 38 5 12 4 8 5 4 9 8 40 13 7 7 12 6 21 4 21 11 4 47 9 14 4 9 20 8 8 18 4 7 10 16 4 5 5 21 4 4 13 8 11 4 31 5 4 5 9 8 23 4 6 11 12 8 7 5 19 6 13 9 5 7 9 4 27 8 28 8 5 27 7 GRMZM2G154169_P01 NP_001106031 putative GRF-interacting factor 2 seq=translation; coord=4:5375612..5380694:1; parent_transcript=GRMZM2G154169_T01; parent_gene=GRMZM2G154169 MQQQMPMPPA PAAAAAAAPP AAGITTEQIQ KYLDENKQLI LAILENQNLG KLAECAQYQA QLQKNLLYLA AIADAQPQPP QNPAGRPQMM QPGIVPGAGH YMSQVPMFPP RTPLTPQQMQ EQQQQQQFQQ QQQQVQALTF PGQMVMRPGT INGMQQQQPM QADPARAAAE LQQAAPIPAD GRGSKQDTAG GASSEPSANE SHKSATGADT EAGGDVAEKS GRMZM2G154169_P02 NP_001106031 putative GRF-interacting factor 2 seq=translation; coord=4:5375620..5379628:1; parent_transcript=GRMZM2G154169_T02; parent_gene=GRMZM2G154169 MMQPGIVPGA GHYMSQVPMF PPRTPLTPQQ MQEQQQQQQF QQQQQQVQAL TFPGQMVMRP GTINGMQQQQ PMQADPARAA AELQQAAPIP ADGRGSKQDT AGGASSEPSA NESHKSATGA DTEAGGDVAE KS 5.72307 -0.327033 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 4418 4418 4418 4418 4240 3341 2902 1804 1252 889 573 292 146 40 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4426 4426 4426 4426 4248 3344 2661 1634 1020 659 336 107 69 1 0 0 1 2 3 4 5 2278 1747 357 29 15 0 0 1 2 3 4 5 6 7 1022 2722 588 82 4 0 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3172 (charge 2) 1565.69 2 152.057 155.081 157.097 159.076 160.08 171.076 171.113 173.092 173.128 175.118 183.076 185.092 187.071 187.107 195.075 198.736 199.071 201.087 212.103 215.102 217.081 226.155 228.098 230.112 232.128 234.144 240.133 242.113 244.165 256.128 260.123 270.108 272.123 281.123 283.139 299.134 301.114 311.135 317.145 325.152 327.129 340.15 342.177 345.14 355.196 357.139 363.185 370.173 372.187 382.208 400.181 403.143 410.206 412.147 417.158 428.174 434.224 446.188 466.199 471.221 485.199 503.211 513.194 529.223 533.288 557.22 572.26 589.802 595.242 600.266 656.4 716.995 745.296 762.36 784.393 798.35 833.397 962.437 983.46 1063.48 1178.52 1196.82 1307.58 1582.47 7 4 4 100 5 7 10 22 4 9 4 12 7 26 4 4 5 9 8 22 12 10 4 30 6 52 58 20 51 5 10 7 7 18 5 46 26 56 9 6 10 7 9 38 18 7 19 12 8 21 20 8 10 20 6 9 44 7 6 6 6 5 7 11 26 6 7 8 6 6 7 8 8 37 23 6 49 24 7 22 26 7 9 8 GRMZM2G315088_P01 seq=translation; coord=4:49407189..49408154:-1; parent_transcript=GRMZM2G315088_T01; parent_gene=GRMZM2G315088 MKRNPRVTSS RRKCRKAHFT APSSVRRVLM SAGLSTELRH KYNMRSIPIR KDDEVQVVRG TFKGREGKVV QVYRRCWIIH VERITREKVN GSTVNVGIHP SKVIVTKLKL DKDHKALLDR KAGAAPPTKL RASLLPTTSP RPPLAPPPPA PLSRRSTRLF TVI GRMZM2G327564_P01 O82579 Ribosomal protein L26 Fragment seq=translation; coord=3:19669523..19670484:-1; parent_transcript=GRMZM2G327564_T01; parent_gene=GRMZM2G327564 MKRNPRVTSS RRKCRKAHFT APSSVRRVLM SAGLSTELRH KYNVRSIPIR KDDEVQVVRG TYKGREGKVV QVYRRRWVIH VERITREKVN GSTVNVGIHP SKVIVTKLKL DKDRKALLDR KARGRAADKA KGKFTADDVA AAAAGGAATG ASLQEID GRMZM2G041238_P01 NP_001151634 LOC100285268 seq=translation; coord=8:13554391..13555376:1; parent_transcript=GRMZM2G041238_T01; parent_gene=GRMZM2G041238 MKRNPRVTSS RRKCRKAHFT APSSVRRVLM SAALSTELRH KYNVRSIPIR KDDEVQVVRG TYKGREGKVV QVYRRRWVIH VERITREKVN GSTVNVGIHP SKVMVTKLKL DKDRKALLDR KARGRAADKA KGKFTADDVA AAAGGAAATG ASLQEID GRMZM2G470608_P01 seq=translation; coord=2:180794699..180795223:-1; parent_transcript=GRMZM2G470608_T01; parent_gene=GRMZM2G470608 MKCNPRATSS CRKCRKAHFT APSSVRRVLM SVGLSTELHH KYNVLSIPIR KDDEVQVVRG TYKGREGKVV QVYRRRWVIH IERITREKVN GSTVNVGIHP SKVIVTKLKL DKDRKALLDR KAQNN GRMZM2G463887_P01 seq=translation; coord=4:236012675..236013130:1; parent_transcript=GRMZM2G463887_T01; parent_gene=GRMZM2G463887 APRQLGAVES IPGRQSHSTE RSILPPATST RSPTQKTLAA ATEAASQVSR SAHPAAAMKR NPRITSSRRK CSKAHFTAPS SVRCVLMSDG LSTELHPDPQ GRRGAGRARH LQGP 7.34586 -0.341668 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 8582 8582 8582 8582 8457 8164 7850 7273 6644 5272 4107 2455 1283 615 245 132 71 25 6 2 1 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8608 8608 8608 8608 8483 8174 7724 7046 6270 4530 2684 765 136 21 1 0 0 1 2 3 4 5 6 7 1972 3347 2342 714 183 51 4 0 0 1 2 3 4 5 6 7 1363 3172 2606 1088 271 76 10 27 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3173 (charge 3) 1200.65 3 155.081 155.118 157.097 157.108 158.092 159.076 159.092 159.112 165.069 166.061 166.086 167.081 169.097 169.134 171.113 173.092 173.129 175.119 176.121 181.133 183.113 183.149 185.091 185.116 185.164 186.09 186.123 187.107 187.144 192.076 197.128 200.139 201.123 204.134 209.104 211.143 215.138 226.154 228.17 231.113 244.165 246.181 254.112 255.143 257.162 260.07 261.645 272.123 273.155 275.641 283.14 285.132 286.151 293.161 297.163 301.187 304.161 305.676 308.196 320.169 325.221 333.214 337.197 341.131 343.204 350.162 357.248 361.219 363.214 368.172 378.198 384.164 396.266 402.198 404.251 431.223 439.202 448.251 450.734 458.231 478.275 482.308 484.268 493.278 500.245 505.242 527.294 541.27 545.304 547.309 557.338 567.308 607.248 616.341 618.331 626.382 715.339 732.368 803.404 900.462 12 13 17 6 24 5 7 12 7 6 7 8 24 5 9 6 6 100 6 11 13 23 13 7 6 5 6 11 8 7 8 10 7 5 28 12 11 22 11 7 21 9 12 9 9 5 10 7 32 22 31 17 6 8 9 8 16 5 5 17 9 5 24 5 7 5 16 26 7 5 7 6 7 8 6 7 8 89 5 6 5 5 5 10 15 37 13 6 93 7 7 6 5 13 8 12 6 7 7 7 conta|P35908|K22E_HUMAN Keratin, type II cytoskeletal 2 epidermal (Cytokeratin 2e) (K2e) (CK 2e) - Homo sapiens (Human). MSCQISCKSR GRGGGGGGFR GFSSGSAVVS GGSRRSTSSF SCLSRHGGGG GGFGGGGFGS RSLVGLGGTK SISISVAGGG GGFGAAGGFG GRGGGFGGGS GFGGGSGFGG GSGFSGGGFG GGGFGGGRFG GFGGPGGVGG LGGPGGFGPG GYPGGIHEVS VNQSLLQPLN VKVDPEIQNV KAQEREQIKT LNNKFASFID KVRFLEQQNQ VLQTKWELLQ QMNVGTRPIN LEPIFQGYID SLKRYLDGLT AERTSQNSEL NNMQDLVEDY KKKYEDEINK RTAAENDFVT LKKDVDNAYM IKVELQSKVD LLNQEIEFLK VLYDAEISQI HQSVTDTNVI LSMDNSRNLD LDSIIAEVKA QYEEIAQRSK EEAEALYHSK YEELQVTVGR HGDSLKEIKI EISELNRVIQ RLQGEIAHVK KQCKNVQDAI ADAEQRGEHA LKDARNKLND LEEALQQAKE DLARLLRDYQ ELMNVKLALD VEIATYRKLL EGEECRMSGD LSSNVTVSVT SSTISSNVAS KAAFGGSGGR GSSSGGGYSS GSSSYGSGGR QSGSRGGSGG GGSISGGGYG SGGGSGGRYG SGGGSKGGSI SGGGYGSGGG KHSSGGGSRG GSSSGGGYGS GGGGSSSVKG SSGEAFGSSV TFSFR 4.11893 -0.211227 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 1248 1248 1224 1136 1084 807 633 395 239 132 80 47 27 17 14 8 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 1255 1255 1231 1143 1066 752 525 292 123 39 8 1 0 0 1 2 3 4 5 611 485 131 20 11 0 0 1 2 3 4 5 6 7 276 691 222 46 13 5 2 3 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3174 (charge 2) 1740.71 2 157.061 158.092 167.046 169.061 171.076 172.069 175.071 175.119 184.071 187.072 190.645 193.097 196.071 202.082 214.081 221.091 223.107 226.082 232.14 233.091 241.093 244.093 246.386 248.064 251.101 253.093 256.092 259.104 263.101 271.103 283.103 289.161 295.102 301.114 307.138 311.097 313.114 320.126 323.1 328.125 340.124 352.126 359.134 368.122 370.136 376.194 380.119 388.141 394.171 397.148 415.157 419.157 422.164 427.159 433.215 446.166 454.166 456.156 458.166 461.178 464.174 473.178 491.184 533.199 551.215 596.277 599.219 608.235 635.242 662.833 683.309 758.367 770.343 857.377 869.376 872.448 896.392 914.395 983.414 1001.43 1003.43 1034.42 1052.43 1070.45 1088.46 1090.45 1251.51 1253.51 1290.54 1299.56 1308.54 1365.56 1422.6 10 3 1 2 3 1 3 13 3 2 2 4 11 3 17 3 1 3 8 2 3 2 2 2 2 2 4 9 3 4 11 11 2 13 8 3 2 3 3 3 7 2 2 2 4 12 4 2 4 2 2 2 3 2 34 8 8 2 2 2 2 4 4 3 2 19 3 2 6 9 23 7 25 16 3 3 2 50 4 57 7 2 4 9 100 13 17 3 3 3 22 22 22 GRMZM2G145968_P01 NP_001105108 nucleosome/chromatin assembly factor D seq=translation; coord=2:17348097..17355999:-1; parent_transcript=GRMZM2G145968_T01; parent_gene=GRMZM2G145968 MKDTSFKATG AKRKKVGGAK RGLTPFFAFL AEFRPQYLEK HPELKGVKEV SKAAGEKWRS MSDEEKAKYG GSKKQDGKAS KKENTSSKKA KADVREGDEA EGSNKSKSEV EDDEQDGNED EDE GRMZM2G145968_P02 NP_001105108 nucleosome/chromatin assembly factor D seq=translation; coord=2:17348097..17355999:-1; parent_transcript=GRMZM2G145968_T02; parent_gene=GRMZM2G145968 MSDEEKAKYG GSKKQDGKAS KKENTSSKKA KADVREGDEA EGSNKSKSEV EDDEQDGNED EDE 3.62567 -0.219738 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 455 455 455 383 329 303 229 179 118 90 34 22 16 7 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 461 461 461 389 335 302 226 175 108 69 33 24 12 2 1 1 0 0 1 2 3 4 5 6 7 206 218 28 3 0 0 0 8 0 1 2 3 4 192 230 40 1 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3179 (charge 2) 2068.76 2 162.501 164.446 171.112 172.071 179.079 181.06 182.044 183.113 185.055 195.114 198.123 199.071 203.066 209.055 217.081 218.085 227.066 229.118 231.062 240.098 245.076 246.079 258.108 263.086 268.13 285.156 287.097 301.115 303.165 310.103 316.15 327.165 338.098 342.092 353.108 356.107 360.103 361.108 365.916 374.119 379.451 381.101 392.127 399.114 407.117 414.198 416.139 432.207 435.115 444.247 453.124 471.136 472.24 489.143 496.13 503.278 511.14 513.266 527.174 531.277 545.183 570.199 586.17 588.218 607.159 625.17 642.2 657.236 660.318 732.232 775.346 890.37 1019.41 1147.47 1262.5 1433.56 1986.4 3 3 5 6 4 10 4 3 22 3 10 21 6 3 53 3 61 16 6 5 100 7 4 59 4 7 8 7 9 5 24 9 22 25 4 21 37 6 4 10 4 8 5 10 7 17 20 20 8 6 24 26 5 18 7 15 5 9 19 28 6 6 5 6 7 18 9 6 25 6 17 20 9 21 8 6 6 GRMZM2G099626_P01 NP_001150951 cell envelope integrity inner membrane protein TolA seq=translation; coord=6:167515353..167516623:-1; parent_transcript=GRMZM2G099626_T01; parent_gene=GRMZM2G099626 MATAGSKQGG GSSKPPAAAG QELDPRYEWE ENASSFILRI HLSGFRKQDF RVQVDGAGRL TVRGQRSDAA AANANARHSR FNKVFQLPST SNLDDIAGRF DLGVLTLTVP KRLPAPAKED QQQAKKPEDA DADAAAATKQ VAGAKGAKSE PEQQHKEAAA KEDKPKAAAA AAAPAPAADT TAKEDKPKAA AAAPAPAADT KKQPETQANA ESKATDPTES LAERRTEEER ANANAAAAAE HQRKACRGFK ERVAEELQGL AGSEWAEGLV ETVKRNREVI AVAVAAFSLG VFVSSRLFSR SSRN GRMZM2G099626_P02 NP_001150951 cell envelope integrity inner membrane protein TolA seq=translation; coord=6:167515353..167516623:-1; parent_transcript=GRMZM2G099626_T02; parent_gene=GRMZM2G099626 MATAGSKQGG GSSKPPAAAG QELDPRYEWE ENASSFILRI HLSEGFRKQD FRVQVDGAGR LTVRGQRSDA AAANANARHS RFNKVFQLPS TSNLDDIAGR FDLGVLTLTV PKRLPAPAKE DQQQAKKPED ADADAAAATK QVAGAKGAKS EPEQQHKEAA AKEDKPKAAA AAAAPAPAAD TTAKEDKPKA AAAAPAPAAD TKKQPETQAN AESKATDPTE SLAERRTEEE RANANAAAAA EHQRKACRGF KERVAEELQG LAGSEWAEGL VETVKRNREV IAVAVAAFSL GVFVSSRLFS RSSRN 5.31919 -0.259473 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 6458 6458 6458 6052 5922 4453 3846 2450 1732 1116 635 328 211 136 69 35 15 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6461 6461 6461 6055 5924 4421 3444 2118 1127 760 323 152 86 4 1 0 0 1 2 3 4 5 3453 2498 430 59 26 0 0 1 2 3 4 5 6 7 1157 4126 972 185 19 1 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3180 (charge 2) 1439.75 2 152.056 155.081 157.097 167.081 169.097 173.092 173.128 173.225 175.119 181.11 183.112 183.149 185.091 187.071 197.128 198.089 199.107 201.123 209.105 211.144 214.118 218.149 222.124 226.154 229.118 240.134 242.113 244.167 254.15 257.16 262.149 266.149 270.108 281.16 283.175 285.155 295.14 311.171 313.15 328.197 337.186 341.906 356.193 357.194 382.208 387.703 399.237 408.224 420.244 427.229 429.293 438.197 453.248 456.209 488.238 497.247 521.238 523.248 528.765 535.27 539.246 548.788 557.263 566.181 570.67 606.302 611.299 624.301 643.625 663.324 680.338 689.333 756.389 774.399 785.452 796.384 845.438 896.482 942.489 944.485 1013.51 1084.55 1274.45 1339.6 3 3 3 3 59 9 3 3 11 3 5 9 3 3 3 3 3 9 4 4 100 18 4 14 11 60 9 3 3 20 3 5 3 2 8 81 3 71 5 26 4 3 69 10 44 9 18 4 20 58 4 5 10 4 3 3 3 13 5 13 5 4 3 8 3 13 3 4 4 3 3 4 5 55 5 3 4 3 72 4 14 4 3 3 GRMZM2G140667_P01 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589206..218592127:-1; parent_transcript=GRMZM2G140667_T01; parent_gene=GRMZM2G140667 GRMZM2G140667_P02 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589352..218592127:-1; parent_transcript=GRMZM2G140667_T02; parent_gene=GRMZM2G140667 GRMZM2G140667_P04 NP_001105500 ascorbate peroxidase2 seq=translation; coord=2:218589294..218592021:-1; parent_transcript=GRMZM2G140667_T04; parent_gene=GRMZM2G140667 5.54597 -0.270535 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 7053 7053 6949 6819 6303 5748 4253 3371 2219 1321 725 369 200 98 48 28 15 8 3 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7057 7057 6953 6823 6296 5671 4013 2839 1474 480 111 28 3 1 0 0 1 2 3 4 5 3467 2897 594 110 5 0 0 1 2 3 4 5 6 7 1430 3955 1341 290 35 5 1 16 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3185 (charge 2) 1233.6 2 155.081 158.092 159.076 167.117 169.096 171.076 171.113 173.092 175.119 178.049 181.06 181.096 185.092 186.087 186.123 187.071 187.107 191.084 195.076 195.112 198.087 199.071 199.107 200.102 202.118 205.063 209.091 212.103 216.098 218.15 219.153 227.102 230.113 232.14 240.133 243.109 244.092 258.108 260.196 267.06 270.108 278.148 284.122 295.103 310.101 313.113 315.129 324.154 326.673 329.181 331.123 337.149 341.144 345.14 347.191 355.159 364.174 381.177 387.193 398.202 421.21 424.145 426.198 442.156 445.239 446.261 452.21 458.235 460.166 466.192 495.255 523.211 538.261 541.224 545.328 553.261 555.289 559.23 581.256 582.259 592.306 635.321 645.354 652.34 654.346 674.365 722.396 727.337 728.345 762.339 779.416 781.383 791.329 850.452 878.437 889.457 918.422 925.431 1004.49 1115.52 11 7 13 4 5 7 10 8 19 5 4 6 4 8 2 10 2 6 27 12 6 4 18 7 6 2 9 11 5 29 4 28 32 25 6 4 9 5 2 4 4 7 5 4 4 6 4 6 25 20 2 13 4 9 15 5 2 4 4 5 2 7 4 13 5 19 9 12 8 4 4 4 4 8 10 8 23 7 10 4 4 7 7 100 8 5 8 11 2 15 12 4 4 8 16 8 5 8 12 4 GRMZM2G161295_P01 NP_001142140 hypothetical protein LOC100274305 seq=translation; coord=3:155960410..155963163:-1; parent_transcript=GRMZM2G161295_T01; parent_gene=GRMZM2G161295 MPQHDSSATP PVEYHDSSAT FETKKGTGKD SGKILDGRCP TPAHHYPLAF LSLGRNVKCS SSQQRGLEHS PVTTQQRSQH RGEIMSSLSS GISASPSAAP STARRRHDAA PQQLRVKAAA RPQLLHAGRR RSSVGRRPGG GAVVVRAGPG PLSEIEPDLE EDAIDVYRTN GISPEDFEYG KYDGHHTYFE GQDKKGFWED VSEWYQEAEP PQGFQALISW AFPPAIILGM AFNVPGEYLY IGAAVFIVVF CVIEMGKPDK PHNFEPEIYM MERSARDKLI ADYNSMDIWD FNEKYGELWD FTVNTRDDIV KST 6.62594 -0.339792 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5465 5465 5465 5465 5369 5056 4681 4189 2918 1973 1018 421 183 93 41 17 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5467 5467 5467 5467 5371 5058 4666 4080 2648 1411 439 56 11 1 0 0 1 2 3 4 5 6 7 1535 2425 1140 298 59 11 2 0 0 1 2 3 4 5 6 7 1262 2693 1183 261 49 18 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3188 (charge 3) 1724.77 3 155.081 157.097 159.077 167.092 169.061 169.097 171.076 171.149 172.152 173.091 173.128 175.119 181.06 183.112 185.092 186.088 186.124 187.071 195.089 198.086 199.108 199.144 201.086 207.112 209.092 213.086 226.154 227.158 229.117 233.092 237.123 239.114 244.165 246.09 249.123 251.102 257.196 275.207 277.118 279.096 285.009 292.101 297.118 299.141 301.115 304.159 310.114 314.135 333.141 334.136 337.15 342.147 355.07 383.194 390.235 402.173 406.16 414.675 416.223 419.179 423.677 427.178 445.181 447.173 452.246 456.148 470.316 473.178 497.216 501.271 530.209 532.272 548.22 576.323 582.24 587.276 610.239 618.297 627.278 644.305 654.836 661.863 665.271 683.284 686.343 688.327 693.27 696.463 704.357 706.336 711.28 815.382 851.425 852.426 856.337 1014.49 1079.57 1115.53 1226.66 1252.57 15 15 17 11 5 30 10 57 14 11 5 44 6 5 9 15 12 16 15 9 17 25 12 12 15 11 100 24 9 24 15 19 55 5 12 24 12 56 12 18 11 16 19 10 12 9 24 23 5 8 10 10 35 5 18 10 5 15 9 10 11 11 12 11 10 5 11 14 5 4 9 11 12 18 14 21 13 9 5 10 12 16 5 5 13 18 20 12 23 12 16 5 29 14 10 19 5 11 5 9 GRMZM2G056462_P01 NP_001148481 eukaryotic translation initiation factor 2 beta subunit seq=translation; coord=1:55442662..55452658:1; parent_transcript=GRMZM2G056462_T01; parent_gene=GRMZM2G056462 MADDEQAEKK EEVPELAPFD PTKKKKKKKV VIQEPSDEVD NLAEKTESLT VTESSEPSFA GMKKKKKKHV ELDSSLTETG DVDDTGDDQV REDEEGEGIV LAGAAATRYP WEGTDRDYKY EELLGRVFNI LRENNPDLAG DRRRTVMRPP QVLREGTKKT VFVNFMDLCK TMHRQPEHVM MFLLAEMGTS GSLDGQQRLV IKGRFAPKNF EAILRRYINE YVICNGCKSP DTILSKENRL FFLRCEQCGS SRSVAPIKAG FVAQVGRRKA GS GRMZM2G030646_P01 NP_001132460 hypothetical protein LOC100193916 seq=translation; coord=2:217093149..217097528:-1; parent_transcript=GRMZM2G030646_T01; parent_gene=GRMZM2G030646 MADEEHPERR EEASELAPFD PTKKKKKKKV VIQEPSDEVD KLAEKTESLA VAEPAELNFT GMKKKKKKQV DLDSSIDDLG DGEDTQGDQV VEEQGDGIVL GGGPTYPWEG TDRDYKYEEL LDRVFNILRE NNPDLAGDRR RTVMRPPQVL REGTKKTVFV NFMDLCKTMH RQPEHVMMFL LAEMGTSGSL DGQQRLVIKG RFAPKNFEAI LRRYINEYVI CNGCKSPDTI LSKENRLFFL RCEQCGSSRS VAPIKAGFVA QVGRRKA GRMZM2G030646_P02 NP_001132460 hypothetical protein LOC100193916 seq=translation; coord=2:217093149..217097090:-1; parent_transcript=GRMZM2G030646_T02; parent_gene=GRMZM2G030646 MKKKKKKQVD LDSSIDDLGD GEDTQGDQVV EEQGDGIVLG GGPTYPWEGT DRDYKYEELL DRVFNILREN NPDLAGDRRR TVMRPPQVLR EGTKKTVFVN FMDLCKTMHR QPEHVMMFLL AEMGTSGSLD GQQRLVIKGR FAPKNFEAIL RRYINEYVIC NGCKSPDTIL SKENRLFFLR CEQCGSSRSV APIKAGFVAQ VGRRKA GRMZM2G080048_P01 B6TI18 Eukaryotic translation initiation factor 2 beta subunitPutative uncharacterized protein ; seq=translation; coord=7:173275632..173279449:-1; parent_transcript=GRMZM2G080048_T01; parent_gene=GRMZM2G080048 MADEEHSERR EEASELAPFD PTKKKKKKKV VIQEPSDEVD KLAEKTETLA VAEPAELNFT GMKKKKKKPV DLDSTLDELG DGEDTQDDQA VEEQGEGIVL GSVPTYPWEG TDRDYKYEEL LDRVFNILRE NNPDLAGDRR RTVMRPPQVL REGTKKTVFV NFMDLCKTMH RQPEHVMMFL LAEMGTSGSL DGQQRLVIKG RFAPKNFEAI LRRYINEYVI CNGCKSPDTI LSKENRLFFL RCEQCGSSRS VAPIKAGFVA QVGRRKA GRMZM2G080048_P02 B6TI18 Eukaryotic translation initiation factor 2 beta subunitPutative uncharacterized protein ; seq=translation; coord=7:173275646..173279449:-1; parent_transcript=GRMZM2G080048_T02; parent_gene=GRMZM2G080048 MADEEHSERR EEASELAPFD PTKKKKKKKV VIQEPSDEVD KLAEKTETLA VAEPAELNFT GMKKKKKKPV DLDSTLDELG DGEDTQDDQA VEEQGEGIVL GSVPTYPWEG TDRDYKYEEL LDRVFNILRE NNPDLAGDRR RTVMRPPQVL REGTKKTVFV NFMDLCKTMH RQPEHVMMFL LAEMGTSGSL DGQQRLVIKG RFAPKNFEAI LRRYINEYVI CNGCKSPDTI LSKENRLFFL RCEQCGSSRS VAPIKAGFVA QVGRRKA 6.48613 -0.332622 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 2955 2955 2955 2885 2728 2590 2419 2195 1938 1140 856 475 247 99 48 21 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2960 2960 2960 2890 2733 2587 2397 2116 1812 920 521 199 16 1 0 0 1 2 3 4 1425 1254 275 21 0 0 1 2 3 4 5 6 7 634 1627 549 139 6 2 2 16 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3190 (charge 2) 1100.5 2 152.057 155.082 155.117 156.076 157.061 157.097 157.109 157.133 158.092 159.076 166.05 167.081 169.097 171.076 171.113 173.092 173.128 175.119 176.123 181.06 181.096 183.076 183.113 184.072 185.055 185.092 185.129 185.165 186.086 187.071 187.108 189.086 192.111 194.129 195.075 198.087 199.072 199.107 202.082 204.134 208.072 213.087 215.139 216.098 219.116 226.082 227.066 229.092 235.144 239.095 240.097 243.132 244.092 246.155 249.159 255.108 258.108 270.108 272.171 278.076 288.204 293.077 295.104 300.149 303.213 309.654 312.129 323.099 326.172 330.139 340.123 347.166 363.182 372.188 383.214 392.213 395.18 412.182 418.203 466.206 517.273 531.288 535.178 554.308 575.273 599.29 618.303 628.304 641.333 646.315 656.299 685.32 692.303 725.357 743.366 744.373 755.385 789.358 826.413 857.411 7 12 6 3 11 6 5 12 21 15 7 12 11 7 9 8 5 100 3 11 6 14 11 7 4 17 14 27 6 6 22 6 4 6 3 8 18 11 30 3 16 30 9 9 7 35 10 8 14 18 7 5 29 6 16 7 3 3 12 5 3 6 12 6 11 3 7 18 8 8 6 27 8 13 8 9 13 26 40 3 18 56 6 13 24 15 8 14 12 28 3 3 9 17 53 24 6 4 16 8 GRMZM2G164538_P01 NP_001130932 hypothetical protein LOC100192037 seq=translation; coord=10:95345548..95351279:1; parent_transcript=GRMZM2G164538_T01; parent_gene=GRMZM2G164538 MMESQPLQAP TATAPAPGSA EPAGAPPAVT PGKEFTRTCK GLVVVLIGGY VLLQLLPSSL NYLAIIPSKT IPYVWTVFTA GYIEQVLPGA IGSSLGLLFC GKDIEPAWGR KEFLKFIILI NSICGILAFC FAIGLYYVTG KESFLVTPLS GFHGCLAGFL VALKQLLPNL ELPMCFFWKI KAKWMPFFVV CFSSIMAFIV PDSINFLPTL VSGMYVSWLY LRYFQRNPLT GLKGDPSDDF SFPSLFPAAM RPVTDPVANL FDRLLCARSR PLEVALPISD PTKASRRRER GERVLEERLA ADNAGDTEAS PRGHGTAED 5.29664 -0.271623 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 4550 4550 4546 4328 4192 3750 3522 2072 1625 700 440 232 160 75 31 17 8 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4553 4553 4549 4331 4179 3704 3445 1887 1285 470 157 87 31 7 1 0 0 1 2 3 4 5 2100 1958 450 37 8 0 0 1 2 3 4 5 6 7 1047 2862 554 79 9 0 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3191 (charge 2) 1387.64 2 152.057 155.081 155.118 157.061 157.097 157.133 158.092 158.137 159.076 159.113 159.942 169.097 171.076 171.113 173.092 175.118 183.112 183.148 185.092 185.128 186.087 186.132 187.071 187.107 191.084 195.112 197.128 198.121 199.106 202.084 205.096 211.144 213.087 215.137 219.078 223.108 226.154 228.133 230.077 234.145 237.123 242.113 244.164 247.107 255.145 256.165 258.107 265.117 272.171 274.101 283.103 293.112 301.114 309.119 325.185 327.129 342.175 354.139 359.204 369.175 372.15 398.166 408.155 426.158 430.24 440.212 443.191 468.207 485.235 511.248 548.63 559.283 590.301 598.299 616.296 642.318 660.329 664.86 741.357 775.357 804.87 814.365 832.377 834.381 903.415 905.414 913.397 1000.42 1017.46 1019.45 1115.47 1132.48 1143.42 1186.48 1203.52 3 10 4 2 7 73 9 2 13 3 2 3 4 4 3 26 15 7 2 89 4 4 13 3 3 2 3 2 4 3 2 12 8 2 3 3 10 3 11 3 4 4 3 3 33 8 9 12 29 3 3 3 26 3 3 9 9 3 16 3 10 9 2 3 35 15 4 12 2 3 2 17 3 4 3 4 72 9 3 21 3 8 100 13 40 3 3 9 25 3 3 18 3 3 15 GRMZM2G122871_P01 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104066600..104071298:1; parent_transcript=GRMZM2G122871_T01; parent_gene=GRMZM2G122871 GRMZM2G122871_P04 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104068352..104071134:1; parent_transcript=GRMZM2G122871_T04; parent_gene=GRMZM2G122871 GRMZM2G122871_P02 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104066600..104071298:1; parent_transcript=GRMZM2G122871_T02; parent_gene=GRMZM2G122871 GRMZM2G122871_P03 NP_001131533 hypothetical protein LOC100192872 seq=translation; coord=6:104066600..104070943:1; parent_transcript=GRMZM2G122871_T03; parent_gene=GRMZM2G122871 4.67055 -0.252462 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 5704 5704 5704 5689 5607 3703 3131 1663 1062 673 446 315 201 71 42 9 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5705 5705 5705 5690 5608 3704 3097 1553 962 571 329 225 113 2 1 0 0 1 2 3 4 3971 1545 182 18 0 0 1 2 3 4 5 6 7 941 4393 316 53 1 0 0 12 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3194 (charge 2) 1718.93 2 162.619 168.065 169.097 169.783 171.076 171.149 175.118 181.06 188 199.144 201.086 226.155 229.118 240.135 244.165 259.103 270.466 298.138 300.155 328.186 331.554 351.166 395.162 399.224 427.181 451.3 469.312 543.297 553.68 556.221 597.286 627.261 649.962 651.852 660.862 694.458 696.88 765.499 768.349 843.402 858.44 861.447 894.533 933.847 1023.58 1088.05 1152.61 1320.71 1322.72 1521.76 4 4 21 4 3 89 9 3 4 86 6 77 8 5 42 4 3 25 9 59 4 4 4 7 16 8 38 5 5 9 5 23 4 15 55 48 8 17 5 6 69 28 16 5 9 5 18 100 20 6 GRMZM5G808402_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=Pt:54176..56114:-1; parent_transcript=GRMZM5G808402_T01; parent_gene=GRMZM5G808402 GRMZM2G385622_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=2:200098864..200103052:1; parent_transcript=GRMZM2G385622_T01; parent_gene=GRMZM2G385622 GRMZM2G062854_P01 Q5SBI2 Putative uncharacterized protein seq=translation; coord=6:160782373..160789444:-1; parent_transcript=GRMZM2G062854_T01; parent_gene=GRMZM2G062854 GRMZM2G448389_P01 Q5SBI4 Putative uncharacterized protein seq=translation; coord=1:203928301..203930456:1; parent_transcript=GRMZM2G448389_T01; parent_gene=GRMZM2G448389 MRTNPTTSRP GISTIEEKSV GRIDQIIGPV LDITFPPGKL PYIYNALIVK SRDTADKQIN VTCEVQQLLG NNRVRAVAMS ATEGLMRGME VIDTGTPLSV PVGGATLGRI FNVLGEPIDN LGPVDTSATF PIHRSAPAFI ELDTKLSIFE TGIKVVDLLA PYRRGGKIGL FGGAGVGKTV LIMELINNIA KAHGGVSVFG GVGERTREGN DLYMEMKESG VINEKNIEES KVALVYGQMN EPPGVRMRVG LTALTMAEYF RDVNKQDVLL FIDNIFRFVQ AGSEVSALLG RMPSAVGYQP TLSTEMGSLQ ERITSTKKGS ITSIQAVYVP ADDLTDPAPA TTFAHLDATT VLSRGLASKG IYPAVDPLDS TSTMLQPRIV GNEHYETAQR VKETLQRYKE LQDIIAILGL DELSEEDRLT VARARKIERF LSQPFFVAEV FTGSPGKYVG LAETIRGFQL ILSGELDGLP EQAFYLVGNI DEASTKAINL EEESKLKK GRMZM2G448142_P02 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203904004..203910810:-1; parent_transcript=GRMZM2G448142_T02; parent_gene=GRMZM2G448142 GRMZM2G448142_P03 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203907697..203910810:-1; parent_transcript=GRMZM2G448142_T03; parent_gene=GRMZM2G448142 5.60204 -0.26056 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 7756 7756 7640 7375 7020 6502 5842 5144 3519 2472 1125 629 359 197 113 55 24 15 13 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7745 7745 7629 7364 6991 6429 5610 4820 2773 1310 263 47 2 1 1 0 0 1 2 3 4 5 6 7 2378 3099 1646 485 125 26 5 0 0 1 2 3 4 5 6 7 1340 3598 2071 510 168 61 8 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3196 (charge 3) 1416.69 3 150.066 155.045 156.076 157.097 158.092 159.076 159.112 164.118 166.061 171.112 172.071 173.092 175.119 176.122 185.091 185.164 186.168 187.071 187.107 200.102 213.159 216.097 218.149 221.103 226.118 235.142 239.113 244.092 246.179 249.098 258.107 261.119 265.117 267.108 269.122 271.141 273.134 284.087 286.15 293.113 301.128 303.177 317.217 329.148 340.16 345.137 347.095 355.16 357.187 364.122 374.214 381.15 393.151 394.157 410.177 412.158 416.174 421.145 430.17 438.172 443.71 447.185 452.716 458.24 459.292 475.261 492.219 509.245 510.247 515.244 517.237 537.239 548.227 557.231 562.282 573.242 579.743 585.247 586.294 594.259 601.232 602.769 604.303 606.31 634.323 652.304 661.35 672.306 684.294 730.282 750.344 760.419 767.366 769.372 777.352 818.407 887.4 904.425 906.431 1033.46 4 10 3 5 9 7 21 4 2 2 22 3 42 3 6 88 10 7 8 4 12 2 2 13 7 2 4 5 4 18 3 3 3 15 6 6 10 5 10 4 10 6 3 2 4 3 2 2 4 3 12 4 14 5 13 6 6 4 4 15 3 2 28 3 3 39 4 8 2 2 3 5 2 3 3 6 2 3 9 5 5 16 55 4 4 7 12 2 3 3 6 3 100 11 4 6 3 29 5 6 GRMZM2G435373_P01 NP_001151199 LOC100284832 seq=translation; coord=8:103922075..103930908:-1; parent_transcript=GRMZM2G435373_T01; parent_gene=GRMZM2G435373 MDEEYDVIVL GTGLKECILS GLLSVDGLKV LHMDRNDYYG GDSTSLNLNQ LWKRFRGEDK PPAHLGASRD YNVDMVPKFM MANGTLVRTL IHTDVTKYLS FKAVDGSYVF SKGKIYKVPA TDMEALKSPL MGLFEKRRAR NFFIYVQDYN EADPRTHQGL DLTRVTTREL IAKYGLSDDT VDFIGHALAL HRDDRYLDEP ALDTVKRMKL YSESLARFQG GSPYIYPLYG LGELPQGFAR LSAVYGGTYM LNKPECKVEF DMEGKVCGVT SEGETAKCKK VVCDPSYLPN KVRKIGRVVR AIAIMSHPIP NTNESHSVQI ILPQKQLGRR SDMYVFCCSY THNVAPRGKF IAFVSAEAET DNPQSELKPG IDLLGSVDEI LYDIYDRYEP VNEPSLDNCF VTTSYDATTH FETTVTDVLN MYTMITGKTV DLSVDLSAAS AAEEY GRMZM2G435373_P02 NP_001151199 LOC100284832 seq=translation; coord=8:103922075..104021247:-1; parent_transcript=GRMZM2G435373_T02; parent_gene=GRMZM2G435373 MDEEYDVIVL GTGLKECILS GLLSVDGLKV LHMDRNDYYG GDSTSLNLNQ LWKRFRGEDK PPAHLGASRD YNVDMVPKFM MANGTLVRTL IHTDVTKYLS FKAVDGSYVF SKGKIYKVPA TDMEALKSPL MGLFEKRRAR NFFIYVQDYN EADPRTHQGL DLTRVTTREL IAKYGLSDDT VDFIGHALAL HRDDRYLDEP ALDTVKRMKL YSESLARFQG GSPYIYPLYG LGELPQGFAR LSAVYGGTYM LNKPECKVEF DMEGKVCGVT SEGETAKCKK VVCDPSYLPN KVRKIGRVVR AIAIMSHPIP NTNESHSVQI ILPQKQLGRR SDMYVFCCSY THNVAPRGKF IAFVSAEAET DNPQSELKPG IDLLGSVDEI LYDIYDRYEP VNEPSLDNCF VTTSYDATTH FETTVTDVLN MYTMITGKTV DLSVDLSAAS AAEEY GRMZM2G117507_P01 seq=translation; coord=6:147337293..147347544:-1; parent_transcript=GRMZM2G117507_T01; parent_gene=GRMZM2G117507 MDEEYDVIVL GTGLKECILS GLLSVDGLKV LHMDRNDYYG GDSTSLNLNQ LWKRFRGEDK PPAHLGASRD YNVDMVPKFM MANGTLVRTL IHTDVTKYLS FKAVDGSYVF SKGKIYKVPA TDMEALKSPL MGLFEKRRAR NFFIYVQDYN EADPRTHQGL DLTRVTTREL IAKYGLSDDT VDFVGHALAL HRDDRYLDEP ALDTVKRMKL YADSLARFQG GSPYIYPLYG LGELPQGFAR LSAVYGGTYM LNKPDCKVEF DMEGKVCGVT SEGETAKCKK VVCDPSYLQN KVRKIGRVVR AIAIMSHPIP NTNESHSVQI ILPQKQLGRR SDMYVFCCSY THNVAPRGKF IAFVSAEAET DNPQSELKPG IDLLGSVDEI FYDIYDRYEP VNEPSLDNCF VSTSYDATTH FETTVTDVLN MYTMITGKTV DLSVDLSAAS AAEEY 7.82337 -0.332909 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 12509 12509 12509 12509 12173 11732 10720 9806 8695 6440 4525 2495 1367 686 317 155 86 24 12 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 12518 12518 12518 12518 12182 11727 10662 9626 8374 5043 2972 746 135 15 1 0 0 1 2 3 4 5 6 7 3101 5375 2989 843 181 20 0 10 0 1 2 3 4 5 6 7 2553 5570 2892 1129 285 74 8 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3197 (charge 3) 1637.85 3 152.057 155.081 157.097 158.092 159.076 162.091 165.102 171.076 171.113 175.119 181.133 185.091 185.165 189.086 195.113 198.087 199.071 199.107 199.18 201.123 203.102 207.112 213.159 215.139 217.097 223.155 226.118 227.175 229.117 234.144 240.134 243.134 245.126 251.15 258.144 262.151 278.153 284.125 287.15 303.177 306.155 309.118 320.68 327.131 345.213 347.168 379.205 390.209 401.713 404.725 415.711 453.251 460.204 462.243 487.226 488.229 490.235 499.756 503.293 507.264 517.293 520.227 533.283 542.269 547.289 551.221 554.291 568.286 575.273 576.275 605.266 618.31 622.294 640.354 648.296 672.333 691.326 711.392 713.359 715.358 733.362 735.326 736.326 739.336 751.398 776.348 792.337 808.442 814.407 818.393 826.369 830.411 846.35 864.367 866.363 870.335 880.456 905.501 970.508 977.452 6 8 6 14 8 6 10 8 6 84 8 9 34 7 8 6 7 11 100 25 6 21 10 8 8 15 19 22 14 11 7 6 13 12 7 13 7 7 23 19 8 7 21 11 18 7 7 58 7 22 18 36 6 7 25 9 14 6 60 6 6 12 13 6 24 22 19 16 8 6 90 16 21 35 8 6 6 26 15 6 44 51 20 6 7 9 12 63 6 8 8 6 16 85 10 7 12 15 9 9 GRMZM5G808402_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=Pt:54176..56114:-1; parent_transcript=GRMZM5G808402_T01; parent_gene=GRMZM5G808402 GRMZM2G385622_P01 P00827 ATP synthase subunit beta, chloroplastic (EC 3.6.3.14)(F-ATPase subunit beta)(ATP synthase F1 sector subunit beta) seq=translation; coord=2:200098864..200103052:1; parent_transcript=GRMZM2G385622_T01; parent_gene=GRMZM2G385622 GRMZM2G062854_P01 Q5SBI2 Putative uncharacterized protein seq=translation; coord=6:160782373..160789444:-1; parent_transcript=GRMZM2G062854_T01; parent_gene=GRMZM2G062854 GRMZM2G448389_P01 Q5SBI4 Putative uncharacterized protein seq=translation; coord=1:203928301..203930456:1; parent_transcript=GRMZM2G448389_T01; parent_gene=GRMZM2G448389 GRMZM2G448142_P02 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203904004..203910810:-1; parent_transcript=GRMZM2G448142_T02; parent_gene=GRMZM2G448142 GRMZM2G448142_P03 P06670 NAD(P)H-quinone oxidoreductase subunit K, chloroplastic (EC 1.6.5.-)(NAD(P)H dehydrogenase subunit K)(NADH-plastoquinone oxidoreductase subunit K) seq=translation; coord=1:203907697..203910810:-1; parent_transcript=GRMZM2G448142_T03; parent_gene=GRMZM2G448142 5.98971 -0.234891 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 6412 6412 6412 6154 5840 5409 5015 4620 2958 2356 1209 590 323 210 138 65 39 28 12 7 5 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6422 6422 6422 6164 5846 5344 4902 4415 2378 1474 379 77 32 1 0 0 1 2 3 4 5 6 7 3209 2517 569 110 16 0 8 0 0 1 2 3 4 5 6 7 1265 3547 1236 266 85 20 2 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3198 (charge 2) 1416.69 2 155.045 155.081 157.097 158.092 159.112 171.076 172.071 175.119 176.121 178.134 181.108 185.165 186.168 187.107 200.103 209.104 213.159 221.104 226.118 244.093 249.098 267.108 270.181 271.139 273.135 284.087 286.15 293.113 301.121 303.178 339.201 347.097 357.186 363.141 372.187 374.215 381.15 384.223 393.15 400.183 410.176 412.159 421.148 430.171 438.172 452.716 458.233 468.248 475.261 492.215 508.233 513.264 517.237 520.218 522.227 537.24 548.224 557.23 565.744 574.258 579.741 586.294 587.289 594.259 601.235 602.77 604.304 606.306 608.258 622.33 634.312 643.791 650.324 652.303 700.319 710.359 730.284 750.346 767.366 769.372 777.352 813.38 818.402 844.4 868.425 887.397 904.426 906.427 914.406 1015.45 1030.42 1033.47 1130.51 1147.5 1187.5 1188.52 1204.53 1206.54 1263.6 1304.58 6 9 5 6 5 2 17 53 3 5 4 96 11 3 3 7 33 6 6 6 12 12 7 9 7 6 11 3 8 10 3 4 4 3 4 17 4 3 5 6 8 7 4 5 15 33 4 3 42 3 9 3 5 3 4 7 5 6 3 7 3 9 4 9 7 32 56 4 4 7 4 9 7 22 7 4 8 5 100 9 8 5 5 3 5 5 59 5 4 5 3 14 3 3 6 6 41 9 6 3 AC195340.3_FGP002 seq=translation; coord=5:5423706..5426538:1; parent_transcript=AC195340.3_FGT002; parent_gene=AC195340.3_FG002 MASLLARQAA QALRARQTAQ LGPAASAMQG HLRTYMNAGI PKRFKEDEEK EQLAKDLAKD WNAVFERSIN TLFLTEMVRG LMLTLKYFFD RNVTINYPFE KGPLSPRFRG EHALRRYESG EERCIACKLC EAICPAQAIT IEAEEREDGS RRTTRYDIDM TKCIYCGFCQ EACPVDAIVE GPNFEFATET HEELLYDKEK LLENGDRWET EIAENLRSES LYR 7.07186 -0.344969 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 9194 9194 9194 9194 9194 9063 8740 8208 7462 5933 4477 2574 1521 558 238 115 52 18 6 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 9202 9202 9202 9202 9202 9071 8747 8156 7295 5371 3035 1310 423 18 1 0 0 1 2 3 4 5 6 7 2557 3909 1834 710 163 24 0 6 0 1 2 3 4 5 6 7 1460 3873 2826 835 174 30 3 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3200 (charge 3) 1493.75 3 152.056 155.081 155.117 157.061 157.097 157.134 158.092 159.076 166.05 167.081 167.117 169.061 169.097 169.133 171.113 172.071 173.128 175.119 177.102 181.06 183.076 183.149 185.092 186.087 186.123 187.071 195.113 197.128 199.071 200.102 201.123 204.134 211.144 213.123 218.15 219.15 223.155 224.102 226.118 231.124 240.134 242.113 245.076 251.149 258.108 262.139 267.108 274.187 276.171 286.139 308.158 329.191 331.236 351.165 353.182 356.684 363.178 369.178 371.194 374.119 405.211 439.184 442.27 459.292 461.234 480.293 501.278 502.282 536.234 543.274 544.283 570.327 588.336 589.34 599.817 610.303 615.309 620.324 625.216 631.249 639.838 648.345 649.355 673.843 684.329 697.401 712.362 716.431 742.285 748.347 750.369 754.421 785.388 809.416 841.452 845.481 861.427 870.353 884.411 885.414 12 55 13 10 13 11 27 36 19 13 12 11 14 22 20 13 19 100 22 15 32 44 12 15 14 12 35 16 20 27 18 18 11 14 73 21 21 16 36 23 48 15 26 16 21 26 11 88 26 11 24 15 21 11 15 70 11 17 12 13 37 22 16 15 12 15 66 19 15 69 11 19 36 12 51 11 51 19 12 13 12 95 25 16 12 31 69 23 19 23 12 29 25 18 35 11 14 13 27 11 GRMZM2G058173_P01 NP_001151824 undecaprenyl pyrophosphate synthetase seq=translation; coord=7:144837690..144838974:-1; parent_transcript=GRMZM2G058173_T01; parent_gene=GRMZM2G058173 4.73357 -0.230906 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 7646 7646 7545 7259 6536 5971 5142 4579 2959 1568 1093 620 338 184 122 81 37 23 21 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7650 7650 7549 7223 6479 5760 4857 4267 1978 788 191 42 4 1 0 0 1 2 3 4 5 6 7 3892 2876 723 134 14 10 2 0 0 1 2 3 4 5 6 7 1745 3983 1436 407 64 14 0 2 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3201 (charge 2) 1584.73 2 155.081 158.092 167.093 169.096 171.076 173.092 175.119 185.092 186.095 189.087 195.087 199.071 209.103 212.102 217.082 226.118 240.134 244.092 258.145 266.123 268.128 270.107 273.118 286.139 288.118 290.142 296.134 300.119 318.127 344.155 347.151 355.166 361.182 367.171 369.138 371.156 383.156 389.166 401.166 419.711 438.202 440.175 445.203 448.22 454.202 456.212 462.23 466.193 473.235 484.208 490.739 498.746 502.212 527.253 533.262 542.262 553.222 555.248 571.236 592.783 613.296 630.32 632.321 641.308 654.268 672.28 684.326 701.357 729.297 743.329 771.326 775.346 784.354 794.342 838.415 856.379 884.375 895.435 897.441 955.411 996.479 1006.51 1010.46 1083.51 1184.57 1186.56 1299.59 1400.65 7 2 4 2 5 7 42 38 1 2 7 2 8 1 10 2 8 2 5 6 10 16 3 15 10 2 5 3 5 2 1 3 6 2 2 2 19 3 9 7 2 2 2 2 3 10 5 2 2 9 2 5 12 1 8 5 4 3 10 9 7 100 5 2 3 5 3 47 2 2 5 2 2 2 23 9 12 31 2 6 21 2 2 27 13 2 12 2 GRMZM2G036609_P01 P23225 Ferredoxin-dependent glutamate synthase, chloroplastic Precursor (EC 1.4.7.1)(Fd-GOGAT) seq=translation; coord=7:170961145..170979959:-1; parent_transcript=GRMZM2G036609_T01; parent_gene=GRMZM2G036609 GRMZM2G036609_P02 P23225 Ferredoxin-dependent glutamate synthase, chloroplastic Precursor (EC 1.4.7.1)(Fd-GOGAT) seq=translation; coord=7:170961720..170979959:-1; parent_transcript=GRMZM2G036609_T02; parent_gene=GRMZM2G036609 7.24661 -0.322071 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 4237 4237 4237 4237 4237 4235 3943 3780 3420 2596 1910 1163 712 393 256 178 36 8 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4232 4232 4232 4232 4232 4230 3938 3758 3324 2356 1388 509 101 31 1 0 0 1 2 3 4 5 6 7 1562 1530 801 203 54 87 0 1 0 1 2 3 4 5 6 7 681 1865 1156 358 112 62 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3202 (charge 3) 1530.66 3 155.081 157.097 158.092 159.076 167.081 171.076 171.113 173.092 173.128 175.119 184.072 185.091 186.086 186.123 187.072 187.144 195.075 197.128 199.071 199.108 204.134 209.105 212.103 213.087 216.134 225.124 227.102 228.106 234.145 241.08 244.166 248.16 254.15 258.144 276.154 282.146 289.161 295.138 299.138 301.128 307.14 313.15 321.137 324.126 331.207 335.661 341.145 342.142 347.194 358.142 365.185 371.186 395.168 399.692 413.676 418.242 431.238 437.187 460.239 462.248 470.698 476.215 490.241 504.204 511.746 514.234 516.219 519.228 524.208 533.257 544.212 561.28 587.251 591.28 592.286 610.241 615.252 641.266 644.323 645.322 670.321 676.305 690.297 695.399 712.294 714.793 729.298 741.372 742.384 747.341 794.331 798.364 819.364 826.33 843.338 876.383 890.404 923.367 940.385 1069.43 63 19 18 52 20 19 25 20 16 80 22 23 14 14 26 14 15 46 15 58 31 32 52 23 37 21 100 15 92 21 45 36 13 25 14 23 14 20 15 24 63 19 39 20 14 38 69 22 36 20 57 19 16 19 29 20 15 14 51 41 60 42 70 30 49 19 28 14 20 44 23 26 16 77 22 15 22 22 35 29 29 94 14 16 14 23 21 17 17 51 18 16 18 21 41 28 32 14 29 15 GRMZM2G064877_P02 seq=translation; coord=3:3692326..3694505:-1; parent_transcript=GRMZM2G064877_T02; parent_gene=GRMZM2G064877 MGLLAGSTVF LLTLLWGTCV VVGKCDLGPN REAVDVTDTK GFSLTGTGIT TDVQTSYAAR IMGLSVIPFI IAQFPKMLKT HHGQRLAMLL ALIVSFLLVL SYCLYQVFQP WIQRRKLAYA KHKHVISGIL RHAQMQSLGR LLNDDGTPND DVIRKLFRKI DMDQSESLSR AELHALIVGI NFEEVDFDRT DAVDKVMDDF DTSRNDVVEQ EEFVQGMKKW LNEAKRSVPV GGAFSTKFIN EYHERTRQEH NELVDRSDEA VESVENPGWC IAKAVALLLL GAAIAAAFAD PLVDAVHNFS NATHIPSFFI SFIALPLATN SSEAVSAIIF ASRKKQRTCS LTFSEVYGGV TMNNTLCLGV FLALIYFRNL TWDFSSEVLI ILLVCVVMAL FTSFRTTFPL WTCLVAYMLY PFSLVLVYIL DYVFGWS 5.68055 -0.29131 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 6756 6756 6756 6756 6676 6447 6090 5603 4922 3719 2807 1772 804 439 192 79 43 15 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6706 6706 6706 6706 6626 6397 6011 5461 4680 3170 1864 513 2 1 1 0 0 1 2 3 4 5 6 2527 2598 1208 357 57 16 0 0 1 2 3 4 5 6 7 1104 2798 1886 770 169 30 6 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3205 (charge 3) 1424.67 3 152.056 155.081 156.077 157.097 157.133 158.027 158.092 159.076 159.113 160.116 167.055 169.097 171.076 171.112 172.07 173.091 173.128 175.119 176.123 181.061 181.096 185.092 185.129 185.165 186.124 186.168 187.071 187.107 188.074 189.087 197.128 198.087 199.071 199.108 199.18 201.123 204.134 209.092 215.139 217.081 221.103 226.118 239.094 242.15 244.094 245.124 249.098 255.145 258.144 262.151 267.109 270.105 272.171 288.203 309.119 312.677 341.19 343.209 345.161 357.215 375.234 416.177 440.252 454.217 456.258 462.266 476.734 491.774 504.253 527.291 535.297 546.29 555.283 573.302 574.305 591.308 592.318 601.332 605.306 606.31 619.274 624.346 634.318 636.3 637.303 646.283 649.334 661.35 662.354 678.342 679.346 684.385 692.301 762.354 768.373 770.375 771.381 819.411 820.409 906.427 6 15 8 10 19 16 29 54 87 12 7 11 19 21 8 14 31 100 9 11 13 18 6 38 7 12 37 24 9 12 7 7 25 12 27 20 12 10 7 14 7 21 11 7 10 21 7 7 9 39 8 8 26 19 11 11 7 7 25 12 17 8 9 8 6 75 15 8 8 27 7 11 11 20 12 20 8 23 8 8 13 20 12 17 7 9 9 10 21 27 7 16 7 15 17 19 13 16 8 7 GRMZM2G046804_P01 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36880092..36884475:-1; parent_transcript=GRMZM2G046804_T01; parent_gene=GRMZM2G046804 GRMZM2G046804_P02 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881035..36884475:-1; parent_transcript=GRMZM2G046804_T02; parent_gene=GRMZM2G046804 GRMZM2G046804_P04 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T04; parent_gene=GRMZM2G046804 GRMZM2G046804_P05 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T05; parent_gene=GRMZM2G046804 GRMZM2G046804_P06 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884475:-1; parent_transcript=GRMZM2G046804_T06; parent_gene=GRMZM2G046804 GRMZM2G046804_P07 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881117..36884877:-1; parent_transcript=GRMZM2G046804_T07; parent_gene=GRMZM2G046804 GRMZM2G046804_P08 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881357..36884877:-1; parent_transcript=GRMZM2G046804_T08; parent_gene=GRMZM2G046804 GRMZM2G180625_P01 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903246:-1; parent_transcript=GRMZM2G180625_T01; parent_gene=GRMZM2G180625 GRMZM2G180625_P02 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903246:-1; parent_transcript=GRMZM2G180625_T02; parent_gene=GRMZM2G180625 GRMZM2G180625_P03 Q09054 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 2 (EC 1.2.1.12) seq=translation; coord=6:6898695..6903153:-1; parent_transcript=GRMZM2G180625_T03; parent_gene=GRMZM2G180625 GRMZM2G046804_P03 P08735 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 1 (EC 1.2.1.12) seq=translation; coord=4:36881090..36884877:-1; parent_transcript=GRMZM2G046804_T03; parent_gene=GRMZM2G046804 GRMZM2G176307_P01 NP_001105951 cytosolic glyceroldehyde-3-phosphate dehydrogenase GAPC4 seq=translation; coord=5:181520274..181524899:1; parent_transcript=GRMZM2G176307_T01; parent_gene=GRMZM2G176307 GRMZM2G176307_P02 NP_001105951 cytosolic glyceroldehyde-3-phosphate dehydrogenase GAPC4 seq=translation; coord=5:181520571..181525066:1; parent_transcript=GRMZM2G176307_T02; parent_gene=GRMZM2G176307 GRMZM2G071630_P01 Q43247 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 3 (EC 1.2.1.12) seq=translation; coord=4:133103720..133107109:1; parent_transcript=GRMZM2G071630_T01; parent_gene=GRMZM2G071630 GRMZM2G071630_P02 Q43247 Glyceraldehyde-3-phosphate dehydrogenase, cytosolic 3 (EC 1.2.1.12) seq=translation; coord=4:133104109..133107067:1; parent_transcript=GRMZM2G071630_T02; parent_gene=GRMZM2G071630 5.40678 -0.263745 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1897 1897 1897 1862 1818 1748 1642 1461 1165 802 542 337 217 139 57 37 23 4 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 1885 1885 1885 1850 1806 1730 1596 1303 876 357 101 16 1 0 0 1 2 3 4 5 562 882 429 64 4 0 0 1 2 3 4 5 6 7 278 893 486 199 39 2 0 44 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3211 (charge 2) 928.583 2 155.081 157.097 157.133 158.092 159.076 163.133 167.055 169.053 169.097 171.076 171.112 171.149 173.092 175.119 176.107 178.133 183.076 183.114 183.149 184.153 185.091 185.128 185.165 186.124 187.071 187.127 189.087 194.129 197.128 197.165 199.108 199.144 199.181 201.123 203.103 210.16 211.144 214.118 215.139 218.15 223.155 226.119 228.17 234.145 240.098 242.151 244.164 247.107 251.15 255.145 257.125 258.145 260.196 272.171 273.174 276.156 282.181 285.156 287.975 290.987 299.173 304.947 310.149 311.135 313.186 322.958 328.161 331.197 332.954 339.203 346.969 349.152 353.219 359.029 361.026 370.207 375.223 382.206 389.197 402.234 409.22 410.204 431.088 446.263 456.285 489.267 490.272 501.268 557.291 574.319 587.376 598.394 602.353 644.43 669.393 685.353 701.42 715.47 782.297 800.484 8 7 17 7 13 12 13 4 18 4 8 6 7 35 4 5 4 7 37 4 12 5 17 45 8 3 5 4 9 4 5 10 50 8 3 8 12 11 11 4 18 9 9 17 11 4 5 6 10 7 9 15 12 50 6 10 7 3 12 4 4 40 5 15 14 30 6 100 16 4 4 4 7 12 53 4 8 6 4 16 6 5 6 7 5 22 6 4 5 4 3 4 15 4 7 10 24 24 4 7 GRMZM2G110289_P01 seq=translation; coord=9:2332757..2339255:1; parent_transcript=GRMZM2G110289_T01; parent_gene=GRMZM2G110289 MESSLLLSTP RPLKPFHPHH FPTARRRDAS FRGKPPPPPP LPPLGRGSRR LGRAVPRASS EAFGDGFRSQ DRPPGVSSGG VRRRTYREAQ GEAAVPPVAA AARAVAPYVA PVGAVLMLSF VIWKVVQNMI PGKKKDHGSG KHAPSGIMWS FAAGSNLATS TLSAEKESRK NLNKFYKELR TLKTVNMAGR QFGDEGLFFL AESLAYDKSA EEVDFSGNGI TAVGIEAFDG VLQINTTLKT LNLSGNDIGD EGAKCLSDIL VENVGIQKLL LNSINIGDEG AKALSNMLKK NKSIRILQFS NNAIEYSGFA SIAEALLENN TIRSLYLNGN YGGPLGACSL AQGILGNKSL REIHLHGNGI GNEGIRELMS ALSAHKGKIT VVDIGNNNIS PEGLHPVAEF LKRTKSLQWF SLYMNDISDE GAEKVAEALK DNKTISTIDL GGNNIHSKAV SAVAETLKDN AVLTTLDLSY NPIGSDGVKA LCDVLKFHGK IQTLKLGWCQ IGMEGAECIA DCLKYNTTLS TLDLRANGLG NDGAICLARS FKIINESLTS LDLGFNEIRD DGAFALAQAL KANEDLAVTS LNLANNFFTK FGQVALSEAR DHVYEMTERE IDIYF 6.36801 -0.326565 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 7354 7354 7354 7354 7336 6930 6637 5980 5235 3944 2816 1535 697 331 145 67 21 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 7286 7286 7286 7286 7268 6862 6562 5817 4896 3467 1897 398 1 0 0 1 2 3 4 5 6 2381 3083 1327 443 109 18 0 0 1 2 3 4 5 6 7 1528 3129 1865 634 172 26 3 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3212 (charge 3) 1398.71 3 155.081 157.097 157.109 157.133 158.092 159.076 159.112 163.133 169.061 169.097 171.113 173.092 173.128 175.072 175.119 176.122 180.094 181.061 183.149 185.129 185.165 186.087 186.123 187.072 194.129 199.071 199.107 199.182 201.125 213.087 216.098 218.15 223.155 226.154 227.1 231.097 240.135 242.149 244.165 247.107 250.118 252.137 255.109 258.145 261.155 272.171 273.177 278.113 306.942 324.953 327.166 331.199 333.671 337.15 359.182 363.024 375.234 383.161 388.229 401.214 412.21 424.218 437.736 456.748 463.2 467.837 475.26 476.28 481.22 487.226 510.254 513.257 530.26 531.268 534.8 539.33 544.294 562.295 574.293 592.314 609.299 628.342 634.294 636.385 647.828 657.323 666.342 676.411 692.338 694.332 702.417 710.357 719.36 721.328 728.363 738.353 809.427 815.439 826.403 912.49 15 9 8 32 26 13 10 42 13 12 13 12 20 8 100 8 8 15 9 9 39 21 13 8 21 9 13 9 13 11 18 12 15 19 12 9 11 14 16 11 8 7 32 21 13 26 8 9 9 8 7 20 10 11 25 8 9 9 34 22 10 9 25 10 8 9 42 42 8 15 18 10 8 13 19 12 8 64 10 26 13 21 8 8 18 8 8 13 8 12 7 14 12 9 9 32 12 8 8 22 GRMZM2G083841_P01 P04711 Phosphoenolpyruvate carboxylase 1 (PEPCase 1)(PEPC 1)(EC 4.1.1.31) seq=translation; coord=9:61296279..61301686:1; parent_transcript=GRMZM2G083841_T01; parent_gene=GRMZM2G083841 4.87163 -0.314299 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 5808 5808 5808 5586 5310 5098 3698 3068 1811 1025 597 208 79 36 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5831 5831 5831 5609 5333 5099 3618 2725 1433 640 254 58 13 1 0 0 1 2 3 4 5 2771 2535 473 50 8 0 0 1 2 3 4 5 6 7 1272 3683 797 68 1 0 12 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3213 (charge 2) 1499.72 2 151.086 153.414 157.097 159.077 165.227 168.113 169.097 171.077 175.119 181.061 183.113 185.092 186.124 187.072 187.107 187.126 193.097 195.077 195.113 197.129 198.124 201.086 204.134 205.097 212.102 216.098 219.116 222.123 226.118 228.133 230.114 239.113 240.097 244.166 247.111 255.146 257.124 262.118 268.13 272.171 279.145 283.139 285.156 291.166 293.164 296.172 301.15 304.13 314.181 331.211 339.166 340.167 346.18 348.123 356.197 358.142 368.156 372.223 388.182 395.206 406.193 422.201 425.213 440.189 442.241 475.213 486.199 493.225 513.314 524.283 543.637 563.634 598.06 617.296 624.348 634.391 649.694 656.29 695.293 710.34 713.308 715.319 741.364 792.221 810.381 812.377 895.42 897.412 959.406 994.489 1040.48 1058.48 1105.52 1123.53 1233.56 6 3 4 5 3 7 29 7 22 4 4 5 100 4 4 4 7 5 19 4 3 4 55 23 17 5 6 29 15 4 6 17 40 4 15 11 31 6 5 20 6 5 5 100 4 32 4 4 42 5 24 3 4 3 5 6 5 16 3 3 37 6 18 4 7 6 22 62 6 7 4 3 22 16 6 5 10 21 13 3 86 5 5 4 4 43 52 4 22 33 5 17 11 5 5 GRMZM2G064877_P02 seq=translation; coord=3:3692326..3694505:-1; parent_transcript=GRMZM2G064877_T02; parent_gene=GRMZM2G064877 6.04182 -0.366171 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 4496 4496 4496 4496 4438 4111 4003 3724 2330 2041 785 365 154 35 14 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 4484 4484 4484 4484 4426 4099 3982 3688 2242 1551 458 54 1 0 0 1 2 3 4 3307 1067 126 2 0 0 1 2 3 4 5 6 7 518 3171 689 111 9 0 0 4 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3216 (charge 2) 1424.67 2 152.056 155.081 156.077 158.092 159.112 168.077 171.077 175.119 176.122 185.165 186.088 186.124 187.108 190.718 197.165 198.087 199.107 214.192 224.176 226.154 240.136 242.186 245.125 248.107 262.151 277.155 357.212 361.19 375.234 440.253 452.254 462.266 470.495 517.262 637.33 678.347 680.837 733.336 737.678 789.379 806.401 808.417 921.422 1004.46 1101.49 1119.49 1184.49 1232.57 7 7 9 35 7 6 7 69 6 7 13 7 10 5 60 6 32 13 9 75 5 24 7 34 9 26 13 30 7 7 6 29 6 10 9 38 48 10 8 11 63 7 39 39 9 100 11 32 GRMZM2G017730_P01 seq=translation; coord=5:50726678..50756498:1; parent_transcript=GRMZM2G017730_T01; parent_gene=GRMZM2G017730 MGKTRALLLA LRQICFPLMV RVFKIDPPTN SPLINTCGHQ RSNCVRRRTV AKVVDTNLFS VPYERRIQQQ NRSVLSCRFQ YAKAMFERNQ KYRLAKYVPD SHAEGFKDGK KVQGLCTFMS PFSFKIKLNL SCQLSFAAQN NSVFSLIINT FSQSRASILG VIERKMEDRL EKMSREKSSV EEDDLLGWAL KQSNLSKEQI LDLLLSLLFA GHETSSMVLA LAIFFLEGCP KAVQELRMWI SRAEYEESGP AIVHRKDSLT QAVEEVNIVI KFNSLLTTLS KHPEADNFAR GLGPISLAGE DDHDRRADDL KILYKAYATE VLSDGIVDDK KEVLYMFWKE IYRQKLQQFV ADGELSKEEV EALMAFQVRL CIPQETVDAA HIEICGQLFE KVVKFFNQYL WATVRKDNVE AVVFWYVLVY FSILFIRFRA GIVTREMLAL PKPQFMLIGL LEALGAASGM AAAVYTIYCL CMYLLHAFGS FYDCLKVCSS LFSFERHNNF LSRSNEIIPQ RAAAQCILLT DLKLLFRFDG VVPEPRKGIR SGHVPGSKCV PFPQVLDSSQ KLLPRDELRK RFEQEVTTHA AI GRMZM2G017730_P03 seq=translation; coord=5:50728628..50756498:1; parent_transcript=GRMZM2G017730_T03; parent_gene=GRMZM2G017730 MSPFSFKIKL NLSCQLSFAA QNNSVFSLII NTFSQSRASI LGVIERKMED RLEKMSREKS SVEEDDLLGW ALKQSNLSKE QILDLLLSLL FAGHETSSMV LALAIFFLEG CPKAVQELRM WISRAEYEES GPAIVHRKDS LTQAVEEVNI VIKFNSLLTT LSKHPEADNF ARGLGPISLA GEDDHDRRAD DLKILYKAYA TEVLSDGIVD DKKEVLYMFW KEIYRQKLQQ FVADGELSKE EVEALMAFQV RLCIPQETVD AAHIEICGQL FEKVVKFFNQ YLWATVRKDN VEAVVFWYVL VYFSILFIRF RAGIVTREML ALPKPQFMLI GLLEALGAAS GMAAAVYTIY CLCMYLLHAF GSFYDCLKVC SSLFSFERHN NFLSRSNEII PQRAAAQCIL LTDLKLLFRF DGVVPEPRKG IRSGHVPGSK CVPFPQVLDS SQKLLPRDEL RKRFEQEVTT HAAI GRMZM2G467212_P01 seq=translation; coord=10:75216816..75222519:-1; parent_transcript=GRMZM2G467212_T01; parent_gene=GRMZM2G467212 MADSEDIQPL VCDNGTGMVK FGFAGDDAPR VVFRIMFETF SVLAMYVAIQ ADLSLYASGC TTDIVLDSVE KSYELPDGQV ITIGTERFRC PEVLFQPSFI GMKAPGIHET TYNSIMKCDV DIRKNLYGNI VFSGGSTMFP GITDRMSKEI TTLTPSSMKI KMWISRAEYE ESGPAIVHRK DSLTQAVEEV NIVIKFNSLL TTLSKHPEAD NFARGLGPIS LEIYRQKLQQ FVADGELSKE EVEALMAFQV RLCIPQETVD AAHTEICGQL FKKVGPTTFE AKLQPHLLWS LDQVKENIKT QTHQLIDARS KPRLHAFGSF YDCLKVCSSL FSFERHNNFL SRCNEIIPQC AAAQCILFDG AVPEPRKGIR SGHVPGSKCV PFPQVKTLYF SILLSVLFCI WMFLPMFAVD GNGYLSDKVP SWISNFNI 5.78622 -0.269126 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3825 3825 3802 3672 3366 3091 2814 2552 2330 1550 1112 739 322 178 115 75 24 12 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3823 3823 3800 3669 3333 2999 2692 2462 2205 1114 688 175 30 1 0 0 1 2 3 4 5 1747 1636 404 46 1 0 0 1 2 3 4 5 6 7 711 1991 867 209 46 2 0 8 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3218 (charge 2) 1056.49 2 155.082 157.097 157.109 158.092 159.076 162.102 166.061 167.082 169.061 169.097 171.077 171.113 172.072 173.038 173.092 173.129 175.119 176.123 183.077 185.165 186.088 186.124 186.167 187.072 187.108 193.097 194.129 197.074 199.108 201.124 204.135 207.124 212.104 217.11 219.113 221.129 226.118 227.102 229.13 235.119 236.121 240.135 246.156 262.119 288.201 298.14 301.114 308.106 328.141 341.151 343.209 346.151 376.196 389.197 393.224 413.169 414.168 417.667 420.191 430.178 448.184 453.184 453.683 460.213 473.214 475.264 482.189 490.241 497.282 500.226 507.268 510.187 518.239 519.74 527.207 532.214 559.218 575.317 604.298 605.287 622.293 629.257 646.265 664.27 674.275 681.3 693.331 695.336 765.33 767.365 782.295 793.328 804.366 822.374 824.376 853.331 864.366 902.404 919.426 921.425 6 3 4 27 3 2 4 2 3 4 4 5 2 2 3 3 100 7 2 11 6 5 2 2 4 4 2 5 50 2 5 2 4 7 2 2 6 33 14 71 8 3 9 5 6 9 7 4 5 3 2 65 6 12 9 11 2 23 4 2 2 33 18 10 2 2 4 10 8 2 76 5 16 38 3 9 2 2 5 2 11 3 8 4 3 11 66 5 4 6 17 4 8 49 5 11 4 4 61 10 GRMZM2G161295_P01 NP_001142140 hypothetical protein LOC100274305 seq=translation; coord=3:155960410..155963163:-1; parent_transcript=GRMZM2G161295_T01; parent_gene=GRMZM2G161295 6.0521 -0.345834 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 4312 4312 4312 4312 4312 4157 2900 2272 1587 916 501 204 75 23 11 2 1 1 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4316 4316 4316 4316 4316 4161 2903 2206 1441 660 324 54 9 7 1 0 0 1 2 3 4 5 2346 1675 251 41 3 0 0 1 2 3 4 5 6 1017 2950 316 25 4 4 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3219 (charge 2) 1724.77 2 157.097 167.093 169.098 171.063 171.076 172.33 173.056 175.119 186.087 187.072 187.108 195.088 204.134 209.092 226.118 228.114 235.136 239.114 242.113 244.092 248.161 251.102 257.197 265.118 268.129 275.208 279.396 297.118 301.114 311.14 314.135 315.129 337.149 355.161 369.174 372.148 397.206 402.236 408.178 412.188 422.22 434.211 445.183 459.257 473.178 549.238 576.288 582.243 610.235 617.803 628.343 711.287 797.415 809.71 824.853 851.419 861.46 864.414 884.446 941.453 1014.48 1054.52 1113.24 1115.53 1235.58 1252.59 1304.65 1322.64 1450.61 39 21 10 12 100 6 12 21 15 9 39 15 14 15 49 29 7 17 21 38 15 10 9 10 8 82 9 8 11 13 34 9 17 12 10 15 15 9 10 16 9 9 89 20 22 11 65 56 21 18 11 16 48 17 15 18 21 18 14 15 34 33 11 20 15 41 15 12 15 GRMZM2G326066_P01 NP_001131879 hypothetical protein LOC100193258 seq=translation; coord=10:143162642..143163490:1; parent_transcript=GRMZM2G326066_T01; parent_gene=GRMZM2G326066 MVKFLKPGKA VILLQGRFAG RKAVIVRVFE EGTRDRPYGH CLVAGLAKYP KKVIRKDSAK KTAKKSRVKC FIKLVNFTHL MPTRYTLDVD FKDVASGGPD ALSTRDKKVE ACKAAKARLE ERFKTGKNRW FFTKLRF GRMZM2G302712_P01 NP_001131879 hypothetical protein LOC100193258 seq=translation; coord=2:8814586..8815407:-1; parent_transcript=GRMZM2G302712_T01; parent_gene=GRMZM2G302712 MLVSLALSAP ISSTSQTLPA AQQHHNHRPK MVKFLKPGKA VILLQGRFAG RKAVIVRVFE EGTRDRPYGH CLVAGLAKYP KKVIRKDSAK KTAKKSRVKC FIKLVNFTHL MPTRYTLDVD FKDVASGGPD ALSTRDKKVE ACKAAKARLE ERFKTGKNRW FFTKLRF GRMZM2G366077_P01 NP_001150228 60S ribosomal protein L27 seq=translation; coord=5:41196776..41198106:1; parent_transcript=GRMZM2G366077_T01; parent_gene=GRMZM2G366077 MRPVLSCRAG AHEGMLGWNL DWPTGSFSVR QRKATVVLML GLGPLTTSLT SDPELLHPAP PEARARQHRP ILDPTAETHP PGNPSAATLY NLLSSPCSDL THLPNPTLPA AAAAAQQRQQ HPKMVKFLKP GKAVILLQGR FAGRKAVIVR VFEEGTRDRP YGHCLVAGLA KYPKKVIRKD SAKKTAKKSR VKCFIKLVNF THLMPTRYTL DVDFKDVATG GPDALSTHDK KVAACKTAKA RLEERFKTGK NRWFFTKLRF GRMZM2G016250_P01 NP_001146947 60S ribosomal protein L27 seq=translation; coord=6:90530607..90532293:-1; parent_transcript=GRMZM2G016250_T01; parent_gene=GRMZM2G016250 MVKFLKPGKA VILLQGRFAG RKAVIVRVFE EGTRDRPYGH CLVAGLAKYP KKVVRRDSAK KTAKKSRVKC FIKLVNFTHL MPTRYTLDVD FKDVATGGPD ALSTRDKKVA ACKAAKARLE ERFKTGKNRW FFTKLRF 4.76804 -0.257732 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 3080 3080 3019 2783 2616 2405 2249 2088 1594 1197 807 386 217 112 62 27 4 1 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 3093 3093 3029 2785 2537 2344 2201 2010 1258 779 294 60 1 0 0 1 2 3 4 5 1312 1529 238 12 2 0 0 1 2 3 4 5 6 7 446 1491 813 273 53 5 12 0 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3222 (charge 2) 837.41 2 155.082 155.118 157.061 157.097 157.108 157.134 158.092 159.077 159.095 159.113 166.062 167.081 167.094 169.097 169.133 171.113 173.075 173.092 173.128 174.057 175.072 175.119 176.122 181.098 183.113 183.15 184.109 185.092 186.09 187.072 187.109 187.144 188.148 193.097 194.13 195.075 197.129 199.107 201.124 203.067 213.087 215.139 219.149 224.103 231.097 235.12 241.082 243.134 245.077 247.144 249.123 252.108 254.125 259.14 262.14 264.149 269.124 277.118 278.124 288.201 296.089 298.151 305.158 307.141 310.177 316.161 317.165 330.189 333.188 342.216 358.183 367.198 373.209 381.141 399.153 404.224 409.181 424.217 427.187 441.284 444.222 462.231 475.263 481.239 484.243 487.285 491.269 512.255 519.775 527.297 548.258 556.236 573.262 575.261 584.313 591.273 593.281 681.374 738.34 740.345 6 4 1 2 3 1 30 8 3 2 1 1 1 3 5 2 1 1 6 3 3 52 4 2 3 1 1 2 1 1 1 39 5 1 1 1 4 5 3 2 4 12 100 3 2 1 5 4 1 17 19 3 4 8 1 1 2 12 3 2 1 6 1 3 3 12 1 2 44 1 3 1 4 3 3 3 1 2 3 1 6 43 5 8 3 1 1 2 12 1 1 3 18 1 3 78 4 6 39 4 GRMZM2G140150_P01 NP_001150259 pyruvate dehydrogenase E1 component alpha subunit seq=translation; coord=5:205777032..205781614:-1; parent_transcript=GRMZM2G140150_T01; parent_gene=GRMZM2G140150 MAAAALLRRI PAARAPATAF MAARPVSDST AALTIETSVP FTSHLVDPPS RDVTTTPAEL VTFFRDMSLM RRMEIAADSL YKAKLIRGFC HLYDGQEAVA VGMEAAITRS DSIITAYRDH CTYLARGGDL VSAFSELMGR EAGCSRGKGG SMHFYKKDAN FYGGHGIVGA QVPLGCGLAF AQKYKKEETA TFALYGDGAA NQGQLFEALN ISALWKLPAI LVCENNHYGM GTAEWRAAKS PAYYKRGDYV PGLKVDGMDV LAVKQACKFA KDHAVANGPI VLEMDTYRYH GHSMSDPGST YRTRDEISGV RQERDPIERV RKLLLAHDLA TAAELKDMEK EIRKQVDDAI AKAKESSMPD TSELFTNVYK KGFNVESFGP DRKELRATLP GRMZM2G361693_P01 B4FGJ4 Putative uncharacterized protein seq=translation; coord=4:182736035..182740799:1; parent_transcript=GRMZM2G361693_T01; parent_gene=GRMZM2G361693 MAAAALIRRL PAARAQAPAF MAARPISDST AAFTIETSVP FTSHLVDPPS RDVTTTPAEL VTFFRDMSLM RRMEIAADSL YKAKLIRGFC HLYDGQEAVA VGMEAAITRS DSIITAYRDH CTYLARGGDL VSAFSELMGR EAGCSRGKGG SMHFYKKDAN FYGGHGIVGA QVPLGCGLAF AQKYKKEDTA TFALYGDGAA NQGQLFEALN ISALWKLPAI LVCENNHYGM GTAEWRAAKS PAYYKRGDYV PGLKVDGMDV LAVKQACKFA KDHAVANGPI VLEMDTYRYH GHSMSDPGST YRTRDEISGV RQERDPIERV RKLLLTHDLA NAAELKNMEK EIRKQVDDAI AKAKESSMPD TSELFTNVYK KGFGVESFGP DRKEMRASLP GRMZM2G027627_P01 NP_001140222 hypothetical protein LOC100272256 seq=translation; coord=9:1443455..1448097:1; parent_transcript=GRMZM2G027627_T01; parent_gene=GRMZM2G027627 MAAAILRRLV PTAASQLVAP LPLLARGVSD SADAVTVDTS VPFKSHIVDP PPREATTSAR ELLSFFRDMS LMRRFEIAAD SLYKAKLIRG FCHLYDGQEA VAVGMEAAAT RADAIITAYR DHCAYLARGG DPVAAFAELM GRRDGCSRGK GGSMHFYKRD ANFFGGHGIV GAQVPLGCGI AFAQRYRKEG TVTFDLYGDG AANQGQLFEA LNMAALWKLP VILVCENNHY GMGTAEWRAS KSPAYYKRGD YVPGLKVDGM DVLAVKQACK FAKEHALENG PIILEMDTYR YHGHSMSDPG STYRTRDEIA GIRQERDPIE RVRKLMLVHE FATAQELKDM EKEIRKQVDA AIAKAKECPL PDPSELFTNV YVNDCGLESF GVDRKEVRTV LP 5.92736 -0.303967 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 2626 2626 2626 2602 2424 2245 2057 1508 1143 696 363 188 71 37 14 6 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2600 2600 2600 2576 2398 2211 1985 1349 902 363 88 1 0 0 1 0 0 1 2 3 4 5 6 7 963 1043 464 123 27 6 17 0 0 1 2 3 4 5 6 7 480 1171 677 241 55 3 1 15 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3223 (charge 3) 1594.67 3 155.081 157.097 158.092 159.076 161.092 166.061 167.093 169.097 171.077 171.113 175.119 181.095 183.149 187.072 189.087 191.085 194.129 195.088 199.072 199.108 201.086 203.066 205.1 211.144 215.139 217.082 226.155 227.102 229.118 233.096 239.093 242.113 244.165 245.076 248.108 254.151 258.144 260.197 264.109 273.135 275.172 277.627 282.12 284.103 286.143 291.624 301.129 303.177 310.176 314.136 319.148 321.155 324.155 331.679 338.181 340.671 355.198 358.152 376.643 383.195 401.166 415.144 419.182 439.228 442.229 452.252 467.217 470.262 473.271 495.21 497.319 526.262 539.283 547.206 558.202 565.298 566.303 583.284 584.286 597.204 615.218 635.279 641.275 662.345 678.345 680.336 682.341 695.407 734.37 739.338 742.321 752.284 820.403 826.37 849.384 873.357 903.496 915.338 921.505 949.447 10 5 6 4 8 8 6 6 7 10 28 4 17 7 19 6 6 23 8 19 6 4 6 7 20 7 44 17 6 5 5 4 22 6 7 4 10 5 7 7 7 5 10 10 4 12 24 25 8 9 7 8 7 25 7 22 4 9 7 8 5 7 5 10 5 9 9 7 5 12 5 21 4 5 4 28 9 67 22 5 8 4 5 14 6 100 6 7 6 4 10 5 9 7 7 4 6 5 7 8 GRMZM2G124455_P01 P41980 Superoxide dismutase [Mn] 3.4, mitochondrial Precursor (EC 1.15.1.1) seq=translation; coord=8:91831315..91844753:1; parent_transcript=GRMZM2G124455_T01; parent_gene=GRMZM2G124455 GRMZM2G059991_P01 P09233 Superoxide dismutase [Mn] 3.1, mitochondrial Precursor (EC 1.15.1.1) seq=translation; coord=6:135883373..135887597:1; parent_transcript=GRMZM2G059991_T01; parent_gene=GRMZM2G059991 GRMZM2G124455_P02 P41980 Superoxide dismutase [Mn] 3.4, mitochondrial Precursor (EC 1.15.1.1) seq=translation; coord=8:91831315..91844753:1; parent_transcript=GRMZM2G124455_T02; parent_gene=GRMZM2G124455 5.48061 -0.267347 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 12039 12039 12039 11737 11120 10102 8452 6654 4829 3069 2011 1058 586 345 155 50 30 21 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 12045 12045 12045 11743 11125 9939 7923 5474 2845 1222 468 118 33 1 0 0 1 2 3 4 5 6 7 3228 4812 2727 967 275 36 8 0 0 1 2 3 4 5 6 7 2235 4696 3198 1465 352 81 15 11 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3224 (charge 3) 1616.84 3 155.082 155.118 157.097 158.092 159.076 166.061 167.056 169.133 170.045 171.113 172.071 173.092 173.128 175.09 175.119 181.097 183.113 183.149 185.165 187.071 189.087 191.084 195.089 199.072 200.139 201.123 204.134 207.124 210.088 211.144 213.098 217.082 221.103 226.155 228.134 235.12 238.082 244.092 246.155 249.098 252.171 267.107 268.153 272.172 280.165 294.18 299.061 301.06 304.159 321.227 323.181 332.169 339.204 341.193 346.973 351.174 372.698 389.195 407.203 409.206 418.205 420.236 421.236 425.249 427.221 433.205 438.246 484.24 517.291 533.297 535.299 537.307 546.288 555.316 566.367 604.302 632.281 635.392 646.338 647.333 653.409 661.287 670.36 721.361 727.389 728.393 744.392 767.373 778.384 831.419 835.405 837.412 840.465 855.42 861.399 918.453 946.435 948.432 977.527 1051.48 4 8 12 4 10 5 7 4 3 4 5 4 5 5 22 4 13 26 6 14 5 3 8 6 42 6 14 4 4 11 5 8 3 8 19 19 3 8 5 4 6 4 17 4 6 8 13 22 10 4 5 4 5 30 4 6 6 5 18 3 8 11 3 3 5 3 24 4 11 4 100 8 4 5 7 4 5 4 4 8 4 7 4 4 15 5 14 4 8 5 16 4 6 3 6 5 3 8 4 7 GRMZM2G315088_P01 seq=translation; coord=4:49407189..49408154:-1; parent_transcript=GRMZM2G315088_T01; parent_gene=GRMZM2G315088 GRMZM2G327564_P01 O82579 Ribosomal protein L26 Fragment seq=translation; coord=3:19669523..19670484:-1; parent_transcript=GRMZM2G327564_T01; parent_gene=GRMZM2G327564 GRMZM2G041238_P01 NP_001151634 LOC100285268 seq=translation; coord=8:13554391..13555376:1; parent_transcript=GRMZM2G041238_T01; parent_gene=GRMZM2G041238 GRMZM2G470608_P01 seq=translation; coord=2:180794699..180795223:-1; parent_transcript=GRMZM2G470608_T01; parent_gene=GRMZM2G470608 GRMZM2G463887_P01 seq=translation; coord=4:236012675..236013130:1; parent_transcript=GRMZM2G463887_T01; parent_gene=GRMZM2G463887 5.71939 -0.278995 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 7519 7519 7519 7488 7186 7017 6558 6138 5086 4179 2058 1290 597 314 167 70 48 27 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7539 7539 7539 7508 7206 7035 6551 6063 4798 3093 1083 248 79 17 1 0 0 1 2 3 4 5 3019 3469 917 127 12 0 0 1 2 3 4 5 6 7 1371 4249 1509 325 64 3 0 23 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3225 (charge 2) 1200.65 2 150.055 151.062 155.082 155.093 155.118 157.097 158.092 159.076 159.113 166.061 167.081 168.066 169.061 169.097 171.077 171.112 171.15 173.093 175.119 176.121 181.108 182.129 183.076 183.113 183.148 185.092 186.123 187.108 189.087 192.077 195.113 199.071 200.139 201.123 204.134 209.104 212.102 214.119 219.087 221.139 226.154 229.117 235.119 237.134 240.134 244.166 249.096 252.097 255.145 257.139 258.144 267.108 272.123 285.134 286.139 300.119 302.098 312.168 315.167 319.188 324.147 333.174 337.197 353.181 356.173 366.177 384.164 386.18 396.224 448.24 456.273 466.252 470.238 485.268 492.257 501.262 528.277 529.277 545.304 586.369 598.334 599.328 616.34 647.827 673.366 680.332 695.389 699.376 700.372 717.388 719.392 733.851 790.875 797.406 846.442 864.457 866.461 994.496 1001.5 1072.56 7 7 27 4 8 7 13 6 6 14 7 4 7 13 16 10 3 12 68 7 8 13 7 7 3 10 9 15 17 12 4 6 13 9 16 50 6 26 3 16 18 4 24 10 8 12 3 6 6 42 16 10 7 63 9 4 7 4 7 29 9 7 18 7 17 11 4 4 7 7 4 6 10 6 9 33 16 8 44 7 11 11 38 19 6 8 19 14 4 100 7 8 7 8 8 96 14 7 10 5 GRMZM2G377797_P01 NP_001149616 40S ribosomal protein S16 seq=translation; coord=2:149785316..149786131:1; parent_transcript=GRMZM2G377797_T01; parent_gene=GRMZM2G377797 MTVLSRPTPG TAQCFGRKKT AVAVAYTKPG RGLIKVNGVP IELIRPEMLR LKAFEPILLA GRSRFKDIDM RIRVRGGGKT SQIYAIRQAV AKGLVAYYQK YVDEAAKKEI KDIFTRYDRT LLVADPRRCE PKKFGGRGAR ARFQKSYR GRMZM2G353103_P01 B6SNQ7 40S ribosomal protein S16Putative uncharacterized protein ; seq=translation; coord=3:230441023..230443000:1; parent_transcript=GRMZM2G353103_T01; parent_gene=GRMZM2G353103 MSTVLQRPTP GTVQCFGRKK TAVAVAYTKP GRGLIKVNGV PIELIRPEML RLKAFEPILL AGRSRFKDID MRIRVRGGGK TSQIYAIRQA VAKGLVAYYQ KYVDEAAKKE VKDIFTRYDR TLLVADPRRC EPKKFGGRGA RARFQKSYR GRMZM2G427014_P01 NP_001150980 40S ribosomal protein S16 seq=translation; coord=10:2656675..2657137:1; parent_transcript=GRMZM2G427014_T01; parent_gene=GRMZM2G427014 MGPVLKRPTP GTVQCFGRKK TAVAVAYTKP GRGMIKVNGV PIELLRPEML RLKAMEPVLL AGRSRFKDID MRIRVRGGGK TSQIYAIRQA VAKGLVAYYQ KYVDEAAKKE IKDIFMRYER TLLVADPRRC EPKKFGGRGA RARFQKSYR 5.79848 -0.269697 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 3298 3298 3298 3298 3220 3114 2983 2725 2453 2061 1508 882 464 248 118 65 34 20 12 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3303 3303 3303 3303 3225 3118 2985 2697 2365 1856 1170 419 86 2 1 0 0 1 2 3 4 5 6 7 730 1223 914 308 95 35 7 0 0 1 2 3 4 5 6 7 675 1410 900 222 67 17 7 14 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3228 (charge 3) 1361.79 3 151.087 155.082 155.118 157.097 157.134 158.092 159.076 159.092 165.102 166.061 167.081 169.097 169.133 171.076 171.113 172.108 173.092 173.128 175.119 176.122 181.097 183.077 183.112 183.149 185.092 185.128 185.165 186.124 187.108 192.114 194.129 195.113 197.129 199.108 201.123 204.134 207.112 209.14 212.139 213.124 215.139 217.081 226.119 227.102 230.15 233.164 235.109 237.135 239.163 242.15 244.128 246.156 247.143 249.16 254.149 258.145 261.157 265.12 268.13 269.16 272.16 300.15 312.167 325.188 329.193 339.168 341.219 343.198 354.143 361.204 366.186 372.19 383.217 396.722 414.205 446.255 457.289 471.294 480.22 497.32 511.254 512.259 535.247 539.261 558.336 570.362 599.288 636.313 641.4 646.319 663.305 710.421 721.401 755.383 775.411 792.436 826.417 891.507 955.457 962.539 8 23 9 9 9 21 12 6 6 7 6 15 10 9 62 6 55 25 100 6 8 6 9 12 6 9 22 6 7 9 10 10 11 13 20 10 12 11 12 7 15 6 20 14 21 20 6 7 21 37 15 11 9 22 13 7 10 7 11 9 28 6 26 12 85 6 7 20 8 8 6 6 19 12 8 9 30 22 6 6 9 9 15 6 52 8 28 7 7 10 11 6 34 10 6 58 12 19 8 20 GRMZM2G060470_P01 NP_001130656 hypothetical protein LOC100191757 seq=translation; coord=4:184857223..184861548:1; parent_transcript=GRMZM2G060470_T01; parent_gene=GRMZM2G060470 MAATAAALRC CFPGSSGVGS GFVKPNSSRR GWCAAAVAAP SREAEPVSSL GHRTRVDFPI LHQEFDDAKL VYFDNGATSQ KPCSVMKTLD EYYRSYNSNV HRGIHALSAK ATHAYEDARR KVANFVNAAD SREIVFTRNA TEAINLVAYS WGLSNLKEGD EKTGATLKYV GLTKENVPDI EQLKGFLSNK TKIVVVHHVS NVLGSMLPIE EIVTWSNRVG AKVLVDACQS VPHMPVDVQK LGADFLVASS HKMCGPTGVG FLHGKFEILS SMEPFLGGGE MIADVFEDKS TYAEPPSRFE AGTPAIGEAI GLGAAIDYLS CIGMEQIHEY EKELGTYLYE SLLSVPNVQI YGPAPSQTVH RAPLCSFNIE NVHPTDIAEI LDLQHSVAIR SGHHCAQILH RTLGINASAR ASLHFYNTKD EVDTFVDALK ATVDFLTDRY GRMZM2G060470_P02 NP_001130656 hypothetical protein LOC100191757 seq=translation; coord=4:184857414..184861548:1; parent_transcript=GRMZM2G060470_T02; parent_gene=GRMZM2G060470 MAATAAALRC CFPGSSGVGS GFVKPNSSRR GWCAAAVAAP SREAEPVSSL GHRTRVDFPI LHQEFDDAKL VYFDNGATSQ KPCSVMKTLD EYYRSYNSNV HRGIHALSAK ATHAYEDARR KVANFVNAAD SREIVFTRNA TEAINLVAYS WGLSNLKEGD EIVLTVAEHH SAIVPWQFVS QKTGATLKYV GLTKENVPDI EQLKGFLSNK TKIVVVHHVS NVLGSMLPIE EIVTWSNRVG AKVLVDACQS VPHMPVDVQK LGADFLVASS HKMCGPTGVG FLHGKFEILS SMEPFLGGGE MIADVFEDKS TYAEPPSRFE AGTPAIGEAI GLGAAIDYLS CIGMEQIHEY EKELGTYLYE SLLSVPNVQI YGPAPSQTVH RAPLCSFNIE NVHPTDIAEI LDLQHSVAIR SGHHCAQILH RTLGINASAR ASLHFYNTKD EVDTFVDALK ATVDFLTDRY GRMZM2G060470_P03 NP_001130656 hypothetical protein LOC100191757 seq=translation; coord=4:184857414..184861548:1; parent_transcript=GRMZM2G060470_T03; parent_gene=GRMZM2G060470 MLPIEEIVTW SNRVGAKVLV DACQSVPHMP VDVQKLGADF LVASSHKMCG PTGVGFLHGK FEILSSMEPF LGGGEMIADV FEDKSTYAEP PSRFEAGTPA IGEAIGLGAA IDYLSCIGME QIHEYEKELG TYLYESLLSV PNVQIYGPAP SQTVHRAPLC SFNIENVHPT DIAEILDLQH SVAIRSGHHC AQILHRTLGI NASARASLHF YNTKDEVDTF VDALKATVDF LTDRY 5.97883 -0.32318 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 6286 6286 6263 5746 5089 4672 3170 2262 1159 501 260 105 46 23 9 6 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6290 6290 6263 5713 4971 4370 2664 1618 445 60 31 7 2 1 0 0 1 2 3 4 4001 2011 270 13 0 0 1 2 3 4 5 6 7 589 3801 1561 294 42 2 0 6 20120906_balliau_extract_1_A12_teal-3.mzXML scan 3232 (charge 2) 1007.48 2 155.082 155.118 157.097 157.109 158.092 159.077 161.092 162.093 167.02 167.056 169.097 171.076 173.092 173.129 175.119 181.061 181.097 183.034 183.113 185.092 185.165 186.124 187.144 189.087 190.089 191.085 195.113 199.071 199.107 201.087 204.134 207.113 209.091 213.087 217.082 219.113 227.101 228.632 235.107 237.123 240.134 241.082 244.167 247.108 256.129 258.145 262.152 265.119 272.172 276.158 282.145 289.119 299.171 301.06 303.203 306.144 324.162 334.14 336.154 342.178 352.151 355.161 359.204 364.15 396.224 418.995 422.204 439.23 440.234 456.256 458.262 507.266 543.323 567.289 585.299 604.305 622.291 638.325 656.336 658.34 693.322 767.365 819.4 821.406 1 1 2 1 3 1 19 2 2 5 1 8 2 1 17 1 3 1 1 3 3 2 4 15 1 2 2 2 2 5 6 18 4 1 1 1 3 6 17 7 2 1 1 2 1 2 3 3 4 1 1 1 5 1 1 3 1 15 2 5 4 1 8 2 6 2 1 14 3 100 3 2 1 4 10 1 1 1 21 2 1 2 11 1 /tmp/xtpcpp-HDpOXY/QExactive_analysis_FDR.xml /tmp/xtpcpp.YBMdtF 30 yes 0.1 0.01 yes yes /gorgone/pappso/data_extraction_pappso/tandem_output/20120906_balliau_extract_1_A12_teal-3.xml no yes yes valid yes spectrum yes tandem-style.xsl 0.0 0.0 +17.00305 +1.00794 no [RK]|{P} yes yes yes usedefined yes yes 0.01 57.02146@C no +42.01056@[ 15.99491@M yes no yes 57.02146@C 15.99491@M no yes no yes yes 1 4 no yes no 100.0 monoisotopic 0.02 Daltons 4 150.0 500.0 15 18.01057 0.02 10 10 ppm yes /gorgone/pappso/data_extraction_pappso/mzXML/20120906_balliau_extract_1_A12_teal-3.mzXML 1000 4 100 no yes yes 3 no yes /gorgone/pappso/formation/2018novembre/shotgun/database/contaminants_standards.fasta /gorgone/pappso/formation/2018novembre/shotgun/database/Genome_Z_mays_5a.fasta no description no description 6487 19735 31 6 127745223 273656 6985 11574 5701 2021:05:11:09:31:20 X! Tandem Alanine (2017.2.1.4) 227 453 397 377 370 389 418 394 390 361 327 358 325 314 251 277 251 205 219 182 4536 5665 3629 0 0 119 0 115.45 0.0100 0.50 0.0189 libpappsomspp-0.9.20/tests/data/tandem/tandem_run_params.xml000644 001750 001750 00000001471 14346367014 025460 0ustar00rusconirusconi000000 000000 Paths /gorgone/pappso/tmp/xtpcpp.AjyZGg/Lumos_trypsin_rev_camC_oxM_10ppm_HCDOT_12102017CH.xml /gorgone/pappso/tmp/xtpcpp.AjyZGg/database.xml /gorgone/pappso/jouy/raw/2021_Lumos/20210729_02_Clouet/20210729_18_blc.mzXML Protein general usedefined Output /gorgone/pappso/jouy/users/Lydie/2021/2021_lumos/20210729_02_Clouet/xtpcpp/20210729_18_blc.xml libpappsomspp-0.9.20/tests/data/xic/000755 001750 001750 00000000000 14533473271 020550 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/data/xic/PXD014777_xic.tsv000644 001750 001750 00001215173 14346367014 023307 0ustar00rusconirusconi000000 000000 rt intensity 1.72895269925 56.3953312722 2.53687997823 229.609563037 3.71247680563 182.277767148 4.88697482957 57.4023907592 6.06210187231 74.5224020383 7.23746146138 81.5718184473 8.41285506733 451.162650178 10.7633924312 87.6141753693 11.9391951193 9.06353538304 13.1137863964 331.322571224 14.2890597703 81.5718184473 15.4643489796 283.990775335 17.8159575816 276.941358926 21.3420489585 266.870764056 23.6921464491 94.6635917784 24.8684057256 83.5859374213 28.396163929 137.96714972 29.5711466933 148.03774459 33.0973489183 85.6000563953 34.2727900306 48.3388553762 35.447549046 95.6706512654 36.6222118758 260.828407134 37.7980817179 249.750752777 41.3233250191 68.4800451163 42.4996074624 52.3670933242 43.6749691042 94.6635917784 44.8502817734 69.4871046033 47.200843477 129.910673824 48.3759197876 228.60250355 49.5515084041 54.3812122982 51.9027739048 74.5224020383 54.2532144966 122.861257414 55.4286919717 97.6847702394 57.778988285 104.734186648 60.1292614316 109.769484083 61.3046805502 145.016566129 63.6569360591 49.3459148632 64.8319648635 47.3317958892 66.0081813257 101.713008187 67.1823529637 72.5082830643 71.8843701932 57.4023907592 73.0589664556 68.4800451163 76.5853123725 86.6071158823 77.7619135772 373.619069678 78.9365406307 73.5153425513 85.9880624016 202.418956888 87.1631768346 176.235410226 88.339177759 50.3529743502 93.0395721493 121.854197927 95.3911813378 117.825959979 98.9166598246 128.903614336 100.091916483 120.84713844 101.267210678 194.362480992 102.442708387 80.5647589603 109.494074443 289.02607277 110.668754574 124.875376388 111.845404752 81.5718184473 113.022728522 90.6353538304 114.199415355 89.6282943433 116.548104958 109.769484083 117.724395026 113.797722031 118.899705935 251.764871751 120.073810126 263.849585595 123.606677604 114.804781518 127.13451909 127.896554849 128.310329989 597.186275793 129.486403053 541.798004008 130.685707291 1796.59412481 131.886168982 651.567488092 133.108583868 150.051863564 134.293719495 1135.96310134 135.48634411 71.5012235773 136.662866724 536.762706573 137.839325117 99.6988892134 139.022746703 50.3529743502 140.198345876 55.3882717852 164.883429451 77.5435804993 168.409126701 90.6353538304 178.025425238 125.882435875 195.656457477 69.4871046033 209.760937645 67.4729856293 226.213849064 100.7059487 232.089082526 189.327183557 236.790468391 10.07059487 240.315687939 79.5576994733 252.07104215 31.2188440971 262.649861724 52.3670933242 270.876797628 25.1764871751 273.228348753 28.1976656361 287.336660218 79.5576994733 293.214178969 53.3741528112 297.917139286 73.5153425513 300.267973711 90.6353538304 302.621831532 13.0917733311 303.797496393 104.734186648 307.339294472 11.077654357 309.688977895 93.6565322914 310.863638379 100.7059487 312.039551329 152.065982538 315.569266382 24.1694276881 317.91899995 69.4871046033 319.095251016 147.030685103 320.270286858 238.67309842 321.446456987 66.4659261423 324.980282509 115.811841005 327.330616945 112.790662544 328.506796751 163.143636895 329.683848386 64.4518071682 332.035271362 115.811841005 333.213847597 440.084995821 334.394990054 377.647307626 335.570590107 30.2117846101 336.745756152 148.03774459 337.921149465 114.804781518 339.097362994 257.807228673 340.272053389 93.6565322914 341.455566176 106.748305622 342.631029576 151.058923051 344.982156663 280.969596874 347.333807493 72.5082830643 348.510193746 132.931852285 349.684627255 133.938911772 353.216658388 130.917733311 354.391642618 11.077654357 356.742227195 28.1976656361 359.09256427 45.3176769152 362.627427013 133.938911772 364.987677659 68.4800451163 366.162573035 22.1553087141 369.687356522 66.4659261423 372.038302382 132.931852285 377.918711394 158.10833946 379.094951902 160.122458434 380.270121466 72.5082830643 381.444119501 268.88488303 382.621391366 100.7059487 383.796299058 252.771931238 384.972500565 9.06353538304 388.508932189 230.616622524 389.683194441 114.804781518 392.034621815 162.136577408 394.391108319 135.953030746 395.566476705 197.383659453 397.916945742 104.734186648 399.093404135 63.4447476812 400.268817682 82.5788779343 407.325316179 79.5576994733 417.919912541 158.10833946 423.810557111 98.6918297264 426.160192734 198.39071894 428.522964147 24.1694276881 429.699054219 355.491998912 430.880764992 66.4659261423 432.055548933 242.701336368 433.231153385 97.6847702394 435.581288118 118.833019466 437.932499661 9.06353538304 439.107553978 44.3106174282 444.993643221 28.1976656361 448.528422388 55.3882717852 453.231811436 29.2047251231 457.953801551 141.995387668 459.136774467 9.06353538304 462.662120699 185.298945609 463.840752945 67.4729856293 465.016435694 31.2188440971 468.54334289 65.4588666553 473.248484979 70.4941640903 474.424525785 85.6000563953 475.599513242 52.3670933242 476.774721514 9.06353538304 479.125665321 34.2400225581 480.301408773 97.6847702394 481.476800326 92.6494728044 482.652253461 22.1553087141 483.833603831 108.762424596 485.015662984 60.4235692202 487.367577737 122.861257414 488.543404472 111.783603057 490.902299135 112.790662544 492.087245029 313.195500458 496.787991025 192.348362018 497.965470803 101.713008187 499.139486139 178.2495292 501.497505455 176.235410226 503.860983011 75.5294615253 506.211304837 84.5929969083 507.396243399 192.348362018 508.572035531 430.014400951 509.753495282 203.426016375 513.286356896 89.6282943433 514.471685186 87.6141753693 516.825004895 72.5082830643 519.177245742 247.736633803 520.362219494 50.3529743502 521.539775811 193.355421505 522.713978533 162.136577408 523.889385922 130.917733311 527.431996007 83.5859374213 528.608113351 245.722514829 529.783609887 26.1835466621 530.959196451 85.6000563953 532.134552227 87.6141753693 533.311445508 132.931852285 534.486772253 127.896554849 535.661745047 159.115398947 536.851259465 426.99322249 538.034014497 559.925074774 539.210271134 111.783603057 540.403930038 54.3812122982 541.580327142 158.10833946 542.75505302 217.524849193 543.930346628 146.023625616 545.106605905 554.889777339 546.290213998 292.047251231 547.466169469 265.863704569 548.641628469 480.367375301 549.816625896 577.045086053 550.991364384 474.325018379 552.175505896 744.216960896 553.360170271 808.668768064 554.540164072 54.3812122982 555.715762073 93.6565322914 556.906440689 53.3741528112 560.48669161 83.5859374213 561.670613186 177.242469713 564.048337358 18.1270707661 565.22745669 139.981268694 568.777022931 343.407285068 569.964760261 119.840078953 571.144413893 280.969596874 572.32977796 542.805063495 573.542831464 83.5859374213 575.886865741 178.2495292 577.065304736 114.804781518 578.250757071 22.1553087141 581.785605445 192.348362018 582.965938535 150.051863564 584.142107491 169.185993817 585.324885103 118.833019466 586.499062606 98.6918297264 587.674070883 213.496611245 588.854128319 216.517789706 590.045680523 238.67309842 591.239000725 219.538968167 592.415038012 101.713008187 593.596064635 373.619069678 594.779397074 231.623682011 595.955018827 374.626129165 597.130201294 283.990775335 598.327480062 535.755647086 599.516306225 747.238139357 600.69262767 497.48738658 601.86808931 417.929687107 603.042932488 43.3035579412 604.220343939 444.113233769 605.405588067 291.040191744 606.581762009 310.174321997 607.773090171 85.6000563953 608.948843007 145.016566129 610.125749483 260.828407134 612.476028495 206.447194836 613.652033232 115.811841005 614.841968462 63.4447476812 616.021788366 49.3459148632 617.196830366 191.341302531 618.372558276 90.6353538304 619.556230297 102.720067674 621.933938634 136.960090233 624.30940391 61.4306287072 625.485162024 83.5859374213 626.659589668 88.6212348563 627.835728713 173.214231765 629.014028121 230.616622524 631.379597128 240.687217394 632.554018321 54.3812122982 633.728456229 192.348362018 634.903498523 111.783603057 636.08846993 323.266095328 637.267127982 164.150696382 640.79421963 218.53190868 641.968394787 284.997834822 643.144202754 167.171874843 644.319199008 276.941358926 645.494491443 359.52023686 646.671610525 93.6565322914 647.846028785 263.849585595 649.021193364 122.861257414 650.196563803 507.55798145 651.372522793 760.329912688 652.548368002 726.08989013 653.729586703 1339.38911772 654.921347408 505.543862476 656.119900635 793.562875759 657.314505267 982.890059316 658.490254877 736.160485 659.66506785 604.235692202 660.851865024 604.235692202 662.040424037 556.903896313 663.226063465 798.598173194 664.414410459 559.925074774 665.624990995 219.538968167 666.799972 502.522684015 667.97640488 641.496893221 669.165550684 484.395613249 670.359113403 371.604950704 671.56086011 684.800451163 672.736092429 360.527296347 673.917250721 236.658979446 675.124423412 236.658979446 676.300056016 457.2050071 677.490493581 720.047533208 678.6674634 307.153143536 679.858934961 493.459148632 681.052053407 211.482492271 682.228042601 126.889495362 683.404381055 623.369822455 684.579217488 701.920462442 685.76760671 518.635635807 686.945518738 140.988328181 688.128310719 571.002729131 689.323146724 634.447476812 690.498137113 1202.42902748 691.675084644 367.576712756 692.873607667 631.426298351 694.056941865 545.826241956 695.252317155 207.454254323 696.446691293 281.976656361 698.812045642 114.804781518 699.997113234 26.1835466621 701.198733845 112.790662544 702.375138279 56.3953312722 703.56238647 68.4800451163 704.742977032 282.983715848 705.939976041 69.4871046033 707.116429155 52.3670933242 708.290622787 157.101279973 709.465938388 199.397778427 710.66041663 96.6777107524 711.847708515 131.924792798 713.027657742 236.658979446 714.209910145 96.6777107524 717.736648429 69.4871046033 718.911615944 22.1553087141 720.086532728 183.284826635 721.262779688 469.289720944 722.439859475 779.464042941 723.625601539 372.612010191 724.880961469 116.818900492 726.061497193 162.136577408 727.236649455 88.6212348563 728.416716861 134.945971259 729.619439794 188.32012407 730.801466689 134.945971259 731.98513959 200.404837914 733.161395641 70.4941640903 735.527899525 77.5435804993 736.71962416 134.945971259 737.905183237 190.334243044 739.100883154 85.6000563953 740.29920794 71.5012235773 741.471725068 42.2964984542 742.656167747 229.609563037 745.008739085 532.734468625 746.200652572 251.764871751 747.383146612 792.555816272 748.581061144 533.741528112 749.75663891 165.157755869 754.504515862 180.263648174 755.715770284 50.3529743502 756.895308669 267.877823543 758.071424253 411.887330185 759.246161275 502.522684015 760.430570231 384.696724035 761.606226881 842.908790622 762.78149263 897.29000292 763.984676844 502.522684015 765.159190116 574.023907592 766.334182851 297.082548666 767.50987909 192.348362018 768.696057509 260.828407134 771.110919009 263.849585595 772.304487886 110.77654357 773.482538033 99.6988892134 774.657811114 351.463760964 775.861035502 158.10833946 777.05937935 265.863704569 778.254586608 145.016566129 780.623459943 114.804781518 781.80095673 46.3247364022 782.975169716 139.981268694 785.326208242 108.762424596 786.502838185 69.4871046033 787.677793384 242.701336368 788.852867935 781.478161915 790.028444528 1047.34186648 791.204629906 1198.40078953 792.380202394 728.104009104 793.555531192 216.517789706 794.733486913 303.124905588 795.912364609 183.284826635 797.088320079 52.3670933242 798.262962968 130.917733311 800.61359857 162.136577408 801.789400965 257.807228673 802.964843837 398.795556854 805.31663572 140.988328181 806.492886492 389.732021471 807.668786539 136.960090233 808.844402427 670.701618345 810.021234712 436.056757873 811.198149693 561.939193748 812.372883489 344.414344555 813.548833388 84.5929969083 814.723952513 200.404837914 815.899338788 88.6212348563 818.250166761 103.727127161 820.604799345 49.3459148632 821.778094756 245.722514829 822.955359289 43.3035579412 824.131135878 110.77654357 825.306009261 322.259035841 826.481560341 64.4518071682 827.658212865 470.296780431 828.832321454 241.694276881 830.008422376 67.4729856293 832.358182337 251.764871751 833.534580907 515.614457346 834.713075327 525.685052216 835.892140701 792.555816272 837.070435125 1013.10184393 838.245545453 891.247645998 839.420744634 266.870764056 840.595501597 320.244916867 841.771580526 384.696724035 842.947815756 260.828407134 844.128257348 420.950865568 845.303589078 464.254423509 846.479106435 443.106174282 847.654046678 343.407285068 848.829734413 297.082548666 850.0056327 704.941640903 851.180668542 352.470820451 852.356775036 944.62179881 853.532993258 806.65464909 854.70783497 1038.2783311 855.883947328 404.837913776 857.058912791 284.997834822 860.584303303 139.981268694 861.761235293 140.988328181 862.936238878 101.713008187 864.111255659 230.616622524 865.288131344 233.637800985 866.464106463 48.3388553762 867.640562803 59.4165097332 868.815508324 11.077654357 869.993251733 181.270707661 871.167788759 322.259035841 872.350840559 445.120293256 873.526779021 186.306005096 874.702583762 483.388553762 875.879076465 234.644860472 877.053461002 185.298945609 878.229415886 118.833019466 879.404546448 271.906061491 880.579672904 236.658979446 881.755386151 937.572382401 882.930636651 692.856927059 884.107246654 643.511012195 885.280691621 614.306287072 886.455597847 392.753199932 887.631033681 1191.35137313 888.80792051 1526.7021823 889.981931155 658.616904501 891.158231779 1035.25715264 892.334032415 614.306287072 893.510588459 59.4165097332 894.685927814 414.908508646 895.861630211 385.703783522 897.036404475 40.2823794802 898.212015379 119.840078953 899.392835261 54.3812122982 900.568835892 225.581325089 901.743831853 149.044804077 902.919468562 93.6565322914 904.094226698 188.32012407 905.270105337 173.214231765 906.44525496 562.946253235 907.620087581 229.609563037 908.797095815 83.5859374213 909.971866267 32.2259035841 911.146815308 141.995387668 913.498706895 271.906061491 915.850999647 203.426016375 917.026044873 764.358150636 918.200969281 764.358150636 919.376991905 689.835748598 920.552485803 1526.7021823 921.727985565 1558.92808588 922.903612597 2115.8319822 924.080067177 1660.64109407 925.254246146 1047.34186648 926.434809143 661.638082962 927.610136181 368.583772243 928.784240079 55.3882717852 929.960259184 135.953030746 931.135736073 106.748305622 932.310340546 36.2541415321 933.486323289 130.917733311 934.660725714 274.927239952 935.83793717 151.058923051 937.013314354 175.228350739 938.188274538 209.468373297 939.363255836 194.362480992 940.538322176 196.376599966 941.71470579 47.3317958892 942.88892904 119.840078953 945.239316847 246.729574316 946.415222172 65.4588666553 947.590541293 249.750752777 948.765948095 106.748305622 949.94086048 90.6353538304 951.117090724 87.6141753693 952.291820122 292.047251231 953.467535422 79.5576994733 954.642867445 62.4376881942 955.81845137 102.720067674 956.994132066 476.339137353 958.169835636 1287.02202439 959.345107837 6511.64664297 960.520426958 13822.8985186 961.69638888 17649.7245692 962.871832045 18603.4099034 964.046119517 11250.8685888 965.221403447 4729.15135097 966.397390296 2079.57784066 967.572069254 474.325018379 968.747042928 222.560146628 969.922797816 501.515624528 971.097689674 130.917733311 972.2747721 132.931852285 973.449554282 237.666038933 975.799795171 58.4094502462 976.974872948 129.910673824 978.154118084 21.1482492271 979.328997918 99.6988892134 982.859603275 212.489551758 984.033842067 127.896554849 985.210241809 405.844973263 986.38487766 385.703783522 987.559915262 494.466208119 988.73591736 516.621516833 989.911900396 778.456983454 991.086496658 559.925074774 992.26214627 757.308734227 993.437802334 395.774378393 994.61745186 223.567206115 995.790869556 439.077936334 996.965167584 118.833019466 998.15396061 155.087160999 999.329518142 84.5929969083 1000.51346904 20.1411897401 1002.86519788 93.6565322914 1004.03971525 197.383659453 1005.2223612 91.6424133174 1007.58779443 9.06353538304 1011.12561811 66.4659261423 1012.30072374 159.115398947 1013.47707158 105.741246135 1014.65298746 47.3317958892 1015.83523136 66.4659261423 1017.02271298 198.39071894 1018.21821495 523.670933242 1019.39199481 81.5718184473 1020.56753152 545.826241956 1021.74303363 694.871046033 1022.91879174 720.047533208 1024.10586662 1025.18655777 1025.28613285 488.423851197 1026.47021513 5130.96808628 1027.64502898 583.087442975 1028.82138679 888.226467537 1029.99546694 514.607397859 1031.17599562 652.574547579 1032.35807442 548.847420417 1034.72907733 313.195500458 1035.91065321 203.426016375 1037.09386043 751.266377305 1038.26977895 781.478161915 1039.44567343 944.62179881 1040.62378985 2107.7755063 1041.8043766 2091.66255451 1043.00054601 2019.15427144 1044.20670787 2833.86539643 1045.38487795 2007.0695576 1046.58324643 1415.92563873 1047.75795472 1422.97505514 1048.9435091 1135.96310134 1050.13594281 939.586501375 1051.32554433 1117.83603057 1052.52289142 624.376881942 1053.70073483 487.41679171 1054.87762078 1121.86426852 1056.05109507 1315.21969003 1057.24393992 376.640248139 1058.41927223 331.322571224 1060.7837612 139.981268694 1061.97395273 84.5929969083 1063.14979413 190.334243044 1064.32583112 424.979103516 1065.50109306 102.720067674 1066.67564856 353.477879938 1067.85150785 361.534355834 1069.02811638 265.863704569 1070.21468453 465.261482996 1071.38912126 208.46131381 1072.56602745 167.171874843 1073.73929529 227.595444063 1074.92890179 234.644860472 1076.10481621 66.4659261423 1077.29273916 105.741246135 1078.4704204 76.5365210123 1079.70266059 53.3741528112 1082.06928324 131.924792798 1083.2482017 46.3247364022 1084.43882108 102.720067674 1085.62977418 144.009506642 1087.98782722 400.809675828 1089.18321013 401.816735315 1090.35759965 652.574547579 1091.53397036 199.397778427 1092.71046922 35.2470820451 1093.88934692 321.251976354 1095.07195269 264.856645082 1096.25812847 78.5506399863 1097.44509778 302.117846101 1098.62120486 136.960090233 1099.79709669 200.404837914 1100.97168504 171.200112791 1102.15836873 103.727127161 1103.35033177 378.654367113 1104.52676231 455.190888126 1105.71163254 572.009788618 1106.88716339 2120.86727963 1108.06525928 3254.816262 1109.24550997 4481.41471717 1110.43475431 1840.90474224 1111.62009726 2054.40135349 1112.81409135 916.424133174 1114.01328767 456.197947613 1115.18924197 928.508847018 1116.36924867 585.101561949 1117.55964635 250.757812264 1118.74837897 425.986163003 1119.93713094 152.065982538 1121.13493902 248.74369329 1122.31756942 737.167544487 1123.49257741 318.230797893 1124.66822321 80.5647589603 1125.84514171 110.77654357 1127.03226585 576.038026566 1128.21084033 68.4800451163 1129.38610432 303.124905588 1131.7371537 89.6282943433 1134.08738432 110.77654357 1135.27421845 174.221291252 1136.46408652 232.630741498 1137.65020482 883.191170102 1138.83752603 699.906343468 1140.01275513 838.880552674 1141.18861412 1437.07388795 1142.3640045 1600.21752485 1143.54056934 872.113515745 1144.72395339 1910.39184685 1145.90449821 1747.24820995 1147.09967849 1229.61963363 1148.28330476 1268.89495362 1149.47082421 1312.19851157 1150.6458882 1790.55176789 1151.82098181 3804.6707419 1153.01504452 4398.83583923 1154.18969474 2843.9359913 1155.37327937 2787.54066003 1156.55238786 1268.89495362 1157.72741197 207.454254323 1158.90277303 94.6635917784 1160.07950678 44.3106174282 1161.26715672 94.6635917784 1162.46683573 171.200112791 1163.66463589 283.990775335 1164.86532925 238.67309842 1166.04176037 895.275883946 1167.2296584 389.732021471 1168.40452856 130.917733311 1169.59400075 55.3882717852 1170.78218001 328.301392763 1171.96669658 227.595444063 1173.14665901 591.143918871 1174.32135615 181.270707661 1175.49717643 301.110786614 1179.02683254 74.5224020383 1180.20905503 27.1906061491 1181.38823155 153.073042025 1182.56299584 89.6282943433 1183.74987395 145.016566129 1184.94808115 392.753199932 1187.34045486 320.244916867 1188.51606107 184.291886122 1189.69230832 348.442582503 1190.88203212 389.732021471 1192.05620728 639.482774247 1193.23097304 957.713572141 1194.40909034 483.388553762 1195.61370091 377.647307626 1196.79846089 267.877823543 1197.97374042 735.153425513 1199.16061149 251.764871751 1200.34199383 516.621516833 1201.51973782 206.447194836 1202.69546309 733.139306539 1203.88641883 1298.09967875 1205.07718747 802.626411142 1206.26455326 633.440417325 1207.45135806 168.17893433 1208.62643085 45.3176769152 1209.80217899 206.447194836 1210.97891744 121.854197927 1212.17622436 422.964984542 1213.35121386 540.790944521 1214.53557531 315.209619432 1215.72715714 263.849585595 1216.91194849 315.209619432 1218.08817404 338.371987633 1219.26598988 199.397778427 1220.45780601 90.6353538304 1222.8244791 67.4729856293 1224.02341502 187.313064583 1225.20322378 121.854197927 1226.3787989 202.418956888 1227.56176009 192.348362018 1228.73802289 355.491998912 1229.93749222 639.482774247 1231.12857875 938.579441888 1232.3200292 329.30845225 1233.52719837 295.068429692 1234.70153481 597.186275793 1235.8887962 91.6424133174 1237.07526464 531.727409138 1238.27840487 286.004894309 1239.45638581 398.795556854 1240.64153932 274.927239952 1241.81692237 403.830854289 1242.99203827 243.708395855 1244.16817966 78.5506399863 1245.34402692 318.230797893 1246.54244672 414.908508646 1248.92243829 155.087160999 1250.11432363 406.85203275 1251.29006503 103.727127161 1252.46609968 242.701336368 1253.65290623 98.6918297264 1254.83259857 516.621516833 1256.01644977 404.837913776 1257.20376687 475.332077866 1258.39265521 643.511012195 1259.56925289 228.60250355 1260.74358816 149.044804077 1261.93028065 300.103727127 1263.12285512 19.1341302531 1264.32013887 529.713290164 1265.51990263 1041.29950956 1266.71443278 1277.95848901 1267.8894088 1337.37499874 1269.06448335 1461.24331564 1270.25205851 1838.89062327 1271.42758965 746.23107987 1272.61738383 104.734186648 1273.79946703 114.804781518 1274.97749782 81.5718184473 1279.72276251 190.334243044 1280.90153786 228.60250355 1282.07970883 240.687217394 1283.26937192 206.447194836 1284.44379751 291.040191744 1285.61985122 270.899002004 1286.80376048 672.715737319 1287.99093477 402.823794802 1289.17932517 1176.24548082 1290.35436189 1737.17761508 1291.53638673 1661.64815356 1292.71231611 510.579159911 1293.88671354 322.259035841 1295.06190246 242.701336368 1296.23829605 215.510730219 1297.42371466 147.030685103 1299.80665162 205.440135349 1301.00212486 34.2400225581 1302.1814436 284.997834822 1303.36765867 143.002447155 1304.5503052 89.6282943433 1305.72589529 614.306287072 1306.90102321 259.821347647 1308.10346668 846.93702857 1309.27881747 454.183828639 1310.46637474 177.242469713 1311.66299223 146.023625616 1312.83884976 52.3670933242 1314.01362285 134.945971259 1316.37256033 179.256588687 1317.5492196 125.882435875 1318.72444693 88.6212348563 1319.89920917 101.713008187 1321.09691432 114.804781518 1322.27151586 61.4306287072 1323.44701563 236.658979446 1325.79836676 217.524849193 1326.97332665 156.094220486 1328.14806074 173.214231765 1329.32343205 558.918015287 1330.49947022 377.647307626 1331.70705434 806.65464909 1332.88300336 87.6141753693 1334.05817351 357.506117886 1335.23306625 334.343749685 1336.41479989 513.600338372 1337.58939205 857.00762344 1338.78152958 412.894389672 1339.9575088 104.734186648 1341.13374227 440.084995821 1342.31834008 555.896836826 1343.49348003 564.960372209 1344.68235575 413.901449159 1345.86678494 1102.73013827 1347.04224541 105.741246135 1348.21892344 486.409732223 1349.41367792 601.214513741 1350.5900935 738.174603974 1351.76609061 574.023907592 1352.93981241 1072.51835366 1354.11584647 702.927521929 1355.3112461 408.866151724 1356.48843937 578.05214554 1357.66362741 510.579159911 1358.8511885 781.478161915 1360.0275117 232.630741498 1361.20531757 109.769484083 1362.38617089 394.767318906 1363.569357 106.748305622 1364.74323069 357.506117886 1365.91905479 99.6988892134 1368.26905521 137.96714972 1369.44518663 247.736633803 1370.63628577 392.753199932 1371.81147293 167.171874843 1372.98737503 48.3388553762 1374.16289649 274.927239952 1375.33817778 175.228350739 1376.51378722 344.414344555 1377.68918552 491.445029658 1378.86386829 906.353538304 1380.06174968 1230.62669312 1381.26299962 849.958207031 1382.46301089 452.169709665 1383.64705651 396.78143788 1384.83287628 418.936746594 1386.00728809 233.637800985 1387.18823231 329.30845225 1388.36853666 196.376599966 1389.54443466 332.329630711 1390.74001932 540.790944521 1391.94348506 701.920462442 1393.14474996 560.932134261 1394.32103592 529.713290164 1395.49597558 861.035861388 1396.67049413 564.960372209 1397.86385861 1928.51891761 1399.06109192 517.62857632 1400.23759489 466.268542483 1401.44596843 727.096949617 1402.63842883 300.103727127 1403.82577086 426.99322249 1405.03398459 405.844973263 1406.20917409 385.703783522 1407.38522018 315.209619432 1408.56171933 304.131965075 1409.74362277 32.2259035841 1410.91786537 95.6706512654 1412.09346396 387.717902497 1413.26812151 538.776825547 1414.44377053 480.367375301 1415.61875682 632.433357838 1416.79466625 317.223738406 1417.97995759 189.327183557 1419.15562186 298.089608153 1420.36149781 177.242469713 1421.56666966 160.122458434 1422.75963738 384.696724035 1423.95676776 219.538968167 1425.13171211 814.711124986 1426.30743621 244.715455342 1427.4946366 336.357868659 1428.67306856 228.60250355 1429.87351617 481.374434788 1431.04994817 119.840078953 1432.22937366 42.2964984542 1433.41564298 321.251976354 1434.59159435 123.868316901 1435.76721434 1335.36087977 1436.94180415 3156.12443227 1438.11705729 9577.13572141 1439.30137681 22952.8998278 1440.47642731 42786.9364243 1441.67169351 49317.7171976 1442.84874427 49010.564054 1444.0403343 26903.5941953 1445.21551853 9579.14984038 1446.39077548 2588.1428816 1447.5669028 672.715737319 1448.74374916 346.428463529 1449.95277078 343.407285068 1451.14147554 301.110786614 1452.32846127 546.833301443 1453.70788922 368.583772243 1454.91017023 205.440135349 1456.08526179 351.463760964 1457.26341105 506.550921963 1458.45068915 340.386106607 1459.62771293 522.663873755 1460.80195524 480.367375301 1461.97725765 961.741810089 1463.15460165 827.802898317 1464.35840961 482.381494275 1465.53393781 679.765153728 1466.70955663 1163.15370749 1467.88416463 375.633188652 1469.0605629 830.824076778 1470.24322468 399.802616341 1471.42560465 533.741528112 1472.6139795 399.802616341 1473.79805972 1052.37716392 1474.98439181 405.844973263 1476.16111295 419.943806081 1477.3388546 375.633188652 1478.51436316 1019.14420085 1479.69778152 851.972326005 1480.8728417 1541.8080746 1482.06608155 3020.17140152 1483.26166476 3320.27512865 1484.45143371 2713.01825799 1485.624613 1710.99406842 1486.80037551 1397.79856796 1487.97731278 946.635917784 1489.16349999 1644.52814228 1490.35874567 1375.64325925 1491.5440027 1075.53953212 1492.72664952 533.741528112 1493.91485517 388.724961984 1495.10033566 30.2117846101 1496.29424148 246.729574316 1497.47256259 405.844973263 1498.6593234 132.931852285 1499.85222367 131.924792798 1501.03757894 59.4165097332 1502.21443263 119.840078953 1503.40097878 74.5224020383 1505.77738187 192.348362018 1506.96736519 268.88488303 1508.15920947 393.760259419 1509.33538195 314.202559945 1510.51081191 371.604950704 1511.70700654 80.5647589603 1512.91017727 110.77654357 1514.10423704 425.986163003 1515.28930874 214.503670732 1516.48239551 315.209619432 1517.66733173 635.454536299 1518.84276346 119.840078953 1520.03118641 218.53190868 1521.22160843 682.786332189 1522.40668013 603.228632715 1523.58395404 881.177051128 1524.7616435 292.047251231 1525.94362758 817.732303447 1527.11888247 421.957925055 1528.294006 946.635917784 1529.47776277 698.899283981 1530.66812732 602.221573228 1531.85557492 426.99322249 1533.04114015 190.334243044 1534.21629065 383.689664548 1535.4069159 469.289720944 1536.58822404 194.362480992 1537.76658181 56.3953312722 1538.95484258 75.5294615253 1540.14883198 52.3670933242 1541.34162932 196.376599966 1542.52559459 256.800169186 1543.70078937 604.235692202 1544.89437379 585.101561949 1546.08333338 883.191170102 1547.28580852 751.266377305 1548.47358573 722.061652182 1549.64929487 703.934581416 1550.82423189 1110.78661417 1552.02650351 413.901449159 1553.21042949 1179.26665928 1554.38494775 394.767318906 1555.57593926 595.172156819 1556.77341597 674.729856293 1557.94924945 473.317958892 1559.12627762 306.146084049 1560.32446664 223.567206115 1561.51513176 572.009788618 1562.72059188 322.259035841 1563.9199665 601.214513741 1565.11208438 263.849585595 1566.2974854 156.094220486 1567.49611194 307.153143536 1571.10067289 70.4941640903 1572.30032844 220.546027654 1573.4775572 279.962537387 1574.65158837 524.677992729 1575.8488994 459.219126074 1577.04505737 624.376881942 1578.23539611 362.541415321 1579.4288298 502.522684015 1580.62409013 552.875658365 1581.81709216 372.612010191 1583.00451923 252.771931238 1584.19874851 447.13441223 1585.37999917 83.5859374213 1586.55547225 334.343749685 1587.74173219 321.251976354 1588.94488297 221.553087141 1590.12029447 107.755365109 1591.29535494 176.235410226 1592.49776263 173.214231765 1593.67350257 167.171874843 1594.87150302 257.807228673 1596.0483617 157.101279973 1597.24089716 287.011953796 1598.41933176 157.101279973 1599.6076899 303.124905588 1601.98807501 288.019013283 1603.16724244 695.87810552 1604.34749107 1035.25715264 1605.52634032 684.800451163 1606.70123628 162.136577408 1607.87807062 552.875658365 1609.05218332 434.042638899 1610.22823703 743.209901409 1611.40980909 1169.19606441 1612.58507572 2044.33075862 1613.76124057 1705.95877098 1614.93576323 1020.15126033 1616.11208438 1533.75159871 1617.28777475 689.835748598 1618.46506773 421.957925055 1619.6404238 613.299227585 1620.81584058 514.607397859 1621.99105207 225.581325089 1623.16671987 408.866151724 1624.34538202 48.3388553762 1625.52098325 299.09666764 1626.69683872 207.454254323 1627.87159158 20.1411897401 1629.04661481 216.517789706 1630.22195094 300.103727127 1631.40046677 413.901449159 1632.57496274 370.597891217 1633.75103492 1071.51129417 1634.92629628 850.965266518 1636.10122127 698.899283981 1637.27732952 989.939475725 1638.45218912 172.207172278 1639.62696104 402.823794802 1640.80433144 111.783603057 1641.9801611 308.160203023 1643.15660659 206.447194836 1644.33016358 183.284826635 1645.50552493 182.277767148 1646.68127835 184.291886122 1647.8562183 376.640248139 1649.03225882 395.774378393 1650.21005208 203.426016375 1651.39983951 389.732021471 1652.57912541 186.306005096 1653.75543718 24.1694276881 1654.93240201 184.291886122 1656.10804898 124.875376388 1657.28220948 52.3670933242 1658.46272145 205.440135349 1659.63854994 68.4800451163 1660.81398607 95.6706512654 1661.98911018 188.32012407 1663.16561901 163.143636895 1664.34391695 211.482492271 1667.87090186 124.875376388 1669.04667053 119.840078953 1670.22333127 68.4800451163 1671.39871519 241.694276881 1672.57575481 449.148531204 1673.75123639 470.296780431 1674.92752 290.033132257 1676.1037655 74.5224020383 1677.27844328 373.619069678 1678.4553046 406.85203275 1679.63060906 90.6353538304 1680.80990493 22.1553087141 1681.9865507 210.475432784 1683.1620575 714.005176286 1684.33777515 206.447194836 1685.51212274 1066.47599674 1686.68820841 1552.88572896 1687.86975086 3406.88224453 1689.04458201 3230.64683431 1690.22503827 3877.17902497 1691.40071427 2784.51948157 1692.57500145 2088.64137605 1693.75040708 1399.81268694 1694.92573441 833.845255239 1696.10098579 77.5435804993 1697.27629142 246.729574316 1698.45328881 709.976938338 1699.63044249 406.85203275 1700.80432704 417.929687107 1701.98088044 820.753481908 1703.15487496 277.948418413 1704.32968383 277.948418413 1705.50719586 439.077936334 1706.68300735 494.466208119 1707.85863526 325.280214302 1709.03432475 826.79583883 1710.20981982 478.353256327 1711.38527267 757.308734227 1712.56147769 451.162650178 1713.73808212 317.223738406 1714.91258396 343.407285068 1716.08814002 302.117846101 1717.26402277 377.647307626 1718.43940318 558.918015287 1719.61525191 261.835466621 1720.78980213 621.355703481 1721.96545526 590.136859384 1723.14179753 536.762706573 1724.31737441 622.362762968 1725.49598701 762.344031662 1726.672046 731.125187565 1727.84776071 563.953312722 1729.02334962 493.459148632 1730.20328272 381.675545574 1731.39160186 146.023625616 1732.56606733 179.256588687 1733.74990973 135.953030746 1734.92617604 376.640248139 1736.10494758 338.371987633 1737.27989017 597.186275793 1738.45435946 624.376881942 1739.62990966 336.357868659 1740.80493758 144.009506642 1741.98017078 244.715455342 1743.1562764 260.828407134 1744.33161692 66.4659261423 1745.50729029 352.470820451 1746.68173142 216.517789706 1747.85779891 508.565040937 1749.03379104 767.379329097 1750.20813716 651.567488092 1751.38915851 196.376599966 1752.56446297 182.277767148 1753.74210051 228.60250355 1754.91839146 578.05214554 1756.09331235 262.842526108 1757.26907897 524.677992729 1758.44485556 374.626129165 1759.62601766 335.350809172 1760.80204879 245.722514829 1761.97634447 289.02607277 1763.15171139 615.313346559 1764.33363301 838.880552674 1765.50890433 1552.88572896 1766.68430996 1263.85965619 1767.85966574 832.838195752 1769.03498632 348.442582503 1770.21034474 787.520518837 1771.38593717 121.854197927 1772.56120087 230.616622524 1773.73685253 168.17893433 1774.9115916 620.348643994 1776.08758666 678.758094241 1777.26286532 2634.467618 1778.43823722 3734.17657781 1779.61250593 2642.5240939 1780.78788575 1367.58678335 1781.96460015 1332.33970131 1783.13965446 507.55798145 1784.31509587 413.901449159 1785.48981588 267.877823543 1786.66528192 28.1976656361 1787.84077465 201.411897401 1789.01740224 355.491998912 1790.19221111 556.903896313 1791.36866217 1517.63864691 1792.54366312 867.07821831 1793.71932622 1481.38450538 1794.89469695 776.44286448 1796.07075858 519.642695294 1797.24603078 616.320406046 1798.42041326 356.499058399 1799.59693705 189.327183557 1800.77139138 595.172156819 1801.94779435 815.718184473 1803.12331581 800.612292168 1804.29813875 387.717902497 1805.47394467 301.110786614 1806.64825677 409.873211211 1807.82476033 597.186275793 1808.99973693 266.870764056 1810.17600031 489.430910684 1811.35183819 710.983997825 1812.52845201 808.668768064 1813.70558898 461.233245048 1814.87981193 751.266377305 1816.05484426 347.435523016 1817.23051029 1386.7209136 1818.40615814 281.976656361 1819.5831262 342.400225581 1820.75974119 385.703783522 1821.9362207 606.249811176 1823.11075274 585.101561949 1824.2861179 642.503952708 1825.46172118 1202.42902748 1826.63690394 1378.66443771 1827.81339224 1378.66443771 1828.98908173 1655.60579663 1830.16405658 1351.47383156 1831.34059679 1237.67610953 1832.51510449 643.511012195 1833.69097932 672.715737319 1834.86598173 874.127634719 1836.04178618 865.064099336 1837.21631793 622.362762968 1838.39124497 1178.25959979 1839.56727024 821.760541395 1840.74292337 560.932134261 1841.91702375 144.009506642 1843.09338185 321.251976354 1844.26822415 305.139024562 1845.44383652 215.510730219 1846.61968231 395.774378393 1847.79537562 280.969596874 1848.97086365 239.680157907 1850.14681443 104.734186648 1851.32149104 273.920180465 1852.49780164 258.81428816 1853.67315184 363.548474808 1854.84747186 333.336690198 1856.02380299 397.788497367 1857.19941887 118.833019466 1858.37410458 249.750752777 1859.54875245 194.362480992 1860.72439913 321.251976354 1861.89984347 218.53190868 1863.0745582 152.065982538 1864.25893666 670.701618345 1865.44722823 611.285108611 1866.64833683 628.40511989 1867.84638802 562.946253235 1869.03521418 267.877823543 1870.21117082 233.637800985 1871.40850531 331.322571224 1872.59512888 167.171874843 1873.79133758 155.087160999 1874.96917923 318.230797893 1876.16500817 628.40511989 1877.35389299 781.478161915 1878.54247575 1369.60090233 1879.71815645 607.256870663 1880.89347792 407.859092237 1883.29745754 179.256588687 1884.49738933 66.4659261423 1885.68721254 303.124905588 1886.88267551 493.459148632 1888.07664584 399.802616341 1889.27274018 2726.11003132 1890.46079099 3635.48474808 1891.65226783 6527.75959476 1892.85662709 7277.01185309 1894.03217055 12323.3869425 1895.20648207 12515.7353045 1896.40161513 15979.0128803 1897.61269566 13861.1667791 1898.80319041 13597.3171935 1900.00017417 11484.5063898 1901.19656908 6850.0186306 1902.38798522 2574.04404878 1903.59021813 1668.69756997 1904.78729075 447.13441223 1905.96995047 135.953030746 1907.17210597 229.609563037 1908.3637526 581.073324001 1909.55274093 491.445029658 1910.72727062 818.739362934 1911.92460775 386.710843009 1913.11427583 348.442582503 1914.3005387 628.40511989 1915.49656354 1434.05270949 1916.6901981 1829.82708789 1917.89102577 1778.46705405 1919.08533129 1791.55882738 1920.28526337 1660.64109407 1921.48336441 1331.33264182 1922.67610339 1188.33019466 1923.87925007 606.249811176 1925.05384076 572.009788618 1926.23440229 700.913402955 1927.41990829 2221.57322833 1928.61631024 1909.38478736 1929.80099339 3012.11492563 1930.99419042 3478.38346811 1932.18194593 2357.52625908 1933.36662966 1753.29056687 1934.5426212 1319.24792798 1935.72553459 582.080383488 1936.92817512 1213.50668184 1938.1289934 1844.93298019 1939.32767038 1576.04809716 1940.51291715 5132.98220526 1941.6970569 11871.2172328 1942.89888044 18920.6336418 1944.08482162 35691.1952789 1945.27624714 44335.7939153 1946.47285202 26031.4806796 1947.66674318 27629.6840854 1948.85675583 19797.782455 1950.05371232 9813.79470085 1951.23070911 4861.07614377 1952.4117545 1683.80346227 1953.59944316 1144.01957724 1954.7868843 369.59083173 1955.97779048 1077.55365109 1957.16572693 193.355421505 1959.54751318 177.242469713 1960.74646933 127.896554849 1961.94820783 331.322571224 1963.14446345 249.750752777 1964.34046981 189.327183557 1965.51571826 55.3882717852 1966.69212621 382.682605061 1967.8804562 660.631023475 1969.06879645 156.094220486 1970.25396228 414.908508646 1971.44404062 257.807228673 1972.64595096 899.304121894 1973.83293434 46.3247364022 1975.00786022 676.743975267 1976.20545306 732.132247052 1977.40195471 533.741528112 1978.59552564 310.174321997 1979.78454828 687.821629624 1980.97010589 616.320406046 1982.15870743 89.6282943433 1983.47206494 554.889777339 1984.65904071 709.976938338 1985.84430067 637.468655273 1987.03262391 866.071158823 1988.21980348 901.318240868 1989.41761215 587.115680923 1990.61309741 722.061652182 1991.80989613 437.06381736 1993.00808191 543.812122982 1994.21034005 522.663873755 1995.40088465 447.13441223 1998.03573763 2922.48663129 1999.22321602 7134.00940594 2000.40147672 8308.24076778 2001.59478372 10516.7222228 2002.79308505 5986.96865024 2003.99237345 5867.12857128 2005.18956454 3460.25639735 2006.38426448 1880.18006224 2007.55970676 940.593560862 2008.76659969 683.793391676 2009.96364152 895.275883946 2011.1483141 484.395613249 2012.34539727 1334.35382028 2013.53642134 1635.46460689 2014.73529538 951.671215219 2015.93314188 1783.50235148 2017.12542662 1114.81485211 2018.32878385 1194.37255159 2019.52621804 474.325018379 2020.72186898 144.009506642 2021.91974246 237.666038933 2023.13015965 441.092055308 2024.33255708 577.045086053 2025.52463479 369.59083173 2026.7085068 1602.23164382 2027.90815707 2462.26044572 2029.09666887 1608.27400075 2030.28078194 1244.72552594 2031.47920878 989.939475725 2032.67809807 755.294615253 2033.87316545 448.141471717 2035.07087558 372.612010191 2036.26533037 246.729574316 2037.46196721 148.03774459 2038.67391986 63.4447476812 2039.84973604 543.812122982 2041.04490488 310.174321997 2042.24275226 118.833019466 2043.43590179 159.115398947 2044.62492267 182.277767148 2045.81243654 347.435523016 2046.98888467 456.197947613 2048.17628506 434.042638899 2049.37317351 424.979103516 2050.57646681 143.002447155 2051.77236145 181.270707661 2052.95744077 638.47571476 2054.13640732 278.9554779 2055.31128217 409.873211211 2056.50542024 1063.45481828 2057.6952892 996.988892134 2058.89050848 1271.91613209 2060.0825032 1032.23597418 2061.25860206 1360.53736694 2062.43347867 764.358150636 2063.6309243 1455.20095872 2064.83472521 1964.77305914 2066.01076309 1395.78444899 2067.21133445 2057.42253195 2068.40908037 1274.93731055 2069.58530006 554.889777339 2070.76145259 116.818900492 2071.95871933 165.157755869 2073.1340059 1044.32068802 2074.33153335 734.146366026 2075.5220929 1676.75404586 2076.69888208 2033.25310426 2077.87348538 2258.83442935 2079.07249842 1249.76082337 2080.26315299 642.503952708 2081.47457691 594.165097332 2082.67563214 613.299227585 2083.8782932 869.092337284 2085.05471992 643.511012195 2086.23063433 352.470820451 2087.4328174 117.825959979 2088.63078031 861.035861388 2089.81968477 708.969878851 2091.00760392 457.2050071 2092.18403856 379.6614266 2093.37627257 564.960372209 2094.57507945 65.4588666553 2095.76377659 219.538968167 2096.9663699 382.682605061 2098.16494747 551.868598878 2099.36175792 787.520518837 2100.53775005 472.310899405 2101.76271972 1002.02418957 2102.96038821 448.141471717 2104.1681908 416.92262762 2105.37324155 795.576994733 2106.56767551 471.303839918 2107.75884443 465.261482996 2108.93440402 941.600620349 2110.11557433 903.332359842 2111.30371811 381.675545574 2112.50336515 983.897118803 2113.69772668 1324.28322541 2114.88901555 877.14881318 2116.07567841 1179.26665928 2117.26248937 551.868598878 2118.43889762 179.256588687 2119.64857876 753.280496279 2120.84218077 1043.31362854 2122.03736457 1277.95848901 2123.22631859 990.946535212 2124.40392153 1306.15615464 2125.60602923 1474.33508897 2126.78813618 585.101561949 2127.98052884 3161.15972971 2129.18194711 406.85203275 2130.38688172 3383.71987633 2131.58076291 860.028801901 2132.80541968 961.741810089 2133.97488878 1768.39645918 2135.15700893 4548.8877028 2136.34831539 3239.71036969 2137.54635192 1650.5704992 2138.7353728 2941.62076154 2139.93096978 3827.8331101 2141.11741066 10736.2611909 2142.29293007 22044.5321705 2143.4917047 35752.6259076 2144.6673505 37225.9539371 2145.84416753 31499.813694 2147.04694208 13306.2770018 2148.24005525 8821.84110615 2149.41331019 3032.25611537 2150.59874112 1474.33508897 2151.79379207 914.4100142 2152.98568151 966.777107524 2154.17434844 845.929969083 2155.35657387 1104.74425724 2156.54461852 869.092337284 2157.7371754 2262.8626673 2158.91303292 1089.63836494 2160.10365758 743.209901409 2161.28957501 1160.13252903 2162.46582021 762.344031662 2163.66857393 249.750752777 2164.86264808 575.030967079 2166.05734919 634.447476812 2167.23291552 260.828407134 2168.43085585 207.454254323 2169.63368934 271.906061491 2170.82553069 416.92262762 2172.02593549 420.950865568 2173.23647087 38.2682605061 2174.44147469 344.414344555 2175.63089234 576.038026566 2176.82933559 1325.2902849 2178.03421537 1306.15615464 2179.22942908 1962.75894017 2180.4265495 2851.9924672 2181.60244016 1625.39401202 2182.77915456 636.461595786 2183.97332547 1217.53491979 2185.14839533 386.710843009 2186.33978742 1213.50668184 2187.51562823 2079.57784066 2188.7166427 1863.06005096 2189.89240902 3427.02343427 2191.08364217 1597.19634639 2192.25867156 879.162932154 2193.45907138 1114.81485211 2194.64678936 860.028801901 2195.84691 1099.70895981 2197.03485935 755.294615253 2198.20946646 707.962819364 2199.40614172 691.849867572 2200.61223878 758.315793714 2201.81335969 1181.28077826 2203.01174225 526.692111703 2204.21539155 911.388835739 2205.41251988 489.430910684 2206.58813108 354.484939425 2207.7807774 660.631023475 2208.98592931 546.833301443 2210.18594819 130.917733311 2211.37508784 467.27560197 2212.5794169 545.826241956 2213.76701611 768.386388584 2214.94546977 760.329912688 2216.13910756 845.929969083 2217.33728777 483.388553762 2218.53603132 303.124905588 2219.72785038 358.513177373 2220.92415615 254.786050212 2222.09917879 491.445029658 2223.27446712 492.452089145 2224.47232476 295.068429692 2225.66188874 507.55798145 2228.025666 110.77654357 2229.21547366 456.197947613 2230.40221952 123.868316901 2231.57830226 134.945971259 2232.76372058 406.85203275 2233.96373946 533.741528112 2235.17094734 391.746140445 2236.36849825 494.466208119 2237.57162997 528.706230677 2238.74639338 1220.55609825 2239.93669899 1086.61718648 2241.12506299 1134.95604185 2242.31629995 810.682887038 2243.50634837 849.958207031 2244.7025518 956.706512654 2245.87737474 435.049698386 2247.05349355 184.291886122 2248.25885866 88.6212348563 2249.45768607 432.028519925 2250.65203323 535.755647086 2251.82786524 670.701618345 2253.05689788 408.866151724 2254.22711975 289.02607277 2255.40273886 235.651919959 2256.60262989 464.254423509 2257.8074824 360.527296347 2259.0124742 710.983997825 2260.22085918 1016.12302239 2261.41500517 212.489551758 2262.58938149 985.911237777 2263.7646012 1587.12575152 2264.96002722 339.37904712 2266.143801 298.089608153 2267.33469633 697.892224494 2268.53817731 535.755647086 2269.72878437 894.268824459 2270.9125212 229.609563037 2272.09986001 194.362480992 2273.28582377 252.771931238 2274.48058588 147.030685103 2275.67928602 173.214231765 2276.8544896 174.221291252 2278.04713533 220.546027654 2279.23718082 186.306005096 2280.41181902 273.920180465 2281.5860672 90.6353538304 2282.76239421 308.160203023 2283.9411986 78.5506399863 2285.12579112 149.044804077 2286.31508619 387.717902497 2287.50495544 138.974209207 2288.69129515 614.306287072 2289.87758002 372.612010191 2291.06565458 401.816735315 2292.2505301 860.028801901 2293.43528802 322.259035841 2294.61764892 503.529743502 2295.80057903 418.936746594 2296.98619001 518.635635807 2298.16671518 284.997834822 2299.34908546 189.327183557 2300.53861484 232.630741498 2301.7206432 23.1623682011 2302.89522509 556.903896313 2304.07253244 301.110786614 2305.26093808 247.736633803 2306.43927415 339.37904712 2307.62429277 396.78143788 2308.80075585 204.433075862 2309.97497588 262.842526108 2311.1566626 476.339137353 2312.33285473 383.689664548 2313.50787884 456.197947613 2314.68265516 307.153143536 2315.87354579 257.807228673 2317.04974466 461.233245048 2318.23111995 364.555534295 2319.40633351 480.367375301 2320.59092838 469.289720944 2321.77323504 361.534355834 2322.94815329 540.790944521 2324.12361346 847.944088057 2325.29985162 465.261482996 2326.47445346 1579.06927562 2327.64953886 1231.63375261 2328.82579022 677.751034754 2330.00103925 1459.22919667 2331.17805511 1446.13742334 2332.35474575 449.148531204 2333.53137188 1344.42441515 2334.71524859 1232.64081209 2335.89241929 1099.70895981 2337.07415821 1166.17488595 2338.26165654 2989.95961691 2339.44241133 4497.52766896 2340.62573966 5394.81767188 2341.8017095 4477.38647922 2342.97644388 3491.47524144 2344.1515762 3310.20453378 2345.32866655 985.911237777 2346.50495222 815.718184473 2347.67976343 645.525131169 2348.85498343 450.155590691 2350.03453677 693.863986546 2351.22109612 687.821629624 2352.40696047 124.875376388 2353.59088645 111.783603057 2354.77413326 13.0917733311 2355.95816128 125.882435875 2357.14035357 129.910673824 2358.3191993 274.927239952 2359.49623891 327.294333276 2360.6758163 519.642695294 2361.8499287 279.962537387 2363.02613959 552.875658365 2364.20047662 422.964984542 2365.37613591 361.534355834 2366.55306526 332.329630711 2367.72858731 316.216678919 2368.91111947 311.181381484 2370.08799956 355.491998912 2371.26439373 39.2753199932 2372.44001519 660.631023475 2373.63469929 424.979103516 2374.81267349 565.967431696 2375.98760757 800.612292168 2377.16434602 1286.0149649 2378.33930913 766.37226961 2379.51620828 506.550921963 2380.69472381 417.929687107 2381.87545015 997.995951621 2383.05807674 1558.92808588 2384.23892213 564.960372209 2385.41375417 352.470820451 2386.59254477 1236.66905004 2387.76789644 1138.9842798 2388.94356981 478.353256327 2390.11894523 507.55798145 2391.29957303 644.518071682 2392.47919294 237.666038933 2393.65580441 742.202841922 2394.83211853 493.459148632 2396.01021354 354.484939425 2397.18462623 410.880270698 2398.36218988 368.583772243 2399.53711106 598.19333528 2400.71480491 132.931852285 2401.89014426 261.835466621 2403.07121047 443.106174282 2404.24737972 849.958207031 2405.42586065 705.94870039 2406.61141739 476.339137353 2407.78833501 283.990775335 2408.97235717 137.96714972 2410.1570623 498.494446067 2411.33241104 765.365210123 2412.51168052 253.778990725 2413.68848876 304.131965075 2414.86262726 579.059205027 2416.0376848 1818.74943353 2417.21384203 4548.8877028 2418.39466689 4575.07124946 2419.57097544 3961.77202187 2420.74661801 2365.58273497 2421.92140107 1630.42930946 2423.09735156 1085.61012699 2424.27181322 430.014400951 2425.44823818 126.889495362 2426.62288136 418.936746594 2427.79792102 207.454254323 2428.97257036 226.588384576 2430.14856336 85.6000563953 2431.32387985 158.10833946 2432.50115699 72.5082830643 2433.6776148 265.863704569 2436.02654955 302.117846101 2437.20235811 175.228350739 2438.37724879 118.833019466 2439.55409251 226.588384576 2440.72944917 126.889495362 2441.90496271 312.188440971 2443.08019151 498.494446067 2444.25510038 354.484939425 2445.43160364 394.767318906 2446.60681807 652.574547579 2447.78340197 253.778990725 2448.95876068 81.5718184473 2450.13408156 477.34619684 2451.3086919 858.014682927 2452.48563239 451.162650178 2453.65902839 481.374434788 2454.83438915 287.011953796 2456.01058802 57.4023907592 2457.18572621 59.4165097332 2458.36166555 43.3035579412 2459.53665711 19.1341302531 2460.71232549 409.873211211 2461.88755018 118.833019466 2463.06328572 773.421686019 2464.23764445 907.360597791 2465.41357822 1441.1021259 2466.58930173 3938.60965367 2467.76428508 8623.45038721 2468.94053791 10678.8588002 2470.1162186 12254.9068974 2471.29253477 11050.4637509 2472.46851077 8067.55355039 2473.64316363 3792.58602806 2474.81883465 2531.74755033 2475.9944781 452.169709665 2477.17116464 128.903614336 2478.34448146 800.612292168 2479.52012345 910.381776252 2480.69647363 334.343749685 2481.87181592 324.273154815 2483.04663857 327.294333276 2484.22224067 277.948418413 2485.40017997 323.266095328 2486.57440967 361.534355834 2487.74970475 410.880270698 2488.92668776 630.419238864 2490.10135001 915.417073687 2491.27671986 1183.29489723 2492.45271111 798.598173194 2493.62868886 172.207172278 2494.80396282 346.428463529 2495.98094379 259.821347647 2497.15465532 22.1553087141 2498.33059231 174.221291252 2500.68153348 43.3035579412 2501.85696726 133.938911772 2503.03261951 167.171874843 2504.2085741 417.929687107 2505.38392548 686.814570137 2506.55795049 260.828407134 2507.73814869 229.609563037 2508.91291562 249.750752777 2510.08850952 193.355421505 2511.26451162 236.658979446 2512.43958177 246.729574316 2513.64012703 143.002447155 2514.84022686 257.807228673 2516.02054704 725.082830643 2517.19536412 801.619351655 2518.39814483 1159.12546954 2519.59544559 1256.81023978 2520.80068049 1106.75837622 2522.01460348 1567.99162127 2523.21778857 575.030967079 2524.39318012 733.139306539 2525.59407084 496.480327093 2526.80413525 362.541415321 2528.01041236 431.021460438 2529.21591793 842.908790622 2530.41513126 385.703783522 2531.61018603 624.376881942 2532.78643651 257.807228673 2533.96126884 461.233245048 2535.15321458 490.437970171 2536.34902183 507.55798145 2537.55069552 289.02607277 2538.74847105 390.739080958 2539.92334942 183.284826635 2541.0987181 85.6000563953 2542.30808986 153.073042025 2543.49471607 673.722796806 2544.6990114 448.141471717 2545.89670629 270.899002004 2547.10144971 500.508565041 2548.30682244 273.920180465 2549.48576289 255.793109699 2550.68989019 412.894389672 2551.90573249 442.099114795 2553.10845425 810.682887038 2554.31381643 1528.71630127 2555.5245474 1845.94003968 2556.73148872 1573.0269187 2557.90641635 1730.12819867 2559.1094123 865.064099336 2560.30461926 1391.75621104 2561.50009601 613.299227585 2562.69904073 474.325018379 2563.87643605 266.870764056 2565.07163598 370.597891217 2566.24785098 213.496611245 2567.44224593 476.339137353 2568.63954904 221.553087141 2569.83958581 590.136859384 2571.02084645 627.398060403 2572.19687113 474.325018379 2573.4049828 302.117846101 2574.60736557 295.068429692 2575.82256917 803.633470629 2577.02356311 1245.73258542 2578.22468637 2041.30958016 2579.42748877 3001.03727127 2580.61218189 2755.31475644 2581.80167108 2168.19907552 2582.99364351 1062.44775879 2584.1963773 1173.22430236 2585.39754044 959.727691115 2586.60343896 378.654367113 2587.79811896 741.195782435 2588.97428293 397.788497367 2590.14985894 431.021460438 2591.35796211 972.819464446 2592.54850436 498.494446067 2593.75969838 373.619069678 2594.96246031 147.030685103 2597.33095418 251.764871751 2598.52344302 552.875658365 2599.73483527 607.256870663 2600.92489601 864.057039849 2602.12519612 672.715737319 2603.32373909 368.583772243 2604.4998535 475.332077866 2605.69458511 626.391000916 2606.9003678 505.543862476 2608.11094716 411.887330185 2609.31312055 614.306287072 2610.51340717 423.972044029 2611.70937687 539.783885034 2612.90392843 895.275883946 2614.08000999 499.501505554 2615.28506308 473.317958892 2616.4906622 752.273436792 2617.68784595 203.426016375 2618.88623731 654.588666553 2620.0908036 432.028519925 2621.30099031 225.581325089 2622.4980943 214.503670732 2623.69297224 228.60250355 2624.89664911 190.334243044 2626.09142734 94.6635917784 2627.28765833 664.659261423 2628.46798732 417.929687107 2629.64451902 1054.39128289 2630.84909382 4305.17930694 2632.05312259 12932.6579321 2633.24205315 45416.3687449 2634.44188876 112470.417628 2635.62747305 189397.677721 2636.82797257 264540.428403 2638.0034741 299343.397214 2639.19980274 303376.67046 2640.37546056 254107.292118 2641.55487607 192781.397597 2642.74922411 116266.024834 2643.94733424 50565.463902 2645.1512548 14481.5154231 2646.32592379 2605.26289288 2647.50148015 1137.97722031 2648.69802697 589.129799897 2649.89093164 518.635635807 2651.09350061 902.325300355 2652.29582913 1101.72307878 2653.47974689 782.485221402 2654.68923507 422.964984542 2655.90081295 678.758094241 2657.10194383 410.880270698 2658.29937187 728.104009104 2659.50020041 349.44964199 2660.69918325 230.616622524 2661.87411704 489.430910684 2663.05044787 400.809675828 2664.24673751 436.056757873 2665.44309606 579.059205027 2666.64190295 277.948418413 2667.84772523 121.854197927 2669.05352669 374.626129165 2670.2569804 629.412179377 2671.45326036 830.824076778 2672.64477591 2570.01581083 2673.84971492 4131.96507518 2675.05632076 6220.60645122 2676.25679301 7735.22391968 2677.43113092 7131.99528696 2678.62987916 6751.32680087 2679.84403147 2680.7923544 2681.05256571 1050.36304495 2682.25454497 735.153425513 2683.45057772 612.292168098 2684.6555792 365.562593782 2685.86281904 788.527578324 2687.03838215 144.009506642 2688.23350583 431.021460438 2689.43371562 616.320406046 2690.63312044 787.520518837 2691.83377509 794.569935246 2693.04163281 665.66632091 2694.22661331 694.871046033 2695.41338643 1038.2783311 2696.61737268 777.449923967 2697.80950669 1270.9090726 2698.99557544 1521.66688486 2700.19328909 597.186275793 2701.39502876 514.607397859 2702.57318829 191.341302531 2703.77224268 203.426016375 2704.97214016 96.6777107524 2706.16504747 186.306005096 2707.36873314 150.051863564 2708.56725469 82.5788779343 2709.74210403 163.143636895 2710.94428357 23.1623682011 2712.15026919 362.541415321 2713.35081065 265.863704569 2714.5425517 466.268542483 2715.7182802 232.630741498 2716.9224641 643.511012195 2718.12626238 252.771931238 2719.30165217 673.722796806 2720.50866093 521.656814268 2721.7158826 487.41679171 2722.93245743 231.623682011 2724.13842751 164.150696382 2725.3446879 516.621516833 2726.5391028 347.435523016 2727.7144319 11.077654357 2728.91652786 277.948418413 2730.12415773 170.193053304 2731.3311838 56.3953312722 2732.52912619 232.630741498 2733.70367582 276.941358926 2734.90924649 157.101279973 2736.09527682 109.769484083 2737.29456464 375.633188652 2738.48736491 603.228632715 2739.68545832 704.941640903 2740.88042981 819.746422421 2742.06508803 982.890059316 2743.24076843 843.915850109 2744.44554029 436.056757873 2745.65815392 802.626411142 2746.85812266 835.859374213 2748.06106905 789.534637811 2749.2695508 362.541415321 2750.47217667 777.449923967 2751.64792804 837.873493187 2752.84236787 1650.5704992 2754.03934429 2059.43665092 2755.23364424 10002.1148249 2756.43733812 4428.04056436 2757.63805142 12505.6647096 2758.82512044 9586.19925679 2760.02593315 12969.9191331 2761.21743931 7672.78623148 2762.41692595 6809.73625112 2763.62134738 3179.28680047 2764.8221466 4404.87819616 2766.02243117 4040.32266186 2767.19790307 1733.14937713 2768.38698612 2750.27945901 2769.57456158 992.960654186 2770.75031793 511.586219398 2771.94919491 520.649754781 2773.14888799 616.320406046 2774.34659138 347.435523016 2775.54298161 368.583772243 2776.72774393 613.299227585 2777.93285948 238.67309842 2779.12423368 396.78143788 2780.33441159 379.6614266 2781.53518969 92.6494728044 2782.73487193 385.703783522 2783.91520502 141.995387668 2785.08828137 309.16726251 2786.27043378 290.033132257 2787.48371807 45.3176769152 2788.68316805 338.371987633 2789.88466696 98.6918297264 2791.09409503 211.482492271 2792.26951385 214.503670732 2793.44704085 114.804781518 2794.64959164 420.950865568 2795.85732385 199.397778427 2797.06286461 156.094220486 2798.25997623 184.291886122 2799.45401078 43.3035579412 2800.65025057 120.84713844 2801.83787324 11.077654357 2803.03339985 90.6353538304 2804.21900379 225.581325089 2805.40976364 366.569653269 2806.60551341 409.873211211 2807.78551014 106.748305622 2808.96254975 383.689664548 2810.15236006 278.9554779 2811.35339886 404.837913776 2812.52800949 103.727127161 2814.9355688 48.3388553762 2816.12181643 73.5153425513 2817.2971986 198.39071894 2818.50155786 46.3247364022 2819.69489976 203.426016375 2820.90176425 206.447194836 2822.10861554 480.367375301 2823.30121757 120.84713844 2824.47605694 271.906061491 2825.68284284 253.778990725 2826.88395466 324.273154815 2828.08486678 56.3953312722 2829.28533404 212.489551758 2830.48853263 549.854479904 2831.66367111 313.195500458 2832.84024973 924.48060907 2834.04498816 202.418956888 2836.43858208 276.941358926 2837.64094667 391.746140445 2838.84137258 230.616622524 2840.01524276 75.5294615253 2841.19052405 186.306005096 2842.37162838 577.045086053 2843.58171949 874.127634719 2844.77865779 1006.05242752 2845.98225402 547.84036093 2847.16163933 1259.83141824 2848.33857807 685.80751065 2849.53796793 810.682887038 2850.71314365 573.016848105 2851.91134146 581.073324001 2853.11771329 289.02607277 2854.33212659 309.16726251 2855.51546871 560.932134261 2856.72307687 398.795556854 2857.91674399 453.176769152 2859.10384878 458.212066587 2860.29290954 766.37226961 2861.48621244 92.6494728044 2862.68503516 460.226185561 2863.88004331 724.075771156 2865.08446708 444.113233769 2866.28793223 732.132247052 2867.48033339 530.720349651 2868.68771253 1385.71385412 2869.87215843 1415.92563873 2871.04918426 2968.81136769 2872.22538723 1248.75376388 2873.4212238 2597.20641698 2874.61928525 1449.1586018 2875.81830005 341.393166094 2877.01634567 724.075771156 2878.19210965 219.538968167 2879.38766822 182.277767148 2880.58292591 132.931852285 2881.77517341 222.560146628 2882.96225298 281.976656361 2884.1615103 200.404837914 2885.35753514 354.484939425 2886.55864315 293.054310718 2887.90604422 473.317958892 2889.11925138 359.52023686 2890.32051599 526.692111703 2891.52789278 1139.99133929 2892.72163673 1552.88572896 2893.92765167 1033.24303367 2895.12863945 1622.37283356 2896.33334797 1137.97722031 2897.52276972 743.209901409 2898.72728177 717.026354747 2899.92422887 400.809675828 2901.11498402 326.287273789 2903.49388852 709.976938338 2904.66881234 748.245198844 2905.85127501 2150.07200475 2907.03707865 3377.67751941 2908.21336755 3837.90370497 2909.40206967 4639.52305663 2910.57841311 3071.53143536 2911.77399338 2376.66038933 2912.95142389 1832.84826635 2914.13559209 1053.38422341 2915.31644012 397.788497367 2917.67950654 339.37904712 2918.85527932 328.301392763 2920.03029141 279.962537387 2921.20597621 277.948418413 2922.38176365 70.4941640903 2923.5612123 247.736633803 2924.74490573 544.819182469 2925.92526404 634.447476812 2927.1077833 840.894671648 2928.28402645 330.315511737 2929.45922006 811.689946525 2930.63519635 790.541697298 2931.82722508 760.329912688 2933.01160559 503.529743502 2934.19053197 631.426298351 2935.38727438 265.863704569 2936.57570818 491.445029658 2937.75518616 417.929687107 2938.94012794 78.5506399863 2940.13678854 115.811841005 2941.31733776 660.631023475 2942.49847816 635.454536299 2943.67648579 1038.2783311 2944.85626317 1014.10890341 2946.03608571 984.90417829 2947.21411504 1025.18655777 2948.38949897 622.362762968 2949.56394333 656.602785527 2950.74328553 343.407285068 2951.92441303 83.5859374213 2953.09985942 77.5435804993 2954.28703371 468.282661457 2955.46708001 208.46131381 2956.65567568 502.522684015 2957.83034906 507.55798145 2959.01736823 314.202559945 2960.19296271 672.715737319 2961.36828212 321.251976354 2962.55532562 414.908508646 2963.73306727 186.306005096 2964.91000513 353.477879938 2966.08524742 246.729574316 2967.26123163 203.426016375 2968.43637626 23.1623682011 2969.61190154 399.802616341 2970.78934437 297.082548666 2971.97059063 92.6494728044 2973.1468895 313.195500458 2974.32122506 214.503670732 2975.4965999 70.4941640903 2976.67949569 607.256870663 2977.85430632 300.103727127 2979.02981987 372.612010191 2980.2129702 314.202559945 2981.39783985 254.786050212 2982.57562108 337.364928146 2983.76083208 536.762706573 2984.94076547 404.837913776 2986.11634617 493.459148632 2987.31224285 575.030967079 2988.49371903 433.035579412 2989.66907891 442.099114795 2990.85133659 330.315511737 2992.03136763 611.285108611 2993.21669886 228.60250355 2994.40941584 530.720349651 2995.59538958 110.77654357 2996.77376112 199.397778427 2997.96248964 239.680157907 2999.14899532 359.52023686 3000.33340603 81.5718184473 3001.5173455 69.4871046033 3002.69427954 413.901449159 3003.88569099 128.903614336 3005.06865774 455.190888126 3006.25962697 380.668486087 3007.44766429 125.882435875 3008.62269632 130.917733311 3009.81696343 658.616904501 3011.01503631 834.852314726 3012.20468122 1384.70679463 3013.40261188 2509.59224161 3014.58997562 2121.87433912 3015.7773936 699.906343468 3016.9705314 766.37226961 3018.16058012 1139.99133929 3019.34472309 355.491998912 3020.52946371 286.004894309 3021.72094466 579.059205027 3022.89634706 230.616622524 3024.07901412 91.6424133174 3025.2601988 65.4588666553 3026.4681184 71.5012235773 3027.65862781 404.837913776 3028.84027436 222.560146628 3030.02731259 149.044804077 3031.21293002 202.418956888 3033.57678088 26.1835466621 3034.77519922 212.489551758 3035.96061314 876.141753693 3037.13672637 430.014400951 3038.32786041 424.979103516 3039.50556804 234.644860472 3040.68921601 506.550921963 3041.86530257 100.7059487 3043.05424016 417.929687107 3044.23031205 379.6614266 3045.40677573 51.3600338372 3046.58131158 448.141471717 3047.7567087 54.3812122982 3048.93245802 175.228350739 3050.10820675 179.256588687 3051.28273791 220.546027654 3052.45807023 132.931852285 3053.63384623 300.103727127 3054.80838971 204.433075862 3057.16014552 10.07059487 3058.33505028 376.640248139 3059.51099138 203.426016375 3060.68600171 287.011953796 3061.86198944 269.891942517 3064.21334644 193.355421505 3065.3899318 377.647307626 3066.56537262 249.750752777 3067.74127941 173.214231765 3068.91625925 560.932134261 3070.09154875 181.270707661 3071.26661597 377.647307626 3072.4416046 226.588384576 3073.61738207 154.080101512 3074.79299473 275.934299439 3075.96904023 154.080101512 3077.14500098 444.113233769 3078.31912276 496.480327093 3079.49449848 569.995669644 3080.6703475 488.423851197 3081.84711381 355.491998912 3083.02245375 325.280214302 3084.19921829 545.826241956 3085.37407789 293.054310718 3086.54924042 709.976938338 3087.72570585 255.793109699 3088.90087834 85.6000563953 3090.07595319 477.34619684 3091.25232889 417.929687107 3092.42737411 316.216678919 3093.60260438 383.689664548 3094.77788567 356.499058399 3095.95274498 397.788497367 3097.12898959 581.073324001 3098.30369905 205.440135349 3099.47920643 428.000281977 3100.65521029 435.049698386 3101.83070712 426.99322249 3103.0205447 339.37904712 3104.19584065 238.67309842 3105.37190169 247.736633803 3106.54726011 594.165097332 3107.72288098 883.191170102 3108.89818867 972.819464446 3110.07392244 636.461595786 3111.24981516 655.59572604 3112.42354897 403.830854289 3113.599476 403.830854289 3114.77515288 398.795556854 3115.95146494 486.409732223 3117.12710723 83.5859374213 3118.30304598 257.807228673 3119.47774165 76.5365210123 3120.65373114 36.2541415321 3121.82910041 343.407285068 3123.03251951 223.567206115 3124.23667145 348.442582503 3125.43600941 545.826241956 3126.64126836 922.466490096 3127.84044826 1363.5585454 3129.04378438 596.179216306 3130.25018172 258.81428816 3132.63840478 792.555816272 3133.84530065 271.906061491 3135.05856324 126.889495362 3136.26916225 68.4800451163 3137.46909023 267.877823543 3138.64459849 185.298945609 3141.03775694 220.546027654 3142.24270534 104.734186648 3143.43552086 467.27560197 3144.64126719 353.477879938 3145.83394752 310.174321997 3147.0281287 437.06381736 3148.21880086 459.219126074 3149.42374105 145.016566129 3150.6361368 361.534355834 3151.82977283 513.600338372 3153.0045078 70.4941640903 3154.18113569 327.294333276 3155.38771132 252.771931238 3156.59591508 88.6212348563 3160.19631308 375.633188652 3161.37158645 471.303839918 3162.56864792 484.395613249 3163.77067087 405.844973263 3164.96812383 308.160203023 3166.17982428 501.515624528 3167.3822783 199.397778427 3168.57537476 383.689664548 3170.977755 573.016848105 3172.18633968 254.786050212 3173.39293115 219.538968167 3174.59093659 74.5224020383 3175.79419793 885.205289076 3176.99523644 161.129517921 3178.18476171 187.313064583 3179.37295299 256.800169186 3181.76939641 62.4376881942 3182.9728944 30.2117846101 3184.18026474 99.6988892134 3185.3563595 379.6614266 3186.53091295 288.019013283 3187.74310723 460.226185561 3188.95186347 382.682605061 3190.15984553 313.195500458 3191.35922542 121.854197927 3192.54650001 415.915568133 3193.75384659 228.60250355 3194.95740558 105.741246135 3196.16415189 413.901449159 3197.36566605 165.157755869 3198.56979892 541.798004008 3199.77237934 187.313064583 3200.94873656 624.376881942 3202.14832994 1016.12302239 3203.34052084 597.186275793 3204.54505224 315.209619432 3205.7217813 341.393166094 3206.90905383 348.442582503 3209.28469095 338.371987633 3210.4879995 94.6635917784 3211.69232445 213.496611245 3212.89667902 22.1553087141 3214.09616038 156.094220486 3215.28790085 268.88488303 3216.46934095 132.931852285 3217.6709035 563.953312722 3218.87277396 1179.26665928 3220.0746063 2179.27672988 3221.26406969 1220.55609825 3222.47683874 795.576994733 3223.66445994 919.445311635 3224.843257 307.153143536 3226.0432492 779.464042941 3227.24077781 55.3882717852 3228.44368461 127.896554849 3229.63934259 578.05214554 3230.81451157 225.581325089 3231.99024769 678.758094241 3233.18495789 268.88488303 3234.3861052 395.774378393 3235.59298054 282.983715848 3236.79050358 257.807228673 3238.00773676 166.164815356 3239.18674407 150.051863564 3240.38386302 336.357868659 3241.5874915 114.804781518 3242.77933256 255.793109699 3243.97974264 469.289720944 3245.18511449 258.81428816 3246.37307263 237.666038933 3247.58434553 354.484939425 3248.78267677 257.807228673 3249.98377921 220.546027654 3251.18312157 396.78143788 3252.38461198 444.113233769 3253.58279747 241.694276881 3254.77811059 170.193053304 3255.95794692 136.960090233 3257.14866102 200.404837914 3258.34238531 415.915568133 3259.54240273 146.023625616 3260.7590242 20.1411897401 3261.93348615 254.786050212 3265.50919083 31.2188440971 3269.10443264 299.09666764 3270.27991568 99.6988892134 3271.47821115 485.402672736 3272.66789418 267.877823543 3273.86961508 370.597891217 3275.08652334 294.061370205 3276.28664692 244.715455342 3277.47669358 153.073042025 3278.65211945 73.5153425513 3279.85020699 22.1553087141 3281.05669114 159.115398947 3282.2614542 9.06353538304 3283.46759055 87.6141753693 3284.65045467 257.807228673 3285.84758476 108.762424596 3287.02251357 210.475432784 3288.19764208 158.10833946 3289.39465106 39.2753199932 3290.6033636 267.877823543 3291.77910646 154.080101512 3292.98985562 244.715455342 3294.1875376 253.778990725 3295.36237198 340.386106607 3296.55174476 527.69917119 3297.75066308 217.524849193 3298.9461504 647.539250144 3300.14351157 610.278049124 3301.350713 1012.09478444 3302.5532069 935.558263427 3303.72953157 511.586219398 3304.93065337 589.129799897 3306.13483932 479.360315814 3307.32903076 674.729856293 3308.53133728 371.604950704 3309.73812582 168.17893433 3310.91375666 167.171874843 3312.09456863 121.854197927 3313.29927216 341.393166094 3314.50539414 206.447194836 3315.70122455 168.17893433 3316.91166433 644.518071682 3318.09733279 90.6353538304 3319.29546843 302.117846101 3320.48984198 81.5718184473 3321.66718335 444.113233769 3322.87886679 174.221291252 3324.06647627 301.110786614 3325.27350556 189.327183557 3326.44979797 21.1482492271 3327.62731147 64.4518071682 3328.82336739 124.875376388 3330.02773516 161.129517921 3331.22669336 118.833019466 3332.42783686 26.1835466621 3333.60261875 86.6071158823 3334.77804842 83.5859374213 3335.97022319 279.962537387 3337.17191154 106.748305622 3338.36372767 385.703783522 3339.56110527 106.748305622 3340.76002095 59.4165097332 3341.95499361 19.1341302531 3343.15194159 166.164815356 3344.34138094 98.6918297264 3345.53260118 90.6353538304 3346.72662078 366.569653269 3347.92924753 264.856645082 3349.13694514 341.393166094 3350.33940943 241.694276881 3351.51629039 379.6614266 3352.7295826 97.6847702394 3353.92647956 11.077654357 3355.13886299 11.077654357 3356.3454612 526.692111703 3357.5446109 184.291886122 3358.75405627 649.553369118 3359.96218114 249.750752777 3361.1743939 62.4376881942 3363.63238908 639.482774247 3364.80789177 206.447194836 3367.17967267 219.538968167 3368.37627696 157.101279973 3369.57564366 309.16726251 3370.7760599 292.047251231 3371.9549376 215.510730219 3373.13395693 164.150696382 3374.33893993 259.821347647 3375.53785298 284.997834822 3376.74257176 112.790662544 3377.93619929 252.771931238 3379.13591495 45.3176769152 3380.33608868 262.842526108 3381.52753296 340.386106607 3382.71592893 195.369540479 3383.90590228 326.287273789 3385.10459275 247.736633803 3386.30007654 164.150696382 3387.50290241 177.242469713 3388.69647891 74.5224020383 3389.89289523 69.4871046033 3391.09284462 254.786050212 3392.27527326 188.32012407 3394.68595685 167.171874843 3395.8813163 65.4588666553 3397.05548735 357.506117886 3398.23095134 383.689664548 3399.44046093 157.101279973 3400.63147238 128.903614336 3401.84146407 314.202559945 3403.03454968 524.677992729 3404.24697328 527.69917119 3405.42360645 488.423851197 3406.6042322 392.753199932 3407.81386173 425.986163003 3409.00989771 449.148531204 3410.20793863 105.741246135 3412.5795298 44.3106174282 3413.75574245 227.595444063 3414.95674724 156.094220486 3416.13979434 137.96714972 3417.33869976 208.46131381 3418.53498119 274.927239952 3420.94674129 111.783603057 3422.12235513 32.2259035841 3425.72776416 95.6706512654 3426.93972649 118.833019466 3428.14324178 9.06353538304 3429.32807155 168.17893433 3432.91923778 183.284826635 3434.12518645 233.637800985 3435.3280736 350.456701477 3436.51892083 80.5647589603 3437.69747654 93.6565322914 3438.8841482 465.261482996 3440.09183173 784.499340376 3441.29316496 542.805063495 3442.49850397 514.607397859 3443.69606425 167.171874843 3444.9042598 386.710843009 3446.09055845 477.34619684 3447.28691114 383.689664548 3448.47926362 202.418956888 3449.67340433 78.5506399863 3450.84808329 14.0988328181 3452.02332616 211.482492271 3453.21533085 220.546027654 3454.39212472 153.073042025 3455.5664594 328.301392763 3456.76413787 31.2188440971 3457.96065214 422.964984542 3459.13468331 205.440135349 3460.31404047 576.038026566 3461.49329293 218.53190868 3462.69069927 217.524849193 3463.86541781 211.482492271 3465.0687032 257.807228673 3466.24277484 491.445029658 3467.44604175 443.106174282 3468.64159914 553.882717852 3469.81598192 144.009506642 3471.01852861 194.362480992 3472.21874309 146.023625616 3473.41737403 322.259035841 3474.6136971 249.750752777 3475.78908924 148.03774459 3476.99509861 1078.56071058 3478.17119162 1776.45293507 3479.36932961 2650.58056979 3480.55780006 4182.31804953 3481.75569465 6642.56437628 3482.94853275 6512.65370245 3484.14850647 8166.24538011 3485.32420389 6157.16170354 3486.49862684 4229.64984542 3487.69148048 2489.45105187 3488.90811279 1381.68561617 3490.1177432 647.539250144 3491.30271314 225.581325089 3492.50643019 69.4871046033 3493.72002034 182.277767148 3494.90970132 356.499058399 3496.08542278 127.896554849 3497.28022037 131.924792798 3499.66550567 146.023625616 3500.86292285 147.030685103 3502.03998856 146.023625616 3503.25367783 252.771931238 3504.42709758 84.5929969083 3505.62278811 302.117846101 3506.80266051 22.1553087141 3507.99569889 173.214231765 3509.17133942 401.816735315 3510.34830777 60.4235692202 3511.52403509 91.6424133174 3512.70381687 54.3812122982 3516.24591817 32.2259035841 3517.42094698 107.755365109 3518.60160147 20.1411897401 3519.78390314 49.3459148632 3520.95917622 79.5576994733 3522.13988466 170.193053304 3523.32138342 250.757812264 3524.50954655 167.171874843 3525.69114735 224.574265602 3526.86687702 155.087160999 3528.04696877 244.715455342 3529.22318347 11.077654357 3530.39983423 42.2964984542 3531.57540056 260.828407134 3532.76049191 110.77654357 3533.94306073 240.687217394 3535.11849157 248.74369329 3536.29496639 62.4376881942 3537.47878621 95.6706512654 3538.6654652 144.009506642 3539.84547103 330.315511737 3541.020384 333.336690198 3542.19539257 288.019013283 3543.37717724 435.049698386 3544.5553526 237.666038933 3545.72907117 257.807228673 3546.90498119 28.1976656361 3548.08757024 188.32012407 3549.26606114 78.5506399863 3550.44647605 143.002447155 3551.62673759 49.3459148632 3552.80781201 280.969596874 3555.16821661 134.945971259 3556.35726183 62.4376881942 3558.73086585 118.833019466 3561.09182763 112.790662544 3562.28022066 46.3247364022 3564.65620646 353.477879938 3565.83991103 198.39071894 3567.02503375 234.644860472 3568.19889806 170.193053304 3569.38180177 136.960090233 3570.55757748 125.882435875 3571.73236084 110.77654357 3572.91104147 123.868316901 3574.08820542 186.306005096 3576.45272577 166.164815356 3577.63388992 198.39071894 3578.81038116 240.687217394 3579.98661698 124.875376388 3581.17239951 208.46131381 3582.3511778 486.409732223 3583.53150825 231.623682011 3584.71341432 106.748305622 3585.88914898 193.355421505 3587.06434669 244.715455342 3588.23897052 309.16726251 3589.41419082 73.5153425513 3590.59110961 191.341302531 3591.76533872 136.960090233 3592.94794772 40.2823794802 3594.13290212 196.376599966 3595.31169682 83.5859374213 3596.49563922 119.840078953 3597.67799367 53.3741528112 3598.86825588 128.903614336 3600.04354538 179.256588687 3601.22187294 9.06353538304 3602.40361949 394.767318906 3603.57959461 266.870764056 3604.76465047 284.997834822 3605.9413722 274.927239952 3607.12354161 346.428463529 3608.29850854 123.868316901 3609.47437223 96.6777107524 3610.6491418 135.953030746 3611.82611455 11.077654357 3613.00577522 317.223738406 3614.18089317 375.633188652 3615.35652519 654.588666553 3616.53138684 545.826241956 3617.70678455 1433.04565001 3618.88272565 1510.58923051 3620.05835943 1480.3774459 3621.23413426 1573.0269187 3622.40972288 2010.09073606 3623.58534082 1545.83631255 3624.76054704 1365.57266438 3625.93848868 1113.80779263 3627.11438345 823.774660369 3628.28997735 898.297062407 3629.46561963 152.065982538 3630.64144226 587.115680923 3631.81857219 529.713290164 3632.99452883 423.972044029 3634.16829373 516.621516833 3635.34361285 206.447194836 3636.51921613 234.644860472 3637.69622525 469.289720944 3638.87123382 112.790662544 3640.04705234 288.019013283 3641.22254565 540.790944521 3642.39909788 99.6988892134 3643.57451671 431.021460438 3644.74916781 252.771931238 3645.92497959 544.819182469 3647.10044563 395.774378393 3648.27577266 299.09666764 3649.45142022 35.2470820451 3650.62708098 177.242469713 3651.80251066 62.4376881942 3652.97673508 41.2894389672 3654.15307295 140.988328181 3655.32844925 263.849585595 3657.68726327 412.894389672 3658.86262667 234.644860472 3660.03822526 159.115398947 3661.21295114 325.280214302 3662.38832304 578.05214554 3663.56457763 522.663873755 3664.73941025 790.541697298 3665.91403114 964.76298855 3667.08954557 805.647589603 3668.26554121 519.642695294 3669.44092426 616.320406046 3670.6154522 836.8664337 3671.790698 1016.12302239 3672.96684116 266.870764056 3674.14282448 286.004894309 3675.31851251 524.677992729 3676.49410963 607.256870663 3677.66914694 1157.11135057 3678.84480652 1707.97288996 3680.02007872 2653.60174826 3681.19477235 2553.90285904 3682.39426074 1902.33537095 3683.57073556 1742.21291252 3684.74576319 1017.13008187 3685.94021093 1079.56777007 3687.15028063 219.538968167 3688.35972776 41.2894389672 3689.57333316 299.09666764 3690.78201667 356.499058399 3691.95774106 175.228350739 3693.14110546 742.202841922 3694.34032143 597.186275793 3695.53569525 544.819182469 3696.74177501 206.447194836 3697.93744061 557.9109558 3699.12880719 589.129799897 3700.30390344 11.077654357 3701.49934882 52.3670933242 3702.70916427 203.426016375 3703.90582809 342.400225581 3705.10655136 564.960372209 3706.30453686 979.868880855 3707.49352372 121.854197927 3708.6724759 410.880270698 3709.87533549 95.6706512654 3711.08316594 43.3035579412 3712.2823561 60.4235692202 3713.50761521 196.376599966 3715.87936678 157.101279973 3717.09779935 44.3106174282 3718.30393804 196.376599966 3719.50467187 80.5647589603 3720.70606756 130.917733311 3721.90391024 193.355421505 3723.07917277 256.800169186 3724.26457584 220.546027654 3725.46029393 286.004894309 3726.6706475 226.588384576 3729.06339803 77.5435804993 3730.27068978 396.78143788 3731.44647722 306.146084049 3732.63074366 209.468373297 3733.83189126 503.529743502 3735.03595375 314.202559945 3736.23924441 376.640248139 3737.43046701 231.623682011 3738.61170184 74.5224020383 3739.81442917 291.040191744 3741.02485868 104.734186648 3742.2336158 152.065982538 3745.8311294 35.2470820451 3747.04256563 11.077654357 3749.4274659 9.06353538304 3750.62607191 118.833019466 3751.82320933 173.214231765 3753.02255199 92.6494728044 3754.21492939 44.3106174282 3756.58630942 152.065982538 3757.79860135 376.640248139 3758.99595725 9.06353538304 3760.19730631 96.6777107524 3761.39960579 128.903614336 3762.60147654 76.5365210123 3763.80839469 154.080101512 3764.99931905 184.291886122 3766.20007077 25.1764871751 3767.40938945 519.642695294 3768.60905468 419.943806081 3769.82073079 1757.31880482 3771.04749984 4150.09214594 3772.22255005 1117.83603057 3773.42707177 4872.15379812 3774.62851115 4615.35362894 3775.84495725 3989.96968751 3777.05359179 1483.39862436 3778.27026662 701.920462442 3779.4736828 192.348362018 3780.66859036 343.407285068 3781.87511027 105.741246135 3783.08106921 249.750752777 3784.29649099 154.080101512 3785.49747877 23.1623682011 3786.70186002 302.117846101 3787.89369844 198.39071894 3789.09506862 123.868316901 3790.2929245 203.426016375 3791.49021705 14.0988328181 3792.68270032 84.5929969083 3793.87990695 188.32012407 3795.24931663 248.74369329 3796.45546559 271.906061491 3797.66252098 187.313064583 3798.86638495 371.604950704 3800.06983396 198.39071894 3801.27508177 100.7059487 3802.45150321 306.146084049 3803.63308906 425.986163003 3804.81342596 80.5647589603 3806.03217729 128.903614336 3808.43913603 175.228350739 3810.82540313 23.1623682011 3812.00152018 75.5294615253 3813.20223641 249.750752777 3814.3842202 68.4800451163 3815.56567408 183.284826635 3816.75354513 251.764871751 3817.95588919 210.475432784 3819.13345108 173.214231765 3821.51083244 86.6071158823 3822.71190262 127.896554849 3823.90092732 96.6777107524 3825.10675165 238.67309842 3826.29191865 115.811841005 3827.46907029 47.3317958892 3828.66747894 173.214231765 3829.86302549 130.917733311 3831.06654283 392.753199932 3832.26832092 282.983715848 3835.84049137 412.894389672 3837.03640389 287.011953796 3838.23500257 386.710843009 3839.44827894 355.491998912 3840.65088399 383.689664548 3841.84931024 959.727691115 3843.05385747 1583.09751357 3844.24944537 2225.60146628 3845.42807556 2002.03426016 3846.61901018 2116.83904168 3847.81784434 2459.23926726 3849.01567794 2233.65794217 3850.20502784 1652.58461817 3851.37963144 1258.82435875 3852.5828441 1303.13497618 3853.78262486 768.386388584 3854.98025993 866.071158823 3856.1725001 490.437970171 3857.37830859 358.513177373 3859.7588808 28.1976656361 3860.95808386 36.2541415321 3863.37151108 25.1764871751 3864.57728498 10.07059487 3865.78123486 273.920180465 3866.96723294 193.355421505 3868.14759476 253.778990725 3869.32383234 425.986163003 3870.52134424 585.101561949 3871.71774062 380.668486087 3872.91672317 167.171874843 3874.11356118 114.804781518 3875.28981166 76.5365210123 3876.46628589 50.3529743502 3877.66559746 131.924792798 3880.05730139 136.960090233 3881.26453713 180.263648174 3882.46795917 288.019013283 3884.83398212 186.306005096 3886.02861461 102.720067674 3887.21792317 27.1906061491 3888.41784 67.4729856293 3889.59622064 207.454254323 3890.78611423 117.825959979 3891.98928144 62.4376881942 3893.18481391 398.795556854 3894.39292939 151.058923051 3895.59265796 66.4659261423 3896.78771684 98.6918297264 3902.75933035 69.4871046033 3903.95398454 271.906061491 3905.15693474 63.4447476812 3906.35293465 147.030685103 3907.5340167 129.910673824 3908.74084482 119.840078953 3909.94756415 165.157755869 3911.14557223 140.988328181 3912.35491818 170.193053304 3913.55640654 55.3882717852 3914.74002607 55.3882717852 3917.11926692 276.941358926 3918.31358681 9.06353538304 3919.51730884 132.931852285 3920.71891157 116.818900492 3921.90482254 53.3741528112 3926.6580334 93.6565322914 3927.86530784 335.350809172 3929.06270333 161.129517921 3930.2548781 198.39071894 3931.43125467 131.924792798 3933.79593484 129.910673824 3934.99238929 258.81428816 3936.18494998 132.931852285 3937.38197039 498.494446067 3938.57502726 457.2050071 3939.77430979 681.779272702 3940.95083358 647.539250144 3942.13818646 893.261764972 3943.35171737 793.562875759 3944.55184124 154.080101512 3945.74337057 252.771931238 3946.91903602 98.6918297264 3948.09385281 40.2823794802 3950.47827625 180.263648174 3951.68054318 29.2047251231 3952.87756477 485.402672736 3954.07610656 84.5929969083 3955.25705664 331.322571224 3956.46768469 148.03774459 3957.67079823 20.1411897401 3958.87481439 151.058923051 3961.2877208 51.3600338372 3962.48910446 159.115398947 3963.66822379 264.856645082 3964.85643384 244.715455342 3966.03133156 404.837913776 3967.22720479 650.560428605 3968.42493663 548.847420417 3969.61504135 479.360315814 3970.79532195 107.755365109 3971.97083491 623.369822455 3973.17064735 223.567206115 3974.36206906 104.734186648 3975.55078701 24.1694276881 3976.73492764 160.122458434 3977.93039589 139.981268694 3979.13187105 256.800169186 3981.49579816 57.4023907592 3982.67018534 223.567206115 3983.86204193 79.5576994733 3985.0369118 191.341302531 3987.4086229 14.0988328181 3988.58363118 248.74369329 3990.9783154 342.400225581 3992.167331 94.6635917784 3993.36332299 67.4729856293 3994.56476003 30.2117846101 3998.11097795 83.5859374213 3999.29879563 155.087160999 4000.49314836 81.5718184473 4001.69013857 24.1694276881 4002.86570197 188.32012407 4004.04067477 133.938911772 4005.22683647 151.058923051 4006.41145598 180.263648174 4007.59185241 305.139024562 4008.778866 422.964984542 4009.95370361 268.88488303 4011.13009103 379.6614266 4012.30994466 290.033132257 4013.50534194 308.160203023 4014.68631226 322.259035841 4015.88056969 155.087160999 4017.07943083 210.475432784 4018.26878132 104.734186648 4019.44548076 152.065982538 4021.81475438 37.2612010191 4023.00110582 122.861257414 4026.59426115 104.734186648 4027.76939611 203.426016375 4030.14999559 23.1623682011 4031.33957335 91.6424133174 4032.52868397 189.327183557 4033.73280775 159.115398947 4034.92747484 43.3035579412 4036.1230903 400.809675828 4037.29830649 105.741246135 4039.67606673 85.6000563953 4040.87213908 316.216678919 4043.25286876 260.828407134 4044.42853948 270.899002004 4045.6031202 453.176769152 4046.77895632 44.3106174282 4047.95477367 10.07059487 4049.1444526 91.6424133174 4050.33242952 49.3459148632 4051.51132569 357.506117886 4053.86166716 104.734186648 4055.03625932 567.98155067 4056.21291624 67.4729856293 4057.3875345 132.931852285 4058.56251667 96.6777107524 4059.73833725 144.009506642 4060.92345763 211.482492271 4063.28257047 207.454254323 4064.45910657 320.244916867 4065.63385239 218.53190868 4069.16044522 58.4094502462 4070.336179 102.720067674 4071.51200075 171.200112791 4072.68838465 147.030685103 4073.86378911 58.4094502462 4075.03887686 234.644860472 4076.22032488 239.680157907 4077.40469982 542.805063495 4078.58085118 765.365210123 4079.75868549 368.583772243 4080.9406555 410.880270698 4082.12463045 396.78143788 4083.3048216 284.997834822 4084.48165741 409.873211211 4085.65824805 206.447194836 4086.83432229 270.899002004 4088.01064139 149.044804077 4089.18895429 251.764871751 4090.36402503 167.171874843 4091.53990015 306.146084049 4092.71454392 211.482492271 4093.8901906 260.828407134 4095.06649386 33.2329630711 4096.24719468 239.680157907 4098.59877015 104.734186648 4099.77340043 27.1906061491 4100.9491952 316.216678919 4102.12474921 165.157755869 4103.30182988 179.256588687 4104.47821936 339.37904712 4106.83106488 50.3529743502 4108.00640013 179.256588687 4109.18158993 225.581325089 4110.36060985 81.5718184473 4111.53938374 162.136577408 4112.7173421 469.289720944 4113.89381251 381.675545574 4115.06813429 239.680157907 4116.24373816 303.124905588 4117.42294781 608.26393015 4118.59997159 775.435804993 4119.77611327 540.790944521 4120.95633288 46.3247364022 4122.13510266 329.30845225 4123.31027281 54.3812122982 4124.48625702 145.016566129 4125.66151221 172.207172278 4128.01288064 111.783603057 4129.19052288 168.17893433 4130.36518923 154.080101512 4131.54026466 272.913120978 4132.71561633 222.560146628 4133.89484387 315.209619432 4135.07049143 371.604950704 4136.24910373 127.896554849 4137.42444954 215.510730219 4138.60185102 274.927239952 4139.78090584 194.362480992 4140.95540093 9.06353538304 4142.12986142 33.2329630711 4143.31056635 112.790662544 4144.49074196 173.214231765 4145.66538925 130.917733311 4146.84342591 82.5788779343 4148.01766441 62.4376881942 4149.19360785 249.750752777 4150.36906686 101.713008187 4151.54791845 266.870764056 4152.72435162 216.517789706 4153.90150003 136.960090233 4155.07699422 366.569653269 4156.25393442 381.675545574 4157.43226726 771.407567045 4158.6075943 695.87810552 4159.78261343 748.245198844 4160.95825981 432.028519925 4162.13483463 418.936746594 4163.31029421 461.233245048 4164.48605614 634.447476812 4165.66750533 619.341584507 4166.84329336 194.362480992 4168.01858081 320.244916867 4170.36883226 30.2117846101 4171.54409771 126.889495362 4172.72009424 138.974209207 4173.89441338 45.3176769152 4176.2460994 58.4094502462 4177.42337038 308.160203023 4179.77405408 132.931852285 4180.95100572 29.2047251231 4184.47694636 113.797722031 4185.65308629 61.4306287072 4188.00389315 104.734186648 4189.17936358 50.3529743502 4190.35640584 33.2329630711 4191.53157452 188.32012407 4192.70649717 45.3176769152 4193.8825022 72.5082830643 4196.23381139 89.6282943433 4197.40775576 9.06353538304 4198.58244469 97.6847702394 4200.93472102 62.4376881942 4202.10972402 9.06353538304 4203.28507569 125.882435875 4204.46008866 71.5012235773 4205.63619897 60.4235692202 4206.81105475 76.5365210123 4209.16136221 98.6918297264 4210.33739774 128.903614336 4211.51442562 83.5859374213 4212.69003125 9.06353538304 4213.8646451 178.2495292 4215.04062697 108.762424596 4216.21569917 154.080101512 4217.39092035 68.4800451163 4222.09554925 74.5224020383 4224.44578486 105.741246135 4226.79579496 220.546027654 4227.97220937 110.77654357 4229.14736427 144.009506642 4230.32332707 211.482492271 4231.49874238 83.5859374213 4232.67367822 361.534355834 4233.84936742 190.334243044 4235.02364199 514.607397859 4236.19942591 88.6212348563 4237.3814141 158.10833946 4239.78017477 510.579159911 4240.98437656 185.298945609 4242.18092924 91.6424133174 4243.35654102 26.1835466621 4244.54710146 264.856645082 4245.73970086 85.6000563953 4246.91499329 409.873211211 4248.10557836 179.256588687 4249.28913924 767.379329097 4250.46479589 794.569935246 4251.64051266 1729.12113919 4252.82387471 865.064099336 4254.01650461 1189.33725415 4255.20560203 984.90417829 4256.39179511 1506.56099256 4257.56804823 906.353538304 4258.74381895 1058.41952084 4259.91846155 640.489833734 4261.12117333 333.336690198 4262.30814792 483.388553762 4263.49567587 155.087160999 4264.69512644 194.362480992 4265.89263952 72.5082830643 4267.06769882 263.849585595 4268.24341823 78.5506399863 4269.42718848 124.875376388 4270.61535191 190.334243044 4271.80842167 194.362480992 4272.99633202 188.32012407 4274.17332002 184.291886122 4275.35046491 102.720067674 4276.52619458 76.5365210123 4280.09261412 92.6494728044 4281.28093707 89.6282943433 4282.46902835 109.769484083 4283.64749902 50.3529743502 4284.85248788 212.489551758 4286.04066128 492.452089145 4287.23297299 320.244916867 4288.42324869 252.771931238 4289.60746204 179.256588687 4290.7838307 48.3388553762 4297.89034279 32.2259035841 4299.07886544 357.506117886 4300.25453588 67.4729856293 4301.45343719 110.77654357 4302.64840516 63.4447476812 4303.84511854 265.863704569 4305.04170466 157.101279973 4306.23228826 35.2470820451 4307.42855825 90.6353538304 4308.60522661 290.033132257 4309.7976568 81.5718184473 4310.99444907 105.741246135 4312.17600882 73.5153425513 4313.36545989 126.889495362 4315.75855031 44.3106174282 4316.95984365 134.945971259 4318.15662741 87.6141753693 4319.36170015 171.200112791 4320.53763158 63.4447476812 4322.89827987 88.6212348563 4324.07412185 53.3741528112 4325.24816211 18.1270707661 4326.43888853 232.630741498 4327.63012813 93.6565322914 4330.02556834 255.793109699 4331.20238069 38.2682605061 4332.37589017 97.6847702394 4334.7675592 56.3953312722 4335.94253904 86.6071158823 4337.12830808 228.60250355 4338.32083768 371.604950704 4339.49718464 615.313346559 4340.68689348 677.751034754 4341.88577573 298.089608153 4345.4490628 292.047251231 4346.63585616 11.077654357 4347.81755227 246.729574316 4348.99300101 384.696724035 4350.19058475 386.710843009 4351.39333378 61.4306287072 4352.59601214 250.757812264 4353.78886227 46.3247364022 4354.96593883 129.910673824 4356.1574925 195.369540479 4357.34528144 322.259035841 4358.53829138 95.6706512654 4359.72281148 88.6212348563 4360.91705718 55.3882717852 4362.10210219 266.870764056 4363.29015945 42.2964984542 4365.64396185 51.3600338372 4366.82337238 83.5859374213 4368.01087394 20.1411897401 4370.38844797 322.259035841 4371.56587555 12.084713844 4372.764015 286.004894309 4373.96196296 317.223738406 4375.1584567 248.74369329 4376.33268024 714.005176286 4377.50963423 534.748587599 4378.684912 258.81428816 4379.86053229 381.675545574 4381.03633937 249.750752777 4382.2263749 316.216678919 4383.41741303 126.889495362 4384.60671338 81.5718184473 4386.96559309 104.734186648 4388.15014515 138.974209207 4389.32645809 65.4588666553 4390.52459373 162.136577408 4391.71439377 135.953030746 4392.8891522 23.1623682011 4395.25060693 39.2753199932 4396.43387749 82.5788779343 4397.61690202 264.856645082 4398.80835071 99.6988892134 4402.36337841 148.03774459 4404.71467529 69.4871046033 4405.91066552 81.5718184473 4409.47715721 85.6000563953 4410.67604269 60.4235692202 4414.21767948 25.1764871751 4415.41497526 55.3882717852 4416.60369702 207.454254323 4417.80499858 84.5929969083 4418.97959748 182.277767148 4420.17470269 352.470820451 4421.34912476 182.277767148 4422.53136133 1510.58923051 4423.73301038 1494.47627871 4424.90808142 2100.72608989 4426.11281868 1970.81541607 4427.32729737 2483.40869495 4428.5111946 3441.12226709 4429.6875659 3352.50103224 4430.87430003 2830.84421797 4432.05078745 1908.37772787 4433.25002923 1008.06654649 4434.43603668 546.833301443 4435.62379542 416.92262762 4436.80045527 290.033132257 4437.97635239 137.96714972 4440.33757779 123.868316901 4441.51512707 253.778990725 4442.69870731 244.715455342 4443.87565836 352.470820451 4445.05184843 64.4518071682 4446.22688808 337.364928146 4447.41093048 107.755365109 4448.59695025 74.5224020383 4449.77365555 63.4447476812 4453.32051159 188.32012407 4456.84753726 91.6424133174 4458.03081369 82.5788779343 4460.38567236 37.2612010191 4462.7373622 71.5012235773 4465.09511172 154.080101512 4466.27112379 122.861257414 4467.45042582 61.4306287072 4468.62640064 68.4800451163 4470.98794833 90.6353538304 4472.17138546 96.6777107524 4473.35282321 339.37904712 4474.52742212 116.818900492 4475.70259901 267.877823543 4476.87816006 66.4659261423 4478.05932217 235.651919959 4479.23507881 152.065982538 4480.41795115 10.07059487 4481.59824641 68.4800451163 4482.7773458 89.6282943433 4483.95472294 88.6212348563 4485.13465428 144.009506642 4487.48993406 68.4800451163 4488.68114258 48.3388553762 4489.85794407 123.868316901 4491.03720915 56.3953312722 4492.21297518 129.910673824 4494.56600223 296.075489179 4495.74036976 50.3529743502 4496.92593675 169.185993817 4498.12456534 123.868316901 4499.31474632 274.927239952 4500.49038684 86.6071158823 4501.66585493 95.6706512654 4502.84123446 240.687217394 4504.03869358 208.46131381 4505.22023221 233.637800985 4506.39587127 273.920180465 4507.58721937 123.868316901 4508.77021399 66.4659261423 4509.95321271 78.5506399863 4511.12727731 234.644860472 4512.30595912 420.950865568 4513.48302747 402.823794802 4514.67213397 357.506117886 4515.84736365 45.3176769152 4517.02994479 311.181381484 4518.21368221 546.833301443 4519.39075554 99.6988892134 4520.5776706 176.235410226 4521.76070862 329.30845225 4522.94289181 404.837913776 4524.13627741 111.783603057 4526.50974801 123.868316901 4527.68391642 170.193053304 4528.87109218 115.811841005 4530.0719263 180.263648174 4531.25086235 220.546027654 4532.42654862 193.355421505 4533.60103374 179.256588687 4534.77712146 93.6565322914 4535.95310215 125.882435875 4537.128989 199.397778427 4538.30333043 224.574265602 4539.48052253 250.757812264 4540.65655366 272.913120978 4541.834222 166.164815356 4543.00998539 55.3882717852 4544.18497285 50.3529743502 4545.36191891 449.148531204 4546.53672456 225.581325089 4547.71266331 143.002447155 4550.06329452 219.538968167 4551.23918254 20.1411897401 4552.41397264 28.1976656361 4553.58933018 20.1411897401 4554.765822 12.084713844 4555.94162029 86.6071158823 4558.29385263 118.833019466 4559.47064709 210.475432784 4560.64824651 143.002447155 4561.82232636 244.715455342 4562.99911964 268.88488303 4566.52418963 107.755365109 4567.7005404 138.974209207 4568.87645482 101.713008187 4571.22675407 9.06353538304 4573.5781093 116.818900492 4574.7637889 51.3600338372 4577.11737078 238.67309842 4578.29246028 138.974209207 4579.46853071 430.014400951 4580.64532106 284.997834822 4581.82087478 384.696724035 4582.99646134 205.440135349 4584.17174967 88.6212348563 4585.34692657 175.228350739 4586.52330842 70.4941640903 4587.69948823 71.5012235773 4590.04958777 11.077654357 4597.10156789 97.6847702394 4599.45157389 118.833019466 4600.62755018 116.818900492 4602.97888547 131.924792798 4604.15311488 107.755365109 4605.32919205 108.762424596 4606.50374344 61.4306287072 4607.67886814 203.426016375 4611.2047821 49.3459148632 4612.38072408 133.938911772 4614.73136614 109.769484083 4615.90570082 24.1694276881 4617.08309702 227.595444063 4619.43399596 316.216678919 4621.7853207 140.988328181 4622.95991022 98.6918297264 4624.13530265 118.833019466 4625.31023791 331.322571224 4627.66086501 479.360315814 4628.83624806 258.81428816 4630.01213637 342.400225581 4631.18956307 283.990775335 4632.36491123 216.517789706 4638.24204934 62.4376881942 4640.59197381 253.778990725 4641.7661041 74.5224020383 4642.94246836 289.02607277 4644.11809745 53.3741528112 4645.29395292 198.39071894 4646.46809787 456.197947613 4647.64410701 133.938911772 4648.81976014 325.280214302 4649.9947256 588.12274041 4651.16960368 355.491998912 4653.5238134 317.223738406 4654.71545768 101.713008187 4655.89185302 205.440135349 4657.07087001 134.945971259 4658.25997799 143.002447155 4659.44189316 64.4518071682 4660.61813044 311.181381484 4668.86201642 121.854197927 4670.03726252 9.06353538304 4671.21289102 226.588384576 4672.39235609 40.2823794802 4674.76455428 151.058923051 4675.94995647 158.10833946 4677.12571605 72.5082830643 4678.30148296 9.06353538304 4679.49555095 74.5224020383 4680.68821926 252.771931238 4684.22900592 231.623682011 4685.40512122 206.447194836 4686.58951697 459.219126074 4687.7739318 306.146084049 4688.95499478 313.195500458 4690.12922155 216.517789706 4691.31284988 181.270707661 4692.49093785 28.1976656361 4693.66624348 119.840078953 4697.20475512 9.06353538304 4698.37948745 194.362480992 4699.55679568 71.5012235773 4700.90284282 134.945971259 4702.07826076 64.4518071682 4703.25430919 47.3317958892 4707.95578303 58.4094502462 4710.30872475 40.2823794802 4711.49844825 101.713008187 4712.67284628 117.825959979 4713.84809502 155.087160999 4719.73478131 32.2259035841 4720.91271856 33.2329630711 4723.27241321 45.3176769152 4724.44858744 40.2823794802 4725.62967623 27.1906061491 4726.80439331 93.6565322914 4727.98030744 126.889495362 4729.15567084 313.195500458 4730.33278112 52.3670933242 4731.51139049 243.708395855 4732.68771487 349.44964199 4733.86285394 240.687217394 4735.03720416 57.4023907592 4736.21351652 50.3529743502 4737.38906848 20.1411897401 4738.56529081 108.762424596 4742.09081357 156.094220486 4745.62899443 322.259035841 4746.80525312 109.769484083 4747.98089481 94.6635917784 4749.15620748 90.6353538304 4750.33204331 176.235410226 4751.51040576 81.5718184473 4752.68629643 21.1482492271 4753.86603627 116.818900492 4755.04034691 203.426016375 4757.39227017 129.910673824 4758.56887372 21.1482492271 4760.92068818 148.03774459 4762.0963595 92.6494728044 4765.62437693 75.5294615253 4766.79980866 186.306005096 4767.97573891 11.077654357 4769.15142782 101.713008187 4770.32703198 92.6494728044 4771.50325958 191.341302531 4772.67831713 224.574265602 4773.85363918 89.6282943433 4775.02930873 108.762424596 4782.08018682 96.6777107524 4783.25508308 85.6000563953 4784.43124001 52.3670933242 4790.31129683 101.713008187 4791.48695876 21.1482492271 4792.66455378 48.3388553762 4795.01659024 46.3247364022 4796.19219586 65.4588666553 4797.3671622 45.3176769152 4799.71836847 41.2894389672 4802.06877006 81.5718184473 4803.24418654 104.734186648 4804.41948454 87.6141753693 4805.59465176 182.277767148 4806.76885214 254.786050212 4807.9452035 77.5435804993 4809.12193344 147.030685103 4810.29778774 172.207172278 4813.82353396 125.882435875 4814.99846599 122.861257414 4816.17329245 85.6000563953 4820.87732225 162.136577408 4822.05172995 239.680157907 4825.57778995 273.920180465 4827.92885898 45.3176769152 4829.10358837 170.193053304 4830.27944649 26.1835466621 4831.45555503 149.044804077 4832.63265241 85.6000563953 4836.15726611 79.5576994733 4839.68355778 111.783603057 4846.73710414 82.5788779343 4847.91332969 108.762424596 4849.08870072 138.974209207 4850.26358055 141.995387668 4851.43846713 110.77654357 4852.61557126 139.981268694 4854.97046073 61.4306287072 4856.14506256 55.3882717852 4858.49767671 258.81428816 4860.84836334 105.741246135 4862.02313321 111.783603057 4866.72806591 153.073042025 4867.90485802 71.5012235773 4869.07931411 62.4376881942 4870.25471358 118.833019466 4872.60656265 229.609563037 4879.65958116 117.825959979 4880.83414663 57.4023907592 4884.3600647 68.4800451163 4887.88676721 131.924792798 4889.06344788 200.404837914 4893.76467569 51.3600338372 4894.94037838 105.741246135 4901.9918198 131.924792798 4903.16859314 195.369540479 4907.87087136 83.5859374213 4909.04751685 102.720067674 4910.22284418 153.073042025 4911.39777797 51.3600338372 4912.57358711 353.477879938 4913.74901385 248.74369329 4916.09974593 354.484939425 4917.27743597 115.811841005 4918.45198062 60.4235692202 4919.62690093 79.5576994733 4920.80252854 204.433075862 4921.97795939 129.910673824 4923.15266592 127.896554849 4924.32834427 82.5788779343 4925.50350621 220.546027654 4927.85400691 37.2612010191 4930.20546772 125.882435875 4931.37946605 61.4306287072 4932.55496141 177.242469713 4934.90603219 231.623682011 4936.08086775 116.818900492 4937.25673671 56.3953312722 4938.43334436 65.4588666553 4944.30774852 53.3741528112 4946.65845128 201.411897401 4949.00939802 54.3812122982 4950.18541331 129.910673824 4951.36048405 48.3388553762 4952.53696267 174.221291252 4957.23801981 160.122458434 4958.41421574 72.5082830643 4959.5894463 64.4518071682 4960.76447657 177.242469713 4961.94026753 190.334243044 4963.11497493 229.609563037 4964.29122101 98.6918297264 4966.64321289 135.953030746 4968.99356932 90.6353538304 4974.87052738 141.995387668 4976.04534798 121.854197927 4978.39697652 66.4659261423 4979.57242057 88.6212348563 4981.92414002 70.4941640903 4983.1001254 256.800169186 4984.28567333 135.953030746 4985.46186809 250.757812264 4986.63660776 82.5788779343 4987.81211631 75.5294615253 4988.98718969 76.5365210123 4990.16420174 158.10833946 4991.33841238 144.009506642 4993.68964533 72.5082830643 4996.04071993 77.5435804993 4997.21581119 11.077654357 4998.39336135 117.825959979 4999.56778606 34.2400225581 5001.91918264 119.840078953 5007.79739112 136.960090233 5008.97241406 9.06353538304 5011.32304409 124.875376388 5013.67414566 92.6494728044 5014.84889852 59.4165097332 5018.37582565 72.5082830643 5019.55079493 81.5718184473 5021.90186513 95.6706512654 5023.07663441 75.5294615253 5024.25302301 100.7059487 5030.12840896 139.981268694 5033.65506073 24.1694276881 5039.53320528 44.3106174282 5040.70832939 92.6494728044 5041.8834362 59.4165097332 5043.05929489 238.67309842 5044.23483424 107.755365109 5052.46452581 10.07059487 5059.51713905 71.5012235773 5061.86743126 75.5294615253 5064.21806305 235.651919959 5067.74455794 44.3106174282 5068.91948264 55.3882717852 5074.79718907 100.7059487 5078.32351798 293.054310718 5081.8489991 9.06353538304 5087.72578239 37.2612010191 5088.90223257 108.762424596 5091.25274178 65.4588666553 5092.42821339 23.1623682011 5099.48030113 41.2894389672 5103.00780567 13.0917733311 5104.18212218 143.002447155 5106.53315601 193.355421505 5107.71079913 135.953030746 5111.234402 92.6494728044 5112.4102692 50.3529743502 5114.76086815 99.6988892134 5115.93668608 128.903614336 5131.21815718 21.1482492271 5132.39503961 92.6494728044 5138.27317565 223.567206115 5141.799516 72.5082830643 5148.85361601 52.3670933242 5150.02913601 125.882435875 5151.20478503 131.924792798 5153.55560656 40.2823794802 5155.90789286 36.2541415321 5159.43327223 89.6282943433 5161.78363305 177.242469713 5162.95908854 79.5576994733 5168.8360856 65.4588666553 5171.18835929 118.833019466 5172.36315085 81.5718184473 5174.71361696 19.1341302531 5175.88983401 224.574265602 5181.76644662 128.903614336 5182.94292906 60.4235692202 5185.29429192 126.889495362 5187.6437771 21.1482492271 5188.82105806 113.797722031 5194.69885569 111.783603057 5197.04951827 22.1553087141 5200.5772234 60.4235692202 5201.7514921 122.861257414 5205.27928315 120.84713844 5217.03697543 166.164815356 5218.21450741 274.927239952 5219.38942302 96.6777107524 5220.56378556 9.06353538304 5222.91440239 44.3106174282 5226.44182864 137.96714972 5232.31783921 130.917733311 5235.84624784 111.783603057 5237.02129248 21.1482492271 5238.19695031 86.6071158823 5240.54824103 86.6071158823 5242.89936811 24.1694276881 5246.42440702 21.1482492271 5249.95110249 96.6777107524 5252.30097594 95.6706512654 5254.65121448 113.797722031 5255.82750543 82.5788779343 5258.17811669 139.981268694 5259.35371645 75.5294615253 5264.05499675 92.6494728044 5267.58139574 188.32012407 5268.75598497 152.065982538 5272.2823086 116.818900492 5274.6336697 23.1623682011 5278.15945228 94.6635917784 5279.33466114 37.2612010191 5281.68633719 79.5576994733 5285.21223033 72.5082830643 5291.08974732 162.136577408 5300.49361258 253.778990725 5302.846293 50.3529743502 5304.02103178 118.833019466 5305.1965899 155.087160999 5306.3719102 73.5153425513 5308.7217596 71.5012235773 5311.07241837 9.06353538304 5312.24912162 112.790662544 5313.42464103 55.3882717852 5324.00383479 54.3812122982 5327.53040739 21.1482492271 5334.58352561 21.1482492271 5336.93360228 56.3953312722 5341.6360066 114.804781518 5342.81191192 201.411897401 5346.33990648 96.6777107524 5355.7414797 30.2117846101 5360.44377845 125.882435875 5361.61855858 132.931852285 5367.49712511 162.136577408 5369.84816686 69.4871046033 5371.02290858 261.835466621 5381.60329058 70.4941640903 5382.778866 89.6282943433 5385.12875587 125.882435875 5389.8301869 99.6988892134 5393.35684893 10.07059487 5394.53248418 150.051863564 5398.06129133 65.4588666553 5403.93913324 94.6635917784 5408.64178448 59.4165097332 5420.39649677 59.4165097332 5427.44881852 131.924792798 5429.79988197 149.044804077 5430.97626823 112.790662544 5432.15136653 97.6847702394 5433.32611909 258.81428816 5434.50231004 9.06353538304 5436.85266794 129.910673824 5438.02707212 93.6565322914 5439.20260854 136.960090233 5441.55373563 40.2823794802 5445.08018917 27.1906061491 5448.60635122 42.2964984542 5453.30765556 19.1341302531 5460.36064094 10.07059487 5461.53610433 45.3176769152 5465.06170833 124.875376388 5466.23702159 21.1482492271 5467.41236945 38.2682605061 5469.76394872 12.084713844 5472.11435295 10.07059487 5481.51646751 43.3035579412 5485.04236095 95.6706512654 5501.49858813 91.6424133174 5503.84901142 70.4941640903 5505.0241109 65.4588666553 5512.07713205 33.2329630711 5513.25218842 74.5224020383 5516.77818684 63.4447476812 5517.95291682 9.06353538304 5519.12859488 37.2612010191 5520.30438642 50.3529743502 5525.00560836 26.1835466621 5526.17992017 9.06353538304 5544.98997321 92.6494728044 5546.16519145 11.077654357 5547.33974549 119.840078953 5548.5165464 89.6282943433 5550.86754856 18.1270707661 5559.09689937 49.3459148632 5563.79734566 21.1482492271 5564.97219001 40.2823794802 5566.14830149 80.5647589603 5567.32381211 136.960090233 5568.50027607 246.729574316 5569.67627201 445.120293256 5570.85057062 602.221573228 5572.02598769 650.560428605 5573.20210474 575.030967079 5574.37744028 462.240304535 5575.55289899 450.155590691 5576.72892543 238.67309842 5577.90382843 53.3741528112 5579.07893846 97.6847702394 5580.25409542 76.5365210123 5581.42881602 9.06353538304 5588.48461218 95.6706512654 5594.36140837 66.4659261423 5595.53609935 59.4165097332 5596.71211142 203.426016375 5607.43317721 78.5506399863 5608.60864677 35.2470820451 5610.95947621 160.122458434 5612.13450971 257.807228673 5613.30998806 229.609563037 5614.48513006 140.988328181 5615.66209372 86.6071158823 5620.36248694 103.727127161 5626.2401919 25.1764871751 5629.7662736 175.228350739 5641.52244774 68.4800451163 5643.87409505 21.1482492271 5647.39973365 87.6141753693 5648.57591228 91.6424133174 5653.27620257 34.2400225581 5660.33056035 89.6282943433 5661.50645776 123.868316901 5665.03154036 70.4941640903 5674.43709443 92.6494728044 5679.13919025 221.553087141 5680.31471641 105.741246135 5682.66565083 170.193053304 5683.84267109 49.3459148632 5687.3678748 56.3953312722 5701.47524464 11.077654357 5707.35202001 58.4094502462 5710.8791923 46.3247364022 5713.23048654 114.804781518 5715.58079223 93.6565322914 5719.10780588 19.1341302531 5726.16140649 81.5718184473 5728.51091836 85.6000563953 5736.73941582 92.6494728044 5739.08949894 88.6212348563 5740.26491043 55.3882717852 5743.79128509 124.875376388 5748.49348677 85.6000563953 5762.60146921 106.748305622 5764.95181362 46.3247364022 5782.58787302 74.5224020383 5786.11321104 73.5153425513 5791.99053009 74.5224020383 5794.34106335 81.5718184473 5799.04379611 54.3812122982 5800.21856333 27.1906061491 5808.44664027 62.4376881942 5809.62239985 98.6918297264 5810.7975483 188.32012407 5820.20203993 33.2329630711 5827.25417782 123.868316901 5835.48430456 89.6282943433 5844.88982521 92.6494728044 5860.16896381 92.6494728044 5868.39745569 85.6000563953 5870.74816226 145.016566129 5889.55370806 139.981268694 5891.90420848 44.3106174282 5908.35998728 154.080101512 5909.53646415 247.736633803 5910.71103519 92.6494728044 5911.88796777 110.77654357 5914.23862507 20.1411897401 5935.39781844 54.3812122982 5967.13713135 139.981268694 5969.48919742 53.3741528112 5970.66436611 108.762424596 5978.89304273 117.825959979 6007.1065625 65.4588666553 6024.73847097 157.101279973 6044.72054936 72.5082830643 6045.89572948 20.1411897401 6062.35094144 82.5788779343 6067.05280354 10.07059487 6098.78882297 120.84713844 6111.71634124 73.5153425513 6141.10178167 80.5647589603 6148.15617933 47.3317958892 6155.20748615 127.896554849 6179.88978591 86.6071158823 6190.46882425 79.5576994733 6221.0291929 90.6353538304 6222.20636183 135.953030746 6223.38088068 370.597891217 6224.55654994 103.727127161 6225.73203885 81.5718184473 6235.13538066 119.840078953 6237.48536642 117.825959979 6239.83622489 56.3953312722 6266.87065905 121.854197927 6270.39701464 33.2329630711 6272.74877222 67.4729856293 6280.97637585 54.3812122982 6295.08044107 20.1411897401 6304.48578958 105.741246135 6327.99284265 57.4023907592 6331.52219671 37.2612010191 6336.22256794 58.4094502462 6362.0820771 80.5647589603 6372.66168669 64.4518071682 6437.31056195 82.5788779343 6447.89180992 136.960090233 6450.24242675 70.4941640903 6476.10072627 79.5576994733 6532.56717845 65.4588666553 6537.26924201 22.1553087141 6566.65424579 29.2047251231 6573.70541919 50.3529743502 6697.12351317 79.5576994733 6726.50738941 78.5506399863 6732.38326684 68.4800451163 6744.13675101 133.938911772 6812.30388673 117.825959979 6836.98669733 11.077654357 6919.26142957 90.6353538304 7020.33851384 115.811841005 7101.43600736 84.5929969083 1.72895269925 232.630741498 2.53687997823 207.454254323 3.71247680563 261.835466621 4.88697482957 22.1553087141 6.06210187231 55.3882717852 7.23746146138 655.59572604 8.41285506733 247.736633803 9.58855423857 226.588384576 10.7633924312 366.569653269 11.9391951193 166.164815356 14.2890597703 68.4800451163 15.4643489796 77.5435804993 16.6407012161 445.120293256 17.8159575816 50.3529743502 18.9913728879 121.854197927 20.1665550614 247.736633803 21.3420489585 64.4518071682 22.5173581088 165.157755869 23.6921464491 108.762424596 26.044840365 124.875376388 27.2191894185 81.5718184473 30.7460684619 148.03774459 31.9211931586 116.818900492 34.2727900306 120.84713844 35.447549046 77.5435804993 37.7980817179 119.840078953 40.1479120588 74.5224020383 41.3233250191 71.5012235773 42.4996074624 51.3600338372 44.8502817734 100.7059487 46.0248789155 202.418956888 48.3759197876 68.4800451163 49.5515084041 51.3600338372 50.7270732673 18.1270707661 51.9027739048 72.5082830643 54.2532144966 74.5224020383 55.4286919717 164.150696382 62.4795592112 227.595444063 64.8319648635 120.84713844 66.0081813257 49.3459148632 68.358170021 139.981268694 69.5336982282 43.3035579412 70.7083636972 46.3247364022 71.8843701932 119.840078953 73.0589664556 61.4306287072 76.5853123725 136.960090233 77.7619135772 88.6212348563 81.2875117096 105.741246135 84.8132860845 213.496611245 85.9880624016 140.988328181 87.1631768346 154.080101512 88.339177759 93.6565322914 90.6896121925 73.5153425513 91.8651245642 79.5576994733 93.0395721493 181.270707661 96.565663233 286.004894309 98.9166598246 197.383659453 100.091916483 574.023907592 101.267210678 146.023625616 102.442708387 33.2329630711 103.616948645 225.581325089 104.793241352 235.651919959 105.967985119 29.2047251231 107.142823018 93.6565322914 108.318525708 312.188440971 110.668754574 140.988328181 111.845404752 124.875376388 114.199415355 44.3106174282 115.373721301 40.2823794802 117.724395026 97.6847702394 118.899705935 87.6141753693 120.073810126 73.5153425513 121.250200192 21.1482492271 122.431010104 125.882435875 127.13451909 312.188440971 128.310329989 227.595444063 129.486403053 493.459148632 130.685707291 1598.20340588 131.886168982 665.66632091 133.108583868 743.209901409 134.293719495 661.638082962 135.48634411 316.216678919 136.662866724 272.913120978 137.839325117 138.974209207 139.022746703 80.5647589603 140.198345876 229.609563037 141.375166138 177.242469713 142.548568878 95.6706512654 144.900654889 138.974209207 154.30390696 39.2753199932 160.181592569 9.06353538304 170.759851158 35.2470820451 173.112506365 66.4659261423 181.552169973 108.762424596 182.727834541 114.804781518 200.356677384 31.2188440971 210.936816871 83.5859374213 234.439448046 107.755365109 243.844117976 95.6706512654 246.194507542 56.3953312722 247.369314944 80.5647589603 252.07104215 134.945971259 264.999555704 65.4588666553 274.404948198 63.4447476812 276.755930714 169.185993817 277.931370067 81.5718184473 286.161512354 103.727127161 288.51258783 12.084713844 290.86280174 88.6212348563 293.214178969 154.080101512 312.039551329 110.77654357 314.394688301 24.1694276881 320.270286858 57.4023907592 321.446456987 199.397778427 324.980282509 84.5929969083 327.330616945 314.202559945 328.506796751 193.355421505 329.683848386 75.5294615253 330.859115309 282.983715848 332.035271362 98.6918297264 334.394990054 50.3529743502 335.570590107 59.4165097332 339.097362994 455.190888126 340.272053389 164.150696382 341.455566176 12.084713844 342.631029576 84.5929969083 348.510193746 115.811841005 349.684627255 9.06353538304 350.861976831 71.5012235773 354.391642618 74.5224020383 355.566267619 71.5012235773 361.451208205 97.6847702394 364.987677659 78.5506399863 366.162573035 112.790662544 367.337622367 124.875376388 368.512234758 86.6071158823 369.687356522 182.277767148 370.863926349 121.854197927 372.038302382 113.797722031 373.214125597 212.489551758 375.565551212 190.334243044 377.918711394 94.6635917784 379.094951902 169.185993817 380.270121466 140.988328181 382.621391366 218.53190868 383.796299058 63.4447476812 386.151768281 99.6988892134 387.333298119 245.722514829 388.508932189 66.4659261423 389.683194441 76.5365210123 390.859056072 176.235410226 393.209225702 9.06353538304 395.566476705 137.96714972 396.741694362 108.762424596 397.916945742 237.666038933 399.093404135 21.1482492271 400.268817682 63.4447476812 401.446982782 109.769484083 413.206165357 98.6918297264 414.394080103 56.3953312722 416.744240349 111.783603057 417.919912541 125.882435875 419.096653332 72.5082830643 426.160192734 45.3176769152 427.336021522 193.355421505 428.522964147 67.4729856293 429.699054219 197.383659453 436.756581727 80.5647589603 437.932499661 145.016566129 441.461013274 75.5294615253 443.811406653 27.1906061491 444.993643221 10.07059487 448.528422388 77.5435804993 449.706422976 59.4165097332 452.057565313 44.3106174282 453.231811436 97.6847702394 454.40913198 100.7059487 457.953801551 109.769484083 459.136774467 111.783603057 462.662120699 71.5012235773 463.840752945 185.298945609 468.54334289 58.4094502462 469.718798958 85.6000563953 470.894241536 167.171874843 473.248484979 51.3600338372 474.424525785 68.4800451163 475.599513242 10.07059487 477.950421565 129.910673824 481.476800326 25.1764871751 482.652253461 21.1482492271 483.833603831 49.3459148632 485.015662984 20.1411897401 487.367577737 193.355421505 488.543404472 162.136577408 490.902299135 76.5365210123 492.087245029 23.1623682011 493.261991435 108.762424596 494.438009074 32.2259035841 496.787991025 147.030685103 497.965470803 50.3529743502 500.320223913 345.421404042 501.497505455 161.129517921 503.860983011 48.3388553762 505.035836745 62.4376881942 506.211304837 86.6071158823 507.396243399 286.004894309 509.753495282 157.101279973 513.286356896 91.6424133174 514.471685186 61.4306287072 515.647159729 63.4447476812 516.825004895 109.769484083 519.177245742 127.896554849 520.362219494 77.5435804993 521.539775811 70.4941640903 522.713978533 52.3670933242 523.889385922 279.962537387 525.065668072 22.1553087141 527.431996007 37.2612010191 528.608113351 87.6141753693 529.783609887 137.96714972 530.959196451 9.06353538304 532.134552227 9.06353538304 533.311445508 77.5435804993 534.486772253 123.868316901 535.661745047 159.115398947 536.851259465 172.207172278 538.034014497 417.929687107 540.403930038 349.44964199 542.75505302 92.6494728044 543.930346628 134.945971259 545.106605905 70.4941640903 546.290213998 176.235410226 547.466169469 274.927239952 548.641628469 71.5012235773 549.816625896 481.374434788 550.991364384 304.131965075 552.175505896 412.894389672 553.360170271 256.800169186 554.540164072 137.96714972 555.715762073 63.4447476812 556.906440689 189.327183557 558.083904631 104.734186648 559.298254881 128.903614336 561.670613186 95.6706512654 562.855143253 312.188440971 564.048337358 523.670933242 565.22745669 164.150696382 566.40301129 191.341302531 567.57931602 625.383941429 568.777022931 787.520518837 569.964760261 748.245198844 571.144413893 756.30167474 572.32977796 1268.89495362 573.542831464 822.767600882 574.711806732 506.550921963 575.886865741 817.732303447 577.065304736 304.131965075 578.250757071 23.1623682011 579.425669163 455.190888126 580.612212676 306.146084049 581.785605445 223.567206115 582.965938535 57.4023907592 584.142107491 129.910673824 585.324885103 176.235410226 587.674070883 133.938911772 588.854128319 189.327183557 590.045680523 132.931852285 591.239000725 334.343749685 592.415038012 251.764871751 593.596064635 271.906061491 594.779397074 386.710843009 595.955018827 119.840078953 597.130201294 198.39071894 598.327480062 179.256588687 599.516306225 51.3600338372 600.69262767 250.757812264 601.86808931 122.861257414 603.042932488 168.17893433 604.220343939 265.863704569 605.405588067 319.23785738 606.581762009 131.924792798 607.773090171 370.597891217 608.948843007 104.734186648 610.125749483 108.762424596 612.476028495 159.115398947 614.841968462 80.5647589603 617.196830366 66.4659261423 621.933938634 64.4518071682 623.126260323 309.16726251 625.485162024 120.84713844 630.190172738 97.6847702394 631.379597128 307.153143536 632.554018321 281.976656361 633.728456229 186.306005096 638.442969085 182.277767148 641.968394787 67.4729856293 643.144202754 51.3600338372 644.319199008 125.882435875 646.671610525 293.054310718 647.846028785 267.877823543 650.196563803 185.298945609 651.372522793 297.082548666 652.548368002 244.715455342 653.729586703 467.27560197 654.921347408 367.576712756 656.119900635 247.736633803 657.314505267 639.482774247 658.490254877 545.826241956 659.66506785 192.348362018 660.851865024 380.668486087 662.040424037 569.995669644 663.226063465 358.513177373 664.414410459 322.259035841 666.799972 168.17893433 667.97640488 90.6353538304 669.165550684 194.362480992 670.359113403 89.6282943433 671.56086011 120.84713844 672.736092429 313.195500458 673.917250721 452.169709665 675.124423412 852.979385492 676.300056016 357.506117886 677.490493581 497.48738658 679.858934961 225.581325089 681.052053407 48.3388553762 682.228042601 444.113233769 683.404381055 392.753199932 684.579217488 524.677992729 685.76760671 857.00762344 686.945518738 577.045086053 688.128310719 194.362480992 689.323146724 639.482774247 690.498137113 595.172156819 691.675084644 192.348362018 692.873607667 282.983715848 694.056941865 361.534355834 695.252317155 516.621516833 696.446691293 86.6071158823 697.63664793 108.762424596 698.812045642 19.1341302531 699.997113234 76.5365210123 701.198733845 306.146084049 703.56238647 121.854197927 704.742977032 220.546027654 705.939976041 297.082548666 707.116429155 85.6000563953 708.290622787 231.623682011 709.465938388 129.910673824 710.66041663 21.1482492271 711.847708515 493.459148632 713.027657742 283.990775335 714.209910145 440.084995821 715.385261523 727.096949617 716.56079237 1031.22891469 717.736648429 615.313346559 718.911615944 37.2612010191 720.086532728 154.080101512 721.262779688 339.37904712 722.439859475 293.054310718 723.625601539 117.825959979 724.880961469 315.209619432 726.061497193 133.938911772 727.236649455 284.997834822 728.416716861 99.6988892134 730.801466689 93.6565322914 731.98513959 407.859092237 733.161395641 204.433075862 734.33654849 371.604950704 735.527899525 98.6918297264 736.71962416 217.524849193 737.905183237 194.362480992 739.100883154 516.621516833 740.29920794 635.454536299 741.471725068 857.00762344 742.656167747 1282.99378644 743.832368667 1745.23409098 745.008739085 1508.57511153 746.200652572 618.33452502 747.383146612 688.828689111 748.581061144 130.917733311 749.75663891 141.995387668 750.932936016 82.5788779343 752.126732454 136.960090233 753.321913026 218.53190868 754.504515862 59.4165097332 755.715770284 137.96714972 756.895308669 70.4941640903 759.246161275 54.3812122982 760.430570231 182.277767148 761.606226881 616.320406046 762.78149263 287.011953796 763.984676844 358.513177373 765.159190116 239.680157907 766.334182851 53.3741528112 767.50987909 52.3670933242 768.696057509 83.5859374213 769.905306109 227.595444063 771.110919009 210.475432784 772.304487886 216.517789706 774.657811114 50.3529743502 775.861035502 99.6988892134 778.254586608 388.724961984 779.429711891 295.068429692 780.623459943 134.945971259 781.80095673 98.6918297264 782.975169716 14.0988328181 785.326208242 107.755365109 786.502838185 124.875376388 787.677793384 296.075489179 788.852867935 406.85203275 790.028444528 824.781719856 791.204629906 772.414626532 792.380202394 524.677992729 793.555531192 150.051863564 794.733486913 272.913120978 797.088320079 198.39071894 798.262962968 220.546027654 799.438611114 278.9554779 800.61359857 159.115398947 801.789400965 73.5153425513 802.964843837 122.861257414 804.14093039 314.202559945 805.31663572 68.4800451163 806.492886492 41.2894389672 807.668786539 101.713008187 808.844402427 44.3106174282 810.021234712 96.6777107524 811.198149693 456.197947613 813.548833388 152.065982538 815.899338788 44.3106174282 818.250166761 197.383659453 819.425778544 146.023625616 820.604799345 128.903614336 821.778094756 103.727127161 825.306009261 276.941358926 826.481560341 184.291886122 827.658212865 126.889495362 828.832321454 251.764871751 830.008422376 193.355421505 831.182903099 115.811841005 832.358182337 119.840078953 833.534580907 73.5153425513 835.892140701 109.769484083 837.070435125 410.880270698 838.245545453 525.685052216 839.420744634 457.2050071 840.595501597 367.576712756 841.771580526 184.291886122 842.947815756 53.3741528112 844.128257348 129.910673824 845.303589078 398.795556854 846.479106435 273.920180465 847.654046678 426.99322249 848.829734413 812.697006012 850.0056327 1316.22674951 851.180668542 1245.73258542 852.356775036 1159.12546954 853.532993258 555.896836826 854.70783497 702.927521929 855.883947328 314.202559945 858.234543929 111.783603057 859.410009087 108.762424596 860.584303303 34.2400225581 861.761235293 94.6635917784 862.936238878 206.447194836 864.111255659 174.221291252 865.288131344 137.96714972 868.815508324 332.329630711 869.993251733 39.2753199932 871.167788759 190.334243044 872.350840559 157.101279973 874.702583762 373.619069678 875.879076465 301.110786614 877.053461002 239.680157907 878.229415886 491.445029658 879.404546448 274.927239952 880.579672904 113.797722031 881.755386151 394.767318906 882.930636651 660.631023475 884.107246654 617.327465533 885.280691621 668.687499371 886.455597847 600.207454254 887.631033681 638.47571476 888.80792051 1287.02202439 889.981931155 681.779272702 891.158231779 524.677992729 892.334032415 348.442582503 893.510588459 176.235410226 894.685927814 420.950865568 895.861630211 71.5012235773 897.036404475 324.273154815 898.212015379 175.228350739 899.392835261 204.433075862 900.568835892 245.722514829 901.743831853 234.644860472 902.919468562 190.334243044 904.094226698 197.383659453 905.270105337 56.3953312722 907.620087581 69.4871046033 909.971866267 143.002447155 911.146815308 381.675545574 912.323267542 78.5506399863 913.498706895 151.058923051 914.675376427 174.221291252 915.850999647 260.828407134 917.026044873 62.4376881942 918.200969281 181.270707661 919.376991905 863.049980362 920.552485803 780.471102428 921.727985565 761.336972175 922.903612597 1003.03124906 924.080067177 605.242751689 925.254246146 63.4447476812 926.434809143 254.786050212 927.610136181 67.4729856293 929.960259184 129.910673824 931.135736073 332.329630711 933.486323289 82.5788779343 935.83793717 204.433075862 937.013314354 121.854197927 938.188274538 194.362480992 939.363255836 75.5294615253 940.538322176 537.76976606 941.71470579 61.4306287072 944.064590089 91.6424133174 945.239316847 59.4165097332 946.415222172 73.5153425513 947.590541293 305.139024562 948.765948095 161.129517921 949.94086048 363.548474808 951.117090724 2422.98512573 952.291820122 2304.15210626 953.467535422 3569.01882194 954.642867445 3406.88224453 955.81845137 7885.27578324 956.994132066 5162.18693038 958.169835636 4948.69031914 959.345107837 4733.17958892 960.520426958 9311.27201684 961.69638888 12337.4857753 962.871832045 10557.0046023 964.046119517 7742.27333609 965.221403447 2812.7171472 966.397390296 1920.46244172 967.572069254 523.670933242 968.747042928 197.383659453 969.922797816 341.393166094 971.097689674 581.073324001 972.2747721 829.817017291 973.449554282 869.092337284 974.624716808 631.426298351 975.799795171 475.332077866 976.974872948 986.918297264 978.154118084 224.574265602 979.328997918 281.976656361 980.504913507 276.941358926 981.679708299 100.7059487 982.859603275 260.828407134 984.033842067 306.146084049 985.210241809 481.374434788 986.38487766 262.842526108 987.559915262 719.040473721 988.73591736 397.788497367 989.911900396 174.221291252 991.086496658 392.753199932 992.26214627 293.054310718 993.437802334 451.162650178 994.61745186 560.932134261 995.790869556 203.426016375 996.965167584 115.811841005 998.15396061 62.4376881942 1000.51346904 166.164815356 1001.68949049 167.171874843 1002.86519788 162.136577408 1004.03971525 64.4518071682 1006.40096383 282.983715848 1007.58779443 10.07059487 1008.76333232 226.588384576 1009.95002656 55.3882717852 1012.30072374 49.3459148632 1013.47707158 237.666038933 1014.65298746 210.475432784 1015.83523136 56.3953312722 1017.02271298 436.056757873 1018.21821495 408.866151724 1019.39199481 92.6494728044 1020.56753152 154.080101512 1021.74303363 264.856645082 1022.91879174 185.298945609 1024.10586662 179.256588687 1025.28613285 747.238139357 1026.47021513 127.896554849 1027.64502898 1075.53953212 1028.82138679 822.767600882 1029.99546694 466.268542483 1031.17599562 390.739080958 1032.35807442 343.407285068 1033.53740636 373.619069678 1034.72907733 137.96714972 1035.91065321 318.230797893 1037.09386043 422.964984542 1038.26977895 582.080383488 1039.44567343 1252.78200183 1040.62378985 1573.0269187 1041.8043766 1546.84337204 1043.00054601 2118.85316066 1044.20670787 1506.56099256 1045.38487795 1344.42441515 1046.58324643 856.000563953 1047.75795472 170.193053304 1048.9435091 550.861539391 1050.13594281 564.960372209 1051.32554433 550.861539391 1052.52289142 229.609563037 1053.70073483 222.560146628 1054.87762078 184.291886122 1056.05109507 116.818900492 1057.24393992 381.675545574 1058.41927223 243.708395855 1059.60867052 19.1341302531 1060.7837612 145.016566129 1061.97395273 157.101279973 1063.14979413 314.202559945 1065.50109306 554.889777339 1066.67564856 289.02607277 1067.85150785 335.350809172 1069.02811638 566.974491183 1070.21468453 357.506117886 1071.38912126 404.837913776 1072.56602745 253.778990725 1073.73929529 51.3600338372 1074.92890179 244.715455342 1076.10481621 206.447194836 1077.29273916 209.468373297 1078.4704204 199.397778427 1079.70266059 66.4659261423 1080.89238879 93.6565322914 1082.06928324 130.917733311 1083.2482017 229.609563037 1084.43882108 88.6212348563 1085.62977418 11.077654357 1087.98782722 145.016566129 1089.18321013 81.5718184473 1090.35759965 120.84713844 1091.53397036 143.002447155 1092.71046922 119.840078953 1093.88934692 97.6847702394 1095.07195269 162.136577408 1096.25812847 122.861257414 1097.44509778 185.298945609 1098.62120486 201.411897401 1099.79709669 180.263648174 1100.97168504 78.5506399863 1102.15836873 185.298945609 1103.35033177 176.235410226 1104.52676231 572.009788618 1105.71163254 1057.41246135 1106.88716339 2326.30741498 1108.06525928 3617.35767732 1109.24550997 3245.75272661 1110.43475431 2590.15700057 1111.62009726 1251.77494235 1112.81409135 691.849867572 1114.01328767 350.456701477 1115.18924197 737.167544487 1116.36924867 298.089608153 1117.55964635 370.597891217 1118.74837897 438.070876847 1119.93713094 9.06353538304 1121.13493902 842.908790622 1122.31756942 156.094220486 1123.49257741 374.626129165 1124.66822321 103.727127161 1125.84514171 859.021742414 1127.03226585 188.32012407 1128.21084033 111.783603057 1129.38610432 83.5859374213 1130.56140966 9.06353538304 1131.7371537 132.931852285 1132.91246021 204.433075862 1134.08738432 196.376599966 1135.27421845 180.263648174 1137.65020482 355.491998912 1138.83752603 416.92262762 1140.01275513 245.722514829 1141.18861412 1129.92074442 1142.3640045 789.534637811 1143.54056934 930.522965992 1144.72395339 1140.99839878 1145.90449821 720.047533208 1147.09967849 805.647589603 1148.28330476 745.224020383 1149.47082421 866.071158823 1150.6458882 632.433357838 1151.82098181 1187.32313518 1153.01504452 806.65464909 1154.18969474 974.83358342 1155.37327937 391.746140445 1156.55238786 409.873211211 1157.72741197 42.2964984542 1158.90277303 59.4165097332 1160.07950678 159.115398947 1161.26715672 376.640248139 1162.46683573 2275.95444063 1163.66463589 3339.4092589 1164.86532925 4439.11821871 1166.04176037 4429.04762384 1167.2296584 3937.60259419 1168.40452856 2866.09130001 1169.59400075 1280.97966747 1170.78218001 165.157755869 1171.96669658 335.350809172 1173.14665901 210.475432784 1174.32135615 155.087160999 1175.49717643 96.6777107524 1177.85200784 334.343749685 1179.02683254 160.122458434 1180.20905503 803.633470629 1181.38823155 470.296780431 1182.56299584 144.009506642 1183.74987395 299.09666764 1184.94808115 105.741246135 1187.34045486 68.4800451163 1188.51606107 197.383659453 1189.69230832 204.433075862 1190.88203212 189.327183557 1192.05620728 272.913120978 1193.23097304 428.000281977 1194.40909034 284.997834822 1195.61370091 496.480327093 1196.79846089 41.2894389672 1197.97374042 204.433075862 1199.16061149 320.244916867 1200.34199383 237.666038933 1201.51973782 487.41679171 1202.69546309 206.447194836 1203.88641883 407.859092237 1205.07718747 1123.8783875 1206.26455326 272.913120978 1207.45135806 86.6071158823 1208.62643085 240.687217394 1209.80217899 659.623963988 1210.97891744 1310.18439259 1212.17622436 1430.02447155 1213.35121386 741.195782435 1214.53557531 384.696724035 1215.72715714 320.244916867 1216.91194849 320.244916867 1218.08817404 66.4659261423 1220.45780601 155.087160999 1221.64313078 118.833019466 1224.02341502 287.011953796 1225.20322378 77.5435804993 1226.3787989 80.5647589603 1227.56176009 269.891942517 1228.73802289 525.685052216 1229.93749222 842.908790622 1231.12857875 380.668486087 1232.3200292 475.332077866 1233.52719837 280.969596874 1234.70153481 112.790662544 1235.8887962 173.214231765 1237.07526464 701.920462442 1238.27840487 47.3317958892 1239.45638581 429.007341464 1240.64153932 228.60250355 1241.81692237 404.837913776 1242.99203827 414.908508646 1244.16817966 185.298945609 1245.34402692 522.663873755 1246.54244672 550.861539391 1247.73049636 396.78143788 1248.92243829 335.350809172 1250.11432363 303.124905588 1251.29006503 236.658979446 1252.46609968 172.207172278 1253.65290623 241.694276881 1254.83259857 260.828407134 1256.01644977 162.136577408 1257.20376687 139.981268694 1258.39265521 246.729574316 1259.56925289 264.856645082 1260.74358816 351.463760964 1261.93028065 174.221291252 1263.12285512 75.5294615253 1264.32013887 357.506117886 1265.51990263 619.341584507 1266.71443278 987.925356751 1267.8894088 618.33452502 1269.06448335 782.485221402 1270.25205851 277.948418413 1271.42758965 564.960372209 1272.61738383 497.48738658 1273.79946703 49.3459148632 1274.97749782 112.790662544 1276.16004347 139.981268694 1278.53490319 136.960090233 1280.90153786 77.5435804993 1282.07970883 27.1906061491 1283.26937192 476.339137353 1284.44379751 271.906061491 1285.61985122 219.538968167 1286.80376048 482.381494275 1287.99093477 337.364928146 1289.17932517 544.819182469 1290.35436189 604.235692202 1291.53638673 496.480327093 1292.71231611 795.576994733 1293.88671354 593.158037845 1295.06190246 120.84713844 1296.23829605 635.454536299 1297.42371466 380.668486087 1298.61883277 581.073324001 1299.80665162 735.153425513 1301.00212486 304.131965075 1302.1814436 973.826523933 1303.36765867 178.2495292 1304.5503052 769.393448071 1305.72589529 612.292168098 1306.90102321 277.948418413 1308.10346668 442.099114795 1309.27881747 365.562593782 1310.46637474 60.4235692202 1311.66299223 94.6635917784 1312.83884976 246.729574316 1314.01362285 686.814570137 1316.37256033 248.74369329 1317.5492196 221.553087141 1318.72444693 41.2894389672 1319.89920917 286.004894309 1321.09691432 9.06353538304 1322.27151586 60.4235692202 1323.44701563 86.6071158823 1324.6225321 168.17893433 1325.79836676 49.3459148632 1326.97332665 305.139024562 1328.14806074 591.143918871 1329.32343205 1163.15370749 1330.49947022 2996.00197384 1331.70705434 12302.2386932 1332.88300336 29469.5817682 1334.05817351 40354.8877632 1335.23306625 50821.2570117 1336.41479989 41602.6344676 1337.58939205 28253.0539079 1338.78152958 10806.755355 1339.9575088 3268.91509481 1341.13374227 783.492280889 1342.31834008 256.800169186 1343.49348003 540.790944521 1345.86678494 390.739080958 1347.04224541 65.4588666553 1348.21892344 110.77654357 1349.41367792 908.367657278 1350.5900935 143.002447155 1351.76609061 443.106174282 1352.93981241 840.894671648 1354.11584647 506.550921963 1355.3112461 671.708677832 1356.48843937 432.028519925 1357.66362741 569.995669644 1358.8511885 196.376599966 1360.0275117 367.576712756 1361.20531757 589.129799897 1362.38617089 113.797722031 1363.569357 153.073042025 1364.74323069 245.722514829 1365.91905479 159.115398947 1367.09367216 253.778990725 1368.26905521 238.67309842 1369.44518663 156.094220486 1370.63628577 133.938911772 1371.81147293 180.263648174 1372.98737503 72.5082830643 1374.16289649 125.882435875 1375.33817778 113.797722031 1376.51378722 508.565040937 1377.68918552 329.30845225 1378.86386829 325.280214302 1380.06174968 763.351091149 1381.26299962 303.124905588 1382.46301089 291.040191744 1383.64705651 45.3176769152 1384.83287628 102.720067674 1386.00728809 24.1694276881 1387.18823231 98.6918297264 1388.36853666 238.67309842 1389.54443466 220.546027654 1390.74001932 233.637800985 1391.94348506 55.3882717852 1393.14474996 436.056757873 1394.32103592 832.838195752 1395.49597558 895.275883946 1396.67049413 1134.95604185 1397.86385861 358.513177373 1399.06109192 732.132247052 1400.23759489 1154.09017211 1401.44596843 754.287555766 1402.63842883 2956.72665384 1403.82577086 2295.08857088 1405.03398459 4393.8005418 1406.20917409 1350.46677207 1407.38522018 466.268542483 1408.56171933 637.468655273 1409.74362277 228.60250355 1410.91786537 72.5082830643 1412.09346396 261.835466621 1413.26812151 344.414344555 1414.44377053 298.089608153 1415.61875682 224.574265602 1416.79466625 443.106174282 1417.97995759 419.943806081 1419.15562186 291.040191744 1420.36149781 159.115398947 1421.56666966 744.216960896 1422.75963738 1707.97288996 1423.95676776 1018.13714136 1425.13171211 1007.059487 1426.30743621 791.548756785 1427.4946366 714.005176286 1428.67306856 460.226185561 1429.87351617 354.484939425 1431.04994817 693.863986546 1432.22937366 612.292168098 1433.41564298 645.525131169 1434.59159435 307.153143536 1435.76721434 667.680439884 1436.94180415 1624.38695254 1438.11705729 4514.64768024 1439.30137681 11074.6331786 1440.47642731 19215.7020715 1441.67169351 24024.411122 1442.84874427 20377.8487195 1444.0403343 10251.8655777 1445.21551853 4432.0688023 1446.39077548 1305.14909516 1447.5669028 355.491998912 1448.74374916 408.866151724 1449.95277078 58.4094502462 1451.14147554 153.073042025 1452.32846127 383.689664548 1453.70788922 149.044804077 1454.91017023 82.5788779343 1456.08526179 329.30845225 1457.26341105 236.658979446 1458.45068915 691.849867572 1459.62771293 225.581325089 1460.80195524 406.85203275 1461.97725765 979.868880855 1463.15460165 981.882999829 1464.35840961 694.871046033 1465.53393781 720.047533208 1466.70955663 222.560146628 1467.88416463 424.979103516 1469.0605629 75.5294615253 1470.24322468 24.1694276881 1471.42560465 538.776825547 1472.6139795 479.360315814 1474.98439181 401.816735315 1476.16111295 577.045086053 1477.3388546 754.287555766 1478.51436316 582.080383488 1479.69778152 394.767318906 1480.8728417 867.07821831 1482.06608155 1118.84309006 1483.26166476 1848.96121814 1484.45143371 2714.02531748 1485.624613 2728.12415029 1486.80037551 2935.57840462 1487.97731278 1571.01279973 1489.16349999 1638.48578536 1490.35874567 1251.77494235 1491.5440027 252.771931238 1492.72664952 331.322571224 1493.91485517 158.10833946 1495.10033566 42.2964984542 1496.29424148 195.369540479 1497.47256259 30.2117846101 1498.6593234 69.4871046033 1499.85222367 494.466208119 1501.03757894 63.4447476812 1502.21443263 166.164815356 1503.40097878 81.5718184473 1504.58323441 296.075489179 1505.77738187 160.122458434 1506.96736519 388.724961984 1508.15920947 138.974209207 1509.33538195 223.567206115 1510.51081191 68.4800451163 1511.70700654 133.938911772 1512.91017727 45.3176769152 1514.10423704 90.6353538304 1515.28930874 300.103727127 1516.48239551 122.861257414 1517.66733173 322.259035841 1518.84276346 389.732021471 1520.03118641 331.322571224 1521.22160843 203.426016375 1522.40668013 392.753199932 1523.58395404 557.9109558 1524.7616435 586.108621436 1525.94362758 451.162650178 1527.11888247 628.40511989 1528.294006 650.560428605 1529.47776277 541.798004008 1530.66812732 395.774378393 1531.85557492 672.715737319 1533.04114015 1062.44775879 1534.21629065 1383.69973514 1535.4069159 2336.37800985 1536.58822404 2498.51458726 1537.76658181 2328.32153395 1538.95484258 1868.09534839 1540.14883198 432.028519925 1541.34162932 533.741528112 1542.52559459 362.541415321 1543.70078937 791.548756785 1544.89437379 790.541697298 1546.08333338 165.157755869 1547.28580852 521.656814268 1548.47358573 788.527578324 1549.64929487 1150.06193416 1550.82423189 1127.90662544 1552.02650351 708.969878851 1553.21042949 1126.89956596 1554.38494775 351.463760964 1555.57593926 560.932134261 1556.77341597 588.12274041 1557.94924945 438.070876847 1559.12627762 346.428463529 1560.32446664 138.974209207 1561.51513176 207.454254323 1562.72059188 63.4447476812 1563.9199665 281.976656361 1565.11208438 455.190888126 1566.2974854 227.595444063 1567.49611194 403.830854289 1568.69595165 438.070876847 1569.89478287 105.741246135 1571.10067289 328.301392763 1572.30032844 378.654367113 1573.4775572 191.341302531 1574.65158837 301.110786614 1575.8488994 587.115680923 1577.04505737 544.819182469 1578.23539611 83.5859374213 1579.4288298 413.901449159 1580.62409013 182.277767148 1581.81709216 289.02607277 1583.00451923 137.96714972 1584.19874851 503.529743502 1585.37999917 1271.91613209 1586.55547225 2902.34544155 1587.74173219 3308.19041481 1588.94488297 4130.95801569 1590.12029447 1307.16321413 1591.29535494 1594.17516793 1592.49776263 810.682887038 1593.67350257 539.783885034 1594.87150302 129.910673824 1596.0483617 97.6847702394 1597.24089716 134.945971259 1598.41933176 335.350809172 1599.6076899 180.263648174 1600.80046876 358.513177373 1601.98807501 296.075489179 1603.16724244 231.623682011 1604.34749107 597.186275793 1605.52634032 481.374434788 1606.70123628 201.411897401 1607.87807062 300.103727127 1609.05218332 355.491998912 1610.22823703 90.6353538304 1611.40980909 373.619069678 1612.58507572 1177.25254031 1613.76124057 234.644860472 1614.93576323 708.969878851 1616.11208438 546.833301443 1617.28777475 1022.16537931 1618.46506773 347.435523016 1619.6404238 489.430910684 1620.81584058 175.228350739 1621.99105207 321.251976354 1623.16671987 429.007341464 1624.34538202 210.475432784 1626.69683872 203.426016375 1627.87159158 103.727127161 1629.04661481 233.637800985 1630.22195094 75.5294615253 1631.40046677 101.713008187 1632.57496274 660.631023475 1633.75103492 635.454536299 1634.92629628 208.46131381 1636.10122127 313.195500458 1637.27732952 1110.78661417 1638.45218912 851.972326005 1639.62696104 284.997834822 1640.80433144 209.468373297 1641.9801611 412.894389672 1643.15660659 232.630741498 1644.33016358 309.16726251 1645.50552493 154.080101512 1646.68127835 149.044804077 1647.8562183 831.831136265 1649.03225882 385.703783522 1650.21005208 289.02607277 1651.39983951 729.111068591 1652.57912541 318.230797893 1653.75543718 209.468373297 1654.93240201 151.058923051 1656.10804898 114.804781518 1657.28220948 309.16726251 1659.63854994 154.080101512 1660.81398607 386.710843009 1661.98911018 156.094220486 1663.16561901 150.051863564 1664.34391695 368.583772243 1665.52022403 224.574265602 1666.69551207 155.087160999 1667.87090186 62.4376881942 1669.04667053 46.3247364022 1670.22333127 117.825959979 1671.39871519 62.4376881942 1672.57575481 165.157755869 1673.75123639 370.597891217 1674.92752 232.630741498 1676.1037655 403.830854289 1677.27844328 103.727127161 1678.4553046 228.60250355 1679.63060906 429.007341464 1680.80990493 170.193053304 1681.9865507 665.66632091 1683.1620575 334.343749685 1684.33777515 710.983997825 1685.51212274 921.459430609 1686.68820841 1198.40078953 1687.86975086 2913.4230959 1689.04458201 1807.67177917 1690.22503827 2281.99679755 1691.40071427 1826.80590943 1692.57500145 1423.98211462 1693.75040708 1348.4526531 1694.92573441 461.233245048 1696.10098579 394.767318906 1697.27629142 344.414344555 1698.45328881 386.710843009 1699.63044249 361.534355834 1700.80432704 581.073324001 1701.98088044 264.856645082 1703.15487496 348.442582503 1704.32968383 408.866151724 1705.50719586 251.764871751 1706.68300735 474.325018379 1707.85863526 518.635635807 1709.03432475 520.649754781 1710.20981982 593.158037845 1711.38527267 577.045086053 1712.56147769 174.221291252 1713.73808212 195.369540479 1714.91258396 268.88488303 1716.08814002 519.642695294 1717.26402277 390.739080958 1718.43940318 1483.39862436 1719.61525191 1961.75188068 1720.78980213 1169.19606441 1721.96545526 1488.43392179 1723.14179753 813.704065499 1724.31737441 584.094502462 1725.49598701 369.59083173 1726.672046 418.936746594 1727.84776071 364.555534295 1729.02334962 121.854197927 1730.20328272 133.938911772 1731.39160186 281.976656361 1732.56606733 68.4800451163 1733.74990973 83.5859374213 1734.92617604 490.437970171 1736.10494758 470.296780431 1737.27989017 394.767318906 1738.45435946 582.080383488 1739.62990966 490.437970171 1740.80493758 355.491998912 1741.98017078 164.150696382 1743.1562764 120.84713844 1744.33161692 149.044804077 1745.50729029 227.595444063 1746.68173142 230.616622524 1747.85779891 277.948418413 1749.03379104 400.809675828 1750.20813716 537.76976606 1751.38915851 623.369822455 1752.56446297 1870.10946737 1753.74210051 2042.31663964 1754.91839146 2526.71225289 1756.09331235 1641.50696382 1757.26907897 938.579441888 1758.44485556 663.652201936 1759.62601766 345.421404042 1760.80204879 89.6282943433 1761.97634447 431.021460438 1763.15171139 212.489551758 1764.33363301 461.233245048 1765.50890433 953.685334193 1766.68430996 648.546309631 1767.85966574 461.233245048 1769.03498632 710.983997825 1770.21034474 559.925074774 1771.38593717 223.567206115 1772.56120087 377.647307626 1773.73685253 11.077654357 1774.9115916 249.750752777 1776.08758666 111.783603057 1777.26286532 967.784167011 1778.43823722 2031.23898529 1779.61250593 294.061370205 1780.78788575 277.948418413 1781.96460015 319.23785738 1783.13965446 135.953030746 1784.31509587 146.023625616 1786.66528192 42.2964984542 1787.84077465 67.4729856293 1789.01740224 110.77654357 1790.19221111 90.6353538304 1791.36866217 217.524849193 1792.54366312 398.795556854 1793.71932622 477.34619684 1794.89469695 877.14881318 1796.07075858 878.155872667 1797.24603078 505.543862476 1798.42041326 560.932134261 1799.59693705 464.254423509 1800.77139138 407.859092237 1801.94779435 571.002729131 1803.12331581 584.094502462 1804.29813875 227.595444063 1805.47394467 396.78143788 1806.64825677 276.941358926 1807.82476033 182.277767148 1808.99973693 498.494446067 1810.17600031 169.185993817 1811.35183819 800.612292168 1812.52845201 726.08989013 1813.70558898 895.275883946 1814.87981193 526.692111703 1816.05484426 717.026354747 1817.23051029 355.491998912 1818.40615814 382.682605061 1819.5831262 674.729856293 1820.75974119 533.741528112 1821.9362207 624.376881942 1823.11075274 640.489833734 1824.2861179 729.111068591 1825.46172118 1437.07388795 1826.63690394 817.732303447 1827.81339224 975.840642907 1828.98908173 1359.53030746 1830.16405658 741.195782435 1831.34059679 562.946253235 1832.51510449 279.962537387 1833.69097932 397.788497367 1834.86598173 298.089608153 1836.04178618 564.960372209 1837.21631793 895.275883946 1838.39124497 618.33452502 1839.56727024 440.084995821 1840.74292337 376.640248139 1841.91702375 295.068429692 1843.09338185 175.228350739 1844.26822415 358.513177373 1845.44383652 115.811841005 1846.61968231 104.734186648 1848.97086365 390.739080958 1850.14681443 378.654367113 1851.32149104 70.4941640903 1852.49780164 113.797722031 1853.67315184 665.66632091 1854.84747186 324.273154815 1856.02380299 364.555534295 1857.19941887 305.139024562 1858.37410458 98.6918297264 1859.54875245 422.964984542 1860.72439913 140.988328181 1861.89984347 321.251976354 1863.0745582 453.176769152 1864.25893666 173.214231765 1865.44722823 400.809675828 1866.64833683 421.957925055 1867.84638802 253.778990725 1869.03521418 149.044804077 1870.21117082 465.261482996 1871.40850531 181.270707661 1872.59512888 396.78143788 1873.79133758 293.054310718 1874.96917923 423.972044029 1876.16500817 384.696724035 1877.35389299 867.07821831 1878.54247575 765.365210123 1879.71815645 535.755647086 1880.89347792 463.247364022 1882.09785419 269.891942517 1883.29745754 333.336690198 1884.49738933 80.5647589603 1885.68721254 155.087160999 1886.88267551 267.877823543 1888.07664584 770.400507558 1889.27274018 1138.9842798 1890.46079099 1133.94898237 1891.65226783 2741.21592362 1892.85662709 4259.86163003 1894.03217055 5584.14485544 1895.20648207 8879.24349691 1896.40161513 11533.8523047 1897.61269566 9890.33122187 1898.80319041 10795.6777007 1900.00017417 6926.55515161 1901.19656908 3543.84233477 1902.38798522 3097.71498202 1903.59021813 1498.50451666 1904.78729075 1055.39834238 1905.96995047 1121.86426852 1907.17210597 788.527578324 1908.3637526 968.791226498 1909.55274093 931.530025479 1910.72727062 786.51345935 1911.92460775 561.939193748 1913.11427583 395.774378393 1914.3005387 552.875658365 1915.49656354 579.059205027 1916.6901981 1321.26204695 1917.89102577 829.817017291 1919.08533129 305.139024562 1920.28526337 1963.76599966 1921.48336441 377.647307626 1922.67610339 1170.2031239 1923.87925007 2323.28623652 1925.05384076 1020.15126033 1926.23440229 459.219126074 1927.41990829 1722.07172278 1928.61631024 3796.614266 1929.80099339 2340.4062478 1930.99419042 2076.5566622 1932.18194593 2656.62292672 1933.36662966 1634.45754741 1934.5426212 753.280496279 1935.72553459 1054.39128289 1936.92817512 722.061652182 1938.1289934 1654.59873715 1939.32767038 1885.21535967 1940.51291715 3150.08207535 1941.6970569 6000.06042357 1942.89888044 14127.0304837 1944.08482162 26025.4383226 1945.27624714 26092.9113083 1946.47285202 24581.3150183 1947.66674318 20263.043938 1948.85675583 11261.9462432 1950.05371232 6319.29828095 1951.23070911 6178.30995277 1952.4117545 4440.1252782 1953.59944316 5266.92111703 1954.7868843 6536.82313014 1955.97779048 4259.86163003 1957.16572693 4097.72505262 1958.35631317 1898.307133 1959.54751318 1961.75188068 1960.74646933 576.038026566 1961.94820783 50.3529743502 1963.14446345 567.98155067 1964.34046981 499.501505554 1965.51571826 275.934299439 1967.8804562 458.212066587 1969.06879645 94.6635917784 1970.25396228 311.181381484 1971.44404062 333.336690198 1972.64595096 680.772213215 1973.83293434 473.317958892 1975.00786022 472.310899405 1976.20545306 470.296780431 1977.40195471 690.842808085 1978.59552564 203.426016375 1979.78454828 316.216678919 1980.97010589 380.668486087 1982.15870743 276.941358926 1983.47206494 442.099114795 1984.65904071 1199.40784902 1985.84430067 583.087442975 1987.03262391 671.708677832 1988.21980348 349.44964199 1989.41761215 547.84036093 1990.61309741 148.03774459 1991.80989613 583.087442975 1993.00808191 101.713008187 1994.21034005 588.12274041 1995.40088465 550.861539391 1998.03573763 3133.96912356 1999.22321602 6108.82284817 2000.40147672 6402.88421837 2001.59478372 8615.39391132 2002.79308505 6304.19238864 2003.99237345 4085.64033877 2005.18956454 1881.18712172 2006.38426448 1777.45999456 2007.55970676 502.522684015 2008.76659969 429.007341464 2009.96364152 343.407285068 2011.1483141 617.327465533 2012.34539727 1005.04536803 2013.53642134 1210.48550338 2014.73529538 1645.53520176 2015.93314188 806.65464909 2017.12542662 857.00762344 2018.32878385 825.788779343 2019.52621804 116.818900492 2020.72186898 175.228350739 2021.91974246 175.228350739 2023.13015965 358.513177373 2024.33255708 789.534637811 2025.52463479 784.499340376 2026.7085068 1112.80073314 2027.90815707 908.367657278 2029.09666887 1446.13742334 2030.28078194 960.734750602 2031.47920878 955.699453167 2032.67809807 720.047533208 2033.87316545 479.360315814 2035.07087558 437.06381736 2036.26533037 206.447194836 2037.46196721 435.049698386 2038.67391986 429.007341464 2039.84973604 73.5153425513 2041.04490488 318.230797893 2042.24275226 402.823794802 2043.43590179 10.07059487 2044.62492267 141.995387668 2045.81243654 486.409732223 2046.98888467 365.562593782 2048.17628506 270.899002004 2049.37317351 505.543862476 2050.57646681 240.687217394 2051.77236145 639.482774247 2052.95744077 194.362480992 2054.13640732 446.127352743 2055.31128217 208.46131381 2056.50542024 413.901449159 2057.6952892 661.638082962 2058.89050848 821.760541395 2060.0825032 601.214513741 2061.25860206 859.021742414 2062.43347867 658.616904501 2063.6309243 901.318240868 2064.83472521 698.899283981 2066.01076309 1081.58188904 2067.21133445 1152.07605313 2068.40908037 265.863704569 2069.58530006 202.418956888 2070.76145259 260.828407134 2071.95871933 92.6494728044 2073.1340059 429.007341464 2074.33153335 755.294615253 2075.5220929 1161.13958852 2076.69888208 1001.01713008 2077.87348538 1024.17949828 2079.07249842 1107.7654357 2080.26315299 962.748869576 2081.47457691 622.362762968 2082.67563214 200.404837914 2083.8782932 630.419238864 2085.05471992 114.804781518 2086.23063433 304.131965075 2087.4328174 453.176769152 2088.63078031 53.3741528112 2089.81968477 108.762424596 2091.00760392 614.306287072 2092.18403856 576.038026566 2093.37627257 597.186275793 2094.57507945 9.06353538304 2095.76377659 395.774378393 2096.9663699 50.3529743502 2098.16494747 696.885165007 2099.36175792 211.482492271 2100.53775005 445.120293256 2101.76271972 513.600338372 2102.96038821 469.289720944 2104.1681908 1008.06654649 2105.37324155 321.251976354 2106.56767551 367.576712756 2107.75884443 144.009506642 2108.93440402 495.473267606 2110.11557433 322.259035841 2111.30371811 509.572100424 2112.50336515 632.433357838 2113.69772668 967.784167011 2114.88901555 467.27560197 2116.07567841 1150.06193416 2117.26248937 603.228632715 2118.43889762 622.362762968 2119.64857876 1700.92347355 2120.84218077 3951.701427 2122.03736457 5902.37565333 2123.22631859 8584.17506722 2124.40392153 16106.9094351 2125.60602923 6262.90294968 2126.78813618 5637.51900825 2127.98052884 2815.73832566 2129.18194711 629.412179377 2130.38688172 234.644860472 2131.58076291 906.353538304 2132.80541968 1212.49962235 2133.97488878 5299.14702061 2135.15700893 3419.97401787 2136.34831539 1914.42008479 2137.54635192 1307.16321413 2138.7353728 1749.26232893 2139.93096978 3295.09864148 2141.11741066 5331.3729242 2142.29293007 11427.103999 2143.4917047 14366.7106416 2144.6673505 15184.442945 2145.84416753 12740.3095701 2147.04694208 4961.78209247 2148.24005525 4714.04545867 2149.41331019 963.755929063 2150.59874112 709.976938338 2151.79379207 515.614457346 2152.98568151 432.028519925 2154.17434844 509.572100424 2155.35657387 393.760259419 2156.54461852 652.574547579 2157.7371754 1089.63836494 2158.91303292 711.991057312 2160.10365758 909.374716765 2161.28957501 677.751034754 2162.46582021 595.172156819 2163.66857393 355.491998912 2164.86264808 271.906061491 2166.05734919 464.254423509 2167.23291552 544.819182469 2168.43085585 31.2188440971 2169.63368934 295.068429692 2170.82553069 235.651919959 2172.02593549 411.887330185 2173.23647087 305.139024562 2174.44147469 667.680439884 2175.63089234 504.536802989 2176.82933559 400.809675828 2178.03421537 1527.70924178 2179.22942908 1144.01957724 2180.4265495 1816.73531456 2181.60244016 1962.75894017 2182.77915456 840.894671648 2183.97332547 423.972044029 2185.14839533 480.367375301 2186.33978742 368.583772243 2187.51562823 1303.13497618 2188.7166427 1388.73503258 2189.89240902 1489.44098128 2191.08364217 1644.52814228 2192.25867156 1329.31852285 2193.45907138 682.786332189 2194.64678936 524.677992729 2195.84691 420.950865568 2197.03485935 400.809675828 2198.20946646 894.268824459 2199.40614172 704.941640903 2200.61223878 639.482774247 2201.81335969 317.223738406 2203.01174225 1077.55365109 2204.21539155 1431.03153103 2205.41251988 2100.72608989 2206.58813108 3948.68024854 2207.7807774 2624.39702313 2208.98592931 1624.38695254 2210.18594819 1186.31607569 2211.37508784 878.155872667 2212.5794169 528.706230677 2213.76701611 525.685052216 2214.94546977 584.094502462 2216.13910756 463.247364022 2217.33728777 573.016848105 2218.53603132 382.682605061 2219.72785038 264.856645082 2220.92415615 364.555534295 2222.09917879 46.3247364022 2223.27446712 192.348362018 2224.47232476 304.131965075 2225.66188874 115.811841005 2226.84949645 75.5294615253 2228.025666 289.02607277 2229.21547366 354.484939425 2230.40221952 304.131965075 2231.57830226 289.02607277 2232.76372058 217.524849193 2233.96373946 234.644860472 2235.17094734 235.651919959 2236.36849825 317.223738406 2237.57162997 511.586219398 2238.74639338 594.165097332 2239.93669899 842.908790622 2241.12506299 1433.04565001 2242.31629995 1224.5843362 2243.50634837 770.400507558 2244.7025518 683.793391676 2245.87737474 651.567488092 2247.05349355 604.235692202 2248.25885866 362.541415321 2249.45768607 241.694276881 2250.65203323 131.924792798 2251.82786524 478.353256327 2253.05689788 429.007341464 2254.22711975 375.633188652 2255.40273886 358.513177373 2256.60262989 435.049698386 2257.8074824 188.32012407 2259.0124742 795.576994733 2260.22085918 201.411897401 2261.41500517 518.635635807 2262.58938149 504.536802989 2263.7646012 557.9109558 2264.96002722 550.861539391 2266.143801 972.819464446 2267.33469633 981.882999829 2268.53817731 742.202841922 2269.72878437 612.292168098 2270.9125212 345.421404042 2272.09986001 714.005176286 2273.28582377 374.626129165 2274.48058588 207.454254323 2275.67928602 483.388553762 2276.8544896 229.609563037 2278.04713533 153.073042025 2279.23718082 115.811841005 2280.41181902 185.298945609 2281.5860672 35.2470820451 2282.76239421 20.1411897401 2283.9411986 336.357868659 2285.12579112 117.825959979 2286.31508619 1015.1159629 2287.50495544 514.607397859 2288.69129515 705.94870039 2289.87758002 746.23107987 2291.06565458 658.616904501 2292.2505301 1668.69756997 2293.43528802 764.358150636 2294.61764892 1263.85965619 2295.80057903 989.939475725 2296.98619001 283.990775335 2298.16671518 369.59083173 2299.34908546 87.6141753693 2300.53861484 328.301392763 2301.7206432 102.720067674 2302.89522509 196.376599966 2304.07253244 236.658979446 2305.26093808 83.5859374213 2306.43927415 314.202559945 2307.62429277 205.440135349 2308.80075585 362.541415321 2309.97497588 170.193053304 2311.1566626 179.256588687 2312.33285473 252.771931238 2313.50787884 234.644860472 2314.68265516 607.256870663 2315.87354579 401.816735315 2317.04974466 717.026354747 2318.23111995 380.668486087 2319.40633351 1145.02663672 2320.59092838 424.979103516 2321.77323504 715.012235773 2322.94815329 324.273154815 2324.12361346 506.550921963 2325.29985162 540.790944521 2326.47445346 1034.25009315 2327.64953886 960.734750602 2328.82579022 499.501505554 2330.00103925 1233.64787158 2331.17805511 994.97477316 2332.35474575 722.061652182 2333.53137188 263.849585595 2334.71524859 744.216960896 2335.89241929 1392.76327053 2337.07415821 1090.64542443 2338.26165654 1491.45510025 2339.44241133 2004.04837914 2340.62573966 1844.93298019 2341.8017095 1291.05026234 2342.97644388 859.021742414 2344.1515762 781.478161915 2345.32866655 405.844973263 2346.50495222 438.070876847 2347.67976343 152.065982538 2348.85498343 511.586219398 2350.03453677 252.771931238 2351.22109612 205.440135349 2352.40696047 275.934299439 2353.59088645 150.051863564 2354.77413326 241.694276881 2355.95816128 77.5435804993 2357.14035357 364.555534295 2358.3191993 996.988892134 2359.49623891 519.642695294 2360.6758163 486.409732223 2361.8499287 396.78143788 2363.02613959 342.400225581 2364.20047662 361.534355834 2365.37613591 634.447476812 2366.55306526 130.917733311 2367.72858731 237.666038933 2368.91111947 452.169709665 2370.08799956 465.261482996 2371.26439373 467.27560197 2372.44001519 823.774660369 2373.63469929 978.861821368 2374.81267349 642.503952708 2375.98760757 2345.44154523 2377.16434602 918.438252148 2378.33930913 1759.3329238 2379.51620828 408.866151724 2381.87545015 1409.88328181 2383.05807674 857.00762344 2384.23892213 1310.18439259 2385.41375417 643.511012195 2386.59254477 704.941640903 2387.76789644 840.894671648 2388.94356981 1261.84553722 2390.11894523 1011.08772495 2391.29957303 699.906343468 2392.47919294 601.214513741 2393.65580441 425.986163003 2394.83211853 378.654367113 2396.01021354 646.532190657 2397.18462623 607.256870663 2398.36218988 479.360315814 2399.53711106 414.908508646 2400.71480491 330.315511737 2401.89014426 411.887330185 2403.07121047 273.920180465 2404.24737972 286.004894309 2405.42586065 603.228632715 2406.61141739 366.569653269 2407.78833501 376.640248139 2408.97235717 234.644860472 2410.1570623 400.809675828 2411.33241104 306.146084049 2412.51168052 649.553369118 2413.68848876 335.350809172 2414.86262726 1465.27155359 2416.0376848 2748.26534003 2417.21384203 3452.19992145 2418.39466689 2912.41603642 2419.57097544 3309.19747429 2420.74661801 2123.88845809 2421.92140107 946.635917784 2423.09735156 762.344031662 2424.27181322 390.739080958 2425.44823818 278.9554779 2426.62288136 497.48738658 2427.79792102 10.07059487 2428.97257036 196.376599966 2430.14856336 256.800169186 2431.32387985 70.4941640903 2432.50115699 227.595444063 2433.6776148 180.263648174 2434.85218906 225.581325089 2436.02654955 380.668486087 2437.20235811 293.054310718 2438.37724879 328.301392763 2439.55409251 279.962537387 2440.72944917 510.579159911 2441.90496271 380.668486087 2443.08019151 234.644860472 2444.25510038 419.943806081 2445.43160364 436.056757873 2446.60681807 414.908508646 2447.78340197 516.621516833 2448.95876068 313.195500458 2450.13408156 575.030967079 2451.3086919 362.541415321 2452.48563239 111.783603057 2453.65902839 575.030967079 2454.83438915 297.082548666 2456.01058802 555.896836826 2457.18572621 758.315793714 2458.36166555 260.828407134 2459.53665711 909.374716765 2460.71232549 761.336972175 2461.88755018 277.948418413 2463.06328572 526.692111703 2464.23764445 547.84036093 2465.41357822 2463.26750521 2466.58930173 4351.50404334 2467.76428508 4961.78209247 2468.94053791 7040.35287364 2470.1162186 10194.4631869 2471.29253477 7696.95565917 2472.46851077 5616.37075902 2473.64316363 2506.57106315 2474.81883465 1819.75649302 2475.9944781 729.111068591 2477.17116464 408.866151724 2478.34448146 295.068429692 2479.52012345 588.12274041 2480.69647363 120.84713844 2481.87181592 91.6424133174 2483.04663857 463.247364022 2484.22224067 458.212066587 2485.40017997 841.901731135 2486.57440967 788.527578324 2487.74970475 1187.32313518 2488.92668776 835.859374213 2490.10135001 949.657096245 2491.27671986 801.619351655 2492.45271111 1750.26938841 2493.62868886 288.019013283 2494.80396282 306.146084049 2495.98094379 468.282661457 2497.15465532 290.033132257 2498.33059231 83.5859374213 2499.50559443 340.386106607 2500.68153348 183.284826635 2501.85696726 306.146084049 2503.03261951 51.3600338372 2504.2085741 78.5506399863 2505.38392548 131.924792798 2506.55795049 84.5929969083 2507.73814869 381.675545574 2508.91291562 580.066264514 2510.08850952 639.482774247 2511.26451162 865.064099336 2512.43958177 533.741528112 2513.64012703 371.604950704 2514.84022686 587.115680923 2516.02054704 441.092055308 2517.19536412 185.298945609 2518.39814483 518.635635807 2519.59544559 1293.06438131 2520.80068049 600.207454254 2522.01460348 684.800451163 2523.21778857 211.482492271 2524.39318012 446.127352743 2525.59407084 83.5859374213 2526.80413525 448.141471717 2528.01041236 453.176769152 2529.21591793 200.404837914 2530.41513126 254.786050212 2531.61018603 266.870764056 2532.78643651 173.214231765 2533.96126884 286.004894309 2535.15321458 135.953030746 2536.34902183 83.5859374213 2537.55069552 197.383659453 2538.74847105 210.475432784 2539.92334942 94.6635917784 2541.0987181 193.355421505 2542.30808986 301.110786614 2543.49471607 839.887612161 2544.6990114 844.922909596 2545.89670629 1267.88789414 2547.10144971 865.064099336 2548.30682244 389.732021471 2549.48576289 925.487668557 2550.68989019 615.313346559 2551.90573249 676.743975267 2553.10845425 653.581607066 2554.31381643 562.946253235 2555.5245474 1036.26421213 2556.73148872 894.268824459 2557.90641635 513.600338372 2559.1094123 848.951147544 2560.30461926 551.868598878 2561.50009601 709.976938338 2562.69904073 271.906061491 2563.87643605 404.837913776 2565.07163598 210.475432784 2566.24785098 287.011953796 2567.44224593 406.85203275 2568.63954904 380.668486087 2569.83958581 186.306005096 2571.02084645 520.649754781 2572.19687113 703.934581416 2573.4049828 241.694276881 2574.60736557 230.616622524 2575.82256917 559.925074774 2577.02356311 719.040473721 2578.22468637 1528.71630127 2579.42748877 929.515906505 2580.61218189 1679.77522432 2581.80167108 1852.98945609 2582.99364351 910.381776252 2584.1963773 872.113515745 2585.39754044 562.946253235 2586.60343896 403.830854289 2587.79811896 681.779272702 2588.97428293 335.350809172 2590.14985894 913.402954713 2591.35796211 750.259317818 2592.54850436 668.687499371 2593.75969838 382.682605061 2594.96246031 530.720349651 2596.15681891 1017.13008187 2597.33095418 576.038026566 2598.52344302 822.767600882 2599.73483527 106.748305622 2600.92489601 333.336690198 2602.12519612 472.310899405 2603.32373909 235.651919959 2604.4998535 153.073042025 2605.69458511 741.195782435 2606.9003678 1078.56071058 2608.11094716 541.798004008 2609.31312055 1317.233809 2610.51340717 1011.08772495 2611.70937687 480.367375301 2612.90392843 578.05214554 2614.08000999 1001.01713008 2615.28506308 1003.03124906 2616.4906622 370.597891217 2617.68784595 870.099396771 2618.88623731 335.350809172 2620.0908036 387.717902497 2621.30099031 265.863704569 2622.4980943 207.454254323 2623.69297224 175.228350739 2624.89664911 170.193053304 2626.09142734 280.969596874 2627.28765833 163.143636895 2628.46798732 995.981832647 2629.64451902 3324.3033666 2630.84909382 6724.13619473 2632.05312259 20224.7756775 2633.24205315 61825.3960261 2634.44188876 128293.336287 2635.62747305 201097.694841 2636.82797257 246760.79316 2638.0034741 276636.219902 2639.19980274 257784.066305 2640.37546056 216217.685979 2641.55487607 156636.01849 2642.74922411 91261.7448313 2643.94733424 35305.4914954 2645.1512548 9834.94295008 2646.32592379 2416.94276881 2647.50148015 1009.07360598 2648.69802697 548.847420417 2649.89093164 190.334243044 2651.09350061 619.341584507 2652.29582913 894.268824459 2653.47974689 192.348362018 2654.68923507 907.360597791 2655.90081295 501.515624528 2657.10194383 552.875658365 2658.29937187 467.27560197 2659.50020041 530.720349651 2660.69918325 513.600338372 2661.87411704 689.835748598 2663.05044787 633.440417325 2664.24673751 678.758094241 2665.44309606 502.522684015 2666.64190295 489.430910684 2667.84772523 276.941358926 2669.05352669 255.793109699 2670.2569804 311.181381484 2671.45326036 1003.03124906 2672.64477591 1679.77522432 2673.84971492 1405.85504386 2675.05632076 4059.45679211 2676.25679301 4532.774751 2677.43113092 3492.48230093 2678.62987916 2544.83932366 2679.84403147 1391.75621104 2681.05256571 1013.10184393 2682.25454497 297.082548666 2683.45057772 651.567488092 2684.6555792 284.997834822 2685.86281904 336.357868659 2687.03838215 323.266095328 2688.23350583 210.475432784 2689.43371562 382.682605061 2690.63312044 385.703783522 2691.83377509 411.887330185 2693.04163281 305.139024562 2694.22661331 950.664155732 2695.41338643 646.532190657 2696.61737268 1364.56560489 2697.80950669 1128.91368493 2698.99557544 1042.30656905 2700.19328909 582.080383488 2701.39502876 402.823794802 2702.57318829 74.5224020383 2703.77224268 125.882435875 2704.97214016 245.722514829 2706.16504747 317.223738406 2707.36873314 179.256588687 2708.56725469 213.496611245 2709.74210403 156.094220486 2710.94428357 360.527296347 2712.15026919 1563.96338332 2713.35081065 3424.00225581 2714.5425517 4539.82416741 2715.7182802 3005.06550922 2716.9224641 1781.48823251 2718.12626238 1147.0407557 2719.30165217 932.537084966 2720.50866093 727.096949617 2721.7158826 806.65464909 2722.93245743 715.012235773 2724.13842751 606.249811176 2725.3446879 348.442582503 2726.5391028 277.948418413 2727.7144319 297.082548666 2728.91652786 36.2541415321 2730.12415773 240.687217394 2731.3311838 333.336690198 2732.52912619 83.5859374213 2734.90924649 210.475432784 2736.09527682 210.475432784 2737.29456464 273.920180465 2738.48736491 258.81428816 2739.68545832 878.155872667 2740.88042981 1026.19361726 2742.06508803 948.650036758 2743.24076843 1003.03124906 2744.44554029 446.127352743 2745.65815392 592.150978358 2746.85812266 340.386106607 2748.06106905 371.604950704 2749.2695508 587.115680923 2750.47217667 219.538968167 2751.64792804 956.706512654 2752.84236787 2190.35438423 2754.03934429 3997.01910392 2755.23364424 3021.17846101 2756.43733812 4541.83828639 2757.63805142 5829.86737027 2758.82512044 5503.58009648 2760.02593315 5158.15869243 2761.21743931 7048.40934954 2762.41692595 4224.61454798 2763.62134738 4658.65718688 2764.8221466 4059.45679211 2766.02243117 1597.19634639 2767.19790307 1151.06899365 2768.38698612 801.619351655 2769.57456158 779.464042941 2770.75031793 825.788779343 2771.94919491 522.663873755 2773.14888799 770.400507558 2774.34659138 83.5859374213 2775.54298161 488.423851197 2776.72774393 458.212066587 2777.93285948 382.682605061 2779.12423368 293.054310718 2780.33441159 256.800169186 2781.53518969 251.764871751 2782.73487193 209.468373297 2783.91520502 540.790944521 2785.08828137 481.374434788 2786.27043378 417.929687107 2787.48371807 304.131965075 2788.68316805 404.837913776 2789.88466696 348.442582503 2791.09409503 184.291886122 2792.26951385 62.4376881942 2793.44704085 150.051863564 2794.64959164 255.793109699 2795.85732385 375.633188652 2797.06286461 48.3388553762 2798.25997623 236.658979446 2799.45401078 55.3882717852 2800.65025057 10.07059487 2801.83787324 494.466208119 2803.03339985 193.355421505 2804.21900379 180.263648174 2805.40976364 137.96714972 2806.60551341 599.200394767 2807.78551014 456.197947613 2808.96254975 531.727409138 2811.35339886 80.5647589603 2812.52800949 187.313064583 2813.73250776 24.1694276881 2814.9355688 83.5859374213 2816.12181643 24.1694276881 2819.69489976 41.2894389672 2820.90176425 141.995387668 2822.10861554 536.762706573 2823.30121757 488.423851197 2824.47605694 90.6353538304 2825.68284284 722.061652182 2826.88395466 3718.06362602 2828.08486678 7942.678174 2829.28533404 30365.8647116 2830.48853263 61311.7956878 2831.66367111 90020.0404838 2832.84024973 102010.090736 2834.04498816 91171.1094774 2835.23796438 83546.6621013 2836.43858208 45401.2628526 2837.64094667 20911.5902476 2838.84137258 9753.37113163 2840.01524276 3274.95745174 2841.19052405 1610.28811972 2842.37162838 978.861821368 2843.58171949 733.139306539 2844.77865779 574.023907592 2845.98225402 1286.0149649 2847.16163933 624.376881942 2848.33857807 311.181381484 2849.53796793 295.068429692 2850.71314365 191.341302531 2851.91134146 282.983715848 2853.11771329 342.400225581 2854.33212659 580.066264514 2855.51546871 265.863704569 2856.72307687 487.41679171 2857.91674399 478.353256327 2859.10384878 405.844973263 2860.29290954 538.776825547 2861.48621244 497.48738658 2862.68503516 395.774378393 2863.88004331 280.969596874 2865.08446708 603.228632715 2866.28793223 698.899283981 2867.48033339 738.174603974 2868.68771253 801.619351655 2869.87215843 503.529743502 2871.04918426 734.146366026 2872.22538723 1367.58678335 2873.4212238 1063.45481828 2874.61928525 1107.7654357 2875.81830005 865.064099336 2877.01634567 240.687217394 2878.19210965 337.364928146 2879.38766822 157.101279973 2880.58292591 386.710843009 2881.77517341 302.117846101 2882.96225298 280.969596874 2885.35753514 149.044804077 2886.55864315 161.129517921 2887.90604422 208.46131381 2889.11925138 477.34619684 2890.32051599 644.518071682 2891.52789278 1025.18655777 2892.72163673 582.080383488 2893.92765167 795.576994733 2895.12863945 946.635917784 2896.33334797 632.433357838 2897.52276972 411.887330185 2898.72728177 268.88488303 2899.92422887 130.917733311 2901.11498402 79.5576994733 2902.30466765 557.9109558 2903.49388852 1458.22213718 2904.66881234 1036.26421213 2905.85127501 2428.02042317 2907.03707865 3317.25395019 2908.21336755 3544.84939425 2909.40206967 4570.03595202 2910.57841311 3537.79997784 2911.77399338 1562.95632383 2912.95142389 1428.01035257 2914.13559209 573.016848105 2915.31644012 383.689664548 2916.49575007 225.581325089 2918.85527932 135.953030746 2920.03029141 546.833301443 2921.20597621 415.915568133 2922.38176365 416.92262762 2923.5612123 372.612010191 2924.74490573 477.34619684 2925.92526404 263.849585595 2927.1077833 1023.1724388 2928.28402645 492.452089145 2929.45922006 576.038026566 2930.63519635 926.494728044 2931.82722508 453.176769152 2933.01160559 590.136859384 2934.19053197 697.892224494 2935.38727438 496.480327093 2936.57570818 117.825959979 2937.75518616 273.920180465 2938.94012794 158.10833946 2940.13678854 589.129799897 2941.31733776 258.81428816 2942.49847816 841.901731135 2943.67648579 939.586501375 2944.85626317 821.760541395 2946.03608571 443.106174282 2947.21411504 540.790944521 2948.38949897 468.282661457 2949.56394333 368.583772243 2950.74328553 411.887330185 2951.92441303 98.6918297264 2953.09985942 229.609563037 2954.28703371 373.619069678 2955.46708001 11.077654357 2956.65567568 274.927239952 2957.83034906 364.555534295 2959.01736823 233.637800985 2960.19296271 560.932134261 2961.36828212 116.818900492 2962.55532562 349.44964199 2963.73306727 342.400225581 2964.91000513 280.969596874 2966.08524742 215.510730219 2967.26123163 46.3247364022 2968.43637626 95.6706512654 2969.61190154 353.477879938 2970.78934437 478.353256327 2971.97059063 193.355421505 2973.1468895 530.720349651 2974.32122506 432.028519925 2975.4965999 207.454254323 2976.67949569 167.171874843 2977.85430632 220.546027654 2979.02981987 363.548474808 2980.2129702 278.9554779 2981.39783985 137.96714972 2982.57562108 86.6071158823 2983.76083208 322.259035841 2984.94076547 410.880270698 2986.11634617 184.291886122 2987.31224285 223.567206115 2988.49371903 406.85203275 2989.66907891 163.143636895 2990.85133659 278.9554779 2992.03136763 143.002447155 2993.21669886 311.181381484 2994.40941584 270.899002004 2995.59538958 74.5224020383 2996.77376112 200.404837914 2997.96248964 507.55798145 2999.14899532 576.038026566 3000.33340603 21.1482492271 3001.5173455 354.484939425 3002.69427954 69.4871046033 3003.88569099 135.953030746 3005.06865774 236.658979446 3006.25962697 367.576712756 3007.44766429 423.972044029 3008.62269632 190.334243044 3009.81696343 126.889495362 3011.01503631 563.953312722 3012.20468122 967.784167011 3013.40261188 489.430910684 3014.58997562 1115.8219116 3015.7773936 739.181663461 3016.9705314 345.421404042 3018.16058012 164.150696382 3019.34472309 359.52023686 3020.52946371 336.357868659 3021.72094466 494.466208119 3022.89634706 546.833301443 3024.07901412 209.468373297 3025.2601988 222.560146628 3026.4681184 239.680157907 3027.65862781 232.630741498 3028.84027436 47.3317958892 3030.02731259 185.298945609 3031.21293002 144.009506642 3032.39621994 26.1835466621 3033.57678088 191.341302531 3034.77519922 423.972044029 3035.96061314 516.621516833 3037.13672637 366.569653269 3038.32786041 245.722514829 3040.68921601 515.614457346 3041.86530257 298.089608153 3043.05424016 388.724961984 3044.23031205 381.675545574 3045.40677573 319.23785738 3046.58131158 157.101279973 3047.7567087 288.019013283 3048.93245802 352.470820451 3050.10820675 148.03774459 3051.28273791 130.917733311 3052.45807023 341.393166094 3053.63384623 266.870764056 3054.80838971 227.595444063 3055.98436541 446.127352743 3057.16014552 602.221573228 3058.33505028 616.320406046 3059.51099138 450.155590691 3060.68600171 204.433075862 3061.86198944 798.598173194 3063.03764169 511.586219398 3064.21334644 577.045086053 3065.3899318 93.6565322914 3066.56537262 216.517789706 3067.74127941 119.840078953 3068.91625925 119.840078953 3070.09154875 436.056757873 3071.26661597 174.221291252 3072.4416046 297.082548666 3073.61738207 157.101279973 3074.79299473 25.1764871751 3075.96904023 597.186275793 3077.14500098 477.34619684 3078.31912276 201.411897401 3079.49449848 83.5859374213 3080.6703475 312.188440971 3081.84711381 327.294333276 3083.02245375 188.32012407 3084.19921829 428.000281977 3085.37407789 268.88488303 3086.54924042 496.480327093 3087.72570585 650.560428605 3088.90087834 459.219126074 3090.07595319 385.703783522 3091.25232889 503.529743502 3092.42737411 697.892224494 3093.60260438 187.313064583 3094.77788567 486.409732223 3095.95274498 298.089608153 3097.12898959 467.27560197 3098.30369905 84.5929969083 3099.47920643 483.388553762 3100.65521029 339.37904712 3101.83070712 190.334243044 3103.0205447 336.357868659 3104.19584065 537.76976606 3105.37190169 369.59083173 3106.54726011 484.395613249 3107.72288098 700.913402955 3108.89818867 332.329630711 3110.07392244 864.057039849 3111.24981516 750.259317818 3112.42354897 566.974491183 3113.599476 992.960654186 3114.77515288 815.718184473 3115.95146494 1478.36332692 3117.12710723 1033.24303367 3118.30304598 705.94870039 3119.47774165 394.767318906 3120.65373114 245.722514829 3121.82910041 90.6353538304 3123.03251951 332.329630711 3124.23667145 321.251976354 3125.43600941 300.103727127 3126.64126836 763.351091149 3127.84044826 638.47571476 3129.04378438 208.46131381 3130.25018172 256.800169186 3131.45693946 209.468373297 3132.63840478 210.475432784 3133.84530065 351.463760964 3135.05856324 197.383659453 3136.26916225 113.797722031 3137.46909023 416.92262762 3138.64459849 149.044804077 3139.84186113 221.553087141 3141.03775694 205.440135349 3142.24270534 148.03774459 3143.43552086 187.313064583 3144.64126719 381.675545574 3145.83394752 298.089608153 3147.0281287 340.386106607 3148.21880086 321.251976354 3149.42374105 321.251976354 3150.6361368 250.757812264 3151.82977283 505.543862476 3153.0045078 336.357868659 3154.18113569 403.830854289 3155.38771132 353.477879938 3156.59591508 361.534355834 3157.80533875 2103.74726835 3159.02198279 8486.49029698 3160.19631308 16624.5380115 3161.37158645 9695.96874087 3162.56864792 32014.4210919 3163.77067087 17207.6254544 3164.96812383 30116.1139589 3166.17982428 11528.8170072 3167.3822783 11309.2780391 3168.57537476 6170.25347687 3169.77212245 2360.54743754 3170.977755 1199.40784902 3172.18633968 261.835466621 3173.39293115 173.214231765 3174.59093659 145.016566129 3175.79419793 265.863704569 3176.99523644 247.736633803 3178.18476171 556.903896313 3179.37295299 151.058923051 3180.5719543 222.560146628 3181.76939641 267.877823543 3182.9728944 356.499058399 3184.18026474 175.228350739 3185.3563595 321.251976354 3186.53091295 561.939193748 3187.74310723 201.411897401 3188.95186347 180.263648174 3190.15984553 297.082548666 3191.35922542 339.37904712 3192.54650001 201.411897401 3193.75384659 533.741528112 3194.95740558 324.273154815 3196.16415189 249.750752777 3197.36566605 278.9554779 3198.56979892 180.263648174 3199.77237934 216.517789706 3200.94873656 803.633470629 3202.14832994 235.651919959 3203.34052084 96.6777107524 3204.54505224 171.200112791 3205.7217813 172.207172278 3206.90905383 404.837913776 3208.10893371 216.517789706 3209.28469095 63.4447476812 3210.4879995 158.10833946 3211.69232445 287.011953796 3212.89667902 188.32012407 3214.09616038 348.442582503 3215.28790085 451.162650178 3216.46934095 608.26393015 3217.6709035 494.466208119 3218.87277396 463.247364022 3220.0746063 697.892224494 3221.26406969 1181.28077826 3222.47683874 869.092337284 3223.66445994 901.318240868 3224.843257 360.527296347 3226.0432492 625.383941429 3227.24077781 212.489551758 3228.44368461 351.463760964 3229.63934259 254.786050212 3230.81451157 100.7059487 3231.99024769 87.6141753693 3233.18495789 292.047251231 3234.3861052 111.783603057 3235.59298054 126.889495362 3236.79050358 181.270707661 3238.00773676 202.418956888 3239.18674407 192.348362018 3241.5874915 422.964984542 3243.97974264 416.92262762 3245.18511449 177.242469713 3246.37307263 105.741246135 3247.58434553 157.101279973 3249.98377921 126.889495362 3251.18312157 139.981268694 3252.38461198 85.6000563953 3254.77811059 371.604950704 3257.14866102 79.5576994733 3258.34238531 84.5929969083 3259.54240273 9.06353538304 3260.7590242 86.6071158823 3261.93348615 54.3812122982 3263.11077444 36.2541415321 3264.30889571 45.3176769152 3266.71786819 24.1694276881 3267.91730937 27.1906061491 3269.10443264 25.1764871751 3270.27991568 178.2495292 3271.47821115 223.567206115 3272.66789418 461.233245048 3273.86961508 458.212066587 3275.08652334 83.5859374213 3276.28664692 270.899002004 3277.47669358 146.023625616 3278.65211945 151.058923051 3281.05669114 93.6565322914 3282.2614542 89.6282943433 3283.46759055 145.016566129 3285.84758476 164.150696382 3288.19764208 242.701336368 3289.39465106 238.67309842 3290.6033636 362.541415321 3291.77910646 87.6141753693 3292.98985562 275.934299439 3294.1875376 49.3459148632 3295.36237198 250.757812264 3296.55174476 327.294333276 3297.75066308 329.30845225 3298.9461504 321.251976354 3300.14351157 675.73691578 3301.350713 630.419238864 3302.5532069 769.393448071 3303.72953157 678.758094241 3304.93065337 390.739080958 3306.13483932 222.560146628 3307.32903076 334.343749685 3308.53133728 212.489551758 3309.73812582 754.287555766 3310.91375666 630.419238864 3312.09456863 722.061652182 3313.29927216 460.226185561 3314.50539414 293.054310718 3315.70122455 278.9554779 3316.91166433 605.242751689 3318.09733279 491.445029658 3319.29546843 558.918015287 3320.48984198 386.710843009 3321.66718335 572.009788618 3322.87886679 1236.66905004 3324.06647627 267.877823543 3325.27350556 231.623682011 3326.44979797 191.341302531 3327.62731147 176.235410226 3330.02773516 209.468373297 3331.22669336 128.903614336 3332.42783686 334.343749685 3333.60261875 72.5082830643 3334.77804842 132.931852285 3335.97022319 180.263648174 3337.17191154 150.051863564 3338.36372767 363.548474808 3339.56110527 247.736633803 3340.76002095 108.762424596 3341.95499361 11.077654357 3343.15194159 212.489551758 3344.34138094 19.1341302531 3345.53260118 290.033132257 3346.72662078 271.906061491 3347.92924753 586.108621436 3349.13694514 451.162650178 3350.33940943 409.873211211 3351.51629039 593.158037845 3352.7295826 301.110786614 3353.92647956 412.894389672 3355.13886299 506.550921963 3356.3454612 287.011953796 3357.5446109 361.534355834 3358.75405627 364.555534295 3359.96218114 305.139024562 3361.1743939 926.494728044 3362.44213127 122.861257414 3363.63238908 123.868316901 3364.80789177 128.903614336 3365.9892788 204.433075862 3367.17967267 1212.49962235 3368.37627696 896.282943433 3369.57564366 383.689664548 3370.7760599 28.1976656361 3371.9549376 37.2612010191 3373.13395693 110.77654357 3374.33893993 102.720067674 3375.53785298 211.482492271 3376.74257176 172.207172278 3377.93619929 306.146084049 3379.13591495 715.012235773 3380.33608868 73.5153425513 3381.52753296 135.953030746 3382.71592893 284.997834822 3383.90590228 296.075489179 3385.10459275 335.350809172 3386.30007654 652.574547579 3387.50290241 19.1341302531 3388.69647891 273.920180465 3389.89289523 163.143636895 3391.09284462 163.143636895 3392.27527326 255.793109699 3393.48111783 108.762424596 3394.68595685 110.77654357 3395.8813163 156.094220486 3397.05548735 227.595444063 3398.23095134 403.830854289 3399.44046093 102.720067674 3400.63147238 23.1623682011 3401.84146407 524.677992729 3403.03454968 703.934581416 3404.24697328 858.014682927 3405.42360645 1109.77955468 3406.6042322 1089.63836494 3407.81386173 1112.80073314 3409.00989771 778.456983454 3410.20793863 327.294333276 3411.40508339 266.870764056 3413.75574245 175.228350739 3414.95674724 76.5365210123 3416.13979434 107.755365109 3417.33869976 102.720067674 3418.53498119 83.5859374213 3419.73542265 193.355421505 3420.94674129 312.188440971 3422.12235513 455.190888126 3423.33348081 923.473549583 3424.53844036 747.238139357 3425.72776416 554.889777339 3426.93972649 490.437970171 3428.14324178 613.299227585 3429.32807155 875.134694206 3430.50191973 416.92262762 3431.71032143 322.259035841 3432.91923778 404.837913776 3434.12518645 109.769484083 3435.3280736 146.023625616 3436.51892083 73.5153425513 3437.69747654 349.44964199 3438.8841482 473.317958892 3440.09183173 431.021460438 3441.29316496 660.631023475 3442.49850397 813.704065499 3443.69606425 804.640530116 3444.9042598 255.793109699 3446.09055845 240.687217394 3447.28691114 170.193053304 3448.47926362 279.962537387 3449.67340433 338.371987633 3450.84808329 77.5435804993 3452.02332616 108.762424596 3453.21533085 595.172156819 3454.39212472 268.88488303 3455.5664594 209.468373297 3456.76413787 504.536802989 3459.13468331 302.117846101 3460.31404047 164.150696382 3461.49329293 138.974209207 3462.69069927 181.270707661 3463.86541781 306.146084049 3465.0687032 449.148531204 3466.24277484 396.78143788 3467.44604175 373.619069678 3468.64159914 368.583772243 3469.81598192 415.915568133 3471.01852861 341.393166094 3472.21874309 293.054310718 3473.41737403 78.5506399863 3474.6136971 152.065982538 3475.78908924 191.341302531 3476.99509861 934.55120394 3478.17119162 1435.05976898 3479.36932961 2031.23898529 3480.55780006 3362.57162711 3481.75569465 5649.60372209 3482.94853275 4800.65257455 3484.14850647 4104.77446903 3485.32420389 3657.6400568 3486.49862684 2991.97373589 3487.69148048 1579.06927562 3488.90811279 1513.61040897 3490.1177432 643.511012195 3491.30271314 995.981832647 3492.50643019 196.376599966 3493.72002034 198.39071894 3494.90970132 192.348362018 3496.08542278 37.2612010191 3497.28022037 95.6706512654 3498.485089 42.2964984542 3499.66550567 231.623682011 3500.86292285 407.859092237 3502.03998856 90.6353538304 3503.25367783 137.96714972 3504.42709758 112.790662544 3505.62278811 106.748305622 3506.80266051 154.080101512 3507.99569889 306.146084049 3510.34830777 63.4447476812 3511.52403509 104.734186648 3512.70381687 118.833019466 3513.88621795 121.854197927 3515.06384348 108.762424596 3516.24591817 152.065982538 3517.42094698 86.6071158823 3518.60160147 269.891942517 3519.78390314 86.6071158823 3520.95917622 17.1200112791 3522.13988466 48.3388553762 3523.32138342 23.1623682011 3524.50954655 74.5224020383 3525.69114735 85.6000563953 3526.86687702 390.739080958 3528.04696877 237.666038933 3529.22318347 253.778990725 3530.39983423 373.619069678 3531.57540056 465.261482996 3532.76049191 10.07059487 3533.94306073 209.468373297 3535.11849157 294.061370205 3536.29496639 22.1553087141 3537.47878621 231.623682011 3538.6654652 267.877823543 3539.84547103 381.675545574 3541.020384 250.757812264 3542.19539257 67.4729856293 3543.37717724 441.092055308 3544.5553526 358.513177373 3545.72907117 116.818900492 3546.90498119 561.939193748 3548.08757024 309.16726251 3549.26606114 145.016566129 3550.44647605 54.3812122982 3551.62673759 51.3600338372 3552.80781201 20.1411897401 3553.98342291 106.748305622 3555.16821661 82.5788779343 3556.35726183 151.058923051 3557.54826888 92.6494728044 3558.73086585 389.732021471 3559.91591878 132.931852285 3561.09182763 42.2964984542 3562.28022066 274.927239952 3563.46930195 95.6706512654 3564.65620646 101.713008187 3565.83991103 173.214231765 3567.02503375 112.790662544 3568.19889806 216.517789706 3569.38180177 245.722514829 3570.55757748 190.334243044 3571.73236084 223.567206115 3572.91104147 21.1482492271 3574.08820542 173.214231765 3575.2732604 33.2329630711 3576.45272577 319.23785738 3577.63388992 48.3388553762 3578.81038116 32.2259035841 3579.98661698 66.4659261423 3581.17239951 123.868316901 3582.3511778 185.298945609 3583.53150825 143.002447155 3584.71341432 255.793109699 3585.88914898 236.658979446 3587.06434669 42.2964984542 3588.23897052 64.4518071682 3589.41419082 265.863704569 3590.59110961 305.139024562 3591.76533872 86.6071158823 3592.94794772 55.3882717852 3594.13290212 87.6141753693 3595.31169682 9.06353538304 3596.49563922 169.185993817 3597.67799367 26.1835466621 3598.86825588 61.4306287072 3600.04354538 200.404837914 3602.40361949 76.5365210123 3604.76465047 259.821347647 3605.9413722 262.842526108 3607.12354161 117.825959979 3608.29850854 322.259035841 3609.47437223 122.861257414 3610.6491418 80.5647589603 3611.82611455 66.4659261423 3613.00577522 60.4235692202 3614.18089317 274.927239952 3615.35652519 265.863704569 3616.53138684 627.398060403 3617.70678455 720.047533208 3618.88272565 1292.05732183 3620.05835943 638.47571476 3621.23413426 760.329912688 3622.40972288 473.317958892 3623.58534082 1400.81974642 3624.76054704 772.414626532 3625.93848868 1171.21018339 3627.11438345 504.536802989 3628.28997735 584.094502462 3629.46561963 252.771931238 3630.64144226 620.348643994 3631.81857219 469.289720944 3632.99452883 300.103727127 3634.16829373 362.541415321 3635.34361285 628.40511989 3636.51921613 1159.12546954 3637.69622525 848.951147544 3638.87123382 343.407285068 3640.04705234 754.287555766 3641.22254565 844.922909596 3642.39909788 132.931852285 3643.57451671 840.894671648 3644.74916781 664.659261423 3645.92497959 1782.495292 3647.10044563 1552.88572896 3648.27577266 1339.38911772 3649.45142022 523.670933242 3650.62708098 397.788497367 3651.80251066 224.574265602 3652.97673508 299.09666764 3654.15307295 217.524849193 3655.32844925 10.07059487 3656.51197905 119.840078953 3657.68726327 128.903614336 3658.86262667 120.84713844 3660.03822526 513.600338372 3661.21295114 499.501505554 3662.38832304 85.6000563953 3663.56457763 255.793109699 3664.73941025 431.021460438 3665.91403114 186.306005096 3667.08954557 498.494446067 3668.26554121 547.84036093 3669.44092426 936.565322914 3670.6154522 473.317958892 3671.790698 1435.05976898 3672.96684116 895.275883946 3674.14282448 770.400507558 3675.31851251 1196.38667056 3676.49410963 447.13441223 3677.66914694 617.327465533 3678.84480652 1249.76082337 3680.02007872 1526.7021823 3681.19477235 1544.82925306 3682.39426074 1532.74453922 3683.57073556 927.501787531 3684.74576319 788.527578324 3685.94021093 494.466208119 3687.15028063 330.315511737 3688.35972776 18.1270707661 3689.57333316 22.1553087141 3690.78201667 100.7059487 3691.95774106 225.581325089 3694.34032143 397.788497367 3695.53569525 313.195500458 3696.74177501 130.917733311 3697.93744061 293.054310718 3699.12880719 219.538968167 3700.30390344 353.477879938 3701.49934882 358.513177373 3702.70916427 52.3670933242 3703.90582809 205.440135349 3705.10655136 164.150696382 3706.30453686 316.216678919 3707.49352372 26.1835466621 3708.6724759 132.931852285 3709.87533549 98.6918297264 3712.2823561 44.3106174282 3714.70486289 24.1694276881 3717.09779935 216.517789706 3718.30393804 491.445029658 3719.50467187 444.113233769 3720.70606756 96.6777107524 3721.90391024 94.6635917784 3723.07917277 283.990775335 3724.26457584 313.195500458 3725.46029393 357.506117886 3726.6706475 194.362480992 3727.87030568 278.9554779 3729.06339803 238.67309842 3730.27068978 152.065982538 3731.44647722 273.920180465 3732.63074366 318.230797893 3733.83189126 216.517789706 3735.03595375 462.240304535 3736.23924441 1293.06438131 3737.43046701 898.297062407 3738.61170184 854.993504466 3739.81442917 856.000563953 3741.02485868 588.12274041 3742.2336158 617.327465533 3743.43238867 743.209901409 3744.63439959 163.143636895 3745.8311294 367.576712756 3747.04256563 66.4659261423 3748.2215835 58.4094502462 3749.4274659 45.3176769152 3750.62607191 38.2682605061 3751.82320933 81.5718184473 3753.02255199 263.849585595 3754.21492939 111.783603057 3756.58630942 392.753199932 3757.79860135 753.280496279 3758.99595725 757.308734227 3760.19730631 1706.96583047 3761.39960579 1221.56315774 3762.60147654 1182.28783774 3763.80839469 1542.81513409 3764.99931905 1544.82925306 3766.20007077 898.297062407 3767.40938945 849.958207031 3768.60905468 424.979103516 3769.82073079 640.489833734 3771.04749984 1486.41980282 3772.22255005 749.252258331 3773.42707177 1571.01279973 3774.62851115 1318.24086849 3775.84495725 1225.59139568 3777.05359179 351.463760964 3778.27026662 422.964984542 3779.4736828 95.6706512654 3780.66859036 179.256588687 3781.87511027 62.4376881942 3783.08106921 132.931852285 3784.29649099 122.861257414 3785.49747877 205.440135349 3786.70186002 227.595444063 3787.89369844 238.67309842 3789.09506862 242.701336368 3790.2929245 210.475432784 3791.49021705 337.364928146 3792.68270032 313.195500458 3793.87990695 211.482492271 3795.24931663 606.249811176 3796.45546559 74.5224020383 3797.66252098 357.506117886 3798.86638495 269.891942517 3800.06983396 385.703783522 3801.27508177 391.746140445 3802.45150321 185.298945609 3803.63308906 114.804781518 3804.81342596 84.5929969083 3806.03217729 192.348362018 3808.43913603 9.06353538304 3810.82540313 42.2964984542 3812.00152018 21.1482492271 3813.20223641 97.6847702394 3814.3842202 19.1341302531 3815.56567408 325.280214302 3816.75354513 227.595444063 3817.95588919 334.343749685 3819.13345108 1211.49256287 3820.30816141 579.059205027 3821.51083244 864.057039849 3822.71190262 392.753199932 3823.90092732 619.341584507 3825.10675165 191.341302531 3826.29191865 318.230797893 3827.46907029 269.891942517 3828.66747894 255.793109699 3829.86302549 354.484939425 3831.06654283 257.807228673 3832.26832092 181.270707661 3833.46775213 42.2964984542 3834.66571241 211.482492271 3835.84049137 98.6918297264 3838.23500257 173.214231765 3839.44827894 68.4800451163 3840.65088399 306.146084049 3841.84931024 666.673380397 3843.05385747 904.339419329 3844.24944537 809.675827551 3845.42807556 957.713572141 3846.61901018 1169.19606441 3847.81784434 2437.08395855 3849.01567794 1745.23409098 3850.20502784 1221.56315774 3851.37963144 969.798285985 3852.5828441 995.981832647 3853.78262486 560.932134261 3854.98025993 475.332077866 3856.1725001 134.945971259 3857.37830859 101.713008187 3858.55336731 12.084713844 3859.7588808 98.6918297264 3860.95808386 23.1623682011 3862.16651254 30.2117846101 3863.37151108 28.1976656361 3864.57728498 141.995387668 3865.78123486 68.4800451163 3866.96723294 200.404837914 3868.14759476 67.4729856293 3869.32383234 233.637800985 3870.52134424 283.990775335 3871.71774062 130.917733311 3872.91672317 376.640248139 3874.11356118 141.995387668 3876.46628589 35.2470820451 3877.66559746 27.1906061491 3878.86138447 165.157755869 3881.26453713 386.710843009 3882.46795917 38.2682605061 3883.64678496 362.541415321 3884.83398212 103.727127161 3886.02861461 108.762424596 3887.21792317 158.10833946 3888.41784 37.2612010191 3889.59622064 21.1482492271 3890.78611423 48.3388553762 3891.98928144 311.181381484 3893.18481391 205.440135349 3894.39292939 80.5647589603 3895.59265796 118.833019466 3896.78771684 9.06353538304 3897.97994821 145.016566129 3899.17999114 73.5153425513 3900.37646846 55.3882717852 3901.55293389 313.195500458 3902.75933035 164.150696382 3903.95398454 96.6777107524 3905.15693474 270.899002004 3906.35293465 125.882435875 3907.5340167 289.02607277 3908.74084482 77.5435804993 3909.94756415 280.969596874 3911.14557223 144.009506642 3913.55640654 1108.77249519 3914.74002607 201.411897401 3915.92136793 350.456701477 3917.11926692 290.033132257 3920.71891157 112.790662544 3921.90482254 1062.44775879 3923.09402817 760.329912688 3924.26855053 80.5647589603 3925.46762662 1189.33725415 3926.6580334 432.028519925 3927.86530784 763.351091149 3929.06270333 130.917733311 3930.2548781 111.783603057 3932.60646001 94.6635917784 3933.79593484 98.6918297264 3934.99238929 169.185993817 3936.18494998 314.202559945 3937.38197039 253.778990725 3938.57502726 556.903896313 3939.77430979 286.004894309 3940.95083358 57.4023907592 3942.13818646 107.755365109 3943.35171737 100.7059487 3944.55184124 275.934299439 3945.74337057 401.816735315 3946.91903602 116.818900492 3948.09385281 128.903614336 3950.47827625 192.348362018 3951.68054318 278.9554779 3952.87756477 97.6847702394 3954.07610656 212.489551758 3955.25705664 186.306005096 3956.46768469 127.896554849 3957.67079823 306.146084049 3958.87481439 515.614457346 3960.08324189 161.129517921 3961.2877208 290.033132257 3962.48910446 105.741246135 3963.66822379 222.560146628 3964.85643384 531.727409138 3966.03133156 102.720067674 3967.22720479 758.315793714 3968.42493663 479.360315814 3969.61504135 625.383941429 3970.79532195 173.214231765 3971.97083491 422.964984542 3973.17064735 181.270707661 3974.36206906 353.477879938 3975.55078701 120.84713844 3976.73492764 296.075489179 3977.93039589 97.6847702394 3980.30821391 197.383659453 3981.49579816 47.3317958892 3982.67018534 83.5859374213 3985.0369118 34.2400225581 3986.23408265 141.995387668 3987.4086229 232.630741498 3988.58363118 86.6071158823 3989.78506645 152.065982538 3990.9783154 292.047251231 3992.167331 194.362480992 3993.36332299 158.10833946 3994.56476003 150.051863564 3995.7403243 329.30845225 3996.91547451 141.995387668 3998.11097795 141.995387668 3999.29879563 226.588384576 4000.49314836 229.609563037 4001.69013857 213.496611245 4002.86570197 373.619069678 4005.22683647 272.913120978 4006.41145598 307.153143536 4007.59185241 283.990775335 4008.778866 384.696724035 4009.95370361 117.825959979 4011.13009103 506.550921963 4012.30994466 263.849585595 4013.50534194 331.322571224 4014.68631226 103.727127161 4015.88056969 364.555534295 4017.07943083 118.833019466 4019.44548076 74.5224020383 4020.6214811 109.769484083 4021.81475438 98.6918297264 4023.00110582 101.713008187 4024.19978661 213.496611245 4025.40144563 107.755365109 4026.59426115 151.058923051 4027.76939611 51.3600338372 4028.94629086 164.150696382 4030.14999559 150.051863564 4031.33957335 310.174321997 4032.52868397 125.882435875 4033.73280775 269.891942517 4034.92747484 243.708395855 4036.1230903 165.157755869 4038.47378338 178.2495292 4039.67606673 553.882717852 4040.87213908 383.689664548 4042.06282972 345.421404042 4043.25286876 103.727127161 4044.42853948 446.127352743 4045.6031202 83.5859374213 4046.77895632 196.376599966 4047.95477367 44.3106174282 4049.1444526 213.496611245 4051.51132569 165.157755869 4052.68574424 743.209901409 4053.86166716 235.651919959 4055.03625932 327.294333276 4056.21291624 122.861257414 4057.3875345 130.917733311 4058.56251667 120.84713844 4059.73833725 378.654367113 4060.92345763 39.2753199932 4062.09965913 211.482492271 4063.28257047 671.708677832 4064.45910657 216.517789706 4065.63385239 672.715737319 4066.80913104 888.226467537 4067.98424108 1471.31391051 4069.16044522 587.115680923 4070.336179 1456.20801821 4071.51200075 323.266095328 4072.68838465 809.675827551 4073.86378911 623.369822455 4075.03887686 374.626129165 4076.22032488 653.581607066 4077.40469982 90.6353538304 4078.58085118 630.419238864 4079.75868549 359.52023686 4080.9406555 463.247364022 4082.12463045 396.78143788 4083.3048216 598.19333528 4084.48165741 191.341302531 4085.65824805 210.475432784 4086.83432229 186.306005096 4088.01064139 51.3600338372 4089.18895429 739.181663461 4090.36402503 223.567206115 4091.53990015 170.193053304 4092.71454392 332.329630711 4093.8901906 151.058923051 4095.06649386 134.945971259 4096.24719468 168.17893433 4097.42347947 37.2612010191 4098.59877015 103.727127161 4099.77340043 53.3741528112 4100.9491952 393.760259419 4102.12474921 354.484939425 4103.30182988 450.155590691 4104.47821936 453.176769152 4105.65622904 133.938911772 4106.83106488 107.755365109 4108.00640013 125.882435875 4109.18158993 85.6000563953 4110.36060985 52.3670933242 4112.7173421 381.675545574 4113.89381251 98.6918297264 4115.06813429 362.541415321 4116.24373816 69.4871046033 4117.42294781 418.936746594 4118.59997159 322.259035841 4119.77611327 214.503670732 4120.95633288 474.325018379 4122.13510266 188.32012407 4123.31027281 40.2823794802 4124.48625702 155.087160999 4125.66151221 129.910673824 4126.83785506 97.6847702394 4128.01288064 265.863704569 4129.19052288 232.630741498 4130.36518923 129.910673824 4131.54026466 74.5224020383 4132.71561633 344.414344555 4135.07049143 26.1835466621 4136.24910373 112.790662544 4137.42444954 215.510730219 4138.60185102 280.969596874 4140.95540093 41.2894389672 4142.12986142 171.200112791 4144.49074196 65.4588666553 4145.66538925 167.171874843 4146.84342591 43.3035579412 4148.01766441 309.16726251 4149.19360785 76.5365210123 4150.36906686 395.774378393 4151.54791845 233.637800985 4152.72435162 155.087160999 4153.90150003 209.468373297 4155.07699422 459.219126074 4156.25393442 264.856645082 4157.43226726 393.760259419 4158.6075943 403.830854289 4159.78261343 492.452089145 4160.95825981 388.724961984 4162.13483463 232.630741498 4163.31029421 384.696724035 4164.48605614 210.475432784 4165.66750533 336.357868659 4166.84329336 790.541697298 4168.01858081 90.6353538304 4169.19428614 89.6282943433 4170.36883226 70.4941640903 4171.54409771 491.445029658 4172.72009424 193.355421505 4173.89441338 84.5929969083 4176.2460994 206.447194836 4178.59869302 68.4800451163 4180.95100572 143.002447155 4182.1255489 38.2682605061 4184.47694636 100.7059487 4185.65308629 45.3176769152 4188.00389315 94.6635917784 4189.17936358 279.962537387 4190.35640584 25.1764871751 4192.70649717 45.3176769152 4193.8825022 64.4518071682 4195.05921132 314.202559945 4196.23381139 288.019013283 4197.40775576 747.238139357 4198.58244469 276.941358926 4199.75981274 164.150696382 4200.93472102 132.931852285 4202.10972402 286.004894309 4203.28507569 511.586219398 4204.46008866 179.256588687 4205.63619897 231.623682011 4206.81105475 65.4588666553 4207.98708324 67.4729856293 4209.16136221 121.854197927 4210.33739774 177.242469713 4211.51442562 118.833019466 4212.69003125 56.3953312722 4213.8646451 321.251976354 4215.04062697 94.6635917784 4216.21569917 51.3600338372 4217.39092035 84.5929969083 4220.91605427 65.4588666553 4223.26998657 11.077654357 4227.97220937 414.908508646 4229.14736427 324.273154815 4230.32332707 169.185993817 4231.49874238 336.357868659 4232.67367822 264.856645082 4233.84936742 503.529743502 4235.02364199 171.200112791 4236.19942591 253.778990725 4237.3814141 192.348362018 4239.78017477 380.668486087 4240.98437656 143.002447155 4242.18092924 102.720067674 4244.54710146 188.32012407 4245.73970086 206.447194836 4246.91499329 362.541415321 4248.10557836 171.200112791 4249.28913924 110.77654357 4250.46479589 509.572100424 4251.64051266 419.943806081 4252.82387471 872.113515745 4254.01650461 484.395613249 4255.20560203 670.701618345 4256.39179511 594.165097332 4257.56804823 681.779272702 4258.74381895 279.962537387 4259.91846155 325.280214302 4261.12117333 151.058923051 4262.30814792 353.477879938 4263.49567587 155.087160999 4265.89263952 134.945971259 4267.06769882 144.009506642 4268.24341823 203.426016375 4269.42718848 46.3247364022 4270.61535191 220.546027654 4271.80842167 55.3882717852 4272.99633202 161.129517921 4274.17332002 13.0917733311 4276.52619458 19.1341302531 4278.89406559 46.3247364022 4280.09261412 364.555534295 4281.28093707 83.5859374213 4282.46902835 216.517789706 4283.64749902 342.400225581 4284.85248788 280.969596874 4287.23297299 147.030685103 4288.42324869 218.53190868 4289.60746204 19.1341302531 4294.33957687 113.797722031 4296.70089758 189.327183557 4297.89034279 201.411897401 4299.07886544 100.7059487 4300.25453588 149.044804077 4301.45343719 114.804781518 4302.64840516 133.938911772 4305.04170466 198.39071894 4306.23228826 21.1482492271 4307.42855825 231.623682011 4308.60522661 139.981268694 4309.7976568 264.856645082 4313.36545989 214.503670732 4314.55742147 67.4729856293 4315.75855031 254.786050212 4316.95984365 57.4023907592 4318.15662741 278.9554779 4319.36170015 48.3388553762 4320.53763158 89.6282943433 4321.71901098 442.099114795 4324.07412185 113.797722031 4325.24816211 156.094220486 4326.43888853 11.077654357 4327.63012813 141.995387668 4328.82293075 102.720067674 4330.02556834 53.3741528112 4331.20238069 111.783603057 4332.37589017 205.440135349 4333.57564777 257.807228673 4334.7675592 195.369540479 4335.94253904 22.1553087141 4337.12830808 297.082548666 4339.49718464 116.818900492 4340.68689348 410.880270698 4341.88577573 101.713008187 4343.08073373 134.945971259 4344.27352638 195.369540479 4345.4490628 81.5718184473 4346.63585616 858.014682927 4347.81755227 114.804781518 4348.99300101 396.78143788 4350.19058475 747.238139357 4351.39333378 140.988328181 4352.59601214 277.948418413 4353.78886227 300.103727127 4356.1574925 128.903614336 4357.34528144 251.764871751 4358.53829138 261.835466621 4359.72281148 174.221291252 4360.91705718 40.2823794802 4362.10210219 92.6494728044 4364.46448006 320.244916867 4366.82337238 19.1341302531 4370.38844797 156.094220486 4371.56587555 62.4376881942 4372.764015 435.049698386 4373.96196296 51.3600338372 4375.1584567 315.209619432 4376.33268024 158.10833946 4377.50963423 484.395613249 4378.684912 249.750752777 4379.86053229 216.517789706 4381.03633937 197.383659453 4382.2263749 232.630741498 4383.41741303 107.755365109 4384.60671338 36.2541415321 4385.78158412 351.463760964 4389.32645809 20.1411897401 4391.71439377 51.3600338372 4394.07436906 205.440135349 4395.25060693 52.3670933242 4396.43387749 111.783603057 4397.61690202 20.1411897401 4398.80835071 132.931852285 4399.98957351 263.849585595 4402.36337841 50.3529743502 4403.53888404 151.058923051 4405.91066552 117.825959979 4407.09627445 217.524849193 4408.28071068 39.2753199932 4410.67604269 265.863704569 4413.04213338 103.727127161 4414.21767948 261.835466621 4416.60369702 174.221291252 4417.80499858 346.428463529 4418.97959748 749.252258331 4420.17470269 350.456701477 4421.34912476 1205.45020594 4422.53136133 895.275883946 4423.73301038 2136.98023142 4424.90808142 2030.2319258 4426.11281868 2062.45782938 4427.32729737 3120.87735023 4428.5111946 2489.45105187 4429.6875659 2098.71197092 4430.87430003 1448.15154231 4432.05078745 1277.95848901 4433.25002923 608.26393015 4434.43603668 301.110786614 4437.97635239 263.849585595 4439.15575383 219.538968167 4440.33757779 71.5012235773 4443.87565836 9.06353538304 4445.05184843 265.863704569 4449.77365555 62.4376881942 4450.96481627 98.6918297264 4452.14360042 94.6635917784 4453.32051159 19.1341302531 4454.49587675 136.960090233 4455.67224981 93.6565322914 4456.84753726 283.990775335 4458.03081369 234.644860472 4459.20959432 9.06353538304 4460.38567236 147.030685103 4461.56008417 295.068429692 4462.7373622 62.4376881942 4465.09511172 176.235410226 4466.27112379 116.818900492 4467.45042582 129.910673824 4469.80141449 152.065982538 4472.17138546 235.651919959 4473.35282321 237.666038933 4474.52742212 74.5224020383 4475.70259901 280.969596874 4476.87816006 70.4941640903 4478.05932217 60.4235692202 4480.41795115 135.953030746 4481.59824641 80.5647589603 4482.7773458 67.4729856293 4485.13465428 83.5859374213 4488.68114258 30.2117846101 4491.03720915 116.818900492 4492.21297518 190.334243044 4494.56600223 102.720067674 4495.74036976 128.903614336 4496.92593675 70.4941640903 4498.12456534 167.171874843 4499.31474632 60.4235692202 4500.49038684 385.703783522 4501.66585493 164.150696382 4502.84123446 344.414344555 4504.03869358 201.411897401 4505.22023221 91.6424133174 4506.39587127 398.795556854 4507.58721937 328.301392763 4508.77021399 158.10833946 4509.95321271 354.484939425 4511.12727731 486.409732223 4512.30595912 423.972044029 4513.48302747 275.934299439 4514.67213397 312.188440971 4515.84736365 84.5929969083 4517.02994479 483.388553762 4518.21368221 261.835466621 4519.39075554 245.722514829 4520.5776706 334.343749685 4522.94289181 154.080101512 4525.32487279 40.2823794802 4527.68391642 147.030685103 4528.87109218 286.004894309 4530.0719263 20.1411897401 4531.25086235 371.604950704 4532.42654862 227.595444063 4533.60103374 216.517789706 4534.77712146 162.136577408 4535.95310215 179.256588687 4539.48052253 104.734186648 4541.834222 871.106456258 4543.00998539 2545.84638315 4544.18497285 3672.7459491 4545.36191891 7139.04470337 4546.53672456 7707.02625404 4547.71266331 10163.2443428 4548.88701764 9316.30731427 4550.06329452 5977.90511486 4551.23918254 4121.89448031 4552.41397264 1786.52352994 4553.58933018 405.844973263 4554.765822 379.6614266 4555.94162029 32.2259035841 4558.29385263 210.475432784 4559.47064709 172.207172278 4562.99911964 95.6706512654 4565.34847815 294.061370205 4566.52418963 475.332077866 4567.7005404 130.917733311 4568.87645482 91.6424133174 4570.05223845 89.6282943433 4571.22675407 203.426016375 4573.5781093 160.122458434 4574.7637889 175.228350739 4577.11737078 85.6000563953 4578.29246028 120.84713844 4579.46853071 10.07059487 4580.64532106 111.783603057 4582.99646134 26.1835466621 4585.34692657 170.193053304 4586.52330842 73.5153425513 4587.69948823 158.10833946 4588.8745965 169.185993817 4591.22534706 94.6635917784 4592.40001077 94.6635917784 4593.57589322 223.567206115 4594.75114284 53.3741528112 4595.92709772 123.868316901 4597.10156789 206.447194836 4599.45157389 9.06353538304 4601.80320096 22.1553087141 4602.97888547 9.06353538304 4604.15311488 124.875376388 4606.50374344 188.32012407 4607.67886814 96.6777107524 4612.38072408 39.2753199932 4614.73136614 78.5506399863 4617.08309702 80.5647589603 4618.2586484 106.748305622 4619.43399596 65.4588666553 4620.61000158 141.995387668 4621.7853207 188.32012407 4622.95991022 150.051863564 4624.13530265 73.5153425513 4625.31023791 105.741246135 4626.4862881 24.1694276881 4628.83624806 120.84713844 4631.18956307 437.06381736 4632.36491123 242.701336368 4633.54124293 216.517789706 4635.89049 41.2894389672 4637.06598038 133.938911772 4638.24204934 53.3741528112 4639.41615118 136.960090233 4640.59197381 155.087160999 4641.7661041 161.129517921 4644.11809745 223.567206115 4645.29395292 62.4376881942 4646.46809787 127.896554849 4647.64410701 320.244916867 4648.81976014 686.814570137 4649.9947256 328.301392763 4651.16960368 346.428463529 4652.34630341 282.983715848 4653.5238134 203.426016375 4655.89185302 185.298945609 4657.07087001 252.771931238 4658.25997799 137.96714972 4661.7939777 189.327183557 4662.96837074 218.53190868 4664.15073663 232.630741498 4665.32779384 160.122458434 4666.51163242 366.569653269 4667.68601022 201.411897401 4668.86201642 209.468373297 4671.21289102 293.054310718 4673.57575627 256.800169186 4674.76455428 506.550921963 4675.94995647 864.057039849 4677.12571605 1271.91613209 4678.30148296 980.875940342 4679.49555095 976.847702394 4680.68821926 821.760541395 4681.87226107 283.990775335 4683.05069215 172.207172278 4684.22900592 245.722514829 4687.7739318 62.4376881942 4690.12922155 83.5859374213 4691.31284988 80.5647589603 4694.84220863 229.609563037 4696.02718796 143.002447155 4697.20475512 27.1906061491 4698.37948745 299.09666764 4699.55679568 75.5294615253 4702.07826076 9.06353538304 4705.60489905 172.207172278 4706.7803777 133.938911772 4707.95578303 48.3388553762 4709.1313089 125.882435875 4710.30872475 62.4376881942 4711.49844825 127.896554849 4712.67284628 154.080101512 4713.84809502 78.5506399863 4718.55586989 137.96714972 4719.73478131 224.574265602 4720.91271856 58.4094502462 4722.09134113 49.3459148632 4723.27241321 109.769484083 4724.44858744 45.3176769152 4726.80439331 112.790662544 4727.98030744 310.174321997 4729.15567084 87.6141753693 4730.33278112 170.193053304 4731.51139049 388.724961984 4732.68771487 408.866151724 4733.86285394 705.94870039 4735.03720416 278.9554779 4736.21351652 467.27560197 4737.38906848 341.393166094 4738.56529081 271.906061491 4739.74021228 494.466208119 4740.91461764 485.402672736 4742.09081357 266.870764056 4745.62899443 191.341302531 4746.80525312 339.37904712 4747.98089481 106.748305622 4749.15620748 170.193053304 4750.33204331 97.6847702394 4755.04034691 44.3106174282 4758.56887372 202.418956888 4759.74540924 132.931852285 4762.0963595 83.5859374213 4763.27166395 26.1835466621 4764.4464347 103.727127161 4765.62437693 166.164815356 4766.79980866 368.583772243 4769.15142782 156.094220486 4773.85363918 60.4235692202 4776.20382289 158.10833946 4779.7303817 69.4871046033 4780.90516007 74.5224020383 4782.08018682 241.694276881 4783.25508308 219.538968167 4786.78703386 235.651919959 4787.96108351 162.136577408 4790.31129683 195.369540479 4791.48695876 91.6424133174 4792.66455378 265.863704569 4793.84171509 18.1270707661 4795.01659024 164.150696382 4796.19219586 9.06353538304 4797.3671622 56.3953312722 4800.89310666 111.783603057 4802.06877006 129.910673824 4804.41948454 67.4729856293 4807.9452035 282.983715848 4810.29778774 93.6565322914 4811.47261449 241.694276881 4812.64763509 123.868316901 4813.82353396 196.376599966 4814.99846599 375.633188652 4816.17329245 219.538968167 4817.34941508 170.193053304 4818.52553682 76.5365210123 4819.70123159 105.741246135 4820.87732225 21.1482492271 4822.05172995 127.896554849 4823.2273998 189.327183557 4824.40326114 357.506117886 4825.57778995 280.969596874 4826.75373369 66.4659261423 4827.92885898 91.6424133174 4829.10358837 150.051863564 4831.45555503 206.447194836 4832.63265241 45.3176769152 4833.80664869 60.4235692202 4834.98249771 144.009506642 4840.85944052 66.4659261423 4842.03565845 85.6000563953 4843.21022451 25.1764871751 4844.38762482 10.07059487 4846.73710414 225.581325089 4856.14506256 157.101279973 4858.49767671 13.0917733311 4859.67210582 184.291886122 4860.84836334 60.4235692202 4862.02313321 288.019013283 4863.19902094 303.124905588 4864.37486439 126.889495362 4865.55205179 460.226185561 4866.72806591 130.917733311 4867.90485802 69.4871046033 4869.07931411 258.81428816 4878.48299433 145.016566129 4879.65958116 51.3600338372 4880.83414663 120.84713844 4883.18516962 66.4659261423 4884.3600647 127.896554849 4885.53650198 165.157755869 4886.71184808 202.418956888 4890.23837669 76.5365210123 4891.41355241 79.5576994733 4893.76467569 137.96714972 4894.94037838 79.5576994733 4896.11603737 37.2612010191 4901.9918198 41.2894389672 4903.16859314 114.804781518 4909.04751685 144.009506642 4910.22284418 253.778990725 4911.39777797 33.2329630711 4919.62690093 62.4376881942 4920.80252854 92.6494728044 4921.97795939 39.2753199932 4923.15266592 110.77654357 4926.67879219 94.6635917784 4927.85400691 148.03774459 4929.02917032 68.4800451163 4930.20546772 161.129517921 4931.37946605 9.06353538304 4932.55496141 273.920180465 4933.73143095 170.193053304 4934.90603219 163.143636895 4936.08086775 260.828407134 4937.25673671 184.291886122 4943.13311179 64.4518071682 4945.48437758 72.5082830643 4947.83571874 160.122458434 4950.18541331 37.2612010191 4952.53696267 110.77654357 4957.23801981 21.1482492271 4958.41421574 169.185993817 4960.76447657 9.06353538304 4963.11497493 22.1553087141 4966.64321289 58.4094502462 4970.1682518 68.4800451163 4971.34415361 69.4871046033 4976.04534798 55.3882717852 4978.39697652 60.4235692202 4981.92414002 201.411897401 4983.1001254 138.974209207 4984.28567333 79.5576994733 4987.81211631 191.341302531 4990.16420174 45.3176769152 4992.51455963 9.06353538304 4997.21581119 23.1623682011 4999.56778606 42.2964984542 5000.74315533 55.3882717852 5001.91918264 135.953030746 5003.09564866 186.306005096 5004.27192025 10.07059487 5007.79739112 157.101279973 5008.97241406 72.5082830643 5011.32304409 113.797722031 5013.67414566 91.6424133174 5016.02459564 227.595444063 5017.19910099 56.3953312722 5018.37582565 59.4165097332 5019.55079493 186.306005096 5021.90186513 55.3882717852 5023.07663441 186.306005096 5024.25302301 64.4518071682 5025.42886997 124.875376388 5028.95298925 28.1976656361 5033.65506073 102.720067674 5037.18288785 61.4306287072 5038.35716124 111.783603057 5039.53320528 119.840078953 5044.23483424 116.818900492 5047.76126843 44.3106174282 5048.93756084 386.710843009 5050.11390663 80.5647589603 5052.46452581 185.298945609 5055.9912028 83.5859374213 5058.3411088 20.1411897401 5059.51713905 54.3812122982 5063.04270962 103.727127161 5067.74455794 20.1411897401 5073.6216635 84.5929969083 5078.32351798 126.889495362 5079.4993541 21.1482492271 5085.37569985 79.5576994733 5087.72578239 73.5153425513 5090.07780945 195.369540479 5091.25274178 31.2188440971 5095.95333353 40.2823794802 5098.30492189 88.6212348563 5099.48030113 103.727127161 5100.65637625 174.221291252 5105.35780023 43.3035579412 5107.71079913 27.1906061491 5108.88386903 71.5012235773 5111.234402 107.755365109 5112.4102692 139.981268694 5113.5846901 186.306005096 5114.76086815 92.6494728044 5122.99114562 119.840078953 5126.51683173 93.6565322914 5131.21815718 11.077654357 5132.39503961 33.2329630711 5134.74610277 148.03774459 5138.27317565 25.1764871751 5139.44899799 76.5365210123 5142.97496239 71.5012235773 5145.32772874 27.1906061491 5147.67872855 192.348362018 5148.85361601 54.3812122982 5157.0821683 85.6000563953 5162.95908854 160.122458434 5166.48484619 36.2541415321 5172.36315085 10.07059487 5173.53928257 41.2894389672 5175.88983401 20.1411897401 5178.23939309 106.748305622 5180.59021637 40.2823794802 5182.94292906 25.1764871751 5184.1179998 63.4447476812 5187.6437771 93.6565322914 5191.17293674 113.797722031 5192.34840835 9.06353538304 5200.5772234 109.769484083 5201.7514921 32.2259035841 5202.92754845 144.009506642 5204.1049901 11.077654357 5206.45498994 62.4376881942 5208.80587158 59.4165097332 5209.98319946 247.736633803 5211.15945052 31.2188440971 5213.51126205 97.6847702394 5217.03697543 55.3882717852 5219.38942302 175.228350739 5221.73918562 148.03774459 5233.49372636 22.1553087141 5240.54824103 19.1341302531 5241.72400735 66.4659261423 5242.89936811 344.414344555 5244.07505379 423.972044029 5245.24966531 246.729574316 5246.42440702 44.3106174282 5247.59969388 683.793391676 5248.7756124 363.548474808 5249.95110249 375.633188652 5251.12538351 185.298945609 5252.30097594 78.5506399863 5253.47661939 223.567206115 5254.65121448 58.4094502462 5257.00312835 226.588384576 5258.17811669 118.833019466 5259.35371645 132.931852285 5260.5293382 93.6565322914 5262.87999727 84.5929969083 5265.23049915 19.1341302531 5266.40600917 20.1411897401 5267.58139574 189.327183557 5274.6336697 59.4165097332 5275.8088246 141.995387668 5276.98414636 21.1482492271 5280.51051661 216.517789706 5281.68633719 84.5929969083 5285.21223033 124.875376388 5286.38880338 127.896554849 5287.56440871 294.061370205 5294.61645687 27.1906061491 5296.96674292 78.5506399863 5299.31714304 183.284826635 5301.6683062 27.1906061491 5302.846293 50.3529743502 5304.02103178 154.080101512 5307.54655719 80.5647589603 5311.07241837 56.3953312722 5315.7747526 93.6565322914 5318.1251665 258.81428816 5319.30039706 92.6494728044 5320.4765106 105.741246135 5322.82779311 24.1694276881 5336.93360228 157.101279973 5340.4603734 118.833019466 5342.81191192 52.3670933242 5343.98707797 84.5929969083 5349.86480023 121.854197927 5351.0410381 69.4871046033 5354.56646498 36.2541415321 5355.7414797 23.1623682011 5358.09212029 51.3600338372 5359.26823265 139.981268694 5360.44377845 274.927239952 5362.79366539 98.6918297264 5363.97079943 101.713008187 5365.1464898 127.896554849 5368.67270288 9.06353538304 5369.84816686 49.3459148632 5371.02290858 63.4447476812 5376.90151264 9.06353538304 5379.25115296 74.5224020383 5381.60329058 400.809675828 5383.95385961 261.835466621 5387.4797941 88.6212348563 5388.65533815 85.6000563953 5393.35684893 96.6777107524 5399.23592748 95.6706512654 5402.76447804 204.433075862 5403.93913324 87.6141753693 5405.11488021 217.524849193 5406.29076912 82.5788779343 5409.81672648 38.2682605061 5414.51862934 149.044804077 5420.39649677 148.03774459 5422.74825287 108.762424596 5423.92346613 340.386106607 5425.09821224 326.287273789 5426.27391464 49.3459148632 5427.44881852 152.065982538 5428.6240221 132.931852285 5430.97626823 211.482492271 5432.15136653 153.073042025 5433.32611909 318.230797893 5434.50231004 653.581607066 5435.67694501 164.150696382 5436.85266794 422.964984542 5438.02707212 94.6635917784 5439.20260854 573.016848105 5440.37845932 432.028519925 5441.55373563 224.574265602 5442.72821694 153.073042025 5445.08018917 60.4235692202 5448.60635122 160.122458434 5449.78109762 112.790662544 5450.95675662 53.3741528112 5453.30765556 74.5224020383 5458.01032175 75.5294615253 5461.53610433 55.3882717852 5462.71125718 83.5859374213 5463.88761734 35.2470820451 5466.23702159 9.06353538304 5467.41236945 271.906061491 5468.58839442 126.889495362 5472.11435295 82.5788779343 5474.46451613 95.6706512654 5476.8145538 76.5365210123 5477.99083566 9.06353538304 5480.3409135 30.2117846101 5481.51646751 64.4518071682 5485.04236095 89.6282943433 5487.39268629 185.298945609 5488.56826347 112.790662544 5489.74282249 165.157755869 5490.91878148 28.1976656361 5492.09362085 79.5576994733 5493.26899774 211.482492271 5495.62014564 217.524849193 5496.7956589 23.1623682011 5499.14677836 76.5365210123 5500.32362325 77.5435804993 5503.84901142 191.341302531 5507.37598753 61.4306287072 5508.55017266 83.5859374213 5509.72656067 70.4941640903 5512.07713205 92.6494728044 5513.25218842 44.3106174282 5515.6030422 153.073042025 5516.77818684 94.6635917784 5519.12859488 66.4659261423 5520.30438642 194.362480992 5522.65436427 95.6706512654 5525.00560836 177.242469713 5526.17992017 109.769484083 5530.88241657 146.023625616 5532.05794947 72.5082830643 5533.23342812 114.804781518 5534.40905134 175.228350739 5536.76025995 69.4871046033 5537.93596293 182.277767148 5539.11180726 61.4306287072 5540.28637772 21.1482492271 5546.16519145 107.755365109 5547.33974549 236.658979446 5548.5165464 182.277767148 5550.86754856 288.019013283 5552.04242869 72.5082830643 5553.21730911 109.769484083 5554.39238894 80.5647589603 5555.56744795 241.694276881 5556.74406147 55.3882717852 5559.09689937 84.5929969083 5561.44707633 88.6212348563 5562.62285702 139.981268694 5563.79734566 23.1623682011 5564.97219001 262.842526108 5566.14830149 61.4306287072 5567.32381211 230.616622524 5568.50027607 181.270707661 5569.67627201 231.623682011 5570.85057062 420.950865568 5572.02598769 331.322571224 5573.20210474 282.983715848 5574.37744028 129.910673824 5575.55289899 259.821347647 5576.72892543 158.10833946 5577.90382843 120.84713844 5581.42881602 160.122458434 5582.60513775 99.6988892134 5584.95838005 139.981268694 5586.13229978 112.790662544 5587.30741715 381.675545574 5588.48461218 215.510730219 5592.0084259 94.6635917784 5593.18513648 242.701336368 5596.71211142 79.5576994733 5599.06342061 419.943806081 5600.23895644 257.807228673 5602.73305818 255.793109699 5603.90739404 337.364928146 5605.08325069 568.988610157 5606.25794284 133.938911772 5607.43317721 626.391000916 5608.60864677 83.5859374213 5609.78369141 726.08989013 5610.95947621 519.642695294 5612.13450971 295.068429692 5613.30998806 821.760541395 5614.48513006 270.899002004 5615.66209372 680.772213215 5616.83662459 1175.23842133 5618.01200089 1425.9962336 5619.18712911 3113.82793382 5620.36248694 3711.01420961 5621.53848434 4689.87603098 5622.71441254 4286.04517669 5623.88962404 5036.30449451 5625.06439566 3113.82793382 5626.2401919 1239.6902285 5627.41569401 732.132247052 5628.59060141 311.181381484 5630.94178128 202.418956888 5632.11686346 174.221291252 5634.4688219 269.891942517 5635.64464981 88.6212348563 5636.81953492 164.150696382 5637.99487428 25.1764871751 5639.17100482 213.496611245 5640.34623245 78.5506399863 5641.52244774 77.5435804993 5650.92572679 67.4729856293 5654.45149764 9.06353538304 5667.38361464 42.2964984542 5673.26180464 125.882435875 5674.43709443 82.5788779343 5681.49077715 24.1694276881 5682.66565083 124.875376388 5683.84267109 119.840078953 5686.19222137 60.4235692202 5687.3678748 101.713008187 5695.59787691 84.5929969083 5701.47524464 49.3459148632 5708.52776141 47.3317958892 5714.40537957 195.369540479 5715.58079223 23.1623682011 5733.21442324 197.383659453 5735.56455651 29.2047251231 5736.73941582 158.10833946 5740.26491043 9.06353538304 5741.4407099 81.5718184473 5744.9660485 48.3388553762 5748.49348677 102.720067674 5753.19525914 21.1482492271 5755.5459182 56.3953312722 5760.24998993 121.854197927 5764.95181362 9.06353538304 5766.12703949 108.762424596 5773.18204974 134.945971259 5775.53247098 157.101279973 5788.46379005 134.945971259 5789.64002059 78.5506399863 5806.09554397 70.4941640903 5807.27168478 60.4235692202 5817.85186033 216.517789706 5819.02604135 98.6918297264 5821.37674558 25.1764871751 5828.43125233 83.5859374213 5835.48430456 236.658979446 5840.18746576 40.2823794802 5860.16896381 103.727127161 5862.51922698 98.6918297264 5884.85284887 20.1411897401 5887.2027927 60.4235692202 5896.6067603 64.4518071682 5900.13326897 24.1694276881 5907.1859004 185.298945609 5908.35998728 252.771931238 5909.53646415 611.285108611 5910.71103519 116.818900492 5916.58988412 103.727127161 5917.76498331 44.3106174282 5918.94015346 32.2259035841 5922.46666301 69.4871046033 5925.99440391 73.5153425513 5929.52107944 125.882435875 5933.0472497 109.769484083 5949.50251532 98.6918297264 5951.85270225 85.6000563953 5957.73287168 86.6071158823 5960.08337268 98.6918297264 5962.4342464 58.4094502462 5968.31283903 227.595444063 5969.48919742 63.4447476812 5970.66436611 53.3741528112 5978.89304273 200.404837914 5994.17602729 79.5576994733 5996.52711919 27.1906061491 5997.70198465 112.790662544 6016.50819584 172.207172278 6022.38663393 65.4588666553 6024.73847097 135.953030746 6032.96524911 25.1764871751 6036.49021148 44.3106174282 6041.19188912 81.5718184473 6042.36824781 9.06353538304 6047.07038205 157.101279973 6075.28079162 51.3600338372 6117.59495469 76.5365210123 6125.82262929 84.5929969083 6130.52380255 128.903614336 6157.55834785 143.002447155 6181.06585106 96.6777107524 6193.9953165 74.5224020383 6211.62612968 63.4447476812 6222.20636183 235.651919959 6223.38088068 202.418956888 6224.55654994 161.129517921 6235.13538066 103.727127161 6242.18630361 57.4023907592 6258.64084286 118.833019466 6265.69564403 72.5082830643 6277.45068358 117.825959979 6302.13524576 20.1411897401 6309.18773291 41.2894389672 6317.4154427 128.903614336 6327.99284265 221.553087141 6342.09825154 9.06353538304 6352.68068276 148.03774459 6356.20607064 102.720067674 6359.7316717 85.6000563953 6369.13596715 66.4659261423 6411.45242959 120.84713844 6416.15274099 85.6000563953 6429.08102463 205.440135349 6436.13449182 107.755365109 6437.31056195 47.3317958892 6443.18809038 139.981268694 6445.53951189 168.17893433 6450.24242675 47.3317958892 6451.41792534 89.6282943433 6452.59279667 86.6071158823 6461.99516694 46.3247364022 6464.3446923 90.6353538304 6477.27709903 104.734186648 6516.10901641 93.6565322914 6526.688187 9.06353538304 6553.72607534 86.6071158823 6566.65424579 27.1906061491 6606.61788763 89.6282943433 6620.72320854 73.5153425513 6724.15724705 52.3670933242 6753.53933711 76.5365210123 6761.76601759 70.4941640903 6806.4275398 121.854197927 6841.68788261 86.6071158823 6963.92329106 105.741246135 6987.42778349 9.06353538304 7056.77303504 9.06353538304 7104.96169757 14.0988328181 7130.81888802 96.6777107524 7143.74652124 93.6565322914 7174.30597642 80.5647589603 1.72895269925 127.896554849 2.53687997823 215.510730219 4.88697482957 62.4376881942 7.23746146138 117.825959979 8.41285506733 82.5788779343 10.7633924312 155.087160999 11.9391951193 106.748305622 15.4643489796 200.404837914 16.6407012161 100.7059487 18.9913728879 87.6141753693 23.6921464491 59.4165097332 24.8684057256 65.4588666553 30.7460684619 129.910673824 31.9211931586 70.4941640903 35.447549046 153.073042025 42.4996074624 79.5576994733 43.6749691042 208.46131381 47.200843477 11.077654357 48.3759197876 40.2823794802 50.7270732673 167.171874843 56.6037046474 52.3670933242 57.778988285 37.2612010191 58.9537299987 311.181381484 61.3046805502 67.4729856293 62.4795592112 96.6777107524 64.8319648635 69.4871046033 69.5336982282 134.945971259 74.2349917195 244.715455342 78.9365406307 146.023625616 82.4619765964 127.896554849 84.8132860845 101.713008187 93.0395721493 253.778990725 97.7411081575 21.1482492271 101.267210678 132.931852285 103.616948645 79.5576994733 105.967985119 131.924792798 107.142823018 202.418956888 108.318525708 161.129517921 110.668754574 93.6565322914 113.022728522 58.4094502462 115.373721301 143.002447155 116.548104958 78.5506399863 118.899705935 24.1694276881 120.073810126 148.03774459 121.250200192 48.3388553762 124.784446233 103.727127161 125.959590577 106.748305622 127.13451909 107.755365109 129.486403053 294.061370205 130.685707291 2011.09779555 131.886168982 1457.21507769 133.108583868 588.12274041 134.293719495 1207.46432492 135.48634411 141.995387668 136.662866724 123.868316901 137.839325117 120.84713844 139.022746703 94.6635917784 140.198345876 67.4729856293 141.375166138 81.5718184473 143.723647241 133.938911772 146.075210976 51.3600338372 148.427699031 111.783603057 160.181592569 21.1482492271 169.584065185 134.945971259 190.954727925 135.953030746 232.089082526 73.5153425513 260.298747539 64.4518071682 275.580394589 46.3247364022 276.755930714 21.1482492271 300.267973711 98.6918297264 302.621831532 105.741246135 304.972349541 61.4306287072 306.151837781 102.720067674 307.339294472 87.6141753693 312.039551329 25.1764871751 322.625847282 9.06353538304 323.804608558 11.077654357 328.506796751 94.6635917784 333.213847597 115.811841005 334.394990054 146.023625616 337.921149465 62.4376881942 341.455566176 33.2329630711 342.631029576 109.769484083 344.982156663 29.2047251231 348.510193746 11.077654357 349.684627255 134.945971259 352.040298527 9.06353538304 353.216658388 68.4800451163 354.391642618 87.6141753693 356.742227195 88.6212348563 357.918149822 29.2047251231 359.09256427 79.5576994733 360.268232943 84.5929969083 366.162573035 162.136577408 367.337622367 100.7059487 368.512234758 118.833019466 369.687356522 90.6353538304 370.863926349 301.110786614 372.038302382 98.6918297264 374.391155239 141.995387668 375.565551212 105.741246135 376.743253273 205.440135349 377.918711394 88.6212348563 379.094951902 128.903614336 380.270121466 109.769484083 381.444119501 414.908508646 382.621391366 502.522684015 383.796299058 468.282661457 384.972500565 422.964984542 386.151768281 452.169709665 387.333298119 250.757812264 388.508932189 260.828407134 389.683194441 189.327183557 390.859056072 370.597891217 392.034621815 118.833019466 393.209225702 136.960090233 394.391108319 115.811841005 395.566476705 32.2259035841 396.741694362 205.440135349 397.916945742 87.6141753693 402.621753821 98.6918297264 407.325316179 82.5788779343 412.02575573 11.077654357 413.206165357 63.4447476812 414.394080103 77.5435804993 429.699054219 259.821347647 433.231153385 86.6071158823 435.581288118 93.6565322914 436.756581727 90.6353538304 437.932499661 77.5435804993 440.284150491 64.4518071682 444.993643221 78.5506399863 448.528422388 99.6988892134 454.40913198 231.623682011 455.588544561 95.6706512654 460.31330148 335.350809172 461.487510654 402.823794802 462.662120699 238.67309842 463.840752945 1042.30656905 465.016435694 485.402672736 466.193638646 676.743975267 467.368126406 499.501505554 468.54334289 341.393166094 469.718798958 457.2050071 470.894241536 544.819182469 472.074486358 483.388553762 473.248484979 135.953030746 474.424525785 174.221291252 475.599513242 155.087160999 476.774721514 85.6000563953 483.833603831 143.002447155 486.19168209 118.833019466 487.367577737 202.418956888 488.543404472 338.371987633 489.717824492 63.4447476812 490.902299135 97.6847702394 492.087245029 123.868316901 494.438009074 43.3035579412 495.611938195 42.2964984542 496.787991025 102.720067674 497.965470803 160.122458434 499.139486139 79.5576994733 500.320223913 138.974209207 502.684953348 247.736633803 503.860983011 38.2682605061 505.035836745 559.925074774 506.211304837 728.104009104 507.396243399 881.177051128 508.572035531 198.39071894 509.753495282 708.969878851 510.934730405 407.859092237 512.110716961 48.3388553762 513.286356896 438.070876847 514.471685186 753.280496279 515.647159729 865.064099336 516.825004895 667.680439884 518.001422526 626.391000916 519.177245742 326.287273789 520.362219494 313.195500458 521.539775811 221.553087141 522.713978533 127.896554849 525.065668072 132.931852285 526.251622742 1119.85014955 527.431996007 729.111068591 528.608113351 1470.30685103 529.783609887 231.623682011 530.959196451 470.296780431 532.134552227 536.762706573 534.486772253 68.4800451163 535.661745047 265.863704569 536.851259465 87.6141753693 538.034014497 82.5788779343 539.210271134 227.595444063 540.403930038 163.143636895 541.580327142 167.171874843 542.75505302 114.804781518 543.930346628 121.854197927 545.106605905 246.729574316 546.290213998 757.308734227 547.466169469 138.974209207 548.641628469 449.148531204 549.816625896 1067.48305622 550.991364384 202.418956888 552.175505896 446.127352743 553.360170271 571.002729131 554.540164072 237.666038933 555.715762073 99.6988892134 556.906440689 492.452089145 558.083904631 204.433075862 559.298254881 439.077936334 560.48669161 298.089608153 561.670613186 196.376599966 562.855143253 169.185993817 564.048337358 46.3247364022 565.22745669 329.30845225 566.40301129 948.650036758 567.57931602 335.350809172 568.777022931 564.960372209 569.964760261 968.791226498 571.144413893 1159.12546954 572.32977796 1328.31146336 573.542831464 849.958207031 574.711806732 861.035861388 575.886865741 287.011953796 577.065304736 692.856927059 578.250757071 163.143636895 579.425669163 146.023625616 580.612212676 144.009506642 581.785605445 213.496611245 584.142107491 53.3741528112 587.674070883 141.995387668 588.854128319 129.910673824 590.045680523 194.362480992 591.239000725 185.298945609 592.415038012 647.539250144 593.596064635 452.169709665 594.779397074 522.663873755 595.955018827 919.445311635 597.130201294 1222.57021722 598.327480062 456.197947613 599.516306225 153.073042025 600.69262767 213.496611245 603.042932488 64.4518071682 604.220343939 77.5435804993 605.405588067 136.960090233 606.581762009 134.945971259 607.773090171 414.908508646 608.948843007 109.769484083 610.125749483 71.5012235773 611.300610549 74.5224020383 612.476028495 68.4800451163 613.652033232 139.981268694 614.841968462 175.228350739 616.021788366 164.150696382 619.556230297 68.4800451163 626.659589668 49.3459148632 627.835728713 286.004894309 629.014028121 473.317958892 630.190172738 298.089608153 631.379597128 396.78143788 632.554018321 275.934299439 633.728456229 256.800169186 634.903498523 345.421404042 636.08846993 209.468373297 637.267127982 92.6494728044 638.442969085 97.6847702394 639.618597584 230.616622524 640.79421963 135.953030746 641.968394787 82.5788779343 644.319199008 153.073042025 646.671610525 21.1482492271 647.846028785 80.5647589603 650.196563803 280.969596874 651.372522793 131.924792798 652.548368002 165.157755869 653.729586703 151.058923051 654.921347408 235.651919959 657.314505267 139.981268694 658.490254877 262.842526108 659.66506785 326.287273789 660.851865024 65.4588666553 662.040424037 236.658979446 663.226063465 22.1553087141 664.414410459 168.17893433 665.624990995 23.1623682011 666.799972 115.811841005 667.97640488 61.4306287072 669.165550684 93.6565322914 670.359113403 87.6141753693 671.56086011 344.414344555 672.736092429 102.720067674 673.917250721 61.4306287072 675.124423412 444.113233769 676.300056016 410.880270698 677.490493581 334.343749685 678.6674634 127.896554849 679.858934961 421.957925055 682.228042601 459.219126074 683.404381055 87.6141753693 684.579217488 360.527296347 685.76760671 163.143636895 686.945518738 183.284826635 688.128310719 1059.42658033 689.323146724 1677.76110535 690.498137113 1993.97778427 691.675084644 990.946535212 692.873607667 451.162650178 694.056941865 260.828407134 695.252317155 19.1341302531 696.446691293 45.3176769152 698.812045642 183.284826635 699.997113234 1107.7654357 701.198733845 493.459148632 702.375138279 398.795556854 703.56238647 263.849585595 704.742977032 129.910673824 705.939976041 123.868316901 707.116429155 76.5365210123 708.290622787 189.327183557 709.465938388 891.247645998 710.66041663 802.626411142 711.847708515 1134.95604185 713.027657742 739.181663461 714.209910145 513.600338372 715.385261523 506.550921963 716.56079237 116.818900492 717.736648429 184.291886122 718.911615944 70.4941640903 720.086532728 99.6988892134 721.262779688 705.94870039 722.439859475 276.941358926 723.625601539 375.633188652 724.880961469 34.2400225581 726.061497193 79.5576994733 727.236649455 95.6706512654 728.416716861 132.931852285 729.619439794 298.089608153 733.161395641 62.4376881942 734.33654849 202.418956888 735.527899525 128.903614336 736.71962416 84.5929969083 737.905183237 793.562875759 739.100883154 195.369540479 740.29920794 632.433357838 741.471725068 184.291886122 742.656167747 1065.46893725 743.832368667 1041.29950956 745.008739085 1094.67366237 746.200652572 393.760259419 747.383146612 440.084995821 748.581061144 396.78143788 749.75663891 371.604950704 750.932936016 233.637800985 752.126732454 401.816735315 753.321913026 255.793109699 755.715770284 103.727127161 756.895308669 101.713008187 758.071424253 152.065982538 759.246161275 75.5294615253 760.430570231 54.3812122982 761.606226881 147.030685103 762.78149263 99.6988892134 763.984676844 288.019013283 766.334182851 145.016566129 767.50987909 28.1976656361 768.696057509 13.0917733311 769.905306109 12.084713844 771.110919009 53.3741528112 772.304487886 30.2117846101 773.482538033 153.073042025 775.861035502 197.383659453 777.05937935 67.4729856293 778.254586608 236.658979446 779.429711891 35.2470820451 780.623459943 19.1341302531 781.80095673 93.6565322914 785.326208242 202.418956888 786.502838185 134.945971259 787.677793384 299.09666764 788.852867935 122.861257414 790.028444528 233.637800985 791.204629906 542.805063495 792.380202394 48.3388553762 793.555531192 65.4588666553 794.733486913 101.713008187 795.912364609 105.741246135 797.088320079 215.510730219 798.262962968 152.065982538 799.438611114 28.1976656361 801.789400965 233.637800985 802.964843837 162.136577408 804.14093039 94.6635917784 805.31663572 36.2541415321 807.668786539 9.06353538304 808.844402427 85.6000563953 810.021234712 223.567206115 811.198149693 49.3459148632 812.372883489 488.423851197 814.723952513 138.974209207 815.899338788 215.510730219 817.075572845 133.938911772 818.250166761 138.974209207 819.425778544 238.67309842 820.604799345 18.1270707661 821.778094756 48.3388553762 822.955359289 80.5647589603 824.131135878 82.5788779343 825.306009261 232.630741498 826.481560341 348.442582503 827.658212865 89.6282943433 828.832321454 82.5788779343 830.008422376 489.430910684 831.182903099 190.334243044 832.358182337 103.727127161 833.534580907 264.856645082 834.713075327 458.212066587 835.892140701 467.27560197 837.070435125 204.433075862 838.245545453 164.150696382 839.420744634 95.6706512654 840.595501597 71.5012235773 841.771580526 194.362480992 842.947815756 113.797722031 844.128257348 112.790662544 845.303589078 391.746140445 846.479106435 126.889495362 847.654046678 440.084995821 848.829734413 486.409732223 850.0056327 159.115398947 851.180668542 1156.10429108 852.356775036 614.306287072 853.532993258 727.096949617 854.70783497 115.811841005 855.883947328 188.32012407 857.058912791 66.4659261423 858.234543929 307.153143536 859.410009087 157.101279973 860.584303303 64.4518071682 861.761235293 10.07059487 864.111255659 19.1341302531 872.350840559 84.5929969083 873.526779021 270.899002004 874.702583762 243.708395855 875.879076465 96.6777107524 877.053461002 247.736633803 878.229415886 262.842526108 879.404546448 356.499058399 880.579672904 577.045086053 881.755386151 147.030685103 882.930636651 235.651919959 884.107246654 323.266095328 885.280691621 608.26393015 886.455597847 560.932134261 887.631033681 577.045086053 888.80792051 1018.13714136 889.981931155 573.016848105 891.158231779 196.376599966 892.334032415 375.633188652 893.510588459 348.442582503 895.861630211 135.953030746 897.036404475 284.997834822 898.212015379 131.924792798 899.392835261 149.044804077 900.568835892 249.750752777 901.743831853 218.53190868 902.919468562 47.3317958892 904.094226698 123.868316901 906.44525496 414.908508646 907.620087581 33.2329630711 909.971866267 49.3459148632 911.146815308 27.1906061491 912.323267542 224.574265602 913.498706895 108.762424596 914.675376427 330.315511737 915.850999647 220.546027654 917.026044873 307.153143536 918.200969281 183.284826635 919.376991905 229.609563037 920.552485803 266.870764056 921.727985565 493.459148632 922.903612597 552.875658365 924.080067177 12.084713844 925.254246146 600.207454254 926.434809143 120.84713844 927.610136181 76.5365210123 928.784240079 70.4941640903 931.135736073 264.856645082 932.310340546 115.811841005 934.660725714 364.555534295 935.83793717 55.3882717852 937.013314354 121.854197927 938.188274538 350.456701477 940.538322176 113.797722031 941.71470579 147.030685103 942.88892904 67.4729856293 944.064590089 110.77654357 945.239316847 263.849585595 946.415222172 476.339137353 947.590541293 592.150978358 948.765948095 593.158037845 949.94086048 439.077936334 951.117090724 1774.4388161 952.291820122 2340.4062478 953.467535422 3273.95039225 954.642867445 2061.4507699 955.81845137 7114.87527568 956.994132066 1187.32313518 958.169835636 3119.87029074 959.345107837 4945.66914068 960.520426958 3305.16923635 961.69638888 4558.95829767 962.871832045 6526.75253527 964.046119517 2825.80892053 965.221403447 2046.34487759 966.397390296 1163.15370749 967.572069254 467.27560197 968.747042928 394.767318906 969.922797816 232.630741498 971.097689674 267.877823543 972.2747721 320.244916867 973.449554282 676.743975267 974.624716808 947.642977271 975.799795171 1151.06899365 976.974872948 1376.65031873 978.154118084 680.772213215 979.328997918 780.471102428 980.504913507 454.183828639 981.679708299 141.995387668 982.859603275 57.4023907592 984.033842067 279.962537387 985.210241809 10.07059487 986.38487766 307.153143536 987.559915262 134.945971259 988.73591736 93.6565322914 989.911900396 413.901449159 991.086496658 437.06381736 992.26214627 179.256588687 994.61745186 441.092055308 995.790869556 334.343749685 996.965167584 633.440417325 998.15396061 749.252258331 999.329518142 506.550921963 1000.51346904 202.418956888 1001.68949049 524.677992729 1002.86519788 163.143636895 1004.03971525 71.5012235773 1006.40096383 127.896554849 1007.58779443 156.094220486 1008.76333232 375.633188652 1009.95002656 180.263648174 1012.30072374 210.475432784 1013.47707158 130.917733311 1014.65298746 147.030685103 1015.83523136 547.84036093 1017.02271298 183.284826635 1018.21821495 174.221291252 1019.39199481 67.4729856293 1020.56753152 229.609563037 1021.74303363 983.897118803 1022.91879174 453.176769152 1024.10586662 138.974209207 1025.28613285 1261.84553722 1026.47021513 1703.94465201 1027.64502898 594.165097332 1028.82138679 789.534637811 1029.99546694 331.322571224 1031.17599562 309.16726251 1032.35807442 432.028519925 1033.53740636 256.800169186 1034.72907733 257.807228673 1035.91065321 228.60250355 1037.09386043 656.602785527 1038.26977895 185.298945609 1039.44567343 378.654367113 1040.62378985 765.365210123 1041.8043766 302.117846101 1043.00054601 634.447476812 1044.20670787 814.711124986 1045.38487795 563.953312722 1046.58324643 364.555534295 1047.75795472 376.640248139 1048.9435091 55.3882717852 1050.13594281 229.609563037 1051.32554433 272.913120978 1052.52289142 396.78143788 1053.70073483 200.404837914 1054.87762078 324.273154815 1056.05109507 195.369540479 1057.24393992 309.16726251 1058.41927223 233.637800985 1059.60867052 191.341302531 1060.7837612 199.397778427 1061.97395273 195.369540479 1063.14979413 29.2047251231 1064.32583112 114.804781518 1066.67564856 97.6847702394 1067.85150785 222.560146628 1069.02811638 347.435523016 1070.21468453 243.708395855 1071.38912126 302.117846101 1072.56602745 266.870764056 1076.10481621 70.4941640903 1078.4704204 154.080101512 1080.89238879 111.783603057 1083.2482017 32.2259035841 1084.43882108 154.080101512 1085.62977418 27.1906061491 1086.81339341 30.2117846101 1087.98782722 423.972044029 1089.18321013 307.153143536 1090.35759965 222.560146628 1091.53397036 219.538968167 1092.71046922 127.896554849 1093.88934692 43.3035579412 1095.07195269 112.790662544 1096.25812847 61.4306287072 1097.44509778 313.195500458 1098.62120486 273.920180465 1099.79709669 210.475432784 1100.97168504 210.475432784 1102.15836873 116.818900492 1103.35033177 663.652201936 1104.52676231 714.005176286 1105.71163254 189.327183557 1106.88716339 664.659261423 1108.06525928 1292.05732183 1109.24550997 2468.30280265 1110.43475431 696.885165007 1111.62009726 496.480327093 1112.81409135 381.675545574 1114.01328767 303.124905588 1115.18924197 305.139024562 1116.36924867 173.214231765 1117.55964635 159.115398947 1118.74837897 55.3882717852 1119.93713094 566.974491183 1121.13493902 284.997834822 1122.31756942 426.99322249 1123.49257741 376.640248139 1124.66822321 369.59083173 1125.84514171 227.595444063 1127.03226585 216.517789706 1128.21084033 325.280214302 1129.38610432 234.644860472 1130.56140966 113.797722031 1131.7371537 358.513177373 1132.91246021 183.284826635 1134.08738432 488.423851197 1135.27421845 466.268542483 1136.46408652 490.437970171 1137.65020482 628.40511989 1138.83752603 424.979103516 1140.01275513 795.576994733 1141.18861412 803.633470629 1142.3640045 438.070876847 1143.54056934 490.437970171 1144.72395339 1000.01007059 1145.90449821 464.254423509 1147.09967849 85.6000563953 1148.28330476 318.230797893 1149.47082421 273.920180465 1150.6458882 442.099114795 1151.82098181 464.254423509 1153.01504452 566.974491183 1154.18969474 430.014400951 1155.37327937 62.4376881942 1156.55238786 408.866151724 1157.72741197 78.5506399863 1158.90277303 72.5082830643 1160.07950678 69.4871046033 1161.26715672 364.555534295 1162.46683573 1438.08094744 1163.66463589 2506.57106315 1164.86532925 3256.83038097 1166.04176037 3300.13393891 1167.2296584 1424.98917411 1168.40452856 1396.79150847 1169.59400075 458.212066587 1170.78218001 152.065982538 1171.96669658 166.164815356 1173.14665901 94.6635917784 1174.32135615 21.1482492271 1175.49717643 90.6353538304 1176.67323806 218.53190868 1177.85200784 468.282661457 1180.20905503 357.506117886 1181.38823155 178.2495292 1182.56299584 149.044804077 1183.74987395 174.221291252 1184.94808115 96.6777107524 1186.14687689 54.3812122982 1187.34045486 187.313064583 1188.51606107 77.5435804993 1189.69230832 42.2964984542 1190.88203212 65.4588666553 1192.05620728 300.103727127 1193.23097304 128.903614336 1194.40909034 86.6071158823 1195.61370091 154.080101512 1196.79846089 199.397778427 1199.16061149 13.0917733311 1200.34199383 67.4729856293 1201.51973782 261.835466621 1202.69546309 281.976656361 1203.88641883 126.889495362 1205.07718747 266.870764056 1206.26455326 422.964984542 1207.45135806 321.251976354 1208.62643085 251.764871751 1209.80217899 115.811841005 1210.97891744 1048.34892597 1212.17622436 833.845255239 1213.35121386 510.579159911 1214.53557531 126.889495362 1215.72715714 114.804781518 1216.91194849 45.3176769152 1218.08817404 184.291886122 1220.45780601 283.990775335 1221.64313078 171.200112791 1222.8244791 160.122458434 1224.02341502 208.46131381 1225.20322378 98.6918297264 1226.3787989 487.41679171 1227.56176009 663.652201936 1228.73802289 445.120293256 1229.93749222 211.482492271 1231.12857875 319.23785738 1232.3200292 584.094502462 1233.52719837 350.456701477 1234.70153481 76.5365210123 1235.8887962 281.976656361 1237.07526464 294.061370205 1238.27840487 257.807228673 1239.45638581 363.548474808 1240.64153932 903.332359842 1241.81692237 994.97477316 1242.99203827 576.038026566 1244.16817966 512.593278885 1245.34402692 871.106456258 1246.54244672 306.146084049 1247.73049636 468.282661457 1248.92243829 480.367375301 1250.11432363 140.988328181 1251.29006503 47.3317958892 1252.46609968 403.830854289 1253.65290623 980.875940342 1254.83259857 2373.63921087 1256.01644977 3934.58141572 1257.20376687 3076.5667328 1258.39265521 2460.24632675 1259.56925289 1824.79179045 1260.74358816 1245.73258542 1261.93028065 270.899002004 1263.12285512 261.835466621 1264.32013887 432.028519925 1265.51990263 133.938911772 1266.71443278 393.760259419 1267.8894088 453.176769152 1269.06448335 183.284826635 1270.25205851 139.981268694 1271.42758965 125.882435875 1273.79946703 73.5153425513 1278.53490319 153.073042025 1280.90153786 264.856645082 1283.26937192 286.004894309 1284.44379751 383.689664548 1285.61985122 101.713008187 1287.99093477 138.974209207 1289.17932517 309.16726251 1290.35436189 98.6918297264 1292.71231611 247.736633803 1293.88671354 390.739080958 1295.06190246 657.609845014 1296.23829605 250.757812264 1297.42371466 428.000281977 1298.61883277 341.393166094 1299.80665162 398.795556854 1301.00212486 924.48060907 1302.1814436 364.555534295 1303.36765867 467.27560197 1304.5503052 108.762424596 1305.72589529 334.343749685 1306.90102321 124.875376388 1308.10346668 155.087160999 1309.27881747 217.524849193 1310.46637474 134.945971259 1311.66299223 48.3388553762 1312.83884976 110.77654357 1314.01362285 254.786050212 1315.1897358 144.009506642 1316.37256033 349.44964199 1317.5492196 300.103727127 1318.72444693 247.736633803 1319.89920917 83.5859374213 1321.09691432 262.842526108 1322.27151586 87.6141753693 1323.44701563 333.336690198 1324.6225321 70.4941640903 1325.79836676 12.084713844 1326.97332665 414.908508646 1328.14806074 296.075489179 1329.32343205 1226.59845517 1330.49947022 3334.37396147 1331.70705434 7286.07538847 1332.88300336 18714.186447 1334.05817351 29180.5556954 1335.23306625 35016.4654226 1336.41479989 23380.9001098 1337.58939205 17600.3786544 1338.78152958 7174.29178542 1339.9575088 2446.14749393 1341.13374227 1201.421968 1342.31834008 319.23785738 1343.49348003 1212.49962235 1344.68235575 78.5506399863 1345.86678494 59.4165097332 1347.04224541 190.334243044 1348.21892344 328.301392763 1349.41367792 220.546027654 1350.5900935 803.633470629 1351.76609061 248.74369329 1352.93981241 610.278049124 1354.11584647 472.310899405 1355.3112461 220.546027654 1356.48843937 185.298945609 1357.66362741 277.948418413 1358.8511885 543.812122982 1360.0275117 72.5082830643 1361.20531757 255.793109699 1362.38617089 377.647307626 1363.569357 177.242469713 1364.74323069 53.3741528112 1365.91905479 317.223738406 1367.09367216 620.348643994 1368.26905521 84.5929969083 1369.44518663 367.576712756 1370.63628577 154.080101512 1371.81147293 138.974209207 1372.98737503 207.454254323 1374.16289649 266.870764056 1375.33817778 124.875376388 1376.51378722 124.875376388 1377.68918552 295.068429692 1378.86386829 395.774378393 1380.06174968 474.325018379 1381.26299962 402.823794802 1382.46301089 10.07059487 1383.64705651 566.974491183 1384.83287628 105.741246135 1386.00728809 83.5859374213 1387.18823231 78.5506399863 1388.36853666 144.009506642 1389.54443466 153.073042025 1390.74001932 607.256870663 1391.94348506 643.511012195 1393.14474996 1016.12302239 1394.32103592 1019.14420085 1395.49597558 1463.25743462 1396.67049413 1516.63158743 1397.86385861 1508.57511153 1399.06109192 1214.51374133 1400.23759489 1899.31419249 1401.44596843 2016.13309298 1402.63842883 2189.34732475 1403.82577086 2539.80402622 1405.03398459 2049.36605605 1406.20917409 159.115398947 1407.38522018 682.786332189 1408.56171933 614.306287072 1409.74362277 103.727127161 1412.09346396 521.656814268 1413.26812151 113.797722031 1414.44377053 1005.04536803 1415.61875682 1879.17300275 1416.79466625 4177.28275209 1417.97995759 4894.30910684 1419.15562186 5473.36831187 1420.36149781 6950.7245793 1421.56666966 5542.85541647 1422.75963738 1781.48823251 1423.95676776 1103.73719776 1425.13171211 1219.54903876 1426.30743621 899.304121894 1427.4946366 288.019013283 1428.67306856 603.228632715 1429.87351617 213.496611245 1431.04994817 621.355703481 1432.22937366 717.026354747 1433.41564298 248.74369329 1434.59159435 140.988328181 1435.76721434 208.46131381 1436.94180415 272.913120978 1438.11705729 1713.00818739 1439.30137681 4772.45490891 1440.47642731 6517.68899989 1441.67169351 8715.09280053 1442.84874427 7706.01919455 1444.0403343 4348.48286488 1445.21551853 1338.38205823 1446.39077548 695.87810552 1447.5669028 469.289720944 1448.74374916 159.115398947 1449.95277078 84.5929969083 1451.14147554 104.734186648 1452.32846127 372.612010191 1453.70788922 34.2400225581 1454.91017023 65.4588666553 1456.08526179 55.3882717852 1457.26341105 397.788497367 1458.45068915 417.929687107 1459.62771293 648.546309631 1460.80195524 268.88488303 1461.97725765 742.202841922 1463.15460165 376.640248139 1464.35840961 1018.13714136 1465.53393781 648.546309631 1466.70955663 1916.43420377 1467.88416463 420.950865568 1469.0605629 827.802898317 1470.24322468 174.221291252 1471.42560465 787.520518837 1472.6139795 413.901449159 1473.79805972 575.030967079 1474.98439181 610.278049124 1477.3388546 105.741246135 1478.51436316 162.136577408 1479.69778152 987.925356751 1480.8728417 1376.65031873 1482.06608155 823.774660369 1483.26166476 1142.00545826 1484.45143371 960.734750602 1485.624613 1435.05976898 1486.80037551 1041.29950956 1487.97731278 1156.10429108 1489.16349999 782.485221402 1490.35874567 416.92262762 1492.72664952 684.800451163 1493.91485517 269.891942517 1495.10033566 61.4306287072 1496.29424148 440.084995821 1497.47256259 77.5435804993 1499.85222367 322.259035841 1501.03757894 19.1341302531 1503.40097878 349.44964199 1504.58323441 227.595444063 1505.77738187 223.567206115 1506.96736519 183.284826635 1508.15920947 459.219126074 1509.33538195 366.569653269 1510.51081191 595.172156819 1511.70700654 464.254423509 1512.91017727 406.85203275 1514.10423704 328.301392763 1515.28930874 280.969596874 1516.48239551 360.527296347 1517.66733173 504.536802989 1518.84276346 429.007341464 1520.03118641 792.555816272 1521.22160843 358.513177373 1522.40668013 114.804781518 1523.58395404 371.604950704 1524.7616435 256.800169186 1525.94362758 151.058923051 1527.11888247 331.322571224 1528.294006 357.506117886 1529.47776277 348.442582503 1530.66812732 416.92262762 1531.85557492 696.885165007 1533.04114015 760.329912688 1534.21629065 1698.90935458 1535.4069159 1413.91151975 1536.58822404 2087.63431656 1537.76658181 1885.21535967 1538.95484258 859.021742414 1540.14883198 727.096949617 1541.34162932 432.028519925 1542.52559459 717.026354747 1543.70078937 406.85203275 1544.89437379 1055.39834238 1546.08333338 166.164815356 1547.28580852 416.92262762 1548.47358573 295.068429692 1549.64929487 401.816735315 1550.82423189 505.543862476 1552.02650351 204.433075862 1553.21042949 222.560146628 1554.38494775 37.2612010191 1556.77341597 168.17893433 1557.94924945 496.480327093 1559.12627762 109.769484083 1560.32446664 132.931852285 1561.51513176 194.362480992 1562.72059188 381.675545574 1563.9199665 278.9554779 1565.11208438 188.32012407 1566.2974854 283.990775335 1567.49611194 186.306005096 1568.69595165 170.193053304 1569.89478287 322.259035841 1571.10067289 565.967431696 1572.30032844 143.002447155 1573.4775572 469.289720944 1574.65158837 846.93702857 1575.8488994 600.207454254 1577.04505737 249.750752777 1578.23539611 151.058923051 1579.4288298 554.889777339 1580.62409013 266.870764056 1581.81709216 383.689664548 1583.00451923 762.344031662 1584.19874851 677.751034754 1585.37999917 1123.8783875 1586.55547225 1374.63619976 1587.74173219 936.565322914 1588.94488297 3127.92676663 1590.12029447 2060.44371041 1591.29535494 1101.72307878 1592.49776263 540.790944521 1593.67350257 496.480327093 1594.87150302 213.496611245 1596.0483617 250.757812264 1597.24089716 301.110786614 1598.41933176 435.049698386 1599.6076899 265.863704569 1600.80046876 1447.14448282 1601.98807501 1358.52324797 1603.16724244 1172.21724287 1604.34749107 1224.5843362 1605.52634032 1541.8080746 1606.70123628 648.546309631 1607.87807062 332.329630711 1609.05218332 269.891942517 1610.22823703 528.706230677 1611.40980909 634.447476812 1612.58507572 533.741528112 1613.76124057 910.381776252 1614.93576323 258.81428816 1616.11208438 506.550921963 1617.28777475 445.120293256 1618.46506773 156.094220486 1619.6404238 106.748305622 1620.81584058 213.496611245 1621.99105207 20.1411897401 1623.16671987 185.298945609 1624.34538202 59.4165097332 1625.52098325 137.96714972 1626.69683872 299.09666764 1627.87159158 277.948418413 1629.04661481 195.369540479 1630.22195094 238.67309842 1631.40046677 154.080101512 1632.57496274 130.917733311 1633.75103492 437.06381736 1634.92629628 458.212066587 1636.10122127 405.844973263 1637.27732952 793.562875759 1638.45218912 414.908508646 1639.62696104 688.828689111 1640.80433144 141.995387668 1641.9801611 203.426016375 1643.15660659 111.783603057 1644.33016358 70.4941640903 1645.50552493 206.447194836 1646.68127835 35.2470820451 1647.8562183 382.682605061 1649.03225882 212.489551758 1650.21005208 1093.66660289 1651.39983951 754.287555766 1652.57912541 665.66632091 1653.75543718 48.3388553762 1654.93240201 831.831136265 1656.10804898 417.929687107 1657.28220948 613.299227585 1658.46272145 283.990775335 1659.63854994 323.266095328 1660.81398607 641.496893221 1661.98911018 615.313346559 1663.16561901 172.207172278 1664.34391695 629.412179377 1665.52022403 286.004894309 1666.69551207 181.270707661 1667.87090186 559.925074774 1669.04667053 679.765153728 1670.22333127 791.548756785 1671.39871519 700.913402955 1672.57575481 305.139024562 1673.75123639 328.301392763 1674.92752 220.546027654 1676.1037655 364.555534295 1677.27844328 472.310899405 1678.4553046 789.534637811 1679.63060906 425.986163003 1680.80990493 431.021460438 1681.9865507 893.261764972 1683.1620575 652.574547579 1684.33777515 386.710843009 1685.51212274 423.972044029 1686.68820841 812.697006012 1687.86975086 809.675827551 1689.04458201 1091.65248391 1690.22503827 1008.06654649 1691.40071427 602.221573228 1692.57500145 616.320406046 1693.75040708 511.586219398 1694.92573441 346.428463529 1696.10098579 468.282661457 1697.27629142 742.202841922 1698.45328881 447.13441223 1699.63044249 299.09666764 1700.80432704 269.891942517 1701.98088044 119.840078953 1704.32968383 163.143636895 1705.50719586 562.946253235 1706.68300735 454.183828639 1707.85863526 168.17893433 1709.03432475 151.058923051 1710.20981982 295.068429692 1711.38527267 499.501505554 1712.56147769 291.040191744 1713.73808212 190.334243044 1714.91258396 474.325018379 1716.08814002 288.019013283 1717.26402277 465.261482996 1718.43940318 1053.38422341 1719.61525191 1120.85720904 1720.78980213 924.48060907 1721.96545526 621.355703481 1723.14179753 203.426016375 1724.31737441 490.437970171 1725.49598701 351.463760964 1726.672046 222.560146628 1727.84776071 225.581325089 1730.20328272 483.388553762 1731.39160186 172.207172278 1732.56606733 115.811841005 1733.74990973 44.3106174282 1734.92617604 271.906061491 1736.10494758 354.484939425 1737.27989017 187.313064583 1738.45435946 254.786050212 1739.62990966 32.2259035841 1740.80493758 181.270707661 1741.98017078 155.087160999 1743.1562764 131.924792798 1744.33161692 46.3247364022 1745.50729029 293.054310718 1746.68173142 159.115398947 1747.85779891 327.294333276 1749.03379104 221.553087141 1750.20813716 206.447194836 1751.38915851 650.560428605 1752.56446297 1452.17978026 1753.74210051 1551.87866947 1754.91839146 1262.8525967 1756.09331235 1044.32068802 1757.26907897 383.689664548 1758.44485556 607.256870663 1759.62601766 371.604950704 1760.80204879 30.2117846101 1761.97634447 250.757812264 1763.15171139 236.658979446 1764.33363301 271.906061491 1765.50890433 264.856645082 1766.68430996 296.075489179 1767.85966574 182.277767148 1769.03498632 162.136577408 1770.21034474 46.3247364022 1771.38593717 109.769484083 1772.56120087 112.790662544 1773.73685253 483.388553762 1774.9115916 61.4306287072 1776.08758666 119.840078953 1777.26286532 465.261482996 1778.43823722 387.717902497 1779.61250593 264.856645082 1780.78788575 148.03774459 1781.96460015 9.06353538304 1783.13965446 61.4306287072 1785.48981588 14.0988328181 1786.66528192 76.5365210123 1787.84077465 70.4941640903 1789.01740224 297.082548666 1790.19221111 380.668486087 1791.36866217 576.038026566 1792.54366312 756.30167474 1793.71932622 520.649754781 1794.89469695 299.09666764 1796.07075858 225.581325089 1797.24603078 836.8664337 1798.42041326 825.788779343 1799.59693705 366.569653269 1800.77139138 465.261482996 1801.94779435 403.830854289 1803.12331581 339.37904712 1804.29813875 206.447194836 1805.47394467 126.889495362 1806.64825677 167.171874843 1807.82476033 167.171874843 1808.99973693 461.233245048 1810.17600031 663.652201936 1811.35183819 503.529743502 1812.52845201 680.772213215 1813.70558898 854.993504466 1814.87981193 344.414344555 1816.05484426 424.979103516 1817.23051029 606.249811176 1818.40615814 656.602785527 1819.5831262 261.835466621 1820.75974119 344.414344555 1821.9362207 232.630741498 1823.11075274 337.364928146 1824.2861179 656.602785527 1825.46172118 664.659261423 1826.63690394 540.790944521 1827.81339224 787.520518837 1828.98908173 358.513177373 1830.16405658 635.454536299 1831.34059679 399.802616341 1832.51510449 291.040191744 1833.69097932 467.27560197 1834.86598173 1048.34892597 1836.04178618 1087.62424596 1837.21631793 920.452371122 1838.39124497 1203.43608697 1839.56727024 1343.41735566 1840.74292337 496.480327093 1841.91702375 874.127634719 1843.09338185 291.040191744 1844.26822415 317.223738406 1845.44383652 183.284826635 1846.61968231 430.014400951 1847.79537562 138.974209207 1848.97086365 248.74369329 1850.14681443 271.906061491 1851.32149104 638.47571476 1852.49780164 694.871046033 1853.67315184 482.381494275 1854.84747186 133.938911772 1856.02380299 232.630741498 1857.19941887 423.972044029 1858.37410458 190.334243044 1859.54875245 105.741246135 1860.72439913 103.727127161 1861.89984347 532.734468625 1863.0745582 748.245198844 1864.25893666 467.27560197 1865.44722823 831.831136265 1866.64833683 450.155590691 1867.84638802 614.306287072 1869.03521418 109.769484083 1870.21117082 316.216678919 1871.40850531 228.60250355 1872.59512888 69.4871046033 1873.79133758 98.6918297264 1874.96917923 490.437970171 1876.16500817 274.927239952 1877.35389299 186.306005096 1878.54247575 225.581325089 1879.71815645 440.084995821 1880.89347792 212.489551758 1883.29745754 115.811841005 1884.49738933 159.115398947 1885.68721254 136.960090233 1886.88267551 337.364928146 1888.07664584 186.306005096 1889.27274018 600.207454254 1890.46079099 754.287555766 1891.65226783 850.965266518 1892.85662709 2812.7171472 1894.03217055 3045.3478887 1895.20648207 3917.46140445 1896.40161513 3944.65201059 1897.61269566 4168.21921671 1898.80319041 4896.32322581 1900.00017417 3594.19530912 1901.19656908 2325.30035549 1902.38798522 2023.18250939 1903.59021813 1532.74453922 1904.78729075 596.179216306 1905.96995047 1442.10918539 1907.17210597 1336.36793925 1908.3637526 542.805063495 1909.55274093 709.976938338 1910.72727062 695.87810552 1911.92460775 542.805063495 1913.11427583 369.59083173 1914.3005387 129.910673824 1915.49656354 511.586219398 1916.6901981 289.02607277 1917.89102577 560.932134261 1919.08533129 433.035579412 1920.28526337 1304.14203567 1921.48336441 1346.43853412 1922.67610339 1043.31362854 1923.87925007 947.642977271 1925.05384076 1060.43363982 1926.23440229 760.329912688 1927.41990829 1972.82953504 1928.61631024 1045.32774751 1929.80099339 1148.04781518 1930.99419042 1016.12302239 1932.18194593 753.280496279 1933.36662966 1058.41952084 1934.5426212 861.035861388 1935.72553459 362.541415321 1936.92817512 494.466208119 1938.1289934 842.908790622 1939.32767038 1547.85043152 1940.51291715 2616.34054724 1941.6970569 3098.72204151 1942.89888044 4684.84073354 1944.08482162 7547.91085509 1945.27624714 11796.6948308 1946.47285202 12706.0695475 1947.66674318 8825.8693441 1948.85675583 4355.53228129 1950.05371232 2266.89090525 1951.23070911 2475.35221906 1952.4117545 3071.53143536 1953.59944316 3839.91782395 1954.7868843 3657.6400568 1955.97779048 3477.37640862 1957.16572693 2822.78774207 1958.35631317 1408.87622232 1959.54751318 403.830854289 1960.74646933 320.244916867 1961.94820783 409.873211211 1963.14446345 188.32012407 1964.34046981 138.974209207 1965.51571826 189.327183557 1966.69212621 275.934299439 1967.8804562 82.5788779343 1969.06879645 318.230797893 1970.25396228 119.840078953 1971.44404062 503.529743502 1972.64595096 448.141471717 1973.83293434 269.891942517 1975.00786022 131.924792798 1976.20545306 60.4235692202 1977.40195471 433.035579412 1978.59552564 271.906061491 1979.78454828 314.202559945 1980.97010589 331.322571224 1982.15870743 262.842526108 1983.47206494 369.59083173 1984.65904071 401.816735315 1985.84430067 946.635917784 1987.03262391 849.958207031 1988.21980348 84.5929969083 1989.41761215 375.633188652 1990.61309741 846.93702857 1991.80989613 120.84713844 1993.00808191 146.023625616 1994.21034005 178.2495292 1995.40088465 1839.89768276 1998.03573763 2258.83442935 1999.22321602 2258.83442935 2000.40147672 4178.28981158 2001.59478372 2919.46545282 2002.79308505 3399.83282813 2003.99237345 1802.63648174 2005.18956454 1428.01035257 2006.38426448 668.687499371 2007.55970676 281.976656361 2008.76659969 389.732021471 2009.96364152 189.327183557 2011.1483141 187.313064583 2012.34539727 191.341302531 2013.53642134 872.113515745 2014.73529538 921.459430609 2015.93314188 538.776825547 2017.12542662 442.099114795 2018.32878385 646.532190657 2019.52621804 244.715455342 2020.72186898 215.510730219 2021.91974246 331.322571224 2023.13015965 610.278049124 2024.33255708 215.510730219 2025.52463479 1363.5585454 2026.7085068 890.240586511 2027.90815707 1233.64787158 2029.09666887 894.268824459 2030.28078194 380.668486087 2031.47920878 539.783885034 2032.67809807 298.089608153 2033.87316545 64.4518071682 2035.07087558 231.623682011 2036.26533037 441.092055308 2037.46196721 125.882435875 2038.67391986 156.094220486 2039.84973604 65.4588666553 2041.04490488 103.727127161 2042.24275226 333.336690198 2043.43590179 121.854197927 2044.62492267 158.10833946 2045.81243654 295.068429692 2046.98888467 81.5718184473 2048.17628506 206.447194836 2049.37317351 526.692111703 2050.57646681 311.181381484 2051.77236145 445.120293256 2052.95744077 704.941640903 2054.13640732 455.190888126 2055.31128217 1827.81296891 2056.50542024 1582.09045408 2057.6952892 524.677992729 2058.89050848 748.245198844 2060.0825032 554.889777339 2061.25860206 151.058923051 2062.43347867 110.77654357 2063.6309243 497.48738658 2064.83472521 213.496611245 2066.01076309 477.34619684 2067.21133445 438.070876847 2068.40908037 452.169709665 2069.58530006 222.560146628 2070.76145259 292.047251231 2071.95871933 450.155590691 2073.1340059 665.66632091 2074.33153335 500.508565041 2075.5220929 901.318240868 2076.69888208 696.885165007 2077.87348538 954.69239368 2079.07249842 498.494446067 2080.26315299 350.456701477 2081.47457691 693.863986546 2082.67563214 497.48738658 2083.8782932 738.174603974 2085.05471992 727.096949617 2086.23063433 329.30845225 2087.4328174 1246.73964491 2088.63078031 119.840078953 2089.81968477 390.739080958 2091.00760392 798.598173194 2092.18403856 365.562593782 2093.37627257 478.353256327 2094.57507945 246.729574316 2095.76377659 38.2682605061 2096.9663699 808.668768064 2098.16494747 275.934299439 2099.36175792 490.437970171 2100.53775005 334.343749685 2101.76271972 339.37904712 2102.96038821 230.616622524 2104.1681908 445.120293256 2105.37324155 30.2117846101 2106.56767551 861.035861388 2107.75884443 661.638082962 2108.93440402 788.527578324 2110.11557433 359.52023686 2111.30371811 1192.35843261 2112.50336515 329.30845225 2113.69772668 575.030967079 2114.88901555 899.304121894 2116.07567841 1022.16537931 2117.26248937 1378.66443771 2118.43889762 1439.08800693 2119.64857876 1938.58951248 2120.84218077 2805.66773079 2122.03736457 3501.54583631 2123.22631859 10375.7338946 2124.40392153 7597.25676996 2125.60602923 5255.84346267 2126.78813618 3787.55073062 2127.98052884 2056.41547246 2129.18194711 3366.59986505 2130.38688172 1726.09996072 2131.58076291 726.08989013 2132.80541968 5504.58715596 2133.97488878 2867.0983595 2135.15700893 1079.56777007 2136.34831539 1313.20557105 2137.54635192 931.530025479 2138.7353728 623.369822455 2139.93096978 1923.48362018 2141.11741066 3016.14316358 2142.29293007 3768.41660037 2143.4917047 4186.34628748 2144.6673505 6057.46281433 2145.84416753 5903.38271282 2147.04694208 2460.24632675 2148.24005525 1459.22919667 2149.41331019 929.515906505 2150.59874112 280.969596874 2151.79379207 261.835466621 2152.98568151 635.454536299 2154.17434844 666.673380397 2155.35657387 1200.41490851 2156.54461852 1103.73719776 2157.7371754 890.240586511 2158.91303292 472.310899405 2160.10365758 660.631023475 2161.28957501 576.038026566 2162.46582021 167.171874843 2163.66857393 292.047251231 2164.86264808 260.828407134 2166.05734919 271.906061491 2167.23291552 317.223738406 2168.43085585 149.044804077 2169.63368934 172.207172278 2170.82553069 418.936746594 2172.02593549 341.393166094 2173.23647087 472.310899405 2174.44147469 454.183828639 2175.63089234 813.704065499 2176.82933559 610.278049124 2178.03421537 609.270989637 2179.22942908 665.66632091 2180.4265495 606.249811176 2181.60244016 889.233527024 2182.77915456 200.404837914 2183.97332547 247.736633803 2185.14839533 254.786050212 2186.33978742 398.795556854 2187.51562823 555.896836826 2188.7166427 1120.85720904 2189.89240902 332.329630711 2191.08364217 554.889777339 2192.25867156 440.084995821 2193.45907138 821.760541395 2194.64678936 978.861821368 2195.84691 778.456983454 2197.03485935 412.894389672 2198.20946646 630.419238864 2199.40614172 593.158037845 2200.61223878 393.760259419 2201.81335969 863.049980362 2203.01174225 584.094502462 2204.21539155 677.751034754 2205.41251988 816.72524396 2206.58813108 658.616904501 2207.7807774 242.701336368 2208.98592931 200.404837914 2210.18594819 561.939193748 2211.37508784 269.891942517 2212.5794169 442.099114795 2213.76701611 460.226185561 2214.94546977 246.729574316 2216.13910756 464.254423509 2217.33728777 76.5365210123 2218.53603132 238.67309842 2219.72785038 243.708395855 2220.92415615 656.602785527 2222.09917879 300.103727127 2223.27446712 396.78143788 2224.47232476 92.6494728044 2225.66188874 168.17893433 2226.84949645 53.3741528112 2228.025666 413.901449159 2229.21547366 108.762424596 2231.57830226 327.294333276 2232.76372058 113.797722031 2233.96373946 273.920180465 2235.17094734 157.101279973 2236.36849825 196.376599966 2237.57162997 339.37904712 2238.74639338 387.717902497 2239.93669899 619.341584507 2241.12506299 18.1270707661 2242.31629995 104.734186648 2243.50634837 235.651919959 2244.7025518 244.715455342 2245.87737474 153.073042025 2247.05349355 146.023625616 2248.25885866 710.983997825 2249.45768607 125.882435875 2250.65203323 210.475432784 2251.82786524 111.783603057 2253.05689788 249.750752777 2254.22711975 89.6282943433 2255.40273886 172.207172278 2256.60262989 246.729574316 2257.8074824 115.811841005 2259.0124742 79.5576994733 2260.22085918 937.572382401 2261.41500517 907.360597791 2262.58938149 939.586501375 2263.7646012 994.97477316 2264.96002722 397.788497367 2266.143801 881.177051128 2267.33469633 674.729856293 2268.53817731 676.743975267 2269.72878437 421.957925055 2270.9125212 291.040191744 2272.09986001 405.844973263 2273.28582377 210.475432784 2274.48058588 81.5718184473 2275.67928602 307.153143536 2276.8544896 430.014400951 2278.04713533 25.1764871751 2279.23718082 91.6424133174 2282.76239421 33.2329630711 2283.9411986 231.623682011 2285.12579112 510.579159911 2286.31508619 1706.96583047 2287.50495544 1056.40540187 2288.69129515 1529.72336076 2289.87758002 1019.14420085 2291.06565458 680.772213215 2292.2505301 1170.2031239 2293.43528802 1434.05270949 2294.61764892 414.908508646 2295.80057903 847.944088057 2296.98619001 588.12274041 2298.16671518 79.5576994733 2299.34908546 393.760259419 2300.53861484 23.1623682011 2301.7206432 275.934299439 2302.89522509 328.301392763 2304.07253244 291.040191744 2305.26093808 94.6635917784 2306.43927415 949.657096245 2307.62429277 407.859092237 2308.80075585 275.934299439 2309.97497588 22.1553087141 2311.1566626 436.056757873 2312.33285473 522.663873755 2313.50787884 583.087442975 2314.68265516 49.3459148632 2315.87354579 791.548756785 2317.04974466 782.485221402 2318.23111995 599.200394767 2319.40633351 1098.70190032 2320.59092838 1009.07360598 2321.77323504 976.847702394 2322.94815329 1100.7160193 2324.12361346 637.468655273 2325.29985162 704.941640903 2326.47445346 1083.59600802 2327.64953886 935.558263427 2328.82579022 860.028801901 2330.00103925 596.179216306 2331.17805511 521.656814268 2332.35474575 439.077936334 2333.53137188 236.658979446 2334.71524859 617.327465533 2335.89241929 737.167544487 2337.07415821 513.600338372 2338.26165654 535.755647086 2339.44241133 1707.97288996 2340.62573966 365.562593782 2341.8017095 922.466490096 2342.97644388 440.084995821 2344.1515762 545.826241956 2345.32866655 325.280214302 2346.50495222 144.009506642 2347.67976343 51.3600338372 2348.85498343 245.722514829 2350.03453677 115.811841005 2351.22109612 161.129517921 2352.40696047 79.5576994733 2354.77413326 25.1764871751 2355.95816128 220.546027654 2357.14035357 377.647307626 2358.3191993 357.506117886 2359.49623891 284.997834822 2360.6758163 664.659261423 2361.8499287 803.633470629 2363.02613959 827.802898317 2364.20047662 730.118128078 2365.37613591 479.360315814 2366.55306526 850.965266518 2367.72858731 494.466208119 2368.91111947 342.400225581 2370.08799956 989.939475725 2371.26439373 403.830854289 2372.44001519 216.517789706 2373.63469929 534.748587599 2374.81267349 506.550921963 2375.98760757 1198.40078953 2377.16434602 1256.81023978 2378.33930913 629.412179377 2379.51620828 273.920180465 2380.69472381 317.223738406 2381.87545015 505.543862476 2383.05807674 684.800451163 2384.23892213 744.216960896 2385.41375417 792.555816272 2386.59254477 499.501505554 2387.76789644 380.668486087 2388.94356981 634.447476812 2390.11894523 280.969596874 2391.29957303 667.680439884 2392.47919294 682.786332189 2393.65580441 113.797722031 2394.83211853 619.341584507 2396.01021354 843.915850109 2397.18462623 258.81428816 2398.36218988 506.550921963 2399.53711106 121.854197927 2400.71480491 380.668486087 2401.89014426 339.37904712 2403.07121047 301.110786614 2404.24737972 272.913120978 2405.42586065 275.934299439 2406.61141739 369.59083173 2407.78833501 258.81428816 2408.97235717 345.421404042 2410.1570623 485.402672736 2411.33241104 620.348643994 2412.51168052 725.082830643 2413.68848876 1240.69728799 2414.86262726 1063.45481828 2416.0376848 2680.7923544 2417.21384203 1113.80779263 2418.39466689 1718.04348483 2419.57097544 999.003011108 2420.74661801 1224.5843362 2421.92140107 863.049980362 2423.09735156 431.021460438 2424.27181322 298.089608153 2425.44823818 120.84713844 2426.62288136 241.694276881 2427.79792102 130.917733311 2428.97257036 151.058923051 2430.14856336 563.953312722 2431.32387985 498.494446067 2432.50115699 304.131965075 2433.6776148 383.689664548 2434.85218906 190.334243044 2436.02654955 296.075489179 2437.20235811 547.84036093 2438.37724879 248.74369329 2439.55409251 370.597891217 2440.72944917 170.193053304 2441.90496271 165.157755869 2443.08019151 322.259035841 2444.25510038 547.84036093 2445.43160364 574.023907592 2446.60681807 880.169991641 2447.78340197 391.746140445 2448.95876068 375.633188652 2450.13408156 459.219126074 2451.3086919 211.482492271 2452.48563239 409.873211211 2453.65902839 591.143918871 2454.83438915 450.155590691 2456.01058802 229.609563037 2457.18572621 53.3741528112 2458.36166555 832.838195752 2459.53665711 349.44964199 2460.71232549 434.042638899 2461.88755018 326.287273789 2463.06328572 618.33452502 2464.23764445 345.421404042 2465.41357822 1074.53247263 2466.58930173 1391.75621104 2467.76428508 3436.08696966 2468.94053791 4738.21488635 2470.1162186 4605.28303407 2471.29253477 2876.16189488 2472.46851077 2381.69568676 2473.64316363 1210.48550338 2474.81883465 736.160485 2475.9944781 260.828407134 2477.17116464 13.0917733311 2478.34448146 175.228350739 2479.52012345 77.5435804993 2480.69647363 515.614457346 2481.87181592 135.953030746 2483.04663857 491.445029658 2484.22224067 343.407285068 2485.40017997 509.572100424 2486.57440967 945.628858297 2487.74970475 1138.9842798 2488.92668776 597.186275793 2490.10135001 362.541415321 2491.27671986 989.939475725 2492.45271111 546.833301443 2493.62868886 289.02607277 2494.80396282 961.741810089 2495.98094379 536.762706573 2497.15465532 772.414626532 2498.33059231 330.315511737 2499.50559443 248.74369329 2500.68153348 153.073042025 2501.85696726 457.2050071 2503.03261951 187.313064583 2504.2085741 325.280214302 2505.38392548 74.5224020383 2506.55795049 183.284826635 2507.73814869 289.02607277 2508.91291562 37.2612010191 2510.08850952 354.484939425 2511.26451162 148.03774459 2512.43958177 53.3741528112 2513.64012703 292.047251231 2514.84022686 246.729574316 2516.02054704 40.2823794802 2517.19536412 277.948418413 2518.39814483 254.786050212 2519.59544559 194.362480992 2520.80068049 460.226185561 2522.01460348 373.619069678 2523.21778857 113.797722031 2524.39318012 171.200112791 2526.80413525 183.284826635 2528.01041236 266.870764056 2529.21591793 271.906061491 2530.41513126 837.873493187 2531.61018603 375.633188652 2532.78643651 268.88488303 2533.96126884 250.757812264 2535.15321458 305.139024562 2536.34902183 350.456701477 2537.55069552 629.412179377 2538.74847105 1253.78906132 2539.92334942 839.887612161 2541.0987181 732.132247052 2542.30808986 172.207172278 2543.49471607 814.711124986 2544.6990114 1166.17488595 2545.89670629 796.58405422 2547.10144971 1014.10890341 2548.30682244 440.084995821 2549.48576289 71.5012235773 2550.68989019 369.59083173 2551.90573249 208.46131381 2553.10845425 102.720067674 2554.31381643 490.437970171 2555.5245474 577.045086053 2556.73148872 751.266377305 2557.90641635 896.282943433 2559.1094123 685.80751065 2560.30461926 1393.77033001 2561.50009601 3147.06089689 2562.69904073 4444.15351615 2563.87643605 6158.16876303 2565.07163598 4921.49971299 2566.24785098 2462.26044572 2567.44224593 1302.1279167 2568.63954904 447.13441223 2569.83958581 582.080383488 2571.02084645 919.445311635 2572.19687113 735.153425513 2573.4049828 272.913120978 2574.60736557 348.442582503 2575.82256917 151.058923051 2577.02356311 536.762706573 2578.22468637 173.214231765 2579.42748877 656.602785527 2580.61218189 452.169709665 2581.80167108 161.129517921 2582.99364351 223.567206115 2584.1963773 349.44964199 2585.39754044 310.174321997 2586.60343896 352.470820451 2587.79811896 261.835466621 2588.97428293 336.357868659 2590.14985894 782.485221402 2591.35796211 537.76976606 2592.54850436 535.755647086 2593.75969838 402.823794802 2594.96246031 543.812122982 2596.15681891 506.550921963 2597.33095418 346.428463529 2598.52344302 284.997834822 2599.73483527 112.790662544 2600.92489601 63.4447476812 2602.12519612 139.981268694 2603.32373909 105.741246135 2604.4998535 146.023625616 2605.69458511 494.466208119 2606.9003678 620.348643994 2608.11094716 754.287555766 2609.31312055 549.854479904 2610.51340717 1111.79367365 2611.70937687 923.473549583 2612.90392843 933.544144453 2614.08000999 471.303839918 2615.28506308 647.539250144 2616.4906622 405.844973263 2617.68784595 373.619069678 2618.88623731 241.694276881 2620.0908036 122.861257414 2621.30099031 27.1906061491 2622.4980943 292.047251231 2623.69297224 37.2612010191 2626.09142734 172.207172278 2627.28765833 205.440135349 2628.46798732 810.682887038 2629.64451902 2024.18956888 2630.84909382 4191.38158491 2632.05312259 15837.0174926 2633.24205315 31122.1663864 2634.44188876 66415.5731679 2635.62747305 114277.082347 2636.82797257 146349.912889 2638.0034741 154333.880502 2639.19980274 138914.792697 2640.37546056 101818.749434 2641.55487607 69632.1211694 2642.74922411 32429.3296005 2643.94733424 13022.2862264 2645.1512548 4615.35362894 2646.32592379 999.003011108 2647.50148015 225.581325089 2648.69802697 47.3317958892 2649.89093164 115.811841005 2651.09350061 274.927239952 2652.29582913 479.360315814 2653.47974689 616.320406046 2654.68923507 362.541415321 2655.90081295 437.06381736 2657.10194383 484.395613249 2658.29937187 198.39071894 2659.50020041 180.263648174 2660.69918325 275.934299439 2661.87411704 179.256588687 2663.05044787 422.964984542 2664.24673751 452.169709665 2665.44309606 325.280214302 2666.64190295 258.81428816 2667.84772523 280.969596874 2669.05352669 439.077936334 2670.2569804 484.395613249 2671.45326036 428.000281977 2672.64477591 602.221573228 2673.84971492 565.967431696 2675.05632076 1643.52108279 2676.25679301 1409.88328181 2677.43113092 2317.2438796 2678.62987916 1581.0833946 2679.84403147 1150.06193416 2681.05256571 379.6614266 2682.25454497 312.188440971 2683.45057772 425.986163003 2684.6555792 755.294615253 2685.86281904 451.162650178 2687.03838215 216.517789706 2688.23350583 995.981832647 2689.43371562 1447.14448282 2690.63312044 1847.95415865 2691.83377509 2295.08857088 2693.04163281 3353.50809172 2694.22661331 2090.65549502 2695.41338643 458.212066587 2696.61737268 1519.65276589 2697.80950669 1524.68806332 2698.99557544 431.021460438 2700.19328909 878.155872667 2701.39502876 207.454254323 2702.57318829 331.322571224 2703.77224268 63.4447476812 2704.97214016 193.355421505 2706.16504747 70.4941640903 2707.36873314 157.101279973 2709.74210403 64.4518071682 2710.94428357 531.727409138 2712.15026919 1790.55176789 2713.35081065 1911.39890633 2714.5425517 2128.92375553 2715.7182802 2826.81598002 2716.9224641 1024.17949828 2718.12626238 844.922909596 2719.30165217 515.614457346 2720.50866093 508.565040937 2721.7158826 478.353256327 2722.93245743 109.769484083 2724.13842751 183.284826635 2725.3446879 80.5647589603 2726.5391028 349.44964199 2727.7144319 46.3247364022 2728.91652786 9.06353538304 2730.12415773 42.2964984542 2731.3311838 62.4376881942 2732.52912619 43.3035579412 2733.70367582 67.4729856293 2734.90924649 374.626129165 2736.09527682 374.626129165 2737.29456464 275.934299439 2738.48736491 509.572100424 2739.68545832 1014.10890341 2740.88042981 702.927521929 2742.06508803 1190.34431364 2743.24076843 1341.40323669 2744.44554029 1051.37010443 2745.65815392 670.701618345 2746.85812266 407.859092237 2748.06106905 60.4235692202 2749.2695508 242.701336368 2750.47217667 792.555816272 2751.64792804 1140.99839878 2752.84236787 985.911237777 2754.03934429 1816.73531456 2755.23364424 2351.48390215 2756.43733812 2587.13582211 2757.63805142 1932.54715556 2758.82512044 2039.29546118 2760.02593315 2462.26044572 2761.21743931 2889.25366821 2762.41692595 1695.88817611 2763.62134738 278.9554779 2764.8221466 980.875940342 2766.02243117 227.595444063 2767.19790307 487.41679171 2768.38698612 435.049698386 2769.57456158 890.240586511 2770.75031793 260.828407134 2771.94919491 235.651919959 2773.14888799 252.771931238 2774.34659138 313.195500458 2775.54298161 274.927239952 2776.72774393 563.953312722 2777.93285948 652.574547579 2779.12423368 480.367375301 2780.33441159 250.757812264 2781.53518969 612.292168098 2782.73487193 1119.85014955 2783.91520502 511.586219398 2785.08828137 519.642695294 2786.27043378 430.014400951 2787.48371807 546.833301443 2788.68316805 1029.21479572 2789.88466696 597.186275793 2791.09409503 718.033414234 2792.26951385 96.6777107524 2793.44704085 271.906061491 2794.64959164 368.583772243 2795.85732385 149.044804077 2797.06286461 310.174321997 2798.25997623 137.96714972 2799.45401078 186.306005096 2800.65025057 136.960090233 2803.03339985 293.054310718 2804.21900379 289.02607277 2805.40976364 633.440417325 2806.60551341 717.026354747 2807.78551014 580.066264514 2808.96254975 278.9554779 2810.15236006 136.960090233 2811.35339886 578.05214554 2812.52800949 45.3176769152 2814.9355688 92.6494728044 2816.12181643 49.3459148632 2817.2971986 62.4376881942 2819.69489976 103.727127161 2820.90176425 53.3741528112 2822.10861554 278.9554779 2823.30121757 188.32012407 2824.47605694 387.717902497 2825.68284284 948.650036758 2826.88395466 2573.03698929 2828.08486678 8670.7821831 2829.28533404 21620.5601265 2830.48853263 47645.9984491 2831.66367111 69605.9376227 2832.84024973 79289.8216498 2834.04498816 71058.117403 2835.23796438 60248.3408695 2836.43858208 37023.5349802 2837.64094667 13859.1526601 2838.84137258 6718.0938378 2840.01524276 2975.8607841 2841.19052405 1048.34892597 2842.37162838 988.932416238 2843.58171949 682.786332189 2844.77865779 523.670933242 2845.98225402 331.322571224 2847.16163933 1243.71846645 2848.33857807 462.240304535 2849.53796793 207.454254323 2850.71314365 261.835466621 2851.91134146 423.972044029 2853.11771329 179.256588687 2854.33212659 373.619069678 2855.51546871 35.2470820451 2856.72307687 229.609563037 2857.91674399 490.437970171 2859.10384878 85.6000563953 2860.29290954 252.771931238 2861.48621244 408.866151724 2862.68503516 934.55120394 2863.88004331 558.918015287 2865.08446708 482.381494275 2866.28793223 584.094502462 2867.48033339 167.171874843 2868.68771253 263.849585595 2869.87215843 340.386106607 2871.04918426 604.235692202 2872.22538723 243.708395855 2873.4212238 776.44286448 2874.61928525 785.506399863 2875.81830005 103.727127161 2877.01634567 213.496611245 2878.19210965 453.176769152 2879.38766822 232.630741498 2880.58292591 102.720067674 2881.77517341 167.171874843 2882.96225298 207.454254323 2884.1615103 291.040191744 2885.35753514 305.139024562 2886.55864315 187.313064583 2887.90604422 491.445029658 2889.11925138 220.546027654 2890.32051599 314.202559945 2891.52789278 777.449923967 2892.72163673 298.089608153 2893.92765167 412.894389672 2895.12863945 242.701336368 2896.33334797 245.722514829 2897.52276972 448.141471717 2898.72728177 163.143636895 2899.92422887 292.047251231 2901.11498402 86.6071158823 2902.30466765 505.543862476 2903.49388852 441.092055308 2904.66881234 648.546309631 2905.85127501 1490.44804077 2907.03707865 1599.21046536 2908.21336755 1588.13281101 2909.40206967 1685.81758124 2910.57841311 1361.54442643 2911.77399338 1297.09261926 2912.95142389 660.631023475 2914.13559209 893.261764972 2915.31644012 1212.49962235 2916.49575007 815.718184473 2917.67950654 435.049698386 2918.85527932 337.364928146 2920.03029141 139.981268694 2921.20597621 394.767318906 2922.38176365 216.517789706 2923.5612123 362.541415321 2924.74490573 240.687217394 2925.92526404 362.541415321 2927.1077833 774.428745506 2928.28402645 306.146084049 2929.45922006 441.092055308 2930.63519635 502.522684015 2931.82722508 736.160485 2933.01160559 229.609563037 2935.38727438 237.666038933 2936.57570818 107.755365109 2937.75518616 263.849585595 2938.94012794 113.797722031 2940.13678854 77.5435804993 2941.31733776 400.809675828 2942.49847816 382.682605061 2943.67648579 333.336690198 2944.85626317 148.03774459 2946.03608571 245.722514829 2947.21411504 236.658979446 2948.38949897 226.588384576 2949.56394333 216.517789706 2950.74328553 373.619069678 2951.92441303 187.313064583 2953.09985942 174.221291252 2954.28703371 44.3106174282 2955.46708001 99.6988892134 2956.65567568 366.569653269 2957.83034906 339.37904712 2959.01736823 160.122458434 2960.19296271 136.960090233 2961.36828212 108.762424596 2962.55532562 153.073042025 2963.73306727 98.6918297264 2964.91000513 119.840078953 2966.08524742 281.976656361 2967.26123163 151.058923051 2969.61190154 148.03774459 2970.78934437 317.223738406 2971.97059063 326.287273789 2973.1468895 453.176769152 2974.32122506 75.5294615253 2975.4965999 226.588384576 2976.67949569 269.891942517 2977.85430632 124.875376388 2979.02981987 62.4376881942 2980.2129702 135.953030746 2981.39783985 355.491998912 2982.57562108 60.4235692202 2983.76083208 156.094220486 2984.94076547 286.004894309 2986.11634617 297.082548666 2987.31224285 430.014400951 2988.49371903 318.230797893 2989.66907891 316.216678919 2990.85133659 327.294333276 2992.03136763 184.291886122 2993.21669886 375.633188652 2994.40941584 232.630741498 2995.59538958 200.404837914 2997.96248964 538.776825547 2999.14899532 259.821347647 3000.33340603 543.812122982 3001.5173455 120.84713844 3002.69427954 248.74369329 3003.88569099 296.075489179 3005.06865774 179.256588687 3006.25962697 358.513177373 3007.44766429 300.103727127 3008.62269632 250.757812264 3009.81696343 423.972044029 3011.01503631 219.538968167 3012.20468122 680.772213215 3013.40261188 559.925074774 3014.58997562 418.936746594 3015.7773936 545.826241956 3016.9705314 380.668486087 3018.16058012 589.129799897 3019.34472309 400.809675828 3020.52946371 632.433357838 3021.72094466 587.115680923 3022.89634706 418.936746594 3024.07901412 93.6565322914 3025.2601988 393.760259419 3026.4681184 143.002447155 3027.65862781 113.797722031 3028.84027436 209.468373297 3030.02731259 445.120293256 3031.21293002 584.094502462 3032.39621994 474.325018379 3033.57678088 65.4588666553 3034.77519922 215.510730219 3035.96061314 24.1694276881 3037.13672637 108.762424596 3038.32786041 86.6071158823 3039.50556804 71.5012235773 3040.68921601 129.910673824 3041.86530257 79.5576994733 3043.05424016 76.5365210123 3044.23031205 82.5788779343 3045.40677573 118.833019466 3046.58131158 24.1694276881 3047.7567087 82.5788779343 3048.93245802 497.48738658 3050.10820675 479.360315814 3051.28273791 246.729574316 3052.45807023 407.859092237 3053.63384623 248.74369329 3054.80838971 408.866151724 3055.98436541 582.080383488 3057.16014552 366.569653269 3058.33505028 377.647307626 3059.51099138 278.9554779 3060.68600171 470.296780431 3063.03764169 297.082548666 3064.21334644 226.588384576 3065.3899318 113.797722031 3066.56537262 188.32012407 3067.74127941 214.503670732 3068.91625925 65.4588666553 3070.09154875 41.2894389672 3071.26661597 58.4094502462 3072.4416046 124.875376388 3073.61738207 166.164815356 3074.79299473 240.687217394 3075.96904023 269.891942517 3077.14500098 134.945971259 3078.31912276 346.428463529 3079.49449848 158.10833946 3080.6703475 448.141471717 3081.84711381 337.364928146 3083.02245375 474.325018379 3084.19921829 341.393166094 3085.37407789 199.397778427 3086.54924042 358.513177373 3087.72570585 226.588384576 3088.90087834 446.127352743 3090.07595319 309.16726251 3091.25232889 183.284826635 3092.42737411 419.943806081 3093.60260438 412.894389672 3094.77788567 473.317958892 3095.95274498 157.101279973 3097.12898959 206.447194836 3098.30369905 866.071158823 3099.47920643 922.466490096 3100.65521029 1119.85014955 3101.83070712 1304.14203567 3103.0205447 694.871046033 3104.19584065 345.421404042 3105.37190169 128.903614336 3106.54726011 155.087160999 3107.72288098 111.783603057 3108.89818867 401.816735315 3110.07392244 201.411897401 3111.24981516 623.369822455 3112.42354897 287.011953796 3113.599476 596.179216306 3114.77515288 495.473267606 3115.95146494 803.633470629 3117.12710723 970.805345472 3118.30304598 501.515624528 3119.47774165 312.188440971 3120.65373114 256.800169186 3121.82910041 152.065982538 3123.03251951 165.157755869 3124.23667145 103.727127161 3125.43600941 298.089608153 3126.64126836 219.538968167 3127.84044826 446.127352743 3129.04378438 155.087160999 3130.25018172 448.141471717 3131.45693946 404.837913776 3132.63840478 312.188440971 3133.84530065 466.268542483 3135.05856324 334.343749685 3136.26916225 135.953030746 3137.46909023 195.369540479 3138.64459849 85.6000563953 3139.84186113 105.741246135 3141.03775694 9.06353538304 3142.24270534 217.524849193 3143.43552086 132.931852285 3144.64126719 160.122458434 3145.83394752 301.110786614 3147.0281287 193.355421505 3148.21880086 293.054310718 3149.42374105 366.569653269 3150.6361368 207.454254323 3151.82977283 275.934299439 3153.0045078 373.619069678 3154.18113569 372.612010191 3155.38771132 210.475432784 3156.59591508 189.327183557 3157.80533875 316.216678919 3159.02198279 451.162650178 3160.19631308 477.34619684 3161.37158645 940.593560862 3162.56864792 1076.54659161 3163.77067087 1615.32341715 3164.96812383 873.120575232 3166.17982428 755.294615253 3167.3822783 382.682605061 3168.57537476 554.889777339 3169.77212245 208.46131381 3170.977755 53.3741528112 3172.18633968 110.77654357 3173.39293115 120.84713844 3174.59093659 94.6635917784 3175.79419793 373.619069678 3176.99523644 390.739080958 3178.18476171 225.581325089 3179.37295299 62.4376881942 3180.5719543 176.235410226 3181.76939641 183.284826635 3182.9728944 331.322571224 3184.18026474 422.964984542 3185.3563595 335.350809172 3186.53091295 85.6000563953 3187.74310723 217.524849193 3188.95186347 103.727127161 3190.15984553 192.348362018 3191.35922542 116.818900492 3192.54650001 134.945971259 3193.75384659 186.306005096 3194.95740558 382.682605061 3196.16415189 607.256870663 3197.36566605 1038.2783311 3198.56979892 727.096949617 3199.77237934 823.774660369 3200.94873656 656.602785527 3202.14832994 531.727409138 3203.34052084 228.60250355 3204.54505224 185.298945609 3205.7217813 251.764871751 3206.90905383 196.376599966 3208.10893371 114.804781518 3209.28469095 141.995387668 3211.69232445 324.273154815 3212.89667902 331.322571224 3214.09616038 126.889495362 3215.28790085 374.626129165 3216.46934095 294.061370205 3217.6709035 501.515624528 3218.87277396 778.456983454 3220.0746063 641.496893221 3221.26406969 509.572100424 3222.47683874 342.400225581 3223.66445994 439.077936334 3224.843257 300.103727127 3226.0432492 179.256588687 3227.24077781 109.769484083 3228.44368461 259.821347647 3229.63934259 139.981268694 3230.81451157 858.014682927 3231.99024769 732.132247052 3233.18495789 699.906343468 3234.3861052 44.3106174282 3235.59298054 310.174321997 3236.79050358 121.854197927 3238.00773676 295.068429692 3239.18674407 139.981268694 3240.38386302 203.426016375 3241.5874915 137.96714972 3242.77933256 126.889495362 3243.97974264 178.2495292 3245.18511449 177.242469713 3246.37307263 140.988328181 3247.58434553 289.02607277 3248.78267677 358.513177373 3249.98377921 382.682605061 3251.18312157 96.6777107524 3252.38461198 326.287273789 3253.58279747 145.016566129 3255.95794692 428.000281977 3257.14866102 25.1764871751 3258.34238531 32.2259035841 3259.54240273 251.764871751 3260.7590242 27.1906061491 3261.93348615 45.3176769152 3266.71786819 131.924792798 3267.91730937 273.920180465 3269.10443264 371.604950704 3270.27991568 238.67309842 3271.47821115 175.228350739 3272.66789418 119.840078953 3273.86961508 358.513177373 3276.28664692 108.762424596 3277.47669358 52.3670933242 3278.65211945 9.06353538304 3279.85020699 116.818900492 3282.2614542 57.4023907592 3284.65045467 86.6071158823 3285.84758476 235.651919959 3287.02251357 121.854197927 3288.19764208 110.77654357 3289.39465106 360.527296347 3290.6033636 114.804781518 3291.77910646 66.4659261423 3292.98985562 253.778990725 3294.1875376 216.517789706 3295.36237198 65.4588666553 3296.55174476 196.376599966 3297.75066308 490.437970171 3298.9461504 365.562593782 3300.14351157 640.489833734 3301.350713 84.5929969083 3302.5532069 487.41679171 3303.72953157 490.437970171 3304.93065337 38.2682605061 3306.13483932 281.976656361 3307.32903076 523.670933242 3308.53133728 412.894389672 3309.73812582 346.428463529 3310.91375666 113.797722031 3312.09456863 439.077936334 3313.29927216 815.718184473 3314.50539414 579.059205027 3315.70122455 491.445029658 3316.91166433 358.513177373 3318.09733279 300.103727127 3319.29546843 889.233527024 3320.48984198 1054.39128289 3321.66718335 840.894671648 3322.87886679 1273.93025106 3324.06647627 1074.53247263 3325.27350556 446.127352743 3326.44979797 162.136577408 3327.62731147 339.37904712 3328.82336739 346.428463529 3330.02773516 227.595444063 3331.22669336 510.579159911 3332.42783686 569.995669644 3333.60261875 501.515624528 3334.77804842 1799.61530328 3335.97022319 3253.80920251 3337.17191154 3305.16923635 3338.36372767 2844.94305079 3339.56110527 2351.48390215 3340.76002095 2028.21780683 3341.95499361 1825.79884994 3343.15194159 794.569935246 3344.34138094 379.6614266 3345.53260118 397.788497367 3346.72662078 1259.83141824 3347.92924753 2130.9378745 3349.13694514 2260.84854832 3350.33940943 2667.70058107 3351.51629039 3192.3785738 3352.7295826 2066.48606733 3353.92647956 747.238139357 3355.13886299 852.979385492 3356.3454612 437.06381736 3357.5446109 776.44286448 3358.75405627 561.939193748 3359.96218114 445.120293256 3361.1743939 312.188440971 3362.44213127 229.609563037 3363.63238908 209.468373297 3364.80789177 210.475432784 3365.9892788 41.2894389672 3367.17967267 770.400507558 3368.37627696 129.910673824 3369.57564366 189.327183557 3370.7760599 219.538968167 3371.9549376 155.087160999 3373.13395693 66.4659261423 3374.33893993 87.6141753693 3375.53785298 74.5224020383 3376.74257176 132.931852285 3377.93619929 208.46131381 3379.13591495 458.212066587 3380.33608868 12.084713844 3381.52753296 238.67309842 3382.71592893 126.889495362 3383.90590228 164.150696382 3385.10459275 283.990775335 3386.30007654 118.833019466 3387.50290241 171.200112791 3388.69647891 63.4447476812 3389.89289523 164.150696382 3391.09284462 133.938911772 3392.27527326 11.077654357 3393.48111783 147.030685103 3394.68595685 213.496611245 3395.8813163 124.875376388 3397.05548735 219.538968167 3398.23095134 149.044804077 3399.44046093 95.6706512654 3400.63147238 155.087160999 3401.84146407 514.607397859 3403.03454968 496.480327093 3404.24697328 247.736633803 3405.42360645 320.244916867 3406.6042322 344.414344555 3407.81386173 284.997834822 3409.00989771 72.5082830643 3410.20793863 123.868316901 3411.40508339 78.5506399863 3412.5795298 115.811841005 3413.75574245 119.840078953 3414.95674724 82.5788779343 3416.13979434 342.400225581 3417.33869976 327.294333276 3418.53498119 203.426016375 3419.73542265 108.762424596 3420.94674129 532.734468625 3422.12235513 538.776825547 3423.33348081 402.823794802 3424.53844036 347.435523016 3425.72776416 551.868598878 3426.93972649 326.287273789 3428.14324178 395.774378393 3429.32807155 621.355703481 3430.50191973 100.7059487 3431.71032143 296.075489179 3432.91923778 65.4588666553 3434.12518645 687.821629624 3435.3280736 296.075489179 3436.51892083 210.475432784 3437.69747654 65.4588666553 3438.8841482 379.6614266 3440.09183173 350.456701477 3441.29316496 240.687217394 3442.49850397 328.301392763 3443.69606425 105.741246135 3444.9042598 183.284826635 3446.09055845 280.969596874 3447.28691114 331.322571224 3448.47926362 45.3176769152 3449.67340433 262.842526108 3450.84808329 101.713008187 3452.02332616 113.797722031 3453.21533085 340.386106607 3456.76413787 92.6494728044 3457.96065214 20.1411897401 3459.13468331 233.637800985 3460.31404047 164.150696382 3461.49329293 511.586219398 3462.69069927 162.136577408 3463.86541781 432.028519925 3465.0687032 314.202559945 3466.24277484 269.891942517 3467.44604175 144.009506642 3468.64159914 336.357868659 3469.81598192 303.124905588 3471.01852861 238.67309842 3472.21874309 167.171874843 3473.41737403 145.016566129 3474.6136971 479.360315814 3475.78908924 132.931852285 3476.99509861 566.974491183 3478.17119162 1026.19361726 3479.36932961 865.064099336 3480.55780006 1424.98917411 3481.75569465 2250.77795345 3482.94853275 2809.69596874 3484.14850647 2109.78962527 3485.32420389 2137.98729091 3486.49862684 1319.24792798 3487.69148048 921.459430609 3488.90811279 278.9554779 3490.1177432 744.216960896 3491.30271314 462.240304535 3492.50643019 135.953030746 3493.72002034 100.7059487 3494.90970132 148.03774459 3496.08542278 181.270707661 3497.28022037 54.3812122982 3498.485089 275.934299439 3499.66550567 45.3176769152 3500.86292285 140.988328181 3502.03998856 486.409732223 3503.25367783 106.748305622 3504.42709758 182.277767148 3505.62278811 152.065982538 3506.80266051 164.150696382 3507.99569889 58.4094502462 3509.17133942 111.783603057 3512.70381687 106.748305622 3513.88621795 103.727127161 3515.06384348 216.517789706 3516.24591817 118.833019466 3517.42094698 37.2612010191 3518.60160147 278.9554779 3520.95917622 80.5647589603 3522.13988466 98.6918297264 3523.32138342 73.5153425513 3524.50954655 45.3176769152 3525.69114735 105.741246135 3526.86687702 143.002447155 3528.04696877 277.948418413 3529.22318347 65.4588666553 3530.39983423 188.32012407 3531.57540056 108.762424596 3532.76049191 393.760259419 3533.94306073 999.003011108 3535.11849157 120.84713844 3536.29496639 543.812122982 3537.47878621 149.044804077 3538.6654652 1119.85014955 3539.84547103 388.724961984 3541.020384 122.861257414 3542.19539257 382.682605061 3543.37717724 533.741528112 3544.5553526 328.301392763 3545.72907117 190.334243044 3546.90498119 121.854197927 3548.08757024 361.534355834 3549.26606114 123.868316901 3550.44647605 301.110786614 3551.62673759 194.362480992 3553.98342291 59.4165097332 3555.16821661 186.306005096 3557.54826888 46.3247364022 3559.91591878 71.5012235773 3561.09182763 128.903614336 3562.28022066 96.6777107524 3563.46930195 345.421404042 3564.65620646 28.1976656361 3567.02503375 188.32012407 3568.19889806 34.2400225581 3569.38180177 174.221291252 3571.73236084 536.762706573 3572.91104147 387.717902497 3574.08820542 163.143636895 3575.2732604 213.496611245 3576.45272577 140.988328181 3577.63388992 108.762424596 3578.81038116 193.355421505 3579.98661698 24.1694276881 3581.17239951 175.228350739 3582.3511778 424.979103516 3583.53150825 486.409732223 3584.71341432 2004.04837914 3585.88914898 2692.87706825 3587.06434669 3908.39786906 3588.23897052 5999.05336408 3589.41419082 5240.73757037 3590.59110961 3345.45161583 3591.76533872 2392.77334112 3592.94794772 817.732303447 3594.13290212 153.073042025 3595.31169682 164.150696382 3596.49563922 80.5647589603 3597.67799367 140.988328181 3598.86825588 279.962537387 3600.04354538 363.548474808 3601.22187294 440.084995821 3602.40361949 174.221291252 3603.57959461 50.3529743502 3604.76465047 129.910673824 3605.9413722 93.6565322914 3607.12354161 47.3317958892 3608.29850854 49.3459148632 3610.6491418 148.03774459 3611.82611455 107.755365109 3613.00577522 55.3882717852 3614.18089317 238.67309842 3615.35652519 178.2495292 3616.53138684 383.689664548 3617.70678455 283.990775335 3618.88272565 609.270989637 3620.05835943 718.033414234 3621.23413426 377.647307626 3622.40972288 550.861539391 3623.58534082 568.988610157 3624.76054704 326.287273789 3625.93848868 240.687217394 3627.11438345 195.369540479 3628.28997735 386.710843009 3629.46561963 243.708395855 3630.64144226 324.273154815 3631.81857219 361.534355834 3632.99452883 217.524849193 3634.16829373 517.62857632 3635.34361285 718.033414234 3636.51921613 717.026354747 3637.69622525 568.988610157 3638.87123382 512.593278885 3640.04705234 443.106174282 3641.22254565 391.746140445 3642.39909788 154.080101512 3643.57451671 707.962819364 3644.74916781 987.925356751 3645.92497959 634.447476812 3647.10044563 2020.16133093 3648.27577266 646.532190657 3649.45142022 190.334243044 3650.62708098 413.901449159 3651.80251066 252.771931238 3652.97673508 458.212066587 3654.15307295 159.115398947 3655.32844925 196.376599966 3656.51197905 458.212066587 3657.68726327 337.364928146 3658.86262667 332.329630711 3660.03822526 268.88488303 3661.21295114 315.209619432 3662.38832304 86.6071158823 3663.56457763 74.5224020383 3664.73941025 349.44964199 3665.91403114 455.190888126 3667.08954557 599.200394767 3668.26554121 379.6614266 3669.44092426 344.414344555 3670.6154522 702.927521929 3671.790698 700.913402955 3672.96684116 141.995387668 3674.14282448 489.430910684 3675.31851251 642.503952708 3676.49410963 478.353256327 3677.66914694 164.150696382 3678.84480652 321.251976354 3680.02007872 455.190888126 3681.19477235 540.790944521 3682.39426074 695.87810552 3683.57073556 467.27560197 3684.74576319 263.849585595 3685.94021093 145.016566129 3687.15028063 162.136577408 3688.35972776 30.2117846101 3689.57333316 241.694276881 3690.78201667 148.03774459 3691.95774106 195.369540479 3693.14110546 169.185993817 3694.34032143 121.854197927 3695.53569525 58.4094502462 3696.74177501 397.788497367 3697.93744061 170.193053304 3699.12880719 716.01929526 3700.30390344 169.185993817 3701.49934882 390.739080958 3702.70916427 286.004894309 3703.90582809 202.418956888 3705.10655136 123.868316901 3706.30453686 368.583772243 3707.49352372 203.426016375 3708.6724759 117.825959979 3712.2823561 9.06353538304 3713.50761521 47.3317958892 3715.87936678 116.818900492 3717.09779935 45.3176769152 3718.30393804 58.4094502462 3719.50467187 131.924792798 3720.70606756 19.1341302531 3721.90391024 165.157755869 3723.07917277 146.023625616 3724.26457584 86.6071158823 3725.46029393 266.870764056 3727.87030568 160.122458434 3729.06339803 256.800169186 3730.27068978 133.938911772 3731.44647722 128.903614336 3732.63074366 141.995387668 3733.83189126 520.649754781 3735.03595375 236.658979446 3736.23924441 401.816735315 3737.43046701 541.798004008 3738.61170184 392.753199932 3739.81442917 600.207454254 3741.02485868 510.579159911 3742.2336158 571.002729131 3743.43238867 667.680439884 3744.63439959 203.426016375 3745.8311294 155.087160999 3747.04256563 244.715455342 3748.2215835 209.468373297 3749.4274659 193.355421505 3750.62607191 169.185993817 3754.21492939 210.475432784 3755.39328423 71.5012235773 3756.58630942 197.383659453 3757.79860135 314.202559945 3758.99595725 518.635635807 3760.19730631 637.468655273 3761.39960579 1387.72797309 3762.60147654 1355.50206951 3763.80839469 1565.97750229 3764.99931905 963.755929063 3766.20007077 442.099114795 3767.40938945 426.99322249 3768.60905468 383.689664548 3769.82073079 93.6565322914 3771.04749984 137.96714972 3772.22255005 537.76976606 3773.42707177 416.92262762 3774.62851115 599.200394767 3775.84495725 267.877823543 3777.05359179 448.141471717 3778.27026662 379.6614266 3779.4736828 58.4094502462 3780.66859036 125.882435875 3781.87511027 113.797722031 3783.08106921 277.948418413 3784.29649099 75.5294615253 3786.70186002 85.6000563953 3790.2929245 111.783603057 3791.49021705 263.849585595 3792.68270032 176.235410226 3793.87990695 250.757812264 3795.24931663 124.875376388 3796.45546559 240.687217394 3797.66252098 222.560146628 3798.86638495 290.033132257 3800.06983396 299.09666764 3802.45150321 157.101279973 3803.63308906 183.284826635 3804.81342596 61.4306287072 3806.03217729 106.748305622 3807.236426 63.4447476812 3808.43913603 48.3388553762 3812.00152018 50.3529743502 3813.20223641 437.06381736 3814.3842202 1082.58894853 3815.56567408 760.329912688 3816.75354513 1768.39645918 3817.95588919 3115.84205279 3819.13345108 2535.77578828 3820.30816141 2061.4507699 3821.51083244 1567.99162127 3822.71190262 1583.09751357 3823.90092732 1376.65031873 3825.10675165 373.619069678 3826.29191865 827.802898317 3827.46907029 309.16726251 3828.66747894 848.951147544 3829.86302549 324.273154815 3831.06654283 469.289720944 3832.26832092 203.426016375 3833.46775213 226.588384576 3834.66571241 211.482492271 3835.84049137 324.273154815 3837.03640389 39.2753199932 3838.23500257 172.207172278 3839.44827894 85.6000563953 3840.65088399 247.736633803 3841.84931024 326.287273789 3843.05385747 605.242751689 3844.24944537 704.941640903 3845.42807556 1220.55609825 3846.61901018 1214.51374133 3847.81784434 622.362762968 3849.01567794 1391.75621104 3850.20502784 881.177051128 3851.37963144 1047.34186648 3852.5828441 596.179216306 3853.78262486 659.623963988 3854.98025993 154.080101512 3856.1725001 244.715455342 3857.37830859 65.4588666553 3858.55336731 217.524849193 3859.7588808 54.3812122982 3860.95808386 120.84713844 3862.16651254 62.4376881942 3863.37151108 87.6141753693 3864.57728498 194.362480992 3865.78123486 138.974209207 3866.96723294 166.164815356 3868.14759476 299.09666764 3869.32383234 10.07059487 3870.52134424 230.616622524 3871.71774062 89.6282943433 3872.91672317 83.5859374213 3874.11356118 12.084713844 3875.28981166 157.101279973 3877.66559746 197.383659453 3880.05730139 64.4518071682 3881.26453713 192.348362018 3882.46795917 175.228350739 3884.83398212 103.727127161 3886.02861461 49.3459148632 3887.21792317 233.637800985 3888.41784 83.5859374213 3889.59622064 230.616622524 3890.78611423 240.687217394 3891.98928144 93.6565322914 3893.18481391 208.46131381 3894.39292939 24.1694276881 3895.59265796 178.2495292 3896.78771684 58.4094502462 3897.97994821 65.4588666553 3899.17999114 274.927239952 3900.37646846 153.073042025 3901.55293389 126.889495362 3902.75933035 46.3247364022 3903.95398454 154.080101512 3905.15693474 256.800169186 3906.35293465 221.553087141 3907.5340167 289.02607277 3908.74084482 256.800169186 3909.94756415 248.74369329 3911.14557223 180.263648174 3912.35491818 44.3106174282 3913.55640654 163.143636895 3914.74002607 928.508847018 3915.92136793 186.306005096 3917.11926692 882.184110615 3918.31358681 200.404837914 3919.51730884 1123.8783875 3920.71891157 741.195782435 3921.90482254 1201.421968 3923.09402817 692.856927059 3924.26855053 489.430910684 3925.46762662 935.558263427 3926.6580334 486.409732223 3927.86530784 230.616622524 3929.06270333 143.002447155 3930.2548781 211.482492271 3931.43125467 10.07059487 3932.60646001 144.009506642 3933.79593484 98.6918297264 3934.99238929 21.1482492271 3936.18494998 302.117846101 3938.57502726 265.863704569 3940.95083358 119.840078953 3943.35171737 55.3882717852 3945.74337057 137.96714972 3946.91903602 108.762424596 3948.09385281 186.306005096 3949.2739032 457.2050071 3950.47827625 770.400507558 3951.68054318 1099.70895981 3952.87756477 1446.13742334 3954.07610656 1030.2218552 3955.25705664 783.492280889 3956.46768469 710.983997825 3957.67079823 231.623682011 3958.87481439 171.200112791 3960.08324189 114.804781518 3961.2877208 107.755365109 3962.48910446 109.769484083 3963.66822379 168.17893433 3964.85643384 182.277767148 3966.03133156 843.915850109 3967.22720479 449.148531204 3968.42493663 89.6282943433 3969.61504135 575.030967079 3970.79532195 282.983715848 3971.97083491 452.169709665 3973.17064735 424.979103516 3974.36206906 294.061370205 3975.55078701 201.411897401 3976.73492764 393.760259419 3977.93039589 184.291886122 3979.13187105 267.877823543 3980.30821391 218.53190868 3981.49579816 300.103727127 3983.86204193 64.4518071682 3985.0369118 371.604950704 3986.23408265 95.6706512654 3987.4086229 83.5859374213 3988.58363118 194.362480992 3990.9783154 149.044804077 3993.36332299 161.129517921 3994.56476003 27.1906061491 3996.91547451 156.094220486 3999.29879563 312.188440971 4000.49314836 271.906061491 4001.69013857 138.974209207 4002.86570197 97.6847702394 4004.04067477 152.065982538 4005.22683647 129.910673824 4006.41145598 405.844973263 4007.59185241 165.157755869 4008.778866 289.02607277 4009.95370361 448.141471717 4011.13009103 195.369540479 4012.30994466 460.226185561 4013.50534194 276.941358926 4014.68631226 208.46131381 4015.88056969 220.546027654 4017.07943083 57.4023907592 4018.26878132 13.0917733311 4019.44548076 67.4729856293 4020.6214811 78.5506399863 4021.81475438 39.2753199932 4023.00110582 185.298945609 4024.19978661 105.741246135 4025.40144563 178.2495292 4026.59426115 293.054310718 4027.76939611 228.60250355 4028.94629086 250.757812264 4030.14999559 280.969596874 4031.33957335 185.298945609 4032.52868397 293.054310718 4033.73280775 375.633188652 4034.92747484 666.673380397 4036.1230903 611.285108611 4037.29830649 489.430910684 4038.47378338 653.581607066 4039.67606673 752.273436792 4040.87213908 501.515624528 4042.06282972 217.524849193 4043.25286876 350.456701477 4044.42853948 367.576712756 4045.6031202 35.2470820451 4046.77895632 297.082548666 4049.1444526 12.084713844 4050.33242952 276.941358926 4051.51132569 366.569653269 4052.68574424 60.4235692202 4053.86166716 355.491998912 4056.21291624 260.828407134 4057.3875345 154.080101512 4058.56251667 109.769484083 4059.73833725 139.981268694 4060.92345763 178.2495292 4062.09965913 111.783603057 4063.28257047 199.397778427 4064.45910657 483.388553762 4065.63385239 242.701336368 4066.80913104 697.892224494 4067.98424108 1033.24303367 4069.16044522 508.565040937 4070.336179 760.329912688 4071.51200075 524.677992729 4072.68838465 280.969596874 4073.86378911 141.995387668 4075.03887686 274.927239952 4076.22032488 131.924792798 4077.40469982 223.567206115 4078.58085118 67.4729856293 4079.75868549 253.778990725 4080.9406555 23.1623682011 4082.12463045 250.757812264 4083.3048216 114.804781518 4084.48165741 194.362480992 4085.65824805 278.9554779 4086.83432229 130.917733311 4088.01064139 598.19333528 4089.18895429 677.751034754 4090.36402503 146.023625616 4091.53990015 108.762424596 4092.71454392 199.397778427 4093.8901906 198.39071894 4095.06649386 495.473267606 4096.24719468 66.4659261423 4097.42347947 144.009506642 4098.59877015 45.3176769152 4099.77340043 183.284826635 4100.9491952 68.4800451163 4102.12474921 21.1482492271 4103.30182988 84.5929969083 4104.47821936 349.44964199 4105.65622904 66.4659261423 4106.83106488 75.5294615253 4108.00640013 200.404837914 4109.18158993 97.6847702394 4110.36060985 163.143636895 4111.53938374 75.5294615253 4112.7173421 121.854197927 4113.89381251 65.4588666553 4116.24373816 226.588384576 4117.42294781 221.553087141 4118.59997159 331.322571224 4119.77611327 353.477879938 4120.95633288 71.5012235773 4122.13510266 148.03774459 4123.31027281 301.110786614 4124.48625702 125.882435875 4125.66151221 137.96714972 4126.83785506 374.626129165 4128.01288064 171.200112791 4129.19052288 26.1835466621 4131.54026466 49.3459148632 4132.71561633 83.5859374213 4133.89484387 116.818900492 4135.07049143 299.09666764 4136.24910373 257.807228673 4138.60185102 263.849585595 4140.95540093 113.797722031 4142.12986142 105.741246135 4143.31056635 48.3388553762 4145.66538925 54.3812122982 4146.84342591 30.2117846101 4148.01766441 176.235410226 4149.19360785 127.896554849 4150.36906686 53.3741528112 4151.54791845 174.221291252 4152.72435162 139.981268694 4153.90150003 73.5153425513 4155.07699422 134.945971259 4156.25393442 177.242469713 4157.43226726 107.755365109 4158.6075943 737.167544487 4159.78261343 164.150696382 4160.95825981 639.482774247 4162.13483463 105.741246135 4163.31029421 564.960372209 4164.48605614 204.433075862 4165.66750533 241.694276881 4166.84329336 270.899002004 4168.01858081 1118.84309006 4169.19428614 345.421404042 4170.36883226 819.746422421 4171.54409771 1002.02418957 4172.72009424 615.313346559 4173.89441338 324.273154815 4175.07106649 312.188440971 4177.42337038 65.4588666553 4178.59869302 141.995387668 4179.77405408 54.3812122982 4182.1255489 168.17893433 4184.47694636 44.3106174282 4185.65308629 279.962537387 4186.82943031 270.899002004 4188.00389315 100.7059487 4189.17936358 36.2541415321 4190.35640584 175.228350739 4192.70649717 90.6353538304 4193.8825022 128.903614336 4195.05921132 172.207172278 4196.23381139 52.3670933242 4197.40775576 127.896554849 4198.58244469 239.680157907 4199.75981274 103.727127161 4200.93472102 739.181663461 4202.10972402 70.4941640903 4203.28507569 258.81428816 4205.63619897 127.896554849 4206.81105475 336.357868659 4209.16136221 42.2964984542 4210.33739774 151.058923051 4211.51442562 73.5153425513 4212.69003125 176.235410226 4213.8646451 365.562593782 4215.04062697 103.727127161 4217.39092035 182.277767148 4223.26998657 36.2541415321 4226.79579496 209.468373297 4227.97220937 140.988328181 4229.14736427 243.708395855 4230.32332707 70.4941640903 4231.49874238 83.5859374213 4232.67367822 104.734186648 4233.84936742 153.073042025 4235.02364199 338.371987633 4236.19942591 180.263648174 4237.3814141 93.6565322914 4238.58242153 466.268542483 4239.78017477 343.407285068 4240.98437656 109.769484083 4242.18092924 136.960090233 4243.35654102 162.136577408 4244.54710146 194.362480992 4245.73970086 49.3459148632 4246.91499329 219.538968167 4249.28913924 91.6424133174 4250.46479589 632.433357838 4252.82387471 371.604950704 4255.20560203 241.694276881 4256.39179511 269.891942517 4257.56804823 456.197947613 4258.74381895 185.298945609 4259.91846155 325.280214302 4261.12117333 159.115398947 4262.30814792 51.3600338372 4263.49567587 156.094220486 4264.69512644 182.277767148 4265.89263952 166.164815356 4267.06769882 194.362480992 4268.24341823 318.230797893 4269.42718848 46.3247364022 4270.61535191 156.094220486 4274.17332002 45.3176769152 4275.35046491 269.891942517 4276.52619458 15.1058923051 4277.71026072 169.185993817 4278.89406559 104.734186648 4280.09261412 260.828407134 4281.28093707 143.002447155 4282.46902835 252.771931238 4283.64749902 56.3953312722 4284.85248788 291.040191744 4286.04066128 136.960090233 4287.23297299 95.6706512654 4289.60746204 23.1623682011 4290.7838307 70.4941640903 4293.15183749 11.077654357 4295.52395034 61.4306287072 4296.70089758 165.157755869 4297.89034279 190.334243044 4299.07886544 234.644860472 4300.25453588 118.833019466 4302.64840516 120.84713844 4306.23228826 55.3882717852 4308.60522661 90.6353538304 4309.7976568 281.976656361 4312.17600882 155.087160999 4313.36545989 101.713008187 4314.55742147 272.913120978 4315.75855031 117.825959979 4316.95984365 137.96714972 4318.15662741 137.96714972 4319.36170015 143.002447155 4320.53763158 82.5788779343 4321.71901098 340.386106607 4324.07412185 78.5506399863 4325.24816211 291.040191744 4326.43888853 409.873211211 4327.63012813 163.143636895 4328.82293075 529.713290164 4330.02556834 254.786050212 4331.20238069 202.418956888 4332.37589017 184.291886122 4337.12830808 42.2964984542 4338.32083768 100.7059487 4340.68689348 130.917733311 4341.88577573 256.800169186 4343.08073373 742.202841922 4344.27352638 556.903896313 4345.4490628 57.4023907592 4346.63585616 655.59572604 4347.81755227 661.638082962 4348.99300101 161.129517921 4350.19058475 20.1411897401 4351.39333378 156.094220486 4352.59601214 88.6212348563 4353.78886227 24.1694276881 4354.96593883 162.136577408 4356.1574925 49.3459148632 4357.34528144 188.32012407 4358.53829138 275.934299439 4359.72281148 77.5435804993 4362.10210219 171.200112791 4363.29015945 67.4729856293 4364.46448006 61.4306287072 4366.82337238 257.807228673 4368.01087394 98.6918297264 4369.2119494 144.009506642 4370.38844797 163.143636895 4371.56587555 210.475432784 4373.96196296 140.988328181 4375.1584567 137.96714972 4376.33268024 158.10833946 4377.50963423 249.750752777 4378.684912 174.221291252 4379.86053229 117.825959979 4381.03633937 231.623682011 4383.41741303 115.811841005 4384.60671338 80.5647589603 4385.78158412 287.011953796 4386.96559309 107.755365109 4389.32645809 19.1341302531 4394.07436906 22.1553087141 4395.25060693 121.854197927 4399.98957351 459.219126074 4401.18113715 105.741246135 4402.36337841 105.741246135 4403.53888404 60.4235692202 4404.71467529 70.4941640903 4407.09627445 101.713008187 4408.28071068 64.4518071682 4410.67604269 124.875376388 4411.86433924 57.4023907592 4413.04213338 159.115398947 4414.21767948 43.3035579412 4415.41497526 131.924792798 4416.60369702 175.228350739 4417.80499858 129.910673824 4418.97959748 77.5435804993 4420.17470269 453.176769152 4421.34912476 663.652201936 4422.53136133 1170.2031239 4423.73301038 949.657096245 4424.90808142 1982.90012991 4426.11281868 1497.49745717 4427.32729737 1531.73747973 4428.5111946 1373.62914027 4429.6875659 1678.76816484 4430.87430003 1470.30685103 4432.05078745 165.157755869 4433.25002923 535.755647086 4434.43603668 225.581325089 4435.62379542 78.5506399863 4436.80045527 157.101279973 4439.15575383 207.454254323 4440.33757779 61.4306287072 4443.87565836 230.616622524 4447.41093048 40.2823794802 4448.59695025 154.080101512 4449.77365555 74.5224020383 4450.96481627 129.910673824 4452.14360042 50.3529743502 4454.49587675 183.284826635 4456.84753726 320.244916867 4459.20959432 76.5365210123 4460.38567236 186.306005096 4461.56008417 257.807228673 4462.7373622 41.2894389672 4463.9192366 60.4235692202 4465.09511172 46.3247364022 4466.27112379 9.06353538304 4468.62640064 124.875376388 4472.17138546 83.5859374213 4473.35282321 54.3812122982 4474.52742212 224.574265602 4475.70259901 9.06353538304 4478.05932217 9.06353538304 4479.23507881 52.3670933242 4482.7773458 178.2495292 4487.48993406 85.6000563953 4488.68114258 47.3317958892 4491.03720915 139.981268694 4494.56600223 63.4447476812 4495.74036976 69.4871046033 4496.92593675 45.3176769152 4498.12456534 107.755365109 4499.31474632 129.910673824 4502.84123446 337.364928146 4504.03869358 86.6071158823 4506.39587127 376.640248139 4507.58721937 99.6988892134 4508.77021399 232.630741498 4511.12727731 137.96714972 4512.30595912 163.143636895 4513.48302747 94.6635917784 4514.67213397 48.3388553762 4515.84736365 233.637800985 4517.02994479 193.355421505 4518.21368221 167.171874843 4519.39075554 340.386106607 4520.5776706 105.741246135 4521.76070862 174.221291252 4522.94289181 83.5859374213 4524.13627741 214.503670732 4525.32487279 458.212066587 4526.50974801 217.524849193 4527.68391642 112.790662544 4528.87109218 73.5153425513 4530.0719263 207.454254323 4531.25086235 10.07059487 4532.42654862 132.931852285 4533.60103374 223.567206115 4538.30333043 95.6706512654 4539.48052253 146.023625616 4540.65655366 428.000281977 4541.834222 692.856927059 4543.00998539 1259.83141824 4544.18497285 3038.29847229 4545.36191891 4987.96563913 4546.53672456 6533.80195168 4547.71266331 6965.83047161 4548.88701764 5694.92139901 4550.06329452 3737.19775627 4551.23918254 2477.36633803 4552.41397264 1526.7021823 4553.58933018 346.428463529 4554.765822 138.974209207 4557.1172048 106.748305622 4558.29385263 145.016566129 4560.64824651 277.948418413 4561.82232636 201.411897401 4562.99911964 62.4376881942 4564.17386839 178.2495292 4565.34847815 48.3388553762 4566.52418963 115.811841005 4567.7005404 58.4094502462 4570.05223845 92.6494728044 4571.22675407 84.5929969083 4573.5781093 62.4376881942 4577.11737078 227.595444063 4579.46853071 157.101279973 4580.64532106 80.5647589603 4581.82087478 116.818900492 4585.34692657 161.129517921 4587.69948823 350.456701477 4588.8745965 227.595444063 4590.04958777 174.221291252 4591.22534706 330.315511737 4593.57589322 159.115398947 4594.75114284 95.6706512654 4595.92709772 120.84713844 4597.10156789 99.6988892134 4598.27653306 153.073042025 4599.45157389 49.3459148632 4600.62755018 136.960090233 4601.80320096 73.5153425513 4604.15311488 59.4165097332 4605.32919205 48.3388553762 4606.50374344 52.3670933242 4610.02942457 9.06353538304 4612.38072408 66.4659261423 4614.73136614 51.3600338372 4615.90570082 249.750752777 4617.08309702 258.81428816 4618.2586484 82.5788779343 4619.43399596 78.5506399863 4621.7853207 71.5012235773 4625.31023791 211.482492271 4626.4862881 21.1482492271 4627.66086501 80.5647589603 4628.83624806 100.7059487 4630.01213637 50.3529743502 4631.18956307 146.023625616 4637.06598038 88.6212348563 4639.41615118 130.917733311 4640.59197381 112.790662544 4641.7661041 132.931852285 4642.94246836 127.896554849 4644.11809745 22.1553087141 4645.29395292 153.073042025 4646.46809787 386.710843009 4647.64410701 112.790662544 4648.81976014 296.075489179 4649.9947256 185.298945609 4651.16960368 174.221291252 4652.34630341 185.298945609 4653.5238134 177.242469713 4654.71545768 109.769484083 4655.89185302 203.426016375 4657.07087001 300.103727127 4658.25997799 644.518071682 4659.44189316 326.287273789 4660.61813044 479.360315814 4661.7939777 533.741528112 4662.96837074 245.722514829 4664.15073663 263.849585595 4667.68601022 396.78143788 4671.21289102 51.3600338372 4672.39235609 212.489551758 4673.57575627 269.891942517 4674.76455428 425.986163003 4675.94995647 786.51345935 4677.12571605 1025.18655777 4678.30148296 759.322853201 4679.49555095 509.572100424 4680.68821926 347.435523016 4681.87226107 426.99322249 4683.05069215 19.1341302531 4684.22900592 160.122458434 4690.12922155 163.143636895 4692.49093785 157.101279973 4693.66624348 224.574265602 4697.20475512 233.637800985 4698.37948745 82.5788779343 4700.90284282 90.6353538304 4704.42860077 144.009506642 4705.60489905 260.828407134 4706.7803777 182.277767148 4707.95578303 165.157755869 4710.30872475 246.729574316 4711.49844825 23.1623682011 4713.84809502 58.4094502462 4715.02370885 95.6706512654 4716.19930803 77.5435804993 4719.73478131 312.188440971 4720.91271856 171.200112791 4723.27241321 161.129517921 4724.44858744 232.630741498 4725.62967623 34.2400225581 4726.80439331 236.658979446 4727.98030744 34.2400225581 4729.15567084 218.53190868 4730.33278112 155.087160999 4731.51139049 235.651919959 4732.68771487 478.353256327 4733.86285394 175.228350739 4735.03720416 576.038026566 4736.21351652 366.569653269 4737.38906848 291.040191744 4738.56529081 269.891942517 4739.74021228 360.527296347 4742.09081357 49.3459148632 4744.45354159 149.044804077 4746.80525312 59.4165097332 4747.98089481 82.5788779343 4749.15620748 19.1341302531 4751.51040576 106.748305622 4753.86603627 281.976656361 4755.04034691 350.456701477 4756.21753168 352.470820451 4757.39227017 380.668486087 4758.56887372 368.583772243 4759.74540924 29.2047251231 4760.92068818 172.207172278 4762.0963595 361.534355834 4764.4464347 141.995387668 4766.79980866 189.327183557 4769.15142782 88.6212348563 4770.32703198 81.5718184473 4771.50325958 9.06353538304 4772.67831713 134.945971259 4773.85363918 64.4518071682 4776.20382289 55.3882717852 4777.37872237 90.6353538304 4779.7303817 104.734186648 4780.90516007 9.06353538304 4783.25508308 89.6282943433 4785.60985759 187.313064583 4786.78703386 318.230797893 4789.13613636 128.903614336 4790.31129683 234.644860472 4791.48695876 27.1906061491 4792.66455378 58.4094502462 4796.19219586 150.051863564 4797.3671622 81.5718184473 4798.54260244 90.6353538304 4805.59465176 162.136577408 4806.76885214 56.3953312722 4807.9452035 127.896554849 4810.29778774 179.256588687 4811.47261449 192.348362018 4812.64763509 140.988328181 4813.82353396 149.044804077 4814.99846599 217.524849193 4816.17329245 192.348362018 4817.34941508 183.284826635 4818.52553682 36.2541415321 4819.70123159 263.849585595 4820.87732225 81.5718184473 4824.40326114 20.1411897401 4826.75373369 94.6635917784 4827.92885898 35.2470820451 4829.10358837 162.136577408 4832.63265241 44.3106174282 4833.80664869 10.07059487 4840.85944052 187.313064583 4843.21022451 199.397778427 4844.38762482 82.5788779343 4849.08870072 115.811841005 4850.26358055 35.2470820451 4851.43846713 82.5788779343 4852.61557126 75.5294615253 4853.79481346 111.783603057 4856.14506256 9.06353538304 4858.49767671 20.1411897401 4859.67210582 39.2753199932 4862.02313321 248.74369329 4863.19902094 303.124905588 4865.55205179 158.10833946 4866.72806591 158.10833946 4870.25471358 91.6424133174 4872.60656265 153.073042025 4873.78194775 70.4941640903 4877.30723944 106.748305622 4879.65958116 61.4306287072 4880.83414663 319.23785738 4885.53650198 60.4235692202 4886.71184808 210.475432784 4887.88676721 26.1835466621 4890.23837669 117.825959979 4891.41355241 67.4729856293 4892.58833958 81.5718184473 4893.76467569 53.3741528112 4894.94037838 169.185993817 4896.11603737 81.5718184473 4899.64085077 206.447194836 4901.9918198 50.3529743502 4904.34390464 65.4588666553 4906.69456575 79.5576994733 4907.87087136 48.3388553762 4910.22284418 53.3741528112 4912.57358711 192.348362018 4913.74901385 55.3882717852 4914.92493736 257.807228673 4916.09974593 230.616622524 4918.45198062 150.051863564 4920.80252854 34.2400225581 4923.15266592 372.612010191 4925.50350621 159.115398947 4926.67879219 292.047251231 4927.85400691 232.630741498 4929.02917032 657.609845014 4930.20546772 529.713290164 4931.37946605 873.120575232 4932.55496141 1093.66660289 4933.73143095 400.809675828 4934.90603219 390.739080958 4936.08086775 345.421404042 4937.25673671 214.503670732 4938.43334436 192.348362018 4939.60667027 112.790662544 4943.13311179 71.5012235773 4945.48437758 90.6353538304 4950.18541331 119.840078953 4954.88802701 98.6918297264 4957.23801981 148.03774459 4960.76447657 177.242469713 4965.46647973 146.023625616 4971.34415361 90.6353538304 4973.69491003 9.06353538304 4974.87052738 188.32012407 4976.04534798 80.5647589603 4977.22017884 30.2117846101 4978.39697652 201.411897401 4981.92414002 108.762424596 4986.63660776 50.3529743502 4990.16420174 186.306005096 4991.33841238 209.468373297 4992.51455963 58.4094502462 4993.68964533 252.771931238 4994.86627996 227.595444063 4996.04071993 148.03774459 4997.21581119 372.612010191 4998.39336135 268.88488303 4999.56778606 925.487668557 5000.74315533 588.12274041 5001.91918264 802.626411142 5003.09564866 526.692111703 5006.62209927 153.073042025 5007.79739112 208.46131381 5008.97241406 9.06353538304 5010.14782555 129.910673824 5011.32304409 85.6000563953 5019.55079493 114.804781518 5034.83028983 188.32012407 5036.00632682 95.6706512654 5037.18288785 159.115398947 5039.53320528 83.5859374213 5043.05929489 70.4941640903 5045.41100379 21.1482492271 5055.9912028 293.054310718 5057.16593631 172.207172278 5059.51713905 61.4306287072 5061.86743126 175.228350739 5064.21806305 75.5294615253 5065.39338393 34.2400225581 5066.56895935 70.4941640903 5067.74455794 245.722514829 5074.79718907 48.3388553762 5075.97331844 24.1694276881 5077.14869855 58.4094502462 5079.4993541 105.741246135 5080.67425798 120.84713844 5084.19962884 88.6212348563 5087.72578239 48.3388553762 5088.90223257 180.263648174 5090.07780945 206.447194836 5091.25274178 18.1270707661 5093.60262842 12.084713844 5098.30492189 151.058923051 5100.65637625 187.313064583 5101.83273464 91.6424133174 5104.18212218 53.3741528112 5106.53315601 67.4729856293 5108.88386903 89.6282943433 5110.05926557 62.4376881942 5113.5846901 55.3882717852 5114.76086815 86.6071158823 5118.28855128 66.4659261423 5128.8681462 121.854197927 5133.57100916 51.3600338372 5134.74610277 73.5153425513 5135.92289605 103.727127161 5138.27317565 73.5153425513 5139.44899799 85.6000563953 5142.97496239 55.3882717852 5145.32772874 64.4518071682 5148.85361601 96.6777107524 5157.0821683 144.009506642 5161.78363305 92.6494728044 5162.95908854 172.207172278 5168.8360856 165.157755869 5170.01278651 64.4518071682 5174.71361696 103.727127161 5175.88983401 123.868316901 5184.1179998 48.3388553762 5186.46979842 169.185993817 5191.17293674 47.3317958892 5192.34840835 63.4447476812 5193.5235829 76.5365210123 5194.69885569 85.6000563953 5197.04951827 97.6847702394 5200.5772234 88.6212348563 5205.27928315 79.5576994733 5217.03697543 329.30845225 5219.38942302 111.783603057 5220.56378556 58.4094502462 5224.09003441 229.609563037 5231.1434277 120.84713844 5232.31783921 25.1764871751 5233.49372636 12.084713844 5234.67028328 9.06353538304 5238.19695031 23.1623682011 5239.37251341 9.06353538304 5241.72400735 75.5294615253 5245.24966531 411.887330185 5246.42440702 303.124905588 5248.7756124 583.087442975 5251.12538351 228.60250355 5252.30097594 281.976656361 5253.47661939 144.009506642 5265.23049915 120.84713844 5267.58139574 120.84713844 5269.93106157 92.6494728044 5275.8088246 90.6353538304 5280.51051661 54.3812122982 5282.86129825 116.818900492 5288.73970379 21.1482492271 5293.44003865 317.223738406 5295.79107894 11.077654357 5301.6683062 78.5506399863 5304.02103178 141.995387668 5306.3719102 129.910673824 5309.89718429 119.840078953 5311.07241837 75.5294615253 5312.24912162 99.6988892134 5325.17855363 51.3600338372 5328.70483386 118.833019466 5329.88063802 83.5859374213 5338.11052957 190.334243044 5340.4603734 116.818900492 5345.16285367 76.5365210123 5347.51421331 27.1906061491 5349.86480023 87.6141753693 5355.7414797 65.4588666553 5356.91755981 123.868316901 5360.44377845 146.023625616 5362.79366539 165.157755869 5363.97079943 212.489551758 5365.1464898 97.6847702394 5367.49712511 71.5012235773 5371.02290858 107.755365109 5372.19886815 77.5435804993 5373.3752025 106.748305622 5381.60329058 148.03774459 5382.778866 11.077654357 5388.65533815 89.6282943433 5389.8301869 69.4871046033 5395.70984812 26.1835466621 5396.88547985 134.945971259 5401.58784106 192.348362018 5402.76447804 45.3176769152 5403.93913324 185.298945609 5405.11488021 114.804781518 5408.64178448 64.4518071682 5410.9922195 61.4306287072 5413.34266302 114.804781518 5418.04577436 123.868316901 5419.2212275 44.3106174282 5421.57253024 77.5435804993 5423.92346613 140.988328181 5425.09821224 74.5224020383 5426.27391464 93.6565322914 5427.44881852 57.4023907592 5428.6240221 86.6071158823 5429.79988197 494.466208119 5430.97626823 115.811841005 5433.32611909 434.042638899 5434.50231004 322.259035841 5435.67694501 413.901449159 5436.85266794 414.908508646 5438.02707212 509.572100424 5439.20260854 421.957925055 5440.37845932 152.065982538 5441.55373563 137.96714972 5443.90368268 105.741246135 5446.25632968 119.840078953 5447.43087257 57.4023907592 5454.48407466 73.5153425513 5455.65920258 124.875376388 5459.18660478 44.3106174282 5461.53610433 90.6353538304 5463.88761734 106.748305622 5465.06170833 72.5082830643 5466.23702159 196.376599966 5468.58839442 61.4306287072 5472.11435295 127.896554849 5475.64027542 119.840078953 5479.16509967 75.5294615253 5483.86683626 244.715455342 5487.39268629 45.3176769152 5488.56826347 243.708395855 5492.09362085 12.084713844 5493.26899774 11.077654357 5494.44375792 52.3670933242 5495.62014564 141.995387668 5496.7956589 72.5082830643 5501.49858813 291.040191744 5503.84901142 71.5012235773 5505.0241109 131.924792798 5510.90121881 284.997834822 5512.07713205 105.741246135 5516.77818684 71.5012235773 5517.95291682 137.96714972 5519.12859488 114.804781518 5521.47960291 19.1341302531 5522.65436427 41.2894389672 5523.82915935 45.3176769152 5529.70534822 80.5647589603 5530.88241657 45.3176769152 5532.05794947 86.6071158823 5533.23342812 154.080101512 5534.40905134 62.4376881942 5535.58480271 102.720067674 5536.76025995 62.4376881942 5539.11180726 58.4094502462 5540.28637772 55.3882717852 5542.6389599 125.882435875 5544.98997321 236.658979446 5546.16519145 256.800169186 5547.33974549 182.277767148 5548.5165464 93.6565322914 5552.04242869 60.4235692202 5554.39238894 70.4941640903 5555.56744795 19.1341302531 5556.74406147 40.2823794802 5557.92156558 89.6282943433 5559.09689937 210.475432784 5560.27086573 108.762424596 5569.67627201 109.769484083 5570.85057062 200.404837914 5574.37744028 11.077654357 5575.55289899 89.6282943433 5577.90382843 44.3106174282 5580.25409542 92.6494728044 5583.78143193 179.256588687 5586.13229978 74.5224020383 5587.30741715 86.6071158823 5590.83341322 239.680157907 5592.0084259 112.790662544 5593.18513648 111.783603057 5594.36140837 239.680157907 5597.88768185 189.327183557 5600.23895644 170.193053304 5601.41407997 201.411897401 5605.08325069 467.27560197 5606.25794284 174.221291252 5607.43317721 103.727127161 5608.60864677 305.139024562 5609.78369141 457.2050071 5610.95947621 517.62857632 5612.13450971 509.572100424 5613.30998806 696.885165007 5614.48513006 698.899283981 5615.66209372 282.983715848 5616.83662459 1113.80779263 5618.01200089 1188.33019466 5619.18712911 1441.1021259 5620.36248694 2591.16406006 5621.53848434 2560.95227545 5622.71441254 3344.44455634 5623.88962404 2650.58056979 5625.06439566 2049.36605605 5626.2401919 1158.11841005 5627.41569401 421.957925055 5628.59060141 543.812122982 5629.7662736 74.5224020383 5630.94178128 183.284826635 5633.29249225 133.938911772 5635.64464981 192.348362018 5636.81953492 102.720067674 5648.57591228 134.945971259 5649.75053024 113.797722031 5650.92572679 94.6635917784 5655.62779592 52.3670933242 5656.80407396 31.2188440971 5657.97854178 108.762424596 5659.15487936 42.2964984542 5663.8563878 114.804781518 5673.26180464 69.4871046033 5674.43709443 84.5929969083 5680.31471641 93.6565322914 5681.49077715 117.825959979 5682.66565083 55.3882717852 5688.54334553 48.3388553762 5692.07083688 149.044804077 5693.24810258 136.960090233 5696.7734711 206.447194836 5702.65096463 104.734186648 5705.0015759 189.327183557 5708.52776141 73.5153425513 5715.58079223 86.6071158823 5719.10780588 227.595444063 5722.63477583 123.868316901 5723.81081282 56.3953312722 5728.51091836 9.06353538304 5736.73941582 21.1482492271 5739.08949894 78.5506399863 5740.26491043 59.4165097332 5746.14265557 113.797722031 5749.6680974 119.840078953 5750.84395024 158.10833946 5760.24998993 126.889495362 5761.42647061 143.002447155 5767.30240406 102.720067674 5774.35785536 121.854197927 5790.81511215 83.5859374213 5803.7455585 85.6000563953 5804.91982105 62.4376881942 5806.09554397 36.2541415321 5809.62239985 79.5576994733 5813.14832554 121.854197927 5821.37674558 128.903614336 5822.55218933 107.755365109 5864.86946465 45.3176769152 5883.67838311 28.1976656361 5889.55370806 9.06353538304 5900.13326897 167.171874843 5901.30875671 234.644860472 5903.65929906 94.6635917784 5907.1859004 379.6614266 5908.35998728 283.990775335 5909.53646415 293.054310718 5911.88796777 68.4800451163 5915.41417586 126.889495362 5922.46666301 103.727127161 5947.15218851 80.5647589603 5960.08337268 66.4659261423 5971.83924506 84.5929969083 5978.89304273 158.10833946 5991.82386152 26.1835466621 5998.87776418 21.1482492271 6012.98174054 101.713008187 6023.56258852 73.5153425513 6048.24575483 69.4871046033 6078.80673637 89.6282943433 6085.85878804 104.734186648 6110.54127607 81.5718184473 6115.24208981 100.7059487 6117.59495469 40.2823794802 6124.64808258 223.567206115 6130.52380255 104.734186648 6132.8744968 144.009506642 6136.40109315 117.825959979 6142.27716765 71.5012235773 6176.36380099 10.07059487 6195.1711054 63.4447476812 6201.04945903 77.5435804993 6217.50303437 21.1482492271 6222.20636183 9.06353538304 6223.38088068 78.5506399863 6230.43368893 103.727127161 6238.66033833 104.734186648 6252.76368157 61.4306287072 6266.87065905 120.84713844 6311.53891014 27.1906061491 6325.64284017 12.084713844 6365.60906876 107.755365109 6416.15274099 18.1270707661 6430.25631648 92.6494728044 6451.41792534 124.875376388 6459.6446545 112.790662544 6467.87286604 76.5365210123 6485.50451205 123.868316901 6501.9614052 149.044804077 6539.619092 92.6494728044 6556.07660449 57.4023907592 6581.93369993 163.143636895 6619.54760761 80.5647589603 6639.53208096 118.833019466 6646.58234118 82.5788779343 6674.79202848 103.727127161 6700.65003591 125.882435875 6761.76601759 70.4941640903 6791.14908828 37.2612010191 6809.95400507 51.3600338372 6815.82943237 72.5082830643 6849.91405959 125.882435875 6872.24866679 79.5576994733 6931.01379909 106.748305622 6952.1690682 156.094220486 6988.60393661 38.2682605061 7001.53197862 44.3106174282 7045.01945909 68.4800451163 7046.19469669 73.5153425513 7129.64344133 150.051863564 7134.34473336 111.783603057 libpappsomspp-0.9.20/tests/data/xic/onexicpeak.ods000644 001750 001750 00000032466 14346367014 023417 0ustar00rusconirusconi000000 000000 PKpMHl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPKpMHThumbnails/thumbnail.pngPNG  IHDR:<]PLTE$$$***444<<T ğudE(+h0T[|+3/1cx&fxa✐Bf }P;̱$v |c f/,')ML'cK9za3!b߸G,4,wA2Ey:SΜwp,pzFmbMGO{;x/7K=!- }4>0ϲ'$\TD.qq.<<'c\-'(7U qG[\ɒQ`DE6%k6>'xNz˨W~M.$ xfOTkF 5R$F x2S7]F|kteO\~ ̴90OAtw0ڈ*,n+K%T9xXV85@J [Z;ܖ)Y{gC C ᠂њ>HVRMiAgQ!V8a>',j;lPY}z~M%]]a30ŸhrH}HO\{}e=Rz;JPL<:T84++4Mn[d. fތj»,T1NhSh`Cm=> SAVrT`~H!՞bem>s%Ȋ;S$gvE%Vj߬J:)u +RJ f)U%jmͣ.У M'lRu B)wXRb%Du-lF=sFQЃ$ˁ~֎dey mS9w5d1rnkU-RfDĭtb~?2?;gm|򳿮u $ݿA%9ف6} #[tlUb?OlM`FHŸDwi.ZB/C^9ѫ-4?ǧg| Oxk rȽ*LKF9zh´_h;_ED,&Omڴ;( \I.nB-K|*.* π]vz&$JPQ/ U[npuF#l,b*(' ?èih'Tǘ4s{ S-+$P` ^P0amϡ=ޗ .Oѥ%%/_<0"IENDB`PKpMH settings.xmlY]s8}_l<Mnf0ɶ}4u=C6ctg`YνWoـвOV>嫡0nv%ы+A)\:ЊwH*N Ӝ4XQ4JNI|zbճ///{h|IWuCeoB 4ؠ?eΎ^j(CGWٟ.U$'Ԇl(߳f{9J`0@ZچzreWA2պ >?} t.e~n ~1勔:! 4Z(у}sNtF^#r D1kHp %Uz|.i| y y~CsCFkGh)@DTqTӽRܒ0Y!:a<\u?2lN(@3Lv=8 /ZXWYGa<㉑ @i1~+?EJ d҅bm%H*, ;+t..'gD*(N!XH-v_[iC+—»§*+^Nt23{k~Vi\U#{ ,!w]ad!g.1cuńpXD !?A𱤄GS)9 wnVߏnihE2k@Md٥'>a(Mt &;hNj >'OĚ>QŬWF;dG 'y2SeT{\ gה#q(>ӉN0$U~U9PK PKpMH content.xmlry RI~q=TӋd&%-A63" JK3BW M?$u}ٵ]lnf +Y4jsw3/?f?|hVjᮗbv>_47u8{3۵zS]w/K]k#]TGq=hA{Rů߽yq_SWKU|?9ӳ_kZբmqiBceyHze8o֯A::}\Ј<>UO?/ݺ|W_զ3v޼S9oݶiOl]pv/kW>݈o=o}|d>hMϝ{wOfYn p[Vé]pu UN1rnj&_w7ҧq]?b ,W55Eχs6}`t.}nn~89B*._E}`Ʒ4~6ݟtA߹ịŶC\}MofiޭM?νaѩm+7>Uޤw4ۦo|X ǟ'whbcz%[ߪ\WZ5׷+oo`'Cb9c4h9o־e[<[N ]uw($~]fWΏ ff}|[޹|V~Bm]>ML ɂOu5m߾4u_L'nsSr;.=]=vAy{\Ue^9ŪZP?SkvgOJNtt1]W W,|:?e ;8+:_!P+fW9_pf?̧~W_n޽gU7e?;9s3ZB"8Ġ^5@&$i$ ?I2..)S ;G 󣙼{1~XeA3r_^9?p~V]G_ғ%z'O^fa ç2vwNO; tF#ݘ6D`p&IR8H8;i$M|d,R>Ȍ뚃4APpl9\9(M"Cxd,O3z&IRۓT"V0(M$cbbR[,i$IƊݔp} 2d& F0 I[Gޔr$A$K oH*,6A蔅4gAUl6A 0KX,7ˠM%GױXNY/Mqm6>id 5zڂD6AKE[uCIģ9Lp1hcI!I&pnI$KfD+h|&Ȓ+[Be&ҢqF3p9idUq͢{8RM%Ws5 1 A$Ki' ,h|&R="#b~LI$KX ƤM,Rf$K!@G=6Io,y6!`o9idTzK%G2hd 7qx^c&HR }HEzH0TWm,\2jJ*ph&o34&S6A_6JDsD6I6㑢8LsA$K m#ŅRÙM!E!LJfM%kgkA$2hdi6YHm\Rb2>idI qC3)K(g&m,avc'/'m,}F TUVǕ$ܥ"H$ {)}&RE8z& k7a~)A$IQ,R6jpM>HhdJC&IggLhj/49:^{ƼhA`~4#VŔT۫A$Idv_Od^mcOzg~O(M$^mnDH bH|DAPd' :m/>3DddL6Uq7p[qۺM7ɘ,ݽsfײYnfPKYx ePKpMH styles.xmlZn6}W2$@ejIx M[(-J(j/y%R"Ww+Nmñ3ùq>aΖtN}!iC+/ j%"eȃ"!ry`$w@8͗-D82 ɗ2XFhYG/RV6U\ҒTam+kp]:x7UXauŐ$ÒXM߭܍nw;;"Fb%X\VQa#jNg`"T~ [-M%x5$lW4EuF|mѵlg pzù/5Lׯq%k)lTmnᑭ yjӃ A2.%M/v`MՍLpYEBNl A5*0q" ˴+ATMaŖ a*3QX)a&zp%GS2-kҍ3犷7HyTYS;LڜS3B|}YV<;ϊ}E|;?ʒ&VY WNC{1IaאKӸ1FBPPq*<8m=~cf*f]`d?؂6NZ˲e:GJȩ \Hc*s0^GB@[j_.ST,EAH@3/ct@,+v=l,x鋈^ٵU,A!jF֢iY-%랉;:V$|joJCZ^ |!U!>ґiq>d}˽k7o*;)a2nzI CɂIYD٫9gS7$wc;bk:y$M5+ > ;`rh8P(E#4- 2#Pea}}/ V/Y?cPOkLS/PyDF ʘPR0_Y^`ҕu}nmZ4P|3+eR)&|AV~$jݸG ^*;^ƞdԫ2؀' 8Ms}ӣX0H~sP-RwA4̧"skk` [.BJ~x^UwN|م;0)'YЎŤ"m~1uxFHpnUS*Mca=z [I}?˪ !%z}uuuڃH2Bʉ戦9t!WƮFzPx=3:G)2MQĈe˚>Vǖ"v8I%CGC4Vj j죠; O_l Sϟ{3wH~B;0§Ŕ@}\/u`9bg;?PK5j@ PKpMHmeta.xmlo0+۫1Pi:uRi.fȘ32氣{ Uѻ4zHhf-x>U2Aa}+pu[uGVSSwnEG$B4 &嬤oΝ(B0C۠(  م;V3$'t(c 5HƘˠBq Mn,<"v5|b| 12Z:Y+ȬճF%YB?QT'9&鞤o)bio22\wIB4҇l=l6%Zp%Nauyoð>Js.)U?,O윷dQ]}T2kW & |V`n1@u#2Ohsx)qy$u>PKpMH manifest.rdf͓n08OOKaӃTِ3ÁTEl#Go7Ǔ~dn;nЈzs}G Z*c-xØ-9=i*dA'5$RPKS*!EPKpMHl9..mimetypePKpMHTThumbnails/thumbnail.pngPKpMH  Nsettings.xmlPKpMHYx e fcontent.xmlPKpMH5j@ i#styles.xmlPKpMHf> *meta.xmlPKpMHh +manifest.rdfPKpMH'4-Configurations2/accelerator/current.xmlPKpMH-Configurations2/toolpanel/PKpMH-Configurations2/statusbar/PKpMH-Configurations2/progressbar/PKpMH5.Configurations2/toolbar/PKpMHk.Configurations2/images/Bitmaps/PKpMH.Configurations2/popupmenu/PKpMH.Configurations2/floater/PKpMH/Configurations2/menubar/PKpMHS*!EL/META-INF/manifest.xmlPKp0libpappsomspp-0.9.20/tests/data/xic/onexicpeak_maxmin.ods000644 001750 001750 00000014714 14473363363 024770 0ustar00rusconirusconi000000 000000 PK eWl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPK eWnMETA-INF/manifest.xmlAn E>ސfU!z  3ۇDj(,Š0ASl0Qhć܈e׈S솦O9ki<Ζi Hӹ(]"t1-q+F'㥀UbN=I*XO{EY%ɺ? GVdހN\暘gWyPKnPK eWN|/ meta.xml0y@VJ[O]RplX56MȾ}mF!*ͤ8&E'[*$L\ɟӏ5y6Y SH$*LP"c)%LCPT|j4b1uԲdN齥9)5D^=9HӀjL h;3[@0:P"+U;j8 ,mOZwZX6gNC7*v^!|*VY*|lluw (Wn礷γ]s:A8emɹygtJ9Ub, GuvCi9g5VA Ѵծt~Mߢ`C| ^ϕ5Xw7gzeJ0'4Π=Iʙ.udhٝT&fk-l8~.TPTggI6>+`!YJ]viU._r*Jòx8uO'ur4.bRŒݧ)j 8^H|"կS} zeAݦ26PKN|/ PK eWus 3 content.xml]oۼ)r0-/A]=ͳUl92$i(QvhihfcIcO$C~f}5~$ɷrYl>_>XV"[&6Em{[ebv_mʬ.mfqW!Kجwn\dE5V~thmWE{)[wNND4Y]vU<\ __/$cݾZ[&b6b=Ώa+^6}ٓ*/^Vf~Tӆ>TXXOOOwŒmҝ}-bXE{c.M]Ovϫy>-ruire㱗x+{y[Rj#s!lz{q;׋]'76TvOb_/R8rPy~k߳cfswWAϷWA|c^?<+um[j{޽~pc?qUO]نol/ֵpߜm){=[vٚ~*j[x^],l5)O엶-&CK!پ)w1n:ϓ/rzLj㎴"_WvYv ?f.U_7]=_grHnƹ=ݿ|+z޾Hx2~ٮ[y}*5;nlCNmwDT\1EkTE63 A=A*}]C R̄I.^ʔ4eCIj"AS&H*PS@S#AS&xEb{) @S"A&k$[1JBM$hiYCA&4am=Hi ~{IM B19'I)dW\Ж@S A&HpLaZ1ABM$h|D1%G!RRj6KIɑ $7m3$DLPuZg 4)(?yEͫ[(e$bc$iz(dH J,F$b0ŁSkh^OE|0FƈDQ$ba$J 5$,UFb$;IĨHzȲQM# nIf1R3D$#3F1#=A#R1RƈZ!G6N992Y4UM5FBMhqQ'&r4yDHPQjM+X$rsąW;Br+%Bpa9rȑ(M݇dJBMhZbsmEU8A;N9rI nIj"GH3 6FWߢ9#g%>-HyGpe}pĜ$r8G:#h|D,G90"IaǏDG'C=IqvSMhk&:{ 9#V 4#g#Gcs,G*:#hd(㚢:!^ I"G=GF÷pdmt Q'9bѹTrĝ$r8NGGtϑ6n3P9G2Mf#C8rȑH1HA}$:$rswd99#ͽ5)6IM#>[g#Gs=3dZQy}; #') _樝i݇H8IH'zlP9>G[b;,9# }HGv5r4:GTm@) 44}Ewl(r4>GZb;<9#ov#$#wd9 5s$"9Yddq¥kN9rzcپm9mlht$ iI[bgD qȑHMUtg"Gs:}"9R39rj^#i SˑDG&LY 5soHE 5]sQǑ-[hD/-l}D$rsnrۺht(C[7BH5>ǯDz׍ݺh| P9jFF&Ihqg?Dz],F!Fcc3})#%$%(vz4VFG-4&AO!"MBM$hL!'=1 ƽ!&4Yl]JF  DIBAo{۶HЈ1edt"Ac%&'M}KPlnHИ[)ZAy}k IMEBP ~"r/zWٲ~]=^/ϟ?\&6Em PKus 3PK eWc} styles.xmlWݎ8@Ҙ@DeJjb};'lCOvHc˹ӆzU`u.)]6YYFe~XmkruIbjR1X2Y6%va͔6JW̒9ٛ|ؘy"p-L[z|e:鶂&dX-<{>Mb,@ounrܮqݷNxbb/5cgz 뷿{@Ef5^;Wm>`,lX6k ׀ŒkM%|-SHa 3DY.L`zT_c|՜+8d5vi1 mq"몀cnE0\^%WƢ=UF#(E -7itbǝ0(ip'+F.t Ze柬 Gar] Lto:+S"ݵ4 ;{Kr  I^jy)B|yRD &p0>g'r[BsGi/0t9Zfv={P^F%`U+5Qs˽ x3)8MX6GT$<ՇfדּN Sw˖f~[2` L 3fM\A]2 )"v0J)t_Et J2߸Խ=F /CJ>Բf r,߂Pg5SX2AriWj\c@[3>RijAezz0n*n%g2K:͟ǷPKc}PK eWzG}# settings.xmlŚ[W:#.a29 dfw%)|Ҋmi7Oˏ-AHkV .u7[{G8QlCdM_ΥZ6I͉V>ev<2B)n4VżѺhDgC3:/G?G!( n6Owgi[:chtf?Tz9h7`/)|h?A$/'N Z$5/'ٟ fu":ov岆@TN[{딻n 䯼kbzxAau& J@zaص˻0qBcl,d˹ 1W!G !QܢJ=Ma(_䊰Ϩ.$c`"=Evon/,7 ;.!Bgx@|3yk;QVyJ+A&a.sC=aAجĵda܉TA/pɾ,>~2evFK؎A_ ⶛T6eZp@Je+H>Ҙ +ʉX}g; QĀ--މ ԅ^h<{cƫWCzuwPKzG}#PK eWl9..mimetypePK eWnTMETA-INF/manifest.xmlPK eWN|/ mmeta.xmlPK eWus 3 content.xmlPK eWc} styles.xmlPK eWzG}#  settings.xmlPKZ\libpappsomspp-0.9.20/tests/data/xic/onexicpeak_minmax.ods000644 001750 001750 00000015117 14473363363 024766 0ustar00rusconirusconi000000 000000 PK eWl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPK eWnMETA-INF/manifest.xmlAn E>ސfU!z  3ۇDj(,Š0ASl0Qhć܈e׈S솦O9ki<Ζi Hӹ(]"t1-q+F'㥀UbN=I*XO{EY%ɺ? GVdހN\暘gWyPKnPK eWN|/ meta.xml0y@VJ[O]RplX56MȾ}mF!*ͤ8&E'[*$L\ɟӏ5y6Y SH$*LP"c)%LCPT|j4b1uԲdN齥9)5D^=9HӀjL h;3[@0:P"+U;j8 ,mOZwZX6gNC7*v^!|*VY*|lluw (Wn礷γ]s:A8emɹygtJ9Ub, GuvCi9g5VA Ѵծt~Mߢ`C| ^ϕ5Xw7gzeJ0'4Π=Iʙ.udhٝT&fk-l8~.TPTggI6>+`!YJ]viU._r*Jòx8uO'ur4.bRŒݧ)j 8^H|"կS} zeAݦ26PKN|/ PK eW$u.1 j content.xmloۺW`DRAۋÞ݀*׶ Ii~(;^t4@""H˷׼ #c~XͿˇOf]bbUj}nv<Yn>nmq8/arV(7 DoǼ6]}d{f{u6}wm\.^盇>.rGl,׫e˛Ւ<-{ٰq'}S\[[l h.˔Wӄޗ\XOOOI)K[jt__N1,~"45ouvmꚰ~_H~kk^/ߢ8R8\Oe^5/e#ӏ߹Zo ݋mþAe$ [}# b> m^*Ǒ[UoW|.?}e{t=v9h~l~}ﳗ^lUj;޽|~NmZ؆oVbvpm){^vٚzVm׬6Otybofh1Nߟ^ Oi~W}sR-Vnwrʦ[po]} Sp{>텺[/v͋'XK6>nۻ2X8w}D2}jKKUx\o=x^e?RCu$KgR|QkK-0uhy:ӗ{#1??e˨k˞O9pamm;s}rQ  rrasLm[<4?\ބEܶr{f<(P^wE*nM% ,,f_G|:{sE|ѫfR14I,ě?-^N2Lń6FeGJ' y+w ZI4_x +IŌRB/|lF3J .ءidf$Tȗ2e2IPfJBM$h)Zh$h^}Am/Eh*$hDsS%VP 3Ax}2 @P͘ .gk qhHЌ Գߙa`=$DL0^}ޓ$HМ JWBЖ@S"A3&H LaZ1IBM$h% |D1! GD%L93|x+@S A3&H1o&gx+H͙p/ (DLfgyX[hC~MPV104Dk=`h1j?YS#J"F#ýQ>!}jhlRQk!cP19FroVdŇ$Ԝ#M8¢V10RAbjNcJ"F#n)f1RcTg9I(9#.mH͞|}N[ϑxUk9 5s|}j"GsPw$Dq閣؎KG@ym92yFg4qȑGH9y9#~p񡖣؎MV#0GN9r x{MDh jGN98~GP9=G|l#?9#HEr4:G$DF1r4>Gg[b?fT(/"$r8R{MAc396/MS pȑHNktt"Gsd0&}"x3h`N9839rjF)Ɲ$r8Jg::P9?Gg0$룔s4q'/E9_7b9mr4:G |Hʢ[7‰`F?N98_7b9mr4>Go9 5sxvI9=G*|ND:R rhNn3DhPDG_.Ƒ <r3Na=Dr:r N5P3l #bN9rIpTFfmF!ʑD:4xK&%CrF&9ZP9?G'(МܶgKN} I"G#|{9IGrr4:GBZh<$#?D?2D(/}$Ϩi%#ߒ65mIQ6|ȐP3ZA5(*$М|$!\RV1026JBͩ1D3s<V1rD/-.0$b0+4F} χ Fm>{JFw,b4:FsGlX2Y6%va͔6JW̒9ٛ|ؘy"p-L[z|e:鶂&dX-<{>Mb,@ounrܮqݷNxbb/5cgz 뷿{@Ef5^;Wm>`,lX6k ׀ŒkM%|-SHa 3DY.L`zT_c|՜+8d5vi1 mq"몀cnE0\^%WƢ=UF#(E -7itbǝ0(ip'+F.t Ze柬 Gar] Lto:+S"ݵ4 ;{Kr  I^jy)B|yRD &p0>g'r[BsGi/0t9Zfv={P^F%`U+5Qs˽ x3)8MX6GT$<ՇfדּN Sw˖f~[2` L 3fM\A]2 )"v0J)t_Et J2߸Խ=F /CJ>Բf r,߂Pg5SX2AriWj\c@[3>RijAezz0n*n%g2K:͟ǷPKc}PK eWzG}# settings.xmlŚ[W:#.a29 dfw%)|Ҋmi7Oˏ-AHkV .u7[{G8QlCdM_ΥZ6I͉V>ev<2B)n4VżѺhDgC3:/G?G!( n6Owgi[:chtf?Tz9h7`/)|h?A$/'N Z$5/'ٟ fu":ov岆@TN[{딻n 䯼kbzxAau& J@zaص˻0qBcl,d˹ 1W!G !QܢJ=Ma(_䊰Ϩ.$c`"=Evon/,7 ;.!Bgx@|3yk;QVyJ+A&a.sC=aAجĵda܉TA/pɾ,>~2evFK؎A_ ⶛T6eZp@Je+H>Ҙ +ʉX}g; QĀ--މ ԅ^h<{cƫWCzuwPKzG}#PK eWl9..mimetypePK eWnTMETA-INF/manifest.xmlPK eWN|/ mmeta.xmlPK eW$u.1 j content.xmlPK eWc} <styles.xmlPK eWzG}# settings.xmlPKZlibpappsomspp-0.9.20/tests/data/xic/prm_xic.ods000644 001750 001750 00000047763 14346367014 022740 0ustar00rusconirusconi000000 000000 PKBPGl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPKBPG,,Thumbnails/thumbnail.pngPNG  IHDR'ePLTE(!3'$")#(**5,0<7,*3,5:0,95:'/A.4F/=P::G<>PKa@/.A21A6:F94D;;L<2M<=P<30σb_ Lwt%*ܟdVnΌ o:&lL֍=ȶ/HxbF.L )p{*TDj=2e">'U4g^#_\V,z}ڪ_ޝ.Fd:*{ XgF[A, 2I6-#7'6JAO6[J*qQp} sIZ-[1#be[ӔZK~-UoZŗ{3HX'v tR؃)g]!D;1ɡ:"(v`iƕWJ☙D8mCz_TG1)x9"a݈S$m0/PVQQ(Ot7r@~h@ׁ7ߠO(!CiPRI]l !܆DL}m{}Y}C%rZ8nYrfN욦4jeؖp27W47IW*CA{{{p{{Cpk3sX>}ۧBL/L9vda`pijA.4R*ʛpģGŠgaR3Ix mBh!.Ht(/GCԩݨme-{3oz.VMRSc:jiխCqhx"j[_n a߅{^BmM~QH-DS>/Fa.g:(h!՞' GiH&E1DO1)t0gU3@wq{ }LAǏSct.G4U#ŤIu0U2fe4mF:6WBWh9<یFo[u]Qܬhd*еa*(8;O-4Y6NPCN5"3?jh.<m'!h.z$PCC ~Zrpd9c;Q֜uCqO?hkXa'WCÅŘj;/p9O2cccl[)z #56;zakFlb?@k0 5a$y:BBz:Qw be/ZԠ!ňp%GE"??&-iL0|84ly[X㙳G<1D-LbP& -5 y^oyYAttub*_A\jK`f\rhS|oےs _+ztLH52 aә.AOf*˾(py$f-CRZ`G CyLsҪG u_jmetkGFP^wŇm${[J` B$k.nu `} O^Nph,v۵6c"ԦX+skT~)c\/"8wJNAꊻYڟ݋'sGSlt ɒ{7K!=56x`@CSÁ{nT9&mSyekcXmv8w } ΠCgX$ӿpNoV'_I%AE1ya?&_Rpd$)S-1༗ דA!`e}.hqO;%%_ CUW-P[bVdZ#σ2LjF%b_&KhE71"a <['/]yBLjlzcb rPНDjfBiS.s=|M̎N\Qʎ9y:Nj0؏KYE H{^mt7~^~ ә$:%ʚ(2uV7##驼WmO|ďfPmz@em1A fC#;_TU!jWeUԹ*jC5E_T51Cz|,{0ekgc NvnGRlYnH-;5`pMx$D{Tw|}y3ΒO gRv6w*-لm]#{{/=l)? zVAؘ,Cm9Pw.9GGF7#HP3wht*VS1L$VD|BnCau7[4ἳh̭9,c}=cI,\@m_xLf&0?E؈f #@81?^VO͗!!J&I~o%d~ #T_BUH3hEt YǢ;K~9撴ZB/O 9Ga euOViY_YQB  z}w|ecL=Y6z= t{G)`c~+ aG#͌;S;KAG +1C#БI3je!{@Yt$u45G֚9y`%;8'Ά!!dY|\;;=Dƪn9H2F"GIGi`-(59љIb@`#Ĺ MF[(ceLsz}P{ٖ7׻Է_ocY_}h WOރ-e}w;|.PP Ƀ>u@-J֢RϺQR3CZ֫&=Wʓ]lDsW83` g3C'g ES]"fTwֆ,0\YgFPSz83Wo^?o(5 䍑d&ѳ+>G~_@#eH2N">\cGVB?|3?rIXN3Qb_'cw,rt[j8 hnh*6eT{ax3JߠRtogIu`g( 3TÐ*( UiL\z>G$C)ςQ8Ì/ ۏs4wip<;q6 s~E,co9$֍CSFҹp@r|fӦHx30~i~h҆* (W?K3!gV0BL,a$*nKd,3caw؋,dDQ-~LVXeOLg*}{`w[f]ʱ hl⫥yϣ3,^Ӽs ,, pkE |(mqG~Wi6Ǥ!8 7q \#x<1Ԫx)'!&jp$OOZH9 mT'PP_A)ć@з"o6V.qJ+KbK.&5xn=WwX?SJejѠL% .=."sp<ď/-菅^;לw~VM ⇴"f:eKb3̆$ ,3p,gsNF,1IƚHZ+r2|(xp&W1̉ugW7ſct GYȦNG*PK,xd?3FkŝWHHʳkԒ|M^q@KR"$b{@+ATpt 0!zj`3} O!} sn0uq{̒΢w\>Me7g'j8ꐾD_<.(ЬR݈06vKfyA"qT;鈻"=h$U#&x[\7SXsg,$UQSXZ 27-C s0Fo-4teT܈z:*1" 甯4K6sẌ́x9Y|dQUܳDSVh!g^f3UMս0 u<=B}ԫT ^S@=l^Ԣb|*#zr`[JuJfDU2MTE1}?wX]Ha`30Pk6x cL櫠UZY5.=Ėq'ULDQ_W= i:Ң#SO}!J-DFx%ov^UԔR0N=bHƜ|VAAt/!F5IV'ru?6U![\0FTk%T?|&vƩG9) /S֔_I!˒)9P.ovSJW)\]U^E= +<RՅ58cz7֪&=+xb_zBd/S0dO9[ov d2aIcΑ \\ӽsPccۡYDqQ|L|T4Cb.[/ىݒW:uBdžFW"EpH!LQ<یz+1"\p y2|^v{Jd\+~6i!O;_^ ,MEfh;϶Bԫy,l՞[&,le%2XfL)yL|-y6Gv/ x 3Mv} =oW$臯7qgqvͦ"V?3_78*[ySOV$(_+tPv̲8 6_Wٍq;̧!;3$px3gąkT{{qԛY ~I-?(י`/D5Vv٢ <JL^elUjF~4?BGi6ld\}%#+ ,ug u"X4ɘQ^E6}~hSs?E٪ojvͥ:EZq,>XJgocn^_[e~` i`$3ޗ6u$bi aRn^{nQv$|>f맷.LZhQ?qR暼9:2e j֜O[oM[71G='ߪ閶yp;1ۡg03ltYgIZ7"_rAs'vVxyسWMWlhsWtE#N~s}yc.G/ iqMc犏jf†Q1P 33[=:nA,>ٵմf*&X+G2&R~^UᲦCґ!rc*ƷQ_Ǥ ~>\?8ŸNs \5b2dOpi(|o,`M2l&k+ТJ:)F2W=…֫"TCu&%L/s,FY5j7,?~8\I+*7 /;32(\|zIJՔB93IU/ 9p?f_B׊ƙz"2 8SaO _zBt%O!bkgkљx86%4sЀ@H~r.}~`\"`lx``_DtY U(kn0STX 81=2Es_Z7#p 6x@d%xcuV-x\ub(fH\ű#ߊx VzCwD`݁NOntˣ6HS@H:z%oH-k'u%*Y[/W ^*V`2y'4yUAzgS>nii&rV3wuMa,@]~ؖt$|v,csW{Tq @9'XuGa~O?bfm[E)KM q+4Qaa5 [OZry)k 24W佊klB+^zI9lnYj%2R7Zڏs%$)2JRӲ=$z=leq9MҘO3NDqr1"_-̇988撴ZB2r4ɾJ 0t*ă|L3/)gKIYtIwXfsxq5\\qaϻ6 o?X8LSEpTS֍8&0IkGa E}*>OF]J3o)a~1)%u2/) e]}9"tkPp %Uz S^" \憌OCPqz jro)}J<|֭vZ*'69 *A_Fi aQ5M9d ' {ȀpkD%ETNT+zJ''9m{ѯfeIg$~q d ᔮ)k 4du{^ⲁj*"uQOzyb$PZl /K:ptu R~{:K0I8) j"@)[0Ui)wER*}2˓?:hCJ ߪYڸ-/oqd"A|^oE6nb(Wsl6F?jm ]EG}pXD &TO|$)TDJ֟MT}0V*ƦCS,r IWNc҄1i[TA|OM/)κJNoeeU"c¼L1\2*nmΉʉ!( QxGi>ӱv|ӹ1Ȥo?U:cׁvՋPKh jPKBPG content.xml͝Ks.*TAgfnM*WZlf)QERcϷO g=xd柍F?CUflNЯ6͡_}nƽO)977ͱؖ -v}뗢m^:jpydCvz>3ܸ:B*۾*]ssۖo0z>dPmC_.z_s7[|k_ҭm8[^prj_ԫ%ܷv_x H9Xh7O NJlQU]߂Ws>8Ps???](,]kwѮvCI]vHj)=P7_Hk ěYGiQe^aī4r&* <Σ"3Q\Sr9 2A 0HL[vCGDf(Cu!\DIL 뼷h%q\5AdTף{5O|g#-UFJ 7z 2C8ؑD è+AY˻Df(CuFa^M)o ߌ Ua+2KU1ƍQ9c"3JdD^n~v:q 2P|Lz(gi΄! u{5Gx^MK藠9rrH2TSl+׻R)N^\5B$B l_Zi r-eKª+JRд @#D"bӮV$Qdxrnv!"P[M56jMtagT! յȵ"*=se0uN6#D"jlщj]9{fȐD"&<+€3٬!3!3Pa#@-*r9Ԫ0^q瑵eu\20#23j \*D<ւ\98- PjjёM9CS)ΐD(Cu-Xu-TU^j* [. u H,b\z=G@PzЫ=qVxf r姮j [ZRUC+I0䳺"P]A5ɘDZ(-ta PJ;TV&{JibV (d  vi" 唽!d\Pۡ`K^y);t^K%e ,QeܪkÐOGD(Cu 8:g&{R;s#D"ztħʸ^:C"O]kOI8/XxFKB>Y  5MN$[&j J*2vD"JtJ"Ů`Rh1P*бJF2RA#D"_9"s*GhήD(Cu ؊ rN5^ޕLs-r41@$Bk8"1X7GD(CuEl+/(}҅YJ8koюP7 >]͠1zn B P~z_KYgЫ)CEkD(Cu9Uhu9Qԅ B gGD(CuzIQD(Cu%Ŗ p!f0$ݞ"P[VҖ{@+iO=D(Cm1cBfH0P7JIR/3JdL:*]iIɰOD(Cu=~ŘVq-"4jxgnHSn9El+,~2cL3ӛ"P]N9\av%U`fB)͹1el OZ /ywD(Cu%E'IRd)Kj,GVD" RV\.J9IU7@$B(d(RKfP!= PZW6W j#9gR#+"P]ds* 诙D.̮U1E:Go"Ϳ=PKU+ XwPKBPG styles.xmlYn6}W,d Hj)snA $A}%JˆK=~Iu8ma[pf9dl#BRpx3GdcwC` 3B;ûZ0r8؁Mhe;G* hV?e47,TI0Yh@B@Z* v;)KV$c$ h_0: %J˚Yv6,E,:63A1jG6i8%ϱ7vLD3Eݤ?+ep+iu1aVOڅ,. Vo4בra'ch4`Ѡwa' `դzj54;*xJ>W;',%%pθn<神v b8P(4 h"͉Hh<X_6qWfQ8 M)á?8YmXs'S_G1Nh=&Ǥ/y)t{ЃUwK1!`3'.0IڋŒ7[.J'ݚ=/79_ڢLj1ŤWy|(-2D~pBq yZ{z[d7ү+`~ccWw'law65p8Lm6X0HA{PTWJ q8S'&zoz⎋XV]̟. ث㳋|@}0TdMQiS 66u< UOdX:A\<6_%BonnnQw):F];іh*"r6nz/]uśЮQZF?Kxiog,YVT-M3={\U Z5dPgu};s ܹ`3? d~fg0q§_jEu\6?{ha7PKt1"NkPKBPGmeta.xmln0} U")YD CN.Л!-E$9o_uZz%U?;u- Ahn-{K|}6 V|E̴N:®i650!#UUtEpު4xeDŽjd#c.F|=K {Vukf8$l}I>hj)j1z ->q0CǔĴQhh275/"O4˳+6w!}XvռÏE/^Gۃ^4hy_uRB.c'y8OOKaӃTِ3ÁTEl#Go7Ǔ~dn;nЈzs}G Z*c-xØ-9=i*dA'5$RPKS*!EPKBPGl9..mimetypePKBPG,,TThumbnails/thumbnail.pngPKBPGh j )-settings.xmlPKBPGU+ Xw L1content.xmlPKBPGt1"Nk A>styles.xmlPKBPG:۶JDmeta.xmlPKBPGh Fmanifest.rdfPKBPG'GConfigurations2/accelerator/current.xmlPKBPGHHConfigurations2/toolpanel/PKBPGHConfigurations2/statusbar/PKBPGHConfigurations2/progressbar/PKBPGHConfigurations2/toolbar/PKBPG(IConfigurations2/images/Bitmaps/PKBPGeIConfigurations2/popupmenu/PKBPGIConfigurations2/floater/PKBPGIConfigurations2/menubar/PKBPGS*!E JMETA-INF/manifest.xmlPKpmKlibpappsomspp-0.9.20/tests/data/xic/real_xic.ods000644 001750 001750 00000553304 14346367014 023056 0ustar00rusconirusconi000000 000000 PK9MHl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPK9MH Thumbnails/thumbnail.pngPNG  IHDRÙ`PLTE###***333<<(ի{DURVat&/g9-B=DG98'gY\U= hXe wlZ}mk TDe$6%ǑXiX8uOTR,ۏpwb(1ļJR./BVl 4ܯR%Pkr*EcA#7͜ˎp˪m;78)pYayg35%6vPc`-52Rfڧ.όrn/|Ϗ HU^!]J/>4[眴G sZ$"/, U)>Г@ U3,kwT-`^z@|0+Vw d{zS-kj ^b@zՍN]-ӱj*'M&@HR0 N~H+yXU/wj6~,GjOEt:6AAXU B8ϥM2|'X9{ZVv$,d/dQ}-*c8wm v1^B>v^?k.z;puc6.y]/OT)::m Jq[k*%7e.lڣ{;l%,{};!=LOM[e_}[T+VkJ.B} NeeE,o+S:p zb, ƾ:8i9tw6>(,w+7v4bsˠb7.d뺔w!%b#.:cEnuz9Tlr>1G~Pu &(ikQR泳cJ<)7?ݞ>j1?{Fzπ?re[ U~CB!F 3-{KPucKRjX _#gvT1ru4bѳw3"?ܠYՏy.#.g2ub Rb*Pt0EjqJς>-~DӶмBjQ}wTK=4h@NPb3e-ƕؽv&ݓy4G|c2{b=la3$+bJH#ގw$ZKJI*b Iʧ2_ݨUR+ SRb A%nr؎ [JeK>k5Og?6h\./=mcԄ~l{xZp1.&nSA#>iEdXѭøQSX1c 껢ͩh8CӁaZh\+mYt-]ZmA/zzƨʈ+T:~&RzS-\d8k)z2 [lRz8k;\Lժ_Z_ݨP+֣Ȝ;BjZ{|[u(}C7)# L:_'DhTqU_C=Z9$J'oӻ EL,E8nLE=JTRzPtZ% YY Z Fu6?ӆqJ%?sn`AuFMLedVY}/[X5*^bA>D\bkWbQ"* ZQ4SvRXye׿}ve?+`s$Ґ)8z~\nuƨ7-%Lʅo@Wⵞ3uaυݧתsGkq.iX0u6J`UijXgpM<0,ZJ gHܜXD 2iaoW^@WT%  CKj֥.uRsoW iMԘ]Kߡb];a *R_b=Sa\TVj Ɔ[1=wS(6^'miPs= _/OT>;R=h=Z^'̙dT^L +Щs=2zӔ$t$ 'itbEGA5?,Lc>Uo&_ݨnTf+TZ.Nݺt24%,Qjm}7:_N$-ER4ya&yts7ynTr-ǾgVrfBBT}coь#&My ).>TB 渏:Q}%ke$ 4}WD _i#w$mVӨNE򚲳:bӵ [vHLP| YQpI?gG-~$ø}5#﷿Q'-wd:JYk\\ dM׫fUD^x |-H{oo|Kw0g޲ecprӫC k=9Sy*HU>jTpJ2٥rcyyRݭmA󳛼gbTRDz$ʝ9.|n>Lu{(2+g^*0h;i'p`l>y;0IYR-JFlɷmRwo՗)~tZoMԱP 4vBڜRKgUaT}G(@#&R2WJh1~?33{*=|:/ttrL͞Xq-M[a@?#: ZT^>ۧBy{՗3RR Rf3OJTsۣg$6× w=iu֤+hul#p S g}fcTc}pF~L5uJ}VȆXX^Z\ _nQ$45`J~_JѭD ΐ D2FҐ )؀yXQD/e BT|2ߟ]:k*Wf^ OEnr%:Ӽz6%BɅl`FC cޠj^@ Ueeb{WM:yGRC$bs| wuRCt`p L'e:~9Kk)kE,8yz ֧3 ՉIGg_O=]g_M縯tŌnMע=B2  k*S_B9>:bħ7+p )ӹe~m+6C@#eSEQ4:^n2,"JB\br^!R.3x6nT*q D:"leCIy<{UI[[u)W9[!)/v, yBlW"vӔdITw0rkŖcI9[oyI Ǵmf+be7&"j.ƶx ɝ|ˬ`&{2JRbXюovAr>" &4Tpqe%A%qHћpy 6' Oc*U~Ml`{^-긜'ӊlvtd#fX̎3n:*ɛcuE毗/Nq%{ilTcZtsU 6ٍ(:s}UD4$<, ȍyУ\(H:؁uV>U*g㩪$:Pr|Ъe߄Ԭ_ (`SR^M;k r[A5 3ömIhF !CZiP (d6[/Z ס!}@ݬi\`nΔí☠L/m /(Os 9ew!.|`(#G-DIU  jb#V9TMQN*N_ BFj>? K Q `?±hmΒWnZWS(PL gTB(thKPpq h o. g@MY,(:@Pq QqrQj嫾X0r;-؃+ړye|4`91wGܲ)DT0؃v9.}b fL=ejWVHibZiN ws{{rῧewUjAN(觖g[ gJ5GBɻg^iּJ^9A#1ilNb4+УRJop3 ƄW(7L_`]k|F Oa(r>̙EeR9&~@PdyYR?΁9F4;^֙^2jL u}NwZk)z,k;L߁ O+EFRXڋ‚;\) ݿ uټ`[g~[k \$k|SYu_<̏8{c0aG7MXFz!;?=ƺ? Ur,y>͢463`YzY+X2.+ek'+Jz[}Am;XD>Bس}}]EgYwg [5!QZK&:CDF(<+Z>A ->BEbA^jit~qqBo5C> 4~i'pZg'PK4^;$PK9MHmeta.xmlAo +,W4Az詫[4eC8NU{77SX'^E47B:} 6Z>ɝ8sW9}?n_J._=¸÷T"#''s>t^$)ȸ+M'RVV&'FO}ytPK U*PK9MH manifest.rdf͓n0YTu7^)_ݸ[ /4bX6w_.o13j].úgawr{ovq뗋qs9rӮ~q9la4e(+*s!s{ڟ mo/9dN^;jpO~v;8m_egԯ6?﷗#ydZ;['8>}ȵ\̻!۷瞟ϛa}Ӎgi7wuz };!3|ytu垘Onc㧿¸>,Zٗspf-_=,uy~j۷2 ^vG07no=d˓Y;?x T7ܡgwͰBI o..bͶnTC(W'MuvGᘵS2N \ȸn+6:̵U浍if?,j6E.n~.uxv?ራ03r>u[yӗ;Q%Mn۷ϳzx=p׺~Zdlռ[D>0HvnvhǓ$=a\d ۧ.A߼0Znm޼sU;jv뛡ퟷ;||\-!YO6^n':VlqnyF3W*c}nWŸ{;Z=iͰ|>&9]} g1U|z!slB컕ɇp_n7]sG>)(?8E-44v.'Stat 2Ft&U.yqö\/͈ ra\kݙ]6nͮ׿\kcfq-oܿ(2s}_Y<6\~hG ,!zlQAhD(Mܰr1 kEڽkP;xU l^y^&<;f7FwpK=ں{;>ϞNiOv7'Ȭ:Ps_Np3/8:k?t?"-ҵ`?y}!\1B9;n\9{KI"FaǶOF~9mLq69A;8rvl֛E_Яx8hSV{qx68%+օS|͡L9y_@pwf}0*?y7|ssN~]\ #^ʙ˜΍\v y~ y~zs}[K3 < v:&~?H9 !U'D?:!J4H zNH,032hnYi "' v,^Ahu"ݲ-DA4P'Dv(I8^"tд(JgZᐢ*ZQ6Zl&^"oD3.XQZh\ aF{RxE[xϻX"2g\,1,h*[s >RhA=t*\z TJ͹8h&hj\# .A"sq,(J[14"8a`^,RDs. V:+|qќV Rs.QϹȼϹVϹ- TJϹjs.@ҕ2-A-r<ߢE]wϹhbmFVs1D Rs.&{rJ)9K-zRxfo.RhE6y TJ͹8hJgUc4bϢwHH RD.2-}-мdv uRhErҀN*]4n3X8E4YQΌa-; &|RxE /TJϹU*\|ӕ2-*[%R-PSӦIEx9=7ڜ&MZO! FP1]'D H5tEx\bpJӌthNძbM2[Lz ֤ΧD?߃Smu!R$!@}'j~si&1]'/Rp)B)L"DF |*HDDP(KRp0V**@+D5OR42n$(!@FWQJ Bx^IdkFZ"Dܒ$ƨ )Q(B/= `P !Tpj!9FQ<ǤlU A(B3iLFO0܈>!: Ey&G xqmA"D<ɞwڦ3OPLt mm:o5SA(1)u8LgEsL! `(`rtEsLVQOBhI }Z!`;"DheF"Ƭ)Q@4E9&ͲA@*MR)$!4Ϟ+4(!@3h2 BhIl &3i_? %SLj (VtdDsLZR .c"D$dDVRiP(cRy+ZQ%1"DZQ֊R4p$Ex%Mx)HʨciFQ e&G.$d0JP)krΐbJ>2HlD?HHEi:4 e9'ò51朤9y Ra#R2C Q(;wP=MBh ViI`P){2"MSQy1DwCT퇨\i4 e'I{)J9p2Hܓ~Ҕ6P){RQUW .2HܓfS3(AtVIJk{2Hܓ^+ V:~62Hܓ!:GI3QP){ݓր( Bxi3X1잢P;Hm= NiREQ(=9pr/HQ* V٘2Hܓ^THA(=9pr/HHM @2Hܓ#h2X=,6 e"N  S6Q(;9A@tt ENg_RP)wr ϐbܗJ0*BhɊ)~r,X, E3R `JpT2H$ pABejQ N2[0HHpzc N*{ҔlLGLT ?H1p32H{700ЏBxI#3X |f_4ÕN2@ܒ!:t :}A sJ6zCpJLt(E31p7ԤJ2@\i'LQ#FI1zizYI7E=SjK\$ br@fF4ƀOtX4YPk\樁Ɏ(ԊF [I/ԊxjXR;|ݏ`¶ bs6Z19}$ЧA@I1](.yJ?Q|P+F4_ azۭ;bDs6bFgR޳.8~Vf@&}}%Es; +jh B>S BI B񜍂LB񜍆IB񜍆+QFVx~|P+F<cg:P+F<c21 ?\Aɥ Tp/xXwl1lPK LPK9MHObject 1/styles.xmlK 9KYc,+)۳LM $SA # KAPYJ//c#w=FdbP U_[rtXpe?%7;'VLKiEa 72-W4 ?Y<Ѧ=ҏեCس.Th$1hZjP?.ږ`< ~(kN'ˁµ*`ϬG-2nT'7ezru|Ezc=,Cҏ<}G\G8{3*ْhq9v/Lk釞b[v9H>.;ǥmo[geصk> >|^pVmTp3KW߫J2S nǖkMTYy{Loj- .Y5 ZWkLa =NL CtPKPPK9MHObject 1/meta.xmlAO0~ Rwl ă%^4F}cUhI)cQdAk;UpB*SQFH˔<s8(\ը]X+KnXJIg57EZ[7 ꩅiƝsgJ5{/%D|uBrMg+OIXBD#R;W2\|q1c+]Z)[KO C x6QLixx5ջgetE^mz̀jxT%8_'&#n PKѹ"KPK9MH settings.xmlZ[sH~_u0&j%N%h"*^Zf[Q6^fGvVj}ؗ߹u: 2(U/rK=D&JW?nx\X; KNxi=}L)Q/@^nlޮ.G[",eQ}r_(db]nPQoEQJ 7Y U2\l|c])o}FAm.6ñjY!o=`hl'"dt>hPPNoB4~}.~L "CoW08Dgy;r$ rL CƠ;z}6jh#P09ZuGLzN# #}'ǖ#VSD9}{p#?MВp7Hw_O @nZ;o tN + M@& 96[}fRD:ZB6AO1tuk0q\G#> |R QʂM~=o3M*%ZdN '-Q-wy7?cYE>1 I\z2ҟoSq;J1e;ИW9]Y{)X T}FM<"C(dJ?N$aw8.g|SV8dh8&/]5pUϴnR`B.ɕ(Pzdۅ- ߝ:!+,u>-Yzet_8de=0e ~9b-L8_\koX*@gPL ^o`,SN~Lg0O#$4%=m9,V e)>FKsEƤ4Kr0T1iT"iVQ@ Y[~I|*(|^WedO\JC> ?GOX+Xŧ1 ;M'o|Ar{v.+Ph*ə3W|tD_އe|OG:eyx>Zn-Zn eh[kw't"2uk̫"U{xW7(.A}UUݻmQ81}g΋qrC_\%WՑ?M4}@6B'0}@$NتF7obiҧޝ*Z: KQQGv~v2V=5JǬgR? kfӊ$k~};G9~uk~Nl u rgtb_ik^lT^TjUi?vH!^e8?!=N%xC$Lڈ!^R_W1@|/Aīu ^s4i"^m{ MūE^Vmt6b׉x?W1D-F :CNkJm?S1@^CSj#=+AR|osYD*ϫ 'fפN6f+̏\|yy@YA7̡$+940s@d:s1s=35F!ZNw+̰AILss+yi,,f.eneb^a|33sb6LA P@pr nO"ςw?xP2_$A 8rQGyr \[k?)[P 8s~hπO^ C췁;c`%xIdO'W\GAB.\kQMn\srkOW0~?< f<G?s,.E`.7pꯁ1~}qր-8G_8beς Ӓ#ைJ06bξHiM9OtnĠ$6+K!zsir u*}̑<ж gP&˫[r+3zZ+cWGK2kC?1o2F3o1g&志`+-Qf 3.] WßO?Cy_cf^gƎ,o#.=3o1K`.`<4OȜ\ldv85qZk,BVc2!c2!cE{TJ3X` ]^j&]fX@~'n4FVHv'^k +ٲ:겳ƍѕPeK;֑뼎2/2M 8&}zj4b-Yfev|K \zF2ѝ (pLU i](8\PҽT*(.޽CM3dPKEGnPK9MH content.xmlKǙ%BE2:h{P۷"A $A`T+HRIRzX ;wʿ7W?7?}w_?Wyo?/}ow|~7~Ͽ{/޽/y/}~/~G>|WO g|Oٟ|s__?_[',Pӿ|ի/Ao_|G_?}?Ǐ~ߦ߶?+^_?W//>Woo᳒g?d~5OoWo4?߾q ~s_]?o^_g/?|/J?g~g?z5{P}S?ݻw?~'|֜g}?㟿}А+!?ޗ.ć?g__ׯ~~_{/Ig|a۪?~mWq_?ŗ>c_7o_糗O'Oݿߟ|7_|z |xO߾y__WW ~￧W7_?ҟe޽{/~ _G?}Sv۫m~2.ԟg~/1#o^}>|z?߯oo g7ѯ~w?}~7}$}s

w7_?0W>۷_孧վɗ󗾶_k=}mkk}m_j-?OW?͛ 4*~~ͫw~|^'|O?xo_ͫ_gɟ{/~׿W)ѽz/ŗZw7C_? 5_N^o^F?>}~^k)o_gßӨ?cǟGk~O?@7o>|zq^ƏW|?D~k~/^}Wo/_zO>OT~_~WUo?rԖO?X//ӯgy ?~gD?c* ^X^^?D^?2N: ??QHx]~o}|^o1q?>:8_ZĿJJӿ_'˂/~ SO?O?w%߾m{|7_C?woo P߿?2~]7W?w_+_&_{}믾{p~x'~߽Oſ}/͇?_VF'ofWjM?*OSR' )l{YOa?e[Z%^F9u%k^FM^5^F5n9KϬ/Y?EoN>[d5WzџgzџKf7ju %km%kFd}<ɏ/Fܨɟ:'џ}'џQ}KOg*e.3^F"3^F>{Vgܨɟ'џTf7jny%krF_5s3ztx)N,FMC]5s+7Q?%?)AN'^F^&7/x9hysO/Y?G_3o)}2ZrܬrCz5}b]{'Y?F/E1*qFE]>[FF߬FKܬTؽF^] z7kt܍|׸Y O'ff.@㮝7ktj|Y Y31zOufrNqFJ] {ܬ;tqFR9}]>y|7ktnGܬϔ!3n6+LqF:g5}E>gܬTyY ; \R߬mre1N5f.@ﳓ7kt!R߬gf:c]> ?#=qFg5rgsܬ-77kt{f.@ߕAk7k+Sˊ5}ZY5} 1Nlf.@h]~*ю5cf?9:qFN6f.@_]~щ5SSm'G-]>r@Y $W~F^R䅁]^7o1O~FB6f&QqFF6f.@7ktd)o[*l m-nvR߬s4f.@?l 1zOemf.@l ]r'=n3R߬T!#n~R߬k @Y?F)͸Y EY '{.Чoՠ]߼@_}/+oՠ{YqF{YqF12^vܬ蕽y7jgg?qFI5cqrHۉ5Lkfg ==]^@Y G' ]sVӁ~F^Rcp%nV{~FCf.@߃l{1zMm/]yOoF55dr o[*[ܬef.@dģ+$g fZ6f.@ﻐO7kt"Ox||'DqFy'5}6ni߬o6}ށ3w^4L~qFo3nW*df.@<5} owʃdf.@o]aqF^/I0<dWOܬ轲+'ny;H~Fv^F߬g;u~F^10r+]b^BA5nut߬3tiqFɭQ G%a~FMfSndŘqFL]>&y o][^~FRY|Y G䘾f.@_s_Y?F)W\@^yB7kt i߬Lfҋqf.@]:qF/SnrqFC.wf.@_Ȣ߬߫u272{NȨ@o6G]0Y w'wf^CG{%mCW3|I>kܬ~F~/!w{wK;4̻?MJ]~+}ދu+]~/i Xy @O/`ᅄ|M>='s{ynދu|N^g'b'}T2Q >˸ҽ}c}c~+[!/]>~W׻Jwϴ1ˈ=]F-Ao 5}w_|K >|_f}2:DqF'5vÛ.$৓FA~F~R.]&\Nܬ=rbFN'nOWNuLrܬ裐f.@_wQ/;y*qFLc5},(oMvQyM'FW5 (oޒk4{s'FaT:yjqFL]>yb7kt!txGr]'yb7kt @5l(5cj'O7kt(uoQ Zrc_n_.2(o1] u}]~?G_)oQ Of.@]^\qFI/1}]܆r_w+ {_Jw㽯kx9Iy;/Nܬ~f.@7kt|Y?E9zgqFSg:o9ȋ/~FBVGfɋ/w5w 7ktʃ|Y $7wf LqFgz5}I>kܬ!-n+LoqF>gz5}E>[ܬT;2Y 1rG~F#cȨAwdNqGF P#ȨBe]ɝ0(- )L.̸Y [k}]>$fܬ{lrJqFR|Y 3}]>;y7ktɇ|Y?Fߩ,Vf.@7kt<} @Y 3}1I6rN?qFMk5}CY?E?9RgqFչg:o5}gx7k%I7ktzdo^;_4{#@Y?Fur zFUc_7k #贸Y [%f.@H>LWc$~?GrqFEn5]>7ktV#߬T #n^79Y !f.@?7k.yWvLWEn5] /_WʹO7ktzF7kthF7kt:F7k;n4qFn4qFn4qFNp5cJ&o8:'n6~FFp5}#߬џS |\Nj}nnEG C!gH%Ucidci z_GY+y$/ Р97+kF%䣲O]6itё5s Ȇ7`EoH>ȣ/}}}P[mlX&;2@ I^*uѧ/Ҡ.@G*{o$佰d@#kt!]su *y ٨>A]f kt:vtߍ*Wj}7Y+ag]]^h^H{93];5П8|T~R?=QR?=oHސsSe?-9?ՠBN/@G t5]=B.{"AtOLנ>K k5F-55Gkt#ՠA~> tdL^qld_qA}?Y+G'?!:FW̎-5s yyQ|y%S؞/(GlKAl Ы{^4裱#d@_l З{^3K#WZC* d@#ktf1}{}c,+1jyEoH>;0@ c>FNǸxWv`FW͎;5s`/'5#@o.ѠOtܛvxtǥ#125cd*hǫw^wÎ@?%B2]XE;^e0jg53j$gNjQEz/"}r9zKyG[ ktz+"hNjE{ю$軳-5sJfG] z/"?АÛ#k##5}KI7c;v蓿N̨BofofOv.Чwj7c;v苾.("ofofӧOw}@ 61}Abc/+Olq=]lAo}@ t nҐ.'5c1010"Al#Ї5觑#k%>^J kt`OJ}}'}RZ^SNVY+[%wY+{R'5=) ikQ -vdl³'a~|RZ~6bF^=5}'>}RZ~ؓ@?>)@v`FWw2W2h{N3vC]QN }210"AQqy`T("_ /Pb#XG^@>A Р;5s{po6"vFW.@ ّFs*\95-{4=kF͞9izIeFWJ.Y+&觳K dO5k;8 j"Б5vdџn[rc "@ d@lз G=K-Vԃ^؊z/Wk[QzՈ]_y}Q>ؒzk=.X3Ʈ/@ ّqFW/}N b!oW ktd>NAl;з;.@ فqFWOt֍nD~RaF zxY+[7 :^e# _U#W:}+} _U蕭zu݈} r`:FWonu# 2[72jd׍h[7 XY+7}QyK-F4荭zs݈}v`l臭q݈֍u#֍nDاK凋e#0?.QTٲ1lDϤ}M>Y?G)u#cFv݈nv`FW.@ ]ؑqFR^" d@ola:Л5&*?}@wlQ]7AlȸWy\onu# 2[72Nd׍h[7 : wh7[7̩u#3Gq݈u#ޘό$蓭t݈u#@?QTغYnDٺyL(AlЧF4臭q݈{U賳я bdE02HFF#:0w|Y+`ߏ6 ~?*@cQ7Y+Wg{ k#L~(=G kt:!]K#5s`f ktzgL}u􅁑}?005 @aР>^V ktY?GߩvkFWw.лj{dGv5#d:ّFW.x@ ّFrb7wۥ!||/vˋɁ9zIyY%{^4= cE#k5K .rb}y7:zKnN>@ޯA=e#: z}u>_Wٛꀾ}S}TFdTAoMu@oN>M@$A&iooVTػ֌4荽wi2FQC~Su0?>U@_7խ7i;{SлoӠ/ Зh{^;UQ}Eξ1EyI=NdyѠŎ'5}ev\< x9/{L.٫.E#kttd~ k4 A֋}Q !ta_-5}/BSfv&# zg{}{u>WW~Bc+G[o4ݫ ]m@Gg*lΞQ\A^f ktdI}}2W d@hFW/ЗO`(wʕ}sY+aG]>鵗k/ ra_'55~Y+''B'9]^x:FWF@G 9zIK;%4쥌6|uvv)џTؽF^ zo[##ktxtd@gwܻ4=Ì *Q}w`} a.=. (A\A_]Kџ;2@ J^KנzYwfeWASuwd/j{1Л6֠.@ E9I d@o@oX>pY+۰ 5T672"]Ɇ݋ݰA''kQC~p͑5s`_%5}k}{-]^S[#dY+}qч/4軱Hk k-er^yѠ7r7hyaE_^S&` g047XAK &?)FFvaw`d®OvzhF 􉑑^&FFO/VeFWN/# &v/vî}w3"Umb@ YّqFW;#]џT׹׼3]>>ݙA?]؁џT3pY+;yIE$P*;0@ E1zɩW#Wk'tEB~ͣ0?<@/r @ N^sѻ/ѠJ5:FWM5:F^tdݚBF}n# "/¸7a([ʍ[ ktzewzǮ= sՐo̷x){ʛ}@ nz&i d7I}z}IZ>Ri8Y+I͛5$ Mn&iLe# d@'꯹5$ Mn&iJ d@&io֠/v4З7I+w&#{Ot H"AQoUpY+[g]>3pY+dN k5N5GȨAos@G SE#k%rL%t sd@AioV׿b`UX=0 ^*FO/cQ2td@?[ k=F~jT{ ktzg/8z5E9H};:"ݨnY+{'04蛽*guFƶuT>+>|e}W}zJ# d@ol(Л[G5賳+5Q@S]Y+q{`TA?x<0x`TBQAr*rΖ^>Б5LtdZɁ@ ^:td\EVY+bG]>ؚzk)gtxKyK-5Uv\l胭pE}v FS)@d@o{ ktdK>]RA?.RT&0Y+{eG]}3E9L35/2Y+[RzJ9+5@ՠ .6|qTSfGێQ zc/\Aw ktf;G9@?DqK'5賱# d@l(з;G=vŝN>]`pM0G vsT^Re;G{Q zg;G9A_臭qVHRVH}BJ6;2@[lTo]!Ag5o5ҐB R؁FSf+z ) zc+\!AlЧ+4{cd}VHRVHBJ> )OWHiOcG9Le-VHBJ )/WHif9J++4胭p}R@_R;|JZC)7Hi[ ) f ] @?)7IWIi d+>]!Alз+#ž9xi;o4蓭t ̏gyI6/QAlл+4苭rR@?RT;;0@ VH}BJ )/WH)[lh]!A[ kt`+>\!Ae" )RGvuv`쁬蓭t}R@߮RT 1BJ;0@ VH}BJ~ )WH)g*lԘQ\!Ag kt:=1!?l̏++UBjҠ+5}R@_R #BJ^ )WWHiu;NC)oH)Ol8] AolЛ 43 d@lзK3–H%RƖHDJ>92Y+[")zI-%K4؋|er`9FWD %R *["5kTHi;[") 9zK--K4-zu}%R@.Ҡ̎-5s2["5{dHiGQ `K`>\"A߃{ k#Dj(.Ҡ7D %RI/^Mנ#5s ["5gHi;[") dK>]"A?g k+ NאwD %RŖH}DJSY+3;5-t#@?.QT xY+;[9 b+G\9"@_~?ߏ$?9FWӵ@w-^TiCu0:yo{Yշ^^Diw%]џ7|ߋ E>ُ>Q}/vdlџw}ߋ E>=JOe9o{Y÷^^D|؁qF>^}/*t" d}\ّqFW^`^49Ⱦ~TξwU._./R {уaE%蕽v׎h`E/J7{з2Cz"Agw^/430G ^;kG%ڑ] zcz#9E#kta# {ȮQ|׎ {]~kG~|%vn ^;kG4y 2{}׎ `>eAߙ]聬џkGkG4m3zs}mF@n3Ҡ.@g*eFEB.#7wi{J˧+ž]ܵ00}:@Ѡ]~T10Qb7h'=25-qjOjAlлu4-tL~Y?F?.r Alлu4|oF2)/կt `ی>fAߙџהGOG5轰c d@gkaiyK9+FWW_}B /_({ʃ>Y+=0h5mp}@nPT2;2@ 6ّqFW0w}|0nPT@ ζ_B> O_h~ J5+5@nР/ö_BSȸY+t1p/ rgN ktzxY+[9 f+G]92Y9ldWh3Gv5,Ӆ#M\zI,A6 G4,݅#Ig04^JO/ Y8lhdG]‘\8A?dE?.QTF-IG>5]‘\8@)#Fv#pD>‘>\8Aߕ]聬џ70Y+7ҠŽ#5}/v`F>Saų%R׼DJ>';0@ CH])J,B6K4,%REH]) !K.q}JH!%RAH]) "K.r$ ՐWDWHiY"uчK4軰 d790]\"AdE.Ҡuaݺ Y!lWHiY!uћ+4蓬RSOџT)dDJ]"A_dE_.ҠŎ55sjcG])wHi}QyOcd@lЫK4-p}%R@.R2"DJ)7Hi[") fK]"@:eFqmvdO%-q}Bv(^ҠwD %RŖH}DJSfϏG5m]>;xف=#^ [9RNWh{eO kt< dff~HEt"w@G FFrc-QN@(BGF{dA~Ztdʶ-utv(̽yTC:sdE]^َ:WwiGcZ kt:"@ d<؁FW:0w|u0Ӡ.@G*G ktz[8Y+gcF kt>"d}2Of ktzg[RA]觳35s ?\4ywG}u@_Ӡ.@w}@ QفqFW.@Oʝ]8議# d@O ktn" dD-E xgF G 6}Nن:o7)K*}@ ^%#ktd;>QA?\:F^S@zzw٫}UvdlO=]S ovFW-5}-Y?G)RGvR@oҠB RtooH-j# 4-zs}v `FW>G k3>^f kteFWoз)WAƶ" uvqFW̮1@ eQFN=veԠî1@ t6)2) "ddl'2j;[t *" d@?]8*{>ȨA6FwcԠI.Y?G/){ÌfzaF :~!߅\9F^Sf2G5=棌E#kt"Б5sJeZ kt:Ho'|v FW¾3jџTY+;{G5+=5[^~E>R8Y+;{݇5k#5sraf kt:!sWHiGg]~2;0@_10.*~Eыt~`\5F:=0n"%K:F~Rm+FW.g r00zvy>rb9|30.ԠOvkЧvi{ ǻ%Ux(Q}K]@>ޥAg/مUה]F. zewx}cQ]@>ޥ@o)ǻF]z. `-.zO=5zҠ7xЛwi'{ ǻ4=] {k(>ޥAn]wՠOv.Чwj[ǻu3UvQ[Wvw.J9+5NY+Gc]-@_"@)v`FW.@ ύv ktȸY?G?dvFW7hgcN kt>xY?F9A.]+td@\:FWN/@GK\%5/r]td@?K k5UѬQHB>*sd@_#k--5vFW.@ ~0=U-mKӠ}FKNj}$vH>>#iwcWF0 g*lќQgAolЛ43t}ovqFRaF# zghAlЧ4:T|}FH>#/ig>#I3'43pOxF2{ʑ}Q `>gAlз%C.]>#7i'g># fg@tr`@ H>yir a`~g@ovFWw}F}H~>#){]聬3p}}F@_3R>5"H^tFWӋ#!l̷3eh3Ҡ747_AlЧ43v}}FvE]>'Y+[")Ne#d@goҐ/D %RÖHDJ~RmxY+[") 1F:;0aQN@(A/F:=0}@_nUה]#uTvHRv|sTQow*[lngAo[ ktd[G>:Al(з[G=zbQ<2jaG]>QOj: QH=ʸGTeԠA?]џO<^eNj$2ó|Ӌ3+ez`E"ы+4能zWh7}t7RN^QAgo֐OO_=A?#@?zD~Ra'Ѡww_=A#@zD~ض4ץ ONz䨾zD٫G}}W}zIzȾzDO`h{̇Ѡ//_=@)WWh{ЛѠ_=A#@߾zDRa9-Ѡ7v.Лj'{ЧѠoo_=@並G{ww_=A#@zD~ثG~|}^=rFT_=A#@zDثG|WLz̨zD>ثG>|}M@_nV>+IZC&i77Ik$ &i f$@ߩMgGqM@on֠Oz}tn3RT&sIZ&iw7Ik'[! ) a~$*Y"lTHiƋ5هK d@[a]>‘>]8A?dE?.QTˆl ktz}#}pD~‘~\8@ox#ykGfG]- {d]8A]聬ccd@dE.Qd#pD:;@ >]FL?\$䛬u# Y7l׍haf kt3C\J,A6 G4轳+5}vd\џ;2@ F6]: :y5r~`5#D?Dww7iPwї4l uSmRr ktz'.zwC} u}N^R&ꐍ: z"Б5}/׹| u|N^S&ꐍ: zk"Б5} u}NɆP@o uFqCuN>Ɏ>QA?dGE?STȎ:dNG"!_lC̗4=/ je]0Y+`@gʅ]gT%] . ^ 2:ZVdj: Q 8" d@߃]XџTѲuTΏ# GF +FQΏ# GF:?2SaGƚxdԠ7E F@GKb?%QE0.נC.Y+ џT٢Z^٢zwkW'џ3Y++[Uz `>\UA_l(З{G=7y[CQ7j[Tz f{G;@uDq@oՠ#5}@UT:wTQwjfG]N@:ß*Wlh]Q;Al(л{G5o;@ ^؇d@}7Y+OgWw k'̮0@ >]"!?]_<*{KQ}ߋ}r}]5o/( Fh+~T>&]@>@'0ZΞz dO`}'0~|CRaO`'046!_ /Pٝ]G. zg0}>}@~@?> @ߏJ;{݇4= C#GFL }_a ^8Y?G_<0`_+5]VxrQT+vڎ+v4蝽bWh'{ЧѠ_@?ٷFI'/]Cp9x7sSiu=FW7vЛ7i'ӛ$䧒FaџT69]ٚWw׼j ;4= jc]A};KR"@ d@]h.̽!.oRTRޣP>2~FW.g.g z3}``3]>~t`bQ .>02zNϔ d@w_ dz]/ 29Wdwjfߏ. ~?*A}@ }US]~tFWzd1<2j7{dGv'r"!o0o@>QOwjOfN k#ž9Oi; ] dO}T r9zI=W7JTӠw\лi{5G bԐWT̫Oi{ç4=USu 2{'h}'|N>Su@>UA#yOn(NB賱K=5k=#.@ ^E]>٣@>ʨA?QFeTT 0Y+;{л5Ҡ7*WʙW ktz" d@]X밋+5s`@ VE]>؎:wi7{A з/TT lj 5m'5?Аoz@o_(@9A3FW__hw'.0G ER0."AolЛی4蓽OIk/9zM5/4p}@P"B 7w_h'} fOx}v_N=F d/`>}A?lЏ/#b(Рwv_}B~ w_(g;o$p}@_P"B 7w_hs[G5v}v_FѼyT> Ow_h7} I _v_B> Ow_h} ʩ+Gq@РB:F^00я z`dE>'td@?}~ +FFrqU^cA#:FWB1Y+ EyKmX-/4mp}MY?G)Gvv`쁬=0遱{`b`U8<0qx`ԠϿb`U@ 1؁qFW;whWʛhFW.@ V`}SV܍ jcw kt`>ŨAl#з#; ]$bzs-{4bv}T.ƝQ.F7w1j'H3]~.Fw1*K*.QAgWuaE] baŨA?l#Џ5UqרbԠ]v1}QRfw.F ze^ŨAl#Ї5蛭vGv1]tQQ da>ŨAl#з#q(bԠ7]9gd@?]џT0Y+{gf kt8Y+df k+UvxYQ=H͑5} v`\џ Y+fv ktbd@ߙw k'.@ E]>L`j7g>#ɉݚ~rxgmr]>;td@?lЏی%E.]u@RA-qʖH%RΖHDJ)/H)[b>?!l̫K4-p}%R@_.R#DJ)7Hi[") :Ψ)G*G ktzcK\"A_]F k#;L ]$3zs}}F@3Ҡo}F 􅑑^FFO/HN/+#Ned@lл43t dZ؁FWw}F}99e3ҠɍY+2k.F "rL!}FV#kt .p}}F}H^S!># z͛%l3mFM]6#zKeK-5Wv`l3}FC]>#zO5=5/vd쁬3}F 2yR>)AdEѠ>^FF?^$觳]#3¾#賱Hg kt>;9JlcD65ȸ<2qydԠcF] z[+}FWOz37GtvvE~R]+`\ q/$g]'5cS-Xr ktz_bБ5}5r`:F^R+FWʾ FF%& m J!RY+{4賓k/@G CO/5zKeK d@:wӠî@ 3ȏꀎџny)=EC>/l䇋F . ^4ЇJk7ƈ03~cdc zj d@_#}JWdOF^>r͛/Ѡ>|}\G;ed# z#/͗h'yE|DG.# yQ| WOLkً0`{05š^>G4苽|˗hIǛ%UZ `/#MYѷ/WT6;@ FW/w˽6wKRej. : r/J$?9FSfj. ze^ܥAlsЇ4d}Bg_|E _.zUϿb\U8=.qqz\ToE 2[ZWdj{Jͧ53++5VoSTuG `_}}/}B~R d@앯@U"@o9e1nLנW0Ыh{Ç4= (ݥAl.лu5諳9zM9 ^FW>k kthБ5}i d%pMUr]>7;0@{b [kq{\TbA)h[7 >Y+fF k3N/35G}~T>+v>}ŎfeWARei+Ѡww_A_;@_bG~+v~|Ŏ^..Io1uT~譣GFN/# zr. jr d@?]:Tّ5b:̽!_\9F^RK ktzrБ5},r]td|؁FWA.Y+ge]7tdّFWwvbl=0JbZ kti"@ dr؁FW>{ kt"@d@?]U>G (d@_#k3.@ 0A>ثӀ>|u}'}RZRfOJ'5ܵyw}W}4 fOJ}}'ïs ygOJüzzD~R^" d@71F 'v_}B>r*\95@oРA~:FWB.Y?G/p05]B?]j?^4荭zs}R@ҠQ>@oREqR@ﮐҠOB R3ؑFtᇋ|vY+Of􁁑} ~K{cF/H!wY+;00zaW>S-" d@g ktvg,/*W] zͫ%䣱 d@_e]N^ݑAo@o;]>6;0@ '.@ E]wo @;߱<"RU|d=ec -㳎:^ @@aS?$@wQޱBg?t2@?M`O_LĴ:$h:^z@_>ulCL<+tz=ԡ;FN}bR?#A5Q?#z.No@7zq:p9DƳ>No@7zq:=./9c@\^c@./ޱBgWFX>{GsQQ ~`;V `;V迣/e~ ݽ,X3S9|hnX3W{m+t芾c@GuG?>=X37H:iRBϣ:V B{_4zD{_䵩Z ]ӯuG2-}zQt Ek^]:V迣go}zQt 0ڧSNRttEOzN/^ՕugWue+tziݲPZ.(X|M4c@?hKF?jiAGG&k`up7FW7#zu*?џ.O[Z9'nw7Ht̤Ht Ag7H zDJAݧ2jN@>OֱBg@d#)}7Ht C M6ͿF"g_t}sT~AAO85҆~{È&no_h_?e=|c0*li暳!#tx6@k6 lk /_^sc+7xD+:@ QFuY .]|ֱB _x7li< F?0r'FX>} 7m*A? k:=Ooe|ˆtN]m^z@>oX3m.=ֱBgum:Пc+t=rc@@Ӻ:V迣_h6UA|+tzԉ>;/lj#=N@Oh?699KZ Vi*^::ʎ8'JI|Ϧ`rN{)X3Dw/e+tMtRֱBgF :V迣?G7ϴ]@]:V ~)*Y g9|usV]:=7z ܻv/k9c@?Lv5z Lv5z wˆ/8hJzF/'Kۦr}+ApˇA FzA@?'z"=ֱBgD:V X w׶8N CHaCutt뇮$D5z=}4 ֱBgowWo⠣^m.y^ۼ앁^>fl+w=wuzWAhF@a|ֱBgv]vI8]0k!]!0?t$0?t$?C 7`˚aT ɠ  ]goЗOLz-*Lяʤ9聖I7zL2F*fo_hڶT&A8 -Z&2iIcSe8~c@ MX~pi1\;V Z M\XZ ֱBg_t~z_O'Z.zX1c@. j:MtMOX^nRb~nQk:FeOF {g+tE_a4+ :\&T& W=c@O4.}DF{ш19qQwG_>9^{/A_5k#z`oG{mj!e_ w.J;_,rc@G__rm -ז 97cѵ:6aֱB=|>tֱBg_C)0a $tӖRSici7j4ӈC~3ZֱBg:9Kx6_8*AӺOi] T34Ո~/kQ5^<6z w}uM=_H_5a/hQY6TA?2uqY e\ֱB}Yc@OS%u p u/@/u@G:V迣_sm =ѧ뮫 =|'l~Ё~4^ ]:V迣B/1:V }Ҵ: j !D3/i+'M/ʦs7ڨѷ^q^Bk:M^ ꅅ~~4;^2>X~OtMætFFZ9u"O_hQݝTTA?F?AOtNF0Зt]64b ^5z w}EuwVQ=FUsЫ}7z9y@F:V迣_h{m^+=z4ֱBMGF_mFУQX a+@:V (c@G[2:2rګ~Dwe+tAx7ozG4|k5~gWBy7zi7=HcX /j:=ЊFUr ؍6];eZ GX|˶)q 㲎:˲Ņ}FmΈB~ڮ6.ޱB豎:m!+ѯo.m]qm􇞋nD;yDۍDTEH7Uiz}GaLX3Y p| _᨞P/*Jv1пFh0hDA?hF?jM@h/^Hօ4=𡧾tH紡+iF6Q岡:A;H5Q ):Z*fsgTt Bs鍾KõZ]CE=ȏnuЏ]}n]=\g˵:\tc@7Xџ2У7`EFoUzAAa+t{8z wδn 1$@Y Qሃp,b?G03ua䐟wh76W3cy _ 4~F*1HKFkZ F Lc/E_ֱBg_}T_KHR^(F׸Wz/~zysuzyQ.~,4j::ֱBD'ֵɣ^;we߬t_ux*cGo,LQY zwa;z7iCGF}hFONg@:V NOki@cWF}:9;L? 'm]fpЫY g7&<]l:jZFr?ޱB}@aeC08g|ihFO5}eo2nX3Y;mQ;Bշy]=.X7\wg+c z=gwRa_5_Wc3>^ S9 ^w~ؚ/}yAQ#:|z Ow\pG/͎&}w/mWws9ߛLX-9WަzWy=ޱBÑpdJtcԓ^5W8oUgoQ/y㫈]Vz T}S1k;XCR]:=ҧuG#kI'V :8&3ה0yݪ?Pj;V,Ku &>:`zWz*~|-4!pc@^uN}{@$ﵭ$/OֱBgX+j@б5a+taOYFzvMMi'؝3O⠿ª>렕e+t}W8hc; #0jM0z+氡tL4G|= aӶj9vaCmcmQ/}>={}_}5:ֆkp78bCAx-Og鱩Rg}G38 S38c+v/WzWucϋn:V KX wޏδQ:3WG/yLg4c@/yz3wFe+tz.c; XA?`h:!}!ֱ64`&_C`2ͯry;V迣Oh6UAW f^c;h-X3/ѯz_p hR%};-mmS4E[Hի.G=GCc+tϣǮΣuON@6ֱֽBg'_K}vL_aS9 Gmcɮ:iݴ.Ov]5P:O)#=F j@ڣov/@SB&,t֨ukDBm5SF,D'6zj.}@_`eC/08g_:=&Rj"@1ucT慂~mW?Jt/]OZ)6jR)}c@hc?12:Nj-':~SGi+t tֱBg?tK?|ao@Zuc, oj\msu%}r =|_trB#S+;V迣OGwij!?hmWvq ͺ4z)@_^eֻy ^^\3J@߾&gVz:^lse'mj7Ah/u hFOg___X3c)k+tCw5.z8℩<xK+F:|ezcD/xߒVڷ0gyY uG>tTo:]hY g;|cﰩS~ͣЧΝvRwmtu/ :=ѻFOݍ2зBm+tAϣ~tO]O)Fc+tFߍ6ֻQzx#+ѿ"#19<ЉFmhA/tE_07jEN!O0::'S4zˆ:rD:.ޱBD[^gS=/8[83ݍc@71lhA?îF?zA/ƨK%FJӶqu5z(Aut?]G3пn]`"=v]ʤSO)FX3s'FXU0kW5vls5:KC_4&ryã<5<~}l:WkW .^@_Ӯ[zAO:S w. Wè #=n@/i)}}4}z > 㳩 #}?4c@hSFjC@ٝövs_zwG>5= s/}Z 3nt3/S/Yp36W3c 9rֱBguc@uc;屩[# ;V迣_0!tAkH]ӯuG!ͣGE Ǔ]d =ѶݍjAf^:V迣/.m骎𚞖ZLh ш~tWU7yT?+Y ht9/q5|=pMa+tE[4Ukzu Z֩iSu8wWޱBggwޱB}蚾c@_<6z GX3;go0ڶ5LQ8 F R c[G9QֈA~} tqֱBg_֨n|0V:1P , cX Qш^4Ë^hF/uMgW[Rm)[3n'|Ulꪎ~5՚AuF;-R/}_7c@Bi+0i+ nK_ֱB}B[mK9}Wv9&7T俓0wzè\:= b|_ɋ .Z ~Ahc?U12Fϣa+tֱBggWuޱB=},<ֱBgٮ4%8 iMX^+zp!@Y}.tc@Gt :G??<:}EkK">c;׳ 4ZvA;}+tKCXM^;֎rvSЏNO#O]1Я;=C~&ֱBgD]:V迣ϋuj_ 5>C/ff]:V Ӌi"ҫHS C?A?|/|Ltc@߉fҟu6CF8/*g+aG?DoG=u;@hEz"DVH'ٮ6WA|mn.X3󀕺ޱB}vM5x5z b5A~|u:V BFގkCz:`zFgV#= uzhB=} 4 ֱBgG[ƴ5/"C^8? f??c1=z @@_Xy ^P783RAc;(3fF3JAG_~IB Gc@ ] lݱԲ~5}՚A./:V迣>kHH~HhgAwX3c;WR./_I E5ի:z]tyֱB=|_zԗA߅:V g衙=1пƀ5BAOtJsC:V迣:V uPu+Pg+tzB?rxN]kN}_ܻa+tIp+tz0+ѿ]wt5!s#/=elEe+tItz˨}:5}YiMg^^5}5~#~4|FO a}lh[cG[Fz&^^Яχ:V txuŅC`@_p+l)A(^@OtХ4iG?i"|tlҿ)t0?_賥Qz7[9ÆZpCG?E]wG>1;gИ`;V 7o~H K?˖r@sʥsm g:V Lt0jH@?>ц#TE[4Ukzt*c__pR慃~kF?T?5b/ [jAO8ʼ0HJpB)wiZ w>eWü9URֱBN4c@Ot irhџ;c@ fc@;V迣Oú;eA;^@_җup«ѕo_0%t=;V /Kg_h{l(= FUxq_YFX~Cﵣ!|~c;zB?BhQ]q|ӶFs_zZ w/c@tb]&qZ(O G#}}4; C6S{@z2_z2Km:FĴ 9:ب5׈A|cTc@zlKw/}Y whl(<ГhN7}[ wg:V DaZGytk+tzUm*?͟gEֱBg'zhz藞ֱBgB:$@Z) @/ J5,t16z ^`ԩ~|=txc@ÇjAG.Ǵs!_]u ]. 't&78CrABOa+Bi+tEWŅ@^WE @ջůEE ::CdFz/pD(ѧQ-/n^j@>ƀkS9-kr:CsKg/.kv.p8.RзVm+t:]lse9/.J DcS9<jnt];z7ABE:e =woko5yDH:V迣OJA?h@U07m}Fߤ}-XϦ /8'FX3_z g=|m0upѕcO``OJPh}WeC+:}EU4AGVOA>Žm~ޱBgZhW~_ɋt ǎDRt9Z 7it5!BWk+h-1_tѯJG mӖrG/[-uXizwe[t:JJD;ݣεG6z g3|a+t:C nۼc;>:ӆwqFi+W/]?z}^ζ /*c; //Ƕzn0 +ѯ'K?RtzZ(c@hFj@O_I[_.ѯKY p,ed?_liy}J׆׆A_:~U@>:wPk8z wcYƻc@hѷ KX}ڧsЏ/=Ԙ~/{9ֱBgҗ@Т{mj~ 6* 4{Æ,tq X>ֱBgBFi+t:^liy_C/)c;Qc@GX3_4z g>֍a+t:Ios9]X ~y9ֱB>7|DF绮%maSu8ΔnLiC[5S44A~'z4JX33c;zW^Zwz/~5њN@ ݽ䰥 W~u@>a9mh&}FuoAoH]7$5ӽ}M0:V 6Lki VPFmtk@?~0X3k˱O:V ~KךN@_c [zA fc;zDK2m~ Mwu}O;2,X3Wk:=ZgZzK/}C HkNx`;V迣Ok^j*^(=zwG_>\W-JuQO:;J/C'oM]m#Em+яCfqS1A ;6;oѷʋ86Q9$$~Йv43^h)":qIe\8YeG#097FJ 賎:=ѳሀO4M9pFWWC_^4 }eZ it /]^u1}zw_z w ҷ-}B[4zcS ˱元FOe_wm(}_;V 'tzM^_+ }3}8BѳGB'WKH z]^=敁ƈ7ѓ賎:MY W9p0Ś]$m_m9 1bmƈkNBCQ r5Uvб?sG7lm .}[j@?ac[ 0^0rt_钎~BtpkJB?i)ϼ2/eK_:!-]5bM$3~ψCW}G7/s.r?su C}AssQ6~F)^_# =eYhyҗ@NbMS0H o/Kg?,/G _^o-m9k:z55Hx+'~o7"y; `huխ:CMg/Zz-AkZ?jt="ý^ze ~z@A鵥)=|[ư-#}û ?NtpZkVGA/p«l*A7Sv/O:|GtGA#ݺ#Sk4 -c Hԉhi H7l Hapȷgt(УQF Mc[I:mt%vI_ӗ@/״s_0]_p^B9=} zҊA3L:|eSԚ@xGшR3|3lhAOS 8S/Xh@ AƳTB?h9]qbk ٺ _x=vso{Z1:G7F$BoFۼt3@x\Yү=} pW4L?rUEAO;O}$rBҏПOxE6sv~/`t-8pFWF ^iC7􀗗i元ot/?.;ڽp^^߭v,w/B!u].:<5~}_/~-3Oڧs99$tU?:zQTR.z/J] .>[.r^\z <Cy:wit]H06ӆ>Fi1(^20a # EBK]%uO,GB#tcGk:ht]aP/~WW,tptu8bUm"i:=|o0"l iiDAOt4R,txhk( n j HA/1Ju,t< PJpПOK6s## /=-}tgzg:}⇣:>u>uzeWU/BkT @߾|znʧs Mx5z)@?<BS. .mtR/ާ.ԱoÖz ~iՉo^Ru( gRt 8 R+:04^@/3ЧOtRӦv/tQ BA_yΣ,tK }F/jeFA?>5ԚAg7fS/Z'' HöN ǧUj| }:|U/U6TA ]$tK a{aYƧ,# kB]Fb#Ew/~{寧K-57o_۶tsA9p_6W_ 'K,ҏ=ޥ_ x,tU @AOp1m*A{7zSe,2r-hP'Ҳ)ވ>ǀ:VF,zQXQgU/^( Nxu^ ':V /H]rx"ПN ^Kw)'\Z\8`](7X7b>t7"]v?tu٥'<@c5@%-{axy);Z^8])jԱjBG_a|z@(no cm .mC>z腂>ZG,t}$t} //R }@s.sP΅5J(/1G%F,tBu!MBGG# צt]׮]BFt7@OD:25SϻXx%{᠗/nt-ݍr~FQПe|V2@5,0ЧD H9]^jyu鍮t s/k)Bs/ }w/۶v/tU @A?ac[tU @A,㺶eéFWj~jvU A;w5:wQURXh]}G)ާ9 Rt>/,?@tﲇ]8h2͕KgO|=S9 k }K_Y/fi{Y njFA?:}lyX}>~4 5McåFGF4tn.}iK ҧt‡!,tKW3Ús^Gϻ(s4ŋ7lt5_h\Juq/YvYC]C(%я06A6R pJCXκe]8JiC)BxMZ wUwn\tCwmKgO$B7 #}D.wޅit!yYVڽ0зOnoxM߶s|te=zkB6R/^u8mpæ1p4@( A?Ri:tzaM/,t|U>JAgy|}:c@Fc(ht]a ݻ4zi@x1r,􀗗i元5J(7zC˶nH9O -mKtUBA?x?8gBOG'R&Plzoe9x*A?~HYlFlF:\>*'>1RYw5z^>5lhMzsy?eQ=7åFR#z(UjDCOt]:}s## /}ZKg/Z:97ʭ{#:hsƣ # 0m9OU~F?S]S) MfRb(,u4b~HS?,􀗗@/Rp{F׽oŐj"hE__ky }$r;os}$t[ZY|D75mjA4?,􀗗e元wyituyo0+tC/~Yu4k?{it={E =B?8r)@?vsK(K!Of`^B+:a,mY0F0L:-4?UZ=Jc_g(˳兀KCtz{FO]YFֳO;909|BSoR ~Lz_e'ZMեszFW.cS M. ?Ի<ջ7ҍ7[0P AuZgCFz!Ø0񀍮$txhZkh/O/4th(vӣ]:\:*%1lz*B_-/×^7x8X:q_PЗ/}:=ׇJx1з/cm)c[_:Mx}JxQWt:1CWt zaC[F: %X~QziGYF:Zl؈^H,t< PJpc>t2 ^8͵waO2M-.t?ܐNݐB] wXubzmy~ǎ9^v/ 1kW9Fza[I:c إ/xqI[Z\8ԭ |l,ad?\`<]`̋S慂𫺥:y<@ai[@F:1З}:*k4 nj@A[V~,&( A ]F fXfd])gW(B?~B)S8eұBG|@ s73[?B^.2ЧOtO!z! i ˮtCGgoz;Bߎ6ގRGi:~]y 1^=إq U0r ^\J =}F;mވOjtM>`&/|4*:q3qwFmwF 3ugE =]zv /}Kg_ԗAC4tpcv|9ȴ64 αEBޅ~jr: ~~0C_: nhjhLBҟtzN9 'Ҵ)kz՚A/8^Vʦ3r/O:yy _3AG*HS,t~u?JA_x#ԈFw kt]QЏJ*tf_]ݽzWB[4ZP\8vCX-h zז元5n(RŅCpv,]d?,z511>}w1mnW^IЗ/4˖t J Ѕ4 nRjROA?p׮8E"vvQЯ_xqvp/K砇_= ^p `'^.z?iRHH.ҡ.$ >KsD6s]=3Ч/}:~iziDA_/9>FmSWth:Qބ!0))$?LMM٥ër0e75ewntuo=m Z^0 m9pFWi:\ץ?|&c>d׀t9--^hnG7wi[{:4~eAH~H9l[Z^8p6ѕMh:6_a40HpGFWG# ;UG#:Jx -mR(=˺ ]ֱ˺Fe={I^X+uz/76nt56&Í])RWO]Hx)BAzC],tDi.oњA363Rޏ-cd/+} ^ӷ]tK9(4Q^Xp@swk[?txkk+=zaꟚՓ/]-/tuU /w^6s^B+:@ ޳B#:< 5 {mt{%1|_zԗA]] wXu`oxqp~1RЗoxyYp臮(}m[ kS:VSX]S(cX[1r:]u$tgoÖtŇiG_:}oRR,t9㇮$t|y)-/ҟ }t<{a?xiN@/îB^22'~"S'RGspB>ѷttɇ$ͭ:zFO7O?Og_<2r/,t|r{vcv~5=hMg'9c9/ԌC^x},w^KSП/g(.ht`0 XjA]T薱C[F“k) B?e9P\C(رBG}SGBhш~uu>]:qM50 m9 ]R{zm0W & Ov],5ӭeW˞v ]OG){0:V0XpK慄_a40(SW,tx2+F}eS_:!mtݐeiyoxwj7 ̰5~^]iq_ ͯ0`l/8䁷Kۡvi,Ap1)@OUN㠗O4Z6utíӭ =B' E?Ö9F>B3UhB/0] 2eK[F:|"mtH)?) BA?x9*4bgc:q{Z\AzfҍrQhAOId] qJ/Xk::|g[t:VV~0Aj: }T?FAs/~{a/.2r5}iM?[k: ht]bPgWvY=v3A/xxad_Խj#A6sjt= 75!K^iZ釔^˺[zYBǷjVOB+ _a<]a ^ӟtz K =}aM0]M0)SüYҧm} !eC?t8=4E(hliC붹u)Џt:~}_/6JGI!C@|favvtxIOӊ!wsዺFE|ɮd+]q//Xμ<ʼptSo9C-GXF >9S_:}ҹt)M!?r}nh}Qn*0])GY //R @ymA6‹T SIFOB]H0F0) ztY*cO/ Cl臔/җA鳫R:<656^oPC-XSFS TWF`/ ^8pnZmtoemd/]/)oS_GmY HN !vCAǿ/ҰR:\R{!OxMOZ9^ӎt:iEg/hTt4Éқ:y@+zz%BǓ]O. >К7l慃_J7.IpFW: ċGT( Nv5]$ni@_x.-YJ_:}ۖtA@A]墨@O3/ ]=`Cv^/O^H a/>ҴR:\TBCG_z՗A^3Пg nǪ. }Ye T@X^:ړCWOF ^:Vu/,z ,ttH!tcuGAH;Vw,z(@OF:Qѧ$r<ʹpAh>6&r9:3d#WiO+:}ESsUtJwtW+EA?>acSt臔~M1k02+i:u ΅C>=mKg2L: )O?y_ЗAhK?UaWtԇR dXdd'mTZZʼPȷ/t-9聦=bԆ~ 㱫 #BsR5ʌ( F[BeF2# zKO},t<ǘ1rQFrF1ڈDgg /lK/ h1)!PIL:  ~n\%uYF zDKG#ltI7I RG#zD/"mӵCCBCOhT:1>B-F >6CA$}IJ$@+ @Bx5xQR:^JFW(}mCk:e[iya|QM9bK?v3/5=7el,#&&MA)c2᧌$×9N=vNM8pFWW ztB۽6ڽR.1.1Xuuޏ1 ]3ЧoKs26zh@_x}z-էW+EAҷtzF/^@R@BBxW]Ux|8vt8bЫBX%L{yv+5ow5jtu5U}U= ==JA>賩(=B' !}ÖnH95zވ>tכJw/z8juOu4&v(AGˊAoQB\$(N"Q/~2X:=//4Wy5(B{t:pD0O3>@= Pc?O?,tUE@cx9P΅^a|1n;TF9a̵a/K k}.kKy:CWW:EЕEbcUBGr|бv 5i҉B#z“H;VHYs])O"XM"ee, m|"}6t"堃o>s=" ]簥>l›>Ч;琣>su4?./Go=:mtݏRзs/8p֥͕u<2., .Ǯz^>ҳ8fu=e8vy'e KmWTe: LotUS7m-/Oe)gG } 8Ǹr$rMg6i NX Nc{FޅTBG蚟NA>m]. Gױ(.mtRЯO c]FWz::C\ z元`4 0(F/Bõ鍮t v}>q=fOG/{.rHU$MA_>ѽlGJFߪ`o趡QFFu0u]u)ձB~Kg_htu4"G#6WAzSB5ԑ$Fwn~1-ad/Dz-HsaRaR4O-)gAHϰRzkztgҚ@_x]YKg3fJз/tr-^8!vC@?~Кs慁~# ks]qsM٥ûC yזŅ?=zKC7S'M-/S]eTK@Ⱥt1Gʣ KuY:}WmS+:>ލl{Z^7GFY&v=e__鵥R:ZwawQ9Hꦒ,t3]3eGtg>,(t_җBǿ/_D/[ $]$MB8d + E~Mg~1!!e09ۀt(\Sn=BTW X }iG :}N[!C:-C@"?M/t=MhQjQOC.tyq8::酮$􄣗c腁~{7ßq 7^J]zegYmŴ"-tU2гҳW: }?C@m9l~=Џt: 7ޯ+uz ѹ= ]. 4tCm腁~Zc]_:O%XhnNA~_|W9 Bw1˜',t< Jpo|Ɨ,tq1=LU\q~{o,6TAG^m -x{9p,ヮ,#2^eYӯtZG5kO4UG.zB%vSWhk-JxqBTC߭q8.۴pNl %7ZGF" p` ] IpI]?n]?tt7מ@xtGY:=ۀ8RB*5"o?Y(n7^zUzACGA\? $:.s]FS'[SE:[,tI=@_m˶9/B }íFV0w3h1boз 8rp/q_=bd×хh ܺFtuEGA<ʥ\z(BGGSS#_YB״mѧTq4μ2/$D#BO O=CvYpЕyOu1A__/_(u8d2rᲺBWY =4@ "z9^Xpi~#9bjnC!#}{֞@:ɌɌ$tjUKAO|dFֳ/]m/C"?h̏rtuCJAxh -t(}6xKC~e@_XYO"gJfJSwhߎnG)-g(XHAxez\UUޅdpM6b ]HBW z/H#􂔅 -t '4R/HYpA]ht 7|-t5|_ЗBǿ//ԗ@vO砣c+`d6|wA0 ]Wl^@GHYpc(MK6s(t[t8(tB0f'B *T HUPнUVw,tnA( }u7JA0Za,.z(@p]zU]: }!ヾ22Wp+zᠣMt5$ :} ۦBF[Z4f-t4&'xQ.5m. ^a 8Y gRFz6COw!GG=@Z$e~sfR# a|UHAŘ`_4`,VXd](Mnl㠿09jfwўz^᲋ m>^:=N Km 1 ۀuhn(Z2†*_8I J2n Xk^賷f~/]z/MAp7Zn )BPWh`.Jp7,^8^ ݕ{a6eAkw ][9pЕe߶Є׼㇣ m{:ۄt8<*t{5toB;:FFz4ZӎFttyK4tGJ07cm`x{v0>eM~aK$􋷔ZW-X^mE/t8^ʧSE>ݕOg;tzaCq:_򮕦.9􅁾{hw:q/z4*}#/:ȫȋ>Y{jV (t]aPow/%v\v)o$Iᆯ7GXm 􋿫WXy)o/nK 83У-=l ~ҰRzSq: Sq:tLtIZ PK|Bg6:3lO(tMà϶ai[txFk}qYY^ ={aqVB鶫Ry, G/Ǯ:~8::qo鵡R s3Ƚuxsq\8pۺ` ^a_a+ 9ZRx!:-n]"~5kUt:\[ץO^NzBW.}eStE}o/ۆ:ܪժ~|6:RBAm/~$$[Fݺ~F9p^U@"``R{COvY. izQzX*Jg'ঞPншѣQo8p%>ڂч-sK2ם|.>m*v/ 鮧4􀷗e텁i* [02oEGC~~@6ଋPօp^"=IҞ$B/.R~Bs"}SbhJ RWRGBO4H/T@m˴텃h@* OuR_҅.H/ѡ$:^8Bװzz{О@//W_:_$\ /:|IGsaJ0o\_8/o ]o}葨SG"P4z˰@xcNU0bBW1}/ri @?Bã/ ]/)M8N6s9+K::L/t)) 8+Ng{;hUzUsB!#=څaWYFzT>m %͵;!# ˃~0\RkUBG>:JAmK腃t( 9Rk5rNx5ẗZ::rAz@O3Oԉ5~[O׺NttÃa $tAu }UKAw֪vc|ՍpZu,tllӆt:ڷAW.Z]a#{$'vPbe].Mh4Mux{YֵpB )}!!kճ˺4tti{#:|oT7;~o4\F,t8btQȣuxs \8 Öt;zkGgg(mhAG?p@2paqqS/V3_X/hA>J3WC2U/r/'FoE維[Q:XX~^DG: =^5zv/ʨЯ^1o~9]/Y n/x 8=sE1adTA:a\]F9a,se) 4rYÆ"z˰@xa*f.z(\d^e32W~[Fur'o9`])]8`C,~3'^NwXp9]x)txeYWA?F9]K/ hpEFrE~__3hfߌnF)跷n]tf nPj@Am?w)~q5>F3wV&@.wPޅGKwлMW|+AQOp~*Fý] ]](/W,tΣtQWtcWc}RzIB% SOXp{BW{z 'w.:\:Z*%09|.ۆb:\8Z*6lʦsBBWזtÙk ۀH݆~H9^ܶz?nR:ކՆEp ,`g;vsR#=:~?]:Zhú 8F' ]I lF6AHHQޢ>ZԳ##$tURGAm˶텃J(c:r;mWX^ވxtYu!;0Fz#@~__sFF "UhD"112г^k RBAy4Σ,tUHB ]uw˩.uCl臔G/K }^z?B? QI ==XhOg_|W^b7R ވc,tcGQuqJBW%#  @B϶a-t:~8JV}X^P>CZkG!#}Z堣S_tM}!SHtM!/t f-@L91W o n<Z;:qZxS»֪7 .O_j5E&xgTkmΈgѰ(}ÙL:=[Ӻ9]Ҷb4>z6CAOK/ԗ@m?c)E-,:-E9h[]mu(Eܲp7{h2ME/t@U MAZ ^$r4^ʥ3gќ6tkAvvQWpl(r_xK_v3whn:qdW+EA?/NGQ:\6Z*16iڤQx:^tSvCW떹u)ww.,t"tyA϶KRޅz5Hzhu:qMvz*@m_/ץ/%OcM]`p<Өj ik XHAںkvщF&Q/F uKu4tn鲎?iW?hވ~B?*enԱ4@+ @A1sk& l\lLBS_\m]iDJApD6*s66ApU~]j~ ү[-IwqʻpzkTGFt4:r̸C9~4u?BGSFHOR{zth҇u}txW:l. } o/Ӧqztjϲ8/}֗Aw4U讄}mV[cCmW!#VcCU/ Ƕt:5k: Ƚ\^8莿8W,tp:,+A9 5d1_QRۂ/Җ/跷nS?O(}෣wv~2B?*3bOUݝzUB/ ]ueb9܄  ~UWzUGA5ݺc;v)tW慁~DTv'bWY݅@QpU@C_s/]E/ hwaC. ¶0RW Gop_a0(@t6sCZK?􋆌~2rMz( @x4jBw4 P4}#}j1 mTmDA_m!㲡6*t6vs wnj7g|c`u: x/:<5xw]wueU*F zUbdo8Igg(mpAdz. =:^],tkWk =4@ 1s'G:H>҅>e_4UW.:/S xEl^KХ4 BQAm¿צ~H9B *ftzc#4ƛ(u8b'>4-RCXy):~UgomÐݦ0pz>@9l( AaaRg;2h{ûe|/[B;*tW36*t6]]c- ]-HpBWW m>^;:2нuݭ RB*5W+ z]a᪗BW =LUFF {g>K5kDXйFZ5b'0z*`d󤟵B ]txV9m8bܶ2rR?j EA?m{=~B?aNj/=3o[~miO;2^s tǻMW7#E~MgSndtJFYY4t'^H7St,tdU2@_Cc1B]>l)AhЯ2/ OfɌ,t8Jw_^x/:{#ߺ7bÃv ]v(9Z~\ 1U# ^)va;>$]CYnl:$$MB1+`]i B Rz66CABW(}ţ1T56G݆Σ3/n =z}Bx{ m/ lӆt:4=4(-u4Gm_z/n鏹vt@+k*I p>S]֦R]tŃשC"G&-n [kY>zMzBGt`Z dhvt4bߥ֪ }#=VsX |/=⠿09|mk2ч2RZ[KUK!mÛ˴ͅg ]F “]c)Axkl%X0z*@?pwZt,ttуFuUZ/%!6y~dQK{5.;zgBpv3гMx{I^8)uhX讐>DaS8p6ЕMO<5],DJ2ϥ8޵VYp5B~ڀccC ~kTzkDAq?:u?JCGGG9;w},t;w}$rtbchNM%u9h])A3]z;J!_W׎BQh 4bz(JgO!M"O4^<:}#0kF`rEQ o3ڌpO͏CF )^k5-NK5-/BEWBG?蚖NAiPWt*(Y#,"']?eaÝ]\]H֭( }Ӗvt[4מ@_㲮~eA{zR7[i]zх*fI$׆tz!P@6K6u)AG]o(/^no ]o(_T ±KUB@?}Fw˺Be ==C{:} By)P慁>3UA_Y+ Apl+za6=}ԞA?hЏr/t]="Ee"i 㣍5ژ sዺ2E= B?pv.УnhOu: hFAG/\wF |,txkk+} ˮtnҷu}t<` 9]4Ǯ2/c=q1 ۆݶ9Bד] zg–tywy7=B0г# .4*tQG0-tԴ9|-sG)MxsY6pBBW}s# XHA? iݐ:BW# .t]KSo[h1-9tZm?nK?t|U>JA|H/|8 :1_ܐnH)w8Rk{a t5L6`aCt4+BA |^KM9胀\( NZ%X] o[9xЯ0VWk5~,3/_E$rtc#tonm_zЗAC0E. lλu]8x+b'|} vLN!cX(}BʤsR'@3mhO_ԗA_m?˦~H9pW4x񥇾t'yI^,tu]u^α +t]֑AAz[w]q]G39䎏9Q;_a+ c؅mI$}KB@ 4`݆F:zQ`t11W4tRR]wq .-tBW(}㓼$/mG ]PE]U~_DW:tqS΅C\聗]P=_\].X݅N@ݖ9hgC7,O5ceC8/b+HA_d#_lALFߚH!?~"?r=좡-=O63zmgܭ^蚜NACt,t|O,t;];=_8O+tMcGYtRbkh+ b yÝ ](/^ԅ^ԑWljOţQ n2ƶ,#}iBJ0_t uÝ/ ]/(Mx{6? rퟥQ@w.\w,t8^ʬSУ-=l ~1*xdg0z:[; k~~ vϮo(t͠<ǞC9v:c/t)/99GG$9ʥ>G$( gs, }si5污\#_E~uu$SB)H5/] /S/icc^zHӺNtRk5|7*t5Gp l( A?pv22гu/L AGG>@_ut{Yݺ:>@5lh{oH ]oH)浦yg^g^txw- o9M/se) < G9pOBWO#]_:]먾3A޵V=v9/I/u09<^B#ÑK+rag;vp]B }w|BxxSG>lKɮBW>ۀiC B?:1Whu˖t_F,t Rzͻ =ս~ڄcS_:^z!T@/텅/C t'ouù7WzBwp:1_z+MC𗞶sbBWt9jBO4d,T@//``'ފLb`4d,Wv)2. r\nj B ]u=GGY=@kG"z)BtO;iu,txLiz6;aK8E򂃞/./R,t"uyAA],t1@1 ~ Pz @Atw5E4|Bg6eA_`^`P7>?nOgv ]vI HN _ݣ::|1}u1MBxô{0WuIB!##5|)mbR@O)M5d/8BO[ D3m*A#BWNB_zKg2bo4d,hR腁>ѧBF:Oӎ _/(GKQ: ~kTzkDABo ]7F9GΣ Czm|t^_l럥LZ2W-#uz]B_^QE: `M0 ]M0)6AIC=:5ڽeg=0ߥ^#z銍6X)['^Su,tW >(Wh˦bv:/w m1M7 18424R 4^֥ۄt/}L7ċ?@haGV6p=Oa)=ۂc}S{΁%F#;?@hj@CPG;h(ÎBI:8>cݧ' ~~~Qޠ>Ϊu8f+a琹m9dq?kמ@(Q J]JMAxR^(\;d6>>Όf~W8fG1h{ @x^Xp^L{okuERAOrAOU0G^UaW{:m}2} N!堣 t=,/xa0BeW{:}RkޥrO[`@`w.OOb}Ci^V,tHAW =H-U@_`Zf2BFzS!#}6et^8SSO&ZMf×C4tUAA//vJz)co5:Aףv:CCAmq8ߑH)CZ,t!$tt䃮9.ڽv!UAwtL-T yj/|4 :1Qk?6mϡztue&;:MrMz*@x2l^ m/t8RʼPWhq.127^5X })NiBW~4[GG{Zሃe@_9ƽ+AG\Urx}k=}Ov֓]:<5-0__l_ш_.(  'ܶtwUN!(u4bgSiʤs wj) ʤ1Mg/tI,txkk+ ZJA˶텃[_:;BÕ^J/ +Uf̛(t>&ױ-m/@_ =T@6%m*z'|W+%{oSnSu /שI{B{R l=)nVjFA_x)_/B8d\  x{6pͽ+@?/GG#:|Q 'K 􋷕R,t< p;<]H܅@6%l*v×u: z6IOB׸cz6R6TjAK ]FP IB?J0g0.tFBߊ9B׋# j}E˦^rᎻ:l^8MVj` 0HuK?s +t:[[~ajq5Lm_ԗApv3/,tK =z/iO_\O_B?sn+KAx%2/,нth[x_)^ l=洡)=#H3Aۊ,u駕τ)ẗ́!3a ]3a(h[8KGcIX~u_|rc^MndYǫ#U6޳G`KbcQgNj}>ϳE=_c9?~zoLZJ`o}Z;9])Vk5jڄ7eS{:Ykf)}TZ[*栣tWAx{9^-8pmW{:ᖙV-3Y9OB?pv2r^R =ᎼVyY𖞟z2G Z=`_ts)ͅ>BoHǰR s3'^2^:APߏG) .zA7t6o|7A!tQ] [)ja_xhfL:|qQ躸;<j. mQ&=ڀaCE:\0T@COh:1гMKO9h{]11kc2QAGG~?MAmws(!3MBm!㜶2r^BbRŤck ]:wz ~zW7骎A~[k]9N\SօC閹t)1>F,t``?(t=g6p}. TU>Fk M. .z]ӮΣtpU8JA_ѵu;@߭9Ƶ+AOKߖK_Gu:Cz뇔赭(ᩌVSYo/n텁 ZkU=F +Ո_a,]apw'ZMTg :}PtEB9p«ЕhȸBF^{)Bz7^>GYBo :(npSGQz]bY,@ ݭkOx{q;^7١f#lC,s d79]MuXh̕b֕CÝ ](os +t:k7p ˶vs2@ٺ` :cSw m/^tNj莫RopBX]®bz.i] P@Buu!M oo!ݎ~H9VzĈ>w+41pŢwXDO(sM/B.U7z-s(d\dLA1j% ,*sqIWFIMLtlX@k{Z]\]_Am;ҎA\\PУm8bvs 7^S,tU@{W? Ms^s^CU,t~U>!.._4\p5\z_j͡:뚦KBm㶩סIpv~ڄsǦtUHGAm'kC'R:tt~-3нmxOw9n=m{zҞAQof:, o/i[ =Ҵ)=zu]t;CZRh FAGFK+BA1"4#TAC,# =4@ 6m hC$Oi,txRZkX =ЉmыTA ]FhFBxO;KO},tKO}xWvUx=ՌC>Za]9}FuoAw! SXQވ~{o̽Zʽp1  Q0w3' ZkC"}UU Wk\=}ïj^q\XkUBGٔ" jF_օA_%_]<.⛿$yIdA~Zcc]q;};.OgXx#jBӿN2xuzKXj{ag6ōFϡ]IMK6s;uDӺNt8d,t􅇌2=D@/=~;BCL ]L(oPG XB׌S [U :<5㔂m_җApv0УM=l ~%(za'^lb#zig{/& K/ޕޕx*^{u7E o.nW =Zsa]9u:\[%ã7 ]7)W6FjxDH)}Wv9teG";:R'TB_hޥЗ.DӺJ2*#^e+E} o/ۮǩ4t8X1c+HAmym;{;?_LNM&G'n=k-腁xhJGY4*R#}_};Rԑxo1֪7 =A jA_hK-U yyUBAZ,tt})#V,t:<ػj7 򠫿 }j:DW+EAZ/,tq׃]^u4̷+g4:N,cc~ہwkG =_kQnG1:=KBO1~Rk܅Ŭ0сRJ1'ka(sP^0X}XWOm<:mG9o/\ Ӯ]4tGϣ:2q+dd/SOH]n×uSu$~ZD@wej^(7` ,tU @AOL&nS Φ B SusYgOtU/i:KAW/i _R (s]eP7^_XB#]0Xsuw m4 Wju::A׌Fz˵rK[%Ё霱.ho?0[uG6Gv>JߥÿTaju/BŢߥ_¿;'7sb:x{e]<ߥ߂?چ)j,l ]=p3T3h[g[wO[:ƾw{''~i~ ?|(ɾh]5m?~ty~~??Ƙ{M.`jqw6V\sᇧ'r.z~OUG s'&i]=ܭw_?[_ꆯ`~g;ގz ~~9O^ڱwCzh^ ~~ÛOh|[yc4D',~xFjƼ,3Y=,&,B;RURuHw|8NpYwõlZ{ߥ?J;?V}گg FGۄ.@똋?>Tg ^,̿l};.~?g?7>n `W7bߥ:F0_0ᇇd ^%KHݏ%f\GǤ,~<&_$cIg<=K*I4n=eB1M3m%P B3 })Á@Ǣc HM}H9Lsn*@VgD6sѳQh 0=0hCl=崮˴元KOK'h.[:r_AWFʈ~_<"|}ڧ3gh˜6Ahз^ gΥ]:[ڥozB ]iu*'Ba.rF݆>t<:j/j/h0LgÇQD)qkGqt:Ŵ"ŸдO(} `k|BW o[ce@[Xbe ]e(/..i:~RzBAxJeÉQ X5gív ]v(/.=ڥ_xyqZ^Oڧsz~ܮuBG\IF |q`9Fz@OwohwCQnWձ/G/=:}~F(=^諡Lt9$]J 㶮 # P @A?~7_,"ۄWt5*t5GW0-.yXh3oޅ裗B=za狃Q`B{z0OFOW( ey g }F9ꞩ. +s]1{tYpb+`,t`иٶwaûEm)[cG[E/% ~IWzIGA;_F.)oy_7|,u,o ]o( ;t$.i ;].,tuIGA3}XL ]I //R }>uyB#/ }_7M/h:RBAxuߪA??{u]ui^az k[ךA ]]$tqWq=چöqTgQ 7Vǯp,t|ڡSУ&E$#::\A>Db5>N:OZ9&̵G琣g"џAڄyA{0z0Rw}ߋE)MGX /R|/fk3 WV 2m7 EPnz_d߶A3/ ]l꒦ŅC~ cц~{(6AP~2YDwO<{º,tU-:**$dBS7n3&\(/x ႀt ^WA@t5W.tU\A*H} P ΈߎnGI޻\ڻ0гmhu4ԇ9Kn]:69>ljs +tvTn:]Jf(E 6۶29%]뒎~F]yl+@6 9p׮BW. z^3T,t_-8\.`g /?BApe ]Hr^ZmUWzk˴@_hQg:?*CAqM7tMGCOx-{a+3V]8v4zƪ=ڄ5~5=hMg6AH=B Xb`O>_c}zo9Bt 졲:,tN}64qOS#!-sݐRWⲬkq}^ ]}^H޻,ڻ07^kob_hh@?  =m>xBKwJwSۡ::~ۄ?צ>tF=n;MSt e麬c_4 PWahhQyA2O9w9\{zBOG /y `/K/]:}%0V L:\^U^~ZgA.t:~8::qнR(<Æf:2'JDi:\4U43=ks|YvtYA{z3н]ޕBBBAxч,?h,t=h6>mhs7e,-#=nB 7f;,tt4 XHAxZoձᴺBWZོ 1ׇ{uWWzB33=ks጗BW x)tePo[0%tzgk(=2R*#BwxڽУ 1!& (t]_FFbyZ^XpgBWgi l^ӧutc]c .V*FA_xёX*:B4C] w,"g6˱ n t_J4 .+Fo69649pn+o~_LN,t22/fzjL*CA-v[BgBٔ/fzj3^6b4{Џw9Bכi l͸ӆ38pVUV }፽RcoA/ ⎁"wH }˶允U:: xqнuxyqZ^8݅AOx22ewCXp+L.m^ѯmtn.=bLSCz42гN649Υ̵sa@C/Я 4" %_pݣk@_c\zBRw[0%t( nYjIBR/q,  `;|8 s8 //a允~ uy͕P@OtZJ1Gsfp95V9, >;;#:ZAW .5VQ:zgΈچe[ }Ek E9LߚtxkSѪ5TUI DN tonW BG_G?zMBG_G?zMA-˵1 碴}et[Z^8hEgnS]a[ op\cG\QGXUf[2A񤋱tB. ]ID>$xaBg{Wm3A?hݍ2У_0}D9h\UF)Et*Bggs,AG[w?j@ߥϮ]: = BOe02GL649h]%F(XcUv~EZG粮i:e\2 xz*@py,t냮Q~鱫)]_KO]Kh mkvٺl] zu/f }Ѵ)=5=-WoV7BL蚾t^,txO( O3ZKiF,tGϣ:r3*ԝ}㯍k#ziFJ3bv 㱣 #޼ޅAp*@"00PdBHpw2Ww: mM]׶FH pzz Dv,:|-tE)ub뺾oCZ[Rԝ iGRE#~IgH2G94_Y mm(AG#eЏu9 ǖf:~eTzeDAᭋޅ~v5[ pWFWF wBW(sݭƀ1 n]jMAmk6s^^lLшC&r v9K.,tK }ގmSf^U[B ])/5WuGWu$[P:ܥե誎xIDBW |Q|@ݖ9~Ǯ. ~SWzSGAG]:,Z\8݅@߭ë˶元O /RWuuUA__Pg4e^ ]^(9<ӯf:=ѷFzk@O:`)c =ed}-sRg2mjqxO; LeKtzABLt:^LhueBW43ݭksp; 0o&fR,^a\^X/E 6hy_/ťե4 }4..e0':zRGY =n(u4uu8.еKk֚Ba.ri ǖ.8pBW ]ܦ.tnWn=Za]RzGш~ۄ?צ> |!M}HY.Kizv #08裡K!?.̏v Wu::@FlhAu ]ٺ$tE`E }7xM{IQ?i:\Um+ԊAԥԑ/j,HÎ> br{a㻗 =_S1Fz[ƴЖѾF5T}Hh^ct +_XU`a]a] l X p<=讣}˖t~25VeY,oᠣtXZU4}~@wa}UzoHRzu5Vu,􀗗@m[kC[F:AW: A+ z^҆v/tƃW$txIOӊN ^CU1B>D1ljiW zBO4R詸 }jzbk [F,tbbt:A׫: ]ÕB<:2:ZcUuv~Q׭,t\Az k7|4J:q:6ö> ӆt,txx"M!OjLUb_vЯnG ^VW:Z\U[A>ZyA ] ?M_SOYpBWF BP5'_xj@kх4Qm::JJmF #//3; s}F4YV` ]t l i]]B }骎( SԱ᜗BW }ïGQAce~ciF4# iF?@miy;wqs]P. n%Uj%EAx+}JW(tU'xd +ty~( +t]QG;h ; p:҅:&zYwM]q^^[윥;,t8QЕ(MAxJfëVn w,t7\FiǕ&Bw]:=ڂ5%̵{a_8\1FeFwiGtҮU~h_G::\U>[GF>pA_2miy}0 ]}0( oKmY[i[urO3[w'u'u{XwmSmwL?̠-b w=p͌T͌˭y|ܚ;~xOñwx{>f-(7{~ʻ~]ySгM"0m~"`ߡS-OSͻ:xw;K.9m|hɞ @Mo/TǬBO1E=?@RW) x3?_\T۶8 7,t~>hzB_pmy1~VzFA>~"q?ZdFC?cOWS:e?eo'߱$ޒ,t4ũ?4FD//vqG۟߬5@W<ŧ>g;[~O&Whj]6TッmS5J3[7rYW=?|c?O4w/ G=?@c?9f@eнpywwBdz7>K  Uy:\ ?U dts3zG3[~li[?)tuago #nKuo8/E /ۆgAGچчms>49/FFi:}]s)b.z4ۆFxBgXA.tLt5zBGΡ[G\[WWb,tUbpT ?b,t=bO<'L夳 ^Qt:{Yڽp_l 2,0gC>MA9  / pቾLCp o<ȷҌXp]= EzWz:22L+tL{pm+@CF7,th( ^}H9$|B'GKwGWnh{(@m‹˴Ņw*tu/{W,ubݻ ]ݻ(m}:b,te1RO;h+8hb+Bc酮X:=#j:B3/a0e$txwx7 =zAA]],t8X0RG;h; v1'~?zGY UچїmsܮBWn}F0=}>~ڄǦtc5x*B x xS/}CYkBk# 0UbR|K/tKggo][[ASe^I tߒÆ-tk+ }/s% } }FsR$w{)tu{G3!OxEߖZạF,t|0h>MGΫ i:֨ֈgu)mzv|a6a0A?Jc>lk3'\nƪ -7}=0jz`~ISw`c#UWcիp,t胮Xe)uR(e]e }˵元r-0гM8ʘ6e_xyIZ^=jzxj_P\ƪ.}'1u"/D:N,eG3VyU`؊b 1POh86@A5/b/ =[D@fU L:QJmkr_\ ]iN@ tM݆t:|]7u]GCG2׊ m‹˰ŅzU>]5VXh]E) .]cUěg22)7[F,thu4bt c]a/Z5F,t惮B$tCrУ]Cv!e6j/P:tw. [CUgAzhm(B02n ctOOњzoB ]FXK0X=yہێt|MZ9 ~496!ury v`#tzGш Rz6xisK4wǻF,t8ЕEB3 ]]fCY^Ӈ] K\y u[u4t8Ua^v/?[XpX֥ Vs w[pRhxCE7TC(:t9w!F ]F)/uG7!-)}T+:>ӧf: ^NA_uYfEu ]Eu( xM6sgeWD3u<@?x͋sTxӑj:B+UkkM^oꍲ{B׽ؽ\^XpBW# \\w<]:zAZet֕A?hЏ .î]>bѮ2WAFOl4@mF6aiF4#:֘~ZkК@6͋\ h ]8=@xK*}BK_J_REX7e ]pWtXpݮBW. +PE#:\YUY~}z_?ህ ]# j˺f:=F Kvi$r)@y7 B3GY,&_V[.n]{:ugC~ՆmKAw32/+w'<ӯMt:P=z]#5 @RW(tU`ߎ5]m9utyúF酾OgO'H"2jqa6ቾljs޻, ]5[F,t8qЕ8JA?/FGG#:8ZJ;r]9/,D_`z=V7 ,t¤߶}}:^gAx㑛j9DW-sU]uprRek@x/Bwx͵Ud<(Xo]v/ Si&z(ma [s4tN^-^8^b/ l -u9pBWPcU t)nk\c֘G?J϶>mis2>(#}Ek_P7\ƪ( ޼lޅA~ڀcC m & }#.u5V]Xh]u)?czAmF5֦8]ϻ( j BGI?&@8ZCUqB>]:u)s\ꎩ. zЕEB>jEg/<5],tʺ z+A?xn8bñBW,xnpvq]9Rc元~w1)C|UpVi,i9}vЙ>tEC~e@U?BwE-}:#}^j*ˋB$b{a}[B砿09qqӾCpua;CY$򀷊a"":<ѯis^ЯVtzWoݢnC{t:䕄>ZG/ְ :|IW躤# :}y]k*Z:zzz8ZۆGtZWZ HMH9ǎf:U󂅎ժp,t8+ЕNAxuչxeLB^zAx .P*@AmOv'th戄>]{y ^v/gx /z@O3eya'|8::1нv;*AOH 0tG#/0~YKu,tG37TʷJReR0]0ip!LW!L MsᔺBWJ=^GCQz@3/~WW,tF=B/=, >nLvY i@_pn,e/]⠟ѣ(/B4C] F. %̵0/(:-ՖmҴ)-tekB׵4xYw>w7 !-tݐR'N!eK4|1S󜁾^].,t4R抻0wsxossiMǺRG9p5ƫj4U.uuYե4 =Fon֭3=j3/:zRGI2/ zn H]_Pг ޻.􁧎P( 􉗑ʩ2R,"g貮(w)tP7 3aff$"g6ѸKp +t܆] tAO8 v1У=.t裂߶ ޼\ޅAx3L5bOSO);4i:}uj pgL649b|Џ wXX](xxa090Bgk)!GoGsݎRyN"ksf1Yd09n:rz9ZG a<6aaBWX_`.0(7שjAi҇Qn}1^_^ӯtz^҆b/tȃb# :q܌ƪ [B?22g0!t:!-t}H)u\r)-p4-8h])cr]e]tVt:|2rƪ/ =`WX(@m׶9ޏz~kzњALO]5Vݻ8H"7~ItIGBǻXb :}oi[2wm-4-E9.B F}F9ޥڥ3ٵ\5X GgGhHw t9ާm9pBWt ۥvi,t<{e=tLg𚞶sԋBW}wzBww.u.uw{C^X%FK+tKO1z BO)E$:zsuqBW4 G,ҏ:wqڻp7p 0CuYM+:m^^u-/tL}L= _E9:cL1rvRvR$tFtX*BaaPi9Nx^, >@/δ zǢB 8K,t|M_Z9m2Ru2X[B[# ## _0P#ا_YpQ+͈ma0%͵н=0 =Kv/ &z"aS'RQBwE tӆv/t8^芧S~GKwMC*s®Uev ]v)莇bBWmư #. X* HA/fLgK5 3< BO(-ukD@&:ӣLg6љæf:}cq: ~zBB_XֵKBW]Uqk@?/v/G@ws޽K^ͿT=Z%A3ZLF{#E/ 戁m/"me>`0ooF^n7W䅁>ڻ-(}//Ӻi[ }_9+UWF:xՕ~~/ ~Pz@Aw|ڻ7<ݶ9=[*@qP܅E/E*BO4S]xfzvehW+ Grۂ9A)tlݵ䴣] N+t%QW;VqV5.t5ohne1BW̅\ ]1 GQ( 7xis>N He =B1/^h$ ƅ|1S3~hiGS,^ }jzw7xyз"/ !!;x.0 .UcU<\ *PBG _>*|IA[Xdt;\ݥƪ xyЕBA6 @P=7"tm FAxyZ^&|"M:r J00GX5d4XGQFc( B0}Iu5VIu,t4AWRݤ+Ɉ ajAp6 ,t8R芺P\ƪh7 =D洩{#j˦f:3}Lg6h6Mgvtu%_DzD@Z谸)-kc_Zz Ut9Pg[DO[ \Үb..u5V]Xݻޅ>#5VmG8ﲦ껰/],"}uRFzaBOE^nm c-㱮-#-teRн-m h]QFzFV .5R*5BBG ]'Qzا,txuI!g43J@߽ tq݆:w)t](߻졽 @Bg66!'z-]ki«j,t4[ 27vto>B~lkE{ _]\{:;i;[񱝏m~~?)O|F_Y=?8~~scC⍓}~qk߱I|*Iuxo?oV[h͗FO ou?u;{~l*<;ƨ% =?uV?KoN;_󩿀@߱h|*mx1]oA$#Y9w8XñoDG8ygos9`Ht 7{~8~Oe>ؑ`,orr3YAÏ>Wy1 ~~mtnc J2݄JDٙ-?3b|.(cH4T?@~(4` o& c@%zx 7[~'XBʺ: =?MB}-?[X+.h֝ -uX9`}(~//п߱+ 0Np gGhVhe9 ߱ )|*!e#~pۂCևBW)Y~mpnW}W7 7{~և@+fac8'c/n[+J? =?\~OL/w]ZwA~0FwAw.t-?KRcu= 7{~X*;v]~~^vA?~7S&WV߱8?X -?i>۟:Aw >Bxc6+6?V!q%~GCT4 0_45w׉:qgn$oO̽5rEG ^A~'#m迱qFC3Z ;sDUGp<=be~0pt>w¥~~T8z>/@k\`?@9m|HA:AcH 0-?xmۀcX D`\x Zv?3VGOcxVPe3ъcx +: F-?iO9\gp>V{:YU~xVPDz M=pNP*'huBM~/@=Pwǰ߱\ v?[j"~U]`ߡ9>5E-X3M;;oo~kn~:>ݏ@~~??6'\~۟Cǧ{^?CoYc?Lcs~!S!?ۀWmC;߻o9 xM?6sSٙpj1LCGSQ9{kCÅj 9ZǺ }+@C~#T2~~ 4?a*=9 0osxs?1ߡŸ{>|G·BsfUV;}v|G3v4,txGSPc;?>}̜ǰlߡßh^^|~~ j/9BK}m]8Lߚbt:GPzDB~ ]5d(kUnOWc?֞ϡOUcRc?ϡO5_cx5cV5~Zz@_+B}౗5{ay5c-"B؏swy=eYjyahkms9{9ڽ0нmxyqZ^8Z9ЂH+L8 FA~_|D>|M}DYDO<'uݖ.t,Z:RG0!t:>Ӈf: ~UZzUJAӎM}:um]_7[.9mC O6X{ۧ[:\U/Σ( =-0/CYaW3~ۀgARS=4Hӳk0zh@.=v,tE}y9B{zQWlhM4XG1F:~QJcn[1r " {de~ i p }+@wfaff_f%) "~m(t ' #S0X>=Oggsfpj8 Ա>^BgLO!CUCj˦f:~u9MApԥ*B!tjX ǖf:k5ֆt$à $t< p-SCUdDCtX=a0t¤'NWcNBxڥGǃ+Bw4Up}^j꽐\\$D =uU@m1m*A0WA2 =F.R{n0m[F:rO~ljMWC]H:Kn]t元xp)R BGKa>*IAOJAw<}tGYh])'P9*g,t$t'ϫƪ}ud*B떮H/떮huu }//ӎ?Ӯ> L[K%(utu9ee B/4RKz@O3 \8&<æf:oZcՀZh@۾X}e t:}x[/]t8ЕHAxe7e .{jA_/.K{:\4U4*to\*WBx-{a˱ Gt / .t]JSoC_9EX*At0;|0Js觷Nmi3Gh  vq҅T ]. j e]Az˲@xJ`KVXB~9 w҅wton^mm]]p^XB #F:<ѯzS++:9tQJ`{o nK s}(BKJݺzj@ŧ.$r8R抺FFgR  P @A/5~~__/(w4rWG##/n[zw],t< wq/ů:F:Flާ 9pBW)z6P6ALt0b(W(tU 狙 HcDBOʺ$wΣ,tE]E}8h8Mg6y~lhs/zYWWu tǣኦBWn:=^D^BՃ9>ϯ9=ۀ.iC{OFi[G#}~N@M;zM}H9D/sshݻaS{:\mUm>Fw ~{l]wn %64m*͈A?mT.b,te1RнM4{ݦt|ڧs>=Ogu ]u(>jB/ЯvN@:z8n]#BS })^ ] hFAGs\ 6i[].Ӯ. gR ˲允[ۺ>xBgQsqR3-[<@-c֖1,ed~ksԳ]9|?%xzKC޻.}3V1FzbW?+ h^ڽp5]k:}gx =PJ}7;MQ9\_H.) w=cb?ץ{0[:+!t yٺXeޣ t8"mm --ۢm =ZO@uy*ׅ>6A\CI}*OBV Xb`}Gwۂ.ۖ.tG 0O[ޅhCA-ӞjB=X56fFUo`AW m\ pzQGWtPXe$BW}b@q3ڡsG0.t:|}Q躾 Ù]SuH 48 9ݡZGwsYGu2׍}/.ۆ:腄?z)t=zac[wBt^HO i@w3E`7e.S.$ ץWuH`sgDOASBz @@_=^G/G/t+ p.K.$&<ͧMt:W,sm xqY6pF#F#$t:HS_Y*4BC/Я^ӏt}4 ^]\G# y8F,t` ZPo xqZ\+M/Hx `_4}D9],Ex$}wE9`*LBW }A=e5]酮t “Rr4 =eYhyao(ts|1ӧf: S3BFlpAt^}:}uuYB]p8HYhrW+A,ZV(/b. = *BK0J0P/^ѯ*1B׍=ۆ元=-C'GCe'ZSECuYU>ہiGk:Bڽ0W0-t:\UA(AKJ.Ա^^Mvd\azHú>–G?a)//׆k)=xT1 ;{0j0GonC:ڋAW/^ _X.e9r(賡A1M1vFe`ae] })@pu,t|otQ N+Oڭ<~o;/:`AW5:NA; z#>v;BP5E9G`"0 l ޭ-x9o\E޽خJ!Oq{ix3-])EVj] g{SV\rG4w ^6]Իm}1Gktk>F^,tȮȎJeM Ms}27\V׷H\)莎?ΥL"o̟^D? cM :u9ʺp_CXQ׉}T7BG]fGAoѬ)AGG\MBAuq/i؅C~4?:1bAQ( LZ1U*iӈW'I ]3)l}:u]7Nt5&(я΍) HYI= ;ՍP:/0׋>+>kVMbiCi9~wt(ԑ4 %%MB!t^̡ISmX̗D CCi:/Er!N.~ķ =th4U4JAPm+Td?;u]M5x%>akщ:&Z:uszFKtt8NOtV&4^^VWBDWBA5^ؕ^~xzk:}ӺG_kO'K¿@ IײBR~J Vj^W* Gx~^:'V`{W>3` `;>4?Nt ?`iMto@o 66EA_˲텃.}у4׹|ná6E. r/ [ܚ6:#ᒺDWIF~ThB ]F(^е]S5lH]/R z+O=aSk Ks1> e#a]#a)/3:SeF,tṆA4H H9p;DCx{^D*`;~.3;u= m}qlI8s= (êt:t zTI'?鉮'=59Dו $U,^ /:\;^ :|(u㈂~+qtED: m/ 1Dw_Z̼Zse^ k7ƋEe\nUkժvz酄].t](ku] WZU'i4mӈV]*c`eK+^.P }/V/tnU. sk FnGF ɵBdzGtz MsўFz1[sY ]cIhхB# zZ ~e/tMf͵0G2j{P4]b, -kӖJ8x좩$ɵBG;^X=D=iACD? 8q4>Tx{Vp/RO2ד@eu~mGG t醫~JCc]!#}O'ГB_!F/bg- g%>(44N͚t:L9ћi9@eӦ9pߋDW s.k)Axմ>qPAG&FRнt8֕s)ҏUEt<`< Y=@.a\8aa4}?8:]H聦=`2Aw4Ø #A˭֗4xBg|B/$.P'\*^Hx2p:j/bM]M(44Ǹ59so]MXNwm x{960У4#wHtu`{^xU 9\8*7pԛ GY3JB#z/һ &v(@5/>慃DeOO]b%u: *F_@4iߚ&B`&`ᒺDWIKCFGetױt<@?BgC 0YpDWLeҧС4>YӓAx'xS;~q0X =!MR;F,%PzItUP'^&}ʤYpDWo zqqB?>8T}[:@Awqc$o#ͷ0k5BOH{'cx _/ 9Nt 9fG- ݣZA_K ^:\CKʥ)޵kGF -:5@ǛS)) }b NNIi.B }=c4 >Ht];S:\=YD5 :zC^8ܥg!Mt!ǃ} 7ɵj:B腾-@oͺ\u,t/^*ޭ ެu6ε B_t @%\K^,t&BWM: =4J0WtY׋х:3b2ePAG.tQ.3ʵ*3⠟qQB8|: TwSRQV o3/" 77ʣ)[WBG\BAe֖JG9~;z2;ҹTw) ." ]b::BR /,t=ѕOOMjSB'DW(}U/cꅃo)eⶭ`_MOt]M;~hq``S]S(Q~^YKG_Z׋໣(|׻|zxo馭A>ehkϢ9鳈o-S[ |4<s',Z4enks×]HH$t/݆bt)^UE/tv1UHAK(za]論HW)D?ʼ0[h`5JpDW wBq#{ӭt,tV7UKA˴腃Ot 'o4 [i* ӗ-ˎtƫV5 3Dw2\^Xx^8o ZAxBǣPNAߵ44`՚F:'t zs)Bw4ݕt@Aeߣ(KA˰텃?C7H)﫻ᒺDWI =eZ(va/3~xM,t ` =o]tXtK/bt4 njMB_xXB_A]/1wmh{᠟G t/ "uk"[vt^QKFk|y }FaKFYk`k+\/0\ЗEz+<ȵuABz2{`.=P.^cu>QVãXh.BW.>FV7X~Nz25ת+}^r5^8pĸM#<省\;,t腮$t腮tP:PDv2Ɉ鼈]B"Susr9:2 z+ o͚>9h)݅R:zDsK5D`5>_EmÈ>VVYG\Q:}tmvw݅ˀ/ۆ2/ێBF]4 :ڲBWn )~zr8:8bGp6stz1{ /zU~NT4 лU%8݅@]}XUm{{AA\$ӖE7iG }sGs7o;ܞ>ת== ^\ ?ǺtcKO:=yao8%*dd.t L7xhQ:q;(G鉮(n討NjCG)8:0 }Ձ^{WWipܸ)pORQ .շUtt腮٣t/hpS n:敄~ }}:#njHA| at|pF:uFJC/&.R>Jj6bHPD2f :(|sճ@+ p0=u0MCˤ]e rY\8tu g]F xt/z@?ǚ9 ~[/H{_p/ b̰R!F:W;΀ 8=N@_WUB]V&zP͗ۋKSA_~JefXk9A;y /Rq/ ħg_YKWeHp,_K7^ZqTӿm8ubν+^ọb~kKÿҎ/vĨaO+֞ӿX^~Mu&ύm>ү^;~ o1ܱ^]/]6co{wэ?_[kA_oE!Y{(Os^~ƃ:a_zӭ?ow~t;`oW~QގZ{^ ?x)om40 w^J;cm;h!_J=1B__eVmgT˒e~K¿˂c&Kxunm8;?܅8^ {W~WvZeg~_j JBix/O7{[8~+tZy6C{w[[֭4|t'x+ЪO^_Xu/??v=L9~Vvl~ᓩ|i2 KB\pߚ B/%SStv_c/ZCetCqz(Ngqz(Ng3]3Oz9 "=M_,t)_*tsp/4Cx%U9%%QuN,tL;UMA{=G/S ~SK" ٛKAeym)A*&[ 'FubB'[Mz/RЋ~JǺ2t8L?(A%F'ĈHJn$-KT^8Dj:\b*17EM/R:i4FBtRk= =tW] Q:Ma]t:ܤ!kgh U8pCx!ßCǿHH9諀 o"]"O֓AvӽvBt.UTGAІ!Ԇaa ?hj@CQCQ}Zkm^uJћ5s ]uSͥoScMϵMg/&1Y4D 0Økm(A0x2 ktkkt5@wxd}mC_ҧORGGQ: Oӎ!Gu/sUR ת'} ^{ɵVu텃趮(*bdm.tBw{{^pц#0{[`ZdHPJ/Z뺜AwtOOtiO1jKXKDCm*t䠣4WA> Ô_/sL^ 7ʵj*BoN'nNST*ת f+a{v}[=;:\U'Oѓ@֋zޏ.ZDW:}T cTdp[hV}4ʪsK+ =4˵L>hOFT}X:nBjBBAO'7Ot52tX67nڑw0!tUNBCHI;z'zE ѧ0У4n5q`~::_GBox`6X}+Ngw|tvDW( .MtRG0!t:\>*O˜A_xe.^Xo/\ }֠:2 b*6bG SZ8 22Уt#|zR>ji(քAhȘS!#7kB/4dL4J7'V@腅] YE5}rӺ4a|STu:<:05:^/k }>_X6x~u/ ók.HsbPσ Q~(Q@1aa8">軖n.A?G  ?ͶtzOzГ@e-w Gv[Gv4t(UpDB4ەt}T44W@_p.}/Ip.}R# ƭK4txo5{[(np-cd_>WB%Ցz_١ 0,@K=TN@Zx텁. }ID2r%P{q4\YF:Mtv)tSXT pL:(npG˖"t_ˎ^ ׻V  @A*w8>w;txK?ֵsDQ]D }/Ұ)`Bq3`T,t+UEAptOCi? OWznG }}:a[{:}ӝi]tӖt* =8˚/8xpwp`P\ rb:(Lj~JwcU ])raGVsm.nsmD׵. zïuEӵ.:aLteI{4ewxNt!ãu\u(,}:BAe˴ȅ\ U&Z˦]8\;: iWuH' )?33#_dž^ (êBF:\L*#Z3\3#Y ݕ`ۣ֚nr"]_ G/V U@BG_jLAp\&,t녮&YXkmꅃ]:98}YSA?tыK?5}qI 1PʘkuG/腃~vR,tPBW4=viVXNMv 譖jU&})AG4W opQU rk FԈ>6=BG\jCAps\:,@=tX@_ßF˺>qku㈅N5Q΍^M9%u5"_g̵1R]iMQz+FoVAwtOOtמ@xKya/(ї>8F>ʂCaK!#}KiMtn.}/Bõ鉮t k~K7 Iv*x|x/ ?یkX kl<9k^ B(h{} ~^:i[`!X/]uﵽMT__Nptu qekl~-+?@Gu ~^*?}3A~Ck_C=ߪ ?sV4~~foog?;?|e4cga~襡y٭k=~Uv|50^`ݥxT-^k1PگO,lv@~{VDoW~wͣ0;?=6Ƕ=6;?I6:^_= ~x0tj) v8h!;?|<;nuf8_k<:f ~[sb ~?JG/̰M:uG=ZӪG{G~Rk:\zo9軗~ xeL0w/ cFq9tE}-wzCGS/i |{xGuspDsCQD.k=&9 C: V +U,tG]Jt1M,t.UNGAx,􍆌22ǃe(zaûkj,M$nʙo5=p/?ܒ3jǞ9;G,B.NlJpGxwq!?tL3~ÏaA^kC2O-]N텃?鉮'e@Ӫ9pWDWW# *ӗM 8[1XmD6F}?+W|W Lr}&qOhM9VUA5u^:/ zO4 n@_k_,t4UD oxK4տp{ih&5`8$|)3WzP[w ,tW}>xҧt:L$2\2(]K2b$W&x)NJC'$'R:90rxHfhH& АL:#kL\RGʽ+,0km)A!ɅjH@pzϏ.#@zR"Ñ0 Y]k黔]:=wKs/;}ku>uO[ӓAG+.tUP+ת +ddG#0 m}[- =kՖvttGoͺvtz/ =hݚ/89]똎A>FjVXt@~º >ˀѧ sºD/n.]i4w]nk<趭(K.nMyt=~Jя5s(z|_:4 JtvڮDWmײP^m iHL|7:$z(za2lz6MG# ? N&RW:ZyW\W) nk6M6KG}[Wb1&)^:0utT-Q )9:2 zu}q&R&R QKEQ*J;JtW{u^ }KoE/ _ :jJ!ZM!ez] ,~ҧu=txFk} 0RLB3/yao<8r,􅞏&(ƀż5~ 8-ZkO ?݉tPSc9x1}2ђYm慃h+].zc ^&0nS#}Gs\ dSXkt5A_xc']I .FօA ?JC&ROpxl(dÝУ =lj(VAJ%Jᾣ]M}GY:~nCG%}๗5{a Ӗ'0mM5LcTA_pZ*2}Ԏ@wrbõVm+ 8z R+︗~XpjK"3[z`{Gwŷ]ͰG#_cͽ+`{wjޥ0gMl߹~7l~? <k<؛^~};ޚ~ڌEүR gZՆA'[ש |KhR!㥤w0Խ~l<z[βxi˹yүq~-_ ү{ih)vkE`|>%BgG 87ءf,txb<2'ݫM= o/޴ppi,]{ݜ'DCUAN{wNUk=]HBq:}|]Kt8SJtS"~]~)JGc~8Q5gÖ2Sj( oc ovڵ=3;>t ⠏R3jH!}DJrvmvm ;{x|9Ƴcd;,sm. ]&=m{x-qDW4g^5e^8NJpJDW%#=JdG-hs-t:ܚ!jh{K(&z/`?k=m+@ ]􁟔I) }vuh@p{jO"9z */:%텂ȱ5؊CD_:E"R ?n[O:ű#:s yPޅHt Z*\*/:Zuʋ7̵jB?h{a'[ד@hQ.U|i|*AG . ,̻Zʻp\_ _Z_p7|4)\Fñ+vaƣ # =Xh{aG.aʺpNu:1[rX ]/( 0 # Dw}2{Q6iAwE"e1ת>Ⴚ\::|T:/a}Uz::Bz :ޕ1ת+# imGi8btS ?v*A.tz s7==J@4=ګ5H9}Ig7x>c|F:|ר ~n]ߣtA@!~KA>KCiMw8p@e5jݾTK"/\]&6:Kc؅N75݈~f#|ñ˱؅" . QKGj]Ttsͪ6@D 9=D=# z/ ݖF9~һ= Qkz9 SXp?DW? z/=,tso4קWt:<>5R }[z=>Jca] ޕEAx˚yᠯZ֔o8zYpӗt~o,tAߦAGu˭ꨎ>m*v.W~J_Ǻ^"g>KzfIDW4 nj@ߵteWxapCwӐzA?裈ew-,t4ϕJs1G;tk_KߺNBx=ՀzMtzK}u)ص.v$FF^~BO:aa4 =X(zaGp.=l+A81н#0j& njEAoeͦttOn]{:Ht_PGA#FC_Js]좠2̋Oʼp)u)uUlu>(}P@w&]5,ti14OcLtMcѩ( HtUP^KU,txNk}㥣U:Bhb7ѷ t8".Wy4<-Y (:Q@Rk*O8j Z8xκLEkmE@opnU. .^.R{`1]b::ڸBWn (<͵u6Aw0{R Y"6"堣.t"!I,hBF.LxZJx1>ȵ:`/.tݿoǴ3A `%FJ½rzzL4`lͦFK3@h/\^Fr\nQU#;0Zu`du].A~Eg/EU :ڃBWF ~lE/t/~ݪtt'~]V׻X ]׻(Q: Jrz+їwq8=S{-}jC/R:PÍoQ:\]wQcBh["}7 iĿEԷ( }˴腃_aHBp:u:JC.t.-ۦ/^:z|ݺ/8E ?;PnLk՘JtbZ*jU HtP[haA4HOP@/0]`dGFI#( ǰp~3'adoB{%zQнT{ԭ{m)d8dt; ZG], o/ǶzÚrt(tnDA˸2Mm0Y&ݕbw#Ax{=^ЄW/%賠{G9 - C_=l{KmU njCAw<]]:Mt%vI'BIn[ݤix6]ݤIIou0]0^KG0ZhhDAoxoj:Axj:B[&ZR^>CY*2.Ӵpu ҽ::"/5O|ItM|;~(Ciۋk{aѣ:?uT@ctE2=l(BS]Sѧ8o34xaz3= 2:]HSS~ ݼ`o4[E,,:ӆ>8=OsѣsQ:o4o:g 77JBOIg?7zto?I/S:itӈ@YzYӅQtWT8cg ҅9?C::<"57It5`4 F92+]֕Oؿ^Uc.MǶ:HAwb7\$ ?nS9]qTB[0$[-fKIڎ:q/ S#^8HOZk lECW+ zCckk]KfofW l/ /rXy/ xzͲk~qK?>c6J& ؏}/B;^ҡZ5p- Fǃ_k_r;GW<4c>ү{~s'/?FXqσ(:}c;sep g[g| K?jsZ{,s9[~4I}8 N.־6`h |~LfmON2j}0ӈN~3gci球#o`u>__e˖^--;\b}AGiZ_;shRZ;B~j DAАZy~N@4t{՚ߣe7gǵV=;8轀Z{z~cZc[ Y:> ~3Ki:8]&m p3?C :|:ĠtVc<9 ʧ?tgZZk451[>Ut(qDAmki:dLs4q kd䠃~FA˴؅&NH) /5KF,tGG;k} ?nUO:}!T@?uXa=kOgGw0m._a(}2}Vz9p ѕPqA9tTLꏡwjB_$_PGub@/iU/R:<5ߚWtYՋOGCS]T}?HumX莖^$@z@'\ /z![(ddlt[S^I7KfiUtתJwM(֭fUutpAG{KGխ+N])/^C 'TDLsĤOeMFK?5}1A`IW}Mt }:|Bw]^P ñK+v!U}/X$%0;؅dܚHBú90D0 ,4Ӷ>8/B }/.pĸM#n8j8BApPuPGCwK0>h4b_]_)Q|tA/] te^m_Ht]7Û0XF# :`/h/e|<d/E:lE@Ӻ9 =!MR[`R LFOH}넔!F1k[s8^*U=tCi95=5 ^u?saLP #A?"GG:<<省]MgÛKhs!Z:VmuXhS ]MIl ](,0vɵ0{hQ_ݦ^ z^XhBWޅ{5>\tiG{:k1vL1KۺtAߦA\i/,t8^ta\\:x#=ʄæ9apjުU=t*BWU: =Ј1C!#UTU7`ȵjAFsU堣/tOQU'#iK{:}m\)Ə/ }˶؅6<]dBK?ʥ3/2j"#ߣaQzeFs ;'kOg7x.@\::B׬ zǎZaK+zWB/x%.xQ'O`']'4􀷗i2W`^U&˦xBg,̶, ou;_wxNAka~W{c$[1z`e+Q:UfA`.r9[2WouiQ+-AG4W oYѬ*+AG2i MMJA:[bgKCx2ފ\Xa_ үO|Ø pUC^~:U\ _ՏcYq=&/e}HK¿˂cmK<mGw-QK*:|=ߺ{wɯ FP*% {f:U#U}6E,t:56w ýDw1GVUA]7xS 84I_s7ql㈁Ts= CARѢVUA&ROipXS70It50^0Cu,G/aC ^B Uj/j]XMw%VDmjOgߺ\BtS}?ӆt:<-5ʀCeC!#o޻oDW(}{~bC_鶥/R:\j*5{p+ A!t5Ǘ|: ɻԓkYhˮTA?hGq:?͚t:zIse^8}kKwnM;:NwmN&26y;HtW>JrtusLDL .ӷMtAߦAxuvUw7uz2Orj{O.ѧ8pDWz z<1r,t f &kAtC7Ls5㧣Q:A ..EAx LjB.}-0}& ~~AAs=g|3@xWjBۼ&ڼ͢'z(@w / /WQ.!됎CE !V2r%ᦀW0 F:V'VN# =А1C!#}4u) egЁ4Чi?ͣ\ͣ(8/s ]*l^8~ҷ =^pkJp^\ 8pL 9<15ΌBgF,tw0B@Z:z%u]y/4vI؅%( M/XpDW zۤEW4 ۤP4:\d*2O#0X?BO:}ubi}s^bk }㶩/R)v) ?ßFǺ>8:EEF zT0k*AG/tեS[` ZU }{ew]ZU4zKP@e{={5>ˀѧ sa 1P:!j-.R WZUsAŕya]()kuSaUt(iBSa0[+s*Yp]( {5oBߪbdwxN]՜:K:s4(m x- }y6wao4[)Z3b{Zwp*J砣W/t]e$%я*^^*U=txKQ9:g2ל] 'JZM3ת& }GuaKGu^KG{.t:|+uJG#ެ+dd'[דAhȘ[!#;kUB{$zPe*zaO _OKYl ](A8}+N;. mtkeF:|1uؽc\)^, Hö^QKCHG/R:e:#%7JwaM;:}QzoEttH!wzS^X ]) Ϧl: O'1IIt/pMFѡQ:.,t8t9jJ! :\$*f 7bUHp#4W# z+=Ͷ8p&=ѕI?hj<ԘOMtMڥ?;ui>KѧUs"6"e'}YӓA8KCό润3#:o,@O=tT@q+Ng/Iw[z48 p) A[$ZPQ㈅5Jt5b_K_I4t5k" я,:G~q@ekP%#WWGApO5D.S }IeKe(@ߥO'_Jt]"/ +\R2üG" Ez<C" <@?B'I"iz+=ͦ/8 (ddA?i}2G0)tٮDw賠'u{8~ӈʂeK#]b[Gixpݺ?JCo`$n`zL8d<622Уtx{ ^8p?DW?Fѐѫu V*{'5Jt5"w]w( 4݆RtQ}tʧM.}]:(шJe] ǘHA8'}֓@w}w4[~x``50p͐{WOi0u;~ccJBЁ;w^~@uu 78^SKCZS2_Lt]$MxAJ7f] uuJBgg$fgP;>tMs䠏Ro3W ɽ;jub}K?gj _Ho[UhrI9|92u9IQd:\*[;~tMtW/ GǪu:\*#]) ʴII xبjAoOz4kzT4#Ufp'"M)NAEHAxo*|:\כj NB.Cw U:2. 9:}u8M9K1B|П^D?]G.:ܖ*Ֆ]p%GůZE., ~@oQՙ J2{ҭk{?09|Z*sN!x\,tŅ$tBW}=]eOғAh_\V_?F)e\t.@?p_\1oZ0bO8T  Ͻ-*naqK+n2afStAڅi^&wjC\,tt<Å $t8ʠS'|=:: qw5/@U:BW:,ݺ⢶>}Г@oFZ}Q( u}rσѣQ:|+uKXAG^HB?heWUv{-Mwj].:wMs&L-tzID%ҵM$z( @| }˰텁>|M}yI 8=@ox8BF{ztz/=ݪ9QԈzItz|,B{$zPgp2m+zGSG_gK9y[5/,ۖBF nƐj@A?ܗy4f@B| f[zhf|R|Uz9) Io6^z6~yʫ3{A^^rnmw~үW밦W+:&\SY~N/Rauý_) /-]now=GM~9*}YӇM'h[{ۉQW;uj]#ba+7ZTS:~ xR<@|1\c-[&ZƒK79|꘏R^+}CK[ ipoU<~{vW:t6 puMCxs/m.}7Kb`:|1xb0 }&0_ˎ ]lc81\I t/~ݦtt'~ʄяM3A=քIta1ʮ14tGD=WsL^_c,R}J3_ϾnR;Z K;~ԉ%~ෛ|vi91[~x8}cQ|j, $H* p/ qosԺƽ+of:[K_nWYϽ;{?p/ )~[N ;_;g+Q*RYJWVNmE{G~yYmw/'.S[i3߬ؿ^~k+jcn챿~o8KN=+Sĭzh+?;;6_~hnx/[{VosoWW8;Ǯ {wV{UүoJv; r/ s֞N_X{/?[z x_?xsxUÉתn1`;z渗~?jiK;{ G`A!co{W<.[jKr/Suɵ]iVYhAWVYĵ](=[:}O3>  ?`Aw%tKo]:9 GӶtJ1.1rѩ?QV0X݃C; wb;{Osax~k,54/Ӓm˔^JXJGF@^O| c ?.M,H-Hku >{=Cǣ=}hOOxK65Wp,_k<>|~BG:|:KoX@"Vw#wc,#fzu: ~o 1u{YʽӁ}o,tAߦA™ }VH@oX{mϡCO&? <.^us|?BO^ 7dt5dT`fE`PBFzOUttSwi^m(Bp2l(zaσq*dd!TA_){=_ t] 8}[W@M隫.tzϩ*A_K{:HH@_adWxT/E"b?;].CfC#Ӧ{״i: omnٻ+#e:,Ap>l_kl. A^4?ӺV9p7ЕTŒ0W t WܢEMCǃ}-x,{ɿKq+a/8bw[ #yw|{E ^R^;ޥ_xQպ>F@o4DKBMƧ D;4vs}277) @wh0'~lL]㠯aeYtS@+]7[M92et#L# }<̖GO4d ^RF/f :|b:1T6Ogѐq6 9pKwӎ!pm*v;z2GktXk-}֞@Ӻ9l@l; {duGƏT`mEtͥ@?ʻ4Ό/[]t,ݚvt:<}:5}>RaE kkDA]5u׈ߔ^)MC2mk{a/ZBlkOg\V.m)4ZF,txV@kV}Q .؅^8UYkctb텁^᣺]uTG".a uwS]:X'XUBPG*0"tz_ú^t}VnLp>MQ:x sUP~`/]`×](hӈ>Ч2iiAIIQ(3xVA/Ŋ9h+̕bW8 ֥=Cǻ#gtD`,Ո@?y#v/. ?>;֪) K{|sBޥ_pXG,txz9ƞ_opX{Scye,. Zx;ޥGb4ٜ &.? W/$ kmbǬsү/uKμ'-?:W\ :C?ZVɿK¿暱Zs1j;2m&8R]CyiE?ѷl:ݥޥ_/O|B?bOb5Z^Gww;W몧o4 }ljQї+-UxiV3;\-kU5cP[P/ؿGsf;Q _*TBG>JAXk&"["1wWAl)ABG{/=DBӲ?>^::A5UKKpXW,y>N@h\SE/eK:$06<:X.?}O]RzǶz3]˸Uww)}=`w?HBO'kW򗅎6~>ئYk}JXP{4j㳃cf{{f/»++u_JIŻ;WK^` wW={9|)okg;s-u>~S{~g%]YI:t)"[UI"w)gSٵޥ_o mkMa~i˛KS_ݪ^t8lJ"w8=͕`eXA_tRL`Yk(8;jүT`ea%cb\ۄү?k_?μ觭yZ;md{ wwCo==a|ߊ qL/cX@59*xioWk*0&:<k4 zS%:;6S!w5]Eᮋ4t$/UGA>t}V ?g1vuAhLoU0A@,txPc%h+>-?|f:3W)/^]Y<}~MRAG*Gzf]O:'3ݳN[ h,lHN +J pdo+KA1M`9 N2ee]]z_y~I˺>8 ݗ- ivZ;g/x߶@w|0p FaOxqzgN-Ԙي 58z9p[0V Lv5הeVˊ]8@5z[*ެIÉ@W⋂>k .> tQGp>l+NgO|:ꜚAGo 80&amxtU%%J@_95=5H9p]^ُh#]\ ]^9՚vtz/,thb# nYEtӨӈw& tu&}YL@L; @w%5 EZmEAGS/a ͺvt?m}1{*Vt,ARG*hbw+Jr;z9^mE/ y2N,tf]f}-B;KblbwgҶ$:ATŭj{Om۔=+bg%Ӂi z^ex{)60+xUBhQOq3[f]8x0r{j0z&tPsc:\*[+ߥ_T/BKVλo~?˺y:z:IbocicD,kKkFUү{V/;Kq[cjn%cw7g {4.n,~~s7xKMkK_p޹1ޥw:me77^u_.V_*yttol).>:|_ @p[c8K ?yr|wp+kuA}F!=A__p?X{jl) o?KlmWߥwvw3A^g_Ծ X.mStMƦ:L%KÏV=*\uK?_2-kvx<`+%U[K/\{~½c^=7K>u^*wK8-B3<.exF[ ~zKޖ,{~/ <{~b&?qa[{-b[x_e֯rRޥ^?m^׽] Z\U(smlF "wWwjpBa[S}߱؈]~O=-nYgt|ɳ޻Yֆ=үE,U# 9|8ێ/]. ˢjVc|MMPzc)=Bc 18&D-wnM;}@0Gp`X: j؋]?m(d,뼉vC?m!D 'ӆB::At@ L~\+B'> lEO:ЧC4tx]ߚcW{K¿S_۲^tp}%GUr@wuRJ"pm+H@q4n3Зa2 x57f/0#З3;ҁ􃪀:<85.tzO ͼnM#U4>Ue9@׭i A4tTt»2Υ,t+c+# BF>BFm[{:iso5%_ XYWX}hG;k{aƋE9$@% \&ױ{u{u2ie}q{u{u$t8JwQC.: t( 5bO8N63lu/8zY077}oM'QI获{ݮv, Gn[Q:shѳM9莞܈^F^t߈^SF_^-EAgu?u4ߖvݖ&[531wW~·رk9~Bgo:2n2fVY H, 2ݲ9ٻM 2 ˊ^8x>?>SiMO:~zU@'3Wpȸ+d N ۚ's'Z)SWWWU0 .[rҲum/ W:AeTU9pݻJc Owt 蚻MA?8k:#`aMf})@?8k:ыH ozֵW?[6~ }?ۆtܺo/nK T#95꜂^m/7UM9 ՛n4@! fWM:|.u>RчuszFKg OSsY@5&{~ }v.mM:otǛw~!ow{Y^XkOxC/Qt^|ʧ;Z]U􅆌22[fz9~6z2{*ҭhs4C]@wC5,}@15з j4Φ/se;?>'}ԓAύ΍8{,t?\G31_f:s Yu.؅7 t5¤7ljAGOꦎ(ė5 tGQBHHQ'~hN4/\j"B]].[XpKޅx]tե~\O:}ee^8 8 #zI MbMiD_>"ef\HCk]5[M=8=8zVpZC] wc\CYp/^4tR/iLp2M |-R ):B*B~Iz4 ++MA-+`1Ї* ;㙗yaKksÕaJ z+vQ% njJA ]isE[vib:W,z~ݔ%abi 4 }ßݶKG[G$2:N 9 .]AQWjpȸ] [^|~_I˶>i7 t5Ĥ;^]U0,txLk rr@Sy,}@/@/BޏWΫH #y;\"fS9~SjW5 pU' .}8pnQE 7>X];SXkұEͥoww2}^t iViw0yлzMiAw@0+clU9F:k7pvb7z[ vl`j] LK/Ӟޥ_ igϔ'~ZVAp9+d611}kOz{8ޥӶ':lS ѣ/Uߥ_pms諵g^}:ߥMMQK軵^[sCH^үהhWˊ9p@W5 :(IIWһƕC $ ]~ip1^ׅ_v6 }/iS/R{4מ@_i_F˖>;eno˪-]-)o U Bo]71M-CSKIO4 >6 tᮥ*4^8h@h@w^=mI3>~ gûP * [PT,&v+A7i+UXVǑ1 t1JJ[~鏡{*0[:}/R)}fnfձᒺ@WI~bYGt8z tE/$>3//hpT wHgR:|4uSA[Q?3>2ve7AsAAм.iQJ - e"3ۆ2 {Sipeӭr::ukF = s1\^ʋ(/^[,t4:UMBSL\X"' يR]t(YDBG0W /]4h^񞺻.cv:%ۅ~`.ryOѻUt.UHGA'{X(>:&ai]^k 7KMFX稪8￸/[ݣIWnW. nj@?@WM: }y@_J2K*R\^F<\m_m)5exws[[!;,y>AP;^],t8J6J}1gjp>)NO.Ч+U8߸*A[ *eVeVA4'mI{kOg{X,tA?=?8z]G b, |:b.|syK4iAFO7nBGg?蚝NA+b*Xh%J:KЕKOqU{cJ ^5m/t:t:BGG<=BBwx{^3u82+Ai F(TkR}HmSt_\/QA7n4 m}A?~4QXўA. yMѫe􅖍R(fEu@xՇ>=ОAwx{^k5no%vۦ."@W4}$v,tx8`k8 }$v,ۆt:xҗtV5:>@B':޳u3Kjh؋5v}*@KB]Eu*ZޛUUs4^8@׵] z'Fb#:|#u>SH}rB0W4|]R::/]Oo|WߚBxx݁tvWc@ ȩ_#[(}OzO= W쎢]5u4vպbz{,tt4=Fգ^~үT'~XARg*0"t:gw. }-RK:Ypw9ؖuNAǣ腅dtdܯ_GC[2Z20gNEٺ9@פ z'4΢ ,t(UrDBK]%G U#) /ØMe,t8JtE$t?x]O:]#}Ф:%c/S4u@_){=Ljjhxȸ2'2n M @_oɰZ2KI%eI/sᒺ@WIG7 t5њ,慃o@8bTtV1Ї#}X:BA?hoޘ t `eMt(unDAx`N(*pJp!j!j /ҝEB_Q/}1KBw]L njJBS+>BmWPc90W Anʻp;~tw e]]](/CţS=vYp@W:@w+U8ٵ*A_peR慁ݽUBtԋxvUo#WA7H]7Hi?eBO bEID@ Ϧ{U6>i)}{z=tW腅>$@%oC^Ypc>v>#p`V ^t'v}iiB/]t/U~BǏ0\GsF?4b^.tzI 8zZ]~=kqB^Ig7p˳T3_H`˟j^H`6]t :Y,eЗ 1+MBǿGG9-{֪R_˲^tp>s/ҥ/RF?k֘OC4:ؑ])~pn:7bG# zmgnKᏣ@ -z9i{A^ORiBoaՓBw.]u *y)ݪ2/ ݶt@>k5.C^)mUW9\1:} G.˪":8 ]0),դ]ymM9}!gF70m6 5 \tÝZ^5Usz+NAhgzHzpK ֦oQ:8])=MI63^vQ.XtEAGӊ>8`?t5TkuY5:|6Zu6JBߩq8G[tcc::|LWuLAo9K˦ȅA^b9-a[/mU%27z9hKASF/^nY7/8utc#} êtaS#ek{a4`iCti=qimi\ }t|@ߩ{=~ʸ1 neʘ3>gMc[zkGgc/B{zR+ޜW5g7]7(- {7ewQcD"QG0.t:|(uψ>SCs}ZS.O tM/ C_jB?>8/4[F,tt4SEG[U(]:ƑUBw4NtW@/!(2r4uR_Ͳ^H5H9~6z2{*ҭh{O4ЧHcg׻z:%ㅂ>SG/ƴ ::&Vօ7 t5;޸{wႺ@WA}f̺kBIIS |e]{!gaQFc@ߊ]5 I63[*0z"t:,-,Ӏѻ s7z(з1>`g aEF"# Ω,tgzg:}/:\j*5e[AK]FtLט:"2>neMcK+zqU2'{ i^ jMq:hhDAoxk5%XͽTU>B]F'P‹w4 tu4ϔᏣiYGtxWA7n4t]N ӷ5tk+Y5 9 t9b];:x@W)Vccz{`,txKC省R_͊^&}( @褐U/[Q @J2^( Y} >k^{ n&j&EB?>8E"e >HlXp3@Ll`M»;_zZtݚSE0* AG0W /+\8H $^^_զ^ v4.,tF nsjsLAi݆9h%̕waT|XsAbbRg0,t<@B;b12>×bpw0,t:+Njы+zacw]cw%TsXkEFtISKuXk]׽nk/鋔1>cTY@uX^,tA! ;v}cwbE p'XN,t郮$tiߚ5BG<@A NoS.Cޙ~oݙ9t􃮮tGcKueD~^K)ʹPk*hBT+JrvS\kUBGS.a |ÛKͅb-ю:2R<3j$& k$&} U8hߋ]}/(hӈ߾tݾ E V" }QExcqU0 @W# ` tU02kƳ5+Bh[q:cfK/Ҫ~4~cbJ@W4 }K텁REj::AWWu:c[SA_mi{a:鸎z5N>SSӚRtNÌBtЋuun ӷt nY!#k. }qVN@o9e+:R zw,tGHE@x-ced_]_( Қ^zOU}@xo6=}Ҟ@xo6L7L<8j1 } eC /:7=7R[]zmM ^&P=U8Vß$rHSzxQ*4bOzI'Igãv]v(5UbW1[hޥ7ʻp;7z?]Gu,tt4}`a]txwH!x>_ t]/#c_BCe\;eo:)t6W@?nz9000o)Ȗ.r$tx>@k> ''MA/dQ4Y~`.ryGՁ407޸{45kca8>6s]]q?B_h@/U0g>-IS]SH ~N[z2|H7H\;:}V;@:ܶ;ն F#}efˊ]8@ל::8̘^eE/,t4ʥ3+wUy:<.5Rf]O:}@ʼ0;\5(5.vk>ڮ9UBPWpePޅ7I t5IoHznI{a{tKD>@a$ Xيt4^ s ꮢZ]:|.u֎@U5@=Ҟ@o4$@o%=xOVs:}3GQ:2,tGs12gj2i{͌]͌)+e8,+A@AQ) }˶腁庴B/.2wN}w'я@8⠣K+va<,t8ʼ1R1R _UHu0u :ZUBN=ͪ8,@,# zO͢nUYt:<;5>{hp7 . tQg*2h{wIsӧt_, ?˦tƯ+,t=uHG!T̋[Q慃 te{NMz.}ߣ=@/) 9RL >5 sQkBCȅCV#$wa.,t8JR;~CڻnH#800bOx{6pii&>m ~p$: \ Hz]DoH i nY{:ۋ[A Hc^,w=C] %b91Ww zZ 6f=tc#Qs74ۊ^=u.Za)4kJ]*q4㈃M{54Z2v6.?:W NLVA_t@@wxQ|#5>K k!>KwWK^K{ݫ)wwϗww;xQ+\|kU|BG?jgOAopX6<,=ޥG8<98M]ь׆hV6y~f(˰ %ߺ[{K?X𲚃g;^ &ޥ__ X{msUK¿등V'Y~u}2˽# K6ʼn==8[=8F/x~f%[l2KooV3ڿG=x~ic5\ow?_X. MԪʥO2v˴ޥ_oOr4k㔿 +P[MwwW7'0D:]?{ݫwWѨV52wgWib?^x޵Р]%]ʈ)]Cgj?@+k_wٱ]vv{a]~詠%[T\Rpn5)]+?[qE@+x~?Q&X_fj0}g%;?v[_,jŢwA;غV ~|{` o?kռR3k8ȽF k,nz @#?@xkY:/%pο\'X~_J*hO/Vnoww~idFR oW~"Z;m+ h^4~Gpqd&گWM Aߵ:ʄƾ0k85kQ~;oW~~/|ks5\z]``u &6_x~a]Fkq57kL|ȗjO;?L۷Jrwwջ+ G׵yt%]?-kH{~m+>ձл;p5hߪ-`گ֋7{wgW^R*h]`d:_Uz~> kv]`9ػ+%bgOp-?| #o]˜ІK_[`^wgk; ;] =˱M]u[O>oWpxk ,F`-O{~o5 $K[-\njoKÿ\OKrҒqjqaR]Okz9@5~kkfz~Pˆ>|??g [Y~ SOfʥٟC;΄>s>ktСלC?0u\9tosp,o%~ fg ;%pxسN p@=;~Kpk}ց>/ZH~zr觳߅tNߺc3U8dV2rC@!}5Z;Z]/ gӗme;gus8hKA }TAό\gF*ƕUA/UM9tFc5ektU74MI]j[{: ͪt:ح]vC?m+D?xYxwI]wI)#c +06B~ ~UR'|8INLJp;;O5[TC'If?Z:-/[ޥ_ݯE?{B\;_k.?|1o]slc7]ZZX.?-#ou˘p@ֻ;peV7z]uB?xawW[jhn.[MKO%g ~ w>rpy~{yioH. =P h.4_u`?+otF'톦~Af9[~;֝ ?;:H({ =zl; [Zef4_ߩmRFso,[~T{hv* #Є#սt&'}Igab]t)o}:A5߫F3/0z~. ]4kh8pk@Wk, zǯ3xv`;wwu"cϡ|:,=|~=[ݽK?S_K߯̽; Xq. «o|]l.U\U *`n 09K|u-oW=xw+5ww773:%2zk {ۼK?GAm4$^ӫzB::}A5}x. M`,J>8˟闋d=gWmhVog5?k4lt|ib8=eIsb]L$t|{^8Yk9t&AWM< {U7FAɯ k}bz3e٥إM] _8Am-kᠣ`0B:zAuKƣŰV=^l9tiG- scW A:zAex z/Zcai9|z:=[SA00H*CU^, o/æ:pÍfcͲ7Oۊ+u8+AwI_zdX{m2ϡ3O ?)k͔9ti3z^tzC_"eoѪW(k͋9t4Jt1k^^-k/w4]Ez;xқt:] te)=vj[Mv~.*C)B:*T4װ4uuABG?<^ߣӆ^ dweC;:k2RtOFwBxOw9d?ZB/SCi{;m讏#zIF/օAR+<*3^sh^7̕eڮ,w tu%×])?n]wjCݺX2s3'~oM堯TeYAh@4@M{,t?@w3=Uxoq^8=hzxKϪvawI'Ϣ@_,bT^8^st5)tzKpîL=HQ㈂>>X-@-i Hæ*8pQȈ>SG:'ɺ,tE}'To4 ] tO ݚBF:<85И>r*(VAQKq(u\AC@WHBC@WHAx8BFݡK4v)Aw4.'nta|0J2>h 5bÕJF L=Ӫ8p-@k^c ϼ,e^8 yao8m+@at.tt=>3~cf`4N8iHHnnN"FaS#9(ՈBf:zO]em/tN ;uq> sh)} Ne鲦)}D/[ >7:7";~k.y-SAkVZ:|ntnDB/lU4ۈ^] ҥ 4txKR0w or{*h`u+Jp~һt,tRQHQԈU~BpkV¯Q(}ۋB@OQzI^v텃%л:td+ VW: t%v) 8MG,VwPu6H9E"e/]/('3[4r1A[u{V ~C[ :|::}JCpm*E@9,txWkt/ʤш102ky)tzKҽYVAe@ Ah+з] t[]#>L[eO9zIѧ ?K9ßE˺>8pqt8~p6:ß[.r;vc }/{ΩXkUQ}hOgT%ZQAGzOӅG9vүo@!BVKn] n[;}dzd^CI9;Fβ3@י NB?>{o toT8}49~қu= 􎟙q=, ?ݦtOS,u@)7ƴxtxik)}eY'G ˦BF:/*XpR],txUkAT57 t5bόYxXp^(0:sf$:ܥ4եƦM# wB;c tW>RaMq:}!㰩C!#}sGiK }9ƥ#. sR7>knMb/xwٶ0=t+'A0La%/a:X;z zI`gv_? (CbWՐX:ܕ1oue9t{4=JA?(X* 0] 0)ϼ n7j7BBG3/a |d^2/ >>(}PAw8v] ]K,/˖uV. }{=tW6_,_pwN 1lM9FzIqR,VPe:F/ZWA 0]wM]Xp@W z+ Bk]$t?x]O:}S0 :`+ 7;&r9| u MB_i{}?ۚt:)nS w|rvMbxsq\8@װWgt.@)yᠣ90W C s좠Ts:VuPAw5:eTK>#\ ףR=:}]| \6 '8pqS!ַ}xB"G菹$tKAח(ubFSk`qthzC+b*HhcQ zO]e.t4+EA/Z]eûPBZѱE _hqQ,Uq|/37 zR?p\'uzKN,lYE<@B;讏zIF/6@)Kp v)[`6] ޑ~H3g,Z:YyÕ^J/>xgZKʮ>q-,;]~|YR@Y7үOZR->zwwnRܠ$֪A Ok+Ck5[%;u>W+pUA@95t{ٚzIJŊNZ9} ^SAkPk"T{z5מ@G"ZDf/z&ЗC2;\^jI5B>RFo,aY78χu 7rSX MvzSg]F :0.eY{t]Z`{wWwtݖu8AtwNsׁtǯTW z)oԖ-˔`\9:1xd zIbU@@ 5Z:ΪhM2X^[7NKwW{*iVeAh~=ǥzɽWk] kh8WW*}|N}%%7.iKX@R NFVA4M&;^\E,tKF&g7FB~o|r.ߥ_/^n ,0.><~35~~pf5 1]}i"m _g]9wN'ծOuc]]]( ;#   FBw8N_!ZKu tO݊BFnCYF:<+,o -lz9|kGgzٱ1+@xݨ*cK+rah֕o5l5@cS@_:5b<2.,t8ʻPgp2m(z;LsE/ 7jZC?8tg^t![SA  3gLͬ6S, ͢#:q8W<8,ci]OMY ~5e96 oSz3~=ϑÇa 5ΡkwkSYp1Еm/0c.fÌ@a}%ۊrB@W!)SnEICFrBV6}q' (n.X@)U-+AccPc5`w4J(k& Fh:W:W>kh8 }Fun@xњ*4bAkb ָt~p>t>JCpm*v;os tG}/רo3/ͮK2=^* t#q<ԑ֫Z)rQK/E:ۮ2/􄣗TB@g ,txTk}Ű::-t%v)賡KLS!h̷DF:1Wh M%/B4tF. / 1ш~ۀF׆F􀷗k텁mqPAKCH]?]thTh4|ߟ~ PM 逴t pгKvm/,tGo u@x^=, @逜֕Uq1ᇳ1lV[W[h -U p=0@Gn]p7l^2_{'ǖt?U}'z-MTv?},O=}g;Ⱦ?Ditմθ h ^–:~`'|` K pA?0wLX}k] _?@w3<̡0zz(@m֦p>ՙBZFu8hu ]ս:wo+AmlWߪ [BR:ZBj m FAGӺ/tu)莎EO5D~_sᜮR h,om~%(r  wo틂>:ZRڅD~ͥ̏6]P }=Bis3g>mjG砣_MA_HV#Ys&9F/t 桠v`mGt SiǶF9h*̕Ig_;i},^H҅4?׎~F__/H/B,t"t}BOгM8`L 9pyP 쭣5[W #}Bʼp^ =0^8j9u4z5qO)_Jr7G7G1,}kf) =Jgotx}!$r\IpkBWk@ i^ǶV:{C~ۄͯMs/vǃZ tdַBmhAOxOwK -vZ%F/t6gpZ7m+AG'?5wVW~H)5ZCF$.e0'^|/Xpi@kPW,UYB/  XW0Hp]z.pZ*@ċR慃C hÆF:셂xwBw4m.[GFwQBKG }t.t񦠏6^{T/ģ=FF[4twt~F9`9}݌V7#m(=Jg<Һ,t8z4B~\S!OS trX;B;# zo/aC XHBGl !?A5~nUZ^yӕw᠏63lv~\zFύ u:n]jMA_m?˖~H9|B|F g+ BG[#[Vso jJ]) npԐWBǣWBxxSL 8@CxxSqR1XEN qz`6e6tfZ7CY+:l[ m/􍖏V(.* 6`qTA?p(zïH ]H)Mt)=e[h{a6{l)tס=ZמACƫoWu(?G^t8.-8sÿh y⯤o4 qqcG\cGhpnЕ[n>L;:XHAxS#  ]#}mu| ~sQzsABGxFxSw;0#t W =~,M8d62rg]g]to ݖtt8x*uYpWz/<W*u7_5_`Qz }ưQ:t :v \(muÇBסB:t!MC__B׍}7FucBm ) @: HsY~d].,t}t}4[Hݺ~H9pBWW:~8r8&MtxNk .sH3ȳ<-te~~4n/~0GCwͅC~Ѻ2{PH!EN]_7_,"ZJA_m\6_'*TBm)A.]k (tP/r4^YY$tn.[s/n]::~5=YͼV慃_.( tOÆtEoJ ꦔ ]9F li@_+}YJ'B׉hYp@ ^۴9GΣ p` _jHApV Y] t_ ::|oT7G;p%(@T6~1(d䠣3^Y@؝],tt ]CHH٨u4bxF}y,tG U$@VCYp%T% }e]utA@A Nצϭt: i7]6GXc,:F:\RW*!UBw8{͕e{ֵp/Nwʧ3УM.l겎j(:|8J:qBW} =iZDJ@_ȸ:2r<ϫBOk҉`,`W[0%teW }ۺt:ըՈ~BR~um >]M:t+Bxsq m. h>m8axJ7зph/ ӏt:~?zt?"]W. Msz?ZG hhvt4bgp60rVV ޷7 nU_jUOBxxSu4bÉBWb>z t'3:-3@_b؅7/t5-}֞A 'ޣ ,tW_[BiBWZ@B?hݏ2УuxO9p L)9ܵյxMUឣcT?~ g9*r% 4aC1 ^.;?@ eC ^:|9]躜oXڷYpBT1iڀ7cC c)'KE1 zm~t㵫|#a&ME-txBcjBx#5"OJ?~ i]$}dVA+z]87,t5|&L ̈́O9 [ KA_mc, 9=@x6&Dz1]/ծ`È8a(P:~ۄRl{*;ޕ7\]yYp$j:Uos ]l> O9-RCXQ/ώɮ0,txck# >Τȡ$@M[i] }Wu/:zIz( @_VC4Y/hh兮 }^[ʽp/t=g\k;[uZ:zE΢tG֧K"O( m~BW zÐ[ Cf?09<_Ѱ(=Q@Bg?(1*15/tդSghkLJvqZBW. RBלR ַB_艴ЗNS^Pߪ =8}[(Ng6cC?txw9ͅA~'/ 9g2 tdxk$ = [*@iPZi4uegJOZ gӶ2tpӱBB{賷&fd \Q:|9teÙBW慂>)uԱO;9pЕyeK?t F  =JgeVAw(o˴s7/C06 /TZKRz˶@?xzwwYp}W~. }+J_8x*A33R&\ݤ9ݜX,tӋa"=[㖴w(Ou8O4O=c+o{h t?T8y5[ vgMO{ /p?^s{p{o0ۄL?|­?Ncv_~`=^x{ Xv?reH4PPa=?ymAX࿀oS 1~C:ؐιo迀;Sǘso8^ceQs־{ Cևqsa~_Ó}y|= T{h:cݲg_w??9=@Oo+{e5ȉfC~eVO2L ?il{Pͻ'x+{?s |-k9ߟ~Ac?*/g6pLz,ACB׸\ D,jUPnpi#& : 󹢑_~cG?B] B B~:Gህ ]# l^腃~Џzס'zQK ƧZޭ,txek%<^z'c)kC+ ]tzqT@68m*N-A S-Az{[jOgǃiDBO)=ۂ87-tna{o^A?hRG (t]bPG0s9∄hC.l }RAP~oKF,tx/:ï0\0(MeozYA ]u$􄷗m텁~Q Dt(^[x_;Zk?~G_lZ=7Oy_OyIpcBWcL z =>7e2:ξ?GaKQ<.B*t!Qгu8G֕$EH"$ zt|GJg?={{+NAxmL ư7Յ7&ZӦ 58B^ Ÿ^W@x1FGG$m=~๥q>5ב|4::1/>4``tǟ; {ў@7H$:~R }үV:b/tUS~"'2$rZ={ _ӊ} :<5> 9԰-t6$@NJpҧ-tiW  \Q:|/[B;/sE }s9η9v5G OP@B;:P/~9W,t!o!/ =Zh{a{JwZt` .(taPo&flFOB/a@/= ѳAֺ9e ]$t]+>ֆt:҇V:}Ǯ3~:녮^$􀷗i텁:Vu^,tI ]M)軁_Bt02WbA~&f:tㅮ :6|u堣_zHAwƨՍ ±U@ǧշ=BG`gcq{q?{շYBi:GPG* NR$t4\/sE  } }J砣}_+MAm±˴؅~e@_]cYW})BJ07H#q=2Ï~7 .+tQ^08mRc\ۺ栣_NA6m*bx{q;^8h7aPУ^n}Bt<J}qEq -8Sפi%%Oƨo5 ]:LսpGh56T AII/9 .R }^iStӎtzBGM8d\62r*d==}YhOgo:zn]G$tm=~!hnoU2sEn2z^]FU5Vߟ~ _kF# )yzO̺+@e d/J ]/J) K}8dd T}ujGBGw2!OSW # +}J ])BW} =УQF ]ƇRc{zQGJtUFMAxڪ`Ó ](Gc:re$txo9zN!؆u5s鵭s)~,Pz,@A6mh{]=)s:gǃ=BQ:=+;*t;b:z{u=By.O eF}**/lӆ8=@Pp?Wpwԅ$$tM֔RzqT@xko%XͧU>~*}TBpx*d'2K Sx;z[ZR# S3`Qw@ 0У 8v9KBKj:\<]*gp,+ AgfG녮G$t,#UAA?ow۱ўAM ]G/g(zaK+z!QQ) }>^BSÕG$热{`OIJr,y mqV@?xs~鱭)nSjCA?׺~H9 -tGK1 UA+=&rJ|qA%A%h-$=aCtgQF:<5xjB_!^!:tQQL:MsuhhA~UEBCƥK!#}e_P6[!# =q[(dd6׷6T~ACF=!QA˵腃vAW'iùk ۄt8NOAt: ](>g|},t|]$t@*5':d7m. .iW S#}t<22/,tIQGCK0Upx.2g~>k?砣!z+Bxov0K AS~wQ +Xe _ L.|4HHiLN |L:6tL⠃m_Vk3AJ,t"RM) l$t8bt}:wԫЏzqJtzwR9 A׸x3 ?)t=!zhOg&09p2Wt:^^hX血>@+^洡i[Q:Q(p>-3c.`o8N_sӗt:-t%v)M~tn8Nvs=zJFF$txQk_j: }?ז~H9kBk# ?^\ /5rR#W =8-3У 8N9xQ؈Xsȳ 8JO9xQԈ:`u`_4`,>ZGFkXшaCh^(>#k }㴭?-t=ۥ/<2/,t8Rʼuu$txnݫY] ?Z[XpBWo:\RW*c]? Ƕt:(t_xK"-+PAFRH76.t56&'0Fzo/aK  Uwqгu8zI^8 !M[!_@vu"mm}({v vpi ?|P?J$t u mÖ9pBTұtLшfOhΟoNg>OϗCghSXc~} S{/ߟ~ G,toiog?OѴYfc9pᇯS˻_yoiue{|w1wޟ~‰mD>w_o?m{N#ÿ'ùn Ly=p_T_sXO yy9 |8{^^g Tx=g|2>?~ ߶:#{oo{/{ޟ~᯼L|?Gh9Խ?~xSjcey;dzlŸmiC?#sO)ìס-H~П eR98G lӦ9U˻tyG"w4R }FuF9p L7-O5erF:tc(~^_;9r56BmÙtL:3R]# =XxY#„wѳu8֕K] S]?x:~siw?O | 6gЏnH9pЈ>l/cɬ־]@ 0 zBOeº-}49]9MAx׷,ti@i ~KZzKJA?Y?970 9pL~^~ً\rhtu4{ps-EtW =R])=d^B:y e^8:utnBtdU2MCGSD60rюAO4`,T@텅JZ _IiptH'v ]] /cRD] tX\6‹6UxA?h)]qFF7ŒF,-8x(BRo~mjOaP)yQT@wiWv]\ =/x1L"¡KUAO8Jv1i,t|{Im/,t<ʻPгOi ~9Zz9JBRj$ZC1*s1OxzNMP'EFe"#:\dT*2/(X>-:qͻ+@mۖ9îB. {Qt:RR~8U@8Wq: ӯt:\Ry;~4]GYBt za]q:}?a[?t0W@뺴:CƴG)6襾腃^:qy>cֆb:ZBWe: mBWn l^ӦV:}㴭&v_JRP 1oucB?2AGg17o9h ]EF$t腮"# ;ַ8BGߏ~~R],׎BF::Dꅮ!Rt'Է BGpm'Ұ)}+=lks/|QvuQ@6%m(z8zI;^8x+𢠏or-C ^ߪ[: =E e6Fo }ƈD\P_^,t_:37<,հ4:|F"G5͈p-0O~ljGçc:qe~m E$rnm"D+@aw},BE l^iC+}(}z٭W.*If =ad+}h>91Ω# ѫBw]1M4@+ @AOs }+ЗV:RBAm5l(A?hXG!#=eXh{a϶eVA_. $? 4K{:}cuX:2n,@22zte8u(Ac]-b][*} ]})Y:,t@U MB ]xpo7bo4l뇔7K+t5K'vtގ7JJwq$@*  hs=z<@mQ6sQ@=+Ai]ugtY(};O*tMoRzo]J/ҷ]t'ɣ,tn. {=pX*@mkK#:\[ץ;^],tRu)MB{zRУ 8N9x |z*B|: ScvN׀F3/yᠣzk?g Uڮ.:\:Z*6eAG.e |58D_C~Дnt9pS/z3ZW7 :^8B.:|}4~R突 }+Jg{6sƅxt:|6 шC?(s='>3f:: ʼ/U@{ֵsQRQR$􀷗a텁>K;u)A_x]*fí ]IpBWn WiM2Q~=Jx4Q~ۂkKq:_W+xjB )< 7Ԃ9p'BW'F zoj< }cVA+ݵ UAChX[!#=S }m|  K2/ >,@+ !<u6ݗuզsc+HBw@Bggp++A_p+mWI i=Gioѫ(>5G ?SoL~T (AG^rֺʥ9hoz/t/v( җzљ/sܥoh},t ]0)icʼѾF/t5" _jHBO8b< t\j1 kWQ:z!Bׅ4ۂWJ#ህN~k4=ڀ8Xa=pVGXK_եs/t=Og&GAG_սe(A>@1l(`o4`,_.(*v*vip-@~=}՞A/ ]uLC~}юAˤʤIM8`60r|4vt4'z?ZQi!=6CAS/LC@o8`V:}5sDw3*su3}Y׎A2s9/E&+mgN{kJ/QK:܂Ղ^nF 8F6sKB% nPj@BSA Yx Y ) ` , _Ӆm]qѩQz-f +=hs-tW(}u|ꚲBG2׎ 54u:]gF, i[+fu\I]jMveC.:<<7*t5"iBWZ^k ?nGY9nUjEA?xu<˱ (+Jg6(PAFե*`$UA+`do8붕+`ǃ1010ᇌ$t*f_hth@(ݭ+J/DЗJ9nmKAJ:,t%@Q:^|*`9TN]ISoޮ,t8J/tE:a] }K/.t#@#}iCFtx~Wk~ n KYB׬z<@3wCo6]Js1e1:0 9-Q:pp~ۄckS ~?Zz?JBǣ(m9F#^J y7TBvvƅ`c]i[.:܈Ո ]Xp#BW#:܈Ո>>4(t 2yA>OX })J8Jvsҧt/}R~BB?*4/ &l^8B׳]:|YW躬E 7^bG%F, Ǯvsz»n@;#zgD"ǯ..X tPx*`ۋk{a- ]-( ʣ]]ly9pWWW:+-:q7(42ሁέQ:DDYt,@?Vc_Yӏm􄓺RI]{̫$r U@B ]Uto-n]nK#)])MB8Jw E Ǧ4: SZC|-s|烛( Ju%P׃t:?d,t=d0} 9hR]8F>њ:AA$tE}G˖teW#=*BOU12ek{aG ]GHp?BW? irL UWUGB;/uL'6㵩#~^zNA9FWw*tu"IWVzh"BW4=ۀWzJu::K]ձuu [GO.t:z=Z/y(`dv ݎFF$DBO &L]8=@_ ]is_8vYvp(}պgZh cjMxZtQu~_3;:t=x U1{н=ۆGi[#z?iRm'mDABWNAxk;酮8>[Gˤﴮ2iiK }eC+w(Ae+z|=B_h«З^ t񪆑 ubܴ9pt@nGtL oFofߌnF)7f#,xB'{sޕ[do4`,>f#>lhޥ]yl}ZWAw]u] z8eC#:88?Nw=N'oɮo=eÍ ]Í)TGX^ǎV:wQop~m*Jã ]H艾.+io/nG .4*tQУ 86yU/s3g,tc4WAOh:У?3BG ]ţǰ()t!Wu: g2LF: !? Uw4@+ @AxnlU7l^8JZ |8:t8;s ߐ ) SCAw|qCvCA+=&zGaSw HîN lF08pW2WWzQ춅APǃ>Y&v ݕeO_zNKg/4[K]:L=/|Q.M5o|vznNgoxG߶sMvz*@?muyl׼j^(5m.r8tȅA 9pQĈ Mev ]vI`V:=[.i]Y:蕄7z-t5z%?XZ8IoUBGk_I'ǃZ :x4ohAG^*#e/tR'nU:Lm/,ti ]O) ?Zj( fBW7#eW{:mjBWSc n -ێt:x=Zzl'~cW? WԷ`O8xm*AG݅pr-07Zߪ( O꺒,|S+ʌBeF, __]]_0΢nut},tu ]裷EG(}{B A~z-Y>c:$tE}6xK=G|?_~Fϥeu.:}5xc_}C~uhsf)oz?BpeV-tc}^,t<{e|q,t@m˵텃G,􄷗k텁SzB22B!#=ڄ¦*82e9g\YFz6H#u:2BF:2BF TVSYpk4tG^Jx1c`O4N/8_LO56&6˜6{ÝG ]GIpBWQ:;:M? /9ͦV62(}OS_G}ҎA;2:2FGy׷B`.ry;Ў@mIkCI]Fmrtt:\f4UNC-t}@<Jve$ __]]_pdW(AɮT^J/Xy4u7bX]X (Nպj] hװ8w+tu#;-tWb>S!# ҧ/Hx80rWp+`ïG ]GIpBWW:\RW*onmԱᒺBWI XHA?텅3*t3"?XZrxpZkp Gצt:0  +`d{p[W}WunSWutLU&MBOxOwK gЬ]9ppO+tM?x~lWQ(-u4"_`.0}a?׿׿?_//V?_PKMuޡaPK9MHl9..mimetypePK9MH TThumbnails/thumbnail.pngPK9MH4^;$ Ustyles.xmlPK9MH U*meta.xmlPK9MHh manifest.rdfPK9MHConfigurations2/toolpanel/PK9MH'+Configurations2/accelerator/current.xmlPK9MHConfigurations2/images/Bitmaps/PK9MHConfigurations2/popupmenu/PK9MHConfigurations2/statusbar/PK9MH/Configurations2/progressbar/PK9MHiConfigurations2/toolbar/PK9MHConfigurations2/menubar/PK9MHConfigurations2/floater/PK9MH L Object 1/content.xmlPK9MHP/Object 1/styles.xmlPK9MHѹ"K1Object 1/meta.xmlPK9MH \ M3settings.xmlPK9MHt=P9ObjectReplacements/Object 1PK9MHEGn@META-INF/manifest.xmlPK9MHMuޡa QBcontent.xmlPK{3libpappsomspp-0.9.20/tests/data/xic/xic.ods000644 001750 001750 00000031620 14502343337 022037 0ustar00rusconirusconi000000 000000 PKqWl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPKqWConfigurations2/menubar/PKqWConfigurations2/floater/PKqWConfigurations2/popupmenu/PKqWConfigurations2/images/Bitmaps/PKqWConfigurations2/progressbar/PKqWConfigurations2/statusbar/PKqWConfigurations2/toolbar/PKqWConfigurations2/toolpanel/PKqW'Configurations2/accelerator/current.xmlPKPKqW manifest.rdf͓n0PKqW styles.xmln6}_a@=(K&nŞ Fd(q߳ڗ8=~?dsrvsAXv:_B,9w4?[u☄xHq&=!)3 *X!GCUR,V2\gtեYi<b)O)vW0O+[G> {b)62XjQ#^- ,9T vt*­ӦHnl::cM4J+c_s7+˦Jԋ4ĸmQ;N$.Дd.FMZ©ij":j^p+Å8XtVtޥx-fEZ1W9DdtNK\>7˖dOO1;t2~<ǎ}TTY []ш/˨Ns93q邱M&b TBA|rP4r#qCZS,Tb[l.OCeVONS}^MR W5jî |m'g`j(^C*'Fw<3ߕK'Gz}:r&^p|`pg?t q-$N(9!L-D?+B5Cj@u{7;;"]T`+0%Xqk?위^c2YeynHkKcTrK]u#BLܢ爣|PK6pa!Qv/´rV]B@̀geI8>IݼփvW81 / )Y]jP|uT+A7-ف~1 4_7"\VP0o!o)tM." TԂzx:a9\dD-b(YMD <-Ir I RSoUBΊ\ߴl Wɹ9 ׮e%W3 -n-bƝ@L'qmoy)]ie1-|q9-c5) i[P錒{!d9 " wi1m0JyP)ј G5F]f$R37#׌#Ꙟ*Έ$+1B;2XcDEm!*zx&rҚ3s%:al@(t|ZX`eNr50fn#6뜙0Z8ˎq;ǎV DwVˇOqryƎ⭕8"qUP2kԓX;0 `S\}88\$=9 ԟz:,gz^1&԰RC=L{jpm%:$<!M`lmב@ّHBU]Oͅ)ϟhǶ"S,:>E?Ge5ah/Ӭx:նs 7Uo`{ص-n߇jMx`/ YH žh}R$n"{<6ﷻ[Mۼy6G3ݐwXܽ{׽\P/sۦco2٭Įa˺2dY`y.=H{ov^"ܓUlX6b)f| ݦt-Y >F<ű:oyzɤTg~XRRGŦ:~'UQ-)uy8գݓ 1ySl06볳}X0TS!#lxE}d髧%O#K+[Qrk쵈G^4:[[חZzΝnȪ) `λgK`s\)~wt ~t'ƁHA3 9d\vI⸛ߚZ4`V2~Gkwl im*@fS[Lj3s.=Q^L$fj6if0쬙R_'iP?Rߡ՟l2)&?;0FǺz2E=Q&1Yݬ̞ɛ I! Y٤M@z؛YnojEru-~ql6){̈+`˕-gWI~pZrzkq=A. SAyə9xhhNvRDs'"vYhVKmX oW?Qm.fpnFAjIޣamgzLXo`Nd;I7Pm)mc3ƓRiiN9RFoOgJ1=5c\P=f́g;gg v8s`(í}}8s`_`_oPoQ(ׁ3 M̽pǧXCJbUƊm_[~j_(E9^]@jCIluѐM&a*W+^~).l'UCmL拃k_Gx}Y8<9@8{jJ%Z4@"ȿ)vJ R}@H.\0=ht-!tк>%@lͿKwqvF=m١ֹR;!Ź7Ï1>ꆾŴ6@s)oُ6#)0&vx!(xu2A؁c8}ԏAw,)\g#86IK;/LZ(#uO}엂rcac'qt6N68 ]JR"%< F4g"SJΙW]žF ⎻ #o82ؙ>㘑{. JY~ " uRK}p_?$u}!ϵkmkt>1z c&} w>σ!(e ae:' '2sz^g˜h2I:˽~O>?A]\^CѸ1}Mft4Z~fȔ7n /PH̬ڋ8 I˖Ĺqe[wP:ԎԗF`Xw K1^jZL0/kM)pڢȜw`<0cpX_6-fzn&]>%˼cP;߉Ǻl 3 ^!$|ݴp7'Q_A;;qꑱngkL&6Yz^7Շފ;oPP<[fy`~ Bw6 B2<JA< FoYؠ[)R'uI4kR4Ű<ʉ5T*ׇe/7&q+RUۑmw{F]ZV&"q ӐwVs#16AG\9@KG*w$ִGuseaI"uRHԩ>7-e I}ZD姚eoRmMEaL@;S}RXjC@GfS\_gRO挪l^@nIQTN)='s­ף0(OW6B׎\WSsvL/EN::ld:C:PS?8"=\\.U]RHUM~UN/Ϗ%_ _=&ё~bo*4 V fM=s0ݲ@6MOҭȆ+^d Tqxb5j^?gKo(WXc_DBaUy5)A׾_~=_ͽtu% J:`O )u0Sqf 3t T9] 4H,K0`Og<9 2ҴB˦_ϱ*ʪ,@?gK>\ؽE7EN:!50So l]EŶiƾ_Z7 O"ęo>֜$_Z?"QF!y\ѭމ.+xob]V:dk"fQl:]Z`xf0ގH} ltꗻ?(/ZқH4H rCWhM=_-vDѳL@ͼtlUi\`w @b"uRHI50f076nejCR+IdZ'ʀC? fOr;+;/ϹFY`ίC?4 6Xz*k cfo|Kej/l(y.ǩi& R=@=xW ;sC[}tS*ZAg9>m2f2xA/'R7E&Q렣5=nQw} Z8T=?Ef`~EO-1%v}KD.Efֳ풼Woe.6SEGMp^ڂluA3>"Żaׄk3X_\zX{;4O 0EN:SNԏPv~|Ũ;sZl;㉚oGqL/E19+x7^CM~-iϯ_Ҩ"is^]_DDB*.Vv ӊozabf-\O;zE7mD>q)86I\Ƴ}uQgVtl)I[y"uRHI/5 OSי8S?0zR&F^]6il򫒘x;_:埛+QO6%|#:ɞ: tQdf#}I`! {oϺtj@?"ZA d9UYe9p27>2ksH)R'uR񾥟#}&ʹZ<)TZp wj%\NU~M D}ز󶱴׻ф6EKꏳ9ӄaֻxKSoʌXl;m?qhaR1r=&\hUk?fDɍ Cs6hl\Qr&z[k8I3K`-UzDf+gEO"Qf6Ҳ&%]*GӉ%dږ;PמgPbYl'UuFyg(ºYSRo8p0C==:|դN:SN]`f3;?K壪lc`1xueN7{ ycy]RVNM`V$xuea*KGEe-:=x`5`ozI@F\^ts]=bԛ,lp[en0nn06#`:EN ˕*IENDB`PKqWMETA-INF/manifest.xmlMn 9Ŷ2Bq08Hx@D틭8qU%3|アjslÆ<%Sۆ|n?7Y/V@!&>.rlHȝ&rD$wP9;A\M :8]F%R> C0im$ aPZ/Km,ԥ=/t"® u:zh9b{TtF*as;Ԧa& tB/Q8֝qc͆)a.]O}yčiИñe]HrҸ+"-~دPKaDPKqWl9..mimetypePKqWTConfigurations2/menubar/PKqWConfigurations2/floater/PKqWConfigurations2/popupmenu/PKqWConfigurations2/images/Bitmaps/PKqW5Configurations2/progressbar/PKqWoConfigurations2/statusbar/PKqWConfigurations2/toolbar/PKqWConfigurations2/toolpanel/PKqW'Configurations2/accelerator/current.xmlPKqWh lmanifest.rdfPKqWā>meta.xmlPKqWrF % styles.xmlPKqWCt< content.xmlPKqWJ" settings.xmlPKqWmwThumbnails/thumbnail.pngPKqWaD-META-INF/manifest.xmlPKp /libpappsomspp-0.9.20/tests/data/xic/xic_smooth.ods000644 001750 001750 00000011774 14473363363 023450 0ustar00rusconirusconi000000 000000 PK eWl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPK eWnMETA-INF/manifest.xmlAn E>ސfU!z  3ۇDj(,Š0ASl0Qhć܈e׈S솦O9ki<Ζi Hӹ(]"t1-q+F'㥀UbN=I*XO{EY%ɺ? GVdހN\暘gWyPKnPK eWN|/ meta.xml0y@VJ[O]RplX56MȾ}mF!*ͤ8&E'[*$L\ɟӏ5y6Y SH$*LP"c)%LCPT|j4b1uԲdN齥9)5D^=9HӀjL h;3[@0:P"+U;j8 ,mOZwZX6gNC7*v^!|*VY*|lluw (Wn礷γ]s:A8emɹygtJ9Ub, GuvCi9g5VA Ѵծt~Mߢ`C| ^ϕ5Xw7gzeJ0'4Π=Iʙ.udhٝT&fk-l8~.TPTggI6>+`!YJ]viU._r*Jòx8uO'ur4.bRŒݧ)j 8^H|"կS} zeAݦ26PKN|/ PK eWc0Rb content.xmlo8+s\$?j;Zi^fGګI&#۔߯@hw90%~c;|KǯoI݉34 !N7Oi$pV! v JG;e+i@* b+Hgu\;+.0?ƠҰ0/ Q,`Ai oFx=뮾b|p jxO-ʶ'&v(Fґĵ+[ꅝ~(w{E="]XlEDpdb:1ju ø*~콼\q<[TMTzhmҷ_DcGvNֳKwBfqH՝D/zTUEYک].3\m;mor+ EseIKji筕iӟMeke+?/߾[1)0y|`0+bvj$>+BĬh Q㵠`mP*.=fx5 @lJb9e(^&ha>q";?n JqN8.[2HmA*@żz_N݃~'׆O]O!jaVFz#6jMiX@"2|Cy> X̦XI#]oQ\i\Po$/nlβCɸK ;.~Ø8lSy1wZܔ&`k-N,rb.n欄"dL-`Ӿ;̚Zr3g= !~zc|̷wi+JS\ܼbTLMcjrqK|KUl-&hЁ%d2;cu(x,~Ȅ;b2Ȕ偞=ShlO>BcXdzʹm)1QL 7Z-zahàCX2Y6%va͔6JW̒9ٛ|ؘy"p-L[z|e:鶂&dX-<{>Mb,@ounrܮqݷNxbb/5cgz 뷿{@Ef5^;Wm>`,lX6k ׀ŒkM%|-SHa 3DY.L`zT_c|՜+8d5vi1 mq"몀cnE0\^%WƢ=UF#(E -7itbǝ0(ip'+F.t Ze柬 Gar] Lto:+S"ݵ4 ;{Kr  I^jy)B|yRD &p0>g'r[BsGi/0t9Zfv={P^F%`U+5Qs˽ x3)8MX6GT$<ՇfדּN Sw˖f~[2` L 3fM\A]2 )"v0J)t_Et J2߸Խ=F /CJ>Բf r,߂Pg5SX2AriWj\c@[3>RijAezz0n*n%g2K:͟ǷPKc}PK eWzG}# settings.xmlŚ[W:#.a29 dfw%)|Ҋmi7Oˏ-AHkV .u7[{G8QlCdM_ΥZ6I͉V>ev<2B)n4VżѺhDgC3:/G?G!( n6Owgi[:chtf?Tz9h7`/)|h?A$/'N Z$5/'ٟ fu":ov岆@TN[{딻n 䯼kbzxAau& J@zaص˻0qBcl,d˹ 1W!G !QܢJ=Ma(_䊰Ϩ.$c`"=Evon/,7 ;.!Bgx@|3yk;QVyJ+A&a.sC=aAجĵda܉TA/pɾ,>~2evFK؎A_ ⶛T6eZp@Je+H>Ҙ +ʉX}g; QĀ--މ ԅ^h<{cƫWCzuwPKzG}#PK eWl9..mimetypePK eWnTMETA-INF/manifest.xmlPK eWN|/ mmeta.xmlPK eWc0Rb content.xmlPK eWc}  styles.xmlPK eWzG}# :settings.xmlPKZlibpappsomspp-0.9.20/tests/data/xic/xic_spike.ods000644 001750 001750 00000011556 14473363363 023250 0ustar00rusconirusconi000000 000000 PK eWl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPK eWnMETA-INF/manifest.xmlAn E>ސfU!z  3ۇDj(,Š0ASl0Qhć܈e׈S솦O9ki<Ζi Hӹ(]"t1-q+F'㥀UbN=I*XO{EY%ɺ? GVdހN\暘gWyPKnPK eWN|/ meta.xml0y@VJ[O]RplX56MȾ}mF!*ͤ8&E'[*$L\ɟӏ5y6Y SH$*LP"c)%LCPT|j4b1uԲdN齥9)5D^=9HӀjL h;3[@0:P"+U;j8 ,mOZwZX6gNC7*v^!|*VY*|lluw (Wn礷γ]s:A8emɹygtJ9Ub, GuvCi9g5VA Ѵծt~Mߢ`C| ^ϕ5Xw7gzeJ0'4Π=Iʙ.udhٝT&fk-l8~.TPTggI6>+`!YJ]viU._r*Jòx8uO'ur4.bRŒݧ)j 8^H|"կS} zeAݦ26PKN|/ PK eWW8YPx` content.xmlQo8)mvu鞶ҽ:`k#4ͷ Rh\,!x Eه/Y:{?ν|$<οs?t@D8iTf8NDs;!I8/YR sa(khΪJ#*1ئ(eWUPZ`FdJ[؉ ELMKwihwec}a|h8xGEEkG.Ntw- }mv}h't+O7YӹNq7 ͏mnXMv.PAuw߶[ghTo_{,m;֘wC4?'x_RTI:Tuiosm]0jgۧ3)Fʺ㟑t7Pfbti/70H6)(qKd|+߭z ,ZӔ?Mekc=ߢ-ј|l쐜 KjN>t5W}U\q{5IPG)AE@>|pvwCZlJ/9uop 2G{{MiNӴn)STPpEt܍ eϏ!ZaN`1A0%4\3~8k w$/ooketVF1TK Fw WMHhH)9vh!.5u6.1 ?bw9f`[N"Ez7sNFc2G?E!LG1b,NRrT|Q~PZ{媊U Fr4xjJUmjort?`.}6;9PZbG p+L?p\$,Θ,D9͠{2$H;-Y],{C jaiCi &(l`i1 {ci1 {ki1 {gi1]ZZ ~[Z e5AaWCiTz%Txqjqrqz r蚋˝~\k..KXM\\bE]sqYŪ2-O[U\\U݋:b/vYsau˺ E[Y\\˺uE[Y\\˺uE3oe]sq/V5GOXY\\˺e]dWupѯgWu-._ k..U_ k..U\Nw}MK#6PKW8YPx`PK eWc} styles.xmlWݎ8@Ҙ@DeJjb};'lCOvHc˹ӆzU`u.)]6YYFe~XmkruIbjR1X2Y6%va͔6JW̒9ٛ|ؘy"p-L[z|e:鶂&dX-<{>Mb,@ounrܮqݷNxbb/5cgz 뷿{@Ef5^;Wm>`,lX6k ׀ŒkM%|-SHa 3DY.L`zT_c|՜+8d5vi1 mq"몀cnE0\^%WƢ=UF#(E -7itbǝ0(ip'+F.t Ze柬 Gar] Lto:+S"ݵ4 ;{Kr  I^jy)B|yRD &p0>g'r[BsGi/0t9Zfv={P^F%`U+5Qs˽ x3)8MX6GT$<ՇfדּN Sw˖f~[2` L 3fM\A]2 )"v0J)t_Et J2߸Խ=F /CJ>Բf r,߂Pg5SX2AriWj\c@[3>RijAezz0n*n%g2K:͟ǷPKc}PK eWzG}# settings.xmlŚ[W:#.a29 dfw%)|Ҋmi7Oˏ-AHkV .u7[{G8QlCdM_ΥZ6I͉V>ev<2B)n4VżѺhDgC3:/G?G!( n6Owgi[:chtf?Tz9h7`/)|h?A$/'N Z$5/'ٟ fu":ov岆@TN[{딻n 䯼kbzxAau& J@zaص˻0qBcl,d˹ 1W!G !QܢJ=Ma(_䊰Ϩ.$c`"=Evon/,7 ;.!Bgx@|3yk;QVyJ+A&a.sC=aAجĵda܉TA/pɾ,>~2evFK؎A_ ⶛T6eZp@Je+H>Ҙ +ʉX}g; QĀ--މ ԅ^h<{cƫWCzuwPKzG}#PK eWl9..mimetypePK eWnTMETA-INF/manifest.xmlPK eWN|/ mmeta.xmlPK eWW8YPx` content.xmlPK eWc} [ styles.xmlPK eWzG}#  settings.xmlPKZlibpappsomspp-0.9.20/tests/data/xic/xicprm_test_detect.ods000644 001750 001750 00000011341 14533323122 025135 0ustar00rusconirusconi000000 000000 PK qWl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPKqWnMETA-INF/manifest.xmlAn E>ސfU!z  3ۇDj(,Š0ASl0Qhć܈e׈S솦O9ki<Ζi Hӹ(]"t1-q+F'㥀UbN=I*XO{EY%ɺ? GVdހN\暘gWyPKnPKqWwN0 meta.xml0y@J[O]RplX56MȾ}mF voFfR"˓-X&.{Uk)$w &mA[ `1销i@ `([*F>PG1ÇLQj 2RŜ qC􊔉MˋZ]qCgi@cr5♭ PNA`ҪeAx'x-ci-S,~3?N;g/>ryjH~+xFcFiى9S?GXYⲶ\ܼƳ~qA1 ϣUT4~Ŝ3+FOhjWh?ϦoJWR!>/J7Xw7gzeJ0'4Π=Iʙ.udhٝT&fk-l8~.TPTggI6>+`!YJ]viU.-4/N ,bpNh\ĤOS9U8^H|"S}_ zeAݦ26PKwN0 PKqWG" content.xmlYo8~߿"=a?ڮN:^VWLb-`d76JZQ/WM= 3c}=pAYuF^*ea_XӔ$KTJY% +W Â%LVIζXBDS\(O|?YSeyJ5TmB%#s6y*vK}AaAF e8N†8Yꐂ(G 9-űvv/n,L-u>MYd ׏5}<ˊ!Ymڭ幮@ %/am`O$^Nٚ쪦o*AqrXԝT. nelȒr,n9)#b>fdrZ/z_b7^J$LxZ<< )hy<GgB_yN=d9ۃR[G~^6U.Gߏ߾R1}آRU{w_Vpg]WWpY9Nݦ6*`_ʞ=.Z* yEMe C sb7XBpzOyaO77t(zJ@XWwjk:IBz=7{g䳢)€1-CqIX,qZ; y'f|l/ 6(<]QZ:E*.e3gk`mHC4XZX +4I<_,ፀpr&ڝu{m˩9d@ܒ7T f~fDzgpLG{۩l!5ݚٹ:cri&Dž LOu<;nh2j:obAW5%;8Jh%kp$Ҡ(w@vdO;t7Ù!_x1DlK|sD\DwI?ߢaSE|~_]EiO1ڸ$4t] uZkO1B}68VB'#"ҍ/?A&텢((F7^1_!ϘUm q z:zNUl(psJi0oҋ=3&t*ҞbZgo8 T6 ηB= i1o-ԷmcU}o}7WL61?JN -R2J$HڲwHeˮof>*k8QhvI\% %+&_ޟ>d͉(5mLͅSFP.9&X37:7E.$mI>.?B1iZ{^Y12GDBUhZ}BJLͦ=;Uc}mEސ-BנO^[w@SF2C}5Ӱޭr.t=.XVQ< *0/rLode"C׭be8帎R5=k"-D-aHE5zŸm 0/4%(Ԍ_JҊ6T1 )2GD2 1Ae} ڷT&e8!bFC+Bj>HyHЩ,6I XZ~G}\wTurXM;t3*eIK|ow7%C҂~T?{mi*2 >dOҥ /_)=.>*%  0qMgr?A>]e6NϽ9f?eI3㴰wģFFͺi! MlZ<Hu,cjIЁrDH\0N%>hJ[FgjZnY3'#82# (@A7dJ\є8v:32 i+ت۽0~8-~_+V~)oI#@ z ˨+$Q uHNje֧Ah(&TM9S1-.)1oB{.lcTW@Wev<2B)n4VżѺhDgC3:/G?G!( n6Owgi[:chtf?Tz9h7`/)|h?A$/'N Z$5/'ٟ fu":ov岆@TN[{딻n 䯼kbzxAau& J@zaص˻0qBcl,d˹ 1W!G !QܢJ=Ma(_䊰Ϩ.$c`"=Evon/,7 ;.!Bgx@|3yk;QVyJ+A&a.sC=aAجĵda܉TA/pɾ,>~2evFK؎A_ ⶛T6eZp@Je+H>Ҙ +ʉX}g; QĀ--މ ԅ^h<{cƫWCzuwPKzG}#PK qWl9..mimetypePKqWnTMETA-INF/manifest.xmlPKqWwN0 mmeta.xmlPKqWG" content.xmlPKqW!v.} styles.xmlPKqWzG}#  settings.xmlPKZqlibpappsomspp-0.9.20/tests/data/asr1_digested_peptides.txt000644 001750 001750 00000016367 14346367014 025155 0ustar00rusconirusconi000000 000000 >prot1 RT AE DY >prot1b RT AE DY >prot2 VC IP >prot3 AE YV RD >prot4 YV VC >protL VC AR >GST-sans-ASR1 HNMLGGCPK HHHHHLFHHK HNMLGGCPKER YEEHLYER RIEAIPQIDK LTQSMAIIR AEISMLEGAVLDIRYGVSR AEISMLEGAVLDIR IAYSKDFETLK YEEHLYERDEGDK GLVQPTR YIAWPLQGWQATFGGGDHPPK FELGLEFPNLPYYIDGDVK TYLNGDHVTHPDFMLYDALDVVLYMDPMCLDAFPK MSPILGYWKIK DFETLKVDFLSK GLVQPTRLLLEYLEEK IKGLVQPTR MSPILGYWK IEAIPQIDK LLLEYLEEK YIADKHNMLGGCPK SSKYIAWPLQGWQATFGGGDHPPK SDLEVLFQGPLGSMAEEK FELGLEFPNLPYYIDGDVKLTQSMAIIR IEAIPQIDKYLK YGVSRIAYSK VDFLSKLPEMLK MFEDRLCHK LPEMLKMFEDR DEGDKWR LLLEYLEEKYEEHLYER LTQSMAIIRYIADK KFELGLEFPNLPYYIDGDVK ERAEISMLEGAVLDIR >ASR1-clivee DAEEAGGEKK KDPEHAHR IEEEVAAAAAVGSGGFAFHEHHEKK QHLGEAGAIAAGAFALYEK HHHHHLFHHK HHHHHLFHHKK DPEHAHRHK GPLGSMAEEK IEEEVAAAAAVGSGGFAFHEHHEK DPEHAHR GPLGSMAEEKHHHHHLFHHK HKIEEEVAAAAAVGSGGFAFHEHHEK HKQHLGEAGAIAAGAFALYEK DAEEAGGEK QHLGEAGAIAAGAFALYEKHEAK DHKDAEEAGGEK >sp|Q940H6|SRK2E_ARATH Serine/threonine-protein kinase SRK2E OS=Arabidopsis thaliana GN=SRK2E PE=1 SV=1 IDENVKR MDRPAVSGPMDLPIMHDSDR DLKLENTLLDGSPAPR IFVADPAK EIINHRSLR SSVLHSQPK GEKIDENVK LKICDFGYSK YIERGEK STVGTPAYIAPEVLLK EVILTPTHLAIVMEYASGGELFER FFFQQLISGVSYCHAMQVCHR NHEWFLK QSNELVAVK FSEDEARFFFQQLISGVSYCHAMQVCHR FSEDEAR HPNIVRFK ICNAGRFSEDEAR RISIPEIR ISIPEIRNHEWFLK ISIPEIR ILNVQYAIPDYVHISPECR ICDFGYSK DKQSNELVAVK SSVLHSQPKSTVGTPAYIAPEVLLK EVILTPTHLAIVMEYASGGELFERICNAGR DIGSGNFGVARLMR VADVWSCGVTLYVMLVGAYPFEDPEEPKNFR VADVWSCGVTLYVMLVGAYPFEDPEEPK QSNELVAVKYIER DIGSGNFGVAR ILNVQYAIPDYVHISPECRHLISR PAVSGPMDLPIMHDSDRYELVK PAVSGPMDLPIMHDSDR IFVADPAKR REIINHR HLISRIFVADPAK EYDGKVADVWSCGVTLYVMLVGAYPFEDPEEPK TIHRILNVQYAIPDYVHISPECR SLRHPNIVR LENTLLDGSPAPRLK FKEVILTPTHLAIVMEYASGGELFER LENTLLDGSPAPR FFFQQLISGVSYCHAMQVCHRDLK YELVKDIGSGNFGVAR ICDFGYSKSSVLHSQPK STVGTPAYIAPEVLLKK >sp|P17948|VGFR1_HUMAN Vascular endothelial growth factor receptor 1 OS=Homo sapiens GN=FLT1 PE=1 SV=2 EPITMEDLISYSFQVARGMEFLSSR ESERLSITK CDFCSNNEESFILDADSNMGNR QFCSTLTLNTAQANHTGFYSCK EHSITLNLTIMNVSLQDSGTYACR WMAPESIFDK RFTWTDSK MVSYWDTGVLLCALLSCLLLTGSSSGSK VQMTWSYPDEK ILTHIGHHLNVVNLLGACTK QGGPLMVIVEYCK DVTEEDAGNYTILLSIK NLTATLIVNVKPQIYEK DVTWILLRTVNNR KQQVLETVAGK IIWDSRK PFVEMYSEIPEIIHMTEGRELVIPCR DLFFLNKDAALHMEPK IDQSNSHANIFYSVLTIDK SLGRGAFGK LKDPELSLK PRFAELVEK WMAPESIFDKIYSTK VTSPNITVTLKK WSLPEMVSKESER LPYDASKWEFAR NKMASTLVVADSR DYIPINAILTGNSGFTYSTPAFSEDFFK NLSDHTVAISSSTTLDCHANGVPEPQITWFK ALMTELK ISGIYICIASNK AFPSPEVVWLKDGLPATEK MAITKEHSITLNLTIMNVSLQDSGTYACR TDYLSIIMDPDEVPLDEQCERLPYDASK ARNVYTGEEILQK DPELSLKGTQHIMQAGQTLHLQCR SPTCRTVAVK IQQEPGIILGPGSSTLFIERVTEEDEGVYHCK SSSEIKTDYLSIIMDPDEVPLDEQCER EPITMEDLISYSFQVAR NLTATLIVNVK MEPGLEQGKK TFEELLPNATSMFDDYQGDSSTLLASPMLKR MLKEGATASEYK LSITKSACGR MRAPEYSTPEIYQIMLDCWHR AVSSFPDPALYPLGSRQILTCTAYGIPQPTIK NPDYVRK ICDFGLARDIYK GMEFLSSR ALMTELKILTHIGHHLNVVNLLGACTK NISFYITDVPNGFHVNLEK VGTVGRNISFYITDVPNGFHVNLEK DAALHMEPKK TVNNRTMHYSISK IESITQRMAIIEGK SVNTSVHIYDK SGPSFKSVNTSVHIYDK YLAVPTSK YGNLSNYLK MPTEGEDLKLSCTVNK GFIISNATYK YGNLSNYLKSK EGATASEYKALMTELK MVSYWDTGVLLCALLSCLLLTGSSSGSKLK MASTLVVADSRISGIYICIASNK FAELVEK QTNTIIDVQISTPR TDYLSIIMDPDEVPLDEQCER DVTWILLR VVQASAFGIKK IESITQR ESGLSDVSR KFPLDTLIPDGK PSFCHSSCGHVSEGKR DLFFLNK ICDFGLAR ETESAIYIFISDTGR MPTEGEDLK LSCTVNKFLYR DVTEEDAGNYTILLSIKQSNVFK FTWTDSK EIGLLTCEATVNGHLYK GHTLVLNCTATTPLNTR GYSLIIK NVYTGEEILQK LPYDASK NNHKIQQEPGIILGPGSSTLFIER WEFARER APEYSTPEIYQIMLDCWHR GHTLVLNCTATTPLNTRVQMTWSYPDEK VKAFPSPEVVWLK TNYLTHRQTNTIIDVQISTPR DKGLYTCR LDSVTSSESFASSGFQEDK RIDQSNSHANIFYSVLTIDK FTWTDSKPK WFWHPCNHNHSEAR QQVLETVAGKR QTNTIIDVQISTPRPVK LSCTVNK ELVIPCR EHSITLNLTIMNVSLQDSGTYACRAR TMHYSISK VTEEDEGVYHCK QGGPLMVIVEYCKYGNLSNYLK ASLKIDLR NISFYITDVPNGFHVNLEKMPTEGEDLK FNSGSSDDVRYVNAFK SNLELITLTCTCVAATLFWLLLTLFIR NLSDHTVAISSSTTLDCHANGVPEPQITWFKNNHK PSFCHSSCGHVSEGK WSLPEMVSK QSNVFKNLTATLIVNVK IDLRVTSK IACCSPPPDYNSVVLYSTPPI SARYLTR ILTHIGHHLNVVNLLGACTKQGGPLMVIVEYCK NVYTGEEILQKK GTQHIMQAGQTLHLQCR QKMAITK DGLPATEK FTYDHAELERK DIYKNPDYVR MEPGLEQGK SVNTSVHIYDKAFITVK YVNAFKFMSLER LLRGHTLVLNCTATTPLNTR MASTLVVADSR LPLKWMAPESIFDK LGDLLQANVQQDGK ELVIPCRVTSPNITVTLK NILLSENNVVK SYRLSMK SACGRNGK ATNQKGSVESSAYLTVQGTSDK RSSSEIK VTSPNITVTLK FLYRDVTWILLR SLSDVEEEEDSDGFYK VTEEDEGVYHCKATNQK MAIIEGKNK KGFIISNATYK CDFCSNNEESFILDADSNMGNRIESITQR DGLPATEKSAR ISGIYICIASNKVGTVGR DQEAPYLLR IKTFEELLPNATSMFDDYQGDSSTLLASPMLK IDQSNSHANIFYSVLTIDKMQNK KIACCSPPPDYNSVVLYSTPPI SLSDVEEEEDSDGFYKEPITMEDLISYSFQVAR FNSGSSDDVR RDLFFLNK TMHYSISKQK GFIISNATYKEIGLLTCEATVNGHLYK EIGLLTCEATVNGHLYKTNYLTHR SKESGLSDVSR GLYTCRVR ESISAPKFNSGSSDDVR FAELVEKLGDLLQANVQQDGK QILTCTAYGIPQPTIKWFWHPCNHNHSEAR PFVEMYSEIPEIIHMTEGR SDVWSYGVLLWEIFSLGGSPYPGVQMDEDFCSR PQIYEKAVSSFPDPALYPLGSR TNYLTHR NILLSENNVVKICDFGLAR SDVWSYGVLLWEIFSLGGSPYPGVQMDEDFCSRLR GMEFLSSRK YLTRGYSLIIK GSVESSAYLTVQGTSDK VQMTWSYPDEKNK DYIPINAILTGNSGFTYSTPAFSEDFFKESISAPK CIHRDLAAR FTYDHAELER ETESAIYIFISDTGRPFVEMYSEIPEIIHMTEGR EITIRDQEAPYLLR SNLELITLTCTCVAATLFWLLLTLFIRK LGKSLGR QILTCTAYGIPQPTIK KETESAIYIFISDTGR FMSLERIK EKMEPGLEQGK DPELSLK EGATASEYK QQVLETVAGK GAFGKVVQASAFGIK GTQHIMQAGQTLHLQCRGEAAHK DAALHMEPK LDSVTSSESFASSGFQEDKSLSDVEEEEDSDGFYK QFCSTLTLNTAQANHTGFYSCKYLAVPTSK MAIIEGK AFITVKHR RFTYDHAELER AFPSPEVVWLK VVQASAFGIK GEAAHKWSLPEMVSK FPLDTLIPDGK GYSLIIKDVTEEDAGNYTILLSIK TVAVKMLK AVSSFPDPALYPLGSR ESGLSDVSRPSFCHSSCGHVSEGK RIIWDSR NGKQFCSTLTLNTAQANHTGFYSCK ESISAPK FPLDTLIPDGKR IQQEPGIILGPGSSTLFIER VRSGPSFK YLAVPTSKK APEYSTPEIYQIMLDCWHRDPK GDTRLPLK DLAARNILLSENNVVK TFEELLPNATSMFDDYQGDSSTLLASPMLK PRLDSVTSSESFASSGFQEDK >gi|27807057|ref|NP_777009.1| cAMP-dependent protein kinase catalytic subunit alpha [Bos taurus] MGNAAAAKKGSEQESVKEFLAKAKEDFLKKWENPAQNTAHLDQFERIKTLGTGSFGRVML PENLLIDQQGYIQVTDFGFAK GPGDTSNFDDYEEEEIRVSINEK QIEHTLNEK HMETGNHYAMKILDK ILQAVNFPFLVK IGRFSEPHAR DNSNLYMVMEYVPGGEMFSHLR DLKPENLLIDQQGYIQVTDFGFAK FKGPGDTSNFDDYEEEEIR VEAPFIPKFK FPSHFSSDLKDLLR FGNLKNGVNDIK AVDWWALGVLIYEMAAGYPPFFADQPIQIYEK WFATTDWIAIYQRK NLLQVDLTK GPGDTSNFDDYEEEEIR FSEPHARFYAAQIVLTFEYLHSLDLIYR LKQIEHTLNEK VEAPFIPK NGVNDIKNHK CGKEFSEF NLLQVDLTKR PENLLIDQQGYIQVTDFGFAKR QIEHTLNEKR VSINEKCGK ILQAVNFPFLVKLEFSFK KVEAPFIPK FYAAQIVLTFEYLHSLDLIYR DLLRNLLQVDLTK GRTWTLCGTPEYLAPEIILSK TWTLCGTPEYLAPEIILSKGYNK DNSNLYMVMEYVPGGEMFSHLRR HMETGNHYAMK IVSGKVR VRFPSHFSSDLK LEFSFKDNSNLYMVMEYVPGGEMFSHLR FYAAQIVLTFEYLHSLDLIYRDLK VKHMETGNHYAMK NHKWFATTDWIAIYQR RILQAVNFPFLVK FPSHFSSDLK FSEPHAR WFATTDWIAIYQR NGVNDIK TWTLCGTPEYLAPEIILSK >Oliv1GST-sans-ASR1 HNMLGGCPK HHHHHLFHHK HNMLGGCPKER YEEHLYER RIEAIPQIDK LTQSMAIIR AEISMLEGAVLDIRYGVSR AEISMLEGAVLDIR IAYSKDFETLK YEEHLYERDEGDK GLVQPTR YIAWPLQGWQATFGGGDHPPK FELGLEFPNLPYYIDGDVK TYLNGDHVTHPDFMLYDALDVVLYMDPMCLDAFPK MSPILGYWKIK DFETLKVDFLSK GLVQPTRLLLEYLEEK IKGLVQPTR MSPILGYWK IEAIPQIDK LLLEYLEEK YIADKHNMLGGCPK SSKYIAWPLQGWQATFGGGDHPPK SDLEVLFQGPLGSMAEEK FELGLEFPNLPYYIDGDVKLTQSMAIIR IEAIPQIDKYLK YGVSRIAYSK VDFLSKLPEMLK MFEDRLCHK LPEMLKMFEDR DEGDKWR LLLEYLEEKYEEHLYER LTQSMAIIRYIADK KFELGLEFPNLPYYIDGDVK ERAEISMLEGAVLDIR >Oliv2GST-sans-ASR1 HNMLGGCPK HHHHHLFHHK HNMLGGCPKER YEEHLYER RIEAIPQIDK LTQSMAIIR AEISMLEGAVLDIRYGVSR AEISMLEGAVLDIR IAYSKDFETLK YEEHLYERDEGDK GLVQPTR YIAWPLQGWQATFGGGDHPPK FELGLEFPNLPYYIDGDVK TYLNGDHVTHPDFMLYDALDVVLYMDPMCLDAFPK MSPILGYWKIK DFETLKVDFLSK GLVQPTRLLLEYLEEK IKGLVQPTR MSPILGYWK IEAIPQIDK LLLEYLEEK YIADKHNMLGGCPK SSKYIAWPLQGWQATFGGGDHPPK SDLEVLFQGPLGSMAEEK FELGLEFPNLPYYIDGDVKLTQSMAIIR IEAIPQIDKYLK YGVSRIAYSK VDFLSKLPEMLK MFEDRLCHK LPEMLKMFEDR DEGDKWR LLLEYLEEKYEEHLYER LTQSMAIIRYIADK KFELGLEFPNLPYYIDGDVK ERAEISMLEGAVLDIR libpappsomspp-0.9.20/tests/data/fuzzy.fasta000644 001750 001750 00000002052 14346367014 022172 0ustar00rusconirusconi000000 000000 >YGR254W MAVSKVYARSVYDSRGNPTVEVELTTEKGVFRSIVPSGASTGVHEALEMRDGDKSKWMGKGVLHAVKNVNDVIAPAFVKANIDVKDQKAVDDFLISLDGTANKSKLGANAILGVSLAASRAAAAEKNVPLYKHLADLSKSKTSPYVLPVPFLNVLNGGSHAGGALALQEFMIAPTGAKTFAEALRIGSEVYHNLKSLTKKRYGASAGNVGDEGGVAPNIQTAEEALDLIVDAIKAAGHDGKIKIGLDCASSEFFKDGKYDLDFKNPNSDKSKWLTGPQLADLYHSLMKRYPIVSIEDPFAEDDWEAWSHFFKTAGIQIVADDLTVTNPKRIATAIEKKAADALLLKVNQIGTLSESIKAAQDSFAAGWGVMVSHRSGETEDTFIADLVVGLRTGQIKTGAPARSERLAKLNQLLRIEEELGDNAVFAGENFHHGDKL* >YGR255C MFFSKVMLTRRILVRGLATAKSSAPKLTDVLIVGGGPAGLTLAASIKNSPQLKDLKTTLVDMVDLKDKLSDFYNSPPDYFTNRIVSVTPRSIHFLENNAGATLMHDRIQSYDGLYVTDGCSKATLDLARDSMLCMIEIINIQASLYNRISQYDSKKDSIDIIDNTKVVNIKHSDPNDPLSWPLVTLSNGEVYKTRLLVGADGFNSPTRRFSQIPSRGWMYNAYGVVASMKLEYPPFKLRGWQRFLPTGPIAHLPMPENNATLVWSSSERLSRLLLSLPPESFTALINAAFVLEDADMNYYYRTLEDGSMDTDKLIEDIKFRTEEIYATLKDESDIDEIYPPRVVSIIDKTRARFPLKLTHADRYCTDRVALVGDAAHTTHPLAGQGLNMGQTDVHGLVYALEKAMERGLDIGSSLSLEPFWAERYPSNNVLLGMADKLFKLYHTNFPPVVALRTFGLNLTNKIGPVKNMIIDTLGGNEK* >YGR254Wb IEKAADALLLKVNQIGTLSESIKAAQDSFAAGWGVMVSHRSGETEDTFIADLVVGLRTGQIKTGAPARSERLAKLNQLLRIEEELGDNAVFAGENFHHGDKL* libpappsomspp-0.9.20/tests/data/peaklist_15046.mgf000644 001750 001750 00000022306 14346367014 023035 0ustar00rusconirusconi000000 000000 BEGIN IONS PEPMASS=628.86414 CHARGE=2+ TITLE=Elution from: 0.03 to 0.03 period: 0 experiment: 1 cycles: 1 87.044518 18144.138672 87.055824 8354.851562 87.063744 2016.232910 87.100098 18421.673828 88.039680 9698.241211 89.060104 44192.640625 89.071327 2624.996826 91.054779 2603.166260 95.086212 1365.674316 98.023689 3297.584717 98.060287 12331.965820 99.044670 2327.026611 99.055923 1545.317993 100.075584 1391.067993 101.059868 1451.454834 101.071022 13954.998047 102.055191 21067.572266 102.067963 1751.412842 102.668068 1359.763184 103.039200 24412.833984 104.053139 11923.086914 104.058647 1342.618530 110.071404 38867.855469 111.074142 1669.391968 112.075729 11409.827148 112.087006 8545.700195 113.059448 2408.010254 113.071121 2622.328857 114.091179 1925.284790 115.049995 1874.524780 115.086487 11461.291992 116.070557 6221.220703 117.090759 1933.492676 120.080780 69923.148438 121.084206 6431.173340 124.075020 3348.915283 127.049965 5576.637207 127.086334 11661.118164 128.070465 2376.371094 129.065613 5615.301270 129.102066 49141.390625 130.049850 2689.066895 130.064941 9068.550781 130.086136 19009.972656 130.096588 2992.147461 130.105942 2090.864746 131.070007 7286.834961 131.080063 1316.510376 132.079163 3150.515137 133.060944 2464.227783 133.085938 41588.253906 134.089233 1769.308594 136.075470 37702.546875 137.079330 1622.675415 138.091125 10134.994141 141.065659 11474.673828 141.101654 18092.185547 143.081375 6109.229492 143.117661 22827.716797 144.992004 1464.924072 145.060623 8004.943359 147.064774 2498.512939 147.112473 27994.236328 152.106842 3176.760498 153.224838 1308.108521 154.122421 3012.099121 155.081207 6915.513672 155.098511 1636.600708 155.117111 2653.142822 156.076782 3016.724121 156.101578 1579.216675 156.112900 2744.694336 157.097351 6093.734863 157.133316 387371.312500 158.091949 17918.125000 158.137009 28787.212891 159.076370 6328.632812 159.091446 25464.886719 159.112045 2508.703857 161.116638 1391.095703 164.106735 8119.960449 166.051834 10162.687500 166.085358 2318.988281 167.080765 1640.880493 167.116714 1968.908081 169.097122 19649.781250 169.133087 10587.599609 170.059952 6053.019531 171.075607 1838.070190 171.112518 21860.894531 171.148911 9590.582031 173.055298 6099.194824 173.091766 9466.149414 173.128479 23195.652344 174.131516 1890.132935 175.118683 114514.062500 176.106918 1512.466553 176.122162 6147.963379 176.193634 1517.073608 177.112747 12566.492188 179.117569 11160.540039 181.096313 1940.629028 183.075867 1598.944824 183.112579 14749.015625 183.149002 9115.971680 185.092484 3282.660156 185.128174 161016.984375 185.163437 14694.981445 186.088257 1956.242798 186.122650 67927.695312 187.071411 10524.564453 187.106857 5280.120605 187.127304 2431.617432 187.143661 8250.417969 190.121948 5589.967285 191.117737 2246.268066 195.010712 1509.248413 195.112915 2744.053467 197.092239 2234.833008 197.127594 14080.273438 198.087189 3024.443848 199.070496 3069.625000 199.107971 2812.508545 199.180481 17245.560547 200.103683 3064.073486 200.138824 2493.577148 200.183548 1964.657837 201.086792 7726.030762 201.123016 37997.441406 202.126572 2326.244873 205.096786 1583.105591 205.133087 5809.354492 209.055099 2192.642822 209.127609 2091.321289 211.142990 11084.948242 212.102234 3518.737793 212.142365 1412.661133 213.085693 3005.957520 213.123367 5830.839355 213.158844 5559.228027 214.082443 1889.034424 214.118256 20301.185547 214.227036 1287.501221 215.138428 14427.273438 216.097137 2733.013428 216.136780 1543.826538 217.135635 6009.001465 219.149841 2321.413818 224.067154 1413.513184 225.123260 2923.341797 226.082169 3401.290283 226.118103 4919.172363 227.101974 6257.614746 227.174408 11753.022461 228.133438 3417.134521 228.170761 2438.746582 229.117401 21974.150391 230.150650 1499.035278 231.148270 3231.489746 232.091629 2002.455566 233.093231 1534.647095 233.164276 5197.069824 234.144943 2685.913574 235.106476 2900.670410 240.133713 8058.969727 241.097458 2579.674561 242.076324 11819.748047 242.149658 11843.730469 243.083252 1746.474365 243.109955 4264.221680 243.133743 13585.926758 244.092163 6231.159668 244.130951 1945.329468 244.165146 5613.818848 245.074600 1849.692993 245.097702 1759.345215 245.129745 2114.791748 248.159622 3091.928955 249.122849 1626.960815 249.158310 3392.912842 253.163834 2070.739502 254.149689 9135.857422 256.165314 13231.233398 257.163940 2673.761719 258.145203 2796.462402 259.090881 2177.565674 260.087555 11210.254883 260.196350 5892.501953 261.159698 1732.414673 262.119141 1801.527832 266.490662 1955.501465 267.109406 2728.808838 268.165436 5682.189941 270.144928 1875.437378 270.179962 2420.777100 271.175751 19311.507812 272.177551 2734.730225 273.157379 1534.761353 274.186340 2451.076416 276.173737 1545.784180 277.156738 1706.124512 280.165497 2041.900391 281.178314 1346.204590 282.681458 2797.146484 283.142426 4812.641113 283.174042 3069.075928 284.124390 6503.769043 284.195892 3043.389404 285.119232 6065.466309 288.202057 20257.283203 290.185913 2100.052246 294.179474 7048.812500 294.240875 1859.388062 295.104095 6620.692383 295.687225 11962.533203 296.192780 5515.833984 298.139862 1890.447510 299.136810 1639.019409 299.170380 1905.686523 300.155548 6538.995605 301.187897 2339.986816 305.187256 1920.291260 308.188263 127042.820312 308.696411 2126.457275 309.155121 5787.931152 309.192413 27910.439453 310.139862 2568.500000 310.185303 6508.791992 310.692444 2172.672363 312.153290 3189.823975 313.113495 12538.844727 313.188690 1975.831055 314.114197 1896.850952 314.170471 2865.320557 314.204987 2247.586670 316.150879 3140.043457 316.203400 1923.340332 325.150055 2029.384033 326.136749 2514.390869 326.170868 3154.686523 327.167389 10480.579102 327.202271 1882.414673 329.182373 1963.034058 330.169708 16639.707031 331.123627 3141.090576 331.200378 3162.555420 337.149963 2316.861572 338.214569 9017.833008 338.718414 1606.930298 339.166168 3356.879395 339.202576 1936.972656 342.202484 16079.307617 343.160583 6347.819824 343.201630 2071.403809 345.177734 3449.625000 345.551453 6691.722656 346.217377 2375.339844 351.223328 11618.914062 351.724548 3228.612793 352.217865 2690.344971 353.218079 1885.385498 355.159943 8912.199219 357.098114 1927.975342 358.214294 1736.720337 360.229309 1832.890381 360.893280 2330.638428 361.221649 2428.854248 364.229889 9062.381836 367.233643 2123.791016 368.229187 2744.937500 371.189880 2282.456055 373.172394 5744.861816 377.234833 2096.523193 380.192627 1926.091675 381.178162 2482.310059 382.574066 5761.355957 382.906097 2245.886963 383.189514 2290.049316 384.260315 8276.528320 385.247803 2181.710449 389.244080 2167.311523 391.245972 2949.695801 398.199646 2861.936768 398.243805 5498.726074 401.286804 105802.171875 402.290344 19728.931641 406.757629 6973.951660 408.185150 2450.285156 411.223633 2257.197021 416.215271 6090.443848 419.597748 9735.703125 419.761902 10776.622070 419.930634 1827.554565 420.263611 1842.315918 423.219025 2037.375122 426.197205 3201.258057 427.183075 1654.732422 428.269226 23050.919922 428.606567 2936.424072 429.235229 2906.506592 429.604828 2551.040527 432.768829 5860.122070 433.273590 2153.080322 434.600037 2147.856934 434.769379 1671.380859 436.612610 2177.742432 436.941284 5662.827148 438.273499 3186.123535 440.248993 1972.738037 442.275818 1915.121460 444.205963 1841.226562 446.277252 2035.585205 453.944763 1650.253906 455.288574 3316.989258 458.263245 2615.212646 459.615509 1863.107910 460.230011 2875.702148 465.289856 2623.639160 468.247223 5448.763184 469.248779 1538.587769 473.963409 15849.389648 474.302063 1776.236572 475.301758 2530.357422 479.296173 1962.167358 486.252625 2805.713379 488.304962 6455.313477 490.298798 2885.415527 492.779388 2017.462402 499.286285 8245.821289 501.311890 2011.293579 502.316284 3112.929688 503.307251 1799.261353 516.313049 45121.515625 517.317139 14043.514648 526.829224 2273.848389 530.327698 9894.389648 531.329895 3413.429443 539.281433 6490.512207 563.279907 2058.536377 583.275818 2728.320312 598.342834 2203.867432 599.351624 2194.641602 610.362244 2494.224121 612.375732 5493.890137 625.315491 1769.982300 629.397217 73087.492188 630.405823 20825.548828 643.415100 15713.551758 644.409302 5768.537109 659.344177 11506.041016 660.346252 1977.878784 672.317749 2206.620850 686.401672 7381.499512 687.395264 1842.079590 705.371216 2088.399414 714.451477 7890.922363 715.450500 1988.939697 742.367188 1603.732910 742.480652 45385.160156 743.481995 13701.318359 744.491882 2459.089355 757.400757 1801.570435 785.394836 1687.844849 794.399597 2111.431396 816.406738 1983.479614 827.470459 2028.102661 829.511353 31745.388672 830.514954 15936.654297 831.525085 2375.245361 843.513977 16358.182617 844.510803 6999.949219 856.497925 2125.722656 868.520081 3320.647705 869.518127 2974.634766 886.534607 75443.257812 887.538086 41018.570312 888.540955 7479.242676 914.578613 11644.483398 915.564148 5712.849609 955.549133 2414.943848 956.528992 1880.652954 972.547913 9842.802734 973.537292 2232.200439 983.543945 5599.468750 984.539734 8125.555664 985.539795 2660.197510 986.551514 1981.346802 1001.560913 61349.218750 1002.563416 29116.671875 1003.567932 9145.023438 1025.594116 2817.172852 1043.614746 21310.818359 1044.616089 10352.442383 1045.608154 7124.987793 1054.588135 11357.605469 1055.592896 10326.573242 1056.593018 2428.409424 1072.599121 82175.148438 1073.599487 47668.824219 1074.605591 12288.516602 END IONSlibpappsomspp-0.9.20/tests/data/peaklist_15046_simple_xt.mgf000644 001750 001750 00000001777 14346367014 025132 0ustar00rusconirusconi000000 000000 BEGIN IONS 155.081 2 157.097 2 157.133 100 158.092 5 158.137 7 159.076 2 159.091 7 164.107 2 166.052 3 169.097 5 169.133 3 170.06 2 171.113 6 171.149 2 173.055 2 173.092 2 173.128 6 175.119 30 176.122 2 177.113 3 179.118 3 183.113 4 183.149 2 185.128 42 185.163 4 186.123 18 187.071 3 187.144 2 190.122 1 197.128 4 199.18 4 201.123 10 205.133 1 211.143 3 214.118 5 215.138 4 217.136 2 227.174 3 229.117 6 240.134 2 243.134 4 244.092 2 254.15 2 256.165 3 260.088 3 268.165 1 271.176 5 284.124 2 285.119 2 288.202 5 294.179 2 295.687 3 300.156 2 308.188 33 310.185 2 313.113 3 327.167 3 330.17 4 338.215 2 342.202 4 345.551 2 351.223 3 355.16 2 364.23 2 373.172 1 382.574 1 384.26 2 401.287 27 406.758 2 416.215 2 419.762 3 428.269 6 432.769 2 436.941 1 473.963 4 488.305 2 499.286 2 516.313 12 530.328 3 539.281 2 630.406 5 643.415 4 659.344 3 686.402 2 714.451 2 742.481 12 829.511 8 843.514 4 886.535 19 888.541 2 914.579 3 972.548 3 984.54 2 1001.56 16 1003.57 2 1043.61 6 1045.61 2 1054.59 3 1072.6 21 1074.61 3 END IONSlibpappsomspp-0.9.20/tests/data/scan_15968.mgf000644 001750 001750 00000020435 14346367014 022163 0ustar00rusconirusconi000000 000000 BEGIN IONS TITLE=20120906_balliau_extract_1_A01_urnb-1.15968.15968.2 RTINSECONDS=2843.58 PEPMASS=638.36934732588 270659.09375 CHARGE=2+ 89.01705933 1255.7088623047 89.06031799 258758.140625 90.06361389 12425.6162109375 91.04946899 1279.7973632813 91.05496979 7705.0834960938 93.07034302 5502.732421875 95.04967499 8020.6440429688 95.08605957 13957.0859375 97.06526947 15931.7177734375 97.10166168 2961.0798339844 98.06058502 2268.4362792969 99.04463196 13088.48828125 99.05567932 1697.8403320313 99.08081055 11889.619140625 100.0761414 1732.7845458984 101.0602264 68738.7890625 101.0709839 2485.0419921875 101.0963669 2808.6296386719 102.0557022 5733.1376953125 102.0680771 52705.21875 102.5696335 1894.3771972656 103.0394211 90526.59375 103.0758057 46579.7265625 104.0426636 3137.4846191406 104.0536652 1501.13671875 104.0780258 1306.7487792969 105.0340576 2022.3594970703 105.0704956 2004.4497070313 107.0706329 13896.3359375 107.0858536 7528.7905273438 109.0652924 5838.6391601563 109.0755844 5429.1474609375 109.1019135 13790.2041015625 110.0716629 6277.5087890625 111.0444031 1263.7501220703 111.0732346 9752.9755859375 111.0806427 2150.9631347656 111.1173019 2187.4357910156 112.0759964 5092.751953125 112.0873947 1946.4089355469 113.0601196 19609.517578125 113.0963745 1460.1273193359 114.0918045 11088.1728515625 115.0756302 31572.689453125 116.0711975 2308.3208007813 116.0835114 1966.5692138672 117.0550232 20319.5546875 117.0708694 1363.9112548828 117.0913315 63645.52734375 118.0946884 2530.4331054688 119.0859146 5886.1547851563 120.0809555 17588.865234375 121.065239 1837.9537353516 121.0856552 2645.5048828125 121.1014099 11908.3134765625 123.0807648 9379.5078125 123.1170807 9777.67578125 124.0810547 28138.19140625 124.5827026 2318.9321289063 125.0600586 6995.6669921875 125.0961456 7132.4951171875 126.091713 5778.3940429688 127.0751114 5899.9174804688 127.1122284 5491.9658203125 128.0709229 5093.583984375 129.055481 4217.5986328125 129.0661926 5946.7451171875 129.0913239 7317.9497070313 129.102417 6977.8818359375 130.0649872 2379.7944335938 130.086792 5091.9565429688 131.0704346 48273.55078125 131.0865479 6404.5209960938 131.1068573 1801.388671875 132.0738373 1826.3405761719 133.0860291 245602.03125 133.587738 2947.2517089844 134.0891876 17387.115234375 134.9934235 2116.06640625 135.0806885 6530.39453125 135.1169891 12822.892578125 136.0761108 9739.486328125 137.0961914 8168.154296875 137.1326447 1995.6513671875 138.0916443 1773.0592041016 139.075592 6838.0 139.1116333 5610.2026367188 140.0950623 1929.6365966797 140.1069336 10021.7568359375 141.0912628 6473.4350585938 141.1273499 1759.0358886719 142.1228027 2570.9877929688 143.0705566 2289.27734375 143.1076355 3512.3959960938 143.1182098 13273.2998046875 144.1021729 2022.7707519531 145.0505676 1621.9372558594 145.0866089 1811.5487060547 145.1009216 6412.2231445313 145.1228027 1565.6546630859 146.0936737 15363.7412109375 146.5952454 2046.1076660156 147.0440826 1342.7746582031 147.0653687 8760.55078125 147.0808411 1940.5327148438 147.1017456 22403.322265625 147.1151886 8926.490234375 149.096344 6581.732421875 149.1326141 5847.23046875 151.0754395 5409.9750976563 151.0966034 2271.8627929688 151.1118774 5583.8862304688 152.1075592 5696.3525390625 153.0910187 6418.9233398438 153.1280212 2253.4147949219 154.0871735 1357.1446533203 154.1226807 25125.779296875 155.0970764 9781.48046875 155.1098633 1780.9515380859 156.1022034 8107.6635742188 156.1372986 1521.0915527344 157.1336517 27587.53515625 158.0917664 2172.6518554688 158.1174927 5618.04296875 159.1014404 7098.6098632813 159.1163635 5979.4326171875 161.0814209 1808.0194091797 161.0949097 1742.4127197266 161.1174011 6572.9584960938 161.1322479 4798.3046875 163.0971375 3163.7893066406 163.1119995 7658.6870117188 163.1485596 2277.7905273438 164.1051178 6259.3129882813 165.0913544 5256.0903320313 165.1276245 2644.9931640625 166.0537109 5869.0581054688 166.1229095 1603.3038330078 167.106308 1763.0024414063 168.0691223 2399.9912109375 168.105072 1593.3029785156 168.1378632 2041.982421875 169.0863037 2146.5048828125 169.0997314 1865.3441162109 169.1338654 7854.1811523438 170.1174316 24030.56640625 171.1010742 2235.5031738281 171.1145935 2957.3041992188 171.1491241 39062.51171875 172.1335144 13334.8388671875 173.0926971 5114.7153320313 173.1173859 8631.0771484375 173.1304321 5303.2939453125 174.1124878 2742.494140625 175.0973816 12538.6572265625 175.1190491 25183.2578125 175.1333008 7473.4174804688 175.1478119 2664.6098632813 177.089798 2204.5490722656 177.112793 52904.43359375 177.1273956 4770.4956054688 178.1155396 2485.744140625 179.1056976 2751.3095703125 179.1194 2403.6848144531 179.1432648 6999.306640625 181.122467 1902.1665039063 182.1543732 2802.0500488281 183.1013947 1776.2014160156 184.0733643 5227.3125 184.1339569 6150.5732421875 185.130249 5578.0576171875 185.1655731 2662.3176269531 187.0721893 1981.548828125 187.1103668 1845.9340820313 187.1448364 27989.029296875 188.1473541 1641.02734375 189.1278992 1738.5485839844 190.1210327 2328.5258789063 191.1283569 7989.3515625 192.1376648 1458.8133544922 196.1708374 1885.7652587891 197.1289825 19692.74609375 198.1502228 2859.9609375 199.1269531 2262.4111328125 200.2378998 2525.810546875 201.1252289 5841.9897460938 201.1628876 1564.2298583984 203.0696869 1625.8082275391 203.1061096 2486.6010742188 203.1261902 1390.7481689453 205.097641 2673.0754394531 205.1234131 1581.6942138672 205.1428528 1570.8016357422 205.1601562 1748.8874511719 207.1217651 1413.8245849609 209.1155853 1608.2569580078 210.1492462 2769.9521484375 211.1467285 2665.9431152344 212.1659698 2871.3371582031 213.1608734 1735.9232177734 214.2536774 7653.125 215.1395416 57434.86328125 215.1742859 1456.1774902344 216.1411591 7285.4838867188 217.1963806 1415.7796630859 219.1741943 1498.2758789063 221.1385498 7021.03515625 224.2018127 1453.6370849609 225.1244507 10115.4228515625 226.180954 10444.20703125 226.2162781 3078.7646484375 227.1793518 2551.1555175781 228.2689362 6800.203125 229.1183624 4647.0424804688 239.1482086 5466.2836914063 239.1782532 1728.9953613281 241.1061249 1809.4487304688 243.1337585 10133.7431640625 243.2111816 5106.9423828125 244.2638245 26424.1953125 245.1375122 2070.2758789063 245.2679291 2782.2180175781 247.1702728 2311.6684570313 249.1857147 2303.03515625 254.1518707 1745.3394775391 257.1912842 2580.5913085938 259.2059021 5775.8657226563 261.2215271 6808.6298828125 264.197052 3247.4858398438 271.1745605 2850.404296875 272.1611023 5428.9716796875 272.295105 11610.9755859375 273.1858215 11948.763671875 273.29953 2099.8110351563 275.2000122 16706.48046875 276.2032776 2150.2294921875 276.23172 2009.9041748047 277.1870117 2346.8825683594 277.2158508 36167.78125 278.218811 4981.1904296875 278.2492065 7893.5561523438 279.2310486 16870.66796875 280.2331848 2530.5712890625 282.1454468 1712.3553466797 283.1753235 7353.4057617188 287.0549011 2417.369140625 288.2008362 2296.0671386719 288.2892761 32807.41015625 289.1809998 6561.8813476563 289.2931519 8928.7724609375 290.213562 7618.1313476563 291.1944275 14399.251953125 292.2272339 14582.9296875 293.2099609 21588.30078125 294.2138672 2603.6435546875 294.2434998 28819.76953125 296.2303772 1793.5234375 296.2596436 9409.7119140625 304.1627808 1888.8386230469 304.2861633 10249.560546875 305.2889709 2610.1655273438 306.2073669 2676.5859375 307.2386169 2788.3474121094 308.1599121 6270.9970703125 308.18927 111641.8203125 308.2226257 12250.2041015625 309.1618652 2222.3840332031 309.1905518 2327.9846191406 309.2208252 2689.0446777344 310.2385559 13792.83203125 312.2175598 1833.0869140625 316.3209534 35943.87109375 326.1706848 18416.849609375 326.2326355 1699.2885742188 331.0803833 17702.869140625 360.883667 1547.1915283203 391.2321472 2437.4643554688 401.2879944 20657.66015625 402.2933044 2749.2355957031 419.1907349 1795.4686279297 424.3050537 2363.2216796875 447.3613892 1858.4702148438 499.2910156 2152.4155273438 516.3149414 8476.861328125 595.4268799 2431.6345214844 596.437439 14625.525390625 615.3829346 11218.17578125 637.4139404 205655.3125 638.4193115 84439.53125 639.4260254 22234.59765625 639.7420654 1605.19140625 661.3668823 9815.55078125 760.4345093 2172.9184570313 762.4481201 9644.32421875 802.458252 1777.2720947266 819.4713135 46275.16015625 820.4751587 21511.01953125 821.479126 3242.6091308594 865.4985352 1766.7867431641 932.5553589 13634.9755859375 933.555542 6769.23828125 1033.60791 14522.8349609375 1034.612915 9338.0546875 1035.601196 2029.5389404297 END IONS libpappsomspp-0.9.20/tests/data/scan_2016.mgf000644 001750 001750 00000004760 14346367014 022062 0ustar00rusconirusconi000000 000000 BEGIN IONS TITLE=20120906_balliau_extract_1_A01_urnb-1.2016.2016.3 RTINSECONDS=679.467 PEPMASS=417.210251631473 92010.6328125 CHARGE=3+ 88.03964233 1132.5438232422 91.05783844 1945.9479980469 93.03697968 6423.5581054688 93.8877182 949.33984375 101.0712357 2745.634765625 102.054985 2076.3117675781 110.0714722 9242.1689453125 110.1089249 2401.1418457031 111.1169739 60859.5390625 112.0867538 4359.4262695313 113.0709229 1816.2415771484 114.0912399 10426.2529296875 115.0864944 6046.146484375 115.0943604 1022.5435180664 116.069931 1423.4797363281 129.052124 12039.7470703125 129.0656586 1394.4805908203 129.1022491 24859.869140625 130.0557556 2151.2556152344 130.0862885 16290.126953125 130.106369 1363.5899658203 130.1225586 2179.09765625 132.1016998 14746.7333984375 136.0760803 1128.1666259766 147.1128998 2526.0073242188 148.9893951 1475.8253173828 150.9688263 1315.1126708984 158.0922394 2743.0395507813 160.9900208 1348.7218017578 171.1123962 1124.9548339844 175.1185303 6976.69921875 178.9996643 1813.0085449219 181.1324005 1413.560546875 192.1439362 1026.7457275391 195.1127319 4835.7553710938 197.1289825 1329.3343505859 199.1074982 5641.1293945313 199.1689911 2019.9860839844 212.1382294 1229.2264404297 214.3615417 1174.0621337891 219.0321045 1392.3151855469 220.0020447 10489.5341796875 226.1179657 5785.5395507813 226.1545258 6372.2534179688 227.1017914 5820.25 232.1399841 11028.5947265625 238.0132446 8069.5122070313 244.1659698 1325.5817871094 245.04599 5535.412109375 248.0338135 12457.939453125 256.0027771 1342.4294433594 260.0563049 1825.8388671875 262.0497742 27464.1640625 266.0445862 16504.076171875 273.0421753 1444.3150634766 278.147583 5875.7153320313 284.0088501 9916.9326171875 288.9837341 1620.6185302734 289.1090698 2272.7143554688 290.0444641 6077.5185546875 290.9855347 1170.3297119141 299.0606079 1776.7875976563 308.0524292 1256.2946777344 310.2061768 6570.59375 311.2112427 1255.4916992188 313.0271301 1527.1826171875 329.7975464 1146.9449462891 344.9778442 1528.3292236328 346.9727173 2032.9434814453 355.1586304 1242.5397949219 372.158905 1780.3537597656 374.2055359 1299.7049560547 383.0979614 1864.9808349609 399.1885681 1805.9935302734 441.2111206 1607.6456298828 452.2133789 2550.4313964844 458.2359619 12260.564453125 459.2363892 4424.109375 469.2424622 1397.7484130859 495.2503052 1540.9250488281 538.2573853 1751.5864257813 545.2380371 1561.4174804688 555.2854004 11548.43359375 556.2886963 1857.1185302734 563.2449341 1810.3669433594 652.3356934 1841.3546142578 1147.507446 1619.1011962891 END IONS libpappsomspp-0.9.20/tests/data/scan_PXD001468.mgf000644 001750 001750 00000004105 14346367014 022601 0ustar00rusconirusconi000000 000000 BEGIN IONS TITLE=F:\PXD001468\b1922_293T_proteinID_02A_QE3_122212.raw SCANS=2042 RTINSECONDS=1632.10896 CHARGE=3+ PEPMASS=374.1871 110.0717 32627.4 110.0782 2156.1 112.0876 1458.5 113.0712 1688.3 114.0781 2261.7 115.0869 2411.8 122.0717 33272.6 122.0796 2974.9 123.0748 2006 124.0379 1287.9 126.0783 2171.2 127.087 2220.1 129.0664 2037.4 129.1025 159761 130.0502 3948.3 130.0865 1609.1 130.106 12355.7 130.114 1150.2 133.0609 1505.9 134.0454 1406.6 134.072 2838.2 137.4538 1237.8 138.0665 1689.3 141.0661 4960.1 141.1017 1956.9 143.0819 12105.1 146.4966 1373.6 147.0762 4041.5 147.1125 4932.9 148.0607 4030.5 148.147 1529 150.0664 25783.4 152.2272 1517.2 154.0866 8474.8 156.0767 7469.3 158.0929 2035.7 159.0765 8362.1 166.062 8326.2 167.0929 79146 167.1063 3718.5 168.0963 3463.1 169.0979 2127.9 171.0762 18951 172.0798 1844.3 175.119 3138.4 178.0613 75361.5 179.0649 3091.3 180.0769 1748.8 182.0811 3459 186.1239 58902.7 187.0718 2609.4 187.1262 1563.3 188.1033 1863.1 189.0869 2137.1 195.0878 141749.5 196.0907 12561.2 196.1066 1848 197.1288 4482.2 199.108 2420.8 201.1225 1956 213.9927 2082.3 237.1329 2128.7 240.1345 1944.6 245.1134 2756 260.1986 2491.1 264.1093 8167.1 265.1103 2372.4 269.159 2062.3 270.9742 3197.8 271.9763 3614.4 284.0111 3123.9 285.0094 16990.7 286.0102 19355 287.0072 56338 288.0076 39763.7 289.0031 2864.9 292.1026 3473.6 294.1554 3801.8 299.1714 52980.9 300.1754 10303.4 302.0606 1945.9 305.0176 2591.7 308.1336 2319.6 311.1838 14513.5 318.1293 17087.4 319.1298 2495.5 328.9753 3100.2 355.0699 3452.4 356.0695 21731.7 357.068 66619.6 358.0686 93877.2 359.0656 34832.2 365.1563 5088.6 373.1776 3033.5 373.9366 2612.8 374.1494 3912 374.1902 13418.3 374.24 8458.4 375.0832 8864 375.1398 16967.7 375.186 2580.4 375.2349 28804.1 376.0773 4432.7 377.0759 2267 393.1483 2843.3 396.2251 2980.1 403.1385 2915.5 450.1716 2902.4 463.7452 3222.5 474.2343 3054.4 499.2622 3960.7 531.2527 46922.1 532.2542 12144.3 569.3646 2244.2 628.3047 220325.4 629.3082 73270.5 630.3082 14746.3 644.2979 25002.6 645.3016 4645.4 756.4031 4205.6 813.4247 9116.9 814.4234 4347 942.4662 9155 1088.634 2935.9 END IONS libpappsomspp-0.9.20/tests/memory/000755 001750 001750 00000000000 14533473271 020364 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/memory/test_tandemwrapperrun.cpp000644 001750 001750 00000004352 14526455546 025540 0ustar00rusconirusconi000000 000000 // File: test_tandemwrapperrun.cpp // Created by: Olivier Langella // Created on: 11/2/2021 // /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [TandemWrapperRun] -s // valgrind --leak-check=yes ./tests/catch2-only-tests [TandemWrapperRun] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include "../config.h" using namespace pappso; TEST_CASE("running X!Tandem on tims raw data.", "[TandemWrapperRun]") { qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 QTextStream outputStream(stdout, QIODevice::WriteOnly); UiMonitorText monitor(outputStream); TandemWrapperRun run_tandem("/usr/bin/tandem", "/tmp"); for(int i = 0; i < 5; i++) { INFO(QString("run %1").arg(i).toStdString()); run_tandem.run(monitor, QString("%1/tests/data/tandem/tandem_run_params.xml") .arg(CMAKE_SOURCE_DIR)); } #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } libpappsomspp-0.9.20/tests/memory/test_timsdata_reader_memory.cpp000644 001750 001750 00000026215 14533333502 026645 0ustar00rusconirusconi000000 000000 // File: test_timsdata_reader_memory.cpp // Created by: Olivier Langella // Created on: 12/2/2021 // /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [MemTimsData] -s // ./tests/catch2-only-tests [MonothreadTimsData] -s // ./tests/catch2-only-tests [rusconi] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include "../config.h" using namespace pappso; TEST_CASE("Check memory usage of tandemrun wrapper.", "[MemTandemWrapper]") { qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 QTextStream errorStream(stderr, QIODevice::WriteOnly); QTextStream outputStream(stdout, QIODevice::WriteOnly); TandemWrapperRun run_tandem("/usr/bin/tandem", "/tmp"); UiMonitorText monitor(outputStream); for(int i = 0; i < 5; i++) { INFO(QString("run %1").arg(i).toStdString()); run_tandem.run(monitor, QString("%1/tests/data/tandem/tandem_run_params.xml") .arg(CMAKE_SOURCE_DIR)); } #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } TEST_CASE("Check memory usage of timsdata reader.", "[MemTimsData]") { // VIRT 484Mo => 666Mo scan num="23944" qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 INFO("Test case start"); /* pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/gorgone/pappso/versions_logiciels_pappso/masschroq/donnees/" "PXD014777_maxquant_timstof/" "20180809_120min_200ms_WEHI25_brute20k_timsON_100ng_HYE124A_Slot1-7_1_890." "d", ""); */ pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/gorgone/pappso/fichiers_fabricants/Bruker/tims_doc/tdf-sdk/example_data/" "200ngHeLaPASEF_2min_compressed.d", ""); /* pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/home/langella/data1/bruker/5-18-2021_1_robert_28_mic02-std_1354.d", ""); */ INFO(QString("number of runIds = %1") .arg(file_access_A01.getMsRunIds().size()) .toStdString()); pappso::MsRunReaderSPtr msrunA01 = file_access_A01.getMsRunReaderSPtrByRunId("", "runa01"); file_access_A01.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); file_access_A01.getMsRunIds(); QTextStream outputStream(stdout, QIODevice::WriteOnly); UiMonitorText monitor(outputStream); pappso::MsRunReaderSPtr p_reader; p_reader = file_access_A01.msRunReaderSPtr(file_access_A01.getMsRunIds().front()); pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(p_reader.get()); REQUIRE(tims2_reader != nullptr); if(tims2_reader != nullptr) { qDebug(); tims2_reader->setMs2BuiltinCentroid(true); std::shared_ptr ms2filter; QString filters_str = "chargeDeconvolution|0.02dalton mzExclusion|0.01dalton"; ms2filter = std::make_shared(filters_str); monitor.setStatus(QString("timsTOF MS2 filters : %1").arg(filters_str)); tims2_reader->setMs2FilterCstSPtr(ms2filter); qDebug(); } // 517760 // REQUIRE(p_reader.get()->spectrumListSize() == 517760); QFile output_file("/tmp/test.xml"); // qDebug() << " TsvDirectoryWriter::writeSheet " << // QFileInfo(*_p_ofile).absoluteFilePath(); REQUIRE(output_file.open(QIODevice::WriteOnly)); pappso::UiMonitorVoid monitor_null; pappso::MzxmlOutput mzxml_ouput(monitor_null, QTextStream(&output_file).device()); mzxml_ouput.setReadAhead(true); mzxml_ouput.maskMs1(true); QThreadPool::globalInstance()->setMaxThreadCount(10); mzxml_ouput.write(p_reader.get()); mzxml_ouput.close(); #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } TEST_CASE("Check monothread usage of timsdata reader.", "[MonothreadTimsData]") { // VIRT 484Mo => 666Mo scan num="23944" qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 INFO("Test case start"); /* pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/gorgone/pappso/versions_logiciels_pappso/masschroq/donnees/" "PXD014777_maxquant_timstof/" "20180809_120min_200ms_WEHI25_brute20k_timsON_100ng_HYE124A_Slot1-7_1_890." "d", ""); */ pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/gorgone/pappso/fichiers_fabricants/Bruker/tims_doc/tdf-sdk/example_data/" "200ngHeLaPASEF_2min_compressed.d", ""); /* pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/home/langella/data1/bruker/5-18-2021_1_robert_28_mic02-std_1354.d", ""); */ INFO(QString("number of runIds = %1") .arg(file_access_A01.getMsRunIds().size()) .toStdString()); pappso::MsRunReaderSPtr msrunA01 = file_access_A01.getMsRunReaderSPtrByRunId("", "runa01"); file_access_A01.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); file_access_A01.getMsRunIds(); QTextStream outputStream(stdout, QIODevice::WriteOnly); UiMonitorText monitor(outputStream); pappso::MsRunReaderSPtr p_reader; p_reader = file_access_A01.msRunReaderSPtr(file_access_A01.getMsRunIds().front()); pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(p_reader.get()); REQUIRE(tims2_reader != nullptr); if(tims2_reader != nullptr) { qDebug(); tims2_reader->setMs2BuiltinCentroid(true); std::shared_ptr ms2filter; QString filters_str = "chargeDeconvolution|0.02dalton mzExclusion|0.01dalton"; ms2filter = std::make_shared(filters_str); monitor.setStatus(QString("timsTOF MS2 filters : %1").arg(filters_str)); tims2_reader->setMs2FilterCstSPtr(ms2filter); qDebug(); } // 517760 // REQUIRE(p_reader.get()->spectrumListSize() == 517760); p_reader.get()->setMonoThread(true); QFile output_file("/tmp/test.xml"); // qDebug() << " TsvDirectoryWriter::writeSheet " << // QFileInfo(*_p_ofile).absoluteFilePath(); REQUIRE(output_file.open(QIODevice::WriteOnly)); pappso::UiMonitorVoid monitor_null; pappso::MzxmlOutput mzxml_ouput(monitor_null, QTextStream(&output_file).device()); mzxml_ouput.setReadAhead(true); mzxml_ouput.maskMs1(true); QThreadPool::globalInstance()->setMaxThreadCount(10); mzxml_ouput.write(p_reader.get()); mzxml_ouput.close(); #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } TEST_CASE("Check speed of timsdata reader.", "[rusconi]") { // VIRT 484Mo => 666Mo scan num="23944" qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 INFO("Test case start"); /* pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/gorgone/pappso/versions_logiciels_pappso/masschroq/donnees/" "PXD014777_maxquant_timstof/" "20180809_120min_200ms_WEHI25_brute20k_timsON_100ng_HYE124A_Slot1-7_1_890." "d", ""); */ pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/gorgone/pappso/fichiers_fabricants/Bruker/tims_doc/tdf-sdk/example_data/" "200ngHeLaPASEF_2min_compressed.d", ""); /* pappso::MsFileAccessor file_access_A01( // "/gorgone/pappso/data_extraction_pappso/mzXML/" "/home/langella/data1/bruker/5-18-2021_1_robert_28_mic02-std_1354.d", ""); */ INFO(QString("number of runIds = %1") .arg(file_access_A01.getMsRunIds().size()) .toStdString()); QTextStream outputStream(stdout, QIODevice::WriteOnly); UiMonitorText monitor(outputStream); pappso::MsRunReaderSPtr p_reader; p_reader = file_access_A01.msRunReaderSPtr(file_access_A01.getMsRunIds().front()); Trace tic = p_reader.get()->getTicChromatogram(); qWarning() << tic.toString(); INFO(tic.toString().toStdString()); /* // 517760 // REQUIRE(p_reader.get()->spectrumListSize() == 517760); class Translator : public SpectrumCollectionHandlerInterface { public: Translator(){}; virtual ~Translator(){}; virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override { qDebug() << spectrum.toString(); }; virtual bool needPeakList() const override { return true; }; private: }; Translator reader_handler; reader_handler.setNeedMsLevelPeakList(1, true); reader_handler.setNeedMsLevelPeakList(2, true); // reader_handler.setNeedMsLevelPeakList(2,false); p_reader.get()->readSpectrumCollectionByMsLevel(reader_handler, 1); // p_reader.get()->readSpectrumCollection(reader_handler); QFile output_file("/dev/null"); // qDebug() << " TsvDirectoryWriter::writeSheet " << // QFileInfo(*_p_ofile).absoluteFilePath(); REQUIRE(output_file.open(QIODevice::WriteOnly)); pappso::UiMonitorVoid monitor_null; pappso::MzxmlOutput mzxml_ouput(monitor_null, QTextStream(&output_file).device()); mzxml_ouput.setReadAhead(true); // mzxml_ouput.maskMs1(true); QThreadPool::globalInstance()->setMaxThreadCount(10); mzxml_ouput.write(p_reader.get()); mzxml_ouput.close(); */ #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } libpappsomspp-0.9.20/tests/saxparsers/000755 001750 001750 00000000000 14533473271 021247 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/saxparsers/xtandemresultshandler.cpp000644 001750 001750 00000030213 14526455546 026401 0ustar00rusconirusconi000000 000000 #include "xtandemresultshandler.h" #include #include #include #include XtandemResultsHandler::XtandemResultsHandler(PrecisionPtr precision) : _precision(precision) { _ion_list.push_back(PeptideIon::y); _ion_list.push_back(PeptideIon::b); } XtandemResultsHandler::~XtandemResultsHandler() { } bool XtandemResultsHandler::startElement(const QString &namespaceURI [[maybe_unused]], const QString &localName [[maybe_unused]], const QString &qName, const QXmlAttributes &attributes) { // qDebug() << namespaceURI << " " << localName << " " << qName ; _tag_stack.push_back(qName); bool is_ok = true; try { // startElement_group if(qName == "group") { is_ok = startElement_group(attributes); } else if(qName == "domain") { is_ok = startElement_domain(attributes); } else if(qName == "aa") { is_ok = startElement_aa(attributes); } else if(qName == "peptide") { is_ok = startElement_peptide(attributes); } _currentText.clear(); } catch(PappsoException &exception_pappso) { _errorStr = QObject::tr( "ERROR in XtandemResultsHandler::startElement " "tag %1, PAPPSO exception:\n%2") .arg(qName) .arg(exception_pappso.qwhat()); return false; } catch(std::exception &exception_std) { _errorStr = QObject::tr( "ERROR in XtandemResultsHandler::startElement " "tag %1, std exception:\n%2") .arg(qName) .arg(exception_std.what()); return false; } return is_ok; } bool XtandemResultsHandler::endElement(const QString &namespaceURI [[maybe_unused]], const QString &localName [[maybe_unused]], const QString &qName) { bool is_ok = true; // endElement_peptide_list try { if(qName == "group") { is_ok = endElement_group(); } else if(qName == "domain") { is_ok = endElement_domain(); } // endElement_GAML__values else if(qName == "GAML:values") { is_ok = endElement_GAML__values(); } // end of detection_moulon // else if ((_tag_stack.size() > 1) && // (_tag_stack[_tag_stack.size() - 2] == "detection_moulon")) } catch(const PappsoException &exception_pappso) { _errorStr = QObject::tr( "ERROR in XtandemResultsHandler::endElement tag " "%1, PAPPSO exception:\n%2") .arg(qName) .arg(exception_pappso.qwhat()); return false; } catch(const std::exception &exception_std) { _errorStr = QObject::tr( "ERROR in XtandemResultsHandler::endElement tag " "%1, std exception:\n%2") .arg(qName) .arg(exception_std.what()); return false; } _currentText.clear(); _tag_stack.pop_back(); return is_ok; } bool XtandemResultsHandler::startElement_group(QXmlAttributes attributes) { if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "bioml")) { // _current_group_id = attributes.value("id"); _current_z = attributes.value("z").toUInt(); _current_protein_label = attributes.value("label"); return true; } if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "group")) { // if(attributes.value("type") == "support") { if(attributes.value("label") == "fragment ion mass spectrum") { _in_GAML_spectrum = true; } } } return true; } bool XtandemResultsHandler::startElement_peptide(QXmlAttributes attributes) { if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "protein")) { // _current_peptide_start = attributes.value("start").toUInt(); _current_peptide_end = attributes.value("end").toUInt(); return true; } return true; } bool XtandemResultsHandler::startElement_domain(QXmlAttributes attributes) { if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "peptide")) { // _current_domain_id = attributes.value("id"); qDebug() << "startElement_domain " << _current_domain_id; _current_hyperscore = attributes.value("hyperscore").toFloat(); _current_y_ions = attributes.value("y_ions").toUInt(); _current_b_ions = attributes.value("b_ions").toUInt(); _current_seq = attributes.value("seq"); _current_domain_start = attributes.value("start").toUInt(); _current_domain_end = attributes.value("end").toUInt(); // _current_mh = attributes.value("mh").toDouble(); Peptide peptide(_current_seq); _current_peptide_sp = peptide.makeNoConstPeptideSp(); return true; } return true; } bool XtandemResultsHandler::startElement_aa(QXmlAttributes attributes) { // // qDebug() << "startElement_aa " << _current_peptide_sp.get()->getSequence() << " is alive"; // char aa = attributes.value("type")[0].toLatin1(); uint at = attributes.value("at").toUInt(); pappso_double mod_mass = attributes.value("modified").toDouble(); uint position = at - _current_domain_start; AaModificationP mod = AaModification::getInstanceXtandemMod( attributes.value("type"), mod_mass, _current_peptide_sp, position); qDebug() << mod->getAccession(); _current_peptide_sp.get()->addAaModification(mod, position); qDebug() << "startElement_aa end"; return true; } bool XtandemResultsHandler::endElement_domain() { if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "peptide")) { qDebug() << _current_peptide_sp.get()->getSequence() << " is alive"; if(_current_peptide_sp.get()->matchPeak(_precision, _current_mh, 1)) { QString message = QObject::tr("we have a match domain id %1 with the current peptide") .arg(_current_domain_id); qDebug() << message; } else { _errorStr = QObject::tr("pappso peptide %1 mh %2 != tandem peptide mh %3") .arg(_current_peptide_sp.get()->getSequence()) .arg(_current_peptide_sp.get()->getMz(1)) .arg(_current_mh); qDebug() << _errorStr; return false; // throw PappsoException(); } } else { } return true; } bool XtandemResultsHandler::endElement_group() { _in_GAML_spectrum = false; if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "group")) { } else { // XtandemHyperscore hyperscore(_curent_spectrum, _current_peptide_sp, // _precision, _ion_list, _max_charge,_refine_spectrum_synthesis); } return true; } bool XtandemResultsHandler::endElement_GAML__values() { // // if(_in_GAML_spectrum) { // qDebug() << "XtandemResultsHandler::endElement_GAML__values a1"; if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "GAML:Xdata")) { // qDebug() << _currentText; _current_xdata = _currentText.split(" "); // qDebug() << "XtandemResultsHandler::endElement_GAML__values a2"; } else if((_tag_stack.size() > 1) && (_tag_stack[_tag_stack.size() - 2] == "GAML:Ydata")) { // qDebug() << "XtandemResultsHandler::endElement_GAML__values 1"; _curent_spectrum.clear(); QStringList _current_ydata = _currentText.split(" "); for(int i = 0; i < _current_ydata.size(); ++i) { _curent_spectrum.push_back(DataPoint( _current_xdata[i].toDouble(), _current_ydata[i].toDouble())); //_curent_spectrum.debugPrintValues(); } // qDebug() << "XtandemResultsHandler::endElement_GAML__values 2"; XtandemHyperscore hyperscore_withxtspectrum(_curent_spectrum, _current_peptide_sp, _current_z, _precision, _ion_list, true); // qDebug() << "XtandemResultsHandler::endElement_GAML__values 3"; float test_tandem = round(10 * hyperscore_withxtspectrum.getHyperscore()) / 10; // qDebug() << "XtandemResultsHandler::endElement_GAML__values 4"; if(test_tandem != (float)_current_hyperscore) { _errorStr = QObject::tr( "protein: %1 \ntest_tandem %2 != %3 (yions %4 vs " "%5) (bions %6 vs %7)") .arg(_current_protein_label) .arg(test_tandem) .arg(_current_hyperscore) .arg(hyperscore_withxtspectrum.getMatchedIons(PeptideIon::y)) .arg(_current_y_ions) .arg(hyperscore_withxtspectrum.getMatchedIons(PeptideIon::b)) .arg(_current_b_ions); qDebug() << _errorStr; return false; } else { _errorStr = QObject::tr( "protein: %1 \ntest_tandem %2 == %3 (yions %4 vs " "%5) (bions %6 vs %7)") .arg(_current_protein_label) .arg(test_tandem) .arg(_current_hyperscore) .arg(hyperscore_withxtspectrum.getMatchedIons(PeptideIon::y)) .arg(_current_y_ions) .arg(hyperscore_withxtspectrum.getMatchedIons(PeptideIon::b)) .arg(_current_b_ions); qDebug() << _errorStr; } // qDebug() << "XtandemResultsHandler::endElement_GAML__values 5"; } } return true; } bool XtandemResultsHandler::error(const QXmlParseException &exception) { _errorStr = QObject::tr( "Parse error at line %1, column %2, domain id %3:\n" "%4") .arg(exception.lineNumber()) .arg(exception.columnNumber()) .arg(_current_domain_id) .arg(exception.message()); return false; } bool XtandemResultsHandler::fatalError(const QXmlParseException &exception) { _errorStr = QObject::tr( "Parse error at line %1, column %2, domain id %3:\n" "%4") .arg(exception.lineNumber()) .arg(exception.columnNumber()) .arg(_current_domain_id) .arg(exception.message()); return false; } QString XtandemResultsHandler::errorString() const { return _errorStr; } bool XtandemResultsHandler::endDocument() { return true; } bool XtandemResultsHandler::startDocument() { return true; } bool XtandemResultsHandler::characters(const QString &str) { _currentText += str; return true; } libpappsomspp-0.9.20/tests/saxparsers/xtandemresultshandler.h000644 001750 001750 00000004115 14346367014 026040 0ustar00rusconirusconi000000 000000 #ifndef XTANDEMRESULTSHANDLER_H #define XTANDEMRESULTSHANDLER_H #include #include #include #include #include using namespace pappso; class XtandemResultsHandler : public QXmlDefaultHandler { public: XtandemResultsHandler(PrecisionPtr precision); virtual ~XtandemResultsHandler(); bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &attributes); bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName); bool startDocument(); bool endDocument(); bool characters(const QString &str); bool fatalError(const QXmlParseException &exception); bool error(const QXmlParseException &exception); QString errorString() const; private: std::vector _tag_stack; MassSpectrum _curent_spectrum; NoConstPeptideSp _current_peptide_sp; PrecisionPtr _precision; std::list _ion_list; unsigned int _max_charge; bool _refine_spectrum_synthesis; /// current parsed text QString _currentText; QString _current_group_id; QString _current_domain_id; float _current_hyperscore; uint _current_z; uint _current_y_ions; uint _current_b_ions; QString _current_seq; pappso_double _current_mh; uint _current_peptide_start; uint _current_peptide_end; uint _current_domain_start; uint _current_domain_end; bool _in_GAML_spectrum = false; QStringList _current_xdata; QString _current_protein_label; /// error message during parsing QString _errorStr; bool startElement_group(QXmlAttributes attributes); bool endElement_group(); bool startElement_peptide(QXmlAttributes attributes); bool startElement_domain(QXmlAttributes attributes); bool startElement_aa(QXmlAttributes attributes); bool endElement_domain(); bool endElement_GAML__values(); }; #endif // XTANDEMRESULTSHANDLER_H libpappsomspp-0.9.20/tests/widget/000755 001750 001750 00000000000 14533473271 020337 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/widget/CMakeLists.txt000644 001750 001750 00000001324 14372420503 023066 0ustar00rusconirusconi000000 000000 # Find includes in corresponding build directories set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) # File list set(CPP_FILES ) #################################### # GUI ######################################### set(TESTWIDGET_GUI_SRCS testwidgetgui.cpp main.cpp ) set (GUI_UIS uitestwidgetgui.ui ) # this will run uic on .ui files: qt6_wrap_ui( GUI_UI_HDRS ${GUI_UIS} ) #qt5_add_resources(deepprot_RCC_SRCS deepprot.qrc) add_executable(testwidgetgui ${TESTWIDGET_GUI_SRCS} ${GUI_UI_HDRS}) target_link_libraries(testwidgetgui pappsomspp-shared pappsomspp-widget-shared Qt6::Core Qt6::Gui Qt6::Widgets OdsStream::Core ) libpappsomspp-0.9.20/tests/widget/main.cpp000644 001750 001750 00000004303 14526455546 021776 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/tests/widget/main.cpp * \date 17/04/2021 * \author Olivier Langella * \brief launch minimalist GUI to test widgets */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include #include #include #include "testwidgetgui.h" using namespace std; int main(int argc, char *argv[]) { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); QTextStream errorStream(stderr, QIODevice::WriteOnly); QApplication app(argc, argv); try { QCoreApplication::setOrganizationName("PAPPSO"); QCoreApplication::setOrganizationDomain("pappso.inrae.fr"); QCoreApplication::setApplicationName("test Widget"); TestWidgetGui window; window.show(); return app.exec(); } catch(pappso::PappsoException &error) { errorStream << "Oops! an error occurred in Test Widget. Dont Panic :" << Qt::endl; errorStream << error.qwhat() << Qt::endl; app.exit(1); } catch(std::exception &error) { errorStream << "Oops! an error occurred in Test Widget. Dont Panic :" << Qt::endl; errorStream << error.what() << Qt::endl; app.exit(1); } } libpappsomspp-0.9.20/tests/widget/testwidgetgui.cpp000644 001750 001750 00000003016 14526455546 023742 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/tests/widget/testwidgetgui.cpp * \date 17/04/2021 * \author Olivier Langella * \brief minimalist main window to test widgets */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #include "testwidgetgui.h" #include "ui_uitestwidgetgui.h" #include TestWidgetGui::TestWidgetGui(QWidget *parent) : QMainWindow(parent), ui(new Ui::TestWidgetMainWindow) { qDebug(); ui->setupUi(this); /* ui->oboChooserWidget->setMzTarget(100); ui->oboChooserWidget->setPrecision( pappso::PrecisionFactory::getDaltonInstance(0.02)); */ } TestWidgetGui::~TestWidgetGui() { } libpappsomspp-0.9.20/tests/widget/testwidgetgui.h000644 001750 001750 00000002636 14346367014 023406 0ustar00rusconirusconi000000 000000 /** * \file pappsomspp/tests/widget/testwidgetgui.h * \date 17/04/2021 * \author Olivier Langella * \brief minimalist main window to test widgets */ /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ #pragma once #include namespace Ui { class TestWidgetMainWindow; } /** * @todo write docs */ class TestWidgetGui : public QMainWindow { Q_OBJECT public: explicit TestWidgetGui(QWidget *parent = 0); ~TestWidgetGui(); private: Ui::TestWidgetMainWindow *ui; }; libpappsomspp-0.9.20/tests/widget/uitestwidgetgui.ui000644 001750 001750 00000002475 14346367014 024133 0ustar00rusconirusconi000000 000000 TestWidgetMainWindow 0 0 800 600 MainWindow Obo term list 0 0 800 24 pappso::OboChooserWidget QWidget

pappsomspp/widget/obo/obochooserwidget/obochooserwidget.h
1 libpappsomspp-0.9.20/tests/catch-only-tests-main.cpp000644 001750 001750 00000000476 14526455546 023721 0ustar00rusconirusconi000000 000000 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do // this in one cpp file #define CATCH_CONFIG_ENABLE_BENCHMARKING #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif libpappsomspp-0.9.20/tests/common.cpp000644 001750 001750 00000004555 14533333502 021051 0ustar00rusconirusconi000000 000000 #include "common.h" using namespace pappso; MassSpectrum readMgf(const QString &filename) { try { qDebug(); MsFileAccessor accessor(filename, "msrun"); qDebug(); MsRunReaderSPtr reader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); qDebug() << accessor.getMsRunIds().front().get()->getXmlId(); std::cout << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " << reader->spectrumListSize() << std::endl; MassSpectrumSPtr spectrum_sp = reader->massSpectrumSPtr(0); std::cout << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " << spectrum_sp.get()->size() << std::endl; // spectrum_sp.get()->debugPrintValues(); spectrum_sp.get()->sortMz(); return *(spectrum_sp.get()); } catch(pappso::PappsoException &error) { std::cout << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << QString("ERROR reading file %1 :") .arg(filename) .toStdString() .c_str() << " " << error.what(); throw error; } } QualifiedMassSpectrum readQualifiedMassSpectrumMgf(const QString &filename) { try { qDebug(); MsFileAccessor accessor(filename, "msrun"); qDebug(); MsRunReaderSPtr reader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); qDebug() << accessor.getMsRunIds().front().get()->getXmlId(); std::cout << reader->spectrumListSize() << std::endl; QualifiedMassSpectrum spectrum_sp = reader->qualifiedMassSpectrum(0, true); return spectrum_sp; } catch(pappso::PappsoException &error) { std::cout << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << QString("ERROR reading file %1 : %2") .arg(filename) .arg(error.qwhat()) .toStdString() .c_str(); throw error; } } bool compareTextFiles(const QString &file1, const QString &file2) { QFile fnew(file1); fnew.open(QFile::ReadOnly | QFile::Text); // REQUIRE(fnew.errorString().toStdString() == ""); QTextStream infnew(&fnew); QFile fold(file2); fold.open(QFile::ReadOnly | QFile::Text); QTextStream infold(&fold); return (infold.readAll().toStdString() == infnew.readAll().toStdString()); } libpappsomspp-0.9.20/tests/common.h000644 001750 001750 00000001556 14346367014 020523 0ustar00rusconirusconi000000 000000 #pragma once #include #include #include #include #include #include using namespace pappso; MassSpectrum readMgf(const QString &filename); QualifiedMassSpectrum readQualifiedMassSpectrumMgf(const QString &filename); class XicOdsWriter { public: XicOdsWriter(CalcWriterInterface &output) : _output(output) { _output.writeCell("rt"); _output.writeCell("intensity"); _output.writeLine(); }; void write(const Trace &xic) { auto it = xic.begin(); while(it != xic.end()) { _output.writeCell(it->x); _output.writeCell(it->y); _output.writeLine(); it++; } }; private: CalcWriterInterface &_output; }; bool compareTextFiles(const QString &file1, const QString &file2); libpappsomspp-0.9.20/tests/config.h.cmake000644 001750 001750 00000000240 14346367014 021544 0ustar00rusconirusconi000000 000000 #pragma once #cmakedefine CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@" #cmakedefine CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@" #cmakedefine USEPAPPSOTREE @USEPAPPSOTREE@ libpappsomspp-0.9.20/tests/test_c13n15.cpp000644 001750 001750 00000022417 14526455546 021546 0ustar00rusconirusconi000000 000000 // // File: test_c13n15.cpp // Created by: Olivier Langella // Created on: 12/7/2023 // /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // ./tests/catch2-only-tests [C13N15] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("C13N15 amino acid labeling test suite.", "[C13N15]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: AA check C13 N15 amino acid composition ::..", "[C13N15]") { Aa lysine('K'); REQUIRE(lysine.getNumberOfAtom(AtomIsotopeSurvey::C) == 6); REQUIRE(lysine.getNumberOfAtom(AtomIsotopeSurvey::N) == 2); REQUIRE(lysine.getMass() == Approx(128.09496301)); AaModificationP k_c13n15 = AaModification::getInstance("C13N15:K"); lysine.addAaModification(k_c13n15); REQUIRE(lysine.getNumberOfIsotope(Isotope::C13) == 6); REQUIRE(lysine.getNumberOfAtom(AtomIsotopeSurvey::C) == 6); REQUIRE(lysine.getNumberOfIsotope(Isotope::N15) == 2); REQUIRE(lysine.getNumberOfAtom(AtomIsotopeSurvey::N) == 2); REQUIRE(lysine.getMass() == Approx(136.1091618297)); Aa aspartic_acid('D'); REQUIRE(aspartic_acid.getNumberOfAtom(AtomIsotopeSurvey::C) == 4); REQUIRE(aspartic_acid.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); AaModificationP d_c13n15 = AaModification::getInstance("C13N15:D"); aspartic_acid.addAaModification(d_c13n15); REQUIRE(aspartic_acid.getNumberOfIsotope(Isotope::C13) == 4); REQUIRE(aspartic_acid.getNumberOfAtom(AtomIsotopeSurvey::C) == 4); REQUIRE(aspartic_acid.getNumberOfIsotope(Isotope::N15) == 1); REQUIRE(aspartic_acid.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); Aa isoleucine('I'); REQUIRE(isoleucine.getNumberOfAtom(AtomIsotopeSurvey::C) == 6); REQUIRE(isoleucine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); AaModificationP i_c13n15 = AaModification::getInstance("C13N15:I"); isoleucine.addAaModification(i_c13n15); REQUIRE(isoleucine.getNumberOfIsotope(Isotope::C13) == 6); REQUIRE(isoleucine.getNumberOfAtom(AtomIsotopeSurvey::C) == 6); REQUIRE(isoleucine.getNumberOfIsotope(Isotope::N15) == 1); REQUIRE(isoleucine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); Aa leucine('L'); REQUIRE(leucine.getNumberOfAtom(AtomIsotopeSurvey::C) == 6); REQUIRE(leucine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); AaModificationP l_c13n15 = AaModification::getInstance("C13N15:L"); leucine.addAaModification(l_c13n15); REQUIRE(leucine.getNumberOfIsotope(Isotope::C13) == 6); REQUIRE(leucine.getNumberOfAtom(AtomIsotopeSurvey::C) == 6); REQUIRE(leucine.getNumberOfIsotope(Isotope::N15) == 1); REQUIRE(leucine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); Aa methionine('M'); REQUIRE(methionine.getNumberOfAtom(AtomIsotopeSurvey::C) == 5); REQUIRE(methionine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); AaModificationP m_c13n15 = AaModification::getInstance("C13N15:M"); methionine.addAaModification(m_c13n15); REQUIRE(methionine.getNumberOfIsotope(Isotope::C13) == 5); REQUIRE(methionine.getNumberOfAtom(AtomIsotopeSurvey::C) == 5); REQUIRE(methionine.getNumberOfIsotope(Isotope::N15) == 1); REQUIRE(methionine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); Aa glutamine('Q'); REQUIRE(glutamine.getNumberOfAtom(AtomIsotopeSurvey::C) == 5); REQUIRE(glutamine.getNumberOfAtom(AtomIsotopeSurvey::N) == 2); AaModificationP q_c13n15 = AaModification::getInstance("C13N15:Q"); glutamine.addAaModification(q_c13n15); REQUIRE(glutamine.getNumberOfIsotope(Isotope::C13) == 5); REQUIRE(glutamine.getNumberOfAtom(AtomIsotopeSurvey::C) == 5); REQUIRE(glutamine.getNumberOfIsotope(Isotope::N15) == 2); REQUIRE(glutamine.getNumberOfAtom(AtomIsotopeSurvey::N) == 2); Aa valine('V'); REQUIRE(valine.getNumberOfAtom(AtomIsotopeSurvey::C) == 5); REQUIRE(valine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); AaModificationP v_c13n15 = AaModification::getInstance("C13N15:V"); valine.addAaModification(v_c13n15); REQUIRE(valine.getNumberOfIsotope(Isotope::C13) == 5); REQUIRE(valine.getNumberOfAtom(AtomIsotopeSurvey::C) == 5); REQUIRE(valine.getNumberOfIsotope(Isotope::N15) == 1); REQUIRE(valine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); Aa alanine('A'); REQUIRE(alanine.getNumberOfAtom(AtomIsotopeSurvey::C) == 3); REQUIRE(alanine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); AaModificationP a_c13n15 = AaModification::getInstance("C13N15:A"); alanine.addAaModification(a_c13n15); REQUIRE(alanine.toAbsoluteString().toStdString() == "A(C13N15:A)"); REQUIRE(alanine.getNumberOfIsotope(Isotope::C13) == 3); REQUIRE(alanine.getNumberOfAtom(AtomIsotopeSurvey::C) == 3); REQUIRE(alanine.getNumberOfIsotope(Isotope::N15) == 1); REQUIRE(alanine.getNumberOfAtom(AtomIsotopeSurvey::N) == 1); REQUIRE(alanine.getMass() == Approx(75.0442131924)); REQUIRE(a_c13n15->getMass() == Approx(4.0070994068)); PeptideSp sample = PeptideStrParser::parseString( "S(C13N15:S)A(C13N15:A)M(C13N15:M)P(C13N15:P)L(C13N15:L)E(C13N15:E)R(" "C13N15:R)"); REQUIRE(sample.get()->getFormula(1).toStdString() == "C 0 (13)C 33 H 59 O 11 N 0 (15)N 10 S 1"); REQUIRE(sample.get()->toString().toStdString() == "S(C13N15:S)A(C13N15:A)M(C13N15:M)P(C13N15:P)L(C13N15:L)E(C13N15:E)" "R(MOD:00587)"); } SECTION("..:: AA init ::..", "[C13N15]") { Peptide sampler("SAMPLER"); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:S"), AminoAcidChar::serine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:A"), AminoAcidChar::alanine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:M"), AminoAcidChar::methionine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:P"), AminoAcidChar::proline); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:L"), AminoAcidChar::leucine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:E"), AminoAcidChar::glutamic_acid); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:R"), AminoAcidChar::arginine); REQUIRE(sampler.toString().toStdString() == "S(C13N15:S)A(C13N15:A)M(C13N15:M)P(C13N15:P)L(C13N15:L)E(C13N15:E)" "R(MOD:00587)"); } SECTION("..:: check C13 N15 on MQVILLDK ::..", "[MQVILLDK]") { Peptide sampler("MQVILLDK"); REQUIRE(sampler.getMass() == Approx(958.5521391716)); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:M"), AminoAcidChar::methionine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:Q"), AminoAcidChar::glutamine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:V"), AminoAcidChar::valine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:I"), AminoAcidChar::isoleucine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:L"), AminoAcidChar::leucine); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:D"), AminoAcidChar::aspartic_acid); sampler.addAaModificationOnAllAminoAcid( AaModification::getInstance("C13N15:K"), AminoAcidChar::lysine); REQUIRE(sampler.toString().toStdString() == "M(C13N15:M)Q(C13N15:Q)V(C13N15:V)I(C13N15:I)L(C13N15:L)L(C13N15:L)" "D(C13N15:D)K(MOD:00582)"); REQUIRE(sampler.getMass() == Approx(1011.666746131)); } } libpappsomspp-0.9.20/tests/test_datapoint.cpp000644 001750 001750 00000004426 14526455546 022617 0ustar00rusconirusconi000000 000000 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include using namespace pappso; TEST_CASE("Construct a non-initialized DataPoint.", "[DataPoint]") { DataPoint invalid_data_point; REQUIRE(invalid_data_point.isValid() == false); } TEST_CASE("Construct DataPoint_s initialized in various ways.", "[DataPoint][constructors]") { DataPoint datapoint1(12345.123456789, 987.987654321); REQUIRE(datapoint1.x == 12345.123456789); REQUIRE(datapoint1.y == 987.987654321); REQUIRE(datapoint1.isValid() == true); DataPoint datapoint2(datapoint1); REQUIRE(datapoint2.x == 12345.123456789); REQUIRE(datapoint2.y == 987.987654321); std::pair xy_pair(12345.123456789, 987.987654321); DataPoint datapoint3(xy_pair); REQUIRE(datapoint3.x == 12345.123456789); REQUIRE(datapoint3.y == 987.987654321); datapoint3.initialize(456.6, 987.54); REQUIRE(datapoint3.x == 456.6); REQUIRE(datapoint3.y == 987.54); datapoint3.initialize(datapoint1); REQUIRE(datapoint3.x == 12345.123456789); REQUIRE(datapoint3.y == 987.987654321); // comma-separated values QString text1("1234.456789, 9876.54321"); DataPoint datapoint4; datapoint4.initialize(text1); REQUIRE(datapoint4.x == 1234.456789); REQUIRE(datapoint4.y == 9876.54321); // space-separated values QString text2("1234.45 987.54"); datapoint4.initialize(text2); REQUIRE(datapoint4.x == 1234.45); REQUIRE(datapoint4.y == 987.54); DataPoint datapoint_copy = datapoint4; REQUIRE(datapoint_copy.x == 1234.45); REQUIRE(datapoint_copy.y == 987.54); datapoint4.incrementX(5.123466); REQUIRE(datapoint4.x == (1234.45 + 5.123466)); datapoint4.incrementY(8.123466); REQUIRE(datapoint4.y == (987.54 + 8.123466)); } TEST_CASE("Basic functionality of DataPoint", "[DataPoint]") { // Construct a DataPoint DataPoint datapoint1(12345.123456789, 987.987654321); SECTION("Reset a DataPoint", "[DataPoint]") { datapoint1.reset(); REQUIRE(datapoint1.isValid() == false); } SECTION("Test identity of two DataPoint_s.", "[DataPoint]") { DataPoint datapoint2(datapoint1); REQUIRE(datapoint2 == datapoint1); } } libpappsomspp-0.9.20/tests/test_maptrace.cpp000644 001750 001750 00000030321 14526455546 022421 0ustar00rusconirusconi000000 000000 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include using namespace pappso; TEST_CASE("Constructing MapTrace objects.", "[MapTrace][constructors]") { // Create a Trace that looks like something real. std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 12963.5715942383")); data_point_vector.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("610.12000 55999.7628784180")); data_point_vector.push_back(DataPoint("610.17000 9335990.3578681946")); data_point_vector.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("610.27000 54459.4762458801")); data_point_vector.push_back(DataPoint("610.32000 205580.6580276489")); data_point_vector.push_back(DataPoint("610.37000 84627.3196716309")); data_point_vector.push_back(DataPoint("610.42000 51061.7636718750")); data_point_vector.push_back(DataPoint("610.47000 20260.0218505859")); data_point_vector.push_back(DataPoint("610.52000 29848.3424072266")); data_point_vector.push_back(DataPoint("610.57000 27266.8031616211")); data_point_vector.push_back(DataPoint("610.62000 36922.3937377930")); data_point_vector.push_back(DataPoint("610.67000 44082.4265441895")); data_point_vector.push_back(DataPoint("610.72000 32580.1677703857")); data_point_vector.push_back(DataPoint("610.77000 39453.8380126953")); data_point_vector.push_back(DataPoint("610.82000 63698.7124328613")); data_point_vector.push_back(DataPoint("610.87000 34406.7755126953")); data_point_vector.push_back(DataPoint("610.92000 33385.7486267090")); data_point_vector.push_back(DataPoint("610.97000 22105.9357604980")); data_point_vector.push_back(DataPoint("611.02000 34175.9539184570")); data_point_vector.push_back(DataPoint("611.07000 18893.1743774414")); data_point_vector.push_back(DataPoint("611.12000 33655.8040771484")); data_point_vector.push_back(DataPoint("611.17000 1985432.9582707286")); data_point_vector.push_back(DataPoint("611.220000 350845489.9638078809")); data_point_vector.push_back(DataPoint("611.27000 201093.0304565430")); data_point_vector.push_back(DataPoint("611.32000 130582.0210266113")); data_point_vector.push_back(DataPoint("611.37000 191842.3922958374")); data_point_vector.push_back(DataPoint("611.42000 154248.7982788086")); data_point_vector.push_back(DataPoint("611.47000 31618.7268676758")); data_point_vector.push_back(DataPoint("611.52000 31222.7547607422")); data_point_vector.push_back(DataPoint("611.57000 44491.2401733398")); data_point_vector.push_back(DataPoint("611.62000 17576.1995697021")); data_point_vector.push_back(DataPoint("611.67000 29514.0727844238")); data_point_vector.push_back(DataPoint("611.72000 60104.3011474609")); data_point_vector.push_back(DataPoint("611.77000 54284.4918212891")); data_point_vector.push_back(DataPoint("611.82000 73222.5983886719")); data_point_vector.push_back(DataPoint("611.87000 34145.2793884277")); data_point_vector.push_back(DataPoint("611.92000 43328.2853698730")); data_point_vector.push_back(DataPoint("611.97000 34486.0655212402")); data_point_vector.push_back(DataPoint("612.02000 33462.5801696777")); data_point_vector.push_back(DataPoint("612.07000 45740.2189331055")); data_point_vector.push_back(DataPoint("612.12000 16315.6034545898")); data_point_vector.push_back(DataPoint("612.17000 3137434.1922011375")); data_point_vector.push_back(DataPoint("612.220000 244825577.0747365952")); data_point_vector.push_back(DataPoint("612.27000 107560.2426452637")); data_point_vector.push_back(DataPoint("612.32000 114637.8828430176")); data_point_vector.push_back(DataPoint("612.37000 87648.2245483398")); data_point_vector.push_back(DataPoint("612.42000 75788.5508422852")); data_point_vector.push_back(DataPoint("612.47000 33858.1067199707")); data_point_vector.push_back(DataPoint("612.52000 26404.7212524414")); data_point_vector.push_back(DataPoint("612.57000 45710.7806396484")); data_point_vector.push_back(DataPoint("612.62000 31294.2814941406")); data_point_vector.push_back(DataPoint("612.67000 29457.2803955078")); data_point_vector.push_back(DataPoint("612.72000 23048.1495971680")); data_point_vector.push_back(DataPoint("612.77000 15255.7875061035")); data_point_vector.push_back(DataPoint("612.82000 48801.3896789551")); data_point_vector.push_back(DataPoint("612.87000 36464.7495727539")); data_point_vector.push_back(DataPoint("612.92000 51507.2986145020")); data_point_vector.push_back(DataPoint("612.97000 45925.2813415527")); data_point_vector.push_back(DataPoint("613.02000 40396.0013732910")); data_point_vector.push_back(DataPoint("613.07000 40331.5417785645")); data_point_vector.push_back(DataPoint("613.12000 47593.1001892090")); data_point_vector.push_back(DataPoint("613.17000 1537602.4452308416")); data_point_vector.push_back(DataPoint("613.22000 95458729.2017828822")); data_point_vector.push_back(DataPoint("613.27000 117836.8993530273")); data_point_vector.push_back(DataPoint("613.32000 172388.2191467285")); data_point_vector.push_back(DataPoint("613.37000 117651.7643432617")); data_point_vector.push_back(DataPoint("613.42000 134527.9219970703")); data_point_vector.push_back(DataPoint("613.47000 21348.3722229004")); data_point_vector.push_back(DataPoint("613.52000 480.5255737305")); data_point_vector.push_back(DataPoint("613.57000 71578.8419189453")); data_point_vector.push_back(DataPoint("613.62000 47088.4295806885")); data_point_vector.push_back(DataPoint("613.67000 11516.1672668457")); data_point_vector.push_back(DataPoint("613.72000 42134.2611389160")); data_point_vector.push_back(DataPoint("613.77000 43366.3011627197")); data_point_vector.push_back(DataPoint("613.82000 76272.4001235962")); data_point_vector.push_back(DataPoint("613.87000 98113.1940002441")); data_point_vector.push_back(DataPoint("613.92000 29165.7173461914")); data_point_vector.push_back(DataPoint("613.97000 55852.7840881348")); data_point_vector.push_back(DataPoint("614.02000 29957.4020996094")); data_point_vector.push_back(DataPoint("614.07000 46380.1217651367")); data_point_vector.push_back(DataPoint("614.12000 22395.2603759766")); data_point_vector.push_back(DataPoint("614.17000 1585080.8988181949")); data_point_vector.push_back(DataPoint("614.22000 35239172.4581222534")); data_point_vector.push_back(DataPoint("614.27000 185695.5917358398")); data_point_vector.push_back(DataPoint("614.32000 231630.3202667236")); data_point_vector.push_back(DataPoint("614.37000 165712.7152709961")); data_point_vector.push_back(DataPoint("614.42000 115771.4071350098")); data_point_vector.push_back(DataPoint("614.47000 58982.7239074707")); data_point_vector.push_back(DataPoint("614.52000 2547873.7498645782")); data_point_vector.push_back(DataPoint("614.57000 18437.3129577637")); data_point_vector.push_back(DataPoint("614.62000 22860.9023132324")); data_point_vector.push_back(DataPoint("614.67000 21072.2604064941")); data_point_vector.push_back(DataPoint("614.72000 35379.6509933472")); data_point_vector.push_back(DataPoint("614.77000 59054.2345886230")); data_point_vector.push_back(DataPoint("614.82000 75995.3719787598")); data_point_vector.push_back(DataPoint("614.87000 106325.3341369629")); data_point_vector.push_back(DataPoint("614.92000 43670.2942276001")); data_point_vector.push_back(DataPoint("614.97000 39008.6439514160")); // clang-format on REQUIRE(100 == data_point_vector.size()); // Create a Trace using the DataPoint vector. Trace trace(data_point_vector); REQUIRE(100 == trace.size()); SECTION("Construct MapTrace from Trace", "[MapTrace]") { // Create a MapTrace MapTrace map_trace(trace); REQUIRE(100 == map_trace.size()); // And now back to a Trace Trace trace1(map_trace); REQUIRE(100 == map_trace.size()); REQUIRE(trace1[0].x == 610.02000); REQUIRE(trace1[0].y == 12963.5715942383); REQUIRE(trace1[99].x == 614.97000); REQUIRE(trace1[99].y == 39008.6439514160); REQUIRE(trace1[49].x == 612.47000); REQUIRE(trace1[49].y == 33858.1067199707); } SECTION("Construct MapTrace from MapTrace", "[MapTrace]") { // Create a MapTrace MapTrace map_trace(trace); REQUIRE(100 == map_trace.size()); MapTrace map_trace1(map_trace); REQUIRE(100 == map_trace1.size()); // Back to a trace. Trace trace1(map_trace1); REQUIRE(trace1[0].x == 610.02000); REQUIRE(trace1[0].y == 12963.5715942383); REQUIRE(trace1[99].x == 614.97000); REQUIRE(trace1[99].y == 39008.6439514160); REQUIRE(trace1[49].x == 612.47000); REQUIRE(trace1[49].y == 33858.1067199707); } } TEST_CASE("Initializing MapTrace objects.", "[MapTrace][initializers]") { // Create a vector of doubles (x) std::vector x_vector{1234.56789, 1233.56789, 1232.56789}; // Create a vector of doubles (y) std::vector y_vector{7876.54321, 8876.54321, 9876.54321}; // Create a map std::map map_of_doubles{ {1234.56789, 7876.54321}, {1233.56789, 8876.54321}, {1232.56789, 9876.54321}}; REQUIRE(3 == map_of_doubles.size()); SECTION("Initialize MapTrace with vectors of double_s", "[MapTrace]") { MapTrace map_trace; std::size_t map_size = map_trace.initialize(x_vector, y_vector); REQUIRE(3 == map_size); REQUIRE(map_trace[1232.56789] == 9876.54321); REQUIRE(map_trace[1233.56789] == 8876.54321); REQUIRE(map_trace[1234.56789] == 7876.54321); } SECTION("Initialize MapTrace with map of double_s", "[MapTrace]") { MapTrace map_trace; std::size_t map_size = map_trace.initialize(map_of_doubles); REQUIRE(3 == map_size); REQUIRE(map_trace[1232.56789] == 9876.54321); REQUIRE(map_trace[1233.56789] == 8876.54321); REQUIRE(map_trace[1234.56789] == 7876.54321); } SECTION("Initialize MapTrace with operator =", "[MapTrace]") { MapTrace map_trace1; std::size_t map_size1 = map_trace1.initialize(map_of_doubles); REQUIRE(3 == map_size1); REQUIRE(map_trace1[1232.56789] == 9876.54321); REQUIRE(map_trace1[1233.56789] == 8876.54321); REQUIRE(map_trace1[1234.56789] == 7876.54321); MapTrace map_trace2 = map_trace1; REQUIRE(3 == map_trace2.size()); REQUIRE(map_trace2[1232.56789] == 9876.54321); REQUIRE(map_trace2[1233.56789] == 8876.54321); REQUIRE(map_trace2[1234.56789] == 7876.54321); } } TEST_CASE("Basic functionality of MapTrace", "[MapTrace]") { // Create a vector of doubles (x) std::vector x_vector{1234.56789, 1233.56789, 1232.56789}; // Create a vector of doubles (y) std::vector y_vector{7876.54321, 8876.54321, 9876.54321}; MapTrace map_trace; map_trace.initialize(x_vector, y_vector); SECTION("Get the x values as a vector of double_s", "[MapTrace]") { std::vector vector_of_doubles = map_trace.xValues(); REQUIRE(vector_of_doubles.size() == map_trace.size()); REQUIRE(vector_of_doubles[0] == 1232.56789); REQUIRE(vector_of_doubles[1] == 1233.56789); REQUIRE(vector_of_doubles[2] == 1234.56789); } SECTION("Get the y values as a vector of double_s", "[MapTrace]") { std::vector vector_of_doubles = map_trace.yValues(); REQUIRE(vector_of_doubles.size() == map_trace.size()); REQUIRE(vector_of_doubles[0] == 9876.54321); REQUIRE(vector_of_doubles[1] == 8876.54321); REQUIRE(vector_of_doubles[2] == 7876.54321); } SECTION("Get a Trace out of a MapTrace", "[MapTrace]") { Trace trace = map_trace.toTrace(); REQUIRE(3 == trace.size()); REQUIRE(trace[0].y == 9876.54321); REQUIRE(trace[1].y == 8876.54321); REQUIRE(trace[2].y == 7876.54321); } SECTION("Craft a string representation of the MapTrace.", "[MapTrace]") { QString result_string = map_trace.toString(); QString test_string; for(auto &pair : map_trace) { test_string += QString("%1 %2\n") .arg(pair.first, 0, 'f', 10) .arg(pair.second, 0, 'f', 10); } REQUIRE(result_string.toStdString() == test_string.toStdString()); } } libpappsomspp-0.9.20/tests/test_massspectrum.cpp000644 001750 001750 00000026650 14526455546 023365 0ustar00rusconirusconi000000 000000 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include using namespace pappso; TEST_CASE("Constructing MassSpectrum objects.", "[MapSpectrum][constructors]") { // Create a MassSpectrum that looks like something real. std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 12963.5715942383")); data_point_vector.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("610.12000 55999.7628784180")); data_point_vector.push_back(DataPoint("610.17000 9335990.3578681946")); data_point_vector.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("610.27000 54459.4762458801")); data_point_vector.push_back(DataPoint("610.32000 205580.6580276489")); data_point_vector.push_back(DataPoint("610.37000 84627.3196716309")); data_point_vector.push_back(DataPoint("610.42000 51061.7636718750")); data_point_vector.push_back(DataPoint("610.47000 20260.0218505859")); data_point_vector.push_back(DataPoint("610.52000 29848.3424072266")); data_point_vector.push_back(DataPoint("610.57000 27266.8031616211")); data_point_vector.push_back(DataPoint("610.62000 36922.3937377930")); data_point_vector.push_back(DataPoint("610.67000 44082.4265441895")); data_point_vector.push_back(DataPoint("610.72000 32580.1677703857")); data_point_vector.push_back(DataPoint("610.77000 39453.8380126953")); data_point_vector.push_back(DataPoint("610.82000 63698.7124328613")); data_point_vector.push_back(DataPoint("610.87000 34406.7755126953")); data_point_vector.push_back(DataPoint("610.92000 33385.7486267090")); data_point_vector.push_back(DataPoint("610.97000 22105.9357604980")); data_point_vector.push_back(DataPoint("611.02000 34175.9539184570")); data_point_vector.push_back(DataPoint("611.07000 18893.1743774414")); data_point_vector.push_back(DataPoint("611.12000 33655.8040771484")); data_point_vector.push_back(DataPoint("611.17000 1985432.9582707286")); data_point_vector.push_back(DataPoint("611.220000 350845489.9638078809")); data_point_vector.push_back(DataPoint("611.27000 201093.0304565430")); data_point_vector.push_back(DataPoint("611.32000 130582.0210266113")); data_point_vector.push_back(DataPoint("611.37000 191842.3922958374")); data_point_vector.push_back(DataPoint("611.42000 154248.7982788086")); data_point_vector.push_back(DataPoint("611.47000 31618.7268676758")); data_point_vector.push_back(DataPoint("611.52000 31222.7547607422")); data_point_vector.push_back(DataPoint("611.57000 44491.2401733398")); data_point_vector.push_back(DataPoint("611.62000 17576.1995697021")); data_point_vector.push_back(DataPoint("611.67000 29514.0727844238")); data_point_vector.push_back(DataPoint("611.72000 60104.3011474609")); data_point_vector.push_back(DataPoint("611.77000 54284.4918212891")); data_point_vector.push_back(DataPoint("611.82000 73222.5983886719")); data_point_vector.push_back(DataPoint("611.87000 34145.2793884277")); data_point_vector.push_back(DataPoint("611.92000 43328.2853698730")); data_point_vector.push_back(DataPoint("611.97000 34486.0655212402")); data_point_vector.push_back(DataPoint("612.02000 33462.5801696777")); data_point_vector.push_back(DataPoint("612.07000 45740.2189331055")); data_point_vector.push_back(DataPoint("612.12000 16315.6034545898")); data_point_vector.push_back(DataPoint("612.17000 3137434.1922011375")); data_point_vector.push_back(DataPoint("612.220000 244825577.0747365952")); data_point_vector.push_back(DataPoint("612.27000 107560.2426452637")); data_point_vector.push_back(DataPoint("612.32000 114637.8828430176")); data_point_vector.push_back(DataPoint("612.37000 87648.2245483398")); data_point_vector.push_back(DataPoint("612.42000 75788.5508422852")); data_point_vector.push_back(DataPoint("612.47000 33858.1067199707")); data_point_vector.push_back(DataPoint("612.52000 26404.7212524414")); data_point_vector.push_back(DataPoint("612.57000 45710.7806396484")); data_point_vector.push_back(DataPoint("612.62000 31294.2814941406")); data_point_vector.push_back(DataPoint("612.67000 29457.2803955078")); data_point_vector.push_back(DataPoint("612.72000 23048.1495971680")); data_point_vector.push_back(DataPoint("612.77000 15255.7875061035")); data_point_vector.push_back(DataPoint("612.82000 48801.3896789551")); data_point_vector.push_back(DataPoint("612.87000 36464.7495727539")); data_point_vector.push_back(DataPoint("612.92000 51507.2986145020")); data_point_vector.push_back(DataPoint("612.97000 45925.2813415527")); data_point_vector.push_back(DataPoint("613.02000 40396.0013732910")); data_point_vector.push_back(DataPoint("613.07000 40331.5417785645")); data_point_vector.push_back(DataPoint("613.12000 47593.1001892090")); data_point_vector.push_back(DataPoint("613.17000 1537602.4452308416")); data_point_vector.push_back(DataPoint("613.22000 95458729.2017828822")); data_point_vector.push_back(DataPoint("613.27000 117836.8993530273")); data_point_vector.push_back(DataPoint("613.32000 172388.2191467285")); data_point_vector.push_back(DataPoint("613.37000 117651.7643432617")); data_point_vector.push_back(DataPoint("613.42000 134527.9219970703")); data_point_vector.push_back(DataPoint("613.47000 21348.3722229004")); data_point_vector.push_back(DataPoint("613.52000 480.5255737305")); data_point_vector.push_back(DataPoint("613.57000 71578.8419189453")); data_point_vector.push_back(DataPoint("613.62000 47088.4295806885")); data_point_vector.push_back(DataPoint("613.67000 11516.1672668457")); data_point_vector.push_back(DataPoint("613.72000 42134.2611389160")); data_point_vector.push_back(DataPoint("613.77000 43366.3011627197")); data_point_vector.push_back(DataPoint("613.82000 76272.4001235962")); data_point_vector.push_back(DataPoint("613.87000 98113.1940002441")); data_point_vector.push_back(DataPoint("613.92000 29165.7173461914")); data_point_vector.push_back(DataPoint("613.97000 55852.7840881348")); data_point_vector.push_back(DataPoint("614.02000 29957.4020996094")); data_point_vector.push_back(DataPoint("614.07000 46380.1217651367")); data_point_vector.push_back(DataPoint("614.12000 22395.2603759766")); data_point_vector.push_back(DataPoint("614.17000 1585080.8988181949")); data_point_vector.push_back(DataPoint("614.22000 35239172.4581222534")); data_point_vector.push_back(DataPoint("614.27000 185695.5917358398")); data_point_vector.push_back(DataPoint("614.32000 231630.3202667236")); data_point_vector.push_back(DataPoint("614.37000 165712.7152709961")); data_point_vector.push_back(DataPoint("614.42000 115771.4071350098")); data_point_vector.push_back(DataPoint("614.47000 58982.7239074707")); data_point_vector.push_back(DataPoint("614.52000 2547873.7498645782")); data_point_vector.push_back(DataPoint("614.57000 18437.3129577637")); data_point_vector.push_back(DataPoint("614.62000 22860.9023132324")); data_point_vector.push_back(DataPoint("614.67000 21072.2604064941")); data_point_vector.push_back(DataPoint("614.72000 35379.6509933472")); data_point_vector.push_back(DataPoint("614.77000 59054.2345886230")); data_point_vector.push_back(DataPoint("614.82000 75995.3719787598")); data_point_vector.push_back(DataPoint("614.87000 106325.3341369629")); data_point_vector.push_back(DataPoint("614.92000 43670.2942276001")); data_point_vector.push_back(DataPoint("614.97000 39008.6439514160")); // clang-format on REQUIRE(100 == data_point_vector.size()); // Create a Trace using the DataPoint vector. Trace trace(data_point_vector); REQUIRE(100 == trace.size()); SECTION("Create a MassSpectrum from a Trace", "[MassSpectrum]") { MassSpectrum mass_spectrum(trace); REQUIRE(100 == mass_spectrum.size()); REQUIRE(mass_spectrum.front().x == 610.02000); REQUIRE(mass_spectrum.front().y == 12963.5715942383); REQUIRE(mass_spectrum.back().x == 614.97000); REQUIRE(mass_spectrum.back().y == 39008.6439514160); } SECTION("Create a MassSpectrum from a MapTrace", "[MassSpectrum]") { // Create a MapTrace MapTrace map_trace(trace); REQUIRE(100 == map_trace.size()); MassSpectrum mass_spectrum(map_trace); REQUIRE(100 == mass_spectrum.size()); REQUIRE(mass_spectrum.front().x == 610.02000); REQUIRE(mass_spectrum.front().y == 12963.5715942383); REQUIRE(mass_spectrum.back().x == 614.97000); REQUIRE(mass_spectrum.back().y == 39008.6439514160); } SECTION("Create a MassSpectrum from a vector of double pairs", "[MassSpectrum]") { std::vector> double_pair_vector{ std::pair(610.02000, 12963.5715942383), std::pair(610.07000, 15639.6568298340), std::pair(610.12000, 55999.7628784180)}; MassSpectrum mass_spectrum(double_pair_vector); REQUIRE(3 == mass_spectrum.size()); REQUIRE(mass_spectrum.front().x == 610.02000); REQUIRE(mass_spectrum.front().y == 12963.5715942383); REQUIRE(mass_spectrum.back().x == 610.12000); REQUIRE(mass_spectrum.back().y == 55999.7628784180); } SECTION("Create a MassSpectrum from another MassSpectrum", "[MassSpectrum]") { MassSpectrum mass_spectrum(trace); MassSpectrum mass_spectrum1(mass_spectrum); REQUIRE(100 == mass_spectrum1.size()); REQUIRE(mass_spectrum1.front().x == 610.02000); REQUIRE(mass_spectrum1.front().y == 12963.5715942383); REQUIRE(mass_spectrum1.back().x == 614.97000); REQUIRE(mass_spectrum1.back().y == 39008.6439514160); } SECTION("Initialize MassSpectrum with operator =", "[MassSpectrum]") { MassSpectrum mass_spectrum(trace); MassSpectrum mass_spectrum1; mass_spectrum1 = mass_spectrum; REQUIRE(100 == mass_spectrum1.size()); REQUIRE(mass_spectrum1.front().x == 610.02000); REQUIRE(mass_spectrum1.front().y == 12963.5715942383); REQUIRE(mass_spectrum1.back().x == 614.97000); REQUIRE(mass_spectrum1.back().y == 39008.6439514160); } } TEST_CASE("Basic functionality of MassSpectrum", "[MassSpectrum]") { std::vector> double_pair_vector{ std::pair(610.02000, 12963.5715942383), std::pair(610.07000, 15639.6568298340), std::pair(610.12000, 55999.7628784180)}; MassSpectrum mass_spectrum(double_pair_vector); SECTION("Compute TIC for MassSpectrum", "[MassSpectrum]") { double tic = mass_spectrum.totalIonCurrent(); REQUIRE(tic == 12963.5715942383 + 15639.6568298340 + 55999.7628784180); tic = mass_spectrum.tic(); REQUIRE(tic == 12963.5715942383 + 15639.6568298340 + 55999.7628784180); tic = mass_spectrum.tic(610.020001, 610.12001); REQUIRE(tic == 15639.6568298340 + 55999.7628784180); } SECTION("Get the maxIntensityDataPoint from MassSpectrum", "[MassSpectrum]") { DataPoint datapoint = mass_spectrum.maxIntensityDataPoint(); REQUIRE(datapoint.x == 610.1200000); REQUIRE(datapoint.y == 55999.7628784180); } SECTION("Get the minIntensityDataPoint from MassSpectrum", "[MassSpectrum]") { DataPoint datapoint = mass_spectrum.minIntensityDataPoint(); REQUIRE(datapoint.x == 610.02000); REQUIRE(datapoint.y == 12963.5715942383); } } libpappsomspp-0.9.20/tests/test_massspectrumcombiner.cpp000644 001750 001750 00000031041 14526455546 025072 0ustar00rusconirusconi000000 000000 #include #include #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include namespace pappso { TEST_CASE("Constructing MassSpectrumPlusCombiner objects.", "[MassSpectrumPlusCombiner][constructors]") { SECTION("Construct a MassSpectrumPlusCombiner", "[MassSpectrumPlusCombiner]") { MassSpectrumPlusCombiner mass_spectrum_combiner1; REQUIRE(mass_spectrum_combiner1.getDecimalPlaces() == -1); int decimal_places = 3; MassSpectrumPlusCombiner mass_spectrum_combiner2(decimal_places); REQUIRE(mass_spectrum_combiner2.getDecimalPlaces() == decimal_places); } SECTION( "Construct a MassSpectrumPlusCombiner from another " "MassSpectrumPlusCombiner", "[MassSpectrumPlusCombiner]") { int decimal_places = 3; MassSpectrumPlusCombiner mass_spectrum_combiner(decimal_places); MassSpectrumPlusCombiner mass_spectrum_combiner1(mass_spectrum_combiner); REQUIRE(mass_spectrum_combiner1.getDecimalPlaces() == decimal_places); // Test the handling of the bins. // Create the bins std::vector bins{0.001, 0.002, 0.003, 0.004, 0.005}; MassSpectrumPlusCombiner mass_spectrum_combiner2(decimal_places); mass_spectrum_combiner2.setBins(bins); MassSpectrumPlusCombiner mass_spectrum_combiner3(mass_spectrum_combiner2); REQUIRE(mass_spectrum_combiner3.getBins().size() == 5); REQUIRE(mass_spectrum_combiner3.getBins().front() == 0.001); REQUIRE(mass_spectrum_combiner3.getBins().back() == 0.005); } } #if !defined(__i386__) // This test unbelievable does not pass on i386... TEST_CASE("Performing combinations with MassSpectrumPlusCombiner", "[MassSpectrumPlusCombiner][combinations]") { SECTION("Combine two complementary MassSpectrum objects into a MapTrace.", "[MassSpectrumPlusCombiner]") { // Create a MassSpectrum that looks like something real. std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 12963.5715942383")); data_point_vector.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("610.12000 55999.7628784180")); data_point_vector.push_back(DataPoint("610.17000 9335990.3578681946")); data_point_vector.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("610.27000 54459.4762458801")); data_point_vector.push_back(DataPoint("610.32000 205580.6580276489")); data_point_vector.push_back(DataPoint("610.37000 84627.3196716309")); data_point_vector.push_back(DataPoint("610.42000 51061.7636718750")); data_point_vector.push_back(DataPoint("610.47000 0.0000000000")); data_point_vector.push_back(DataPoint("610.52000 29848.3424072266")); data_point_vector.push_back(DataPoint("610.57000 27266.8031616211")); data_point_vector.push_back(DataPoint("610.62000 36922.3937377930")); data_point_vector.push_back(DataPoint("610.67000 44082.4265441895")); data_point_vector.push_back(DataPoint("610.72000 32580.1677703857")); data_point_vector.push_back(DataPoint("610.77000 39453.8380126953")); data_point_vector.push_back(DataPoint("610.82000 63698.7124328613")); data_point_vector.push_back(DataPoint("610.87000 34406.7755126953")); data_point_vector.push_back(DataPoint("610.92000 33385.7486267090")); data_point_vector.push_back(DataPoint("610.97000 22105.9357604980")); // clang-format on REQUIRE(20 == data_point_vector.size()); MassSpectrum mass_spectrum1(data_point_vector); REQUIRE(20 == mass_spectrum1.size()); data_point_vector.clear(); // Create another mass spectrum that is the "continuation" of the first one. // clang-format off data_point_vector.push_back(DataPoint("611.02000 12963.5715942383")); data_point_vector.push_back(DataPoint("611.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("611.12000 55999.7628784180")); data_point_vector.push_back(DataPoint("611.17000 9335990.3578681946")); data_point_vector.push_back(DataPoint("611.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("611.27000 54459.4762458801")); data_point_vector.push_back(DataPoint("611.32000 205580.6580276489")); data_point_vector.push_back(DataPoint("611.37000 84627.3196716309")); data_point_vector.push_back(DataPoint("611.42000 51061.7636718750")); data_point_vector.push_back(DataPoint("611.47000 0.00000000")); data_point_vector.push_back(DataPoint("611.52000 29848.3424072266")); data_point_vector.push_back(DataPoint("611.57000 27266.8031616211")); data_point_vector.push_back(DataPoint("611.62000 36922.3937377930")); data_point_vector.push_back(DataPoint("611.67000 44082.4265441895")); data_point_vector.push_back(DataPoint("611.72000 32580.1677703857")); data_point_vector.push_back(DataPoint("611.77000 39453.8380126953")); data_point_vector.push_back(DataPoint("611.82000 63698.7124328613")); data_point_vector.push_back(DataPoint("611.87000 34406.7755126953")); data_point_vector.push_back(DataPoint("611.92000 33385.7486267090")); data_point_vector.push_back(DataPoint("611.97000 22105.9357604980")); // clang-format on REQUIRE(20 == data_point_vector.size()); MassSpectrum mass_spectrum2(data_point_vector); REQUIRE(20 == mass_spectrum2.size()); // Prepare the bins on the basis of the spectrum. int decimal_places = 5; pappso::PrecisionPtr precision_p = pappso::PrecisionFactory::getDaltonInstance(0.05); bool binSizeDivisor = 6; MzIntegrationParams mz_integration_params(610.02, 611.97, BinningType::ARBITRARY, decimal_places, precision_p, binSizeDivisor, true); // Check that it does not compute bins, since BinningType::NONE. std::vector bins = mz_integration_params.createBins(); // Creation of the same number of data points plus a last one bin. REQUIRE(bins.size() == mass_spectrum1.size() + mass_spectrum2.size() + 1); REQUIRE(bins[0] == 610.02000); // The last bin matches the last DataPoint of the second spectrum + one bin // size. REQUIRE(bins.back() == 612.02000); // Now compute the combination without binning. MassSpectrumPlusCombiner mass_spectrum_combiner(decimal_places); mass_spectrum_combiner.setBins(bins); MapTrace map_trace; mass_spectrum_combiner.combine(map_trace, mass_spectrum1); // std::cout << std::setprecision(10) //<< "First map item x: " << map_trace.begin()->first //<< " y: " << map_trace.begin()->second << std::endl; REQUIRE(map_trace.size() == 20); REQUIRE(map_trace[610.02000] == 12963.5715942383); REQUIRE(map_trace[610.27000] == 54459.4762458801); REQUIRE(map_trace[610.97000] == 22105.9357604980); // Now combine the second mass spectrum. mass_spectrum_combiner.combine(map_trace, mass_spectrum2); REQUIRE(map_trace.size() == 40); REQUIRE(map_trace[610.02000] == 12963.5715942383); REQUIRE(map_trace[610.27000] == 54459.4762458801); REQUIRE(map_trace[610.97000] == 22105.9357604980); } SECTION("Combine two intermixed MassSpectrum objects into a MapTrace.", "[MassSpectrumPlusCombiner]") { // Create a MassSpectrum that looks like something real. std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 12963.5715942383")); data_point_vector.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("610.12000 55999.7628784180")); data_point_vector.push_back(DataPoint("610.17000 9335990.3578681946")); data_point_vector.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("610.27000 54459.4762458801")); data_point_vector.push_back(DataPoint("610.32000 205580.6580276489")); data_point_vector.push_back(DataPoint("610.37000 84627.3196716309")); data_point_vector.push_back(DataPoint("610.42000 51061.7636718750")); data_point_vector.push_back(DataPoint("610.47000 0.0000000000")); data_point_vector.push_back(DataPoint("610.52000 29848.3424072266")); data_point_vector.push_back(DataPoint("610.57000 27266.8031616211")); data_point_vector.push_back(DataPoint("610.62000 36922.3937377930")); data_point_vector.push_back(DataPoint("610.67000 44082.4265441895")); data_point_vector.push_back(DataPoint("610.72000 32580.1677703857")); data_point_vector.push_back(DataPoint("610.77000 39453.8380126953")); data_point_vector.push_back(DataPoint("610.82000 63698.7124328613")); data_point_vector.push_back(DataPoint("610.87000 34406.7755126953")); data_point_vector.push_back(DataPoint("610.92000 33385.7486267090")); data_point_vector.push_back(DataPoint("610.97000 22105.9357604980")); // clang-format on REQUIRE(20 == data_point_vector.size()); MassSpectrum mass_spectrum1(data_point_vector); REQUIRE(20 == mass_spectrum1.size()); data_point_vector.clear(); // Create another mass spectrum that intermixes with the first one by adding // 0.005 to the previous m/z values. // clang-format off data_point_vector.push_back(DataPoint("610.02500 12963.5715942383")); data_point_vector.push_back(DataPoint("610.07500 15639.6568298340")); data_point_vector.push_back(DataPoint("610.12500 55999.7628784180")); data_point_vector.push_back(DataPoint("610.17500 9335990.3578681946")); data_point_vector.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("610.27500 54459.4762458801")); data_point_vector.push_back(DataPoint("610.32500 205580.6580276489")); data_point_vector.push_back(DataPoint("610.37500 84627.3196716309")); data_point_vector.push_back(DataPoint("610.42500 51061.7636718750")); data_point_vector.push_back(DataPoint("610.47500 0.0000000000")); data_point_vector.push_back(DataPoint("610.52500 29848.3424072266")); data_point_vector.push_back(DataPoint("610.57500 27266.8031616211")); data_point_vector.push_back(DataPoint("610.62500 36922.3937377930")); data_point_vector.push_back(DataPoint("610.67500 44082.4265441895")); data_point_vector.push_back(DataPoint("610.72500 32580.1677703857")); data_point_vector.push_back(DataPoint("610.77500 39453.8380126953")); data_point_vector.push_back(DataPoint("610.82500 63698.7124328613")); data_point_vector.push_back(DataPoint("610.87500 34406.7755126953")); data_point_vector.push_back(DataPoint("610.92500 33385.7486267090")); data_point_vector.push_back(DataPoint("610.97500 22105.9357604980")); // clang-format on REQUIRE(20 == data_point_vector.size()); MassSpectrum mass_spectrum2(data_point_vector); REQUIRE(20 == mass_spectrum2.size()); // Prepare the bins on the basis of the spectrum. int decimal_places = 5; pappso::PrecisionPtr precision_p = pappso::PrecisionFactory::getDaltonInstance(0.05); bool binSizeDivisor = 6; MzIntegrationParams mz_integration_params(610.02, 610.975, BinningType::ARBITRARY, decimal_places, precision_p, binSizeDivisor, true); // Check that it does not compute bins, since BinningType::NONE. std::vector bins = mz_integration_params.createBins(); REQUIRE(bins.size() == 21); REQUIRE(bins[0] == 610.02000); REQUIRE(bins.back() == 610.97000 + 0.05); MassSpectrumPlusCombiner mass_spectrum_combiner(decimal_places); mass_spectrum_combiner.setBins(bins); MapTrace map_trace; mass_spectrum_combiner.combine(map_trace, mass_spectrum1); REQUIRE(map_trace.size() == 20); } } #endif } // namespace pappso libpappsomspp-0.9.20/tests/test_msrunoutput.cpp000644 001750 001750 00000006105 14526455546 023255 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 21,21" // cmake .. -DCMAKE_BUILD_TYPE=Debug -DMAKE_TEST=1 -DUSEPAPPSOTREE=1 //./tests/catch2-only-tests [MsRun] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include "config.h" // #include "common.h" using namespace std; TEST_CASE("Test MsRun output", "[MsRun]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test Qexception transferred accross threads ::..") { // QCoreApplication a(argc, argv); std::cout << std::endl << "..:: Test Qexception transferred accross threads ::.." << std::endl; QFuture future = QtConcurrent::run([=]() { throw pappso::ExceptionNotPossible( QObject::tr("Not possible, but possible to catch it accross threads")); }); REQUIRE_THROWS_AS(future.waitForFinished(), pappso::PappsoException); } // return 0; qDebug() << "init test MSrun output"; std::cout << std::endl << "..:: Test MSrun output ::.." << std::endl; QTime timer; #if USEPAPPSOTREE == 1 SECTION("..:: Test MSrun output starts ::..") { pappso::MsFileAccessor file_access_A01( "/gorgone/pappso/data_extraction_pappso/mzXML/" // "/data/mzXML/" //"/home/langella/data1/mzxml/" "20120906_balliau_extract_1_A01_urnb-1.mzXML", ""); std::cout << "number of runIds = " << file_access_A01.getMsRunIds().size() << std::endl; pappso::MsRunReaderSPtr msrunA01 = file_access_A01.getMsRunReaderSPtrByRunId("", "runa01"); QTextStream outputStream(stdout, QIODevice::WriteOnly); // pappso::MzxmlOutput mzxml_ouput(outputStream.device()); // mzxml_ouput.write(msrunA01.get()); // mzxml_ouput.close(); } #endif } libpappsomspp-0.9.20/tests/test_mzintegrationparams.cpp000644 001750 001750 00000021231 14526455546 024723 0ustar00rusconirusconi000000 000000 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include using namespace pappso; TEST_CASE("Constructing MzIntegrationParams objects.", "[MzIntegrationParams][constructors]") { SECTION("Construct a MzIntegrationParams", "[MzIntegrationParams]") { MzIntegrationParams mz_integration_params1; PrecisionPtr precision_p = pappso::PrecisionFactory::getPpmInstance(20); REQUIRE(mz_integration_params1.getBinningType() == BinningType::NONE); REQUIRE(precision_p == mz_integration_params1.getPrecision()); double smallestMz = 1800.373856; double greatestMz = 2600.956480; BinningType binningType = BinningType::ARBITRARY; int decimalPlaces = 3; bool binSizeDivisor = 6; bool removeZeroValDataPoints = true; MzIntegrationParams mz_integration_params2(smallestMz, greatestMz, binningType, decimalPlaces, precision_p, binSizeDivisor, removeZeroValDataPoints); REQUIRE(mz_integration_params2.getSmallestMz() == smallestMz); REQUIRE(mz_integration_params2.getGreatestMz() == greatestMz); REQUIRE(mz_integration_params2.getBinningType() == binningType); REQUIRE(mz_integration_params2.getDecimalPlaces() == decimalPlaces); REQUIRE(mz_integration_params2.getPrecision() == precision_p); REQUIRE(mz_integration_params2.getBinSizeDivisor() == binSizeDivisor); REQUIRE(mz_integration_params2.isRemoveZeroValDataPoints() == removeZeroValDataPoints); } SECTION( "Construct a MzIntegrationParams from another " "MzIntegrationParams", "[MzIntegrationParams]") { double smallestMz = 1800.373856; double greatestMz = 2600.956480; BinningType binningType = BinningType::ARBITRARY; int decimalPlaces = 3; PrecisionPtr precision_p = pappso::PrecisionFactory::getPpmInstance(20); bool binSizeDivisor = 6; bool removeZeroValDataPoints = true; MzIntegrationParams mz_integration_params1(smallestMz, greatestMz, binningType, decimalPlaces, precision_p, binSizeDivisor, removeZeroValDataPoints); MzIntegrationParams mz_integration_params2(mz_integration_params1); REQUIRE(mz_integration_params2.getSmallestMz() == smallestMz); REQUIRE(mz_integration_params2.getGreatestMz() == greatestMz); REQUIRE(mz_integration_params2.getBinningType() == binningType); REQUIRE(mz_integration_params2.getDecimalPlaces() == decimalPlaces); REQUIRE(mz_integration_params2.getPrecision() == precision_p); REQUIRE(mz_integration_params2.getBinSizeDivisor() == binSizeDivisor); REQUIRE(mz_integration_params2.isRemoveZeroValDataPoints() == removeZeroValDataPoints); } } TEST_CASE("Create bins with Da-based bin size", "[MzIntegrationParams]") { double smallestMz = 1800.373856; double greatestMz = 1800.373856; BinningType binningType = BinningType::ARBITRARY; int decimalPlaces = 3; PrecisionPtr precision_p = pappso::PrecisionFactory::getDaltonInstance(0.05); bool binSizeDivisor = 6; bool removeZeroValDataPoints = true; MzIntegrationParams mz_integration_params(smallestMz, greatestMz, binningType, decimalPlaces, precision_p, binSizeDivisor, removeZeroValDataPoints); SECTION("Create bins in ARBITRARY mode", "[MzIntegrationParams]") { std::vector bins = mz_integration_params.createBins(); // Do not forget that we round to 3 decimal places: REQUIRE(bins.front() == 1800.374); // We create two bins: the first mz value (1800.374) and a new one that is // that mz value incremented by the delta (that is the size of the bin that // is created using an increment of 0.05). double manual_value = bins.front() + precision_p->delta(bins.front()); // Below: if abs(1.0 - 1.2) is less or equal to 0.2 -> success // REQUIRE_THAT(1.0, Catch::Matchers::WithinAbs(1.2, 0.2)); // success // REQUIRE_THAT(1.2, Catch::Matchers::WithinAbs(1.1, 0.2)); // success // REQUIRE_THAT(1.0, Catch::Matchers::WithinAbs(1.3, 0.2)); // failure // REQUIRE_THAT(1.3, Catch::Matchers::WithinAbs(1.0, 0.2)); // failure REQUIRE_THAT(bins.back(), Catch::Matchers::WithinAbs( manual_value, std::numeric_limits::epsilon() * 10)); } } TEST_CASE("Create bins with ppm-based bin sizes", "[MzIntegrationParams]") { double smallestMz = 1800.373856; double greatestMz = 1800.373856; BinningType binningType = BinningType::ARBITRARY; int decimalPlaces = 3; PrecisionPtr precision_p = pappso::PrecisionFactory::getPpmInstance(20); bool binSizeDivisor = 6; bool removeZeroValDataPoints = true; MzIntegrationParams mz_integration_params(smallestMz, greatestMz, binningType, decimalPlaces, precision_p, binSizeDivisor, removeZeroValDataPoints); SECTION("Create bins in ARBITRARY mode", "[MzIntegrationParams]") { std::vector bins = mz_integration_params.createBins(); // Do not forget that we round to 3 decimal places: REQUIRE(bins.front() == 1800.374); // Check that the precision delta is computed correctly: double precision_delta = 1800.374 * 20 / 1000000; REQUIRE(pappso::Utils::almostEqual( precision_p->delta(1800.374), precision_delta, /*decimal_places*/ 15)); double rounded_precision_delta = ceil((precision_delta * pow(10, decimalPlaces)) - 0.49) / pow(10, decimalPlaces); // We create two bins: the first mz value (1800.374) and a new one that is // that mz value incremented by the delta (that is the size of the bin that // is created using relative proportion of 20 ppm). REQUIRE(bins.back() == 1800.374 + rounded_precision_delta); } } TEST_CASE("Create bins with res-based bin sizes", "[MzIntegrationParams]") { double smallestMz = 1800.373856; double greatestMz = 1800.373856; BinningType binningType = BinningType::ARBITRARY; int decimalPlaces = 3; PrecisionPtr precision_p = pappso::PrecisionFactory::getResInstance(20000); bool binSizeDivisor = 6; bool removeZeroValDataPoints = true; MzIntegrationParams mz_integration_params(smallestMz, greatestMz, binningType, decimalPlaces, precision_p, binSizeDivisor, removeZeroValDataPoints); SECTION("Create bins in ARBITRARY mode", "[MzIntegrationParams]") { std::vector bins = mz_integration_params.createBins(); // Do not forget that we round to 3 decimal places: REQUIRE(bins.front() == 1800.374); // Check that the precision delta is computed correctly: double precision_delta = 1800.374 / 20000; REQUIRE(pappso::Utils::almostEqual( precision_p->delta(1800.374), precision_delta, /*decimal_places*/ 15)); double rounded_precision_delta = ceil((precision_delta * pow(10, decimalPlaces)) - 0.49) / pow(10, decimalPlaces); // We create two bins: the first mz value (1800.374) and a new one that is // that mz value incremented by the delta (that is the size of the bin that // is created using relative proportion of 20 ppm). REQUIRE(bins.back() == 1800.374 + rounded_precision_delta); } } libpappsomspp-0.9.20/tests/test_natural_isotope_average.cpp000644 001750 001750 00000016453 14526455546 025541 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [peptidenaturalisotopeaverage] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include // #include "common.h" #include "config.h" using namespace pappso; using namespace std; // using namespace pwiz::msdata; // make test ARGS="-V -I 8,8" TEST_CASE("Test peptidenaturalisotopeaverage", "[peptidenaturalisotopeaverage]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test peptidenaturalisotopeaverage ::..", "[peptidenaturalisotopeaverage]") { std::cout << std::endl << "..:: Test natural isotope average ::.." << std::endl; Peptide peptide("ALLDEMAVVATEEYR"); peptide.addAaModification(AaModification::getInstance("MOD:00397"), 0); pappso_double check_mass = 1747.84; MzRange test_mass(check_mass, PrecisionFactory::getDaltonInstance(0.01)); REQUIRE(test_mass.contains(peptide.getMass() - MASSH2O)); unsigned int askedIsotopeRank = 1; unsigned int isotopeLevel = 2; unsigned int charge = 1; PrecisionPtr precision = PrecisionFactory::getPpmInstance(5); PeptideNaturalIsotopeAverage isotopeAverageMono( peptide.makePeptideSp(), askedIsotopeRank, 0, 1, precision); REQUIRE(MzRange(peptide.getMz(1), PrecisionFactory::getDaltonInstance(0.01)) .contains(isotopeAverageMono.getMz())); PeptideNaturalIsotopeAverage isotopeAverage(peptide.makePeptideSp(), askedIsotopeRank, isotopeLevel, charge, precision); std::cout << "monosiotope mz=" << peptide.getMz(charge) << "average mz=" << isotopeAverage.getMz() << std::endl; std::cout << "intensity ratio =" << isotopeAverage.getIntensityRatio() << std::endl; std::cout << "z=" << isotopeAverage.getCharge() << std::endl; std::cout << "sum of :" << std::endl; unsigned int rank = 1; for(auto &&peptideNaturalIsotope : isotopeAverage.getComponents()) { std::cout << "number=" << isotopeAverage.getIsotopeNumber() << " rank=" << rank << " mz=" << peptideNaturalIsotope.get()->getMz(charge) << " ratio=" << peptideNaturalIsotope.get()->getIntensityRatio(charge) << " formula=" << peptideNaturalIsotope.get()->getFormula(charge).toStdString() << std::endl; rank++; } REQUIRE(isotopeAverage.getComponents().size() == 8); PrecisionPtr precision2 = PrecisionFactory::getDaltonInstance(0.2); PeptideNaturalIsotopeAverage isotopeAverage2( peptide.makePeptideSp(), 1, isotopeLevel, charge, precision2); std::cout << "monosiotope mz=" << peptide.getMz(charge) << "average mz=" << isotopeAverage2.getMz() << std::endl; std::cout << "intensity ratio =" << isotopeAverage2.getIntensityRatio() << std::endl; std::cout << "z=" << isotopeAverage2.getCharge() << std::endl; std::cout << "sum of :" << std::endl; rank = 1; for(auto &&peptideNaturalIsotope : isotopeAverage2.getComponents()) { std::cout << "number=" << isotopeAverage2.getIsotopeNumber() << " rank=" << rank << " mz=" << peptideNaturalIsotope.get()->getMz(charge) << " ratio=" << peptideNaturalIsotope.get()->getIntensityRatio(charge) << " formula=" << peptideNaturalIsotope.get()->getFormula(charge).toStdString() << std::endl; rank++; } REQUIRE(isotopeAverage2.getComponents().size() == 11); /* Spectrum spectrum_low_masses(spectrum_parent.applyCutOff(150)); if (! spectrum_low_masses.equals(sremove_low_masses, precision)) { std::cerr << "spectrum_low_masses() != tandem"<< std::endl; return 1; }*/ std::cout << std::endl << "..:: Test natural isotope average on labelled peptide ::.." << std::endl; peptide.addAaModification(AaModification::getInstance("MOD:00587"), 14); std::cout << std::endl << "labelled formula " << peptide.getFormula(1).toStdString() << std::endl; PeptideNaturalIsotopeAverage isotopeAverage_labeled(peptide.makePeptideSp(), askedIsotopeRank, isotopeLevel, charge, precision); std::cout << "labeled monosiotope mz=" << peptide.getMz(charge) << "average mz=" << isotopeAverage_labeled.getMz() << std::endl; std::cout << "intensity ratio =" << isotopeAverage_labeled.getIntensityRatio() << std::endl; std::cout << "z=" << isotopeAverage_labeled.getCharge() << std::endl; std::cout << "sum of :" << std::endl; rank = 1; for(auto &&peptideNaturalIsotope : isotopeAverage_labeled.getComponents()) { std::cout << "labeled number=" << isotopeAverage_labeled.getIsotopeNumber() << " rank=" << rank << " mz=" << peptideNaturalIsotope.get()->getMz(charge) << " ratio=" << peptideNaturalIsotope.get()->getIntensityRatio(charge) << " formula=" << peptideNaturalIsotope.get()->getFormula(charge).toStdString() << std::endl; rank++; } // peptideSp.get()->getSequence()= "AGYEVRDVHYSHYGR" max_isotope_number= 3 // spectrum.size= 307 parent_charge= 3 ////ion_type_list.size= 9 max_isotope_rank= 2 PeptideNaturalIsotopeList isotope_list(peptide.makePeptideSp()); PeptideNaturalIsotopeAverage isotopeAverage_labeled2( isotope_list, askedIsotopeRank, isotopeLevel, charge, precision); REQUIRE(isotopeAverage_labeled.getMz() == Approx(isotopeAverage_labeled2.getMz()).epsilon(0.0001)); } } libpappsomspp-0.9.20/tests/test_peptidenaturalisotopelist.cpp000644 001750 001750 00000033324 14526456066 026151 0ustar00rusconirusconi000000 000000 // // File: test_peptidenaturalisotopelist.cpp // Created by: Olivier Langella // Created on: 9/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 7,7" // ./tests/catch2-only-tests [peptidenaturalisotope] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("Test peptidenaturalisotope", "[peptidenaturalisotope]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test peptidenaturalisotope ::..", "[peptidenaturalisotope]") { std::cout << std::endl << "..:: peptide init ::.." << std::endl; std::cout << std::endl << "..:: peptide natural isotope list init ::.." << std::endl; Peptide peptide("LA"); PeptideNaturalIsotopeList isotopeList(peptide.makePeptideSp()); std::cout << std::endl << "isotope list OK" << isotopeList.size() << std::endl; PeptideNaturalIsotopeList::const_iterator it(isotopeList.begin()); while(it != isotopeList.end()) { // qDebug() << it->getIntensityRatio(); std::cout << std::endl << it->get()->getSequence().toStdString(); std::cout.flush(); std::cout << "..:: " << it->get()->getFormula(1).toStdString(); std::cout.flush(); std::cout << " C13=" << it->get()->getNumberOfIsotope(Isotope::C13); std::cout.flush(); std::cout << " mass=" << it->get()->getMz(1); std::cout.flush(); std::cout << " mz(2)=" << it->get()->getMz(2); std::cout.flush(); std::cout << " ratio=" << it->get()->getIntensityRatio(1) << " ::.." << std::endl; it++; } std::cout << std::endl << "print isotope list OK" << std::endl; // MassRange mz_range(peptide.getMass(), ppm_precision(10)); // if (!mz_range.contains(Aa('L').getMass()+Aa('A').getMass())) // return 1; // Peptide peptideb ("TAPSDVLAVELLQR"); // PeptideNaturalIsotopeList isotopeListb(peptideb.getPeptideSp()); // http://pappso.inra.fr/protic/proticprod/angular/#/peptide_hits/947229 // http://pappso.inra.fr/protic/proticprod/angular/#/peptide_hits/947252 // AIADGSLLDLLR // http://prospector.ucsf.edu/prospector/cgi-bin/mssearch.cgi Peptide peptideb("AIADGSLLDLLR"); peptideb.addAaModification(AaModification::getInstance("MOD:00397"), 0); pappso::pappso_double mass_before = peptideb.getMass(); PeptideSp peptideSp = peptideb.makePeptideSp(); PeptideNaturalIsotopeList isotopeListb(peptideSp); it = isotopeListb.begin(); while(it != isotopeListb.end()) { if(it->get()->getIsotopeNumber() == 0) { REQUIRE(it->get()->getMass() == Approx(mass_before).epsilon(0.001)); } REQUIRE(it->get()->size() == peptideb.size()); // C55 H98 N15 O18 + C2 H3 N1 O1 REQUIRE(it->get()->getNumberOfAtom(AtomIsotopeSurvey::C) == 57); REQUIRE(it->get()->getNumberOfAtom(AtomIsotopeSurvey::H) == 100); REQUIRE(it->get()->getNumberOfAtom(AtomIsotopeSurvey::N) == 16); REQUIRE(it->get()->getNumberOfAtom(AtomIsotopeSurvey::O) == 19); // qDebug() << it->getIntensityRatio(); std::cout << std::endl << it->get()->getSequence().toStdString() << "..:: " << it->get()->getFormula(1).toStdString() << " C13=" << it->get()->getNumberOfIsotope(Isotope::C13) << " mass=" << it->get()->getMz(1) << " mz(2)=" << it->get()->getMz(2) << " ratio=" << it->get()->getIntensityRatio(1) << " ::.." << std::endl; it++; } std::map map_isotope_number = isotopeListb.getIntensityRatioPerIsotopeNumber(); std::cout << "isotope levels" << std::endl; for(unsigned int i = 0; i < map_isotope_number.size(); i++) { std::cout << "isotope " << i << " " << map_isotope_number[i] << std::endl; } std::cout << std::endl << "..:: peptide natural isotope list init test on fragment ::.." << std::endl; std::list cid_ion = PeptideFragmentIonListBase::getCIDionList(); PeptideFragmentIonListBase fragmentation_cid(peptideSp, cid_ion); PeptideFragmentIonSp pepfrag_sp = fragmentation_cid.getPeptideFragmentIonSp(PeptideIon::y, 3); PeptideNaturalIsotopeList isotopeListFrag(pepfrag_sp); map_isotope_number = isotopeListFrag.getIntensityRatioPerIsotopeNumber(); std::cout << "isotope levels" << std::endl; for(unsigned int i = 0; i < map_isotope_number.size(); i++) { std::cout << "frag isotope " << i << " " << map_isotope_number[i] << std::endl; } std::vector naturalIsotopeAverageList = isotopeListFrag.getByIntensityRatio( 1, PrecisionFactory::getPpmInstance(2), 0.99); for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : naturalIsotopeAverageList) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } // SUCCESS std::cout << "test with a big peptide at 10ppm" << std::endl; PeptideSp peptide_from_str = PeptideStrParser::parseString( "M(internal:Nter_hydrolytic_cleavage_H,0.00163028)" "GGTTQYTVNNQMVNATLMNIADNPTNVQLPGMYNK(internal:Cter_hydrolytic_cleavage_" "HO)"); PeptideNaturalIsotopeList isotopeListBig(peptide_from_str); std::vector natural_isotope_average_list = isotopeListBig.getByIntensityRatio( 3, PrecisionFactory::getPpmInstance(10), 0.6); for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : natural_isotope_average_list) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } std::cout << "test with a big peptide at 5ppm" << std::endl; for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : isotopeListBig.getByIntensityRatio( 3, PrecisionFactory::getPpmInstance(5), 0.6)) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } std::cout << "test with a big peptide at 3ppm" << std::endl; for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : isotopeListBig.getByIntensityRatio( 3, PrecisionFactory::getPpmInstance(3), 0.6)) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } std::cout << "test with a big peptide at 2ppm" << std::endl; for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : isotopeListBig.getByIntensityRatio( 3, PrecisionFactory::getPpmInstance(2), 0.6)) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } std::cout << "test with a big peptide at 1ppm" << std::endl; for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : isotopeListBig.getByIntensityRatio( 3, PrecisionFactory::getPpmInstance(1), 0.6)) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } std::cout << std::endl << "..:: peptide natural isotope list from labeled peptide ::.." << std::endl; PeptideSp peptide_lys_label = PeptideStrParser::parseString("CCAAL(MOD:00582)DDKEACFAVEGPK"); PeptideNaturalIsotopeList isotopeList_lys(peptide_lys_label); std::cout << std::endl << "isotope list OK" << isotopeList_lys.size() << std::endl; map_isotope_number = isotopeList_lys.getIntensityRatioPerIsotopeNumber(); std::cout << "isotope levels" << std::endl; for(unsigned int i = 0; i < map_isotope_number.size(); i++) { std::cout << "frag isotope " << i << " " << map_isotope_number[i] << std::endl; } std::cout << std::endl << "..:: get 80 % intensity of natural isotope average PPM = 2 ::.." << std::endl; naturalIsotopeAverageList = isotopeList_lys.getByIntensityRatio( 1, PrecisionFactory::getPpmInstance(2), 0.8); for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : naturalIsotopeAverageList) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } std::cout << std::endl << "print lys isotope list OK" << std::endl; std::cout << std::endl << "..:: get 10 % intensity of small peptide natural isotope average " "dalton = 0.2 ::.." << std::endl; naturalIsotopeAverageList = isotopeList_lys.getByIntensityRatio( 1, PrecisionFactory::getDaltonInstance(0.2), 0.1); for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : naturalIsotopeAverageList) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } REQUIRE(naturalIsotopeAverageList.size() == 1); REQUIRE(naturalIsotopeAverageList.at(0).get()->getIsotopeNumber() == 0); std::cout << std::endl << "..:: get 10 % intensity of big peptide natural isotope average " "dalton = 0.2 ::.." << std::endl; naturalIsotopeAverageList = isotopeListBig.getByIntensityRatio( 1, PrecisionFactory::getDaltonInstance(0.2), 0.1); for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : naturalIsotopeAverageList) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; } REQUIRE(naturalIsotopeAverageList.size() == 1); REQUIRE(naturalIsotopeAverageList.at(0).get()->getIsotopeNumber() == 2); std::cout << std::endl << "..:: peptide rank test ::.." << std::endl; PeptideSp peptide_ratio_test = PeptideStrParser::parseString("DPTLAVVAYR"); PeptideNaturalIsotopeList isotopeListRatioTest(peptide_ratio_test, 0.001); std::vector natural_isotope_average_list_ratio_test = isotopeListRatioTest.getByIntensityRatio( 4, PrecisionFactory::getPpmInstance(10), 0.999); for(PeptideNaturalIsotopeAverageSp isotopeAverageSp : natural_isotope_average_list_ratio_test) { std::cout << "average isotope " << isotopeAverageSp.get()->getIntensityRatio() << " average mz=" << isotopeAverageSp.get()->getMz() << " number=" << isotopeAverageSp.get()->getIsotopeNumber() << " rank=" << isotopeAverageSp.get()->getIsotopeRank() << std::endl; /* if(isotopeAverageSp.get()->getIsotopeRank() == 3) { std::cerr << "isotopeAverageSp.get()->getIsotopeRank()== 3 ERROR, not " "possible with 10ppm" << std::endl; return 1; } */ } } } libpappsomspp-0.9.20/tests/test_protein.cpp000644 001750 001750 00000043701 14526455546 022313 0ustar00rusconirusconi000000 000000 // // File: test_hyperscore.cpp // Created by: Olivier Langella // Created on: 13/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 3,3" // ./tests/catch2-only-tests [Protein] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" using namespace std; // using namespace pwiz::msdata; namespace pappso { class DigestionHandler : public EnzymeProductInterface { public: void setPeptide(std::int8_t sequence_database_id [[maybe_unused]], const ProteinSp &protein_sp [[maybe_unused]], bool is_decoy [[maybe_unused]], const QString &peptide, unsigned int start, bool is_nter [[maybe_unused]], unsigned int missed_cleavage_number [[maybe_unused]], bool semi_enzyme [[maybe_unused]]) override { qDebug() << " " << start << "-" << peptide; _peptide_list.append(peptide); }; bool contain(const QString &peptide) const { return _peptide_list.contains(peptide); } void clear() { _peptide_list.clear(); } std::size_t size() const { return _peptide_list.size(); }; private: QStringList _peptide_list; }; class PeptideModHandler : public PeptideModificatorInterface { public: void setPeptideSp(std::int8_t sequence_database_id [[maybe_unused]], const ProteinSp &protein_sp [[maybe_unused]], bool is_decoy [[maybe_unused]], const PeptideSp &peptide_sp, unsigned int start, bool is_nter [[maybe_unused]], unsigned int missed_cleavage_number [[maybe_unused]], bool semi_enzyme [[maybe_unused]]) override { qDebug() << "PeptideModHandler: " << start << " " << peptide_sp.get()->toString(); _peptide_list.push_back(peptide_sp); }; bool contain(const PeptideSp &peptide) const { return (std::find_if(_peptide_list.begin(), _peptide_list.end(), [peptide](const PeptideSp &peptide_in_list) { return *(peptide_in_list.get()) == *(peptide.get()); }) != _peptide_list.end()); } void clear() { _peptide_list.clear(); } size_t size() { return _peptide_list.size(); } private: std::vector _peptide_list; }; // AaModificationP carbamido = AaModification::getInstance("MOD:00397"); } // namespace pappso using namespace pappso; TEST_CASE("Test Protein", "[Protein]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test Protein ::..", "[Protein]") { qDebug() << "init test protein"; std::cout << std::endl << "..:: Test Protein ::.." << std::endl; Protein cry1Ac( "cry1Ac", "MDNNPNINECIPYNCLSNPEVEVLGGERIETGYTPIDISLSLTQFLLSEFVPGAGFVLGLVDIIWGIFGPSQ" "WD" "AFLVQIEQLINQRIEEFARNQAISRLEGLSNLYQIYAESFREWEADPTNPALREEMRIQFNDMNSALTTAIP" "LF" "AVQNYQVPLLSVYVQAANLHLSVLRDVSVFGQRWGFDAATINSRYNDLTRLIGNYTDYAVRWYNTGLERVWG" "PD" "SRDWVRYNQFRRELTLTVLDIVALFPNYDSRRYPIRTVSQLTREIYTNPVLENFDGSFRGSAQGIERSIRSP" "HL" "MDILNSITIYTDAHRGYYYWSGHQIMASPVGFSGPEFTFPLYGTMGNAAPQQRIVAQLGQGVYRTLSSTLYR" "RP" "FNIGINNQQLSVLDGTEFAYGTSSNLPSAVYRKSGTVDSLDEIPPQNNNVPPRQGFSHRLSHVSMFRSGFSN" "SS" "VSIIRAPMFSWIHRSAEFNNIIASDSITQIPAVKGNFLFNGSVISGPGFTGGDLVRLNSSGNNIQNRGYIEV" "PI" "HFPSTSTRYRVRVRYASVTPIHLNVNWGNSSIFSNTVPATATSLDNLQSSDFGYFESANAFTSSLGNIVGVR" "NF" "SGTAGVIIDRFEFIPVTATLEAEYNLERAQKAVNALFTSTNQLGLKTNVTDYHIDQVSNLVTYLSDEFCLDE" "KR" "ELSEKVKHAKRLSDERNLLQDSNFKDINRQPERGWGGSTGITIQGGDDVFKENYVTLSGTFDECYPTYLYQK" "ID" "ESKLKAFTRYQLRGYIEDSQDLEIYLIRYNAKHETVNVPGTGSLWPLSAQSPIGKCGEPNRCAPHLEWNPDL" "DC" "SCRDGEKCAHHSHHFSLDIDVGCTDLNEDLGVWVIFKIKTQDGHARLGNLEFLEEKPLVGEALARVKRAEKK" "WR" "DKREKLEWETNIVYKEAKESVDALFVNSQYDQLQADTNIAMIHAADKRVHSIREAYLPELSVIPGVNAAIFE" "EL" "EGRIFTAFSLYDARNVIKNGDFNNGLSCWNVKGHVDVEEQNNQRSVLVVPEWEAEVSQEVRVCPGRGYILRV" "TA" "YKEGYGEGCVTIHEIENNTDELKFSNCVEEEIYPNNTVTCNDYTVNQEEYGGAYTSRNRGYNEAPSVPADYA" "SV" "YEEKSYTDGRRENPCEFNRGYRDYTPLPVGYVTKELEYFPETDKVWIEIGETEGTFIVDSVELLLMEE"); std::cout << std::endl << "cry1Ac Mass = " << cry1Ac.getMass() << std::endl; MzRange cry1Ac_mass(133248.068195739, PrecisionFactory::getPpmInstance(0.5)); REQUIRE(cry1Ac_mass.contains(cry1Ac.getMass())); // BSA qDebug() << "init bsa"; Protein bsa("BSA", "MKWVTFISLLLLFSSAYSRGVFRRDTHKSEIAHRFKDLGEEHFKGLVLIAFSQYLQQCPFDE" "HVKLVNELTEFA" "KTCVADESHAGCEKSLHTLFGDELCKVASLRETYGDMADCCEKQEPERNECFLSHKDDSPDL" "PKLKPDPNTLCD" "EFKADEKKFWGKYLYEIARRHPYFYAPELLYYANKYNGVFQECCQAEDKGACLLPKIETMRE" "KVLASSARQRLR" "CASIQKFGERALKAWSVARLSQKFPKAEFVEVTKLVTDLTKVHKECCHGDLLECADDRADLA" "KYICDNQDTISS" "KLKECCDKPLLEKSHCIAEVEKDAIPENLPPLTADFAEDKDVCKNYQEAKDAFLGSFLYEYS" "RRHPEYAVSVLL" "RLAKEYEATLEECCAKDDPHACYSTVFDKLKHLVDEPQNLIKQNCDQFEKLGEYGFQNALIV" "RYTRKVPQVSTP" "TLVEVSRSLGKVGTRCCTKPESERMPCTEDYLSLILNRLCVLHEKTPVSEKVTKCCTESLVN" "RRPCFSALTPDE" "TYVPKAFDEKLFTFHADICTLPDTEKQIKKQTALVELLKHKPKATEEQLKTVMENFVAFVDK" "CCAADDKEACFA" "VEGPKLVVSTQTALA"); qDebug() << "init bsa sp"; ProteinSp protein_sp = bsa.makeProteinSp(); qDebug() << "init kinase"; Enzyme kinase; qDebug() << "kinase.setMiscleavage(2)"; kinase.setMiscleavage(2); DigestionHandler digestion; qDebug() << "kinase.eat(protein_sp,digestion)"; kinase.eat(0, protein_sp, false, digestion); REQUIRE(digestion.size() == 243); PeptideSizeFilter peptide_size(7, 35); peptide_size.setSink(&digestion); qDebug() << " kinase.eat(protein_sp,peptide_size);"; digestion.clear(); kinase.eat(0, protein_sp, false, peptide_size); REQUIRE(digestion.size() == 191); qDebug() << " modification_sink"; PeptideModHandler modification_sink; qDebug() << " fixed_mod_builder"; PeptideBuilder fixed_mod_builder; fixed_mod_builder.setSink(&modification_sink); // QChar aa =QChar('C'); // carbamido : QString acc = "MOD:00397"; qDebug() << " carbamido"; AaModificationP carbamido = AaModification::getInstance("MOD:00397"); fixed_mod_builder.addFixedAaModification('C', carbamido); PeptideSizeFilter peptide_size2mod(7, 35); peptide_size2mod.setSink(&fixed_mod_builder); kinase.setMiscleavage(0); qDebug() << " kinase.eat(protein_sp,peptide_size2mod);"; digestion.clear(); kinase.eat(0, protein_sp, false, peptide_size2mod); REQUIRE(digestion.size() == 0); qDebug() << " kinase.eat(protein_sp,peptide_size2mod) ; end"; // // unsigned int i = 0; // do { // i++; // } // while (i < 100000000000000); // variable modifications : // MOD:00719 // acc = "MOD:00719"; AaModificationP met_oxy = AaModification::getInstance("MOD:00719"); PeptideVariableModificationBuilder var_mod_builder(met_oxy); var_mod_builder.addAa('M'); var_mod_builder.setSink(&modification_sink); // QString accMo = "MOD:00719"; std::cout << std::endl << "..:: chose ::.." << std::endl; PeptideBuilder fixed_mod_builder2; fixed_mod_builder2.setSink(&var_mod_builder); fixed_mod_builder2.addFixedAaModification('C', carbamido); PeptideSizeFilter peptide_size2varmod(7, 35); peptide_size2varmod.setSink(&fixed_mod_builder2); kinase.setMiscleavage(0); qDebug() << " kinase.eat(protein_sp,peptide_size2varmod);"; ProteinSp fake = Protein("fakeBSA", "MVVKKVVVMAMEEKWVTFISLLLLFTKVHKECCVVSTQTALA") .makeProteinSp(); kinase.eat(0, fake, false, peptide_size2varmod); digestion.clear(); std::cout << std::endl << "..:: Test trypsin peptides on fake prot ::.." << std::endl; kinase.eat(0, fake, false, digestion); REQUIRE(digestion.contain("K")); REQUIRE(digestion.contain("ECCVVSTQTALA")); REQUIRE(digestion.contain("VVVMAMEEK")); REQUIRE(digestion.size() == 6); // BSA std::cout << std::endl << "..:: Test semi tryptic peptides on BSA ::.." << std::endl; kinase.setMiscleavage(0); PeptideSemiEnzyme semi_tryptic; semi_tryptic.setSink(&digestion); qDebug() << "kinase.eat(protein_sp,semi_tryptic)"; digestion.clear(); kinase.eat(0, protein_sp, false, semi_tryptic); REQUIRE(digestion.size() == 1132); qDebug() << Qt::endl << "..:: Test enzyme motif ::.." << Qt::endl; Enzyme motif_digest("(MAMEE[KR])([^P])"); digestion.clear(); motif_digest.eat(0, fake, false, digestion); REQUIRE(digestion.size() == 2); REQUIRE(digestion.contain("MVVKKVVVMAMEEK")); REQUIRE(digestion.contain("WVTFISLLLLFTKVHKECCVVSTQTALA")); // potential Nter mod +42.01056@[ // fixed mod mass 57.02146@C // 15.99491@M,79.96633@Y // 79.96633:-97.9769@[ST!] PeptideModificatorPipeline pmp; peptide_size2varmod.setSink(&pmp); PeptideVariableModificationReplacement mod_replace( AaModification::getInstance("MOD:00397"), AaModification::getInstance("MOD:00419")); QString pattern_str("^E(C)"); mod_replace.setModificationPattern(pattern_str); pmp.setSink(&mod_replace); mod_replace.setSink(&modification_sink); pmp.addFixedModificationString("MOD:00397@C"); // fixed: MOD:00397@C,MOD:00696@[YST] pmp.addPotentialModificationString( "MOD:00719@M,MOD:00696(0-1)@[YST],MOD:00719(1)@M,MOD:00696(1)@[YST]"); // var: MOD:00719@M // MOD:00429@^K pmp.addLabeledModificationString("MOD:00429@(^.|K)"); // MOD:00552@^K pmp.addLabeledModificationString("MOD:00552@(^.|K)"); // MOD:00638@^K pmp.addLabeledModificationString("MOD:00638@(^.|K)"); kinase.eat(0, fake, false, peptide_size2varmod); // reverse protein : std::cout << std::endl << "reverse :" << Protein(*fake.get()).reverse().getSequence().toStdString(); PeptideSp peptide_test = PeptideStrParser::parseString( "E(MOD:00429)C(MOD:00419)C(MOD:00397)VVSTQT(MOD:00696,MOD:00696)ALA"); REQUIRE( peptide_test.get()->toString().toStdString() == "E(MOD:00429)C(MOD:00419)C(MOD:00397)VVSTQT(MOD:00696,MOD:00696)ALA"); REQUIRE(modification_sink.contain(peptide_test)); std::cout << peptide_test.get()->toString().toStdString() << " is present" << std::endl; peptide_test = PeptideStrParser::parseString("V(MOD:00552)VVMAMEEK(MOD:00429)"); REQUIRE_FALSE(modification_sink.contain(peptide_test)); std::cout << peptide_test.get()->toString().toStdString() << " is absent" << std::endl; peptide_test = PeptideStrParser::parseString("V(MOD:00552)VVMAMEEK(MOD:00552)"); REQUIRE(modification_sink.contain(peptide_test)); std::cout << peptide_test.get()->toString().toStdString() << " is present" << std::endl; peptide_test = PeptideStrParser::parseString( "E(MOD:00429)C(MOD:00397)C(MOD:00397)VVSTQT(MOD:00696,MOD:00696)ALA"); REQUIRE(modification_sink.contain(peptide_test)); std::cout << peptide_test.get()->toString().toStdString() << " is present" << std::endl; std::cout << std::endl << "..:: test modification motifs ::.." << std::endl; ProteinSp prot_test_motif = Protein("prot_test_motif", "MVVVVVMAMEEWVTFISLLLLFTVHECCVVSTQTALA") .makeProteinSp(); modification_sink.clear(); PeptideBuilder pep_builder; PeptideFixedModificationBuilder fixed_mod_motif( AaModification::getInstance("MOD:00397")); pattern_str = "V(V)"; fixed_mod_motif.setModificationPattern(pattern_str); pep_builder.setSink(&fixed_mod_motif); fixed_mod_motif.setSink(&modification_sink); kinase.eat(0, prot_test_motif, false, pep_builder); peptide_test = PeptideStrParser::parseString( "MVV(MOD:00397)V(MOD:00397)V(MOD:00397)V(MOD:00397)" "MAMEEWVTFISLLLLFTVHECCVV(MOD:00397)STQTALA"); REQUIRE(modification_sink.contain(peptide_test)); REQUIRE(modification_sink.size() == 1); std::cout << peptide_test.get()->toString().toStdString() << " is present" << std::endl; qDebug() << "init test protein"; std::cout << std::endl << "..:: Test Protein with B and Z wildcard ::.." << std::endl; // BSA qDebug() << "init bsa with B and Z wildcard"; Protein bsa_bz("BSA", "MXXXKBWVTFISLLLLFSSAYSRGVFRRDTHKSBEIAHRFKDLGEEHFKGLVLIAFSQY" "LQQCPFDEHVKLVNE" "LTEFAKTCVADEBSHAGCEKSLHTLFGDELCKVASLRETYGDMADCCEKQEPERNECFL" "SHKDDSPDLPKLKPD" "PNTLCDEFKADEKKFWGKYLYEIARRHPYFYAPELLYYANKYNGVFQECCQAEDKGACL" "LPKIETMREKVLASS" "ARQRLRCASIQKFGERALKAWSVARLSQKFPKAEFVEVTKLVTDLTKVHKECCHGDLLE" "CADDRADLAKYICDN" "QDTISSKLKECCDKPLLEZKSHCIAEVEKDAIPENLPPLTADFAEDKDVCKNYQEAKDA" "FLGSFLYEYSRRHPE" "YAVSVLLRLAKEYZEATLEECCAKDDPHACYSTVFDKLKHLVDEPQNLIKQNCDQFEKL" "GEYGFQNALIVRYTR" "KVPQVSTPTLVEVSRSLGKVGTRCCTKPESERMPCTEDYLSLILNRLCVLHEKTPVSEK" "VTKCCTESLVNRRPC" "FSALTPDETYVPKAFDEKLFTFHADICTLPDTEKQIKKQTALVELLKHKPKATEEQLKT" "VMENFVAFVDKCCAA" "DDKEACFAVEGPKLVVSTQTALA"); qDebug() << "init bsa_bz sp"; ProteinSp protein_bsa_bz_sp = bsa_bz.makeProteinSp(); qDebug() << "init kinase"; DigestionHandler digestion_bz; qDebug() << "kinase.eat(protein_sp,digestion) B Z"; kinase.eat(0, protein_bsa_bz_sp, false, digestion_bz); REQUIRE_FALSE(digestion_bz.contain("MXXXK")); REQUIRE_FALSE(digestion_bz.contain("MAXXK")); REQUIRE(digestion_bz.contain("MAAAK")); REQUIRE(digestion_bz.contain("SNEIAHR")); std::cout << std::endl << " SNEIAHRFK FOUND " << std::endl; REQUIRE(digestion_bz.contain("SDEIAHR")); std::cout << std::endl << " SDEIAHRFK FOUND " << std::endl; } SECTION("..:: Test digestion pipeline ::..", "[DigestionPipeline]") { // potential Nter mod +42.01056@[ // fixed mod mass 57.02146@C // 15.99491@M,79.96633@Y // 79.96633:-97.9769@[ST!] PeptideModHandler modification_sink; PeptideSizeFilter peptide_size2varmod(7, 35); PeptideModificatorPipeline pmp; peptide_size2varmod.setSink(&pmp); pmp.setSink(&modification_sink); ProteinSp fake = Protein("fakeBSA", "MVVKKVVVMAMEEKWVTFISLLLLFTKVHKECCVVSTQTALA") .makeProteinSp(); Enzyme kinase; kinase.eat(0, fake, false, peptide_size2varmod); PeptideSp peptide_test = PeptideStrParser::parseString("VVVMAMEEK"); REQUIRE(modification_sink.contain(peptide_test)); } } TEST_CASE("Test Protein code", "[proteincode]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test Protein ::..", "[proteincode]") { ProteinSp fake = Protein("fakeBSA", "MVVKKVVVMAMEEKWVTFISLLLLFTKVHKECCVVSTQTALA") .makeProteinSp(); AaCode aa_code; aa_code.addAaModification('C', AaModification::getInstance("MOD:00397")); AaStringCodec codec(aa_code); ProteinIntegerCode protein_code(fake, codec, 5); auto code5 = protein_code.getPeptideCodedFragment(5); REQUIRE(code5.back() == 338550); REQUIRE(codec.decode(code5.back()).toStdString() == "QITAA"); REQUIRE(code5.size() == fake.get()->size() - 4); std::vector test_code_list; test_code_list.push_back(codec.codeLlc("MAMEE")); test_code_list.push_back(codec.codeLlc("MAME")); auto match = protein_code.match(test_code_list); REQUIRE(match.back().first == 5); REQUIRE(match.back().second == 8); test_code_list.clear(); test_code_list.push_back(codec.codeLlc("MV")); match = protein_code.match(test_code_list); REQUIRE(match.front().first == 2); REQUIRE(match.front().second == 0); REQUIRE(match.back().first == 2); REQUIRE(match.back().second == 7); } } libpappsomspp-0.9.20/tests/test_proteincode.cpp000644 001750 001750 00000003253 14526455546 023144 0ustar00rusconirusconi000000 000000 // // File: test_c13n15.cpp // Created by: Olivier Langella // Created on: 12/7/2023 // /******************************************************************************* * Copyright (c) 2023 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // ./tests/catch2-only-tests [proteincode] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include using namespace pappso; using namespace std; TEST_CASE("proteincode test suite.", "[proteincode]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: protein sequence to code ::..", "[proteincode]") { } } libpappsomspp-0.9.20/tests/test_rawmasslist.cpp000644 001750 001750 00000007106 14526455546 023203 0ustar00rusconirusconi000000 000000 // // File: test_rawmasslist.cpp // Created by: Olivier Langella // Created on: 19/07/2016 // /******************************************************************************* * Copyright (c) 2016 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 12,12" // ./tests/catch2-only-tests [rawmasslist] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("..:: Raw mass list ::..", "[rawmasslist]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Raw mass list ::..", "[rawmasslist]") { std::cout << std::endl << "..:: Raw mass list ::.." << std::endl; PeptideSp peptide_sp(Peptide("SAMPLER").makePeptideSp()); std::list ion_type_list; ion_type_list.push_back(PeptideIon::y); PeptideFragmentIonListBase fragmentIonList(peptide_sp, ion_type_list); auto ion_list = fragmentIonList.getPeptideFragmentIonSp(PeptideIon::y); PeptideRawFragmentMasses calc_mass_list(*peptide_sp.get(), RawFragmentationMode::full); std::vector mass_list; calc_mass_list.pushBackIonMasses(mass_list, PeptideIon::y); for(auto current_fragment : ion_list) { pappso_double lookfor_mz = current_fragment.get()->getMass(); MzRange mz_range(lookfor_mz, PrecisionFactory::getPpmInstance(0.001)); std::vector::const_iterator it = find_if( mass_list.begin(), mass_list.end(), [mz_range](double mass_a) { return mz_range.contains(mass_a); }); REQUIRE(it != mass_list.end()); } std::vector mz_list; calc_mass_list.pushBackIonMz(mz_list, PeptideIon::y, 1); for(auto current_fragment : ion_list) { pappso_double lookfor_mz = current_fragment.get()->getMz(1); MzRange mz_range(lookfor_mz, PrecisionFactory::getPpmInstance(0.001)); std::vector::const_iterator it = find_if(mz_list.begin(), mz_list.end(), [mz_range](double mass_a) { return mz_range.contains(mass_a); }); REQUIRE(it != mass_list.end()); } PeptideRawFragmentMasses calc_mass_list_proline( *peptide_sp.get(), RawFragmentationMode::proline_effect); } } libpappsomspp-0.9.20/tests/test_scan_15968.cpp000644 001750 001750 00000124753 14526455546 022342 0ustar00rusconirusconi000000 000000 // // File: test_hyperscore.cpp // Created by: Olivier Langella // Created on: 13/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [scan15968] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "common.h" #include "config.h" using namespace pappso; using namespace std; // using namespace pwiz::msdata; // make test ARGS="-V -I 15,15" TEST_CASE("scan 15968 test suite.", "[scan15968]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test scan 15968 ::..", "[scan15968]") { std::cout << std::endl << "..:: Test scan 15968 ::.." << std::endl; PrecisionPtr precision = PrecisionFactory::getDaltonInstance(0.02); std::list ion_list; ion_list.push_back(PeptideIon::y); ion_list.push_back(PeptideIon::b); std::vector> first_spectrum = { {89.0171, 1255.71}, {89.0603, 258758}, {90.0636, 12425.6}, {91.0495, 1279.8}, {91.055, 7705.08}, {93.0703, 5502.73}, {95.0497, 8020.64}, {95.0861, 13957.1}, {97.0653, 15931.7}, {97.1017, 2961.08}, {98.0606, 2268.44}, {99.0446, 13088.5}, {99.0557, 1697.84}, {99.0808, 11889.6}, {100.076, 1732.78}, {101.06, 68738.8}, {101.071, 2485.04}, {101.096, 2808.63}, {102.056, 5733.14}, {102.068, 52705.2}, {102.57, 1894.38}, {103.039, 90526.6}, {103.076, 46579.7}, {104.043, 3137.48}, {104.054, 1501.14}, {104.078, 1306.75}, {105.034, 2022.36}, {105.07, 2004.45}, {107.071, 13896.3}, {107.086, 7528.79}, {109.065, 5838.64}, {109.076, 5429.15}, {109.102, 13790.2}, {110.072, 6277.51}, {111.044, 1263.75}, {111.073, 9752.98}, {111.081, 2150.96}, {111.117, 2187.44}, {112.076, 5092.75}, {112.087, 1946.41}, {113.06, 19609.5}, {113.096, 1460.13}, {114.092, 11088.2}, {115.076, 31572.7}, {116.071, 2308.32}, {116.084, 1966.57}, {117.055, 20319.6}, {117.071, 1363.91}, {117.091, 63645.5}, {118.095, 2530.43}, {119.086, 5886.15}, {120.081, 17588.9}, {121.065, 1837.95}, {121.086, 2645.5}, {121.101, 11908.3}, {123.081, 9379.51}, {123.117, 9777.68}, {124.081, 28138.2}, {124.583, 2318.93}, {125.06, 6995.67}, {125.096, 7132.5}, {126.092, 5778.39}, {127.075, 5899.92}, {127.112, 5491.97}, {128.071, 5093.58}, {129.055, 4217.6}, {129.066, 5946.75}, {129.091, 7317.95}, {129.102, 6977.88}, {130.065, 2379.79}, {130.087, 5091.96}, {131.07, 48273.6}, {131.087, 6404.52}, {131.107, 1801.39}, {132.074, 1826.34}, {133.086, 245602}, {133.588, 2947.25}, {134.089, 17387.1}, {134.993, 2116.07}, {135.081, 6530.39}, {135.117, 12822.9}, {136.076, 9739.49}, {137.096, 8168.15}, {137.133, 1995.65}, {138.092, 1773.06}, {139.076, 6838}, {139.112, 5610.2}, {140.095, 1929.64}, {140.107, 10021.8}, {141.091, 6473.44}, {141.127, 1759.04}, {142.123, 2570.99}, {143.071, 2289.28}, {143.108, 3512.4}, {143.118, 13273.3}, {144.102, 2022.77}, {145.051, 1621.94}, {145.087, 1811.55}, {145.101, 6412.22}, {145.123, 1565.65}, {146.094, 15363.7}, {146.595, 2046.11}, {147.044, 1342.77}, {147.065, 8760.55}, {147.081, 1940.53}, {147.102, 22403.3}, {147.115, 8926.49}, {149.096, 6581.73}, {149.133, 5847.23}, {151.075, 5409.98}, {151.097, 2271.86}, {151.112, 5583.89}, {152.108, 5696.35}, {153.091, 6418.92}, {153.128, 2253.41}, {154.087, 1357.14}, {154.123, 25125.8}, {155.097, 9781.48}, {155.11, 1780.95}, {156.102, 8107.66}, {156.137, 1521.09}, {157.134, 27587.5}, {158.092, 2172.65}, {158.117, 5618.04}, {159.101, 7098.61}, {159.116, 5979.43}, {161.081, 1808.02}, {161.095, 1742.41}, {161.117, 6572.96}, {161.132, 4798.3}, {163.097, 3163.79}, {163.112, 7658.69}, {163.149, 2277.79}, {164.105, 6259.31}, {165.091, 5256.09}, {165.128, 2644.99}, {166.054, 5869.06}, {166.123, 1603.3}, {167.106, 1763}, {168.069, 2399.99}, {168.105, 1593.3}, {168.138, 2041.98}, {169.086, 2146.5}, {169.1, 1865.34}, {169.134, 7854.18}, {170.117, 24030.6}, {171.101, 2235.5}, {171.115, 2957.3}, {171.149, 39062.5}, {172.134, 13334.8}, {173.093, 5114.72}, {173.117, 8631.08}, {173.13, 5303.29}, {174.112, 2742.49}, {175.097, 12538.7}, {175.119, 25183.3}, {175.133, 7473.42}, {175.148, 2664.61}, {177.09, 2204.55}, {177.113, 52904.4}, {177.127, 4770.5}, {178.116, 2485.74}, {179.106, 2751.31}, {179.119, 2403.68}, {179.143, 6999.31}, {181.122, 1902.17}, {182.154, 2802.05}, {183.101, 1776.2}, {184.073, 5227.31}, {184.134, 6150.57}, {185.13, 5578.06}, {185.166, 2662.32}, {187.072, 1981.55}, {187.11, 1845.93}, {187.145, 27989}, {188.147, 1641.03}, {189.128, 1738.55}, {190.121, 2328.53}, {191.128, 7989.35}, {192.138, 1458.81}, {196.171, 1885.77}, {197.129, 19692.7}, {198.15, 2859.96}, {199.127, 2262.41}, {200.238, 2525.81}, {201.125, 5841.99}, {201.163, 1564.23}, {203.07, 1625.81}, {203.106, 2486.6}, {203.126, 1390.75}, {205.098, 2673.08}, {205.123, 1581.69}, {205.143, 1570.8}, {205.16, 1748.89}, {207.122, 1413.82}, {209.116, 1608.26}, {210.149, 2769.95}, {211.147, 2665.94}, {212.166, 2871.34}, {213.161, 1735.92}, {214.254, 7653.12}, {215.14, 57434.9}, {215.174, 1456.18}, {216.141, 7285.48}, {217.196, 1415.78}, {219.174, 1498.28}, {221.139, 7021.04}, {224.202, 1453.64}, {225.124, 10115.4}, {226.181, 10444.2}, {226.216, 3078.76}, {227.179, 2551.16}, {228.269, 6800.2}, {229.118, 4647.04}, {239.148, 5466.28}, {239.178, 1729}, {241.106, 1809.45}, {243.134, 10133.7}, {243.211, 5106.94}, {244.264, 26424.2}, {245.138, 2070.28}, {245.268, 2782.22}, {247.17, 2311.67}, {249.186, 2303.04}, {254.152, 1745.34}, {257.191, 2580.59}, {259.206, 5775.87}, {261.222, 6808.63}, {264.197, 3247.49}, {271.175, 2850.4}, {272.161, 5428.97}, {272.295, 11611}, {273.186, 11948.8}, {273.3, 2099.81}, {275.2, 16706.5}, {276.203, 2150.23}, {276.232, 2009.9}, {277.187, 2346.88}, {277.216, 36167.8}, {278.219, 4981.19}, {278.249, 7893.56}, {279.231, 16870.7}, {280.233, 2530.57}, {282.145, 1712.36}, {283.175, 7353.41}, {287.055, 2417.37}, {288.201, 2296.07}, {288.289, 32807.4}, {289.181, 6561.88}, {289.293, 8928.77}, {290.214, 7618.13}, {291.194, 14399.3}, {292.227, 14582.9}, {293.21, 21588.3}, {294.214, 2603.64}, {294.243, 28819.8}, {296.23, 1793.52}, {296.26, 9409.71}, {304.163, 1888.84}, {304.286, 10249.6}, {305.289, 2610.17}, {306.207, 2676.59}, {307.239, 2788.35}, {308.16, 6271}, {308.189, 111642}, {308.223, 12250.2}, {309.162, 2222.38}, {309.191, 2327.98}, {309.221, 2689.04}, {310.239, 13792.8}, {312.218, 1833.09}, {316.321, 35943.9}, {326.171, 18416.8}, {326.233, 1699.29}, {331.08, 17702.9}, {360.884, 1547.19}, {391.232, 2437.46}, {401.288, 20657.7}, {402.293, 2749.24}, {419.191, 1795.47}, {424.305, 2363.22}, {447.361, 1858.47}, {499.291, 2152.42}, {516.315, 8476.86}, {595.427, 2431.63}, {596.437, 14625.5}, {615.383, 11218.2}, {637.414, 205655}, {638.419, 84439.5}, {639.426, 22234.6}, {639.742, 1605.19}, {661.367, 9815.55}, {760.435, 2172.92}, {762.448, 9644.32}, {802.458, 1777.27}, {819.471, 46275.2}, {820.475, 21511}, {821.479, 3242.61}, {865.499, 1766.79}, {932.555, 13635}, {933.556, 6769.24}, {1033.61, 14522.8}, {1034.61, 9338.05}, {1035.6, 2029.54}}; std::vector> remove_isotopes = { {89.0171, 1255.71}, {89.0603, 258758}, {90.0636, 12425.6}, {91.0495, 1279.8}, {91.055, 7705.08}, {93.0703, 5502.73}, {95.0497, 8020.64}, {95.0861, 13957.1}, {97.0653, 15931.7}, {97.1017, 2961.08}, {98.0606, 2268.44}, {99.0446, 13088.5}, {99.0557, 1697.84}, {99.0808, 11889.6}, {100.076, 1732.78}, {101.06, 68738.8}, {101.071, 2485.04}, {101.096, 2808.63}, {102.056, 5733.14}, {102.068, 52705.2}, {102.57, 1894.38}, {103.039, 90526.6}, {103.076, 46579.7}, {104.043, 3137.48}, {104.054, 1501.14}, {104.078, 1306.75}, {105.034, 2022.36}, {105.07, 2004.45}, {107.071, 13896.3}, {107.086, 7528.79}, {109.065, 5838.64}, {109.076, 5429.15}, {109.102, 13790.2}, {110.072, 6277.51}, {111.044, 1263.75}, {111.073, 9752.98}, {111.081, 2150.96}, {111.117, 2187.44}, {112.076, 5092.75}, {112.087, 1946.41}, {113.06, 19609.5}, {113.096, 1460.13}, {114.092, 11088.2}, {115.076, 31572.7}, {116.071, 2308.32}, {116.084, 1966.57}, {117.055, 20319.6}, {117.071, 1363.91}, {117.091, 63645.5}, {118.095, 2530.43}, {119.086, 5886.15}, {120.081, 17588.9}, {121.065, 1837.95}, {121.086, 2645.5}, {121.101, 11908.3}, {123.081, 9379.51}, {123.117, 9777.68}, {124.081, 28138.2}, {124.583, 2318.93}, {125.06, 6995.67}, {125.096, 7132.5}, {126.092, 5778.39}, {127.075, 5899.92}, {127.112, 5491.97}, {128.071, 5093.58}, {129.055, 4217.6}, {129.066, 5946.75}, {129.091, 7317.95}, {129.102, 6977.88}, {130.065, 2379.79}, {130.087, 5091.96}, {131.07, 48273.6}, {131.087, 6404.52}, {131.107, 1801.39}, {132.074, 1826.34}, {133.086, 245602}, {133.588, 2947.25}, {134.089, 17387.1}, {134.993, 2116.07}, {135.081, 6530.39}, {135.117, 12822.9}, {136.076, 9739.49}, {137.096, 8168.15}, {137.133, 1995.65}, {138.092, 1773.06}, {139.076, 6838}, {139.112, 5610.2}, {140.095, 1929.64}, {140.107, 10021.8}, {141.091, 6473.44}, {141.127, 1759.04}, {142.123, 2570.99}, {143.071, 2289.28}, {143.108, 3512.4}, {143.118, 13273.3}, {144.102, 2022.77}, {145.051, 1621.94}, {145.087, 1811.55}, {145.101, 6412.22}, {145.123, 1565.65}, {146.094, 15363.7}, {146.595, 2046.11}, {147.044, 1342.77}, {147.065, 8760.55}, {147.081, 1940.53}, {147.102, 22403.3}, {147.115, 8926.49}, {149.096, 6581.73}, {149.133, 5847.23}, {151.075, 5409.98}, {151.097, 2271.86}, {151.112, 5583.89}, {152.108, 5696.35}, {153.091, 6418.92}, {153.128, 2253.41}, {154.087, 1357.14}, {154.123, 25125.8}, {155.097, 9781.48}, {155.11, 1780.95}, {156.102, 8107.66}, {156.137, 1521.09}, {157.134, 27587.5}, {158.092, 2172.65}, {158.117, 5618.04}, {159.101, 7098.61}, {159.116, 5979.43}, {161.081, 1808.02}, {161.095, 1742.41}, {161.117, 6572.96}, {161.132, 4798.3}, {163.097, 3163.79}, {163.112, 7658.69}, {163.149, 2277.79}, {164.105, 6259.31}, {165.091, 5256.09}, {165.128, 2644.99}, {166.054, 5869.06}, {166.123, 1603.3}, {167.106, 1763}, {168.069, 2399.99}, {168.105, 1593.3}, {168.138, 2041.98}, {169.086, 2146.5}, {169.1, 1865.34}, {169.134, 7854.18}, {170.117, 24030.6}, {171.101, 2235.5}, {171.115, 2957.3}, {171.149, 39062.5}, {172.134, 13334.8}, {173.093, 5114.72}, {173.117, 8631.08}, {173.13, 5303.29}, {174.112, 2742.49}, {175.097, 12538.7}, {175.119, 25183.3}, {175.133, 7473.42}, {175.148, 2664.61}, {177.09, 2204.55}, {177.113, 52904.4}, {177.127, 4770.5}, {178.116, 2485.74}, {179.106, 2751.31}, {179.119, 2403.68}, {179.143, 6999.31}, {181.122, 1902.17}, {182.154, 2802.05}, {183.101, 1776.2}, {184.073, 5227.31}, {184.134, 6150.57}, {185.13, 5578.06}, {185.166, 2662.32}, {187.072, 1981.55}, {187.11, 1845.93}, {187.145, 27989}, {188.147, 1641.03}, {189.128, 1738.55}, {190.121, 2328.53}, {191.128, 7989.35}, {192.138, 1458.81}, {196.171, 1885.77}, {197.129, 19692.7}, {198.15, 2859.96}, {199.127, 2262.41}, {201.125, 5841.99}, {203.106, 2486.6}, {205.098, 2673.08}, {207.122, 1413.82}, {209.116, 1608.26}, {210.149, 2769.95}, {211.147, 2665.94}, {212.166, 2871.34}, {213.161, 1735.92}, {215.14, 57434.9}, {216.141, 7285.48}, {217.196, 1415.78}, {219.174, 1498.28}, {221.139, 7021.04}, {225.124, 10115.4}, {226.181, 10444.2}, {227.179, 2551.16}, {228.269, 6800.2}, {239.148, 5466.28}, {241.106, 1809.45}, {243.134, 10133.7}, {244.264, 26424.2}, {245.268, 2782.22}, {247.17, 2311.67}, {249.186, 2303.04}, {254.152, 1745.34}, {257.191, 2580.59}, {259.206, 5775.87}, {261.222, 6808.63}, {264.197, 3247.49}, {271.175, 2850.4}, {272.295, 11611}, {273.186, 11948.8}, {275.2, 16706.5}, {276.203, 2150.23}, {277.216, 36167.8}, {278.249, 7893.56}, {279.231, 16870.7}, {280.233, 2530.57}, {282.145, 1712.36}, {283.175, 7353.41}, {287.055, 2417.37}, {288.289, 32807.4}, {289.293, 8928.77}, {290.214, 7618.13}, {291.194, 14399.3}, {292.227, 14582.9}, {293.21, 21588.3}, {294.243, 28819.8}, {296.26, 9409.71}, {304.286, 10249.6}, {306.207, 2676.59}, {308.16, 6271}, {308.189, 111642}, {309.221, 2689.04}, {310.239, 13792.8}, {312.218, 1833.09}, {316.321, 35943.9}, {326.171, 18416.8}, {331.08, 17702.9}, {360.884, 1547.19}, {391.232, 2437.46}, {401.288, 20657.7}, {402.293, 2749.24}, {419.191, 1795.47}, {424.305, 2363.22}, {447.361, 1858.47}, {499.291, 2152.42}, {516.315, 8476.86}, {595.427, 2431.63}, {596.437, 14625.5}, {615.383, 11218.2}, {637.414, 205655}, {638.419, 84439.5}, {639.426, 22234.6}, {661.367, 9815.55}, {760.435, 2172.92}, {762.448, 9644.32}, {802.458, 1777.27}, {819.471, 46275.2}, {820.475, 21511}, {821.479, 3242.61}, {865.499, 1766.79}, {932.555, 13635}, {933.556, 6769.24}, {1033.61, 14522.8}, {1034.61, 9338.05}, {1035.6, 2029.54}}; std::vector> remove_parent = { {89.0171, 1255.71}, {89.0603, 258758}, {90.0636, 12425.6}, {91.0495, 1279.8}, {91.055, 7705.08}, {93.0703, 5502.73}, {95.0497, 8020.64}, {95.0861, 13957.1}, {97.0653, 15931.7}, {97.1017, 2961.08}, {98.0606, 2268.44}, {99.0446, 13088.5}, {99.0557, 1697.84}, {99.0808, 11889.6}, {100.076, 1732.78}, {101.06, 68738.8}, {101.071, 2485.04}, {101.096, 2808.63}, {102.056, 5733.14}, {102.068, 52705.2}, {102.57, 1894.38}, {103.039, 90526.6}, {103.076, 46579.7}, {104.043, 3137.48}, {104.054, 1501.14}, {104.078, 1306.75}, {105.034, 2022.36}, {105.07, 2004.45}, {107.071, 13896.3}, {107.086, 7528.79}, {109.065, 5838.64}, {109.076, 5429.15}, {109.102, 13790.2}, {110.072, 6277.51}, {111.044, 1263.75}, {111.073, 9752.98}, {111.081, 2150.96}, {111.117, 2187.44}, {112.076, 5092.75}, {112.087, 1946.41}, {113.06, 19609.5}, {113.096, 1460.13}, {114.092, 11088.2}, {115.076, 31572.7}, {116.071, 2308.32}, {116.084, 1966.57}, {117.055, 20319.6}, {117.071, 1363.91}, {117.091, 63645.5}, {118.095, 2530.43}, {119.086, 5886.15}, {120.081, 17588.9}, {121.065, 1837.95}, {121.086, 2645.5}, {121.101, 11908.3}, {123.081, 9379.51}, {123.117, 9777.68}, {124.081, 28138.2}, {124.583, 2318.93}, {125.06, 6995.67}, {125.096, 7132.5}, {126.092, 5778.39}, {127.075, 5899.92}, {127.112, 5491.97}, {128.071, 5093.58}, {129.055, 4217.6}, {129.066, 5946.75}, {129.091, 7317.95}, {129.102, 6977.88}, {130.065, 2379.79}, {130.087, 5091.96}, {131.07, 48273.6}, {131.087, 6404.52}, {131.107, 1801.39}, {132.074, 1826.34}, {133.086, 245602}, {133.588, 2947.25}, {134.089, 17387.1}, {134.993, 2116.07}, {135.081, 6530.39}, {135.117, 12822.9}, {136.076, 9739.49}, {137.096, 8168.15}, {137.133, 1995.65}, {138.092, 1773.06}, {139.076, 6838}, {139.112, 5610.2}, {140.095, 1929.64}, {140.107, 10021.8}, {141.091, 6473.44}, {141.127, 1759.04}, {142.123, 2570.99}, {143.071, 2289.28}, {143.108, 3512.4}, {143.118, 13273.3}, {144.102, 2022.77}, {145.051, 1621.94}, {145.087, 1811.55}, {145.101, 6412.22}, {145.123, 1565.65}, {146.094, 15363.7}, {146.595, 2046.11}, {147.044, 1342.77}, {147.065, 8760.55}, {147.081, 1940.53}, {147.102, 22403.3}, {147.115, 8926.49}, {149.096, 6581.73}, {149.133, 5847.23}, {151.075, 5409.98}, {151.097, 2271.86}, {151.112, 5583.89}, {152.108, 5696.35}, {153.091, 6418.92}, {153.128, 2253.41}, {154.087, 1357.14}, {154.123, 25125.8}, {155.097, 9781.48}, {155.11, 1780.95}, {156.102, 8107.66}, {156.137, 1521.09}, {157.134, 27587.5}, {158.092, 2172.65}, {158.117, 5618.04}, {159.101, 7098.61}, {159.116, 5979.43}, {161.081, 1808.02}, {161.095, 1742.41}, {161.117, 6572.96}, {161.132, 4798.3}, {163.097, 3163.79}, {163.112, 7658.69}, {163.149, 2277.79}, {164.105, 6259.31}, {165.091, 5256.09}, {165.128, 2644.99}, {166.054, 5869.06}, {166.123, 1603.3}, {167.106, 1763}, {168.069, 2399.99}, {168.105, 1593.3}, {168.138, 2041.98}, {169.086, 2146.5}, {169.1, 1865.34}, {169.134, 7854.18}, {170.117, 24030.6}, {171.101, 2235.5}, {171.115, 2957.3}, {171.149, 39062.5}, {172.134, 13334.8}, {173.093, 5114.72}, {173.117, 8631.08}, {173.13, 5303.29}, {174.112, 2742.49}, {175.097, 12538.7}, {175.119, 25183.3}, {175.133, 7473.42}, {175.148, 2664.61}, {177.09, 2204.55}, {177.113, 52904.4}, {177.127, 4770.5}, {178.116, 2485.74}, {179.106, 2751.31}, {179.119, 2403.68}, {179.143, 6999.31}, {181.122, 1902.17}, {182.154, 2802.05}, {183.101, 1776.2}, {184.073, 5227.31}, {184.134, 6150.57}, {185.13, 5578.06}, {185.166, 2662.32}, {187.072, 1981.55}, {187.11, 1845.93}, {187.145, 27989}, {188.147, 1641.03}, {189.128, 1738.55}, {190.121, 2328.53}, {191.128, 7989.35}, {192.138, 1458.81}, {196.171, 1885.77}, {197.129, 19692.7}, {198.15, 2859.96}, {199.127, 2262.41}, {201.125, 5841.99}, {203.106, 2486.6}, {205.098, 2673.08}, {207.122, 1413.82}, {209.116, 1608.26}, {210.149, 2769.95}, {211.147, 2665.94}, {212.166, 2871.34}, {213.161, 1735.92}, {215.14, 57434.9}, {216.141, 7285.48}, {217.196, 1415.78}, {219.174, 1498.28}, {221.139, 7021.04}, {225.124, 10115.4}, {226.181, 10444.2}, {227.179, 2551.16}, {228.269, 6800.2}, {239.148, 5466.28}, {241.106, 1809.45}, {243.134, 10133.7}, {244.264, 26424.2}, {245.268, 2782.22}, {247.17, 2311.67}, {249.186, 2303.04}, {254.152, 1745.34}, {257.191, 2580.59}, {259.206, 5775.87}, {261.222, 6808.63}, {264.197, 3247.49}, {271.175, 2850.4}, {272.295, 11611}, {273.186, 11948.8}, {275.2, 16706.5}, {276.203, 2150.23}, {277.216, 36167.8}, {278.249, 7893.56}, {279.231, 16870.7}, {280.233, 2530.57}, {282.145, 1712.36}, {283.175, 7353.41}, {287.055, 2417.37}, {288.289, 32807.4}, {289.293, 8928.77}, {290.214, 7618.13}, {291.194, 14399.3}, {292.227, 14582.9}, {293.21, 21588.3}, {294.243, 28819.8}, {296.26, 9409.71}, {304.286, 10249.6}, {306.207, 2676.59}, {308.16, 6271}, {308.189, 111642}, {309.221, 2689.04}, {310.239, 13792.8}, {312.218, 1833.09}, {316.321, 35943.9}, {326.171, 18416.8}, {331.08, 17702.9}, {360.884, 1547.19}, {391.232, 2437.46}, {401.288, 20657.7}, {402.293, 2749.24}, {419.191, 1795.47}, {424.305, 2363.22}, {447.361, 1858.47}, {499.291, 2152.42}, {516.315, 8476.86}, {595.427, 2431.63}, {596.437, 14625.5}, {615.383, 11218.2}, {639.426, 22234.6}, {661.367, 9815.55}, {760.435, 2172.92}, {762.448, 9644.32}, {802.458, 1777.27}, {819.471, 46275.2}, {820.475, 21511}, {821.479, 3242.61}, {865.499, 1766.79}, {932.555, 13635}, {933.556, 6769.24}, {1033.61, 14522.8}, {1034.61, 9338.05}, {1035.6, 2029.54}}; std::vector> remove_low_masses = { {151.075, 5409.98}, {151.097, 2271.86}, {151.112, 5583.89}, {152.108, 5696.35}, {153.091, 6418.92}, {153.128, 2253.41}, {154.087, 1357.14}, {154.123, 25125.8}, {155.097, 9781.48}, {155.11, 1780.95}, {156.102, 8107.66}, {156.137, 1521.09}, {157.134, 27587.5}, {158.092, 2172.65}, {158.117, 5618.04}, {159.101, 7098.61}, {159.116, 5979.43}, {161.081, 1808.02}, {161.095, 1742.41}, {161.117, 6572.96}, {161.132, 4798.3}, {163.097, 3163.79}, {163.112, 7658.69}, {163.149, 2277.79}, {164.105, 6259.31}, {165.091, 5256.09}, {165.128, 2644.99}, {166.054, 5869.06}, {166.123, 1603.3}, {167.106, 1763}, {168.069, 2399.99}, {168.105, 1593.3}, {168.138, 2041.98}, {169.086, 2146.5}, {169.1, 1865.34}, {169.134, 7854.18}, {170.117, 24030.6}, {171.101, 2235.5}, {171.115, 2957.3}, {171.149, 39062.5}, {172.134, 13334.8}, {173.093, 5114.72}, {173.117, 8631.08}, {173.13, 5303.29}, {174.112, 2742.49}, {175.097, 12538.7}, {175.119, 25183.3}, {175.133, 7473.42}, {175.148, 2664.61}, {177.09, 2204.55}, {177.113, 52904.4}, {177.127, 4770.5}, {178.116, 2485.74}, {179.106, 2751.31}, {179.119, 2403.68}, {179.143, 6999.31}, {181.122, 1902.17}, {182.154, 2802.05}, {183.101, 1776.2}, {184.073, 5227.31}, {184.134, 6150.57}, {185.13, 5578.06}, {185.166, 2662.32}, {187.072, 1981.55}, {187.11, 1845.93}, {187.145, 27989}, {188.147, 1641.03}, {189.128, 1738.55}, {190.121, 2328.53}, {191.128, 7989.35}, {192.138, 1458.81}, {196.171, 1885.77}, {197.129, 19692.7}, {198.15, 2859.96}, {199.127, 2262.41}, {201.125, 5841.99}, {203.106, 2486.6}, {205.098, 2673.08}, {207.122, 1413.82}, {209.116, 1608.26}, {210.149, 2769.95}, {211.147, 2665.94}, {212.166, 2871.34}, {213.161, 1735.92}, {215.14, 57434.9}, {216.141, 7285.48}, {217.196, 1415.78}, {219.174, 1498.28}, {221.139, 7021.04}, {225.124, 10115.4}, {226.181, 10444.2}, {227.179, 2551.16}, {228.269, 6800.2}, {239.148, 5466.28}, {241.106, 1809.45}, {243.134, 10133.7}, {244.264, 26424.2}, {245.268, 2782.22}, {247.17, 2311.67}, {249.186, 2303.04}, {254.152, 1745.34}, {257.191, 2580.59}, {259.206, 5775.87}, {261.222, 6808.63}, {264.197, 3247.49}, {271.175, 2850.4}, {272.295, 11611}, {273.186, 11948.8}, {275.2, 16706.5}, {276.203, 2150.23}, {277.216, 36167.8}, {278.249, 7893.56}, {279.231, 16870.7}, {280.233, 2530.57}, {282.145, 1712.36}, {283.175, 7353.41}, {287.055, 2417.37}, {288.289, 32807.4}, {289.293, 8928.77}, {290.214, 7618.13}, {291.194, 14399.3}, {292.227, 14582.9}, {293.21, 21588.3}, {294.243, 28819.8}, {296.26, 9409.71}, {304.286, 10249.6}, {306.207, 2676.59}, {308.16, 6271}, {308.189, 111642}, {309.221, 2689.04}, {310.239, 13792.8}, {312.218, 1833.09}, {316.321, 35943.9}, {326.171, 18416.8}, {331.08, 17702.9}, {360.884, 1547.19}, {391.232, 2437.46}, {401.288, 20657.7}, {402.293, 2749.24}, {419.191, 1795.47}, {424.305, 2363.22}, {447.361, 1858.47}, {499.291, 2152.42}, {516.315, 8476.86}, {595.427, 2431.63}, {596.437, 14625.5}, {615.383, 11218.2}, {639.426, 22234.6}, {661.367, 9815.55}, {760.435, 2172.92}, {762.448, 9644.32}, {802.458, 1777.27}, {819.471, 46275.2}, {820.475, 21511}, {821.479, 3242.61}, {865.499, 1766.79}, {932.555, 13635}, {933.556, 6769.24}, {1033.61, 14522.8}, {1034.61, 9338.05}, {1035.6, 2029.54}}; std::vector> dynamic_range = { {151.075, 4.84583}, {151.097, 2.03496}, {151.112, 5.00161}, {152.108, 5.10235}, {153.091, 5.74957}, {153.128, 2.01843}, {154.087, 1.21562}, {154.123, 22.5057}, {155.097, 8.76148}, {155.11, 1.59524}, {156.102, 7.26221}, {156.137, 1.36247}, {157.134, 24.7108}, {158.092, 1.94609}, {158.117, 5.0322}, {159.101, 6.35838}, {159.116, 5.35591}, {161.081, 1.61948}, {161.095, 1.56072}, {161.117, 5.88754}, {161.132, 4.29795}, {163.097, 2.83387}, {163.112, 6.86005}, {163.149, 2.04027}, {164.105, 5.6066}, {165.091, 4.70799}, {165.128, 2.36918}, {166.054, 5.25704}, {166.123, 1.43611}, {167.106, 1.57916}, {168.069, 2.14972}, {168.105, 1.42716}, {168.138, 1.82905}, {169.086, 1.92267}, {169.1, 1.67083}, {169.134, 7.03516}, {170.117, 21.5247}, {171.101, 2.00239}, {171.115, 2.64892}, {171.149, 34.9891}, {172.134, 11.9443}, {173.093, 4.58136}, {173.117, 7.73104}, {173.13, 4.75028}, {174.112, 2.45651}, {175.097, 11.2311}, {175.119, 22.5572}, {175.133, 6.6941}, {175.148, 2.38675}, {177.09, 1.97466}, {177.113, 47.3876}, {177.127, 4.27304}, {178.116, 2.22653}, {179.106, 2.46441}, {179.119, 2.15303}, {179.143, 6.26943}, {181.122, 1.70381}, {182.154, 2.50986}, {183.101, 1.59098}, {184.073, 4.68222}, {184.134, 5.5092}, {185.13, 4.99639}, {185.166, 2.3847}, {187.072, 1.77492}, {187.11, 1.65344}, {187.145, 25.0704}, {188.147, 1.4699}, {189.128, 1.55726}, {190.121, 2.08571}, {191.128, 7.15624}, {192.138, 1.30669}, {196.171, 1.68912}, {197.129, 17.6392}, {198.15, 2.56173}, {199.127, 2.02649}, {201.125, 5.2328}, {203.106, 2.2273}, {205.098, 2.39433}, {207.122, 1.26639}, {209.116, 1.44055}, {210.149, 2.48111}, {211.147, 2.38794}, {212.166, 2.57192}, {213.161, 1.5549}, {215.14, 51.4457}, {216.141, 6.52577}, {217.196, 1.26814}, {219.174, 1.34204}, {221.139, 6.28889}, {225.124, 9.0606}, {226.181, 9.3551}, {227.179, 2.28513}, {228.269, 6.09109}, {239.148, 4.89627}, {241.106, 1.62076}, {243.134, 9.07701}, {244.264, 23.6687}, {245.268, 2.49209}, {247.17, 2.07061}, {249.186, 2.06288}, {254.152, 1.56334}, {257.191, 2.31149}, {259.206, 5.17357}, {261.222, 6.09864}, {264.197, 2.90884}, {271.175, 2.55317}, {272.295, 10.4002}, {273.186, 10.7028}, {275.2, 14.9644}, {276.203, 1.92601}, {277.216, 32.3963}, {278.249, 7.07043}, {279.231, 15.1114}, {280.233, 2.26669}, {282.145, 1.53379}, {283.175, 6.58661}, {287.055, 2.16529}, {288.289, 29.3863}, {289.293, 7.99769}, {290.214, 6.82373}, {291.194, 12.8977}, {292.227, 13.0622}, {293.21, 19.3371}, {294.243, 25.8145}, {296.26, 8.42848}, {304.286, 9.18075}, {306.207, 2.39748}, {308.16, 5.61707}, {308.189, 100}, {309.221, 2.40864}, {310.239, 12.3545}, {312.218, 1.64194}, {316.321, 32.1957}, {326.171, 16.4964}, {331.08, 15.8568}, {360.884, 1.38585}, {391.232, 2.18329}, {401.288, 18.5035}, {402.293, 2.46255}, {419.191, 1.60824}, {424.305, 2.11679}, {447.361, 1.66467}, {499.291, 1.92797}, {516.315, 7.59291}, {595.427, 2.17807}, {596.437, 13.1004}, {615.383, 10.0484}, {639.426, 19.916}, {661.367, 8.792}, {760.435, 1.94633}, {762.448, 8.63863}, {802.458, 1.59194}, {819.471, 41.4497}, {820.475, 19.2679}, {821.479, 2.90448}, {865.499, 1.58255}, {932.555, 12.2131}, {933.556, 6.06335}, {1033.61, 13.0084}, {1034.61, 8.3643}, {1035.6, 1.8179}}; std::vector> remove_neutral = { {151.075, 4.84583}, {151.097, 2.03496}, {151.112, 5.00161}, {152.108, 5.10235}, {153.091, 5.74957}, {153.128, 2.01843}, {154.087, 1.21562}, {154.123, 22.5057}, {155.097, 8.76148}, {155.11, 1.59524}, {156.102, 7.26221}, {156.137, 1.36247}, {157.134, 24.7108}, {158.092, 1.94609}, {158.117, 5.0322}, {159.101, 6.35838}, {159.116, 5.35591}, {161.081, 1.61948}, {161.095, 1.56072}, {161.117, 5.88754}, {161.132, 4.29795}, {163.097, 2.83387}, {163.112, 6.86005}, {163.149, 2.04027}, {164.105, 5.6066}, {165.091, 4.70799}, {165.128, 2.36918}, {166.054, 5.25704}, {166.123, 1.43611}, {167.106, 1.57916}, {168.069, 2.14972}, {168.105, 1.42716}, {168.138, 1.82905}, {169.086, 1.92267}, {169.1, 1.67083}, {169.134, 7.03516}, {170.117, 21.5247}, {171.101, 2.00239}, {171.115, 2.64892}, {171.149, 34.9891}, {172.134, 11.9443}, {173.093, 4.58136}, {173.117, 7.73104}, {173.13, 4.75028}, {174.112, 2.45651}, {175.097, 11.2311}, {175.119, 22.5572}, {175.133, 6.6941}, {175.148, 2.38675}, {177.09, 1.97466}, {177.113, 47.3876}, {177.127, 4.27304}, {178.116, 2.22653}, {179.106, 2.46441}, {179.119, 2.15303}, {179.143, 6.26943}, {181.122, 1.70381}, {182.154, 2.50986}, {183.101, 1.59098}, {184.073, 4.68222}, {184.134, 5.5092}, {185.13, 4.99639}, {185.166, 2.3847}, {187.072, 1.77492}, {187.11, 1.65344}, {187.145, 25.0704}, {188.147, 1.4699}, {189.128, 1.55726}, {190.121, 2.08571}, {191.128, 7.15624}, {192.138, 1.30669}, {196.171, 1.68912}, {197.129, 17.6392}, {198.15, 2.56173}, {199.127, 2.02649}, {201.125, 5.2328}, {203.106, 2.2273}, {205.098, 2.39433}, {207.122, 1.26639}, {209.116, 1.44055}, {210.149, 2.48111}, {211.147, 2.38794}, {212.166, 2.57192}, {213.161, 1.5549}, {215.14, 51.4457}, {216.141, 6.52577}, {217.196, 1.26814}, {219.174, 1.34204}, {221.139, 6.28889}, {225.124, 9.0606}, {226.181, 9.3551}, {227.179, 2.28513}, {228.269, 6.09109}, {239.148, 4.89627}, {241.106, 1.62076}, {243.134, 9.07701}, {244.264, 23.6687}, {245.268, 2.49209}, {247.17, 2.07061}, {249.186, 2.06288}, {254.152, 1.56334}, {257.191, 2.31149}, {259.206, 5.17357}, {261.222, 6.09864}, {264.197, 2.90884}, {271.175, 2.55317}, {272.295, 10.4002}, {273.186, 10.7028}, {275.2, 14.9644}, {276.203, 1.92601}, {277.216, 32.3963}, {278.249, 7.07043}, {279.231, 15.1114}, {280.233, 2.26669}, {282.145, 1.53379}, {283.175, 6.58661}, {287.055, 2.16529}, {288.289, 29.3863}, {289.293, 7.99769}, {290.214, 6.82373}, {291.194, 12.8977}, {292.227, 13.0622}, {293.21, 19.3371}, {294.243, 25.8145}, {296.26, 8.42848}, {304.286, 9.18075}, {306.207, 2.39748}, {308.16, 5.61707}, {308.189, 100}, {309.221, 2.40864}, {310.239, 12.3545}, {312.218, 1.64194}, {316.321, 32.1957}, {326.171, 16.4964}, {331.08, 15.8568}, {360.884, 1.38585}, {391.232, 2.18329}, {401.288, 18.5035}, {402.293, 2.46255}, {419.191, 1.60824}, {424.305, 2.11679}, {447.361, 1.66467}, {499.291, 1.92797}, {516.315, 7.59291}, {595.427, 2.17807}, {596.437, 13.1004}, {615.383, 10.0484}, {639.426, 19.916}, {661.367, 8.792}, {760.435, 1.94633}, {762.448, 8.63863}, {802.458, 1.59194}, {819.471, 41.4497}, {820.475, 19.2679}, {821.479, 2.90448}, {865.499, 1.58255}, {932.555, 12.2131}, {933.556, 6.06335}, {1033.61, 13.0084}, {1034.61, 8.3643}, {1035.6, 1.8179}}; std::vector> clean_isotopes = { {151.075, 4.84583}, {151.097, 2.03496}, {151.112, 5.00161}, {152.108, 5.10235}, {153.091, 5.74957}, {153.128, 2.01843}, {154.087, 1.21562}, {154.123, 22.5057}, {155.097, 8.76148}, {155.11, 1.59524}, {156.102, 7.26221}, {156.137, 1.36247}, {157.134, 24.7108}, {158.092, 1.94609}, {158.117, 5.0322}, {159.101, 6.35838}, {159.116, 5.35591}, {161.081, 1.61948}, {161.095, 1.56072}, {161.117, 5.88754}, {161.132, 4.29795}, {163.097, 2.83387}, {163.112, 6.86005}, {163.149, 2.04027}, {164.105, 5.6066}, {165.091, 4.70799}, {165.128, 2.36918}, {166.054, 5.25704}, {166.123, 1.43611}, {167.106, 1.57916}, {168.069, 2.14972}, {168.105, 1.42716}, {168.138, 1.82905}, {169.086, 1.92267}, {169.1, 1.67083}, {169.134, 7.03516}, {170.117, 21.5247}, {171.101, 2.00239}, {171.115, 2.64892}, {171.149, 34.9891}, {172.134, 11.9443}, {173.093, 4.58136}, {173.117, 7.73104}, {173.13, 4.75028}, {174.112, 2.45651}, {175.097, 11.2311}, {175.119, 22.5572}, {175.133, 6.6941}, {175.148, 2.38675}, {177.09, 1.97466}, {177.113, 47.3876}, {177.127, 4.27304}, {178.116, 2.22653}, {179.106, 2.46441}, {179.119, 2.15303}, {179.143, 6.26943}, {181.122, 1.70381}, {182.154, 2.50986}, {183.101, 1.59098}, {184.073, 4.68222}, {184.134, 5.5092}, {185.13, 4.99639}, {185.166, 2.3847}, {187.072, 1.77492}, {187.11, 1.65344}, {187.145, 25.0704}, {188.147, 1.4699}, {189.128, 1.55726}, {190.121, 2.08571}, {191.128, 7.15624}, {192.138, 1.30669}, {196.171, 1.68912}, {197.129, 17.6392}, {198.15, 2.56173}, {199.127, 2.02649}, {201.125, 5.2328}, {203.106, 2.2273}, {205.098, 2.39433}, {207.122, 1.26639}, {210.149, 2.48111}, {212.166, 2.57192}, {213.161, 1.5549}, {215.14, 51.4457}, {217.196, 1.26814}, {219.174, 1.34204}, {221.139, 6.28889}, {226.181, 9.3551}, {228.269, 6.09109}, {239.148, 4.89627}, {241.106, 1.62076}, {244.264, 23.6687}, {245.268, 2.49209}, {247.17, 2.07061}, {249.186, 2.06288}, {254.152, 1.56334}, {257.191, 2.31149}, {259.206, 5.17357}, {261.222, 6.09864}, {264.197, 2.90884}, {272.295, 10.4002}, {273.186, 10.7028}, {275.2, 14.9644}, {277.216, 32.3963}, {279.231, 15.1114}, {283.175, 6.58661}, {288.289, 29.3863}, {289.293, 7.99769}, {292.227, 13.0622}, {294.243, 25.8145}, {296.26, 8.42848}, {304.286, 9.18075}, {306.207, 2.39748}, {308.189, 100}, {310.239, 12.3545}, {312.218, 1.64194}, {316.321, 32.1957}, {326.171, 16.4964}, {331.08, 15.8568}, {360.884, 1.38585}, {391.232, 2.18329}, {401.288, 18.5035}, {419.191, 1.60824}, {424.305, 2.11679}, {447.361, 1.66467}, {499.291, 1.92797}, {516.315, 7.59291}, {596.437, 13.1004}, {615.383, 10.0484}, {639.426, 19.916}, {661.367, 8.792}, {760.435, 1.94633}, {762.448, 8.63863}, {802.458, 1.59194}, {819.471, 41.4497}, {821.479, 2.90448}, {865.499, 1.58255}, {932.555, 12.2131}, {1033.61, 13.0084}, {1035.6, 1.8179}}; std::vector> remove_small = { {308.189, 100}, {215.14, 51.4457}, {177.113, 47.3876}, {819.471, 41.4497}, {171.149, 34.9891}, {277.216, 32.3963}, {316.321, 32.1957}, {288.289, 29.3863}, {294.243, 25.8145}, {187.145, 25.0704}, {157.134, 24.7108}, {244.264, 23.6687}, {175.119, 22.5572}, {154.123, 22.5057}, {170.117, 21.5247}, {639.426, 19.916}, {401.288, 18.5035}, {197.129, 17.6392}, {326.171, 16.4964}, {331.08, 15.8568}, {279.231, 15.1114}, {275.2, 14.9644}, {596.437, 13.1004}, {292.227, 13.0622}, {1033.61, 13.0084}, {310.239, 12.3545}, {932.555, 12.2131}, {172.134, 11.9443}, {175.097, 11.2311}, {273.186, 10.7028}, {272.295, 10.4002}, {615.383, 10.0484}, {226.181, 9.3551}, {304.286, 9.18075}, {661.367, 8.792}, {155.097, 8.76148}, {762.448, 8.63863}, {296.26, 8.42848}, {289.293, 7.99769}, {173.117, 7.73104}, {516.315, 7.59291}, {156.102, 7.26221}, {191.128, 7.15624}, {169.134, 7.03516}, {163.112, 6.86005}, {175.133, 6.6941}, {283.175, 6.58661}, {159.101, 6.35838}, {221.139, 6.28889}, {179.143, 6.26943}, {261.222, 6.09864}, {228.269, 6.09109}, {161.117, 5.88754}, {153.091, 5.74957}, {164.105, 5.6066}, {184.134, 5.5092}, {159.116, 5.35591}, {166.054, 5.25704}, {201.125, 5.2328}, {259.206, 5.17357}, {152.108, 5.10235}, {158.117, 5.0322}, {151.112, 5.00161}, {185.13, 4.99639}, {239.148, 4.89627}, {151.075, 4.84583}, {173.13, 4.75028}, {165.091, 4.70799}, {184.073, 4.68222}, {173.093, 4.58136}, {161.132, 4.29795}, {177.127, 4.27304}, {264.197, 2.90884}, {821.479, 2.90448}, {163.097, 2.83387}, {171.115, 2.64892}, {212.166, 2.57192}, {198.15, 2.56173}, {182.154, 2.50986}, {245.268, 2.49209}, {210.149, 2.48111}, {179.106, 2.46441}, {174.112, 2.45651}, {306.207, 2.39748}, {205.098, 2.39433}, {175.148, 2.38675}, {185.166, 2.3847}, {165.128, 2.36918}, {257.191, 2.31149}, {203.106, 2.2273}, {178.116, 2.22653}, {391.232, 2.18329}, {179.119, 2.15303}, {168.069, 2.14972}, {424.305, 2.11679}, {190.121, 2.08571}, {247.17, 2.07061}, {249.186, 2.06288}, {163.149, 2.04027}, {151.097, 2.03496}}; MassSpectrum sfirst(first_spectrum); sfirst.sortMz(); MassSpectrum sremove_isotopes(remove_isotopes); sremove_isotopes.sortMz(); MassSpectrum sremove_parent(remove_parent); sremove_parent.sortMz(); MassSpectrum sremove_low_masses(remove_low_masses); sremove_low_masses.sortMz(); MassSpectrum sdynamic_range(dynamic_range); sdynamic_range.sortMz(); MassSpectrum sremove_neutral(remove_neutral); sremove_neutral.sortMz(); MassSpectrum sclean_isotopes(clean_isotopes); sclean_isotopes.sortMz(); MassSpectrum sremove_small(remove_small); sremove_small.sortMz(); // 15968 // msconvert // /gorgone/pappso/formation/Janvier2014/TD/mzXML/20120906_balliau_extract_1_A01_urnb-1.mzXML // --filter "scanNumber 15968" --mgf MassSpectrum spectrum = readMgf(QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_15968.mgf")); REQUIRE(spectrum.equals(sfirst, precision)); MassSpectrum spectrum_isotopes = MassSpectrum(spectrum).massSpectrumFilter(FilterTandemDeisotope()); REQUIRE(spectrum_isotopes.equals(sremove_isotopes, precision)); Peptide pep15968("EITLGFVDLLR"); unsigned int charge_pep15968 = 2; // XtandemSpectrumProcess xt_spectrum_process; // xt_spectrum_process.setNeutralLossWindowDalton(0.02); MzRange parent_mass = MzRange(638.36934732588, PrecisionFactory::getDaltonInstance(2 / charge_pep15968), PrecisionFactory::getDaltonInstance(2 / charge_pep15968)); MzRange parent_mass_sum = MzRange(pep15968.getMz(2), PrecisionFactory::getDaltonInstance(0.04)); MassSpectrum sum = sfirst.filterSum(parent_mass_sum); qDebug() << " sum spectrum "; sum.debugPrintValues(); MzRange parent_mass_sum_false = MzRange(pep15968.getMz(1), PrecisionFactory::getDaltonInstance(0.04)); MassSpectrum sum_false = sfirst.filterSum(parent_mass_sum_false); qDebug() << " sum spectrum false"; sum_false.debugPrintValues(); MassSpectrum spectrum_parent(spectrum_isotopes); MassSpectrumFilterResampleRemoveMzRange(parent_mass) .filter(spectrum_parent); REQUIRE(spectrum_parent.equals(sremove_parent, precision)); MassSpectrum spectrum_low_masses(spectrum_parent); FilterResampleKeepGreater(150).filter(spectrum_low_masses); REQUIRE(spectrum_low_masses.equals(sremove_low_masses, precision)); MassSpectrum spectrum_drange(spectrum_low_masses); FilterRescaleY(100).filter(spectrum_drange); REQUIRE(spectrum_drange.equals(sdynamic_range, precision)); pappso_double parent_ion_mhplus = ((638.36934732588 - (MHPLUS * charge_pep15968)) * charge_pep15968) + MHPLUS; MzRange neutral_mass = MzRange(parent_ion_mhplus - MASSH2O, PrecisionFactory::getDaltonInstance(0.5)); MassSpectrum spectrum_neutral(spectrum_drange); MassSpectrumFilterResampleRemoveMzRange(neutral_mass) .filter(spectrum_neutral); // Spectrum // spectrum_neutral(spectrum_drange.removeNeutral(pep15968.getPeptideSp(), // charge_pep15968, MASSH2O, DaltonPrecision(0.5))); REQUIRE(spectrum_neutral.equals(sremove_neutral, precision)); MassSpectrum spectrum_clean_isotopes(spectrum_neutral.massSpectrumFilter( pappso::FilterTandemDeisotope(1.5, 200))); std::cout << spectrum_neutral.size() << std::endl; std::cout << sclean_isotopes.size() << std::endl; std::cout << spectrum_clean_isotopes.size() << std::endl; REQUIRE(spectrum_clean_isotopes.equals(sclean_isotopes, precision)); MassSpectrum spectrum_most_intense(spectrum_clean_isotopes); spectrum_most_intense.massSpectrumFilter( MassSpectrumFilterGreatestItensities(100)); REQUIRE(spectrum_most_intense.equals(sremove_small, precision)); bool refine_spectrum_synthesis = true; // spectrum.debugPrintValues(); XtandemHyperscore hyperscore15968(spectrum_most_intense, pep15968.makePeptideSp(), charge_pep15968, precision, ion_list, refine_spectrum_synthesis); std::cout << "peptide " << pep15968.getSequence().toStdString() << " hyperscore15968=" << hyperscore15968.getHyperscore() << std::endl; std::cout << "peptide " << pep15968.getSequence().toStdString() << " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << std::endl; // Spectrum::getHyperscore "b" itmap->second 1 1 // Spectrum::getHyperscore "y" itmap->second 9 362880 REQUIRE(hyperscore15968.getHyperscore() == Approx(29.088471341).margin(0.001)); REQUIRE(pep15968.getMz(1) == Approx(1275.73).margin(0.01)); REQUIRE(pep15968.getMz(2) == Approx(638.369).margin(0.001)); /* GRMZM5G815453_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=Pt:56824..58323:1; parent_transcript=GRMZM5G815453_T01; parent_gene=GRMZM5G815453 */ } } libpappsomspp-0.9.20/tests/test_tandem_run_wrapper.cpp000644 001750 001750 00000013434 14526455546 024527 0ustar00rusconirusconi000000 000000 // // File: test_tandem_run_wrapper.cpp // Created by: Olivier Langella // Created on: 12/11/2021 // /******************************************************************************* * Copyright (c) 2021 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [xtrunwrapper] -s // ./tests/catch2-only-tests [xtrunwrapper] -s -a #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include "config.h" #include "common.h" using namespace pappso; using namespace std; TEST_CASE("test xtandem run wrapper", "[xtrunwrapper]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); INFO("..:: test X!Tandem run wrapper begin ::.."); SECTION("test XtandemInputSaxHandler") { WrapTandemResults wrap_results("wrapped_tandem_output.xml", "original_mzdata_source.mzXML"); wrap_results.setInputParameters("output, spectrum index", "true"); REQUIRE(wrap_results.readFile( QString(CMAKE_SOURCE_DIR) .append("/tests/data/tandem/tandem_result_file.xml"))); QFile fnew("wrapped_tandem_output.xml"); REQUIRE(fnew.open(QFile::ReadOnly | QFile::Text)); // REQUIRE(fnew.errorString().toStdString() == ""); QTextStream infnew(&fnew); QString alltandem = infnew.readAll(); REQUIRE(alltandem.contains( "/tmp/xtpcpp-HDpOXY/QExactive_analysis_FDR.xml")); REQUIRE(alltandem.contains( QString("%1") .arg(QFileInfo("original_mzdata_source.mzXML").absoluteFilePath()))); REQUIRE(alltandem.contains( QString("%1") .arg(QFileInfo("wrapped_tandem_output.xml").absoluteFilePath()))); REQUIRE(alltandem.contains( "true")); } SECTION("test XtandemInputSaxHandler") { WrapTandemInput wrap_input("mzdata_source.mzXML", "wrapped_tandem_input.xml", "wrapped_tandem_output.xml"); REQUIRE(wrap_input.readFile( QString(CMAKE_SOURCE_DIR) .append("/tests/data/tandem/tandem_run_params.xml"))); REQUIRE(wrap_input.getOriginalTandemPresetFileName().toStdString() == "/gorgone/pappso/tmp/xtpcpp.AjyZGg/" "Lumos_trypsin_rev_camC_oxM_10ppm_HCDOT_12102017CH.xml"); REQUIRE(wrap_input.getOriginalMsDataFileName().toStdString() == "/gorgone/pappso/jouy/raw/2021_Lumos/20210729_02_Clouet/" "20210729_18_blc.mzXML"); REQUIRE(wrap_input.getOriginalTandemOutputFileName().toStdString() == "/gorgone/pappso/jouy/users/Lydie/2021/2021_lumos/" "20210729_02_Clouet/xtpcpp/20210729_18_blc.xml"); REQUIRE(compareTextFiles( "wrapped_tandem_input.xml", QString(CMAKE_SOURCE_DIR) .append("/tests/data/tandem/wrapper/wrapped_tandem_input.xml"))); } SECTION("test XtandemPresetReader") { XtandemPresetReader preset_reader; REQUIRE_FALSE(preset_reader.readFile( QString(CMAKE_SOURCE_DIR) .append("/tests/data/tandem/settings/timstofmgf_wrong.xml"))); REQUIRE(!preset_reader.errorString().isEmpty()); REQUIRE(preset_reader.readFile( QString(CMAKE_SOURCE_DIR) .append("/tests/data/tandem/settings/timstofmgf.xml"))); qDebug() << preset_reader.getMs2FiltersOptions(); REQUIRE(preset_reader.getNumberOfThreads() == 5); REQUIRE(preset_reader.getMs2FiltersOptions().toStdString() == "chargeDeconvolution|0.02dalton mzExclusion|0.01dalton"); REQUIRE_FALSE(preset_reader.readFile("nofile")); REQUIRE(!preset_reader.errorString().isEmpty()); REQUIRE(preset_reader.readFile( QString(CMAKE_SOURCE_DIR) .append( "/tests/data/tandem/settings/QExactive_analysis_FDR_nosemi.xml"))); qDebug() << preset_reader.getMs2FiltersOptions(); REQUIRE(preset_reader.getNumberOfThreads() == 1); REQUIRE(preset_reader.getMs2FiltersOptions().toStdString() == "chargeDeconvolution|0.02dalton mzExclusion|0.01dalton"); REQUIRE_FALSE(preset_reader.readFile( QString(CMAKE_SOURCE_DIR).append("/tests/data/tandem/database.xml"))); REQUIRE(preset_reader.getCountNote() == 0); REQUIRE_FALSE(preset_reader.readFile( QString(CMAKE_SOURCE_DIR) .append("/tests/data/tandem/tandem_run_params.xml"))); REQUIRE(preset_reader.getCountNote() == 8); } } libpappsomspp-0.9.20/tests/test_tims_ion_mobility_grid.cpp000644 001750 001750 00000023444 14533333502 025354 0ustar00rusconirusconi000000 000000 // File: test_timsxicextractor.cpp // Created by: Olivier Langella // Created on: 3/2/2021 // /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [TimsIonMobilityGrid] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include "config.h" #include "common.h" #include using namespace pappso; TEST_CASE("test TimsIonMobilityGrid", "[TimsIonMobilityGrid]") { qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 IonMobilityGrid ion_mobility_grid; pappso::MsFileAccessor accessor( "/gorgone/pappso/versions_logiciels_pappso/masschroq/donnees/" "PXD010012_msfragger_timstof/" "20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_1_A1_01_" "2767.d/analysis.tdf", "a1"); accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); pappso::MsRunReaderSPtr p_msreader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); REQUIRE(p_msreader != nullptr); REQUIRE(accessor.getFileReaderType() == pappso::FileReaderType::tims_ms2); pappso::MsFileAccessor accessor_a2( "/gorgone/pappso/versions_logiciels_pappso/masschroq/donnees/" "PXD010012_msfragger_timstof/" "20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_2_A1_01_" "2768.d/analysis.tdf", "a2"); accessor_a2.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); pappso::MsRunReaderSPtr p_msreader_a2 = accessor_a2.msRunReaderSPtr(accessor_a2.getMsRunIds().front()); REQUIRE(p_msreader_a2 != nullptr); REQUIRE(accessor_a2.getFileReaderType() == pappso::FileReaderType::tims_ms2); auto msrunid_a1 = *p_msreader->getMsRunId().get(); auto msrunid_a2 = *p_msreader_a2->getMsRunId().get(); qInfo() << "store observed"; INFO("store observed"); auto a1 = p_msreader.get()->newXicCoordSPtrFromSpectrumIndex( 106171, pappso::PrecisionFactory::getPpmInstance(10)); auto a2 = p_msreader_a2.get()->newXicCoordSPtrFromSpectrumIndex( 106889, pappso::PrecisionFactory::getPpmInstance(10)); qInfo() << "first a1" << a1.get()->toString(); qInfo() << "first a2" << a2.get()->toString(); ion_mobility_grid.storeObservedIdentityBetween( msrunid_a1, a1.get(), msrunid_a2, a2.get()); INFO("store observed pepa1e17369"); // pepa1e17369 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_1_A1_01_2767 // 261103 2586,61 650,346968967 ILDEIGADVQAR pepa1e17369 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_2_A1_01_2768 // 259019 2593,3 650,347328967 ILDEIGADVQAR a1 = p_msreader.get()->newXicCoordSPtrFromSpectrumIndex( 261103, pappso::PrecisionFactory::getPpmInstance(10)); a2 = p_msreader_a2.get()->newXicCoordSPtrFromSpectrumIndex( 259019, pappso::PrecisionFactory::getPpmInstance(10)); qInfo() << "2 a1" << a1.get()->toString(); qInfo() << "2 a2" << a2.get()->toString(); ion_mobility_grid.storeObservedIdentityBetween( msrunid_a1, a1.get(), msrunid_a2, a2.get()); INFO("store observed pepa1e31234"); // pepa1e31234 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_1_A1_01_2767 // 245667 2454,61 781,849418967 SNMEAQHNDLEFK // pepa1e31234 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_2_A1_01_2768 // 243535 2460,95 781,849797967 SNMEAQHNDLEFK a1 = p_msreader.get()->newXicCoordSPtrFromSpectrumIndex( 245667, pappso::PrecisionFactory::getPpmInstance(10)); a2 = p_msreader_a2.get()->newXicCoordSPtrFromSpectrumIndex( 243535, pappso::PrecisionFactory::getPpmInstance(10)); qInfo() << "3 a1" << a1.get()->toString(); qInfo() << "3 a2" << a2.get()->toString(); ion_mobility_grid.storeObservedIdentityBetween( msrunid_a1, a1.get(), msrunid_a2, a2.get()); INFO("store observed pepb15b13"); // pepb15b13 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_1_A1_01_2767 // 249403 2486,14 699,856334967 DPEKPQLGMIDR pepb15b13 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_2_A1_01_2768 // 247155 2491,71 699,856816467 DPEKPQLGMIDR ion_mobility_grid.storeObservedIdentityBetween( msrunid_a1, p_msreader.get() ->newXicCoordSPtrFromSpectrumIndex( 249403, pappso::PrecisionFactory::getPpmInstance(10)) .get(), msrunid_a2, p_msreader_a2.get() ->newXicCoordSPtrFromSpectrumIndex( 247155, pappso::PrecisionFactory::getPpmInstance(10)) .get()); INFO("store observed pepb54b12"); // pepb54b12 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_1_A1_01_2767 // 79843 1106,79 832,442628967 EAGTEVVK // pepb54b12 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_2_A1_01_2768 // 79969 1104,68 832,440325967 EAGTEVVK ion_mobility_grid.storeObservedIdentityBetween( msrunid_a1, p_msreader.get() ->newXicCoordSPtrFromSpectrumIndex( 79843, pappso::PrecisionFactory::getPpmInstance(10)) .get(), msrunid_a2, p_msreader_a2.get() ->newXicCoordSPtrFromSpectrumIndex( 79969, pappso::PrecisionFactory::getPpmInstance(10)) .get()); INFO("store observed pepb83a6"); // pepb83a6 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_1_A1_01_2767 // 289387 2830,6 610,302429967 AAYFGIYDTAK pepb83a6 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_2_A1_01_2768 // 286699 2828,24 610,303296967 AAYFGIYDTAK ion_mobility_grid.storeObservedIdentityBetween( msrunid_a1, p_msreader.get() ->newXicCoordSPtrFromSpectrumIndex( 289387, pappso::PrecisionFactory::getPpmInstance(10)) .get(), msrunid_a2, p_msreader_a2.get() ->newXicCoordSPtrFromSpectrumIndex( 286699, pappso::PrecisionFactory::getPpmInstance(10)) .get()); auto map_diff = ion_mobility_grid.getMapDiferrencesStart(); for(auto itmap : map_diff) { qInfo() << (itmap.first); for(auto list_diff : itmap.second) { qInfo() << (list_diff); } } WARN("ion_mobility_grid.computeCorrections()"); ion_mobility_grid.computeCorrections(); auto map_delta = ion_mobility_grid.getMapCorrectionsStart(); REQUIRE(map_delta["a1a1-a2a1"] == -1); // pepa1e31244 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_1_A1_01_2767 // 452469 4297,94 718,417257967 SNPDQPAVILLLR // pepa1e31244 // 20180819_TIMS2_12-2_AnBr_SA_200ng_HeLa_50cm_120min_100ms_11CT_2_A1_01_2768 // 448731 4288,53 718,417001467 SNPDQPAVILLLR auto target = p_msreader_a2.get()->newXicCoordSPtrFromSpectrumIndex( 448731, pappso::PrecisionFactory::getPpmInstance(10)); auto source = p_msreader.get()->newXicCoordSPtrFromSpectrumIndex( 452469, pappso::PrecisionFactory::getPpmInstance(10)); WARN("source"); REQUIRE(source->toString().toStdString() == "mz=mz=718.417 delta=0.00718417 : 718.41 < 718.417 < 718.424 " "rt=4297.94 begin=532 end=557"); REQUIRE(source.get() ->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toInt() == 532); WARN("target"); REQUIRE(target->toString().toStdString() == "mz=mz=718.417 delta=0.00718417 : 718.41 < 718.417 < 718.424 " "rt=4288.53 begin=534 end=559"); auto result = ion_mobility_grid.translateXicCoordFromTo( *source.get(), msrunid_a1, msrunid_a2); REQUIRE(source.get() ->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toInt() == 532); REQUIRE(result.get() ->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toInt() == (source.get() ->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toInt() - 1)); WARN("result"); REQUIRE(result->toString().toStdString() == "mz=mz=718.417 delta=0.00718417 : 718.41 < 718.417 < 718.424 " "rt=4297.94 begin=531 end=556"); result = ion_mobility_grid.translateXicCoordFromTo( *target.get(), msrunid_a2, msrunid_a1); REQUIRE(target.get() ->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toInt() == 534); REQUIRE(result.get() ->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toInt() == (target.get() ->getParam(XicCoordParam::TimsTofIonMobilityScanNumberStart) .toInt() + 1)); WARN("result"); REQUIRE(result->toString().toStdString() == "mz=mz=718.417 delta=0.00718417 : 718.41 < 718.417 < 718.424 " "rt=4288.53 begin=535 end=560"); #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } libpappsomspp-0.9.20/tests/test_trace.cpp000644 001750 001750 00000057327 14526455546 021742 0ustar00rusconirusconi000000 000000 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include using namespace pappso; TEST_CASE("Constructing Trace objects.", "[Trace][constructors]") { // Construct two vectors of double values. std::vector x_vector{1234.56789, 1233.56789, 1232.56789}; std::vector y_vector{7876.54321, 8876.54321, 9876.54321}; // Construct a vector of pairs std::vector> pair_vector; // Create the points in decreasing mz value, on purpose. std::pair pair1(1234.56789, 7876.54321); pair_vector.push_back(pair1); std::pair pair2(1233.56789, 8876.54321); pair_vector.push_back(pair2); std::pair pair3(1232.56789, 9876.54321); pair_vector.push_back(pair3); // Construct a vector of DataPoint_s std::vector data_point_vector; DataPoint datapoint1(1234.56789, 7876.54321); data_point_vector.push_back(datapoint1); DataPoint datapoint2(1233.56789, 8876.54321); data_point_vector.push_back(datapoint2); DataPoint datapoint3(1232.56789, 9876.54321); data_point_vector.push_back(datapoint3); // Construct a MapTrace object MapTrace map_trace1(pair_vector); SECTION("Construct Trace from two vectors of double_s", "[Trace]") { Trace trace1(x_vector, y_vector); // Now check that all the pairs are in: REQUIRE(trace1.size() == 3); // Now check that the pairs have been sorted. REQUIRE(trace1.front().x == 1232.56789); REQUIRE(trace1[1].x == 1233.56789); REQUIRE(trace1.back().x == 1234.56789); } SECTION("Construct Trace from vector of double pairs", "[Trace]") { Trace trace1(pair_vector); // Now check that all the pairs are in: REQUIRE(trace1.size() == 3); // Now check that the pairs have been sorted. REQUIRE(trace1.front().x == 1232.56789); REQUIRE(trace1[1].x == 1233.56789); REQUIRE(trace1.back().x == 1234.56789); } SECTION("Construct Trace from vector of DataPoint_s", "[Trace]") { Trace trace2(data_point_vector); // Now check that all the pairs are in: REQUIRE(trace2.size() == 3); // Now check that the pairs have been sorted. REQUIRE(trace2.front().x == 1232.56789); REQUIRE(trace2[1].x == 1233.56789); REQUIRE(trace2.back().x == 1234.56789); } SECTION("Construct Trace from vector of a MapTrace", "[Trace]") { Trace trace3(map_trace1); // Now check that the pairs are sorted with no explicit sorting // as map traces are sorted automatically. REQUIRE(trace3.front().x == 1232.56789); REQUIRE(trace3[1].x == 1233.56789); REQUIRE(trace3.back().x == 1234.56789); } SECTION("Construct Trace from other Trace", "[Trace]") { Trace trace1(pair_vector); Trace trace2(trace1); REQUIRE(trace2.size() == 3); // Now check that the pairs have been sorted. REQUIRE(trace2.front().x == 1232.56789); REQUIRE(trace2[1].x == 1233.56789); REQUIRE(trace2.back().x == 1234.56789); } } TEST_CASE("Initializing Trace objects.", "[Trace][initializers]") { // Create a vector of doubles (x) std::vector x_vector{1234.56789, 1233.56789, 1232.56789}; // Create a vector of doubles (y) std::vector y_vector{7876.54321, 8876.54321, 9876.54321}; // Create a map std::map map_of_doubles{ {1234.56789, 7876.54321}, {1233.56789, 8876.54321}, {1232.56789, 9876.54321}}; SECTION("Initialize Trace with two vectors of double_s", "[Trace]") { Trace trace1; std::size_t trace_size = trace1.initialize(x_vector, y_vector); REQUIRE(trace_size == x_vector.size()); REQUIRE(trace1.size() == trace_size); // Now check that the pairs have been sorted. REQUIRE(trace1.front().x == 1232.56789); REQUIRE(trace1[1].x == 1233.56789); REQUIRE(trace1.back().x == 1234.56789); } SECTION("Initialize Trace with a map", "[Trace]") { Trace trace1; std::size_t trace_size = trace1.initialize(map_of_doubles); REQUIRE(trace_size == map_of_doubles.size()); REQUIRE(trace1.size() == trace_size); // Now check that the pairs have been sorted. REQUIRE(trace1.front().x == 1232.56789); REQUIRE(trace1[1].x == 1233.56789); REQUIRE(trace1.back().x == 1234.56789); } SECTION("Initialize Trace with another Trace", "[Trace]") { Trace trace1; trace1.initialize(map_of_doubles); Trace trace2; trace2.initialize(trace1); REQUIRE(trace1.size() == trace2.size()); REQUIRE(trace2.front().x == 1232.56789); REQUIRE(trace2[1].x == 1233.56789); REQUIRE(trace2.back().x == 1234.56789); } SECTION("Initialize Trace with operator =", "[Trace]") { Trace trace1; trace1.initialize(map_of_doubles); Trace trace2 = trace1; REQUIRE(trace1.size() == trace2.size()); REQUIRE(trace2.front().x == 1232.56789); REQUIRE(trace2[1].x == 1233.56789); REQUIRE(trace2.back().x == 1234.56789); } } TEST_CASE("Basic functionality of Trace", "[Trace]") { // Create a vector of doubles (x) std::vector x_vector{1234.56789, 1233.56789, 1232.56789}; // Create a vector of doubles (y) std::vector y_vector{7876.54321, 8876.54321, 9876.54321}; Trace trace(x_vector, y_vector); SECTION("Get the x values as a vector of double_s", "[Trace]") { std::vector vector_of_doubles = trace.xValues(); REQUIRE(vector_of_doubles.size() == trace.size()); REQUIRE(vector_of_doubles[0] == 1232.56789); REQUIRE(vector_of_doubles[1] == 1233.56789); REQUIRE(vector_of_doubles[2] == 1234.56789); } SECTION("Get the y values as a vector of double_s", "[Trace]") { std::vector vector_of_doubles = trace.yValues(); REQUIRE(vector_of_doubles.size() == trace.size()); REQUIRE(vector_of_doubles[0] == 9876.54321); REQUIRE(vector_of_doubles[1] == 8876.54321); REQUIRE(vector_of_doubles[2] == 7876.54321); } SECTION("Get the Trace as a map of doubles.", "[Trace]") { std::map map = trace.toMap(); REQUIRE(map.size() == trace.size()); REQUIRE(map[1232.56789] == 9876.54321); REQUIRE(map[1233.56789] == 8876.54321); REQUIRE(map[1234.56789] == 7876.54321); } SECTION("Check if contains x value using a tolerance.", "[Trace]") { PrecisionPtr precision_p = pappso::PrecisionFactory::getDaltonInstance(0.0000005); DataPoint datapoint = trace.containsX(1233.5678, precision_p); REQUIRE(datapoint.isValid() == false); // The returned data point is not valid, then x=-1. REQUIRE(datapoint.x == -1); precision_p = pappso::PrecisionFactory::getDaltonInstance(0.000085); datapoint = trace.containsX(1233.5678, precision_p); REQUIRE(datapoint.isValid() == false); // The returned data point is not valid, then x=-1. REQUIRE(datapoint.x == -1); #if !defined(__i386__) // This test unbelievable does not pass on i386... precision_p = pappso::PrecisionFactory::getDaltonInstance(0.00009); datapoint = trace.containsX(1233.5678, precision_p); REQUIRE(datapoint.isValid() == true); REQUIRE(datapoint.x == 1233.56789); #endif } SECTION("Get DataPoint having min y value of all.", "[Trace]") { DataPoint datapoint = trace.Trace::minYDataPoint(); REQUIRE(datapoint.isValid() == true); REQUIRE(datapoint.y == 7876.54321); REQUIRE(datapoint.x == 1234.56789); } SECTION("Get DataPoint having max y value of all.", "[Trace]") { DataPoint datapoint = trace.Trace::maxYDataPoint(); REQUIRE(datapoint.isValid() == true); REQUIRE(datapoint.y == 9876.54321); REQUIRE(datapoint.x == 1232.56789); } SECTION("Get the min y value of all.", "[Trace]") { double y = trace.minY(); REQUIRE(y == 7876.54321); } SECTION("Get the max y value of all.", "[Trace]") { double y = trace.maxY(); REQUIRE(y == 9876.54321); } SECTION("Get the sum of all the y values.", "[Trace]") { double tic = trace.sumY(); REQUIRE(tic == (7876.54321 + 8876.54321 + 9876.54321)); } SECTION("Get the sum of all the y values in a given x range.", "[Trace]") { double tic = trace.sumY(1232, 1234); REQUIRE(tic == (9876.54321 + 8876.54321)); } SECTION("Craft a string representation of the Trace.", "[Trace]") { QString result_string = trace.toString(); QString test_string; test_string += QString("%1 %2\n") .arg(trace[0].x, 0, 'f', 15) .arg(trace[0].y, 0, 'f', 15); test_string += QString("%1 %2\n") .arg(trace[1].x, 0, 'f', 15) .arg(trace[1].y, 0, 'f', 15); test_string += QString("%1 %2\n") .arg(trace[2].x, 0, 'f', 15) .arg(trace[2].y, 0, 'f', 15); REQUIRE(result_string.toStdString() == test_string.toStdString()); } } TEST_CASE("Filters and extractors for Trace", "[Trace]") { // Create a Trace that looks like something real. std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 12963.5715942383")); data_point_vector.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("610.12000 55999.7628784180")); data_point_vector.push_back(DataPoint("610.17000 9335990.3578681946")); data_point_vector.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("610.27000 54459.4762458801")); data_point_vector.push_back(DataPoint("610.32000 205580.6580276489")); data_point_vector.push_back(DataPoint("610.37000 84627.3196716309")); data_point_vector.push_back(DataPoint("610.42000 51061.7636718750")); data_point_vector.push_back(DataPoint("610.47000 20260.0218505859")); data_point_vector.push_back(DataPoint("610.52000 29848.3424072266")); data_point_vector.push_back(DataPoint("610.57000 27266.8031616211")); data_point_vector.push_back(DataPoint("610.62000 36922.3937377930")); data_point_vector.push_back(DataPoint("610.67000 44082.4265441895")); data_point_vector.push_back(DataPoint("610.72000 32580.1677703857")); data_point_vector.push_back(DataPoint("610.77000 39453.8380126953")); data_point_vector.push_back(DataPoint("610.82000 63698.7124328613")); data_point_vector.push_back(DataPoint("610.87000 34406.7755126953")); data_point_vector.push_back(DataPoint("610.92000 33385.7486267090")); data_point_vector.push_back(DataPoint("610.97000 22105.9357604980")); data_point_vector.push_back(DataPoint("611.02000 34175.9539184570")); data_point_vector.push_back(DataPoint("611.07000 18893.1743774414")); data_point_vector.push_back(DataPoint("611.12000 33655.8040771484")); data_point_vector.push_back(DataPoint("611.17000 1985432.9582707286")); data_point_vector.push_back(DataPoint("611.220000 350845489.9638078809")); data_point_vector.push_back(DataPoint("611.27000 201093.0304565430")); data_point_vector.push_back(DataPoint("611.32000 130582.0210266113")); data_point_vector.push_back(DataPoint("611.37000 191842.3922958374")); data_point_vector.push_back(DataPoint("611.42000 154248.7982788086")); data_point_vector.push_back(DataPoint("611.47000 31618.7268676758")); data_point_vector.push_back(DataPoint("611.52000 31222.7547607422")); data_point_vector.push_back(DataPoint("611.57000 44491.2401733398")); data_point_vector.push_back(DataPoint("611.62000 17576.1995697021")); data_point_vector.push_back(DataPoint("611.67000 29514.0727844238")); data_point_vector.push_back(DataPoint("611.72000 60104.3011474609")); data_point_vector.push_back(DataPoint("611.77000 54284.4918212891")); data_point_vector.push_back(DataPoint("611.82000 73222.5983886719")); data_point_vector.push_back(DataPoint("611.87000 34145.2793884277")); data_point_vector.push_back(DataPoint("611.92000 43328.2853698730")); data_point_vector.push_back(DataPoint("611.97000 34486.0655212402")); data_point_vector.push_back(DataPoint("612.02000 33462.5801696777")); data_point_vector.push_back(DataPoint("612.07000 45740.2189331055")); data_point_vector.push_back(DataPoint("612.12000 16315.6034545898")); data_point_vector.push_back(DataPoint("612.17000 3137434.1922011375")); data_point_vector.push_back(DataPoint("612.220000 244825577.0747365952")); data_point_vector.push_back(DataPoint("612.27000 107560.2426452637")); data_point_vector.push_back(DataPoint("612.32000 114637.8828430176")); data_point_vector.push_back(DataPoint("612.37000 87648.2245483398")); data_point_vector.push_back(DataPoint("612.42000 75788.5508422852")); data_point_vector.push_back(DataPoint("612.47000 33858.1067199707")); data_point_vector.push_back(DataPoint("612.52000 26404.7212524414")); data_point_vector.push_back(DataPoint("612.57000 45710.7806396484")); data_point_vector.push_back(DataPoint("612.62000 31294.2814941406")); data_point_vector.push_back(DataPoint("612.67000 29457.2803955078")); data_point_vector.push_back(DataPoint("612.72000 23048.1495971680")); data_point_vector.push_back(DataPoint("612.77000 15255.7875061035")); data_point_vector.push_back(DataPoint("612.82000 48801.3896789551")); data_point_vector.push_back(DataPoint("612.87000 36464.7495727539")); data_point_vector.push_back(DataPoint("612.92000 51507.2986145020")); data_point_vector.push_back(DataPoint("612.97000 45925.2813415527")); data_point_vector.push_back(DataPoint("613.02000 40396.0013732910")); data_point_vector.push_back(DataPoint("613.07000 40331.5417785645")); data_point_vector.push_back(DataPoint("613.12000 47593.1001892090")); data_point_vector.push_back(DataPoint("613.17000 1537602.4452308416")); data_point_vector.push_back(DataPoint("613.22000 95458729.2017828822")); data_point_vector.push_back(DataPoint("613.27000 117836.8993530273")); data_point_vector.push_back(DataPoint("613.32000 172388.2191467285")); data_point_vector.push_back(DataPoint("613.37000 117651.7643432617")); data_point_vector.push_back(DataPoint("613.42000 134527.9219970703")); data_point_vector.push_back(DataPoint("613.47000 21348.3722229004")); data_point_vector.push_back(DataPoint("613.52000 480.5255737305")); data_point_vector.push_back(DataPoint("613.57000 71578.8419189453")); data_point_vector.push_back(DataPoint("613.62000 47088.4295806885")); data_point_vector.push_back(DataPoint("613.67000 11516.1672668457")); data_point_vector.push_back(DataPoint("613.72000 42134.2611389160")); data_point_vector.push_back(DataPoint("613.77000 43366.3011627197")); data_point_vector.push_back(DataPoint("613.82000 76272.4001235962")); data_point_vector.push_back(DataPoint("613.87000 98113.1940002441")); data_point_vector.push_back(DataPoint("613.92000 29165.7173461914")); data_point_vector.push_back(DataPoint("613.97000 55852.7840881348")); data_point_vector.push_back(DataPoint("614.02000 29957.4020996094")); data_point_vector.push_back(DataPoint("614.07000 46380.1217651367")); data_point_vector.push_back(DataPoint("614.12000 22395.2603759766")); data_point_vector.push_back(DataPoint("614.17000 1585080.8988181949")); data_point_vector.push_back(DataPoint("614.22000 35239172.4581222534")); data_point_vector.push_back(DataPoint("614.27000 185695.5917358398")); data_point_vector.push_back(DataPoint("614.32000 231630.3202667236")); data_point_vector.push_back(DataPoint("614.37000 165712.7152709961")); data_point_vector.push_back(DataPoint("614.42000 115771.4071350098")); data_point_vector.push_back(DataPoint("614.47000 58982.7239074707")); data_point_vector.push_back(DataPoint("614.52000 2547873.7498645782")); data_point_vector.push_back(DataPoint("614.57000 18437.3129577637")); data_point_vector.push_back(DataPoint("614.62000 22860.9023132324")); data_point_vector.push_back(DataPoint("614.67000 21072.2604064941")); data_point_vector.push_back(DataPoint("614.72000 35379.6509933472")); data_point_vector.push_back(DataPoint("614.77000 59054.2345886230")); data_point_vector.push_back(DataPoint("614.82000 75995.3719787598")); data_point_vector.push_back(DataPoint("614.87000 106325.3341369629")); data_point_vector.push_back(DataPoint("614.92000 43670.2942276001")); data_point_vector.push_back(DataPoint("614.97000 39008.6439514160")); // clang-format on Trace trace(data_point_vector); REQUIRE(100 == trace.size()); SECTION("Test findFirstEqualOrGreaterX", "[Trace][filters]") { // First the non const version of the iterator std::vector::iterator iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 614.47000); REQUIRE((*iterator).y == 58982.7239074707); iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 613.025); REQUIRE((*iterator).y == 40331.5417785645); iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 614.97); REQUIRE((*iterator).y == 39008.6439514160); iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 614.977); REQUIRE(iterator == trace.end()); iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 610.02000); REQUIRE((*iterator).y == 12963.5715942383); iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 610.019900); REQUIRE((*iterator).y == 12963.5715942383); // Now the const version of the iterator std::vector::const_iterator const_iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 614.47000); REQUIRE((*const_iterator).y == 58982.7239074707); const_iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 613.025); REQUIRE((*const_iterator).y == 40331.5417785645); const_iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 614.97); REQUIRE((*const_iterator).y == 39008.6439514160); const_iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 614.977); REQUIRE(const_iterator == trace.end()); const_iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 610.02000); REQUIRE((*const_iterator).y == 12963.5715942383); const_iterator = findFirstEqualOrGreaterX(trace.begin(), trace.end(), 610.019900); REQUIRE((*const_iterator).y == 12963.5715942383); } SECTION("Test findFirstGreaterX", "[Trace][filters]") { // First the non const version of the iterator std::vector::iterator iterator = findFirstGreaterX(trace.begin(), trace.end(), 614.47000); REQUIRE((*iterator).y == 2547873.7498645782); iterator = findFirstGreaterX(trace.begin(), trace.end(), 614.92); REQUIRE((*iterator).y == 39008.6439514160); iterator = findFirstGreaterX(trace.begin(), trace.end(), 614.97); REQUIRE(iterator == trace.end()); // Now the const version of the iterator std::vector::const_iterator const_iterator = findFirstGreaterX(trace.begin(), trace.end(), 614.47000); REQUIRE((*const_iterator).y == 2547873.7498645782); const_iterator = findFirstGreaterX(trace.begin(), trace.end(), 614.92); REQUIRE((*const_iterator).y == 39008.6439514160); const_iterator = findFirstGreaterX(trace.begin(), trace.end(), 614.97); REQUIRE(const_iterator == trace.end()); } SECTION("Test findDifferentYvalue", "[Trace][filters]") { // Create a Trace that looks like something real with specific y values. std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 55999.00000")); data_point_vector.push_back(DataPoint("610.07000 55999.00000")); data_point_vector.push_back(DataPoint("610.12000 55999.00000")); data_point_vector.push_back(DataPoint("610.17000 55999.00000")); data_point_vector.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector.push_back(DataPoint("610.27000 54459.4762458801")); data_point_vector.push_back(DataPoint("610.32000 205580.6580276489")); data_point_vector.push_back(DataPoint("610.37000 84627.3196716309")); data_point_vector.push_back(DataPoint("610.42000 51061.7636718750")); data_point_vector.push_back(DataPoint("610.47000 20260.0218505859")); data_point_vector.push_back(DataPoint("610.52000 29848.3424072266")); data_point_vector.push_back(DataPoint("610.57000 27266.8031616211")); // clang-format on Trace trace(data_point_vector); std::vector::iterator iterator = findDifferentYvalue(trace.begin(), trace.end(), 55999.00000); REQUIRE((*iterator).y == 635674266.1611375809); } SECTION("Test minYDataPoint", "[Trace][filters]") { std::vector::iterator iterator = minYDataPoint(trace.begin(), trace.end()); REQUIRE((*iterator).x == 613.52000); REQUIRE((*iterator).y == 480.5255737305); std::vector::const_iterator const_iterator = minYDataPoint(trace.begin(), trace.end()); REQUIRE((*const_iterator).x == 613.52000); REQUIRE((*const_iterator).y == 480.5255737305); } SECTION("Test maxYDataPoint", "[Trace][filters]") { std::vector::iterator iterator = maxYDataPoint(trace.begin(), trace.end()); REQUIRE((*iterator).x == 610.2200000); REQUIRE((*iterator).y == 635674266.1611375809); std::vector::const_iterator const_iterator = maxYDataPoint(trace.begin(), trace.end()); REQUIRE((*const_iterator).x == 610.2200000); REQUIRE((*const_iterator).y == 635674266.1611375809); } SECTION("Test moveLowerYRigthDataPoint", "[Trace][filters]") { // As long as next datapoint has y value less or equal to prev, // move along down the container. That is, continue moving if // direction is downhill to the end of the container (its back). std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 12963.5715942383")); data_point_vector.push_back(DataPoint("610.02000 12962.5715942383")); data_point_vector.push_back(DataPoint("610.02000 12961.5715942383")); data_point_vector.push_back(DataPoint("610.02000 12961.5715942383")); data_point_vector.push_back(DataPoint("610.02000 12960.5715942383")); data_point_vector.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("610.12000 55999.7628784180")); data_point_vector.push_back(DataPoint("610.17000 9335990.3578681946")); // clang-format on Trace trace(data_point_vector); std::vector::const_iterator const_iterator = moveLowerYRigthDataPoint(trace, trace.begin()); REQUIRE((*const_iterator).y == 12960.5715942383); } SECTION("Test moveLowerYLeftDataPoint", "[Trace][filters]") { // As long as prev datapoint has y value less or equal to next, // move along up the container. That is, continue moving if // direction is downhill to the beginning of the container (its front). std::vector data_point_vector; // clang-format off data_point_vector.push_back(DataPoint("610.02000 12960.5715942383")); data_point_vector.push_back(DataPoint("610.02000 12961.5715942383")); data_point_vector.push_back(DataPoint("610.07000 17000.6568298340")); data_point_vector.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector.push_back(DataPoint("610.11000 15640.6568298340")); data_point_vector.push_back(DataPoint("610.12000 15641.6568298340")); data_point_vector.push_back(DataPoint("610.09000 15642.7000000000")); // clang-format on Trace trace(data_point_vector); std::vector::const_iterator const_iterator = // I (FR) find the test ill-conceived because if the user passes // trace.end() as the start iterator, then it does not work. moveLowerYLeftDataPoint(trace, std::prev(trace.end())); REQUIRE(const_iterator->x == 610.11000); REQUIRE(const_iterator->y == 15640.6568298340); } } libpappsomspp-0.9.20/tests/test_trace_filters.cpp000644 001750 001750 00000104761 14526455546 023465 0ustar00rusconirusconi000000 000000 // // File: test_trace_filters.cpp // Created by: Olivier Langella // Created on: 28/04/2019 // /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [filters] -s // ./tests/catch2-only-tests [filterpeakdelta] -s // #define CATCH_CONFIG_MAIN #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "common.h" #include "config.h" using namespace pappso; using namespace std; TEST_CASE("test cosine similarity.", "[cosinesim]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); // QCoreApplication a(argc, argv); SECTION("..:: test trace filters ::..", "[cosinesim]") { // OboPsiMod test; MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR) .append("/tests/data/peaklist_15046_simple_xt.mgf")); CosineSimilarity cosine(pappso::PrecisionFactory::getDaltonInstance(0.02)); REQUIRE(cosine.similarity(spectrum_simple, spectrum_simple) == Approx(1.0).epsilon(0.004)); MassSpectrum orig = spectrum_simple; pappso::FilterGreatestY(10).filter(spectrum_simple); REQUIRE(cosine.similarity(orig, spectrum_simple) == Approx(0.963327).epsilon(0.004)); // AIADGSLLDLLR } } TEST_CASE("trace filter peak delta.", "[filterpeakdelta]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); // QCoreApplication a(argc, argv); SECTION("..:: test trace filters ::..", "[filterpeakdelta]") { // OboPsiMod test; Trace result; // 185.127999999999986 42.000000000000000 // 186.122999999999990 18.000000000000000 result.push_back({186.12299999 - 185.1279999, 42 + 18 - (42 - 18)}); MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR) .append("/tests/data/peaklist_15046_simple_xt.mgf")); //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); pappso::FilterGreatestY(10).filter(spectrum_simple); WARN(spectrum_simple.toString().toStdString()); pappso::FilterPeakDelta filter_peak_delta; filter_peak_delta.filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 45); REQUIRE(spectrum_simple.at(0).x == Approx(result.at(0).x).epsilon(0.001)); REQUIRE(spectrum_simple.at(0).y == result.at(0).y); // AIADGSLLDLLR } // QCoreApplication a(argc, argv); SECTION("..:: test trace filters ::..", "[filterpeakdelta15046]") { MassSpectrum spectrum_simple = readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")); pappso::FilterResampleKeepGreater(160).filter(spectrum_simple); pappso::FilterChargeDeconvolution( pappso::PrecisionFactory::getDaltonInstance(0.02)) .filter(spectrum_simple); //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); pappso::FilterGreatestY(100).filter(spectrum_simple); WARN(spectrum_simple.toString().toStdString()); pappso::FilterPeakDelta filter_peak_delta; filter_peak_delta.filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 4950); pappso::FilterGreatestY(60).filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 60); AaCode aa_code; aa_code.addAaModification('C', AaModification::getInstance("MOD:00397")); pappso::AaStringCodeMassMatching aaMatching( aa_code, 4, pappso::PrecisionFactory::getDaltonInstance(0.03)); std::vector mass_list = spectrum_simple.xValues(); std::vector code_list = aaMatching.getAaCodeFromMassList(mass_list); REQUIRE(code_list.size() == 334); code_list = aaMatching.filterCodeList(code_list); REQUIRE(code_list.size() == 51); // AIADGSLLDLLR AaStringCodec aa_codec(aa_code); REQUIRE(aa_codec.decode(code_list[0]).toStdString() == "G"); REQUIRE(aa_codec.decode(code_list[1]).toStdString() == "A"); REQUIRE(aa_codec.decode(code_list[2]).toStdString() == "S"); REQUIRE(aa_codec.decode(code_list[3]).toStdString() == "V"); // false REQUIRE(aa_codec.decode(code_list[4]).toStdString() == "I"); REQUIRE(aa_codec.decode(code_list[5]).toStdString() == "D"); REQUIRE(aa_codec.decode(code_list[6]).toStdString() == "W"); // false REQUIRE(aa_codec.decode(code_list[7]).toStdString() == "SG"); REQUIRE(aa_codec.decode(code_list[8]).toStdString() == "DG"); REQUIRE(aa_codec.decode(code_list[9]).toStdString() == "WG"); // false REQUIRE(aa_codec.decode(code_list[10]).toStdString() == "DA"); REQUIRE(aa_codec.decode(code_list[11]).toStdString() == "WA"); // false REQUIRE(aa_codec.decode(code_list[12]).toStdString() == "IS"); REQUIRE(aa_codec.decode(code_list[13]).toStdString() == "DV"); REQUIRE(aa_codec.decode(code_list[14]).toStdString() == "II"); REQUIRE(aa_codec.decode(code_list[15]).toStdString() == "DI"); REQUIRE(aa_codec.decode(code_list[16]).toStdString() == "WW"); REQUIRE(aa_codec.decode(code_list[17]).toStdString() == "DAG"); REQUIRE(aa_codec.decode(code_list[18]).toStdString() == "ISG"); REQUIRE(aa_codec.decode(code_list[19]).toStdString() == "DSG"); REQUIRE(aa_codec.decode(code_list[20]).toStdString() == "WSG"); // false REQUIRE(aa_codec.decode(code_list[21]).toStdString() == "VSA"); // false REQUIRE(aa_codec.decode(code_list[22]).toStdString() == "ISA"); // false REQUIRE(aa_codec.decode(code_list[23]).toStdString() == "WIA"); // false REQUIRE(aa_codec.decode(code_list[24]).toStdString() == "WDA"); // false REQUIRE(aa_codec.decode(code_list[25]).toStdString() == "WWA"); // false REQUIRE(aa_codec.decode(code_list[26]).toStdString() == "WVS"); // false REQUIRE(aa_codec.decode(code_list[27]).toStdString() == "IIS"); REQUIRE(aa_codec.decode(code_list[28]).toStdString() == "WIS"); // false REQUIRE(aa_codec.decode(code_list[29]).toStdString() == "DII"); REQUIRE(aa_codec.decode(code_list[30]).toStdString() == "WWI"); // false REQUIRE(aa_codec.decode(code_list[31]).toStdString() == "GGGG"); // false REQUIRE(aa_codec.decode(code_list[32]).toStdString() == "DSAG"); REQUIRE(aa_codec.decode(code_list[33]).toStdString() == "IISG"); REQUIRE(aa_codec.decode(code_list[34]).toStdString() == "DISG"); REQUIRE(aa_codec.decode(code_list[35]).toStdString() == "WISG"); // false REQUIRE(aa_codec.decode(code_list[36]).toStdString() == "WDAA"); // false pappso::FilterGreatestY(50).filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 50); WARN(spectrum_simple.toString().toStdString()); mass_list = spectrum_simple.xValues(); code_list = aaMatching.getAaCodeFromMassList(mass_list); code_list = aaMatching.filterCodeList(code_list); REQUIRE(code_list.size() == 46); // AIADGSLLDLLR REQUIRE(aa_codec.decode(code_list[0]).toStdString() == "G"); REQUIRE(aa_codec.decode(code_list[1]).toStdString() == "A"); REQUIRE(aa_codec.decode(code_list[2]).toStdString() == "S"); REQUIRE(aa_codec.decode(code_list[3]).toStdString() == "V"); // false REQUIRE(aa_codec.decode(code_list[4]).toStdString() == "I"); REQUIRE(aa_codec.decode(code_list[5]).toStdString() == "D"); REQUIRE(aa_codec.decode(code_list[6]).toStdString() == "W"); REQUIRE(aa_codec.decode(code_list[7]).toStdString() == "SG"); REQUIRE(aa_codec.decode(code_list[8]).toStdString() == "DA"); REQUIRE(aa_codec.decode(code_list[9]).toStdString() == "WA"); // false REQUIRE(aa_codec.decode(code_list[10]).toStdString() == "DV"); // false REQUIRE(aa_codec.decode(code_list[11]).toStdString() == "II"); REQUIRE(aa_codec.decode(code_list[12]).toStdString() == "DI"); REQUIRE(aa_codec.decode(code_list[13]).toStdString() == "WW"); // false REQUIRE(aa_codec.decode(code_list[14]).toStdString() == "ISG"); REQUIRE(aa_codec.decode(code_list[15]).toStdString() == "DSG"); REQUIRE(aa_codec.decode(code_list[16]).toStdString() == "WSG"); // false REQUIRE(aa_codec.decode(code_list[17]).toStdString() == "VSA"); // false REQUIRE(aa_codec.decode(code_list[18]).toStdString() == "ISA"); // false REQUIRE(aa_codec.decode(code_list[19]).toStdString() == "WIA"); // false REQUIRE(aa_codec.decode(code_list[20]).toStdString() == "WDA"); // false REQUIRE(aa_codec.decode(code_list[21]).toStdString() == "WWA"); // false REQUIRE(aa_codec.decode(code_list[22]).toStdString() == "WVS"); // false REQUIRE(aa_codec.decode(code_list[23]).toStdString() == "WIS"); // false REQUIRE(aa_codec.decode(code_list[24]).toStdString() == "DII"); REQUIRE(aa_codec.decode(code_list[25]).toStdString() == "WWI"); // false REQUIRE(aa_codec.decode(code_list[26]).toStdString() == "GGGG"); // false REQUIRE(aa_codec.decode(code_list[27]).toStdString() == "DSAG"); REQUIRE(aa_codec.decode(code_list[28]).toStdString() == "IISG"); REQUIRE(aa_codec.decode(code_list[29]).toStdString() == "DISG"); pappso::FilterGreatestY(30).filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 30); mass_list = spectrum_simple.xValues(); code_list = aaMatching.getAaCodeFromMassList(mass_list); code_list = aaMatching.filterCodeList(code_list); // AIADGSLLDLLR REQUIRE(code_list.size() == 17); REQUIRE(aa_codec.decode(code_list[0]).toStdString() == "A"); REQUIRE(aa_codec.decode(code_list[1]).toStdString() == "I"); REQUIRE(aa_codec.decode(code_list[2]).toStdString() == "D"); REQUIRE(aa_codec.decode(code_list[3]).toStdString() == "W"); // false REQUIRE(aa_codec.decode(code_list[4]).toStdString() == "DA"); REQUIRE(aa_codec.decode(code_list[5]).toStdString() == "WA"); // false REQUIRE(aa_codec.decode(code_list[6]).toStdString() == "II"); REQUIRE(aa_codec.decode(code_list[7]).toStdString() == "DI"); REQUIRE(aa_codec.decode(code_list[8]).toStdString() == "WW"); // false REQUIRE(aa_codec.decode(code_list[9]).toStdString() == "WDA"); // false // REQUIRE(aa_codec.decode(code_list[10]).toStdString() == "DIII"); } // QCoreApplication a(argc, argv); SECTION("..:: test trace filters ::..", "[filterpeakdelta15046a]") { MassSpectrum spectrum_simple = readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")); pappso::FilterResampleKeepGreater(160).filter(spectrum_simple); pappso::FilterChargeDeconvolution( pappso::PrecisionFactory::getDaltonInstance(0.02)) .filter(spectrum_simple); //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); pappso::FilterGreatestY(100).filter(spectrum_simple); WARN(spectrum_simple.toString().toStdString()); pappso::FilterPeakDelta filter_peak_delta; filter_peak_delta.filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 4950); pappso::FilterGreatestY(60).filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 60); AaCode aa_code; aa_code.addAaModification('C', AaModification::getInstance("MOD:00397")); pappso::AaStringCodeMassMatching aaMatching( aa_code, 5, pappso::PrecisionFactory::getDaltonInstance(0.01)); std::vector mass_list = spectrum_simple.xValues(); std::vector code_list = aaMatching.getAaCodeFromMassList(mass_list); code_list = aaMatching.filterCodeList(code_list); REQUIRE(code_list.size() == 24); // AIADGSLLDLLR AaStringCodec aa_codec(aa_code); REQUIRE(aa_codec.decode(code_list[0]).toStdString() == "G"); REQUIRE(aa_codec.decode(code_list[1]).toStdString() == "A"); REQUIRE(aa_codec.decode(code_list[2]).toStdString() == "S"); REQUIRE(aa_codec.decode(code_list[3]).toStdString() == "I"); REQUIRE(aa_codec.decode(code_list[4]).toStdString() == "D"); REQUIRE_FALSE(aa_codec.decode(code_list[5]).toStdString() == "W"); // false REQUIRE(aa_codec.decode(code_list[5]).toStdString() == "SG"); REQUIRE(aa_codec.decode(code_list[6]).toStdString() == "DG"); REQUIRE(aa_codec.decode(code_list[15]).toStdString() == "DII"); REQUIRE(aa_codec.decode(code_list[16]).toStdString() == "DSAG"); REQUIRE(aa_codec.decode(code_list[17]).toStdString() == "IISG"); REQUIRE(aa_codec.decode(code_list[18]).toStdString() == "DISG"); REQUIRE(aa_codec.decode(code_list[19]).toStdString() == "DIIS"); REQUIRE(aa_codec.decode(code_list[20]).toStdString() == "DIII"); REQUIRE(aa_codec.decode(code_list[21]).toStdString() == "DISAG"); REQUIRE(aa_codec.decode(code_list[22]).toStdString() == "DIISG"); REQUIRE(aa_codec.decode(code_list[23]).toStdString() == "DIIII"); // ProteinSp protsp = Protein( "GRMZM2G083841_P01", "MASTKAPGPGEKHHSIDAQLRQLVPGKVSEDDKLIEYDALLVDRFLNILQDLHGPSLREFVQECYEVSAD" "YEGKGDTTKLGELGAKLTGLAPADAILVASSILHMLNLANLAEEVQIAHRRRNSKLKKGGFADEGSATTE" "SDIEETLKRLVSEVGKSPEEVFEALKNQTVDLVFTAHPTQSARRSLLQKNARIRNCLTQLNAKDITDDDK" "QELDEALQREIQAAFRTDEIRRAQPTPQDEMRYGMSYIHETVWKGVPKFLRRVDTALKNIGINERLPYNV" "SLIRFSSWMGGDRDGNPRVTPEVTRDVCLLARMMAANLYIDQIEELMFELSMWRCNDELRVRAEELHSSS" "GSKVTKYYIEFWKQIPPNEPYRVILGHVRDKLYNTRERARHLLASGVSEISAESSFTSIEEFLEPLELCY" "KSLCDCGDKAIADGSLLDLLRQVFTFGLSLVKLDIRQESERHTDVIDAITTHLGIGSYREWPEDKRQEWL" "LSELRGKRPLLPPDLPQTDEIADVIGAFHVLAELPPDSFGPYIISMATAPSDVLAVELLQRECGVRQPLP" "VVPLFERLADLQSAPASVERLFSVDWYMDRIKGKQQVMVGYSDSGKDAGRLSAAWQLYRAQEEMAQVAKR" "YGVKLTLFHGRGGTVGRGGGPTHLAILSQPPDTINGSIRVTVQGEVIEFCFGEEHLCFQTLQRFTAATLE" "HGMHPPVSPKPEWRKLMDEMAVVATEEYRSVVVKEARFVEYFRSATPETEYGRMNIGSRPAKRRPGGGIT" "TLRAIPWIFSWTQTRFHLPVWLGVGAAFKFAIDKDVRNFQVLKEMYNEWPFFRVTLDLLEMVFAKGDPGI" "AGLYDELLVAEELKPFGKQLRDKYVETQQLLLQIAGHKDILEGDPFLKQGLVLRNPYITTLNVFQAYTLK" "RIRDPNFKVTPQPPLSKEFADENKPAGLVKLNPASEYPPGLEDTLILTMKGIAAGMQNTG") .makeProteinSp(); AaStringCodec codec(aa_code); ProteinIntegerCode protein_code(protsp, codec, 5); auto match = protein_code.match(code_list); for(auto pairi : match) { qDebug() << "pos=" << pairi.first << " size=" << pairi.second; } } // QCoreApplication a(argc, argv); SECTION("..:: test trace filters ::..", "[filterpeakdelta15968]") { // EITLGFVDLLR MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_15968.mgf")); pappso::FilterResampleKeepGreater(160).filter(spectrum_simple); pappso::FilterChargeDeconvolution( pappso::PrecisionFactory::getDaltonInstance(0.02)) .filter(spectrum_simple); //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); pappso::FilterGreatestY(100).filter(spectrum_simple); WARN(spectrum_simple.toString().toStdString()); pappso::FilterPeakDelta filter_peak_delta; filter_peak_delta.filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 4950); pappso::FilterGreatestY(80).filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 80); AaCode aa_code; aa_code.addAaModification('C', AaModification::getInstance("MOD:00397")); pappso::AaStringCodeMassMatching aaMatching( aa_code, 4, pappso::PrecisionFactory::getDaltonInstance(0.03)); std::vector mass_list = spectrum_simple.xValues(); std::vector code_list = aaMatching.getAaCodeFromMassList(mass_list); REQUIRE(code_list.size() == 128); code_list = aaMatching.filterCodeList(code_list); REQUIRE(code_list.size() == 1); // EITLGFVDLLR AaStringCodec aa_codec(aa_code); REQUIRE(aa_codec.decode(code_list[0]).toStdString() == "H"); pappso::FilterGreatestY(50).filter(spectrum_simple); REQUIRE(spectrum_simple.size() == 50); mass_list = spectrum_simple.xValues(); code_list = aaMatching.getAaCodeFromMassList(mass_list); code_list = aaMatching.filterCodeList(code_list); REQUIRE(code_list.size() == 1); // EITLGFVDLLR REQUIRE(aa_codec.decode(code_list[0]).toStdString() == "H"); } } TEST_CASE("trace filters test suite.", "[filters]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); // QCoreApplication a(argc, argv); SECTION("..:: test trace filters ::..", "[filters]") { // OboPsiMod test; MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR) .append("/tests/data/peaklist_15046_simple_xt.mgf")); //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); std::cout << std::endl << "..:: FilterGreatestY ::.." << std::endl; qDebug(); MassSpectrum most_intense(spectrum_simple); most_intense.filter(FilterGreatestY(10)); REQUIRE(most_intense.size() == 10); qDebug(); most_intense = spectrum_simple; most_intense.massSpectrumFilter( pappso::MassSpectrumFilterGreatestItensities(10)); REQUIRE(most_intense.size() == 10); qDebug(); most_intense = MassSpectrum(spectrum_simple) .massSpectrumFilter(pappso::MassSpectrumFilterGreatestItensities(1000)); REQUIRE(most_intense.size() == 100); qDebug(); most_intense = MassSpectrum(spectrum_simple).filter(FilterGreatestY(100)); REQUIRE(most_intense.size() == 100); qDebug(); // 3.018830 std::cout << std::endl << "..:: resample filters ::.." << std::endl; Trace deca_suite({DataPoint(0, 1), DataPoint(1, 2), DataPoint(2, 3), DataPoint(3, 4), DataPoint(4, 3), DataPoint(5, 2), DataPoint(6, 1), DataPoint(7, 1), DataPoint(8, 2), DataPoint(9, 3), DataPoint(10, 4), DataPoint(11, 5), DataPoint(12, 6)}); Trace deca_keep({DataPoint(9, 3), DataPoint(10, 4), DataPoint(11, 5)}); Trace deca_remove({DataPoint(0, 1), DataPoint(1, 2), DataPoint(2, 3), DataPoint(3, 4), DataPoint(4, 3), DataPoint(5, 2), DataPoint(6, 1), DataPoint(7, 1), DataPoint(8, 2), DataPoint(12, 6)}); Trace deca_remove2({DataPoint(0, 1), DataPoint(1, 2), DataPoint(2, 3), DataPoint(3, 4), DataPoint(4, 3), DataPoint(5, 2), DataPoint(6, 1), DataPoint(7, 1), DataPoint(8, 2)}); Trace deca_smaller({DataPoint(0, 1), DataPoint(1, 2), DataPoint(2, 3)}); Trace deca_greater({DataPoint(10, 4), DataPoint(11, 5), DataPoint(12, 6)}); Trace deca(deca_suite); deca.filter(FilterResampleRemoveXRange(9, 11.5)); REQUIRE(deca == deca_remove); deca = deca_suite; deca.filter(FilterResampleRemoveXRange(9, 12)); REQUIRE(deca == deca_remove2); deca = deca_suite; deca.filter(FilterResampleKeepXRange(9, 11)); REQUIRE(deca == deca_keep); deca = deca_suite; deca.filter(FilterResampleKeepSmaller(3)); REQUIRE(deca == deca_smaller); deca = deca_suite; deca.filter(FilterResampleKeepGreater(9)); REQUIRE(deca == deca_greater); std::cout << std::endl << "..:: morpho filters ::.." << std::endl; deca = deca_suite; deca.filter(FilterMorphoMedian(1)); Trace deca_median({DataPoint(0, 2), DataPoint(1, 2), DataPoint(2, 3), DataPoint(3, 3), DataPoint(4, 3), DataPoint(5, 2), DataPoint(6, 1), DataPoint(7, 1), DataPoint(8, 2), DataPoint(9, 3), DataPoint(10, 4), DataPoint(11, 5), DataPoint(12, 6)}); REQUIRE(deca.size() == deca_median.size()); std::cout << "deca.size() == deca_median.size() " << deca.size() << std::endl; REQUIRE(deca == deca_median); std::cout << std::endl << "..:: FilterTandemDeisotope ::.." << std::endl; qDebug(); MassSpectrum remove_tandem_deisotope = MassSpectrum(spectrum_simple) .massSpectrumFilter(FilterTandemDeisotope(1.5, 200)); REQUIRE(remove_tandem_deisotope.size() == 97); qDebug(); QualifiedMassSpectrum spectrum_scan_15968 = readQualifiedMassSpectrumMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_15968.mgf")); REQUIRE(spectrum_scan_15968.getPrecursorMz() == Approx(638.3693473259)); REQUIRE(spectrum_scan_15968.getPrecursorMass() == Approx(1274.724141718)); qDebug(); QualifiedMassSpectrum spectrum_removed_tandem_deisotope = QualifiedMassSpectrum(spectrum_scan_15968).cloneMassSpectrumSPtr(); qDebug(); spectrum_removed_tandem_deisotope.getMassSpectrumSPtr() .get() ->massSpectrumFilter(FilterTandemDeisotope()); qDebug(); QFile file("scan_15968_tandem_deisotope.mgf"); if(file.open(QIODevice::WriteOnly | QIODevice::Text)) { MgfOutput mgf_output(&file); mgf_output.write(spectrum_removed_tandem_deisotope); mgf_output.close(); file.close(); } qDebug(); Peptide pep15968("EITLGFVDLLR"); qDebug(); std::list ion_list; ion_list.push_back(PeptideIon::y); ion_list.push_back(PeptideIon::b); qDebug(); std::cout << std::endl << "..:: FilterRemoveC13 ::.." << std::endl; qDebug(); MassSpectrum remove_c13 = MassSpectrum(spectrum_simple) .filter(FilterRemoveC13(PrecisionFactory::getDaltonInstance(0.02))); REQUIRE(remove_c13.size() == 93); qDebug(); QualifiedMassSpectrum spectrum_removed_c13 = QualifiedMassSpectrum(spectrum_scan_15968).cloneMassSpectrumSPtr(); spectrum_removed_c13.getMassSpectrumSPtr().get()->filter( FilterRemoveC13(PrecisionFactory::getDaltonInstance(0.02))); QFile file2("scan_15968_remove_c13.mgf"); if(file2.open(QIODevice::WriteOnly | QIODevice::Text)) { MgfOutput mgf_output(&file2); mgf_output.write(spectrum_removed_c13); mgf_output.close(); file2.close(); } XtandemHyperscore hyperscore15968( *spectrum_scan_15968.getMassSpectrumSPtr().get(), pep15968.makePeptideSp(), 2, PrecisionFactory::getDaltonInstance(0.02), ion_list, true); std::cout << "peptide " << pep15968.getSequence().toStdString() << " hyperscore15968=" << hyperscore15968.getHyperscore() << std::endl; std::cout << "peptide " << pep15968.getSequence().toStdString() << " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << std::endl; REQUIRE(hyperscore15968.getHyperscore() == Approx(50.9568806832).margin(0.1)); XtandemHyperscore hyperscore15968_remove_c13( *spectrum_removed_c13.getMassSpectrumSPtr().get(), pep15968.makePeptideSp(), 2, PrecisionFactory::getDaltonInstance(0.02), ion_list, true); std::cout << "peptide " << pep15968.getSequence().toStdString() << " hyperscore15968_remove_c13=" << hyperscore15968_remove_c13.getHyperscore() << std::endl; std::cout << "peptide " << pep15968.getSequence().toStdString() << " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << std::endl; std::cout << std::endl << "..:: FilterMassSpectrumComplementIonEnhancer ::.." << std::endl; qDebug(); QualifiedMassSpectrum spectrum_complement_ion = QualifiedMassSpectrum(spectrum_scan_15968).cloneMassSpectrumSPtr(); spectrum_complement_ion.getMassSpectrumSPtr().get()->filter( FilterComplementIonEnhancer(spectrum_complement_ion, PrecisionFactory::getDaltonInstance(0.02))); QFile file3("scan_15968_complement_ion_enhancer.mgf"); if(file3.open(QIODevice::WriteOnly | QIODevice::Text)) { MgfOutput mgf_output(&file3); mgf_output.write(spectrum_complement_ion); mgf_output.close(); file3.close(); } XtandemHyperscore hyperscore15968_complement_ion_enhancer( *spectrum_complement_ion.getMassSpectrumSPtr().get(), pep15968.makePeptideSp(), 2, PrecisionFactory::getDaltonInstance(0.02), ion_list, true); std::cout << "peptide " << pep15968.getSequence().toStdString() << " hyperscore15968_complement_ion_enhancer=" << hyperscore15968_complement_ion_enhancer.getHyperscore() << std::endl; std::cout << "peptide " << pep15968.getSequence().toStdString() << " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << std::endl; std::cout << std::endl << "..:: FilterGreatestYperWindow ::.." << std::endl; FilterGreatestYperWindow filter_per_window(40, 2); qDebug(); QualifiedMassSpectrum spectrum_greatest_y_per_window = QualifiedMassSpectrum(spectrum_scan_15968).cloneMassSpectrumSPtr(); qDebug(); filter_per_window.filter( *spectrum_greatest_y_per_window.getMassSpectrumSPtr().get()); qDebug(); QFile file4("scan_15968_greatest_y_per_window.mgf"); if(file4.open(QIODevice::WriteOnly | QIODevice::Text)) { MgfOutput mgf_output(&file4); mgf_output.write(spectrum_greatest_y_per_window); mgf_output.close(); file4.close(); } qDebug(); std::cout << std::endl << "..:: FilterGreatestYperWindow on scan_PXD001468.mgf ::.." << std::endl; QualifiedMassSpectrum spectrum_scan_PXD001468 = readQualifiedMassSpectrumMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_PXD001468.mgf")); qDebug(); QualifiedMassSpectrum spectrum_greatest_y_per_window_PXD001468 = QualifiedMassSpectrum(spectrum_scan_PXD001468).cloneMassSpectrumSPtr(); qDebug(); spectrum_greatest_y_per_window_PXD001468.getMassSpectrumSPtr() .get() ->filter(FilterGreatestYperWindow(40, 2)); qDebug(); QFile file5("scan_PXD001468_greatest_y_per_window.mgf"); if(file5.open(QIODevice::WriteOnly | QIODevice::Text)) { MgfOutput mgf_output(&file5); mgf_output.write(spectrum_greatest_y_per_window_PXD001468); mgf_output.close(); file5.close(); } qDebug(); std::shared_ptr filter_suite = std::make_shared(); filter_suite->push_back(std::make_shared(40, 2)); filter_suite->push_back(std::make_shared( PrecisionFactory::getDaltonInstance(0.02))); /* XtandemHyperscore hyperscore15968_greatest_y_per_window( *spectrum_greatest_y_per_window.getMassSpectrumSPtr().get(), pep15968.makePeptideSp(), 2, PrecisionFactory::getDaltonInstance(0.02), ion_list, true); std::cout << "peptide " << pep15968.getSequence().toStdString() << " hyperscore15968_greatest_y_per_window=" << hyperscore15968_greatest_y_per_window.getHyperscore() << std::endl; std::cout << "peptide " << pep15968.getSequence().toStdString() << " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << endl; */ std::cout << std::endl << "..:: FilterSuiteString ::.." << std::endl; std::shared_ptr filter_suite_str = std::make_shared( "chargeDeconvolution|0.02dalton"); std::cout << std::endl << "filter_suite_str = " << filter_suite_str.get()->toString().toStdString() << std::endl; std::cout << std::endl << "..:: FilterChargeDeconvolution from FilterSuiteString ::.." << std::endl; std::shared_ptr filter_charge_deconvolution = std::make_shared( filter_suite_str.get()->toString()); Trace loaded_trace({// First peak z = 2 DataPoint(10, 20), DataPoint(10.5, 18), DataPoint(11, 16), // Not a real peak DataPoint(15, 50), DataPoint(16, 51), // Second peak z = 1 DataPoint(24, 200), DataPoint(25, 20), // Third peak z = 2 DataPoint(31, 20), DataPoint(31.5, 15)}); Trace theorical_trace({// Not modified peaks DataPoint(15, 50), DataPoint(16, 51), // First peak merged DataPoint(20 - MHPLUS, 54), // Second DataPoint(24, 220), // Third DataPoint(62 - MHPLUS, 35)}); std::cout << "Transform Trace data" << std::endl; filter_charge_deconvolution->filter(loaded_trace); if(loaded_trace != theorical_trace) { std::cerr << "transformed Trace are different from theorical trace :" << std::endl; if(loaded_trace.xValues().size() == theorical_trace.xValues().size()) { std::cerr << "transformed trace: \t"; for(std::size_t i = 0; i < loaded_trace.xValues().size(); i++) { std::cerr << "(" << loaded_trace.xValues()[i] << ", " << loaded_trace.yValues()[i] << ") "; } std::cerr << std::endl; std::cerr << "theorical trace : \t"; for(std::size_t i = 0; i < theorical_trace.xValues().size(); i++) { std::cerr << "(" << theorical_trace.xValues()[i] << ", " << theorical_trace.yValues()[i] << ") "; } std::cerr << std::endl; } else { std::cerr << "Number of peaks is different : " << loaded_trace.xValues().size() << " vs " << theorical_trace.xValues().size(); } } REQUIRE(loaded_trace == theorical_trace); } SECTION("..:: test FilterMorphoAntiSpike ::..", "[filters]") { // MESSAGE("..:: FilterMorphoAntiSpike filters ::.."); Trace anti_spike_trace({DataPoint(0, 0), DataPoint(1, 1), DataPoint(2, 3), DataPoint(3, 0), DataPoint(4, 0), DataPoint(5, 0), DataPoint(6, 0), DataPoint(7, 0), DataPoint(8, 0), DataPoint(9, 3), DataPoint(10, 0), DataPoint(11, 0), DataPoint(12, 0)}); FilterMorphoAntiSpike filter_anti_spike(2); filter_anti_spike.filter(anti_spike_trace); REQUIRE(anti_spike_trace[9].y == 0); REQUIRE(anti_spike_trace[2].y == 3); // std::cout << std::endl << anti_spike_trace.toString().toStdString() << // std::endl; INFO("filter_anti_spike_too_big"); FilterMorphoAntiSpike filter_anti_spike_too_big(7); filter_anti_spike_too_big.filter(anti_spike_trace); } SECTION("..:: check empty trace ::..", "[filters]") { // MESSAGE("..:: FilterMorphoAntiSpike filters ::.."); Trace empty_trace; FilterMorphoMean m_smooth(3); REQUIRE_NOTHROW(m_smooth.filter(empty_trace)); FilterMorphoMinMax m_minMax(5); REQUIRE_NOTHROW(m_minMax.filter(empty_trace)); FilterMorphoMaxMin m_maxMin(5); REQUIRE_NOTHROW(m_maxMin.filter(empty_trace)); Trace xic; xic.push_back(DataPoint(1434.7806210000, 85.9931205504)); xic.push_back(DataPoint(1586.4034760000, 162.9869610431)); xic.push_back(DataPoint(1643.5517360000, 84.9932005440)); xic.push_back(DataPoint(1645.8830080000, 98.9920806335)); FilterMorphoMaxMin m_maxMin2(2); REQUIRE_NOTHROW(m_maxMin2.filter(xic)); } SECTION("..:: check FilterQuantileBasedRemoveY ::..", "[filters]") { Trace xic_PXD0014777 = *(readQualifiedMassSpectrumMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/PXD014777_xic.tsv")) .getMassSpectrumSPtr() .get()); REQUIRE(Approx(62.43).epsilon(0.01) == quantileYTrace(xic_PXD0014777.begin(), xic_PXD0014777.end(), 0.1)); REQUIRE(Approx(250.75).epsilon(0.01) == quantileYTrace(xic_PXD0014777.begin(), xic_PXD0014777.end(), 0.5)); REQUIRE(Approx(136.96).epsilon(0.01) == quantileYTrace(xic_PXD0014777.begin(), xic_PXD0014777.end(), 0.3)); FilterQuantileBasedRemoveY quantile(0.1); xic_PXD0014777 = quantile.filter(xic_PXD0014777); QFile fnew("quantile_trace.tsv"); fnew.open(QFile::WriteOnly | QFile::Text); QTextStream out(&fnew); out << xic_PXD0014777.toString(); } } libpappsomspp-0.9.20/tests/test_tracecombiner.cpp000644 001750 001750 00000007644 14526455546 023456 0ustar00rusconirusconi000000 000000 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include using namespace pappso; TEST_CASE("Constructing TracePlusCombiner objects.", "[TracePlusCombiner][constructors]") { SECTION("Construct a TracePlusCombiner", "[TracePlusCombiner]") { int decimal_places = 3; TracePlusCombiner trace_combiner(decimal_places); REQUIRE(trace_combiner.getDecimalPlaces() == decimal_places); } SECTION("Construct a TracePlusCombiner from another TracePlusCombiner", "[TracePlusCombiner]") { int decimal_places = 3; TracePlusCombiner trace_combiner(decimal_places); TracePlusCombiner trace_combiner1(trace_combiner); REQUIRE(trace_combiner1.getDecimalPlaces() == decimal_places); } } TEST_CASE("Performing combinations with TracePlusCombiner", "[TracePlusCombiner][combinations]") { // Create two different traces. std::vector data_point_vector1; // clang-format off data_point_vector1.push_back(DataPoint("610.02000 12963.5715942383")); data_point_vector1.push_back(DataPoint("610.07000 15639.6568298340")); data_point_vector1.push_back(DataPoint("610.12000 55999.7628784180")); data_point_vector1.push_back(DataPoint("610.17000 9335990.3578681946")); data_point_vector1.push_back(DataPoint("610.2200000 635674266.1611375809")); data_point_vector1.push_back(DataPoint("610.27000 54459.4762458801")); data_point_vector1.push_back(DataPoint("610.32000 205580.6580276489")); data_point_vector1.push_back(DataPoint("610.37000 84627.3196716309")); data_point_vector1.push_back(DataPoint("610.42000 51061.7636718750")); data_point_vector1.push_back(DataPoint("610.47000 20260.0218505859")); // clang-format on Trace trace1(data_point_vector1); std::vector data_point_vector2; // clang-format off data_point_vector2.push_back(DataPoint("610.02000 22963.5725942383")); data_point_vector2.push_back(DataPoint("620.04000 22963.5725942383")); data_point_vector2.push_back(DataPoint("620.07000 25639.6568298340")); data_point_vector2.push_back(DataPoint("620.25000 55999.7628784280")); data_point_vector2.push_back(DataPoint("620.30000 205580.6580276489")); data_point_vector2.push_back(DataPoint("620.35000 84627.3296726309")); data_point_vector2.push_back(DataPoint("620.40000 52062.7636728750")); data_point_vector2.push_back(DataPoint("620.45000 20260.0228505859")); // clang-format on Trace trace2(data_point_vector2); SECTION("Combine two Trace into a MapTrace.", "[TracePlusCombiner]") { MapTrace map_trace; int decimal_places = 3; TracePlusCombiner combiner(decimal_places); combiner.combine(map_trace, trace1); REQUIRE(map_trace.size() == 10); combiner.combine(map_trace, trace2); REQUIRE(map_trace.size() == 17); // There was that 610.02000 m/z point in both traces, so // combination needs to add up the intensities. REQUIRE(map_trace[610.02000] == 12963.5715942383 + 22963.5725942383); } SECTION("Combine two MapTrace into a MapTrace.", "[TracePlusCombiner]") { MapTrace map_trace; int decimal_places = 3; TracePlusCombiner combiner(decimal_places); MapTrace map_trace1(trace1); MapTrace map_trace2(trace2); combiner.combine(map_trace, map_trace1); REQUIRE(map_trace.size() == 10); combiner.combine(map_trace, map_trace2); REQUIRE(map_trace.size() == 17); // There was that 610.02000 m/z point in both traces, so // combination needs to add up the intensities. REQUIRE(map_trace[610.02000] == 12963.5715942383 + 22963.5725942383); } } libpappsomspp-0.9.20/tests/test_uimonitor.cpp000644 001750 001750 00000004174 14526455546 022661 0ustar00rusconirusconi000000 000000 // // File: test_uimonitor.cpp // Created by: Olivier Langella // Created on: 25/9/2021 // /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [uimonitor] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("UiMonitor test suite.", "[uimonitor]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: UiMonitorTextPercent ::..", "[uimonitor]") { QTextStream output(stdout, QIODevice::WriteOnly); UiMonitorTextPercent monitor(output); monitor.setTotalSteps(20); for(int i = 0; i < 20; i++) { monitor.count(); } monitor.setTotalSteps(0); for(int i = 0; i < 20; i++) { monitor.count(); } monitor.setTotalSteps(100); for(int i = 0; i < 20; i++) { monitor.count(); } monitor.setTotalSteps(0); } } libpappsomspp-0.9.20/tests/test_xicextractor.cpp000644 001750 001750 00000012762 14526455546 023355 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ //./tests/catch2-only-tests [XICextractor] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" // #include "common.h" // make test ARGS="-V -I 19,19" using namespace std; TEST_CASE("XIC extractor test suite.", "[XICextractor]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); // QCoreApplication a(argc, argv); SECTION("..:: Test XIC ::..", "[extract_1_A01]") { qDebug() << "init test XIC"; // QCoreApplication a(argc, argv); qDebug() << "init test XIC extractor"; std::cout << std::endl << "..:: Test XIC ::.." << std::endl; QElapsedTimer timer; #if USEPAPPSOTREE == 1 pappso::MsFileAccessor file_access( "/gorgone/pappso/data_extraction_pappso/mzXML/" //"/home/langella/data1/mzxml/" "20120906_balliau_extract_1_A01_urnb-1.mzXML", "file"); pappso::MsRunReaderSPtr msrun = file_access.getMsRunReaderSPtrByRunId("", "runa1"); pappso::MsRunXicExtractorFactory::getInstance().setTmpDir("/tmp"); pappso::MzRange mass_range(600, pappso::PrecisionFactory::getPpmInstance(10)); pappso::XicCoordSPtr xic_coord = msrun.get()->newXicCoordSPtrFromSpectrumIndex( 3000, pappso::PrecisionFactory::getPpmInstance(10)); xic_coord.get()->mzRange = mass_range; std::vector xic_coord_list; xic_coord_list.push_back(xic_coord.get()->initializeAndClone()); // MassRange mass_range_b(600.2, Precision::getPpmInstance(10)); pappso::MsRunXicExtractorInterfaceSp extractor_pwiz = pappso::MsRunXicExtractorFactory::getInstance().buildMsRunXicExtractorSp( msrun); extractor_pwiz->setXicExtractMethod(pappso::XicExtractMethod::max); QTextStream outputStream(stdout, QIODevice::WriteOnly); pappso::UiMonitorText monitor(outputStream); extractor_pwiz.get()->extractXicCoordSPtrList(monitor, xic_coord_list); pappso::XicCstSPtr xic_pwiz = xic_coord_list[0].get()->xicSptr; std::cout << std::endl << "..:: XIC extractor pwiz is OK ::.." << std::endl; std::cout << std::endl << "building XicExtractorDiskSp .." << std::endl; timer.start(); pappso::MsRunXicExtractorFactory::getInstance() .setMsRunXicExtractorFactoryType( pappso::MsRunXicExtractorFactoryType::disk); pappso::MsRunXicExtractorInterfaceSp extractor_disk = pappso::MsRunXicExtractorFactory::getInstance().buildMsRunXicExtractorSp( msrun); std::cout << std::endl << "XicExtractorDiskSp built " << timer.elapsed() / 1000 << " seconds" << std::endl; xic_coord_list.clear(); xic_coord_list.push_back(xic_coord.get()->initializeAndClone()); extractor_disk.get()->extractXicCoordSPtrList(monitor, xic_coord_list); pappso::XicCstSPtr xic_disk = xic_coord_list[0].get()->xicSptr; REQUIRE(*xic_pwiz == *xic_disk); std::cout << std::endl << "..:: XIC extractor on disk is OK ::.." << std::endl; // return 0; std::cout << std::endl << "building XicExtractorDiskBufferSp .." << std::endl; timer.restart(); pappso::MsRunXicExtractorFactory::getInstance() .setMsRunXicExtractorFactoryType( pappso::MsRunXicExtractorFactoryType::diskbuffer); pappso::MsRunXicExtractorInterfaceSp extractor_buffer = pappso::MsRunXicExtractorFactory::getInstance().buildMsRunXicExtractorSp( msrun); std::cout << std::endl << "XicExtractorDiskBufferSp built " << timer.elapsed() / 1000 << " seconds" << std::endl; xic_coord_list.clear(); xic_coord_list.push_back(xic_coord.get()->initializeAndClone()); extractor_buffer.get()->extractXicCoordSPtrList(monitor, xic_coord_list); pappso::XicCstSPtr xic_buffer = xic_coord_list[0].get()->xicSptr; REQUIRE(*xic_pwiz == *xic_buffer); std::cout << std::endl << "..:: XIC extractor buffered on disk is OK ::.." << std::endl; #endif } } libpappsomspp-0.9.20/tests/benchmarks/000755 001750 001750 00000000000 14533473271 021171 5ustar00rusconirusconi000000 000000 libpappsomspp-0.9.20/tests/benchmarks/catch-only-benchmarks-main.cpp000644 001750 001750 00000000476 14531706321 026773 0ustar00rusconirusconi000000 000000 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do // this in one cpp file #define CATCH_CONFIG_ENABLE_BENCHMARKING #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif libpappsomspp-0.9.20/tests/benchmarks/test_msrunreaderng.cpp000644 001750 001750 00000011263 14531706321 025604 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // cmake .. -DCMAKE_BUILD_TYPE=Debug -DMAKE_TESTS=1 -DUSEPAPPSOTREE=1 //./tests/catch2-only-tests [MsRunReader] -s //./tests/catch2-only-tests [MsRunReaderPerf] -s //./tests/catch2-only-tests [MsRunReaderPerf] -s --benchmark-samples 5 #define CATCH_CONFIG_ENABLE_BENCHMARKING #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include "../config.h" // #include "common.h" using namespace std; TEST_CASE("Test MsRunReader new API performance", "[MsRunReaderPerf]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 SECTION("..:: MsRunReader performance check ::..") { qDebug(); pappso::MsFileAccessor file_access_A01( "/gorgone/pappso/versions_logiciels_pappso/bruker/" "200ngHeLaPASEF_2min_compressed.d", ""); file_access_A01.setPreferredFileReaderType( pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_frames); pappso::MsRunReaderSPtr msrunA01 = file_access_A01.getMsRunReaderSPtrByRunId("", "runa01"); pappso::MsRunReadConfig config; // config.setRetentionTimeStartInSeconds(2490); // config.setRetentionTimeEndInSeconds(2600); config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_index_begin, 100); config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_index_end, 200); config.setNeedPeakList(true); config.setMsLevels({1}); // msrunA01.get()->setMonoThread(false); pappso::MsRunReaderQualifiedSpectrumList spectrum_list_reader; BENCHMARK("without mz merge") { msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); }; // REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList().size() == // 33); config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window, 7); BENCHMARK("with TimsFramesMsRunReader_mz_index_merge_window 7") { msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); }; config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window, 15); BENCHMARK("with TimsFramesMsRunReader_mz_index_merge_window 15") { msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); }; config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window, 30); BENCHMARK("with TimsFramesMsRunReader_mz_index_merge_window 30") { msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); }; config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window, 600); BENCHMARK("with TimsFramesMsRunReader_mz_index_merge_window 600") { msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); }; } #endif } libpappsomspp-0.9.20/tests/benchmarks/test_timsxicextractor.cpp000644 001750 001750 00000013520 14533333502 026341 0ustar00rusconirusconi000000 000000 // File: test_timsxicextractor.cpp // Created by: Olivier Langella // Created on: 3/2/2021 // /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [TimsXicExtractor] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include #endif #include #include #include #include #include #include #include #include #include #include "../config.h" #include "../common.h" #include using namespace pappso; TEST_CASE("Extracting XIC from timsdata", "[TimsXicExtractor]") { qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 QString file_path_name; /* file_path_name = "/gorgone/pappso/fichiers_fabricants/Bruker/tims_doc/tdf-sdk/" "example_data/" "200ngHeLaPASEF_2min_compressed.d/analysis.tdf"; */ // file_path_name = //"/home/rusconi/devel/dataForMzml/bruker/20210126_HeLa.d/" //"1-26-2021_1_QC_HeLa10ng_826.d/analysis.tdf"; file_path_name = "/gorgone/pappso/jouy/raw/2021_Tims_TOF/20211124_HeLa/" "11-25-2021_1_HeLa200ng_2321.d/analysis.tdf"; /* file_path_name = "/backup2/" "11-25-2021_1_HeLa200ng_2321.d/analysis.tdf"; */ // file_path_name = //"/home/rusconi/devel/dataForMzml/bruker/2021_Tims_TOF/20211124_HeLa/" //"11-25-2021_1_HeLa200ng_2321.d/analysis.tdf"; qDebug() << "The file to use as a test base is: " << file_path_name; // When not in debug mode. std::cout << __FILE__ << ":" << __LINE__ << " The file to use as a test base is: " << file_path_name.toStdString(); pappso::MsFileAccessor accessor(file_path_name, "a1"); accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); WARN("get reader"); pappso::MsRunReaderSPtr p_msreader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); WARN("get reader OK"); REQUIRE(p_msreader != nullptr); REQUIRE(accessor.getFileReaderType() == pappso::FileReaderType::tims_ms2); pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(p_msreader.get()); REQUIRE(tims2_reader != nullptr); pappso::TimsDataSp tims_data = tims2_reader->getTimsDataSPtr(); std::vector precursor_list = {2159}; std::vector mz_list = { 466.738, 467.239, 420, 421, 422, 423, 424, 425, 426}; std::vector xic_list; std::vector xic_struct_list; clock_t start = clock(); for(auto precursor_id : precursor_list) { xic_list.push_back( tims_data.get() ->getXicCoordTimsFromPrecursorId( precursor_id, PrecisionFactory::getPpmInstance(30.0)) .initializeAndClone()); } for(pappso::pappso_double mz : mz_list) { pappso::XicCoordSPtr new_xic_struct = xic_list[0].get()->initializeAndClone(); new_xic_struct.get()->mzRange = pappso::MzRange(mz, PrecisionFactory::getPpmInstance(30.0)); xic_struct_list.push_back(new_xic_struct); } WARN("buildMsRunXicExtractorSp"); MsRunXicExtractorInterfaceSp xic_extractor = MsRunXicExtractorFactory::getInstance().buildMsRunXicExtractorSp( p_msreader); WARN("buildMsRunXicExtractorSp OK"); xic_extractor.get()->setXicExtractMethod(pappso::XicExtractMethod::sum); QTextStream outputStream(stdout, QIODevice::WriteOnly); UiMonitorTextPercent monitor(outputStream); WARN("monitor.setStatus"); monitor.setStatus("Actually starting the XIC extraction."); WARN("extractXicCoordSPtrList start"); xic_extractor.get()->extractXicCoordSPtrListParallelized(monitor, xic_struct_list); WARN("extractXicCoordSPtrList stop"); qInfo() << QString("Time taken: %1\n") .arg((double)(clock() - start) / CLOCKS_PER_SEC); for(auto &&xic_struct : xic_struct_list) { REQUIRE(xic_struct.get() != nullptr); QFile fileods(QString("%1/tims_xic_%2.ods") .arg(CMAKE_BINARY_DIR) .arg(xic_struct.get()->mzRange.getMz())); OdsDocWriter writer(&fileods); writer.writeLine(); writer.writeCell("rtTarget"); writer.writeCell(xic_struct.get()->rtTarget); writer.writeLine(); XicOdsWriter xic_writer(writer); xic_writer.write(*xic_struct.get()->xicSptr.get()); writer.close(); fileods.close(); } #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } libpappsomspp-0.9.20/tests/benchmarks/test_timsxicextractor_based_masspec.cpp000644 001750 001750 00000015406 14533333502 031217 0ustar00rusconirusconi000000 000000 // File: test_timsxicextractor.cpp // Created by: Olivier Langella // Created on: 3/2/2021 // /******************************************************************************* * Copyright (c) 2021 Olivier Langella *. * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // Run using this command line: // tests/catch2-only-tests "Creating mass spectrum via TIMS XIC extraction from // timsdata" -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include "../config.h" #include "../common.h" #include using namespace pappso; TEST_CASE("Creating mass spectrum via TIMS XIC extraction from timsdata", "[massSpecTimsXicExtractor]") { qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 QString file_path_name; // file_path_name = //"/home/rusconi/devel/dataForMzml/bruker/20210126_HeLa.d/" //"1-26-2021_1_QC_HeLa10ng_826.d/analysis.tdf"; file_path_name = "/gorgone/pappso/jouy/raw/2021_Tims_TOF/20211124_HeLa/" "11-25-2021_1_HeLa200ng_2321.d/analysis.tdf"; // file_path_name = //"/home/rusconi/devel/dataForMzml/bruker/2021_Tims_TOF/20211124_HeLa/" //"11-25-2021_1_HeLa200ng_2321.d/analysis.tdf"; qDebug() << "The file to use as a test base is: " << file_path_name; // When not in debug mode. std::cout << __FILE__ << ":" << __LINE__ << " The file to use as a test base is: " << file_path_name.toStdString() << std::endl; pappso::MsFileAccessor accessor(file_path_name, "a1"); qDebug() << "Setting the preferred file reader type to tims2."; accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); pappso::MsRunReaderSPtr p_msreader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); REQUIRE(p_msreader != nullptr); REQUIRE(accessor.getFileReaderType() == pappso::FileReaderType::tims_ms2); pappso::TimsMsRunReaderMs2 *tims_reader = dynamic_cast(p_msreader.get()); REQUIRE(tims_reader != nullptr); pappso::TimsDataSp tims_data = tims_reader->getTimsDataSPtr(); // std::vector precursor_list = {132929}; std::vector precursor_list = {31693}; // Now craft the mz list. We have an acquisition m/z range from 100 to 1700. std::vector mz_list; // Seed the lower m/z value of the m/z range and push it back to the mz_list. double mz = 100; mz_list.push_back(mz); // We'll need a precision. PrecisionPtr precision_p = PrecisionFactory::getPpmInstance(30); // Compute the last mz value accounting for the delta (we do not want to // over-trip the 1700 hard limit. double last_mz = 1700; last_mz -= 2 * precision_p->delta(last_mz); while(mz < last_mz) { mz += 2 * precision_p->delta(mz); mz_list.push_back(mz); } qDebug() << "The mz_list now has " << mz_list.size() << " m/z values."; std::cout << "The mz_list now has " << mz_list.size() << " m/z values."; std::vector xic_list; std::vector xic_coord_list; clock_t start = clock(); for(auto precursor_id : precursor_list) { XicCoordSPtr xic_coord_tims_struct_sp = tims_data.get() ->getXicCoordTimsFromPrecursorId(precursor_id, PrecisionFactory::getPpmInstance(30)) .initializeAndClone(); xic_list.push_back(xic_coord_tims_struct_sp); } for(pappso::pappso_double mz : mz_list) { pappso::XicCoordSPtr new_xic_coord = xic_list[0].get()->initializeAndClone(); new_xic_coord.get()->mzRange = pappso::MzRange(mz, PrecisionFactory::getPpmInstance(30.0)); xic_coord_list.push_back(new_xic_coord); } MsRunXicExtractorInterfaceSp xic_extractor = MsRunXicExtractorFactory::getInstance().buildMsRunXicExtractorSp( p_msreader); xic_extractor.get()->setXicExtractMethod(pappso::XicExtractMethod::sum); QTextStream outputStream(stdout, QIODevice::WriteOnly); UiMonitorText monitor(outputStream); INFO("monitor.setStatus"); monitor.setStatus("Now starting the actual XIC extraction"); INFO("extractXicCoordSPtrList start"); // DO THE EXTRACTION!! xic_extractor.get()->extractXicCoordSPtrList(monitor, xic_coord_list); INFO("extractXicCoordSPtrList stop"); qInfo() << QString("Time taken: %1\n") .arg((double)(clock() - start) / CLOCKS_PER_SEC); // At this point we have tens of thousands of XICs performed each time over // the whole set of frames of the acquisition. // A XIC is a total ion current chromatogram for a given m/z value over the // whole rt range. The XIC is a Trace, with x:rt y:int. And there is such a // Trace for each m/z value in the mz_list above. // If we want a full mass spectral integration over the whole acquisiion, all // we need to do is iterate in the xic_coord_list, get the m/z value for each // item in this list and sum all the y values of the XIC Trace. Trace full_mass_spectrum_trace; for(auto xic_coord : xic_coord_list) { double mz = xic_coord->mzRange.getMz(); double sum_y = xic_coord.get()->xicSptr.get()->sumY(); full_mass_spectrum_trace.push_back(DataPoint(mz, sum_y)); } std::cout << "The full mass spectrum for the acquisition:\n" << full_mass_spectrum_trace.toString().toStdString(); #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TDF parsing ::.." << std::endl; #endif } libpappsomspp-0.9.20/tests/test_msrunreaderng.cpp000644 001750 001750 00000024313 14531424653 023474 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2023 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // cmake .. -DCMAKE_BUILD_TYPE=Debug -DMAKE_TESTS=1 -DUSEPAPPSOTREE=1 //./tests/catch2-only-tests [MsRunReader] -s //./tests/catch2-only-tests [MsRunReaderPerf] -s //./tests/catch2-only-tests [MsRunReaderPerf] -s --benchmark-samples 5 #define CATCH_CONFIG_ENABLE_BENCHMARKING #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" // #include "common.h" using namespace std; TEST_CASE("Test MsRunReader new API", "[MsRunReader]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); #if USEPAPPSOTREE == 1 SECTION("..:: test mz merge ::..") { pappso::MsFileAccessor file_access_bruker( "/gorgone/pappso/versions_logiciels_pappso/bruker/" "200ngHeLaPASEF_2min_compressed.d", ""); file_access_bruker.setPreferredFileReaderType( pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_frames); pappso::MsRunReaderSPtr msrunA01 = file_access_bruker.getMsRunReaderSPtrByRunId("", "runa01"); pappso::MsRunReaderQualifiedSpectrumList spectrum_list_reader; pappso::MsRunReadConfig config; config.setNeedPeakList(true); config.setMsLevels({1}); msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList().size() == 131); auto spectrum = spectrum_list_reader.getQualifiedMassSpectrumList().at(100); auto peak_list = pappso::FilterGreatestY(10).filter( *(spectrum.getMassSpectrumSPtr().get())); std::vector expected_mass_list({706.3999766729, 706.9020200197, 706.9062396402, 707.4042417417, 714.3395398357, 714.3437815601, 715.3494308409, 929.5019128764, 1045.4947003008, 1045.9976567258}); REQUIRE_THAT(peak_list.xValues(), Catch::Approx(expected_mass_list).margin(0.00001)); config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window, 15); spectrum_list_reader.clear(); msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList().size() == 131); auto peak_list_merged = pappso::FilterGreatestY(10).filter( *(spectrum_list_reader.getQualifiedMassSpectrumList() .at(100) .getMassSpectrumSPtr() .get())); std::vector expected_mass_list_merged({575.3077201826, 679.3848524324, 706.3915404671, 706.8978004475, 707.4042417417, 714.3225729564, 715.3409413994, 929.5261058305, 1045.5049635122, 1045.9668599888}); REQUIRE_THAT(peak_list_merged.xValues(), Catch::Approx(expected_mass_list_merged).margin(0.00001)); } SECTION( "..:: MsRunReader uses FileReaderType::tims_frames (explicit reader " "config, first " "data file) ::..") { qDebug(); pappso::MsFileAccessor file_access_A01( "/gorgone/pappso/versions_logiciels_pappso/bruker/" "200ngHeLaPASEF_2min_compressed.d", ""); std::cout << "number of runIds = " << file_access_A01.getMsRunIds().size() << std::endl; file_access_A01.setPreferredFileReaderType( pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_frames); pappso::MsRunReaderSPtr msrunA01 = file_access_A01.getMsRunReaderSPtrByRunId("", "runa01"); pappso::MsRunSimpleStatistics simple_stats; pappso::MsRunReadConfig config; // config.setRetentionTimeStartInSeconds(300); // config.setRetentionTimeEndInSeconds(500); config.setNeedPeakList(false); config.setMsLevels({1, 2}); REQUIRE(config.getMsLevels()[0] == false); REQUIRE(config.getMsLevels()[1] == true); REQUIRE(config.getMsLevels()[2] == true); REQUIRE(config.getMsLevels()[3] == false); REQUIRE(config.acceptRetentionTimeInSeconds(300) == true); msrunA01.get()->readSpectrumCollection2(config, simple_stats); REQUIRE(simple_stats.getMsLevelCount(1) == 131); REQUIRE(config.needPeakList() == false); INFO("selecting 0.5s retention time range and only MS level==1") // 2499 config.setMsLevels({1}); REQUIRE(config.getMsLevels()[0] == false); REQUIRE(config.getMsLevels()[1] == true); REQUIRE(config.getMsLevels()[2] == false); REQUIRE(config.getMsLevels()[3] == false); config.setRetentionTimeStartInSeconds(2499); config.setRetentionTimeEndInSeconds(2499.5); config.setNeedPeakList(true); pappso::MsRunReaderQualifiedSpectrumList spectrum_list_reader; msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList().size() == 1); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList() .at(0) .getMassSpectrumId() .getNativeId() .toStdString() == "frame id=1184 scan index=794464 im_begin=0 im_end=670"); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList() .at(0) .getMassSpectrumSPtr() ->size() == 138397); INFO( "selecting 0.5s retention time range and only MS level==1, downgrading " "mz precision") spectrum_list_reader.clear(); config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mz_index_merge_window, 30); msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList().size() == 1); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList() .at(0) .getMassSpectrumId() .getNativeId() .toStdString() == "frame id=1184 scan index=794464 im_begin=0 im_end=670"); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList() .at(0) .getMassSpectrumSPtr() ->size() == 10588); INFO( "selecting 0.5s and only MS level==1, downgrading mz precision and " "selecting ion mobility range") spectrum_list_reader.clear(); config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_index_begin, 150); config.setParameterValue(pappso::MsRunReadConfigParameter:: TimsFramesMsRunReader_mobility_index_end, 200); msrunA01.get()->readSpectrumCollection2(config, spectrum_list_reader); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList().size() == 1); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList() .at(0) .getMassSpectrumId() .getNativeId() .toStdString() == "frame id=1184 scan index=794464 im_begin=150 im_end=200"); REQUIRE(spectrum_list_reader.getQualifiedMassSpectrumList() .at(0) .getMassSpectrumSPtr() ->size() == 5071); } SECTION( "..:: MsRunReader uses FileReaderType::tims_frames (explicit reader " "config, " "second data file) ::..") { qDebug(); pappso::MsFileAccessor file_access_A01( "/gorgone/pappso/data_extraction_pappso/mzXML/" // "/data/mzXML/" //"/home/langella/data1/mzxml/" "20120906_balliau_extract_1_A01_urnb-1.mzXML", ""); std::cout << "number of runIds = " << file_access_A01.getMsRunIds().size() << std::endl; pappso::MsRunReaderSPtr msrunA01 = file_access_A01.getMsRunReaderSPtrByRunId("", "runa01"); pappso::MsRunReadConfig config; config.setRetentionTimeStartInSeconds(300); config.setRetentionTimeEndInSeconds(500); config.setNeedPeakList(false); config.setMsLevels({1, 2}); pappso::MsRunSimpleStatistics simple_stats; msrunA01.get()->readSpectrumCollection2(config, simple_stats); REQUIRE(simple_stats.getMsLevelCount(1) == 572); } #endif } libpappsomspp-0.9.20/tests/CMakeLists.txt000644 001750 001750 00000013366 14533323122 021612 0ustar00rusconirusconi000000 000000 if(MAKE_TESTS AND (WIN64 OR (UNIX AND NOT APPLE))) set (CMAKE_CXX_FLAGS "-Wno-error=deprecated-declarations") message(\n${BoldRed}"Now configuring tests for ${CMAKE_PROJECT_NAME}"${ColourReset}\n) # CMake script for PAPPSOms++ library # Authors: Copyright Olivier Langella & Filippo Rusconi # GPLv3+ # Created: 03/03/2015 from the CMakeLists file of the Bio++ project # Changes 20201201 by FR. IF(USEPAPPSOTREE) set(USEPAPPSOTREE 1) message("USEPAPPSOTREE is defined") message("Please be sure that your environment has accessed to the PAPPSO directory") ENDIF(USEPAPPSOTREE) configure_file (config.h.cmake ${CMAKE_SOURCE_DIR}/tests/config.h) #apt-get install libpwiz-dev libboost-dev #CTEST_OUTPUT_ON_FAILURE=TRUE make test #make test ARGS="-V" #make test ARGS="-V -I 4,4" #export LD_LIBRARY_PATH=/home/langella/developpement/git/pappsomspp/build/src:$LD_LIBRARY_PATH #set(CMAKE_MODULE_PATH "/usr/share/cmake-3.0/Modules") message("tests/CMakeLists.txt - CMAKE_MODULE_PATH:" ${CMAKE_MODULE_PATH}) #find_package(QuaZip-Qt6 REQUIRED) find_package(Catch2 REQUIRED) find_package(Boost COMPONENTS chrono REQUIRED) if(OdsStream_FOUND) else (OdsStream_FOUND) find_package(OdsStream REQUIRED) endif(OdsStream_FOUND) if(TARGET OdsStream::Core) message("OdsStream::Core found.") else (TARGET OdsStream::Core) message("OdsStream::Core not found.") endif (TARGET OdsStream::Core) # When running tests we necessarily have to document the location of the # libraries that were built locally. set(PappsoMSpp_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/src") set(PappsoMSpp_LIBRARY "${CMAKE_BINARY_DIR}/src/libpappsomspp.so") set(PappsoMSppWidget_LIBRARY "${CMAKE_BINARY_DIR}/src/pappsomspp/widget/libpappsomspp-widget.so") message("${PappsoMSpp_INCLUDE_DIRS}") message("${PappsoMSpp_LIBRARY}") message("${PappsoMSppWidget_LIBRARY}") # These source files are compiled into a single Catch2-based test binary. set(catch2_only_cpp_SRCS catch-only-tests-main.cpp test_aa.cpp test_big_hyperscore.cpp test_datapoint.cpp test_fasta_reader.cpp test_fragmentationcid.cpp test_hyperscore.cpp test_isotope_with_spectrum.cpp test_trace.cpp test_maptrace.cpp test_massrange.cpp test_tracecombiner.cpp test_massspectrum.cpp test_mzintegrationparams.cpp test_massspectrumcombiner.cpp test_trace_filters.cpp test_xic.cpp test_protein.cpp test_proteincode.cpp test_peptide.cpp test_peptidefragment.cpp test_peptidenaturalisotopelist.cpp test_natural_isotope_average.cpp test_psm.cpp test_msrunoutput.cpp test_msrunreaderng.cpp test_uimonitor.cpp test_rawmasslist.cpp test_timsframe.cpp test_tims_data_xic_chromatogram.cpp test_tims_ion_mobility_grid.cpp test_tandem_run_wrapper.cpp test_msrunalignment.cpp test_scan_15968.cpp test_c13n15.cpp test_xicextractor.cpp test_xtandem_spectrum.cpp saxparsers/xtandemresultshandler.cpp ) # These source files are compiled into a single Catch2-based test binary. # tests dedicated to check memory usage and avoid memory leaks set(catch2_only_cpp_memory_SRCS memory/test_tandemwrapperrun.cpp memory/test_timsdata_reader_memory.cpp ) # These source files are compiled into a single Catch2-based test binary. # tests dedicated to check speed performances (benchmarks) set(catch2_only_cpp_benchmark_SRCS benchmarks/catch-only-benchmarks-main.cpp benchmarks/test_msrunreaderng.cpp benchmarks/test_timsxicextractor.cpp benchmarks/test_timsxicextractor_based_masspec.cpp ) add_executable(catch2-only-benchmarks common.cpp ${catch2_only_cpp_benchmark_SRCS} ) add_executable(catch2-only-memory common.cpp ${catch2_only_cpp_memory_SRCS} ) add_executable(catch2-only-tests common.cpp ${catch2_only_cpp_SRCS} ) add_custom_target(catch2-tests catch2-only-tests DEPENDS catch2-only-tests WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Running the Catch2-based tests.") set_property(TARGET catch2-only-tests PROPERTY CXX_STANDARD 17) # we want C++17 set_property(TARGET catch2-only-benchmarks PROPERTY CXX_STANDARD 17) # we want C++17 # So that the -based #includes find the proper header files even # if these are not installed on the system. include_directories("${CMAKE_SOURCE_DIR}/src") target_include_directories(catch2-only-tests PRIVATE ${INCLUDE_DIRECTORIES} Catch2::Catch2 Catch2::Catch2WithMain ) target_include_directories(catch2-only-benchmarks PRIVATE ${INCLUDE_DIRECTORIES} Catch2::Catch2 ) set(required_target_link_libraries pappsomspp-shared Catch2::Catch2 Catch2::Catch2WithMain OdsStream::Core liblzf::liblzf QuaZip::QuaZip ) target_link_libraries(catch2-only-tests ${required_target_link_libraries}) target_link_libraries(catch2-only-memory pappsomspp-shared Catch2::Catch2 Catch2::Catch2WithMain QuaZip::QuaZip ) target_link_libraries(catch2-only-benchmarks pappsomspp-shared Catch2::Catch2 liblzf::liblzf Boost::chrono QuaZip::QuaZip OdsStream::Core ) # Add the Catch2-based single binary test file to the CMake's test suite so # that it gets called using 'make test'. To see the output, add "ARGS=-V" to # the call. add_test(catch2-only-tests "catch2-only-tests") set_property(TEST catch2-only-tests PROPERTY ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_PATH}/src") if(WIN32) set(ENV{PATH} "$ENV{PATH};..\\src") endif() add_subdirectory(widget) message(\n${BoldRed}"Done configuring tests for ${CMAKE_PROJECT_NAME}"${ColourReset}\n) else() message(STATUS "Tests are not built.") endif() libpappsomspp-0.9.20/tests/test_big_hyperscore.cpp000644 001750 001750 00000006604 14533323122 023616 0ustar00rusconirusconi000000 000000 // // File: test_big_hyperscore.cpp // Created by: Olivier Langella // Created on: 19/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [bighyperscore] -s #ifdef CATCH2_MAJOR_VERSION_2 #include using namespace Catch; #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; using namespace Catch::Matchers; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "saxparsers/xtandemresultshandler.h" using namespace pappso; using namespace std; // using namespace pwiz::msdata; TEST_CASE("bighyperscore test suite.", "[bighyperscore]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: test bighyperscore ::..", "[bighyperscore]") { #if USEPAPPSOTREE == 1 // return 1; std::cout << std::endl << "..:: test all identified peptides in an XML tandem result file ::.." << std::endl; PrecisionPtr precision = PrecisionFactory::getDaltonInstance(0.02); // bool refine_spectrum_synthesis = false; QFileInfo fileinfo( "/gorgone/pappso/formation/Janvier2014/TD/xml_tandem/" "20120906_balliau_extract_1_A01_urnb-1.xml"); XtandemResultsHandler *parser = new XtandemResultsHandler(precision); QXmlSimpleReader simplereader; simplereader.setContentHandler(parser); simplereader.setErrorHandler(parser); qDebug() << "Read tandem XML result file '" << fileinfo.filePath() << "'"; QFile qfile(fileinfo.absoluteFilePath()); QXmlInputSource xmlInputSource(&qfile); if(simplereader.parse(xmlInputSource)) { } else { qDebug() << parser->errorString(); // throw PappsoException( // QObject::tr("error reading tandem XML result file :\n").append( // parser->errorString())); } qfile.close(); #endif // big hyperscore test : // check every X!Tandem match in an XML result file } } libpappsomspp-0.9.20/tests/test_fasta_reader.cpp000644 001750 001750 00000024110 14533323122 023222 0ustar00rusconirusconi000000 000000 // // File: test_hyperscore.cpp // Created by: Olivier Langella // Created on: 13/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [Fasta] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include // #include "common.h" #include "config.h" using namespace std; // using namespace pwiz::msdata; class FastaSeq : public pappso::FastaHandlerInterface { public: const QString & getDescription() const { return description; }; const QString & getSequence() const { return sequence; }; void setSequence(const QString &description_in, const QString &sequence_in) override { std::cout << std::endl << "begin description=" << description_in.toStdString(); std::cout << std::endl << "sequence=" << sequence_in.toStdString(); std::cout << std::endl << "end" << std::endl; description = description_in; sequence = sequence_in; }; private: QString description; QString sequence; }; TEST_CASE("Fasta reader test suite.", "[Fasta]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test Fasta reader ::..", "[Fasta]") { QFile fastaFile(QString(CMAKE_SOURCE_DIR) .append("/tests/data/asr1_digested_peptides.txt")); FastaSeq seq; pappso::FastaReader reader(seq); reader.parse(fastaFile); /* Spectrum spectrum_low_masses(spectrum_parent.applyCutOff(150)); if (! spectrum_low_masses.equals(sremove_low_masses, precision)) { std::cerr << "spectrum_low_masses() != tandem"<< std::endl; return 1; }*/ } SECTION("..:: Test Fasta file indexer ::..", "[FastaIndexer]") { std::cout << std::endl << "..:: Test Fasta file indexer ::.." << std::endl; QFileInfo file(QString(CMAKE_SOURCE_DIR) .append("/tests/data/asr1_digested_peptides.txt")); REQUIRE_NOTHROW( [&]() { pappso::FastaFileIndexer fasta_file_indexer(file); }()); pappso::FastaFileIndexer fasta_file_indexer(file); FastaSeq seq; fasta_file_indexer.getSequenceByIndex(seq, 0); fasta_file_indexer.getSequenceByIndex(seq, 2); REQUIRE_THROWS_AS(fasta_file_indexer.getSequenceByIndex(seq, 13), pappso::ExceptionOutOfRange); INFO(" ExceptionOutOfRange is OK "); try { fasta_file_indexer.getSequenceByIndex(seq, 12); REQUIRE( seq.getSequence() == "HNMLGGCPK HHHHHLFHHK HNMLGGCPKER YEEHLYER RIEAIPQIDK LTQSMAIIR " "AEISMLEGAVLDIRYGVSR AEISMLEGAVLDIR IAYSKDFETLK YEEHLYERDEGDK " "GLVQPTR " "YIAWPLQGWQATFGGGDHPPK FELGLEFPNLPYYIDGDVK " "TYLNGDHVTHPDFMLYDALDVVLYMDPMCLDAFPK MSPILGYWKIK DFETLKVDFLSK " "GLVQPTRLLLEYLEEK IKGLVQPTR MSPILGYWK IEAIPQIDK LLLEYLEEK " "YIADKHNMLGGCPK " "SSKYIAWPLQGWQATFGGGDHPPK SDLEVLFQGPLGSMAEEK " "FELGLEFPNLPYYIDGDVKLTQSMAIIR " "IEAIPQIDKYLK YGVSRIAYSK VDFLSKLPEMLK MFEDRLCHK LPEMLKMFEDR DEGDKWR " "LLLEYLEEKYEEHLYER LTQSMAIIRYIADK KFELGLEFPNLPYYIDGDVK " "ERAEISMLEGAVLDIR"); std::cout << std::endl << " getSequenceByIndex(seq, 12) is OK " << std::endl; } catch(pappso::ExceptionOutOfRange &error) { INFO(QString("ERROR: %1").arg(error.qwhat()).toStdString()); throw error; } INFO(" getSequenceByIndex(seq, 2)"); fasta_file_indexer.getSequenceByIndex(seq, 2); } #if USEPAPPSOTREE == 1 SECTION("..:: Test Fasta big file indexer ::..", "[FastaBigIndexer]") { FastaSeq seq; std::cout << std::endl << "..:: Test Fasta big file indexer ::.." << std::endl; QFileInfo file2("/gorgone/pappso/moulon/database/Genome_Z_mays_5a.fasta"); pappso::FastaFileIndexer big_fasta_file_indexer(file2); big_fasta_file_indexer.getSequenceByIndex(seq, 12); std::cout << std::endl << seq.getDescription().toStdString() << std::endl; // GRMZM2G147579_P01 // GRMZM2G147579_P01 NP_001159186 hypothetical protein LOC100304271 // seq=translation; coord=5:217415249..217417029:-1; // parent_transcript=GRMZM2G147579_T01; parent_gene=GRMZM2G147579 REQUIRE(seq.getDescription() == "GRMZM2G147579_P01 NP_001159186 hypothetical protein LOC100304271 " "seq=translation; coord=5:217415249..217417029:-1; " "parent_transcript=GRMZM2G147579_T01; parent_gene=GRMZM2G147579"); } #endif SECTION("..:: Test fuzzy fasta file indexer ::..", "[FastaFuzzyIndexer]") { FastaSeq seq; QFileInfo fuzzy_file( QString(CMAKE_SOURCE_DIR).append("/tests/data/fuzzy.fasta")); pappso::FastaFileIndexer fuzzy_fasta_file_indexer(fuzzy_file); fuzzy_fasta_file_indexer.getSequenceByIndex(seq, 0); INFO("seq.getDescription().toStdString() "); // GRMZM2G147579_P01 // GRMZM2G147579_P01 NP_001159186 hypothetical protein LOC100304271 // seq=translation; coord=5:217415249..217417029:-1; // parent_transcript=GRMZM2G147579_T01; parent_gene=GRMZM2G147579 REQUIRE(seq.getDescription() == "YGR254W "); // YGR254W fuzzy_fasta_file_indexer.getSequenceByIndex(seq, 2); std::cout << std::endl << seq.getDescription().toStdString() << std::endl; // GRMZM2G147579_P01 // GRMZM2G147579_P01 NP_001159186 hypothetical protein LOC100304271 // seq=translation; coord=5:217415249..217417029:-1; // parent_transcript=GRMZM2G147579_T01; parent_gene=GRMZM2G147579 REQUIRE(seq.getDescription() == "YGR254Wb"); // YGR254Wb /* QFileInfo fuzzy_macos_file( QString(CMAKE_SOURCE_DIR).append("/test/data/fuzzy_macos.fasta")); pappso::FastaFileIndexer fuzzy_macos_fasta_file_indexer(fuzzy_macos_file); fuzzy_macos_fasta_file_indexer.getSequenceByIndex(seq, 0); std::cout << std::endl << "sequence0: " << seq.getDescription().toStdString() << std::endl; // GRMZM2G147579_P01 // GRMZM2G147579_P01 NP_001159186 hypothetical protein LOC100304271 // seq=translation; coord=5:217415249..217417029:-1; // parent_transcript=GRMZM2G147579_T01; parent_gene=GRMZM2G147579 if(seq.getDescription() != "YGR254W ") // YGR254W { cerr << "sequence 0 in fuzzy_macos.fasta is not OK seq.getDescription() != " "YGR254W " << seq.getDescription().toStdString() << std::std::std::std::endl; return 1; } fuzzy_macos_fasta_file_indexer.getSequenceByIndex(seq, 2); std::cout << std::endl << "sequence2: "<< seq.getDescription().toStdString() << std::endl; // GRMZM2G147579_P01 // GRMZM2G147579_P01 NP_001159186 hypothetical protein LOC100304271 // seq=translation; coord=5:217415249..217417029:-1; // parent_transcript=GRMZM2G147579_T01; parent_gene=GRMZM2G147579 if(seq.getDescription() != "YGR254Wb") // YGR254Wb { cerr << "sequence 2 in fuzzy_macos.fasta is not OK seq.getDescription() != " "YGR254Wb " << seq.getDescription().toStdString() << std::endl; return 1; }*/ } } libpappsomspp-0.9.20/tests/test_hyperscore.cpp000644 001750 001750 00000024242 14533323122 022773 0ustar00rusconirusconi000000 000000 // // File: test_hyperscore.cpp // Created by: Olivier Langella // Created on: 13/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warrantyo f * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [hyperscore] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "common.h" #include "config.h" using namespace pappso; using namespace std; // using namespace pwiz::msdata; TEST_CASE("Hyperscore test suite.", "[hyperscore]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: readMgf ::..", "[hyperscore]") { std::cout << std::endl << "..:: readMgf ::.." << std::endl; bool refine_spectrum_synthesis = false; MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR) .append("/tests/data/peaklist_15046_simple_xt.mgf")); Peptide peptide("AIADGSLLDLLR"); PeptideSp peptide_sp(peptide.makePeptideSp()); // peptide_sp.get()->addAaModification(AaModification::getInstance("MOD:00397"), // 0); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; PrecisionPtr precision = PrecisionFactory::getDaltonInstance(0.02); std::list ion_list; ion_list.push_back(PeptideIon::y); ion_list.push_back(PeptideIon::b); std::cout << "spectrum_simple size " << spectrum_simple.size() << std::endl; qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; XtandemHyperscore hyperscore_withxtspectrum(spectrum_simple, peptide_sp, 2, precision, ion_list, refine_spectrum_synthesis); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; std::cout << "spectrum_simple " << peptide.getSequence().toStdString() << " hyperscore=" << hyperscore_withxtspectrum.getHyperscore() << std::endl; float test_tandem = std::round(10 * hyperscore_withxtspectrum.getHyperscore()) / 10; REQUIRE(test_tandem == (float)33.5); // hyperscore="33.5" qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; refine_spectrum_synthesis = true; XtandemHyperscore hyperscore_model(spectrum_simple, peptide_sp, 2, precision, ion_list, refine_spectrum_synthesis); std::cout << "spectrum_simple with spectrum model " << peptide.getSequence().toStdString() << " hyperscore=" << hyperscore_model.getHyperscore() << std::endl; // hyperscore="35.4" test_tandem = round(10 * hyperscore_model.getHyperscore()) / 10; REQUIRE(test_tandem == (float)35.4); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; XtandemSpectrumProcess spectrum_process; spectrum_process.setMinimumMz(150); spectrum_process.setNmostIntense(100); spectrum_process.setDynamicRange(100); // 20120906_balliau_extract_1_A01_urnb-1 // http://pappso.inra.fr/protic/proticprod/angular/#/peptide_hits/947252 // 35.400 // pwiz::msdata::MSDataFile // dataFile("/home/langella/developpement/git/pappsomspp/test/data/peaklist_15046.mgf"); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; MassSpectrum spectrum = spectrum_process.process( readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")), 628.86414, 2); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); /* * * */ // spectrum.applyCutOff(150); // spectrum_temp.takeNmostIntense(50,spectrum); std::cout << "spectrum size " << spectrum.size() << std::endl; refine_spectrum_synthesis = false; XtandemHyperscore hyperscore(spectrum, peptide.makePeptideSp(), 2, precision, ion_list, refine_spectrum_synthesis); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; std::cout << "peptide " << peptide.getSequence().toStdString() << " hyperscore=" << hyperscore.getHyperscore() << std::endl; // SUCCESS qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; // msconvert // /gorgone/pappso/formation/Janvier2014/TD/mzXML/20120906_balliau_extract_1_A01_urnb-1.mzXML // --filter "scanNumber 2016" --mgf MassSpectrum mgf = readMgf(QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_2016.mgf")); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; spectrum = spectrum_process.process(mgf, 679.467, 3); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); refine_spectrum_synthesis = true; Peptide pep("EDKPQPPPEGR"); PrecisionPtr precisionb = PrecisionFactory::getDaltonInstance(0.02); XtandemHyperscore hyperscoreb(spectrum, pep.makePeptideSp(), 2, precisionb, ion_list, refine_spectrum_synthesis); qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; std::cout << "peptide " << pep.getSequence().toStdString() << " hyperscore=" << hyperscoreb.getHyperscore() << std::endl; qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"; // match ion ED b 245.077, pi=15 for X!Tandem //"ED" 245.077 1 intensity: 20.155 Pi= 15 sum= 448.197 // Spectrum::getHyperscore peak match ! 245.046 -0.031235 // 15968 // msconvert // /gorgone/pappso/formation/Janvier2014/TD/mzXML/20120906_balliau_extract_1_A01_urnb-1.mzXML // --filter "scanNumber 15968" --mgf spectrum = readMgf(QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_15968.mgf")); FilterResampleKeepGreater(150).filter(spectrum); refine_spectrum_synthesis = true; // spectrum.debugPrintValues(); Peptide pep15968("EITLGFVDLLR"); XtandemSpectrumProcess xt_spectrum_process; xt_spectrum_process.setExcludeParent(true); xt_spectrum_process.setDynamicRange(100); xt_spectrum_process.setNmostIntense(100); // spectrum = spectrum.removeParent(pep15968.makePeptideSp(), 2, 2, // 2).takeNmostIntense(100).applyDynamicRange(100); spectrum = xt_spectrum_process.process(spectrum, 638.36934732588, 2); XtandemHyperscore hyperscore15968(spectrum, pep15968.makePeptideSp(), 2, precisionb, ion_list, refine_spectrum_synthesis); std::cout << "peptide " << pep15968.getSequence().toStdString() << " hyperscore15968=" << hyperscore15968.getHyperscore() << std::endl; std::cout << "peptide " << pep15968.getSequence().toStdString() << " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << std::endl; std::vector ion_vec; ion_vec.push_back(PeptideIon::y); ion_vec.push_back(PeptideIon::b); XtandemHyperscoreBis hyperscore15968bis( refine_spectrum_synthesis, precisionb, ion_vec); if(hyperscore15968bis.computeXtandemHyperscore(spectrum, pep15968, 2)) { std::cout << "XtandemHyperscoreBis peptide " << pep15968.getSequence().toStdString() << " hyperscore15968bis=" << hyperscore15968bis.getHyperscore() << std::endl; std::cout << "XtandemHyperscoreBis peptide " << pep15968.getSequence().toStdString() << " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << std::endl; } // FISLQLGQPPAMGSHM(MOD:00719)TDSNSR // Spectrum::getHyperscore "b" itmap->second 3 6 // Spectrum::getHyperscore "y" itmap->second 10 3628800 } } libpappsomspp-0.9.20/tests/test_isotope_with_spectrum.cpp000644 001750 001750 00000012260 14533323122 025244 0ustar00rusconirusconi000000 000000 // // File: test_isotope_with_spectrum.cpp // Created by: Olivier Langella // Created on: 13/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [spectrumisotope] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include "config.h" #include "common.h" using namespace pappso; using namespace std; TEST_CASE("Isotope with spectrum test suite.", "[spectrumisotope]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: MassSpectrum ::..", "[spectrumisotope]") { // 20120906_balliau_extract_1_A01_urnb-1 // http://pappso.inra.fr/protic/proticprod/angular/#/peptide_hits/947252 MassSpectrum spectrum = readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")); std::cout << "spectrum size:" << spectrum.size() << std::endl; Peptide peptide("AIADGSLLDLLR"); std::list cid_ion = PeptideFragmentIonListBase::getCIDionList(); PeptideFragmentIonListBase frag_cid(peptide.makePeptideSp(), cid_ion); PeptideFragmentIonSp pep_frag_ion_sp = frag_cid.getPeptideFragmentIonSp(PeptideIon::y, 8); PeptideNaturalIsotopeList isotopeListFrag(pep_frag_ion_sp); std::map map_isotope_number = isotopeListFrag.getIntensityRatioPerIsotopeNumber(); std::map map_isotope_number2real( map_isotope_number); // iterate through the m/z-intensity pairs // for (vector::const_iterator it=pairs.begin(), // end=pairs.end(); it!=end; ++it) for(auto peak : spectrum) { for(auto isotope : isotopeListFrag) { if(MzRange(isotope.get()->getMz(1), PrecisionFactory::getPpmInstance(100)) .contains(peak.x)) { std::cout << std::endl << isotope.get()->getIsotopeNumber() << "..:: " << isotope.get()->getFormula(1).toStdString() << " mz1=" << isotope.get()->getMz(1) << " ratio=" << isotope.get()->getIntensityRatio(1) << " ::.." << std::endl; std::cout << " real mz=" << peak.x << " real intensity" << peak.y << std::endl; } } } map_isotope_number = isotopeListFrag.getIntensityRatioPerIsotopeNumber(); std::cout << "isotope levels" << std::endl; for(unsigned int i = 0; i < map_isotope_number.size(); i++) { std::cout << "frag isotope " << i << " " << map_isotope_number[i] << std::endl; } /* 0..:: C39H70O11N11S0 C13(0) H2(0) O17(0) O18(0) N15(0) S34(0) mz1=886.536 ratio=0.599391 ::.. 7: real mz=886.535 real intensity75443.3 7: 7: 1..:: C39H70O11N11S0 C13(1) H2(0) O17(0) O18(0) N15(0) S34(0) mz1=887.539 ratio=0.261863 ::.. 7: real mz=887.538 real intensity41018.6 7: 7: 1..:: C39H70O11N11S0 C13(0) H2(1) O17(0) O18(0) N15(0) S34(0) mz1=887.542 ratio=0.00653545 ::.. 7: real mz=887.538 real intensity41018.6 7: 7: 1..:: C39H70O11N11S0 C13(0) H2(0) O17(0) O18(0) N15(1) S34(0) mz1=887.533 ratio=0.02424 ::.. 7: real mz=887.538 real intensity41018.6 */ /* 0..:: C39H70O11N11S0 C13(0) H2(0) O17(0) O18(0) N15(0) S34(0) mz1=886.536 ratio=0.599391 ::.. 7: real mz=886.535 real intensity75443.3 7: 7: 1..:: C39H70O11N11S0 C13(1) H2(0) O17(0) O18(0) N15(0) S34(0) mz1=887.539 ratio=0.261863 ::.. 7: real mz=887.538 real intensity41018.6 7: 7: 1..:: C39H70O11N11S0 C13(0) H2(1) O17(0) O18(0) N15(0) S34(0) mz1=887.542 ratio=0.00653545 ::.. 7: real mz=887.538 real intensity41018.6 7: 7: 1..:: C39H70O11N11S0 C13(0) H2(0) O17(0) O18(0) N15(1) S34(0) mz1=887.533 ratio=0.02424 ::.. 7: real mz=887.538 real intensity41018.6 */ // SUCCESS } } libpappsomspp-0.9.20/tests/test_msrunalignment.cpp000644 001750 001750 00000020562 14533323122 023654 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2019 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [alignment] -s // cmake .. -DCMAKE_BUILD_TYPE=Debug -DMAKE_TEST=1 -DUSEPAPPSOTREE=1 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include // #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "common.h" using namespace std; void writeTrace(const QString &filename, const pappso::Trace &trace) { QFile file(filename); qDebug() << QFileInfo(filename).absoluteFilePath(); file.open(QIODevice::WriteOnly); QTextStream textstream(&file); TsvOutputStream writer(textstream); for(auto &data_point : trace) { writer.writeCell(data_point.x); writer.writeCell(data_point.y); writer.writeLine(); } writer.close(); } class PeptideTableHandler : public OdsDocHandlerInterface { public: PeptideTableHandler(pappso::MsRunRetentionTime &rt1, pappso::MsRunRetentionTime &rt2) : m_rt1(rt1), m_rt2(rt2) { qDebug(); } /** * callback that indicates the begining of a data sheet. Override it in * order to retrieve information about the current data sheet. * */ virtual void startSheet(const QString &sheet_name [[maybe_unused]]) override { qDebug(); }; /** * callback that indicates the end of the current data sheet. Override it if * needed */ virtual void endSheet() override { qDebug() << "endSheet"; }; /** * callback that indicates a new line start. Override it if needed. */ virtual void startLine() override { qDebug() << m_sample; if(m_sample == "20120906_balliau_extract_1_A01_urnb-1") { m_rt1.addPeptideAsSeamark(m_peptideId, m_scan - 1); } if(m_sample == "20120906_balliau_extract_1_A02_urzb-1") { m_rt2.addPeptideAsSeamark(m_peptideId, m_scan - 1); } m_peptideId = ""; m_sample = ""; m_scan = 0; m_sequenceLi = ""; qDebug(); }; /** * callback that indicates a line ending. Override it if needed. */ virtual void endLine() override { qDebug() << "() _is_title=" << _is_title; m_col = 0; if(!_is_title) { } _is_title = false; qDebug() << " _is_title = " << _is_title; }; /** * callback that report the content of the current cell in a dedicated Cell * object. Override it if you need to retrieve cell content. */ virtual void setCell(const OdsCell &cell) override { qDebug() << m_col; if(_is_title) return; m_col++; // Peptide ID,sample,scan,Sequence (top) if(m_col == 1) { if(!cell.isString()) return; m_peptideId = cell.getStringValue(); } if(m_col == 2) { if(!cell.isString()) return; m_sample = cell.getStringValue(); } if(m_col == 3) { if(!cell.isDouble()) return; m_scan = (std::size_t)cell.getDoubleValue(); } if(m_col == 4) { if(!cell.isString()) return; m_sequenceLi = cell.getStringValue(); } qDebug(); }; /** * callback that report the end of the ODS document. Override it if you need * to know that reading is finished. */ virtual void endDocument() override { qDebug(); }; private: bool _is_title = true; std::size_t m_col; pappso::MsRunRetentionTime &m_rt1; pappso::MsRunRetentionTime &m_rt2; QString m_peptideId; QString m_sample; std::size_t m_scan; QString m_sequenceLi; }; TEST_CASE("MSrun alignment test suite.", "[alignment]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test MSrun alignment ::..", "[alignment]") { QTime timer; #if USEPAPPSOTREE == 1 std::cout << std::endl << "..:: Test MSrun alignment starts ::.." << std::endl; pappso::MsFileAccessor file_access_A01( "/gorgone/pappso/data_extraction_pappso/mzXML/" //"/home/langella/data1/mzxml/" "20120906_balliau_extract_1_A01_urnb-1.mzXML", "runa1"); pappso::MsRunReaderSPtr msrunA01 = file_access_A01.getMsRunReaderSPtrByRunId("", "runa01"); WARN("reading 20120906_balliau_extract_1_A01_urnb ::.."); pappso::MsRunRetentionTime rt_msrunA01(msrunA01); pappso::MsFileAccessor file_access_A02( "/gorgone/pappso/data_extraction_pappso/mzXML/" //"/home/langella/data1/mzxml/" "20120906_balliau_extract_1_A02_urzb-1.mzXML", "runa1"); pappso::MsRunReaderSPtr msrunA02 = file_access_A02.getMsRunReaderSPtrByRunId("", "runa02"); WARN("..:: reading 20120906_balliau_extract_1_A02_urzb ::.."); pappso::MsRunRetentionTime rt_msrunA02(msrunA02); rt_msrunA02.setMs2MedianFilter(pappso::FilterMorphoMedian(10)); rt_msrunA02.setMs2MeanFilter(pappso::FilterMorphoMean(15)); rt_msrunA02.setMs1MeanFilter(pappso::FilterMorphoMean(1)); QFile realfile(QString(CMAKE_SOURCE_DIR) .append("/tests/data/alignment/peptide_table.ods")); PeptideTableHandler handler_rt(rt_msrunA01, rt_msrunA02); OdsDocReader realreader_prm(handler_rt); // realreader_prm.setSeparator(TsvSeparator::tab); WARN("..:: reading peptide table ::.."); REQUIRE_NOTHROW(realreader_prm.parse(&realfile)); realfile.close(); rt_msrunA01.computeSeamarks(); REQUIRE(rt_msrunA01.getSeamarks().size() == 5227); rt_msrunA02.computeSeamarks(); REQUIRE(rt_msrunA02.getSeamarks().size() == 5342); qDebug() << rt_msrunA01.getSeamarks()[0].entityHash << " " << rt_msrunA01.getSeamarks()[0].retentionTime << " | " << rt_msrunA02.getSeamarks()[0].entityHash << " " << rt_msrunA02.getSeamarks()[0].retentionTime; pappso::Trace rt_align; REQUIRE_NOTHROW(rt_align = rt_msrunA02.align(rt_msrunA01)); pappso::Trace common_delta_rt = rt_msrunA02.getCommonDeltaRt(rt_msrunA01.getSeamarks()); writeTrace("delta_rt.tsv", common_delta_rt); writeTrace("rt_align.tsv", rt_align); std::cout << std::endl << "rt_msrunA02 seamarks in common with rt_msrunA01 " << common_delta_rt.size() << std::endl; REQUIRE(common_delta_rt.size() == 4251); /* for(auto rt : rt_align) { // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "() " << // rt.x // << " " << rt.y; } */ qDebug() << " first=" << rt_msrunA01.getMs1RetentionTimeVector().front() << " last=" << rt_msrunA01.getMs1RetentionTimeVector().back(); std::cerr << "corrected values " << rt_msrunA02.getNumberOfCorrectedValues() << " " << std::endl; REQUIRE( compareTextFiles("rt_align.tsv", QString(CMAKE_SOURCE_DIR) .append("/tests/data/alignment/result_rt_align.tsv"))); double aligned = rt_msrunA02.translateOriginal2AlignedRetentionTime(1200); REQUIRE(rt_msrunA02.translateAligned2OriginalRetentionTime(aligned) == 1200); #endif } } libpappsomspp-0.9.20/tests/test_peptide.cpp000644 001750 001750 00000017666 14533323122 022256 0ustar00rusconirusconi000000 000000 // // File: test_peptide.cpp // Created by: Olivier Langella // Created on: 7/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 6,6" // ./tests/catch2-only-tests [Peptide] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("Test Peptide", "[Peptide]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: Test ProForma parser ::..", "[proforma]") { PeptideSp peptide_from_str = PeptideProFormaParser::parseString( "C[MOD:00397][MOD:01160]C[MOD:00397]AADDKEAC[MOD:00397]FAVEGPK"); REQUIRE(peptide_from_str.get()->getMass() == Approx(1909.764470427)); PeptideSp peptide_from_str2 = PeptideProFormaParser::parseString( "C[MOD:00397][MOD:01160]C[MOD:00397]AADDK[-18.02]EAC[MOD:00397]FAVEGPK"); /*REQUIRE(peptide_from_str2.get()->toProForma().toStdString() == "C[MOD:00397][MOD:01160]C[MOD:00397]AADDK[-18.0200]EAC[MOD:00397]" "FAVEGPK");*/ REQUIRE(peptide_from_str2.get()->getMass() == Approx(1891.744470427)); } SECTION("..:: Test Peptide ::..", "[Peptide]") { std::cout << std::endl << "..:: peptide init ::.." << std::endl; Peptide peptide("LA"); std::cout << std::endl << "..:: peptide LI ::.." << std::endl; std::cout << peptide.getSequence().toStdString() << " " << peptide.getSequenceLi().toStdString() << std::endl; MzRange mz_range(peptide.getMass(), PrecisionFactory::getPpmInstance(10)); REQUIRE(mz_range.contains(Aa('L').getMass() + Aa('A').getMass() + MASSH2O)); // 202.13179 // http://db.systemsbiology.net:8080/proteomicsToolkit/FragIonServlet?sequence=LA&massType=monoRB&charge=1&bCB=1&yCB=1&nterm=0.0&cterm=0.0&addModifType=&addModifVal= MzRange mz_range_very_precise(peptide.getMass(), PrecisionFactory::getPpmInstance(0.5)); REQUIRE(mz_range_very_precise.contains(202.13179)); Peptide peptide2("CCAADDKEACFAVEGPK"); // 1756.73395 MzRange mz_range_very_preciseb(peptide2.getMz(1), PrecisionFactory::getPpmInstance(0.5)); REQUIRE(mz_range_very_preciseb.contains(1756.73395)); /* */ pappso::AaModificationP aaModcarba = AaModification::getInstance("MOD:00397"); /* pappso::AaModificationP aaModcarbab = AaModification::getInstance("MOD:00397"); AaModificationP met_oxy = AaModification::getInstance("MOD:00719");*/ peptide2.addAaModification(aaModcarba, 0); peptide2.addAaModification(aaModcarba, 1); peptide2.addAaModification(aaModcarba, 9); peptide2.addAaModification(AaModification::getInstance("MOD:01160"), 0); std::cerr << peptide2.getFormula(1).toStdString().c_str() << std::endl; MzRange mz_range2(peptide2.getMz(1), PrecisionFactory::getPpmInstance(10)); REQUIRE(mz_range2.contains(1910.7722)); PeptideSp peptide_from_str = PeptideStrParser::parseString( "C(MOD:00397+MOD:01160)C(MOD:00397)AADDKEAC(MOD:00397)FAVEGPK"); REQUIRE(peptide_from_str.get()->getMass() == peptide2.getMass()); PeptideSp peptide_from_str2 = PeptideStrParser::parseString( "C(Carbamidomethyl+MOD:01160)C(MOD:00397)AADDKEAC(57.021464)FAVEGPK"); PeptideSp peptide_from_str3 = PeptideStrParser::parseString( "C(Carbamidomethyl+MOD:01160)C(397)AADDKEAC(57.021464)FAVEGPK"); REQUIRE(peptide_from_str2.get()->getMass() == peptide_from_str3.get()->getMass()); // SUCCESS Peptide copy_str2(*peptide_from_str2.get()); copy_str2.rotate(); std::cerr << copy_str2.toAbsoluteString().toStdString() << std::endl; REQUIRE(peptide_from_str2.get()->getMass() == copy_str2.getMass()); // testing isotope labels //[Term] // id: MOD:00582 // name: 6x(13)C,2x(15)N labeled L-lysine std::cout << std::endl << "..:: Test peptide isotope labels::.." << std::endl; PeptideSp peptide_normal = PeptideStrParser::parseString("CCAALDDKEACFAVEGPK"); PeptideSp peptide_lys_label = PeptideStrParser::parseString("CCAAL(MOD:00582)DDKEACFAVEGPK"); REQUIRE(peptide_normal.get()->getNumberOfAtom(AtomIsotopeSurvey::C) == peptide_lys_label.get()->getNumberOfAtom(AtomIsotopeSurvey::C)); REQUIRE(peptide_normal.get()->getNumberOfIsotope(Isotope::C13) == 0); REQUIRE(peptide_lys_label.get()->getNumberOfIsotope(Isotope::C13) == 6); // xref: DiffMono: "8.014199" MzRange mz_range_lys(8.014199, PrecisionFactory::getPpmInstance(10)); REQUIRE(mz_range_lys.contains(peptide_lys_label.get()->getMz(1) - peptide_normal.get()->getMz(1))); REQUIRE_FALSE(peptide_normal.get()->toString().toStdString() == peptide_lys_label.get()->toString().toStdString()); REQUIRE_FALSE(peptide_normal.get()->toString().toStdString() < peptide_lys_label.get()->toString().toStdString()); PeptideSp peptide_lys_label_bis = PeptideStrParser::parseString("CCAAL(MOD:00582)DDKEACFAVEGPK"); REQUIRE(peptide_lys_label_bis.get()->toString().toStdString() == peptide_lys_label.get()->toString().toStdString()); std::cout << std::endl << "..:: peptide palindrome ::.." << std::endl; Peptide peptide_pal_a("ALA"); REQUIRE(peptide_pal_a.isPalindrome()); REQUIRE_FALSE(peptide_normal.get()->isPalindrome()); std::cout << std::endl << "..:: peptide dimethyl ::.." << std::endl; //"Q(internal:Nter_hydrolytic_cleavage_H,MOD:00429)SLPSLSS(MOD:00696)FLNR(internal:Cter_hydrolytic_cleavage_HO)" Peptide peptide_dimethyl("QSLPSLSSFLNR"); pappso::AaModificationP aaModDimethyl = AaModification::getInstance("MOD:00429"); pappso::AaModificationP aaModDimethyl2 = AaModification::getInstance("MOD:00696"); peptide_dimethyl.addAaModification(aaModDimethyl, 0); peptide_dimethyl.addAaModification(aaModDimethyl2, 7); std::cout << "Before " << peptide_dimethyl.toAbsoluteString().toStdString(); std::cout << std::endl << "remove AaModif" << std::endl; peptide_dimethyl.removeAaModification(aaModDimethyl); REQUIRE( peptide_dimethyl.toAbsoluteString().toStdString() == "Q(internal:Nter_hydrolytic_cleavage_H)SLPSLSS(MOD:00696)FLNR(internal:" "Cter_hydrolytic_cleavage_HO)"); std::cout << "Finish " << peptide_dimethyl.toAbsoluteString().toStdString(); } } libpappsomspp-0.9.20/tests/test_tims_data_xic_chromatogram.cpp000644 001750 001750 00000011116 14533333502 026162 0ustar00rusconirusconi000000 000000 #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include #endif #include #include #include #include #include #include #include #include #include #include #include #include "config.h" using namespace pappso; using namespace std; TEST_CASE("Test tims XIC data extraction right form the SQLite db", "[timsXicDataSqliteDb]") { #if USEPAPPSOTREE == 1 // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); QString file_path_name = ""; // file_path_name = //"/gorgone/pappso/jouy/raw/2021_Tims_TOF/20211124_HeLa/" //"11-25-2021_1_HeLa200ng_2321.d/analysis.tdf"; file_path_name = "/gorgone/pappso/versions_logiciels_pappso/bruker/" "200ngHeLaPASEF_2min_compressed.d"; // file_path_name = //"/home/rusconi/devel/dataForMzml/bruker/20210126_HeLa.d/" //"1-26-2021_1_QC_HeLa10ng_826.d/analysis.tdf"; // file_path_name = //"/home/rusconi/devel/dataForMzml/bruker/2021_Tims_TOF/20211124_HeLa/" //"11-25-2021_1_HeLa200ng_2321.d/analysis.tdf"; qDebug() << "The file to use as a test base is: " << file_path_name; // When not in debug mode. std::cout << __FILE__ << ":" << __LINE__ << " The file to use as a test base is: " << file_path_name.toStdString(); SECTION("Test TIMS TIC chromatogram extractor") { INFO("Test the extraction from the SQLite database's Frames table"); pappso::MsFileAccessor accessor(file_path_name, "a1"); accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims); pappso::MsRunReaderSPtr p_msreader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); REQUIRE(p_msreader != nullptr); REQUIRE(accessor.getFileReaderType() == pappso::FileReaderType::tims); pappso::TimsMsRunReader *tims_reader = dynamic_cast(p_msreader.get()); REQUIRE(tims_reader != nullptr); if(tims_reader != nullptr) { Trace tic_chromatogram = tims_reader->getTicChromatogram(); REQUIRE(tic_chromatogram.size() != 0); qDebug().noquote() << "The TIC chromatogram has " << tic_chromatogram.size() << " points " << "and has the following points:\n" << tic_chromatogram.toString(); // When not in debug mode. std::cout << __FILE__ << ":" << __LINE__ << "The TIC chromatogram has " << tic_chromatogram.size() << " points and has the following points:\n" << tic_chromatogram.toString().toStdString(); } } SECTION("Test TIMS MS2 TIC chromatogram extractor") { INFO("Test the extraction from the SQLite database's Frames table"); pappso::MsFileAccessor accessor(file_path_name, "a1"); accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); pappso::MsRunReaderSPtr p_msreader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); REQUIRE(p_msreader != nullptr); REQUIRE(accessor.getFileReaderType() == pappso::FileReaderType::tims_ms2); pappso::TimsMsRunReaderMs2 *tims_reader = dynamic_cast(p_msreader.get()); REQUIRE(tims_reader != nullptr); if(tims_reader != nullptr) { Trace tic_chromatogram = tims_reader->getTicChromatogram(); REQUIRE(tic_chromatogram.size() != 0); qDebug().noquote() << "The TIC chromatogram has " << tic_chromatogram.size() << " points " << "and has the following points:\n" << tic_chromatogram.toString(); // When not in debug mode. std::cout << __FILE__ << ":" << __LINE__ << "The TIC chromatogram has " << tic_chromatogram.size() << " points and has the following points:\n" << tic_chromatogram.toString().toStdString(); } } #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TIC chromatogram extraction ::.." << std::endl; #endif } libpappsomspp-0.9.20/tests/test_timsframe.cpp000644 001750 001750 00000045604 14533333502 022607 0ustar00rusconirusconi000000 000000 // // File: test_timsframe.cpp // Created by: Olivier Langella // Created on: 12/4/2020 // /******************************************************************************* * Copyright (c) 2020 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [timsframe] -s // ./tests/catch2-only-tests [cubicsolver] -s // ./tests/catch2-only-tests [timsframe] -s -a #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" using namespace pappso; using namespace std; TEST_CASE("Test Cardano's cubic solver", "[cubicsolver]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); INFO("..:: Test Cardano's cubic solver begin ::.."); // OboPsiMod test; SECTION("Test cubic") { std::vector X; X.push_back(18); X.push_back(56); X.push_back(3); X.push_back(2); // REQUIRE(m[0].x == Approx(-0.32588)); InHousePolynomialSolverResult res; res = inHousePolynomialSolve(X); REQUIRE(res.type == CardanoResultCase::positived); // https://www.wolframalpha.com/widgets/view.jsp?id=578d50248844454e46e24e9ed230843d REQUIRE(res.x1 == Approx(-0.32588)); } SECTION("Test quadratic") { std::vector X; X.push_back(18); X.push_back(56); X.push_back(3); // X.push_back(2); // REQUIRE(m[0].x == Approx(-0.3271626093)); InHousePolynomialSolverResult res; res = inHousePolynomialSolve(X); REQUIRE(res.type == CardanoResultCase::quadratic); // https://www.wolframalpha.com/widgets/view.jsp?id=578d50248844454e46e24e9ed230843d REQUIRE(res.x1 == Approx(-0.3271626093)); } SECTION("Test line") { std::vector X; X.push_back(18); X.push_back(56); // X.push_back(3); // X.push_back(2); // REQUIRE(m[0].x == Approx(-0.3214285714)); InHousePolynomialSolverResult res; res = inHousePolynomialSolve(X); REQUIRE(res.type == CardanoResultCase::line); // https://www.wolframalpha.com/widgets/view.jsp?id=578d50248844454e46e24e9ed230843d REQUIRE(res.x1 == Approx(-0.3214285714)); } } TEST_CASE("Test tims frames", "[timsframe]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); INFO("..:: Test TIMS frame init begin ::.."); // OboPsiMod test; TimsFrameBase frame(1, 671); MzRange mz_range(1200.0001, PrecisionFactory::getPpmInstance(10)); SECTION("Test 1") { double temperature_correction = 77.0 * (25.4933665127396 - 25.59978165276) + (-3.7) * (26.2222755503081 - 27.6311281556638); temperature_correction = (double)1.0 + (temperature_correction / 1.0e6); frame.setMzCalibration(25.59978165276, 27.6311281556638, 0.2, 24864.0, 313.577620892277, 157424.07710945, 0.000338743021989553, 0.0, 0.0, 25.4933665127396, 26.2222755503081, 77.0, -3.7); frame.setTimsCalibration(2, 1, 670, 207.775676931964, 59.2526676368822, 33.0, 1, 0.0209889001473149, 131.440113097798, 12.9712317295887, 2558.71692505931); frame.setTime(2402.64305686123); frame.setMsMsType(0); quint32 index = frame.getMzCalibrationInterfaceSPtr().get()->getTofIndexFromMz( mz_range.getMz()); qDebug() << "index=" << index; double mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex(index); qDebug() << "mz=" << QString::number(mz, 'g', 10); REQUIRE(mz_range.contains(mz)); // 313792 mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex( (quint32)313793); qDebug() << " 313793 => mz=" << QString::number(mz, 'g', 10); mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex( (quint32)313792); REQUIRE(QString::number(mz, 'g', 10) == "1200.002299"); qDebug() << " 313792 => mz=" << QString::number(mz, 'g', 10); mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex( (quint32)313791); qDebug() << " 313791 => mz=" << QString::number(mz, 'g', 10); double one_over_k0 = frame.getOneOverK0Transformation(400); qDebug() << " 400 => one_over_k0=" << QString::number(one_over_k0, 'g', 10); std::size_t scan_num = frame.getScanNumFromOneOverK0(one_over_k0); REQUIRE(scan_num == 400); std::cout << std::endl << "..:: Test 1 OK ::.." << std::endl; } SECTION("Test 2") { std::cout << std::endl << "..:: second test, new calibration parameters ::.." << std::endl; frame.setMzCalibration(25.3072302808429, 25.3072302808429, 0.2, 24864.0, 313.577620892277, 157424.07710945, 0.000338743021989553, 0.0, 0.0, 25.4933665127396, 26.2222755503081, 77.0, -3.7); /* q.value(2).toDouble(), // MzCalibration.DigitizerTimebase q.value(3).toDouble(), // MzCalibration.DigitizerDelay q.value(4).toDouble(), // MzCalibration.C0 q.value(5).toDouble(), // MzCalibration.C1 q.value(6).toDouble(), // MzCalibration.C2 q.value(7).toDouble()); // MzCalibration.C3 */ frame.setTimsCalibration(2, 1, 1537, 179.152532325778, 90.4208212951646, 33.0, 1, 0.009221, 131.053614, 9.656516, 2095.24199); frame.setTime(1.7950832); frame.setMsMsType(0); std::size_t index = frame.getMzCalibrationInterfaceSPtr().get()->getTofIndexFromMz( mz_range.getMz()); qDebug() << "index=" << index; double mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex(index); qDebug() << "mz=" << QString::number(mz, 'g', 10); REQUIRE(mz_range.contains(mz)); // 313792 mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex( (quint32)313793); qDebug() << " 313793 => mz=" << QString::number(mz, 'g', 10); mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex( (quint32)313792); qDebug() << " 313792 => mz=" << QString::number(mz, 'g', 10); mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex( (quint32)313791); qDebug() << " 313791 => mz=" << QString::number(mz, 'g', 10); double one_over_k0 = frame.getOneOverK0Transformation(400); qDebug() << " 400 => one_over_k0=" << QString::number(one_over_k0, 'g', 10); std::size_t scan_num = frame.getScanNumFromOneOverK0(one_over_k0); REQUIRE(scan_num == 400); mz = frame.getMzCalibrationInterfaceSPtr().get()->getMzFromTofIndex( (quint32)375176); qDebug() << " 375176 => mz=" << QString::number(mz, 'g', 10); REQUIRE_FALSE(mz < 50.0); std::cout << std::endl << "..:: Test 2 OK ::.." << std::endl; } #if USEPAPPSOTREE == 1 SECTION("Test TIMS TDF parsing issue #61") { INFO("Test case ERROR reading TIMS frame 58581"); pappso::MsFileAccessor accessor( "/gorgone/pappso/versions_logiciels_pappso/bruker/" "200ngHeLaPASEF_2min_compressed.d", "a1"); accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); pappso::MsRunReaderSPtr p_msreader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); REQUIRE(p_msreader != nullptr); REQUIRE(accessor.getFileReaderType() == pappso::FileReaderType::tims_ms2); pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(p_msreader.get()); REQUIRE(tims2_reader != nullptr); if(tims2_reader != nullptr) { tims2_reader->setMs2BuiltinCentroid(true); tims2_reader->setMs2FilterCstSPtr(std::make_shared( FilterSuiteString("chargeDeconvolution|0.02dalton"))); } pappso::QualifiedMassSpectrum mass_spectrum; REQUIRE_NOTHROW(mass_spectrum = tims2_reader->qualifiedMassSpectrum(5001)); /* * 23: ..:: Test TIMS frame init begin ::.. 23: Test case ERROR reading TIMS frame 58581 23: ERROR reading TIMS frame 60575 TIMS binary file /home/langella/data1/bruker/ 23: 5-18-2021_1_robert_28_mic02-std_1354.d/analysis.tdf_bin: decompressed_size2 23: == ZSTD_CONTENTSIZE_ERROR, frame_length=265254592 */ REQUIRE_NOTHROW(mass_spectrum = tims2_reader->qualifiedMassSpectrum(6001)); REQUIRE_NOTHROW(mass_spectrum = tims2_reader->qualifiedMassSpectrum(6003)); REQUIRE_NOTHROW(mass_spectrum = tims2_reader->qualifiedMassSpectrum(6005)); REQUIRE_NOTHROW(mass_spectrum = tims2_reader->qualifiedMassSpectrum(6007)); REQUIRE_THROWS_AS(mass_spectrum = tims2_reader->qualifiedMassSpectrum(35460), pappso::ExceptionNotFound); } SECTION("Test TIMS TDF parsing") { INFO("Test case pappso::FileReaderType::tims_ms2 start"); pappso::MsFileAccessor accessor( "/gorgone/pappso/versions_logiciels_pappso/masschroq/donnees/" "PXD014777_maxquant_timstof/" "20180809_120min_200ms_WEHI25_brute20k_timsON_100ng_HYE124B_Slot1-8_1_" "894.d/analysis.tdf", "a1"); /* pappso::MsFileAccessor accessor( "/gorgone/pappso/fichiers_fabricants/Bruker/tims_doc/tdf-sdk/" "example_data/200ngHeLaPASEF_2min_compressed.d/" "analysis.tdf", "a1"); */ /* pappso::MsFileAccessor accessor( "/gorgone/pappso/fichiers_fabricants/Bruker/tims_doc/tdf-sdk/" "example_data/" "200ngHeLaPASEF_2min_compressed.d/analysis.tdf", "a1"); */ /* pappso::MsFileAccessor accessor( "/data/test_tdf_quality/2-3-2021_1_HeLa10ng_871.d/analysis.tdf", "a1"); */ accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims); pappso::MsRunReaderSPtr p_msreader_tims_ms1 = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); pappso::TimsMsRunReader *tims1_reader = dynamic_cast(p_msreader_tims_ms1.get()); REQUIRE_FALSE(p_msreader_tims_ms1.get() == nullptr); REQUIRE_FALSE(tims1_reader == nullptr); pappso::TimsDataSp timsdata_sp = tims1_reader->getTimsDataSPtr(); REQUIRE_NOTHROW(timsdata_sp.get()->getRawMsBySpectrumIndex(0)); REQUIRE_NOTHROW(timsdata_sp.get()->getRawMsBySpectrumIndex(1)); REQUIRE_NOTHROW(p_msreader_tims_ms1.get()->massSpectrumCstSPtr(0)); // REQUIRE_NOTHROW(p_msreader_tims_ms1.get()->massSpectrumCstSPtr(1000)); for(std::size_t i = 0; i < 1000; i++) { qDebug() << " size(" << (i) << ")=" << p_msreader_tims_ms1.get()->massSpectrumCstSPtr(i).get()->size(); } p_msreader_tims_ms1.get()->massSpectrumCstSPtr(53); p_msreader_tims_ms1.get()->massSpectrumCstSPtr(5000); // timsdata_sp.get()->getRawMsBySpectrumIndex(8207); REQUIRE_NOTHROW(p_msreader_tims_ms1.get()->massSpectrumCstSPtr(8207)); // 8206, frameId=9 scanNum=910 ERROR in // MzCalibrationModel1::getMzFromTofIndex m[0].y!= 0 REQUIRE_NOTHROW(p_msreader_tims_ms1.get()->massSpectrumCstSPtr(8206)); // scan_num=899 spectrum_index=899 REQUIRE_NOTHROW(p_msreader_tims_ms1.get()->massSpectrumCstSPtr(899)); accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims_ms2); pappso::MsRunReaderSPtr p_msreader = accessor.msRunReaderSPtr(accessor.getMsRunIds().front()); REQUIRE(p_msreader != nullptr); REQUIRE(accessor.getFileReaderType() == pappso::FileReaderType::tims_ms2); pappso::TimsMsRunReaderMs2 *tims2_reader = dynamic_cast(p_msreader.get()); REQUIRE(tims2_reader != nullptr); if(tims2_reader != nullptr) { tims2_reader->setMs2BuiltinCentroid(true); tims2_reader->setMs2FilterCstSPtr(std::make_shared( FilterSuiteString("chargeDeconvolution|0.02dalton"))); } pappso::QualifiedMassSpectrum mass_spectrum = tims2_reader->qualifiedMassSpectrum(7001); INFO("mass_spectrum.getMsLevel()=" << mass_spectrum.getMsLevel()); INFO("mass_spectrum.getPrecursorMz()=" << mass_spectrum.getPrecursorMz()); INFO("mass_spectrum.getMassSpectrumId().getSpectrumIndex()=" << mass_spectrum.getMassSpectrumId().getSpectrumIndex()); INFO(mass_spectrum.getMassSpectrumSPtr()->xValues().at(0)); REQUIRE_FALSE(mass_spectrum.getMassSpectrumCstSPtr().get()->back().x < 40.0); INFO("Test case pappso::FileReaderType::tims start"); accessor.setPreferredFileReaderType(pappso::MzFormat::brukerTims, pappso::FileReaderType::tims); class SpectrumCollectionHandler : public SpectrumCollectionHandlerInterface { public: virtual ~SpectrumCollectionHandler(){}; virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override { m_count++; if((m_count % 1000) == 0) { WARN("count " << m_count << " " << spectrum.getMassSpectrumId().getNativeId().toStdString() << " MSlevel=" << spectrum.getMsLevel()); if(spectrum.getMsLevel() == 1) { REQUIRE_FALSE(spectrum.getMassSpectrumCstSPtr() == nullptr); } if(spectrum.getMassSpectrumCstSPtr() != nullptr) { WARN(" size=" << spectrum.size()); } //<< " size=" << spectrum.toString().toStdString()); } }; virtual bool needPeakList() const override { return false; }; std::size_t m_count = 0; }; SpectrumCollectionHandler dummy_handler; Catch::Timer t; t.start(); WARN("reading all spectrum collection of file " << accessor.getFileName().toStdString()); dummy_handler.setNeedMsLevelPeakList(1, false); dummy_handler.setNeedMsLevelPeakList(2, false); // tims1_reader->readSpectrumCollectionByMsLevel(dummy_handler, 1); auto s = t.getElapsedSeconds(); WARN("reading time in second : " << s); // git hash 597d6a68062a45d5e3ccaaa8398598a62dc69043 reading time in second // : 1447.15 // git hash 7dc0806a4ca1fd0e92da97dcc44ac9b44c381d9f reading time in second // : 1445.65 // if we disable binary data reading : reading time in second : 1220.77 => // there is somehow room for performance enhancements // git hash 26c8053d4fcfae15b98c75b715d79cd615bf42e0 reading time in second // : 1440.25 // git hash 2d0d2a4edcfcef583bc60bd5b14e6b0df1505a02 reading time in second // : 1447.3 // => avoiding sql query is not really efficient } /* std::cout << std::endl << mass_spectrum.getMassSpectrumCstSPtr() .get() ->toString() .toStdString() .c_str() << std::endl; */ /* * 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@513, pappso::TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid(): 375176 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@518, pappso::TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid(): 99944.2 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@253, pappso::TimsFrameBase::getMzFromTof(): m.length()= 3 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@520, pappso::TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid(): 41.3832 polynome : -101811 2523.58 -0.002221 313.267 => m1= 42.058 */ /* 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@513, pappso::TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid(): 374144 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@518, pappso::TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid(): 99692.8 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@192, pappso::TimsFrameBase::getMzFromTof(): 0 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@253, pappso::TimsFrameBase::getMzFromTof(): m.length()= 2 22: /home/langella/developpement/git/pappsomspp/src/pappsomspp/vendors/tims/timsframebase.cpp@520, pappso::TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid(): 1554.74 polynome : -100327 2520.37 0.000338744 => m1= 1584.54 */ #elif USEPAPPSOTREE == 1 std::cout << std::endl << "..:: NO test TIMS TIC chromatogram extraction ::.." << std::endl; #endif } libpappsomspp-0.9.20/tests/test_fragmentationcid.cpp000644 001750 001750 00000007645 14533453625 024152 0ustar00rusconirusconi000000 000000 // // File: test_fragmentationcid.cpp // Created by: Olivier Langella // Created on: 10/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [fragmentationcid] -s #ifdef CATCH2_MAJOR_VERSION_2 #include using namespace Catch; #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; using namespace Catch::Matchers; #endif #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("fragmentationcid test suite.", "[fragmentationcid]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: test fragmentationcid ::..", "[fragmentationcid]") { std::cout << std::endl << "..:: test ion direction ::.." << std::endl; REQUIRE(getPeptideIonDirection(PeptideIon::b) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::bstar) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::bo) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::a) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::astar) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::ao) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::bp) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::c) == PeptideDirection::Nter); REQUIRE(getPeptideIonDirection(PeptideIon::y) == PeptideDirection::Cter); REQUIRE(getPeptideIonDirection(PeptideIon::ystar) == PeptideDirection::Cter); REQUIRE(getPeptideIonDirection(PeptideIon::yo) == PeptideDirection::Cter); REQUIRE(getPeptideIonDirection(PeptideIon::z) == PeptideDirection::Cter); REQUIRE(getPeptideIonDirection(PeptideIon::yp) == PeptideDirection::Cter); REQUIRE(getPeptideIonDirection(PeptideIon::x) == PeptideDirection::Cter); INFO("..:: peptide fragment init ::.."); // http://proteus.moulon.inra.fr/w2dpage/proticdb/angular/#/peptide_hits/10053478 Peptide peptide("DSTIPDKQITASSFYK"); std::list cid_ion = PeptideFragmentIonListBase::getCIDionList(); PeptideFragmentIonListBase frag_cid(peptide.makePeptideSp(), cid_ion); std::list::const_iterator it = frag_cid.begin(); while(it != frag_cid.end()) { // unsigned int size = it->get()->size(); QString name = it->get()->getPeptideIonName(); std::cout << it->get()->getSequence().toStdString() << " " << it->get()->getPeptideIonName().toStdString() << " " << it->get()->getMz(1) << " " << it->get()->getFormula(1).toStdString() << std::endl; it++; } } } libpappsomspp-0.9.20/tests/test_aa.cpp000644 001750 001750 00000033273 14533472161 021205 0ustar00rusconirusconi000000 000000 // // File: test_aa.cpp // Created by: Olivier Langella // Created on: 7/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [Aa] -s // ./tests/catch2-only-tests [AaCode] -s // ./tests/catch2-only-tests [AaStringCodec] -s #ifdef CATCH2_MAJOR_VERSION_2 #include using namespace Catch; #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; using namespace Catch::Matchers; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("Amino Acid test suite.", "[Aa]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: test PSI-MOD removal ::..", "[Aa]") { //%S << std::endl << "..:: AA init ::.." << std::endl; // OboPsiMod test; Aa leucine('L'); REQUIRE(leucine.getMass() == Catch::Detail::Approx(113.084063979)); leucine.addAaModification( AaModification::getInstanceRemovalAccessionByAaLetter('L')); REQUIRE(leucine.getMass() == Catch::Detail::Approx(0.0)); leucine.addAaModification( AaModification::getInstanceInsertionAccessionByAaLetter('M')); REQUIRE(leucine.getMass() == Catch::Detail::Approx(131.0404850886)); REQUIRE(leucine.toProForma().toStdString() == "L[MOD:00022][MOD:01641]"); REQUIRE(leucine.getTotalModificationMass() == Catch::Detail::Approx(17.9564211096)); leucine.removeAllButInternalModification(); REQUIRE(leucine.toProForma().toStdString() == "L"); } SECTION("..:: AA init ::..", "[Aa]") { //%S << std::endl << "..:: AA init ::.." << std::endl; // OboPsiMod test; Aa leucine('L'); MzRange mz_range(leucine.getMass(), PrecisionFactory::getPpmInstance(1)); std::cout << "leucine: " << QString::number(leucine.getMass(), 'g', 10).toStdString() << std::endl; std::cout << "leucine number of N15 : " << leucine.getNumberOfIsotope(Isotope::N15) << std::endl; std::cout << mz_range.toString().toStdString() << std::endl; /* if(!mz_range.contains(pappso_double(131.094635) - MASSH2O)) { std::cerr << QString::number(leucine.getMass(), 'g', 10).toStdString() << " != 131.094635 - H2O"; return 1; } */ REQUIRE(mz_range.contains(pappso_double(131.094635) - MASSH2O)); Aa alanine('A'); /* if(!MzRange(alanine.getMass(), PrecisionFactory::getPpmInstance(1)) .contains(pappso_double(89.047676 - MASSH2O))) { std::cerr << QString::number(alanine.getMass(), 'g', 10).toStdString() << " != " << (89.047676 - MASSH2O); return 1; } */ REQUIRE(MzRange(alanine.getMass(), PrecisionFactory::getPpmInstance(1)) .contains(pappso_double(89.047676 - MASSH2O))); alanine.addAaModification( AaModification::getInstanceCustomizedMod(18.022316354654)); // SUCCESS // qDebug() << alanine.getModificationList(); alanine.addAaModification(AaModification::getInstance("MOD:00397")); // alanine.addAaModification(AaModification::getInstance("fdgMOD:00397")); FilterOboPsiModSink term_list; FilterOboPsiModTermLabel filter_label(term_list, QString("Carba*")); OboPsiMod psimod(filter_label); std::cout << "term_list.size= " << term_list.size() << std::endl; REQUIRE(term_list.size() == 12); MzRange range(pappso_double(57.02), PrecisionFactory::getDaltonInstance(pappso_double(0.02))); std::cout << range.getMz() << std::endl; std::cout << "choses " << MzRange( pappso_double(57.02), PrecisionFactory::getDaltonInstance(pappso_double(0.02))) .toString() .toStdString() << std::endl; FilterOboPsiModSink term_listb; FilterOboPsiModTermDiffMono filter_labelb( term_listb, MzRange(pappso_double(57.02), PrecisionFactory::getDaltonInstance(pappso_double(0.02)))); OboPsiMod psimodb(filter_labelb); for(auto term : term_listb.getOboPsiModTermList()) { //%S << term._accession.toStdString() << " " << mz(term._diff_mono) // << std::endl; } std::cout << "term_listb.size= " << term_listb.size() << std::endl; REQUIRE(term_listb.size() == 8); Aa alaninebis('A'); REQUIRE(alaninebis.getNumberOfAtom(AtomIsotopeSurvey::C) == 3); REQUIRE(alaninebis.getNumberOfAtom(AtomIsotopeSurvey::H) == 5); // xref: DiffFormula: "C 2 H 3 N 1 O 1" alaninebis.addAaModification(AaModification::getInstance("MOD:00397")); REQUIRE(alaninebis.getNumberOfAtom(AtomIsotopeSurvey::C) == 5); REQUIRE(alaninebis.getNumberOfAtom(AtomIsotopeSurvey::H) == 8); REQUIRE(alaninebis.toAbsoluteString().toStdString() == "A(MOD:00397)"); alaninebis.addAaModification( AaModification::getInstanceCustomizedMod(18.022316354654)); // SUCCESS REQUIRE_FALSE(alanine < alaninebis); REQUIRE_FALSE(alaninebis < alanine); REQUIRE(alanine == alaninebis); Aa alanineter('A'); qDebug() << "TEST"; alanineter.addAaModification(AaModification::getInstance("MOD:00397")); REQUIRE_FALSE(alanine == alanineter); REQUIRE_FALSE(alanine < alanineter); } SECTION("..:: Test Modifications ::..") { AaModificationP mod = AaModification::getInstance("MOD:00397"); std::cout << " MOD:00397 mass=" << QString::number(mod->getMass(), 'g', 15).toStdString() << std::endl; // 57.021464 // MOD:00429 mod = AaModification::getInstance("MOD:00429"); std::cout << " MOD:00429 mass=" << QString::number(mod->getMass(), 'g', 15).toStdString() << std::endl; // 28.0313 // MOD:00382 mod = AaModification::getInstance("MOD:00382"); std::cout << " MOD:00382 mass=" << QString::number(mod->getMass(), 'g', 15).toStdString() << std::endl; //-20.026215 REQUIRE_THAT(mod->getMass(), WithinRel(-20.026215, 0.00001)); // MOD:00234 mod = AaModification::getInstance("MOD:00234"); std::cout << " MOD:00234 mass=" << QString::number(mod->getMass(), 'g', 15).toStdString() << std::endl; // 305.068156 // MOD:00838 mod = AaModification::getInstance("MOD:00838"); std::cout << " MOD:00838 mass=" << QString::number(mod->getMass(), 'g', 15).toStdString() << std::endl; for(auto amino_acid : pappso::Aa::getAminoAcidCharList()) { pappso::Aa aa_enumi(amino_acid); std::cout << " " << (char)amino_acid << " " << QString::number(aa_enumi.getMass(), 'g', 15).toStdString() << std::endl; } /* * A 71.037113785565 5: R 156.101111025652 5: C 103.009184785565 5: D 115.026943024685 5: E 129.042593089167 5: F 147.068413914529 5: G 57.021463721083 5: H 137.058911859647 5: I 113.084063979011 5: K 128.094963016052 5: L 113.084063979011 5: M 131.040484914529 5: N 114.042927442166 5: P 97.052763850047 5: Q 128.058577506648 5: R 156.101111025652 5: S 87.032028405125 5: T 101.047678469607 5: V 99.068413914529 5: W 186.07931295157 5: Y 163.063328534089 5: U 168.964198469607 5: O 255.158291550141 */ REQUIRE_THAT(pappso::Aa('A').getMass(), WithinAbs(71.0371137856, .0000000001)); REQUIRE_THAT(pappso::Aa('R').getMass(), WithinAbs(156.101111025652, .0000000001)); REQUIRE_THAT(pappso::Aa('C').getMass(), WithinAbs(103.0091849597, .0000000001)); REQUIRE_THAT(pappso::Aa('D').getMass(), WithinAbs(115.026943024685, .0000000001)); // AaModification::getInstance("MOD:00397_wrong"); REQUIRE_THROWS_AS(AaModification::getInstance("MOD:00397_wrong"), pappso::ExceptionNotFound); } /* return 0; */ } TEST_CASE("Amino Acid code test suite.", "[AaCode]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: AA code init ::..", "[AaCode]") { AaCode aa_code; REQUIRE_THAT(aa_code.getAa('C').getMass(), WithinRel(103.0091849597, 0.00001)); REQUIRE(aa_code.getAaCode('C') == 7); REQUIRE(aa_code.getAa((uint8_t)6).getMass() < aa_code.getAa((uint8_t)7).getMass()); aa_code.addAaModification('C', AaModification::getInstance("MOD:00397")); REQUIRE(aa_code.getAaCode('M') == 13); REQUIRE(aa_code.getAaCode('A') == 2); REQUIRE(aa_code.getAaCode('I') == 7); REQUIRE_THAT(aa_code.getAa('C').getMass(), WithinRel(160.0306486807, 0.00001)); REQUIRE(aa_code.getAaCode('C') == 17); REQUIRE(aa_code.getAa((uint8_t)16).getMass() < aa_code.getAa((uint8_t)17).getMass()); REQUIRE(aa_code.getAa((uint8_t)17).getMass() < aa_code.getAa((uint8_t)18).getMass()); REQUIRE(aa_code.getAa((uint8_t)1).getLetter() == 'G'); REQUIRE(aa_code.getAa((uint8_t)19).getLetter() == 'W'); REQUIRE_THROWS_AS(aa_code.getAa((uint8_t)20).getMass(), ExceptionOutOfRange); } } TEST_CASE("Amino Acid string codec test suite.", "[AaStringCodec]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: AA string codec init ::..", "[AaStringCodec]") { AaCode aa_code; aa_code.addAaModification('C', AaModification::getInstance("MOD:00397")); AaStringCodec codec(aa_code); REQUIRE(codec.code("MAMI") == 61253); std::uint64_t nbaa = aa_code.getSize() + 1; REQUIRE(codec.code("SAM") == (aa_code.getAaCode('S') + aa_code.getAaCode('A') * (uint64_t)nbaa + aa_code.getAaCode('M') * (uint64_t)nbaa * (uint64_t)nbaa)); REQUIRE(codec.codeLlc("SAM") == 873); REQUIRE(codec.decode(873).toStdString() == "MSA"); REQUIRE_THAT(codec.getMass(873), WithinRel(codec.getMass(5243), 0.0000001)); std::vector arr_codemass = codec.generateLlcCodeListByMaxPeptideSize(3); REQUIRE(arr_codemass.size() == 1330); std::sort( arr_codemass.begin(), arr_codemass.end(), [](const CodeToMass &a, const CodeToMass &b) { return a.mass < b.mass; }); REQUIRE(codec.decode(arr_codemass.at(0).code).toStdString() == "GGG"); REQUIRE(codec.decode(arr_codemass.back().code).toStdString() == "WWW"); arr_codemass = codec.generateLlcCodeListByMaxPeptideSize(4); REQUIRE(arr_codemass.size() == 7315); std::sort( arr_codemass.begin(), arr_codemass.end(), [](const CodeToMass &a, const CodeToMass &b) { return a.mass < b.mass; }); REQUIRE(codec.decode(arr_codemass.at(0).code).toStdString() == "GGGG"); REQUIRE(codec.decode(arr_codemass.back().code).toStdString() == "WWWW"); arr_codemass = codec.generateLlcCodeListByMaxPeptideSize(5); REQUIRE(arr_codemass.size() == 33649); std::sort( arr_codemass.begin(), arr_codemass.end(), [](const CodeToMass &a, const CodeToMass &b) { return a.mass < b.mass; }); REQUIRE(codec.decode(arr_codemass.at(0).code).toStdString() == "GGGGG"); REQUIRE(codec.decode(arr_codemass.back().code).toStdString() == "WWWWW"); qDebug() << std::numeric_limits::max(); qDebug() << std::numeric_limits::max(); REQUIRE(codec.getLimitMax(5) < std::numeric_limits::max()); REQUIRE(codec.getLimitMax(6) < std::numeric_limits::max()); REQUIRE(codec.getLimitMax(7) < std::numeric_limits::max()); // amino acid code is safe on all platform using at maximum 7 amino acids // some architectures ar ok with 8 (armel) REQUIRE(codec.getLimitMax(5) == 3199999); arr_codemass = codec.generateLlcCodeListUpToMaxPeptideSize(5); std::sort( arr_codemass.begin(), arr_codemass.end(), [](const CodeToMass &a, const CodeToMass &b) { return a.mass < b.mass; }); REQUIRE(codec.decode(arr_codemass.at(0).code).toStdString() == "G"); REQUIRE(codec.decode(arr_codemass.back().code).toStdString() == "WWWWW"); REQUIRE(arr_codemass.size() == 42503); } } libpappsomspp-0.9.20/tests/test_massrange.cpp000644 001750 001750 00000011704 14533472161 022577 0ustar00rusconirusconi000000 000000 // // File: test_massrange.cpp // Created by: Olivier Langella // Created on: 4/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [massrange] -s #ifdef CATCH2_MAJOR_VERSION_2 #include using namespace Catch; #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; using namespace Catch::Matchers; #endif #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("MassRange test suite.", "[massrange]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: test MassRange ::..", "[massrange]") { PrecisionPtr precision = PrecisionFactory::getPpmInstance(10); PrecisionPtr precisionb = PrecisionFactory::getDaltonInstance(6.0); REQUIRE(precision != precisionb); precisionb = PrecisionFactory::getPpmInstance(10); REQUIRE(precision == precisionb); MzRange mz_range1(pappso_double(1200.001), PrecisionFactory::getDaltonInstance(6.0)); MzRange mz_range2(pappso_double(1200.001), PrecisionFactory::getPpmInstance(10)); MzRange mz_range3(pappso_double(1200.001), PrecisionFactory::getPpmInstance(10), PrecisionFactory::getPpmInstance(30)); REQUIRE(mz_range1.toString().toStdString() == "mz=1200 delta=6 : 1194 < 1200 < 1206"); REQUIRE(mz_range2.toString().toStdString() == "mz=1200 delta=0.012 : 1199.99 < 1200 < 1200.01"); REQUIRE(mz_range3.toString().toStdString() == "mz=1200.01 delta=0.024 : 1199.99 < 1200.01 < 1200.04"); std::cout << std::endl << "..:: Contains ::.." << std::endl; std::cout << mz_range1.toString().toStdString() << std::endl; REQUIRE(!mz_range1.contains(pappso_double(600))); std::cout << mz_range1.toString().toStdString() << std::endl; REQUIRE(mz_range1.contains(pappso_double(1200))); std::cout << mz_range2.toString().toStdString() << std::endl; REQUIRE(!mz_range2.contains(pappso_double(600))); std::cout << mz_range2.toString().toStdString() << std::endl; REQUIRE(mz_range2.contains(pappso_double(1200))); std::cout << mz_range2.toString().toStdString() << std::endl; REQUIRE(mz_range2.contains(pappso_double(1200.00001))); std::cout << mz_range2.toString().toStdString() << std::endl; REQUIRE(!mz_range2.contains(pappso_double(1200.1))); // test : MzRange mz_range_test_ref(pappso_double(633.29706487392), PrecisionFactory::getPpmInstance(10)); REQUIRE(mz_range_test_ref.getMz() == Catch::Detail::Approx(633.29706487392)); REQUIRE(mz_range_test_ref.lower() == Catch::Detail::Approx(633.290731903271)); REQUIRE(mz_range_test_ref.upper() == Catch::Detail::Approx(633.303397844569)); // test : MzRange mz_range_test(pappso_double(633.29706487392), PrecisionFactory::getPpmInstance(10), PrecisionFactory::getPpmInstance(10)); REQUIRE(mz_range_test.getMz() == Catch::Detail::Approx(633.29706487392)); REQUIRE(mz_range_test.lower() == Catch::Detail::Approx(633.290731903271)); REQUIRE(mz_range_test.upper() == Catch::Detail::Approx(633.303397844569)); MzRange mz_range_lower_upper_test(pappso_double(633.29706487392), PrecisionFactory::getPpmInstance(10), PrecisionFactory::getDaltonInstance(1)); REQUIRE(mz_range_lower_upper_test.getMz() == Catch::Detail::Approx(633.79389838859572)); REQUIRE(mz_range_lower_upper_test.lower() == Catch::Detail::Approx(633.290731903271)); REQUIRE(mz_range_lower_upper_test.upper() == Catch::Detail::Approx(634.29706487392)); } } libpappsomspp-0.9.20/tests/test_peptidefragment.cpp000644 001750 001750 00000005706 14533472161 024002 0ustar00rusconirusconi000000 000000 // // File: test_peptidefragment.cpp // Created by: Olivier Langella // Created on: 9/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [peptidefragment] -s #ifdef CATCH2_MAJOR_VERSION_2 #include using namespace Catch; #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; using namespace Catch::Matchers; #endif #include #include #include #include #include #include #include using namespace pappso; using namespace std; TEST_CASE("Peptide Fragment test suite.", "[peptidefragment]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: test Peptide Fragment ::..", "[peptidefragment]") { std::cout << std::endl << "..:: peptide fragment init ::.." << std::endl; PeptideFragment pep_fragment( std::make_shared("PEPTIDE"), PeptideDirection::Cter, 4); REQUIRE(pep_fragment.getMass() == Catch::Detail::Approx(476.2118432465)); // SUCCESS PeptideFragment pep_fragmentr( std::make_shared("PEPTIDE"), PeptideDirection::Nter, 4); REQUIRE(pep_fragmentr.getMass() == Catch::Detail::Approx(442.2063639429)); REQUIRE(pep_fragmentr.getMz(1) == Catch::Detail::Approx(443.2136404098)); REQUIRE(pep_fragmentr.getMz(2) == Catch::Detail::Approx(222.1104584383)); REQUIRE_NOTHROW(PeptideFragmentIon( std::make_shared( std::make_shared("PEPTIDE"), PeptideDirection::Nter, 4), PeptideIon::a)); REQUIRE_THROWS_AS( PeptideFragmentIon( std::make_shared( std::make_shared("PEPTIDE"), PeptideDirection::Nter, 4), PeptideIon::y), pappso::PappsoException); } } libpappsomspp-0.9.20/tests/test_psm.cpp000644 001750 001750 00000036772 14533472161 021432 0ustar00rusconirusconi000000 000000 // // File: test_psm.cpp // Created by: Olivier Langella // Created on: 22/1/2018 // /******************************************************************************* * Copyright (c) 2018 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warrantyo f * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 18,18" // ./tests/catch2-only-tests [psm] -s // ./tests/catch2-only-tests [psmfeature] -s #include #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include "common.h" #include "config.h" using namespace pappso; using namespace std; // using namespace pwiz::msdata; TEST_CASE("psm test suite.", "[psm]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: readMgf ::..", "[psm]") { std::cout << std::endl << "..:: readMgf ::.." << std::endl; // bool refine_spectrum_synthesis = false; MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR) .append("/tests/data/peaklist_15046_simple_xt.mgf")); //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); Peptide peptide("AIADGSLLDLLR"); PeptideSp peptide_sp(peptide.makePeptideSp()); // peptide_sp.get()->addAaModification(AaModification::getInstance("MOD:00397"), // 0); PrecisionPtr precision = PrecisionFactory::getDaltonInstance(0.02); std::list ion_list; ion_list.push_back(PeptideIon::y); ion_list.push_back(PeptideIon::b); std::cout << "spectrum_simple size " << spectrum_simple.size() << std::endl; REQUIRE(spectrum_simple.size() == 100); PeptideSpectrumMatch psm( spectrum_simple, peptide_sp, 2, precision, ion_list); PeptideSpectrumMatch psm2(spectrum_simple, peptide_sp, 2, precision, PeptideFragmentIonListBase::getCIDionList()); REQUIRE(psm2.countTotalMatchedIons() == 21); unsigned int test_count = psm.countTotalMatchedIons(); REQUIRE(test_count == 11); // hyperscore="33.5" precision = PrecisionFactory::getDaltonInstance(0.0); PeptideSpectrumMatch psmb( spectrum_simple, peptide_sp, 2, precision, ion_list); test_count = psmb.countTotalMatchedIons(); REQUIRE(test_count == 0); precision = PrecisionFactory::getDaltonInstance(0.02); PeptideIsotopeSpectrumMatch psm_iso( spectrum_simple, peptide_sp, 2, precision, ion_list, 2, 0); REQUIRE(psm_iso.getPeakIonIsotopeMatchList().size() == 19); PeptideIsotopeSpectrumMatch psm_iso2( spectrum_simple, peptide_sp, 2, precision, ion_list, 2, 4); REQUIRE(psm_iso2.getPeakIonIsotopeMatchList().size() == 0); std::list peak_ion_isotope_match_list = psm_iso.getPeakIonIsotopeMatchList(); for(auto peak : peak_ion_isotope_match_list) { qDebug() << peak.toString() << " " << peak.getPeptideNaturalIsotopeAverageSp().get(); } REQUIRE(peak_ion_isotope_match_list.size() == 19); psm_iso.dropPeaksLackingMonoisotope(); peak_ion_isotope_match_list = psm_iso.getPeakIonIsotopeMatchList(); for(auto peak : peak_ion_isotope_match_list) { qDebug() << peak.toString() << " " << peak.getPeptideNaturalIsotopeAverageSp().get(); } REQUIRE(peak_ion_isotope_match_list.size() == 19); qDebug() << peak_ion_isotope_match_list.size(); peak_ion_isotope_match_list.sort( [](const PeakIonIsotopeMatch &a, const PeakIonIsotopeMatch &b) { qDebug() << a.getPeak().y << " > "; qDebug() << b.getPeak().y << " . "; return (a.getPeak().y > b.getPeak().y); }); spectrum_simple = readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")); peptide_sp = Peptide("AIADGSLLDLLR").makePeptideSp(); precision = PrecisionFactory::getDaltonInstance(0.02); qDebug(); PeptideIsotopeSpectrumMatch psm_iso_check( spectrum_simple, peptide_sp, 2, precision, ion_list, 2, 0); qDebug(); peak_ion_isotope_match_list = psm_iso_check.getPeakIonIsotopeMatchList(); REQUIRE(peak_ion_isotope_match_list.size() == 39); qDebug(); for(auto &peak : peak_ion_isotope_match_list) { qDebug() << peak.toString() << " " << peak.getPeptideNaturalIsotopeAverageSp().get(); } peak_ion_isotope_match_list.sort( [](const PeakIonIsotopeMatch &a, const PeakIonIsotopeMatch &b) { if(a.getPeptideIonType() < b.getPeptideIonType()) return true; if(a.getPeptideFragmentIonSp().get()->size() < b.getPeptideFragmentIonSp().get()->size()) return true; if(a.getCharge() < b.getCharge()) return true; if(a.getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber() < b.getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber()) return true; return false; }); auto it = peak_ion_isotope_match_list.begin(); REQUIRE(it->toString().toStdString() == "b2+isotope0r1mz185.128"); it++; REQUIRE(it->toString().toStdString() == "b3+isotope0r1mz256.165"); for(auto peak : peak_ion_isotope_match_list) { qDebug() << peak.toString() << " " << peak.getPeptideNaturalIsotopeAverageSp().get(); } psm_iso_check.dropPeaksLackingMonoisotope(); peak_ion_isotope_match_list = psm_iso_check.getPeakIonIsotopeMatchList(); for(auto peak : peak_ion_isotope_match_list) { qDebug() << peak.toString() << " " << peak.getPeptideNaturalIsotopeAverageSp().get(); } REQUIRE(peak_ion_isotope_match_list.size() == 39); } } TEST_CASE("psm features test suite.", "[psmfeature]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: readMgf ::..", "[psmfeature]") { std::cout << std::endl << "..:: readMgf ::.." << std::endl; // bool refine_spectrum_synthesis = false; MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_2016.mgf")); //.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100); Peptide peptide("EDKPQPPPEGR"); PeptideSp peptide_sp(peptide.makePeptideSp()); // peptide_sp.get()->addAaModification(AaModification::getInstance("MOD:00397"), // 0); PsmFeatures features(PrecisionFactory::getDaltonInstance(0.02), 150); features.setPeptideSpectrumCharge(peptide_sp, &spectrum_simple, 3, 1); LinearRegression lr = features.getIonIsotopeLinearRegression(); REQUIRE(lr.getCoefficientOfDetermination() == 0.0); REQUIRE(features.getTotalIntensity() == Approx(248641.8659667977)); REQUIRE(features.getIntensityOfMatchedIon(PeptideIon::b) == Approx(1751.5864257813).epsilon(0.001)); REQUIRE(features.getIntensityOfMatchedIon(PeptideIon::y) == Approx(57112.2947998047).epsilon(0.001)); REQUIRE(features.countMatchedIonComplementPairs() == 0); /* GRMZM5G815453_P01 P00874 Ribulose bisphosphate carboxylase large chain Precursor (RuBisCO large subunit)(EC 4.1.1.39) seq=translation; coord=Pt:56824..58323:1; parent_transcript=GRMZM5G815453_T01; parent_gene=GRMZM5G815453 */ spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR).append("/tests/data/scan_15968.mgf")); REQUIRE(spectrum_simple.size() == 304); peptide_sp = Peptide("EITLGFVDLLR").makePeptideSp(); PsmFeatures features2(PrecisionFactory::getDaltonInstance(0.02), 150); features2.setPeptideSpectrumCharge(peptide_sp, &spectrum_simple, 2, 1); REQUIRE(features2.getIonIsotopeLinearRegression() .getCoefficientOfDetermination() == Approx(0.6323680888).epsilon(0.01)); features.setPeptideSpectrumCharge(peptide_sp, &spectrum_simple, 2, 1); REQUIRE(features.getIonIsotopeLinearRegression() .getCoefficientOfDetermination() == Approx(0.6323680888).epsilon(0.01)); REQUIRE( features.getMaxIntensityMatchedIonComplementPairPrecursorMassDelta() == Approx(-0.0036778069).epsilon(0.00001)); REQUIRE(features.countMatchedIonComplementPairs() == 3); REQUIRE(features.getPeakIonPairs().size() == 3); REQUIRE(features.getPeakIonPairs()[0].first.toString().toStdString() == "b2+isotope0r1mz243.134"); REQUIRE(features.getPeakIonPairs()[0].second.toString().toStdString() == "y9+isotope0r1mz1033.61"); REQUIRE(features.getPeakIonPairs()[1].first.toString().toStdString() == "b6+isotope0r1mz661.367"); REQUIRE(features.getPeakIonPairs()[1].second.toString().toStdString() == "y5+isotope0r1mz615.383"); REQUIRE(features.getPeakIonPairs()[2].first.toString().toStdString() == "b7+isotope0r1mz760.435"); REQUIRE(features.getPeakIonPairs()[2].second.toString().toStdString() == "y4+isotope0r1mz516.315"); REQUIRE( features.getIonPairPrecursorMassDelta(features.getPeakIonPairs()[0]) == Approx(-0.0036778069).epsilon(0.001)); REQUIRE( features.getIonPairPrecursorMassDelta(features.getPeakIonPairs()[1]) == Approx(-0.0118262069).epsilon(0.001)); REQUIRE( features.getIonPairPrecursorMassDelta(features.getPeakIonPairs()[2]) == Approx(-0.0114600069).epsilon(0.001)); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::y) == 9); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::b) == 2); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::a) == 0); spectrum_simple = readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")); peptide_sp = Peptide("AIADGSLLDLLR").makePeptideSp(); features.setPeptideSpectrumCharge(peptide_sp, &spectrum_simple, 2, 0); REQUIRE(features.getIonIsotopeLinearRegression() .getCoefficientOfDetermination() == Approx(0.0).epsilon(0.01)); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::y) == 10); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::b) == 3); REQUIRE(features.getAaSequenceCoverage(PeptideIon::y) == 10); REQUIRE(features.getAaSequenceCoverage(PeptideIon::b) == 4); REQUIRE(features.getIntensityOfMatchedIon(PeptideIon::y) == Approx(654880.6992189999)); REQUIRE(features.getMaxIntensityPeakIonMatch(PeptideIon::y) == Approx(114514.0625)); features.setPeptideSpectrumCharge(peptide_sp, &spectrum_simple, 2, 1); REQUIRE(features.getIonIsotopeLinearRegression() .getCoefficientOfDetermination() == Approx(0.5991012161).epsilon(0.04)); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::y) == 10); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::b) == 3); REQUIRE(features.getAaSequenceCoverage(PeptideIon::y) == 10); REQUIRE(features.getAaSequenceCoverage(PeptideIon::b) == 4); REQUIRE(features.getIntensityOfMatchedIon(PeptideIon::y) == Approx(863068.6967769999)); REQUIRE(features.getMaxIntensityPeakIonMatch(PeptideIon::y) == Approx(114514.0625)); REQUIRE(features.getIntensityOfMatchedIon(PeptideIon::b) == Approx(254791.342651)); REQUIRE(features.getMaxIntensityPeakIonMatch(PeptideIon::b) == Approx(161016.984375)); // SeqCoverComplementPeaks REQUIRE(features.getComplementPairsAaSequenceCoverage() == 5); REQUIRE(((double)features.getComplementPairsAaSequenceCoverage() / (double)peptide_sp.get()->size()) == Approx(5.0 / 12.0)); REQUIRE(((double)0 / (double)peptide_sp.get()->size()) == Approx(0)); REQUIRE((features.getTotalIntensityOfMatchedIonComplementPairs() / features.getTotalIntensity()) == Approx(0.1727291768)); REQUIRE((features.getTotalIntensityOfMatchedIonComplementPairs() < features.getTotalIntensity())); REQUIRE( features.getMaxIntensityMatchedIonComplementPairPrecursorMassDelta() == Approx(0.0008592852).epsilon(0.00001)); features.setPeptideSpectrumCharge(peptide_sp, &spectrum_simple, 2, 2); REQUIRE(features.getIonIsotopeLinearRegression() .getCoefficientOfDetermination() == Approx(0.5991012161).epsilon(0.04)); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::y) == 10); REQUIRE(features.getMaxConsecutiveIon(PeptideIon::b) == 3); REQUIRE(features.getAaSequenceCoverage(PeptideIon::y) == 10); REQUIRE(features.getAaSequenceCoverage(PeptideIon::b) == 4); REQUIRE(features.getIntensityOfMatchedIon(PeptideIon::y) == Approx(911305.6467289998)); REQUIRE(features.getMaxIntensityPeakIonMatch(PeptideIon::y) == Approx(114514.0625)); REQUIRE(features.getIntensityOfMatchedIon(PeptideIon::b) == Approx(271127.594604)); REQUIRE(features.getMaxIntensityPeakIonMatch(PeptideIon::b) == Approx(161016.984375)); // SeqCoverComplementPeaks REQUIRE(features.getComplementPairsAaSequenceCoverage() == 5); REQUIRE(((double)features.getComplementPairsAaSequenceCoverage() / (double)peptide_sp.get()->size()) == Approx(5.0 / 12.0)); REQUIRE(((double)0 / (double)peptide_sp.get()->size()) == Approx(0)); REQUIRE((features.getTotalIntensityOfMatchedIonComplementPairs() / features.getTotalIntensity()) == Approx(0.1790448148)); REQUIRE((features.getTotalIntensityOfMatchedIonComplementPairs() < features.getTotalIntensity())); REQUIRE( features.getMaxIntensityMatchedIonComplementPairPrecursorMassDelta() == Approx(0.0008592852).epsilon(0.00001)); } } libpappsomspp-0.9.20/tests/test_xic.cpp000644 001750 001750 00000053607 14533472161 021412 0ustar00rusconirusconi000000 000000 /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // make test ARGS="-V -I 1,1" // ./tests/catch2-only-tests [XIC] -s // ./tests/catch2-only-tests [tracepeaklist] -s // #define CATCH_CONFIG_MAIN #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" // #include "common.h" // make test ARGS="-V -I 3,3" using namespace std; using namespace pappso; class CustomHandler : public OdsDocHandlerInterface { public: CustomHandler(Trace &xic) : _xic(xic) { } /** * callback that indicates the begining of a data sheet. Override it in * order to retrieve information about the current data sheet. * */ virtual void startSheet(const QString &sheet_name [[maybe_unused]]) override{}; /** * callback that indicates the end of the current data sheet. Override it if * needed */ virtual void endSheet() override{ // qDebug() << "endSheet"; }; /** * callback that indicates a new line start. Override it if needed. */ virtual void startLine() override { _xic_element.x = -1; }; /** * callback that indicates a line ending. Override it if needed. */ virtual void endLine() override { if(!_is_title) { } _is_title = false; }; /** * callback that report the content of the current cell in a dedicated Cell * object. Override it if you need to retrieve cell content. */ virtual void setCell(const OdsCell &cell) override { qDebug() << "CustomHandler::setCell " << cell.toString(); if(cell.isDouble()) { if(_xic_element.x < 0) { _xic_element.x = cell.getDoubleValue(); } else { _xic_element.y = cell.getDoubleValue(); _xic.push_back(_xic_element); _xic_element.x = -1; } } }; /** * callback that report the end of the ODS document. Override it if you need * to know that reading is finished. */ virtual void endDocument() override{}; private: bool _is_title = true; Trace &_xic; DataPoint _xic_element; }; class TraceDetectionMaxSink : public TraceDetectionSinkInterface { public: void setTracePeak(TracePeak &xic_peak) override { _count++; qDebug() << "XicDetectionMaxSink::setXicPeak begin=" << xic_peak.getLeftBoundary().x << " area=" << xic_peak.getArea() << " end=" << xic_peak.getRightBoundary().x; if(xic_peak.getArea() > _peak_max.getArea()) { _peak_max = xic_peak; } }; const TracePeak & getTracePeak() const { if(_count == 0) throw PappsoException(QObject::tr("no peak detected")); return _peak_max; }; private: unsigned int _count = 0; TracePeak _peak_max; }; class TracePeakOdsWriterSink : public TraceDetectionSinkInterface { public: TracePeakOdsWriterSink() { m_beginList.clear(); m_endList.clear(); m_maxrtList.clear(); m_maxintList.clear(); m_areaList.clear(); }; void setTracePeak(TracePeak &xic_peak) override { m_beginList.push_back(xic_peak.getLeftBoundary().x); m_endList.push_back(xic_peak.getRightBoundary().x); m_maxrtList.push_back(xic_peak.getMaxXicElement().x); m_maxintList.push_back(xic_peak.getMaxXicElement().y); m_areaList.push_back(xic_peak.getArea()); }; public: std::vector m_beginList; std::vector m_endList; std::vector m_maxrtList; std::vector m_maxintList; std::vector m_areaList; }; class XicOdsWriter { public: XicOdsWriter(CalcWriterInterface &output) : _output(output) { _output.writeCell("rt"); _output.writeCell("intensity"); _output.writeLine(); }; void write(const Trace &xic) { auto it = xic.begin(); while(it != xic.end()) { _output.writeCell(it->x); _output.writeCell(it->y); _output.writeLine(); it++; } }; private: CalcWriterInterface &_output; }; void readOdsXic(const QString &filepath, Trace &xic) { qDebug() << "readOdsXic begin " << filepath; QFile realfile(filepath); CustomHandler handler_realxic(xic); OdsDocReader realreader_prm(handler_realxic); realreader_prm.parse(&realfile); realfile.close(); // qDebug() << "readOdsXic copy " << filepath; // xic = handler_realxic.getXic(); qDebug() << "readOdsXic end " << filepath; } void writeOdsXic(const QString &filepath, Trace &xic) { qDebug() << "writeOdsXic begin " << filepath; QFile fileods(filepath); OdsDocWriter writer(&fileods); XicOdsWriter xic_writer(writer); xic_writer.write(xic); writer.close(); fileods.close(); // qDebug() << "readOdsXic copy " << filepath; // xic = handler_realxic.getXic(); qDebug() << "writeOdsXic end " << filepath; } TEST_CASE("XIC test suite.", "[XIC]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); // QCoreApplication a(argc, argv); SECTION("..:: Test XIC ::..", "[XIC]") { qDebug() << "init test XIC"; std::cout << std::endl << "..:: Test XIC ::.." << std::endl; // BSA std::cout << std::endl << "..:: read XIC xic.ods ::.." << std::endl; Xic xic_test; REQUIRE_NOTHROW(readOdsXic( QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/xic.ods"), xic_test)); REQUIRE(xic_test.size() == 37); std::cout << std::endl << "..:: Test smooth filter ::.." << std::endl; FilterMorphoMean smooth(3); Xic xic_smooth(xic_test); smooth.filter(xic_smooth); Xic check_xic_smooth; readOdsXic( QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/xic_smooth.ods"), check_xic_smooth); REQUIRE(xic_smooth == check_xic_smooth); /* file.setFileName(QString(CMAKE_SOURCE_DIR).append("/test/data/xic/xic_smooth_3.ods")); CustomHandler handler_xic_smooth_3; OdsDocReader reader_xic_smooth_3(handler_xic_smooth_3); reader_xic_smooth_3.parse(&file); file.close(); if (handler_xic_smooth_3.getXic() != handler_xic.getXic()) { throw PappsoException (QObject::tr("handler_xic_smooth_3.getXic() != handler_xic.getXic()")); } */ std::cout << std::endl << "..:: spike filter ::.." << std::endl; qDebug() << "spike filter"; FilterMorphoAntiSpike spike(3); Xic xic_spike(xic_test); spike.filter(xic_spike); Xic check_xic_spike; readOdsXic( QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/xic_spike.ods"), check_xic_spike); REQUIRE(xic_spike == check_xic_spike); std::cout << std::endl << "..:: peak detection ::.." << std::endl; INFO("peak detection"); Xic xicprm_test; readOdsXic(QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/prm_xic.ods"), xicprm_test); INFO("readOdsXic OK"); qDebug(); TraceDetectionZivy _zivy(2, 3, 3, 5000, 6000); qDebug(); TraceDetectionMaxSink max_peak_tic; qDebug(); REQUIRE_NOTHROW(_zivy.detect(xicprm_test, max_peak_tic, true)); INFO("TraceDetectionZivy OK"); qDebug() << "max peak begin=" << max_peak_tic.getTracePeak().getLeftBoundary().x << " area=" << max_peak_tic.getTracePeak().getArea() << " end=" << max_peak_tic.getTracePeak().getRightBoundary().x; TracePeakOdsWriterSink ods_sink; _zivy.detect(xicprm_test, ods_sink, true); qDebug(); REQUIRE_THAT( ods_sink.m_beginList, Catch::Approx(std::vector({1221.79, 1268.65})).margin(0.00001)); REQUIRE_THAT(ods_sink.m_areaList, Catch::Approx(std::vector( {317787751.7834287882, 3251982.1006667931})) .margin(0.01)); Xic realxic_test; readOdsXic(QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/real_xic.ods"), realxic_test); INFO("readOdsXic OK"); qDebug(); TracePeakOdsWriterSink real_ods_sink; qDebug(); //_zivy.setSink(&max_peak_tic); TraceDetectionZivy _zivyb(2, 4, 3, 30000, 50000); qDebug(); REQUIRE_NOTHROW(_zivyb.detect(realxic_test, real_ods_sink, true)); qDebug(); REQUIRE_THAT( real_ods_sink.m_beginList, Catch::Approx( std::vector( {2374.88, 2385.45, 2490.35, 2653.21, 2730.29, 2750.84, 2761.72, 3262.35, 3277.68, 3755.51, 3808.5, 4104.5, 4151.45, 4447.09, 4470.68, 4520.31, 4624.51, 4755.6, 4992.96, 5123.82, 5132.58, 5275.57, 5283.03, 5349.8, 5357.63, 5369.07, 5392.06, 5441.72, 5498.31, 5520.0, 5526.64, 5535.79, 5549.66, 5557.02, 5593.74, 5704.19, 5839.75, 6205.72, 6224.08, 6273.97, 6292.98, 6401.19, 6510.97, 6587.42, 6838.34, 6875.56, 7039.36})) .margin(0.00001)); REQUIRE_THAT(real_ods_sink.m_areaList, Catch::Approx(std::vector({453563.5099999703, 4719046.3000000007, 1090639.7850001103, 1348880.5900000208, 7630963.3250000998, 779452.6100000609, 2040112.6650001134, 5756570.0800003475, 8225201.0500001209, 105329906.8750005662, 0.0, 647415.2500000162, 421852.445000008, 10305033.5250001848, 3621950.2699998645, 544684.8950001382, 37944845.6299999952, 3698171.8149995869, 5664123.3300000867, 420474.2849998939, 1008899.3299999861, 805031.2899999407, 335121.1350001062, 338425.5199998079, 340164.8050002141, 12118740.7800003588, 1643557.1449998224, 488535.5099999903, 3979415.1600000304, 337714.1250001371, 1028555.1399998174, 905212.215000038, 256353.7100000874, 273830.9199999579, 10611321.4649997819, 18939923.7850016505, 571598.5350001995, 2796306.4700002563, 39837543.8999998271, 3572057.4000001787, 2218517.9099999457, 2539285.7649998385, 881227.1150000142, 726500.5700001301, 17818048.1899999045, 571815.7450000376, 2592136.4730000873})) .margin(0.01)); TracePeakOdsWriterSink real_detect_moulonods_sink; TraceDetectionMoulon moulon(4, 60000, 40000); moulon.detect(realxic_test, real_detect_moulonods_sink, true); qDebug(); REQUIRE_THAT( real_detect_moulonods_sink.m_beginList, Catch::Approx( std::vector( {2379.83, 2385.1, 2402.82, 2491.04, 2495.16, 2652.79, 2733.2, 3262.35, 3276.04, 3755.51, 3807.81, 3814.14, 4103.81, 4152.75, 4449.38, 4521.77, 4554.8, 4624.51, 4755.6, 4996.86, 5124.92, 5131.71, 5275.23, 5350.75, 5368.42, 5442.64, 5499.77, 5550.67, 5556.69, 5594.34, 5704.19, 5833.0, 6208.73, 6276.53, 6401.95, 6415.88, 6443.42, 6512.36, 6593.39, 6620.06, 6830.73, 6838.34, 6875.56, 6927.43, 7041.73})) .margin(0.00001)); REQUIRE_THAT( real_detect_moulonods_sink.m_areaList, Catch::Approx( std::vector( {350636.0699999726, 4719046.3000000007, 1199928.0000002729, 232712.6200000431, 857927.1650000673, 1229759.8900000337, 19530535.180000186, 5756570.0800003475, 8225201.0500001209, 105329906.8750005662, 290680.7350000119, 993908.2649999078, 764879.9550000108, 372620.9549999869, 17268838.680000037, 416502.5550000306, 307643.9599999893, 37944845.6299999952, 3698171.8149995869, 5368429.3300001146, 506868.5349999432, 965843.7700000828, 1323079.6650000364, 1448878.8449998836, 15169604.6500002556, 488535.5099999903, 0.0, 383583.2400000191, 347662.4800001451, 10611321.4649997819, 18939923.7850016505, 1223290.7100003334, 43605224.2549999952, 6272343.5700001316, 2624241.2699997784, 323902.4699999057, 437959.6900001141, 855431.2400000544, 420884.1700001009, 424308.9499999187, 323031.4700001751, 17818048.1899999045, 571815.7450000376, 115456.9200000693, 2546174.3550001378})) .margin(0.01)); std::cout << std::endl << "..:: Test MinMax on onexicpeak ::.." << std::endl; Xic onexicpeak; readOdsXic( QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/onexicpeak.ods"), onexicpeak); std::cout << std::endl << "..:: xic distance ::.." << std::endl; std::cout << std::endl << "distance 3757, 3758 : " << onexicpeak.getMsPointDistance(3757.0, 3758.0) << std::endl; REQUIRE(onexicpeak.getMsPointDistance(3757.0, 3758.0) == 2); std::cout << std::endl << "distance 3757, 3757.14 : " << onexicpeak.getMsPointDistance(3757.0, 3757.14) << std::endl; REQUIRE(onexicpeak.getMsPointDistance(3757.0, 3757.14) == 0); std::cout << std::endl << "distance 3758.26, 3759.61: " << onexicpeak.getMsPointDistance(3758.26, 3759.61) << std::endl; REQUIRE(onexicpeak.getMsPointDistance(3758.26, 3759.61) == 1); std::cout << std::endl << "distance 3758.26, -1: " << onexicpeak.getMsPointDistance(3758.26, -1) << std::endl; FilterMorphoMinMax minmax(4); Xic xic_minmax(onexicpeak); //"close" courbe du haut minmax.filter(xic_minmax); Xic check_xic_minmax; readOdsXic( QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/onexicpeak_minmax.ods"), check_xic_minmax); REQUIRE_FALSE(onexicpeak == check_xic_minmax); REQUIRE(xic_minmax == check_xic_minmax); FilterMorphoMaxMin maxmin(3); Xic xic_maxmin(onexicpeak); //"close" courbe du haut maxmin.filter(xic_maxmin); Xic check_xic_maxmin; readOdsXic( QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/onexicpeak_maxmin.ods"), check_xic_maxmin); REQUIRE(xic_maxmin == check_xic_maxmin); // writeOdsXic(); // double free or corruption (out) // XicFilterSmoothing smooth; // smooth.setSmoothingHalfEdgeWindows(2); // writeOdsXic(QString(CMAKE_SOURCE_DIR).append("/test/data/xic/test_write.ods"), // onexicpeak); } } TEST_CASE("test operations on tracepeaklist", "[tracepeaklist]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("detection on empty XIC", "[tracepeaklist]") { INFO("peak detection"); Xic empty_xic; TraceDetectionZivy _zivy(2, 3, 3, 5000, 6000); TracePeakList peak_list; _zivy.detect(empty_xic, peak_list, true); REQUIRE(peak_list.size() == 0); empty_xic.resize(2); fill(empty_xic.begin(), empty_xic.end(), DataPoint(1, 1)); _zivy.detect(empty_xic, peak_list, true); REQUIRE(peak_list.size() == 0); empty_xic.resize(3); fill(empty_xic.begin(), empty_xic.end(), DataPoint(1, 1)); _zivy.detect(empty_xic, peak_list, true); REQUIRE(peak_list.size() == 0); empty_xic.resize(4); fill(empty_xic.begin(), empty_xic.end(), DataPoint(1, 1)); _zivy.detect(empty_xic, peak_list, true); REQUIRE(peak_list.size() == 0); empty_xic.resize(5); fill(empty_xic.begin(), empty_xic.end(), DataPoint(1, 1)); std::size_t i = 0; for(auto &dp : empty_xic) { dp.x = i; i++; } _zivy.detect(empty_xic, peak_list, true); REQUIRE(peak_list.size() == 0); empty_xic.resize(6); fill(empty_xic.begin(), empty_xic.end(), DataPoint(1, 1)); i = 0; for(auto &dp : empty_xic) { dp.x = i; i++; } _zivy.detect(empty_xic, peak_list, true); REQUIRE(peak_list.size() == 0); } SECTION("test for masschroq issue#15", "[tracepeaklist]") { Xic xic; xic.push_back(DataPoint(1434.7806210000, 85.9931205504)); xic.push_back(DataPoint(1586.4034760000, 162.9869610431)); xic.push_back(DataPoint(1643.5517360000, 84.9932005440)); xic.push_back(DataPoint(1645.8830080000, 98.9920806335)); INFO("MassChroQ issue #15"); TraceDetectionZivy zivy15(2, 4, 3, 5000, 3000); TracePeakList peak_list; qDebug(); zivy15.detect(xic, peak_list, true); qDebug(); REQUIRE(peak_list.size() == 0); } SECTION("test operations on tracepeaklist", "[tracepeaklist]") { INFO("peak detection"); TraceDetectionZivy _zivy(2, 3, 3, 5000, 6000); TracePeakList peak_list; Xic xicprm_test; readOdsXic(QString(CMAKE_SOURCE_DIR).append("/tests/data/xic/real_xic.ods"), xicprm_test); TracePeak peak( xicprm_test.begin() + 9079, xicprm_test.begin() + 9142, false); REQUIRE(peak.getArea() == Approx(96163224.06)); TracePeak peak_nobase( xicprm_test.begin() + 9079, xicprm_test.begin() + 9142, true); REQUIRE(peak_nobase.getArea() == Approx(76281621.60)); REQUIRE( peak_nobase.getLeftBoundary().y * (peak_nobase.getRightBoundary().x - peak_nobase.getLeftBoundary().x) == Approx(peak.getArea() - peak_nobase.getArea())); INFO("readOdsXic OK"); REQUIRE_NOTHROW(_zivy.detect(xicprm_test, peak_list, true)); REQUIRE(peak_list.size() == 64); REQUIRE(findTracePeakGivenRt(peak_list.begin(), peak_list.end(), 2300) == peak_list.end()); REQUIRE(findTracePeakGivenRt(peak_list.begin(), peak_list.end(), 2380) ->getArea() == Approx(453563.50999997)); REQUIRE(findTracePeakGivenRt(peak_list.begin(), peak_list.end(), 4754) == peak_list.end()); REQUIRE(findTracePeakGivenRt(peak_list.begin(), peak_list.end(), 5460) == peak_list.end()); std::size_t nb_match; REQUIRE(findBestTracePeakGivenRtList( peak_list.begin(), peak_list.end(), {4754, 4760, 4761}, nb_match) ->getArea() == Approx(3698171.81499959)); REQUIRE(nb_match == 1); REQUIRE( findBestTracePeakGivenRtList( peak_list.begin(), peak_list.end(), {4754, 4760, 4761, 5000}, nb_match) ->getArea() == Approx(5664123.33000009)); REQUIRE(nb_match == 2); REQUIRE(findBestTracePeakGivenRtList( peak_list.begin(), peak_list.end(), {4754, 5460}, nb_match) == peak_list.end()); REQUIRE(nb_match == 0); TracePeakList empty_peak_list; REQUIRE(findBestTracePeakGivenRtList(empty_peak_list.begin(), empty_peak_list.end(), {4754, 5460}, nb_match) == empty_peak_list.end()); REQUIRE(nb_match == 0); } } libpappsomspp-0.9.20/tests/test_xtandem_spectrum.cpp000644 001750 001750 00000011006 14533472161 024174 0ustar00rusconirusconi000000 000000 // // File: test_xtandem_spectrum.cpp // Created by: Olivier Langella // Created on: 13/3/2015 // /******************************************************************************* * Copyright (c) 2015 Olivier Langella . * * This file is part of the PAPPSOms++ library. * * PAPPSOms++ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PAPPSOms++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PAPPSOms++. If not, see . * * Contributors: * Olivier Langella - initial API and *implementation ******************************************************************************/ // ./tests/catch2-only-tests [xtandemspectrum] -s #ifdef CATCH2_MAJOR_VERSION_2 #include #elif CATCH2_MAJOR_VERSION_3 #include using namespace Catch; #endif #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "common.h" using namespace pappso; using namespace std; // using namespace pwiz::msdata; // make test ARGS="-V -I 16,16" TEST_CASE("Xtandem spectrum test suite.", "[xtandemspectrum]") { // Set the debugging message formatting pattern. qSetMessagePattern(QString("%{file}@%{line}, %{function}(): %{message}")); SECTION("..:: readMgf ::..", "[xtandemspectrum]") { std::cout << std::endl << "..:: readMgf ::.." << QDir::currentPath().toStdString() << std::endl; MassSpectrum spectrum = readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")); std::cout << spectrum.toString().toStdString() << std::endl; MassSpectrum spectrum_orig(spectrum); REQUIRE(spectrum.equals(spectrum_orig, PrecisionFactory::getDaltonInstance(0.00002))); // spectrum = // spectrum.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100).round(); MassSpectrum spectrum_b = readMgf( QString(CMAKE_SOURCE_DIR).append("/tests/data/peaklist_15046.mgf")); REQUIRE(spectrum == spectrum_b); MassSpectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR) .append("/tests/data/peaklist_15046_simple_xt.mgf")) .massSpectrumFilter(MassSpectrumFilterGreatestItensities(7)); REQUIRE_FALSE(spectrum == spectrum_simple); std::vector expected_mass_list( {157.133, 175.119, 185.128, 308.188, 401.287, 886.535, 1072.6}); REQUIRE_THAT(spectrum_simple.xValues(), Catch::Approx(expected_mass_list).margin(0.00001)); std::vector expected_intensity_list( {100.0, 30.0, 42.0, 33.0, 27.0, 19.0, 21.0}); REQUIRE_THAT(spectrum_simple.yValues(), Catch::Approx(expected_intensity_list).margin(0.00001)); // mh="1256.7213" z=2 AIADGSLLDLLR Peptide peptide("AIADGSLLDLLR"); INFO("spectrum.removeParent"); XtandemSpectrumProcess xt_spectrum_process; xt_spectrum_process.setExcludeParent(true); xt_spectrum_process.setNmostIntense(7); xt_spectrum_process.setDynamicRange(100); xt_spectrum_process.setMinimumMz(150); // MassRange neutral_loss_mass = // xt_spectrum_process.getNeutralLossMassRange(peptide, 2); // spectrum= // spectrum.removeMassRange(neutral_loss_mass).applyCutOff(150).takeNmostIntense(7).applyDynamicRange(100).round(); spectrum = xt_spectrum_process.process(spectrum, 628.86414, 2); FilterRoundY().filter(spectrum); REQUIRE(peptide.makePeptideSp().get()->getMz(2) == Catch::Detail::Approx(628.8640771426)); spectrum.debugPrintValues(); spectrum_simple.debugPrintValues(); REQUIRE(spectrum.equals(spectrum_simple, PrecisionFactory::getDaltonInstance(0.02))); } } libpappsomspp-0.9.20/tests/config.h000644 001750 001750 00000000272 14533473271 020473 0ustar00rusconirusconi000000 000000 #pragma once #define CMAKE_SOURCE_DIR "/home/rusconi/devel/pappsomspp/development" #define CMAKE_BINARY_DIR "/home/rusconi/devel/pappsomspp/build-area/unix" /* #undef USEPAPPSOTREE */ libpappsomspp-0.9.20/AUTHORS000644 001750 001750 00000000175 14346367014 016764 0ustar00rusconirusconi000000 000000 Olivier Langella Filippo Rusconi libpappsomspp-0.9.20/BUILD_INSTRUCTIONS000644 001750 001750 00000004104 14346367014 020516 0ustar00rusconirusconi000000 000000 This project builds two libraries: - libpappsomspp - libpappsomspp-widget These libraries depend on the following libraries: zlib, qcustomplot, sqlite3, alglib, quazip5, zstd. CONFIGURATION OF THE BUILD ========================== UNIX NOT APPLE -------------- The dependency libraries are all available and no specific configuration steps should need to be taken. The build system will include the following file: CMakeStuff/toolchains/unix-toolchain.cmake Create a build directory and issue the following command replacing with Release or Debug: cmake -DCMAKE_BUILD_TYPE= path/to/source code root dir/ WIN10 with MINGW64 ------------------ The dependency libraries should be available at some location to be defined in the build system file: CMakeStuff/toolchains/win10-mingw64-toolchain.cmake The main CMakeLists.txt file allows one to define the main development directory where the code and build directories are located for all the dependency libraries: set(HOME_DEVEL_DIR $ENV{HOME}/devel) Using that variable, set, for each dependency library, the path to both the source code and the built libraries. Create a build directory and issue the following command replacing with Release or Debug: cmake -DCMAKE_BUILD_TYPE= path/to/source code root dir/ MXE on Debian ------------- The dependency libraries should be available at some location to be defined in the build system file: CMakeStuff/toolchains/mxe-toolchain.cmake The main CMakeLists.txt file allows one to define the main development directory where the code and build directories are located for all the dependency libraries: set(HOME_DEVEL_DIR $ENV{HOME}/devel) Using that variable, set, for each dependency library, the path to both the source code and the built libraries. Create a build directory and issue the following command replacing with Release or Debug: cmake -DCMAKE_BUILD_TYPE= path/to/source code root dir/ Apple MacOSX ------------ BUILD ===== Finally, run: VERBOSE=1 make The libraries should be created in the src/ and src/pappsomspp/widget directories. libpappsomspp-0.9.20/COPYING000644 001750 001750 00000104513 14346367014 016750 0ustar00rusconirusconi000000 000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . libpappsomspp-0.9.20/TODO000644 001750 001750 00000000137 14346367014 016402 0ustar00rusconirusconi000000 000000 Allow for an easy conversion between numeric values of MzFormat and their textual equivalent. libpappsomspp-0.9.20/_clang-format000644 001750 001750 00000005412 14346367014 020347 0ustar00rusconirusconi000000 000000 --- Language: Cpp # BasedOnStyle: LLVM AccessModifierOffset: 0 AlignAfterOpenBracket: Align AlignConsecutiveAssignments: true AlignConsecutiveDeclarations: false AlignEscapedNewlinesLeft: true AlignOperands: true AlignTrailingComments: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: None AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false # Deprecated AlwaysBreakAfterDefinitionReturnType: All AlwaysBreakAfterReturnType: AllDefinitions AlwaysBreakBeforeMultilineStrings: true AlwaysBreakTemplateDeclarations: true BinPackArguments: false BinPackParameters: false BraceWrapping: AfterClass: false AfterControlStatement: false AfterEnum: false AfterFunction: false AfterNamespace: false AfterObjCDeclaration: false AfterStruct: false AfterUnion: false BeforeCatch: false BeforeElse: false IndentBraces: false BreakAfterJavaFieldAnnotations: false BreakBeforeBinaryOperators: None BreakBeforeBraces: GNU BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: false BreakStringLiterals: true ColumnLimit: 80 CommentPragmas: '^ IWYU pragma:' ConstructorInitializerAllOnOneLineOrOnePerLine: true ConstructorInitializerIndentWidth: 2 ContinuationIndentWidth: 2 Cpp11BracedListStyle: true DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: false ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] IncludeCategories: - Regex: '^"(llvm|llvm-c|clang|clang-c)/' Priority: 2 - Regex: '^(<|"(gtest|isl|json)/)' Priority: 3 - Regex: '.*' Priority: 1 IncludeIsMainRegex: '$' IndentCaseLabels: true IndentWidth: 2 IndentWrappedFunctionNames: false JavaScriptQuotes: Leave KeepEmptyLinesAtTheStartOfBlocks: true # Language: Cpp MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 2 NamespaceIndentation: None FixNamespaceComments: true ObjCBlockIndentWidth: 2 ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Right ReflowComments: true SortIncludes: false SpaceAfterCStyleCast: false # SpaceAfterTemplateKeyword: false SpaceBeforeAssignmentOperators: true SpaceBeforeParens: Never SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInContainerLiterals: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 TabWidth: 2 UseTab: Never ... libpappsomspp-0.9.20/code-rewriting-and-merging000644 001750 001750 00000013166 14346367014 022753 0ustar00rusconirusconi000000 000000 Coding standards ================ When setting/retrieving member data, use the get/set paradigm. Do not use the get/set paradigm for any function that performs a computation not setting/getting a member datum. Note that the get/set function name needs to be formed using the exact member datum name with the "mxx_" prefix. When setting/retrieving boolean member data use setXxxx() and isXxxx(). Use std::size_t instead of unsigned int (or uint) when the standard library uses std::site_t. In the header files, #pragma once should be the first line of code. Then, the order of the inclusions should be: #include std stuff #include Qt stuff #include the header corresponding to the cpp file #include all header according to intuition For ordinary members: m_exampleVariableName; For pointer members =================== mp_variableNamePointer for a conventional pointer that is not allocated in the object and that does not need destruction in the class destructor mpa_xxx for a heap-allocated instance in the class that will need destruction msp_xxx for a shared pointer allocated using std::make_shared() mcsp_xxx for a constant shared pointer allocated using std::make_shared() Variables in function scope =========================== QualifiedMassSpectrum qualified_mass_spectrum; typedef std::shared_ptr MassSpectrumSPtr; typedef std::shared_ptr MassSpectrumCstSPtr; In the get/set function pair, declare/define first the set and then the get. Construction of objects and initialization ========================================== Construction of objects with initialization must be performed traditionally (C++98). Only when initializing a container, the braces ({xxx,xxx}) initialization is authorized. Proteowizard fournit des Vectors en sortie de fichier. Je suggere d'implémenter Trace et MassSpectrum comme des std::vector de new (struct DataPoint (x,y)); std::vector est le meilleur conteneur possible pour des données non mutables (les données dans les spectres de masse sont non mutables). Les données sont éminemment mutables quand il y a construction d'un spectre de masse par combinaison. Là, on fera du std:map. ~~~~~~~~~~~~~~~~~~~~~~~~ https://marcmutz.wordpress.com/effective-qt/containers/ QVector ======= So let’s break the spell right away: The default container should be vector (std or Q). While programmers trained in the STL won’t think about using anything else than a std::vector as a sequential container (until the profiler tells them to), and many who have read about the trick will even replace some uses of associative containers with (sorted) vectors, people who have (only) received Qt training reach out to QList by default. If you don’t yet understand why vectors should be preferred, please read The Good Book, or Effective STL, or, for that matter, Ulrich Drepper’s excellent paper What Every Programmer Should Know About Memory. However, while Amazon gets the shipment ready, do continue reading this article and start following the QVector is perhaps the Qt container closest akin to its STL counterpart. That it nonetheless performs worse than std::vector on many platforms is due to the fact that its internal structure is more complex (another indirection through the d-pointer, e.g.). Guideline: Prefer vector (std or Q) over QList.  QList ===== So, QList is not a good default container. But are there situations where QList is preferable over QVector? Sadly, the answer is no. It would be best if, come Qt 5, the Trolls just went and replaced all occurrences of QList with QVector. The few benchmarks in which QList outperforms QVector are either irrelevant in practice, or should be fixable by optimising QVector better. ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ https://www.dvratil.cz/2015/06/qt-containers-and-c11-range-based-loops/ Explique pourquoi dans certaines conditions, Q_FOREACH (const QString &v, myObject.getList()) { ... } est plus performant que for (const QString &v : myObject.getList()) { ... } The difference between the first example and this one is that the QStringList in this example is shared, i.e. reference count of it’s data is higher than 1. In this particular case one reference is held by myObject and one reference is held by the copy returned from the getList() method. That means that calling any non-const method on the list will call detach() and perform a deep copy of the list. And that is exactly what is happening in the range-based loop (but not in the Q_FOREACH loop) and that’s why the range-based loop is way slower than Q_FOREACH in this particular case. The example above could be even simpler, but this way it highlights the important fact that returning a copy from a method means that the copy is shared and has negative side-effects when used with range-based loops. Note that if the method would return a const reference to QStringList, everything would be OK (because const …). ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ https://web.archive.org/web/20160902015144/http://blog.codeimproved.net/posts/qtl-stl.html My opinion is that the biggest advantage of the QTL is that it has the same implementation (including binary compatibility) on all OSes supported by Qt. Some STL implementations might be below par when it comes to performance or they might be missing functionality. Some platforms don't even have an STL! On the other hand, the STL is more customizable and is available in its entirety in header files... Like I said, there is no clear winner. ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ http://www.acodersjourney.com/2016/11/6-tips-supercharge-cpp-11-vector-performance/ ~~~~~~~~~~~~~~~~~~~~~~~~ libpappsomspp-0.9.20/tags000644 001750 001750 00002400210 14346367014 016571 0ustar00rusconirusconi000000 000000  Session.vim /^imap  (UnicodeFuzzy)$/;" m g Session.vim /^imap g delimitMateJumpMany$/;" m  Session.vim /^imap  delimitMateBS$/;" m  Session.vim /^inoremap  pumvisible() ? "\\" : "\\ "$/;" m  Session.vim /^nnoremap  :call nerdtree#ui_glue#invokeKeyMap("")$/;" m  Session.vim /^inoremap  =UltiSnips#ExpandSnippet()$/;" m  Session.vim /^nnoremap $/;" m  Session.vim /^nnoremap  :YRReplace '1', p$/;" m  Session.vim /^map  (ctrlp)$/;" m  Session.vim /^vnoremap  "hy:%s\/h\/\/gc$/;" m  Session.vim /^imap  (HTMLEntityComplete)$/;" m  Session.vim /^imap  (DigraphComplete)$/;" m  Session.vim /^imap  (UnicodeComplete)$/;" m  Session.vim /^inoremap  $/;" m [200~ Session.vim /^inoremap [200~ XTermPasteBegin()$/;" m !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ !_TAG_PROGRAM_NAME Exuberant Ctags // !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ !_TAG_PROGRAM_VERSION 5.9~svn20110310 // " Session.vim /^imap " delimitMate"$/;" m ' Session.vim /^imap ' delimitMate'$/;" m ( Session.vim /^imap ( delimitMate($/;" m ) Session.vim /^imap ) delimitMate)$/;" m // Session.vim /^vnoremap \/\/ y\/"$/;" m 0 Session.vim /^normal! 0$/;" m 03| Session.vim /^normal! 03|$/;" m <2-LeftMouse> Session.vim /^nnoremap <2-LeftMouse> :call nerdtree#ui_glue#invokeKeyMap("<2-LeftMouse>")$/;" m Session.vim /^imap delimitMateBS$/;" m Session.vim /^imap (UnicodeFuzzy)$/;" m g Session.vim /^imap g delimitMateJumpMany$/;" m Session.vim /^imap delimitMateBS$/;" m Session.vim /^nnoremap :call nerdtree#ui_glue#invokeKeyMap("")$/;" m Session.vim /^nnoremap :call nerdtree#ui_glue#invokeKeyMap("")$/;" m Session.vim /^inoremap =UltiSnips#ExpandSnippet()$/;" m Session.vim /^nnoremap :YRReplace '1', p$/;" m Session.vim /^map (ctrlp)$/;" m Session.vim /^vnoremap "hy:%s\/h\/\/gc$/;" m Session.vim /^inoremap =UltiSnips#ListSnippets()$/;" m Session.vim /^imap (HTMLEntityComplete)$/;" m Session.vim /^imap (DigraphComplete)$/;" m Session.vim /^imap (UnicodeComplete)$/;" m Session.vim /^inoremap pumvisible() ? "\\" : "\\"$/;" m Session.vim /^nmap (MakeDigraph)$/;" m Session.vim /^vmap (MakeDigraph)$/;" m Session.vim /^nnoremap :Make$/;" m Session.vim /^nnoremap :call nerdtree#ui_glue#invokeKeyMap("")$/;" m Session.vim /^imap yankstack_substitute_newer_paste$/;" m Session.vim /^nmap yankstack_substitute_newer_paste$/;" m Session.vim /^imap yankstack_substitute_older_paste$/;" m Session.vim /^nmap yankstack_substitute_older_paste$/;" m Session.vim /^nnoremap :call nerdtree#ui_glue#invokeKeyMap("")$/;" m Session.vim /^nnoremap :call nerdtree#ui_glue#invokeKeyMap("")$/;" m Session.vim /^imap $/;" m (YCMFindSymbolInDocument) Session.vim /^nnoremap (YCMFindSymbolInDocument) :call youcompleteme#finder#FindSymbol( 'document' )$/;" m (YCMFindSymbolInWorkspace) Session.vim /^nnoremap (YCMFindSymbolInWorkspace) :call youcompleteme#finder#FindSymbol( 'workspace' )$/;" m (ctrlp) Session.vim /^nnoremap (ctrlp) :CtrlP$/;" m CamelCaseMotion_b Session.vim /^nnoremap CamelCaseMotion_b :call camelcasemotion#Motion('b',v:count1,'n')$/;" m CamelCaseMotion_b Session.vim /^onoremap CamelCaseMotion_b :call camelcasemotion#Motion('b',v:count1,'o')$/;" m CamelCaseMotion_b Session.vim /^vnoremap CamelCaseMotion_b :call camelcasemotion#Motion('b',v:count1,'v')$/;" m CamelCaseMotion_e Session.vim /^nnoremap CamelCaseMotion_e :call camelcasemotion#Motion('e',v:count1,'n')$/;" m CamelCaseMotion_e Session.vim /^onoremap CamelCaseMotion_e :call camelcasemotion#Motion('e',v:count1,'o')$/;" m CamelCaseMotion_e Session.vim /^vnoremap CamelCaseMotion_e :call camelcasemotion#Motion('e',v:count1,'v')$/;" m CamelCaseMotion_ge Session.vim /^nnoremap CamelCaseMotion_ge :call camelcasemotion#Motion('ge',v:count1,'n')$/;" m CamelCaseMotion_ge Session.vim /^onoremap CamelCaseMotion_ge :call camelcasemotion#Motion('ge',v:count1,'o')$/;" m CamelCaseMotion_ge Session.vim /^vnoremap CamelCaseMotion_ge :call camelcasemotion#Motion('ge',v:count1,'v')$/;" m CamelCaseMotion_ib Session.vim /^onoremap CamelCaseMotion_ib :call camelcasemotion#InnerMotion('b',v:count1)$/;" m CamelCaseMotion_ib Session.vim /^vnoremap CamelCaseMotion_ib :call camelcasemotion#InnerMotion('b',v:count1)$/;" m CamelCaseMotion_ie Session.vim /^onoremap CamelCaseMotion_ie :call camelcasemotion#InnerMotion('e',v:count1)$/;" m CamelCaseMotion_ie Session.vim /^vnoremap CamelCaseMotion_ie :call camelcasemotion#InnerMotion('e',v:count1)$/;" m CamelCaseMotion_ige Session.vim /^onoremap CamelCaseMotion_ige :call camelcasemotion#InnerMotion('ge',v:count1)$/;" m CamelCaseMotion_ige Session.vim /^vnoremap CamelCaseMotion_ige :call camelcasemotion#InnerMotion('ge',v:count1)$/;" m CamelCaseMotion_iw Session.vim /^onoremap CamelCaseMotion_iw :call camelcasemotion#InnerMotion('w',v:count1)$/;" m CamelCaseMotion_iw Session.vim /^vnoremap CamelCaseMotion_iw :call camelcasemotion#InnerMotion('w',v:count1)$/;" m CamelCaseMotion_w Session.vim /^nnoremap CamelCaseMotion_w :call camelcasemotion#Motion('w',v:count1,'n')$/;" m CamelCaseMotion_w Session.vim /^onoremap CamelCaseMotion_w :call camelcasemotion#Motion('w',v:count1,'o')$/;" m CamelCaseMotion_w Session.vim /^vnoremap CamelCaseMotion_w :call camelcasemotion#Motion('w',v:count1,'v')$/;" m NERDCommenterAlignBoth Session.vim /^nnoremap NERDCommenterAlignBoth :call nerdcommenter#Comment("n", "AlignBoth")$/;" m NERDCommenterAlignLeft Session.vim /^nnoremap NERDCommenterAlignLeft :call nerdcommenter#Comment("n", "AlignLeft")$/;" m NERDCommenterAltDelims Session.vim /^nnoremap NERDCommenterAltDelims :call nerdcommenter#SwitchToAlternativeDelimiters(1)$/;" m NERDCommenterAppend Session.vim /^nnoremap NERDCommenterAppend :call nerdcommenter#Comment("n", "Append")$/;" m NERDCommenterComment Session.vim /^nnoremap NERDCommenterComment :call nerdcommenter#Comment("n", "Comment")$/;" m NERDCommenterInsert Session.vim /^inoremap NERDCommenterInsert :call nerdcommenter#Comment('i', "Insert")$/;" m NERDCommenterInvert Session.vim /^nnoremap NERDCommenterInvert :call nerdcommenter#Comment("n", "Invert")$/;" m NERDCommenterMinimal Session.vim /^nnoremap NERDCommenterMinimal :call nerdcommenter#Comment("n", "Minimal")$/;" m NERDCommenterNested Session.vim /^nnoremap NERDCommenterNested :call nerdcommenter#Comment("n", "Nested")$/;" m NERDCommenterSexy Session.vim /^nnoremap NERDCommenterSexy :call nerdcommenter#Comment("n", "Sexy")$/;" m NERDCommenterToEOL Session.vim /^nnoremap NERDCommenterToEOL :call nerdcommenter#Comment("n", "ToEOL")$/;" m NERDCommenterToggle Session.vim /^nnoremap NERDCommenterToggle :call nerdcommenter#Comment("n", "Toggle")$/;" m NERDCommenterUncomment Session.vim /^nnoremap NERDCommenterUncomment :call nerdcommenter#Comment("n", "Uncomment")$/;" m NERDCommenterYank Session.vim /^nnoremap NERDCommenterYank :call nerdcommenter#Comment("n", "Yank")$/;" m NetrwBrowseX Session.vim /^nnoremap NetrwBrowseX :call netrw#BrowseX(netrw#GX(),netrw#CheckIfRemote(netrw#GX()))$/;" m delimitMateBS Session.vim /^inoremap delimitMateBS =delimitMate#BS()$/;" m delimitMateS-BS Session.vim /^inoremap delimitMateS-BS delimitMate#WithinEmptyPair() ? "\\" : "\\"$/;" m Session.vim /^imap delimitMateS-BS$/;" m Session.vim /^imap delimitMateS-Tab$/;" m 103_: Session.vim /^nnoremap 103_: :=v:count ? v:count : ''$/;" m 63_yrrecord Session.vim /^inoremap 63_yrrecord =YRRecord3()$/;" m 63_yrrecord Session.vim /^nnoremap 63_yrrecord :call YRRecord3()$/;" m Session.vim /^inoremap pumvisible() ? "\\" : "\\"$/;" m ? Session.vim /^nnoremap ? :call nerdtree#ui_glue#invokeKeyMap("?")$/;" m ?? Session.vim /^vnoremap ?? y?"$/;" m @ Session.vim /^nmap @ :YRMapsMacro$/;" m A Session.vim /^nnoremap A :call nerdtree#ui_glue#invokeKeyMap("A")$/;" m ARBITRARY src/pappsomspp/processing/combiners/mzintegrationparams.h /^ ARBITRARY,$/;" m class:pappso::BinningType Aa src/pappsomspp/amino_acid/aa.cpp /^Aa::Aa(Aa &&toCopy) \/\/ move constructor$/;" f class:pappso::Aa Aa src/pappsomspp/amino_acid/aa.cpp /^Aa::Aa(AminoAcidChar aa_char) : AaBase(aa_char)$/;" f class:pappso::Aa Aa src/pappsomspp/amino_acid/aa.cpp /^Aa::Aa(char aa_letter) : AaBase(aa_letter)$/;" f class:pappso::Aa Aa src/pappsomspp/amino_acid/aa.cpp /^Aa::Aa(const Aa &other) : AaBase(other), m_listMod(other.m_listMod)$/;" f class:pappso::Aa Aa src/pappsomspp/amino_acid/aa.h /^class PMSPP_LIB_DECL Aa : public AaBase$/;" c namespace:pappso AaBase src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaBase(AminoAcidChar aa_char) : m_aaLetter((char)aa_char)$/;" f class:pappso::AaBase AaBase src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaBase(char aa_letter) : m_aaLetter(aa_letter)$/;" f class:pappso::AaBase AaBase src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaBase(const AaBase &aa) : m_aaLetter(aa.m_aaLetter)$/;" f class:pappso::AaBase AaBase src/pappsomspp/amino_acid/aabase.h /^class AaBase : public AtomNumberInterface$/;" c namespace:pappso AaModification src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::AaModification(AaModification &&toCopy) \/\/ move constructor$/;" f class:pappso::AaModification AaModification src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::AaModification(const QString &accession, pappso_double mass)$/;" f class:pappso::AaModification AaModification src/pappsomspp/amino_acid/aamodification.h /^class PMSPP_LIB_DECL AaModification : public AtomNumberInterface$/;" c namespace:pappso AaModificationP src/pappsomspp/amino_acid/aamodification.h /^typedef const AaModification *AaModificationP;$/;" t namespace:pappso AaModificationUp src/pappsomspp/amino_acid/aamodification.h /^typedef std::unique_ptr AaModificationUp;$/;" t namespace:pappso AminoAcidChar src/pappsomspp/types.h /^enum class AminoAcidChar : char$/;" c class:pappso::MzFormat AtomIsotope src/pappsomspp/peptide/peptidenaturalisotope.cpp /^enum class AtomIsotope$/;" c namespace:pappso file: AtomIsotopeSurvey src/pappsomspp/types.h /^enum class AtomIsotopeSurvey : std::int8_t$/;" c namespace:pappso AtomNumberInterface src/pappsomspp/amino_acid/atomnumberinterface.h /^class AtomNumberInterface$/;" c namespace:pappso Axis src/pappsomspp/types.h /^enum class Axis : std::int8_t$/;" c class:pappso::MzFormat AxisScale src/pappsomspp/types.h /^enum class AxisScale : std::int8_t$/;" c class:pappso::MzFormat B Session.vim /^nnoremap B :call nerdtree#ui_glue#invokeKeyMap("B")$/;" m BOTTOM_LEFT_POINT src/pappsomspp/processing/combiners/selectionpolygon.h /^ BOTTOM_LEFT_POINT = 3,$/;" m class:pappso::PointSpecs BOTTOM_LINE src/pappsomspp/processing/combiners/selectionpolygon.h /^ BOTTOM_LINE = 1 << 1,$/;" m class:pappso::PolygonType BOTTOM_RIGHT_POINT src/pappsomspp/processing/combiners/selectionpolygon.h /^ BOTTOM_RIGHT_POINT = 2,$/;" m class:pappso::PointSpecs BOTTOM_TO_TOP src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ BOTTOM_TO_TOP = 1 << 3$/;" m class:pappso::DragDirections BaseColorMapPlotWidget src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::BaseColorMapPlotWidget(QWidget *parent)$/;" f class:pappso::BaseColorMapPlotWidget BaseColorMapPlotWidget src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::BaseColorMapPlotWidget(QWidget *parent,$/;" f class:pappso::BaseColorMapPlotWidget BaseColorMapPlotWidget src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^class PMSPP_LIB_DECL BaseColorMapPlotWidget : public BasePlotWidget$/;" c namespace:pappso BaseColorMapPlotWidgetCstSPtr src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^ BaseColorMapPlotWidgetCstSPtr;$/;" t namespace:pappso BaseColorMapPlotWidgetSPtr src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^typedef std::shared_ptr BaseColorMapPlotWidgetSPtr;$/;" t namespace:pappso BasePlotContext src/pappsomspp/widget/plotwidget/baseplotcontext.cpp /^BasePlotContext::BasePlotContext()$/;" f class:pappso::BasePlotContext BasePlotContext src/pappsomspp/widget/plotwidget/baseplotcontext.cpp /^BasePlotContext::BasePlotContext(const BasePlotContext &other)$/;" f class:pappso::BasePlotContext BasePlotContext src/pappsomspp/widget/plotwidget/baseplotcontext.h /^class PMSPP_LIB_DECL BasePlotContext$/;" c class:pappso::DragDirections BasePlotWidget src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::BasePlotWidget(QWidget *parent) : QCustomPlot(parent)$/;" f class:pappso::BasePlotWidget BasePlotWidget src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::BasePlotWidget(QWidget *parent,$/;" f class:pappso::BasePlotWidget BasePlotWidget src/pappsomspp/widget/plotwidget/baseplotwidget.h /^class PMSPP_LIB_DECL BasePlotWidget : public QCustomPlot$/;" c namespace:pappso BasePlotWidgetCstSPtr src/pappsomspp/widget/plotwidget/baseplotwidget.h /^typedef std::shared_ptr BasePlotWidgetCstSPtr;$/;" t namespace:pappso BasePlotWidgetSPtr src/pappsomspp/widget/plotwidget/baseplotwidget.h /^typedef std::shared_ptr BasePlotWidgetSPtr;$/;" t namespace:pappso BaseTracePlotWidget src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::BaseTracePlotWidget(QWidget *parent)$/;" f class:pappso::BaseTracePlotWidget BaseTracePlotWidget src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::BaseTracePlotWidget(QWidget *parent,$/;" f class:pappso::BaseTracePlotWidget BaseTracePlotWidget src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^class PMSPP_LIB_DECL BaseTracePlotWidget : public BasePlotWidget$/;" c namespace:pappso BaseTracePlotWidgetCstSPtr src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^typedef std::shared_ptr BaseTracePlotWidgetCstSPtr;$/;" t namespace:pappso BaseTracePlotWidgetSPtr src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^typedef std::shared_ptr BaseTracePlotWidgetSPtr;$/;" t namespace:pappso BinningType src/pappsomspp/processing/combiners/mzintegrationparams.h /^enum class BinningType$/;" c namespace:pappso BrukerPrecursorIndex src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ BrukerPrecursorIndex, \/\/\/< Bruker's Tims tof precursor index$/;" m class:pappso::QualifiedMassSpectrumParameter C Session.vim /^nnoremap C :call nerdtree#ui_glue#invokeKeyMap("C")$/;" m C src/pappsomspp/peptide/peptidenaturalisotope.cpp /^ C,$/;" m class:pappso::AtomIsotope file: C src/pappsomspp/types.h /^ C,$/;" m class:pappso::AtomIsotopeSurvey C13 src/pappsomspp/types.h /^ C13,$/;" m class:pappso::Isotope CACHE_ARRAY_SIZE src/pappsomspp/peptide/peptidenaturalisotope.cpp 42;" d file: CATCH_CONFIG_MAIN tests/catch-only-tests-main.cpp 1;" d file: CATCH_CONFIG_MAIN tests/test_fasta_reader.cpp 31;" d file: CATCH_CONFIG_MAIN tests/test_hyperscore.cpp 31;" d file: CATCH_CONFIG_MAIN tests/test_isotope_with_spectrum.cpp 32;" d file: CATCH_CONFIG_MAIN tests/test_msrunoutput.cpp 27;" d file: CATCH_CONFIG_MAIN tests/test_psm.cpp 33;" d file: CATCH_CONFIG_MAIN tests/test_scan_15968.cpp 30;" d file: CATCH_CONFIG_MAIN tests/test_xtandem_spectrum.cpp 30;" d file: CD Session.vim /^nnoremap CD :call nerdtree#ui_glue#invokeKeyMap("CD")$/;" m CMAKE_BINARY_DIR src/Makefile /^CMAKE_BINARY_DIR = \/home\/rusconi\/devel\/pappsomspp\/development\/src$/;" m CMAKE_COMMAND src/Makefile /^CMAKE_COMMAND = \/usr\/bin\/cmake$/;" m CMAKE_SOURCE_DIR src/Makefile /^CMAKE_SOURCE_DIR = \/home\/rusconi\/devel\/pappsomspp\/development$/;" m CollisionEnergy src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ CollisionEnergy, \/\/\/< Bruker's Tims tof collision energy$/;" m class:pappso::QualifiedMassSpectrumParameter ColorMapPlotConfig src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::ColorMapPlotConfig()$/;" f class:pappso::ColorMapPlotConfig ColorMapPlotConfig src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::ColorMapPlotConfig(DataKind x_axis_data_kind,$/;" f class:pappso::ColorMapPlotConfig ColorMapPlotConfig src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::ColorMapPlotConfig(const ColorMapPlotConfig &other)$/;" f class:pappso::ColorMapPlotConfig ColorMapPlotConfig src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^struct PMSPP_LIB_DECL ColorMapPlotConfig$/;" s namespace:pappso Combinations src/pappsomspp/peptide/peptidenaturalisotope.cpp /^Combinations(unsigned int n, unsigned int k)$/;" f namespace:pappso ComputeRetentionTimeReference src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ enum class ComputeRetentionTimeReference$/;" c class:pappso::MsRunRetentionTime ContainsAny src/pappsomspp/grouping/grpexperiment.cpp /^ ContainsAny(const GrpPeptideSet &peptide_set) : _peptide_set(peptide_set)$/;" f struct:ContainsAny ContainsAny src/pappsomspp/grouping/grpexperiment.cpp /^struct ContainsAny$/;" s file: Cter src/pappsomspp/peptide/peptide.h /^ Cter = 1$/;" m class:pappso::PeptideDirection CterRemoval src/pappsomspp/psm/deepprot/deepprotenum.h /^ CterRemoval = 2,$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus CustomHandler tests/test_xic.cpp /^ CustomHandler(Trace &xic) : _xic(xic)$/;" f class:CustomHandler CustomHandler tests/test_xic.cpp /^class CustomHandler : public OdsDocHandlerInterface$/;" c file: D Session.vim /^nnoremap D :call nerdtree#ui_glue#invokeKeyMap("D")$/;" m DATA_BASED src/pappsomspp/processing/combiners/mzintegrationparams.h /^ DATA_BASED,$/;" m class:pappso::BinningType DEB_BUILD_MAINT_OPTIONS debian/rules /^export DEB_BUILD_MAINT_OPTIONS = hardening=+all$/;" m DEB_HOST_MULTIARCH debian/rules /^export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)$/;" m DPKG_EXPORT_BUILDFLAGS debian/rules /^DPKG_EXPORT_BUILDFLAGS = 1$/;" m DaltonPrecision src/pappsomspp/precision.cpp /^DaltonPrecision::DaltonPrecision(pappso_double x) : PrecisionBase(x)$/;" f class:pappso::DaltonPrecision DaltonPrecision src/pappsomspp/precision.h /^class PMSPP_LIB_DECL DaltonPrecision : public PrecisionBase$/;" c namespace:pappso DataCompression src/pappsomspp/types.h /^enum class DataCompression : std::int8_t$/;" c class:pappso::MzFormat DataDimension src/pappsomspp/processing/combiners/selectionpolygon.h /^enum class DataDimension$/;" c namespace:pappso DataKind src/pappsomspp/types.h /^enum class DataKind : std::int8_t$/;" c class:pappso::MzFormat DataPoint src/pappsomspp/trace/datapoint.cpp /^DataPoint::DataPoint()$/;" f class:pappso::DataPoint DataPoint src/pappsomspp/trace/datapoint.cpp /^DataPoint::DataPoint(const DataPoint &other) : x(other.x), y(other.y)$/;" f class:pappso::DataPoint DataPoint src/pappsomspp/trace/datapoint.cpp /^DataPoint::DataPoint(const QString &text)$/;" f class:pappso::DataPoint DataPoint src/pappsomspp/trace/datapoint.cpp /^DataPoint::DataPoint(pappso_double x, pappso_double y) : x(x), y(y)$/;" f class:pappso::DataPoint DataPoint src/pappsomspp/trace/datapoint.cpp /^DataPoint::DataPoint(std::pair pair)$/;" f class:pappso::DataPoint DataPoint src/pappsomspp/trace/datapoint.h /^struct PMSPP_LIB_DECL DataPoint$/;" s namespace:pappso DataPointCstSPtr src/pappsomspp/trace/datapoint.h /^Q_DECLARE_METATYPE(pappso::DataPointCstSPtr);$/;" v DataPointCstSPtr src/pappsomspp/trace/datapoint.h /^typedef std::shared_ptr DataPointCstSPtr;$/;" t namespace:pappso DataPointInfo src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ struct DataPointInfo$/;" s class:pappso::FilterChargeDeconvolution DataPointInfoSp src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ typedef std::shared_ptr DataPointInfoSp;$/;" t class:pappso::FilterChargeDeconvolution DeepProtEnumStr src/pappsomspp/psm/deepprot/deepprotenum.h /^class PMSPP_LIB_DECL DeepProtEnumStr$/;" c class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus DeepProtMatchType src/pappsomspp/psm/deepprot/deepprotenum.h /^enum class DeepProtMatchType : std::uint8_t$/;" c namespace:pappso DeepProtMatchTypeFromString src/pappsomspp/psm/deepprot/deepprotenum.cpp /^pappso::DeepProtEnumStr::DeepProtMatchTypeFromString(const QString &name)$/;" f class:pappso::DeepProtEnumStr DeepProtPeptideCandidateStatus src/pappsomspp/psm/deepprot/deepprotenum.h /^enum class DeepProtPeptideCandidateStatus : std::uint8_t$/;" c class:pappso::DeepProtMatchType DeepProtPeptideCandidateStatusFromString src/pappsomspp/psm/deepprot/deepprotenum.cpp /^pappso::DeepProtEnumStr::DeepProtPeptideCandidateStatusFromString($/;" f class:pappso::DeepProtEnumStr DeltaPosition src/pappsomspp/psm/deepprot/deepprotenum.h /^ DeltaPosition = 5,$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus DeltaPosition src/pappsomspp/psm/deepprot/deepprotenum.h /^ DeltaPosition = 4, \/\/\/< spectrum shifter on peptide candidate has detected a$/;" m class:pappso::DeepProtMatchType DigestionHandler tests/test_protein.cpp /^class DigestionHandler : public EnzymeProductInterface$/;" c namespace:pappso file: DragDirections src/pappsomspp/widget/plotwidget/baseplotcontext.h /^enum class DragDirections$/;" c namespace:pappso DriftSpecMassSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::DriftSpecMassSpecColorMapPlotWidget($/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget DriftSpecMassSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^class PMSPP_LIB_DECL DriftSpecMassSpecColorMapPlotWidget$/;" c namespace:pappso DriftSpecTracePlotWidget src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::DriftSpecTracePlotWidget(QWidget *parent,$/;" f class:pappso::DriftSpecTracePlotWidget DriftSpecTracePlotWidget src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^class PMSPP_LIB_DECL DriftSpecTracePlotWidget : public BaseTracePlotWidget$/;" c namespace:pappso ENUM_LAST src/pappsomspp/processing/combiners/selectionpolygon.h /^ ENUM_LAST = 4,$/;" m class:pappso::PointSpecs EQUALS src/Makefile /^EQUALS = =$/;" m Enzyme src/pappsomspp/protein/enzyme.cpp /^Enzyme::Enzyme()$/;" f class:pappso::Enzyme Enzyme src/pappsomspp/protein/enzyme.cpp /^Enzyme::Enzyme(const QString &recognition_site)$/;" f class:pappso::Enzyme Enzyme src/pappsomspp/protein/enzyme.h /^class PMSPP_LIB_DECL Enzyme$/;" c namespace:pappso EnzymeProductInterface src/pappsomspp/protein/enzymeproductinterface.h /^class EnzymeProductInterface$/;" c namespace:pappso ExceptionInterrupted src/pappsomspp/exception/exceptioninterrupted.h /^ ExceptionInterrupted(const QString &message) throw()$/;" f class:pappso::ExceptionInterrupted ExceptionInterrupted src/pappsomspp/exception/exceptioninterrupted.h /^class ExceptionInterrupted : public PappsoException$/;" c namespace:pappso ExceptionNotFound src/pappsomspp/exception/exceptionnotfound.h /^ ExceptionNotFound(const QString &message) throw() : PappsoException(message)$/;" f class:pappso::ExceptionNotFound ExceptionNotFound src/pappsomspp/exception/exceptionnotfound.h /^class ExceptionNotFound : public PappsoException$/;" c namespace:pappso ExceptionNotImplemented src/pappsomspp/exception/exceptionnotimplemented.h /^ ExceptionNotImplemented(const QString &message) throw()$/;" f class:pappso::ExceptionNotImplemented ExceptionNotImplemented src/pappsomspp/exception/exceptionnotimplemented.h /^class ExceptionNotImplemented : public PappsoException$/;" c namespace:pappso ExceptionNotPossible src/pappsomspp/exception/exceptionnotpossible.h /^ ExceptionNotPossible(const QString &message) throw()$/;" f class:pappso::ExceptionNotPossible ExceptionNotPossible src/pappsomspp/exception/exceptionnotpossible.h /^class ExceptionNotPossible : public PappsoException$/;" c namespace:pappso ExceptionNotRecognized src/pappsomspp/exception/exceptionnotrecognized.h /^ ExceptionNotRecognized(const QString &message) throw()$/;" f class:pappso::ExceptionNotRecognized ExceptionNotRecognized src/pappsomspp/exception/exceptionnotrecognized.h /^class ExceptionNotRecognized : public PappsoException$/;" c namespace:pappso ExceptionOutOfRange src/pappsomspp/exception/exceptionoutofrange.h /^ ExceptionOutOfRange(const QString &message) throw() : PappsoException(message)$/;" f class:pappso::ExceptionOutOfRange ExceptionOutOfRange src/pappsomspp/exception/exceptionoutofrange.h /^class ExceptionOutOfRange : public PappsoException$/;" c namespace:pappso F Session.vim /^nnoremap F :call nerdtree#ui_glue#invokeKeyMap("F")$/;" m FULL_POLYGON src/pappsomspp/processing/combiners/selectionpolygon.h /^ FULL_POLYGON = (HORIZONTAL_LINES | VERTICAL_LINES)$/;" m class:pappso::PolygonType FastaFileIndexer src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::FastaFileIndexer(const FastaFileIndexer &other)$/;" f class:pappso::FastaFileIndexer FastaFileIndexer src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::FastaFileIndexer(const QFileInfo &fastaFile)$/;" f class:pappso::FastaFileIndexer FastaFileIndexer src/pappsomspp/fasta/fastafileindexer.h /^class PMSPP_LIB_DECL FastaFileIndexer : public FastaFileIndexerInterface$/;" c namespace:pappso FastaFileIndexerInterface src/pappsomspp/fasta/fastafileindexer.h /^class PMSPP_LIB_DECL FastaFileIndexerInterface$/;" c namespace:pappso FastaFileIndexerSPtr src/pappsomspp/fasta/fastafileindexer.h /^typedef std::shared_ptr FastaFileIndexerSPtr;$/;" t namespace:pappso FastaHandlerInterface src/pappsomspp/fasta/fastahandlerinterface.h /^class FastaHandlerInterface$/;" c namespace:pappso FastaOutputStream src/pappsomspp/fasta/fastaoutputstream.cpp /^FastaOutputStream::FastaOutputStream(QTextStream &otxtstream)$/;" f class:pappso::FastaOutputStream FastaOutputStream src/pappsomspp/fasta/fastaoutputstream.h /^class PMSPP_LIB_DECL FastaOutputStream : public FastaWriterInterface$/;" c namespace:pappso FastaReader src/pappsomspp/fasta/fastareader.cpp /^FastaReader::FastaReader(FastaHandlerInterface &handler) : m_handler(handler)$/;" f class:pappso::FastaReader FastaReader src/pappsomspp/fasta/fastareader.h /^class PMSPP_LIB_DECL FastaReader$/;" c namespace:pappso FastaSeq tests/test_fasta_reader.cpp /^class FastaSeq : public pappso::FastaHandlerInterface$/;" c file: FastaWriterInterface src/pappsomspp/fasta/fastawriterinterface.h /^class FastaWriterInterface$/;" c namespace:pappso FileReaderType src/pappsomspp/msfile/msfileaccessor.h /^enum class FileReaderType$/;" c namespace:pappso FilterCeilingAmplitudePercentage src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::FilterCeilingAmplitudePercentage($/;" f class:pappso::FilterCeilingAmplitudePercentage FilterCeilingAmplitudePercentage src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^class PMSPP_LIB_DECL FilterCeilingAmplitudePercentage : public FilterNameInterface$/;" c namespace:pappso FilterCeilingAmplitudePercentageCstSPtr src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^typedef std::shared_ptr FilterCeilingAmplitudePercentageCstSPtr;$/;" t namespace:pappso FilterCeilingAmplitudePercentageSPtr src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^typedef std::shared_ptr FilterCeilingAmplitudePercentageSPtr;$/;" t namespace:pappso FilterChargeDeconvolution src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^FilterChargeDeconvolution::FilterChargeDeconvolution($/;" f class:FilterChargeDeconvolution FilterChargeDeconvolution src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^FilterChargeDeconvolution::FilterChargeDeconvolution(PrecisionPtr precision_ptr)$/;" f class:FilterChargeDeconvolution FilterChargeDeconvolution src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::FilterChargeDeconvolution($/;" f class:pappso::FilterChargeDeconvolution FilterChargeDeconvolution src/pappsomspp/processing/filters/filterchargedeconvolution.h /^class PMSPP_LIB_DECL FilterChargeDeconvolution : public FilterNameInterface$/;" c namespace:pappso FilterComplementIonEnhancer src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^FilterComplementIonEnhancer::FilterComplementIonEnhancer($/;" f class:FilterComplementIonEnhancer FilterComplementIonEnhancer src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^pappso::FilterComplementIonEnhancer::FilterComplementIonEnhancer($/;" f class:pappso::FilterComplementIonEnhancer FilterComplementIonEnhancer src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^class PMSPP_LIB_DECL FilterComplementIonEnhancer : public FilterNameInterface$/;" c namespace:pappso FilterFloorAmplitudePercentage src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::FilterFloorAmplitudePercentage($/;" f class:pappso::FilterFloorAmplitudePercentage FilterFloorAmplitudePercentage src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^class PMSPP_LIB_DECL FilterFloorAmplitudePercentage : public FilterNameInterface$/;" c namespace:pappso FilterFloorAmplitudePercentageCstSPtr src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^ FilterFloorAmplitudePercentageCstSPtr;$/;" t namespace:pappso FilterFloorAmplitudePercentageSPtr src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^ FilterFloorAmplitudePercentageSPtr;$/;" t namespace:pappso FilterFloorY src/pappsomspp/processing/filters/filterpass.cpp /^FilterFloorY::FilterFloorY()$/;" f class:FilterFloorY FilterFloorY src/pappsomspp/processing/filters/filterpass.cpp /^FilterFloorY::FilterFloorY([[maybe_unused]] const FilterFloorY &other)$/;" f class:FilterFloorY FilterFloorY src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterFloorY : public FilterInterface$/;" c namespace:pappso FilterGreatestY src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestY::FilterGreatestY(const FilterGreatestY &other)$/;" f class:FilterGreatestY FilterGreatestY src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestY::FilterGreatestY(std::size_t number_of_points)$/;" f class:FilterGreatestY FilterGreatestY src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterGreatestY : public FilterInterface$/;" c namespace:pappso FilterGreatestYperWindow src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestYperWindow::FilterGreatestYperWindow($/;" f class:FilterGreatestYperWindow FilterGreatestYperWindow src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterGreatestYperWindow : public FilterInterface$/;" c namespace:pappso FilterHighPass src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPass::FilterHighPass(const FilterHighPass &other)$/;" f class:FilterHighPass FilterHighPass src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPass::FilterHighPass(double pass_y) : m_passY(pass_y)$/;" f class:FilterHighPass FilterHighPass src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterHighPass : public FilterInterface$/;" c namespace:pappso FilterHighPassPercentage src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPassPercentage::FilterHighPassPercentage($/;" f class:FilterHighPassPercentage FilterHighPassPercentage src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPassPercentage::FilterHighPassPercentage(double ratio_pass_y)$/;" f class:FilterHighPassPercentage FilterHighPassPercentage src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterHighPassPercentage : public FilterInterface$/;" c namespace:pappso FilterInterface src/pappsomspp/processing/filters/filterinterface.h /^class PMSPP_LIB_DECL FilterInterface$/;" c namespace:pappso FilterInterfaceCstSPtr src/pappsomspp/processing/filters/filterinterface.h /^typedef std::shared_ptr FilterInterfaceCstSPtr;$/;" t namespace:pappso FilterInterfaceSPtr src/pappsomspp/processing/filters/filterinterface.h /^typedef std::shared_ptr FilterInterfaceSPtr;$/;" t namespace:pappso FilterLocalMaximum src/pappsomspp/processing/filters/filterlocalmaximum.cpp /^FilterLocalMaximum::FilterLocalMaximum(const FilterLocalMaximum &other)$/;" f class:FilterLocalMaximum FilterLocalMaximum src/pappsomspp/processing/filters/filterlocalmaximum.cpp /^FilterLocalMaximum::FilterLocalMaximum(std::size_t half_window_size)$/;" f class:FilterLocalMaximum FilterLocalMaximum src/pappsomspp/processing/filters/filterlocalmaximum.h /^class PMSPP_LIB_DECL FilterLocalMaximum : public FilterInterface$/;" c namespace:pappso FilterLowIntensitySignalRemoval src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::FilterLowIntensitySignalRemoval($/;" f class:pappso::FilterLowIntensitySignalRemoval FilterLowIntensitySignalRemoval src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^class PMSPP_LIB_DECL FilterLowIntensitySignalRemoval$/;" c namespace:pappso FilterLowIntensitySignalRemovalCstSPtr src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ FilterLowIntensitySignalRemovalCstSPtr;$/;" t namespace:pappso FilterLowIntensitySignalRemovalSPtr src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ FilterLowIntensitySignalRemovalSPtr;$/;" t namespace:pappso FilterLowPass src/pappsomspp/processing/filters/filterpass.cpp /^FilterLowPass::FilterLowPass(const FilterLowPass &other)$/;" f class:FilterLowPass FilterLowPass src/pappsomspp/processing/filters/filterpass.cpp /^FilterLowPass::FilterLowPass(double pass_y) : m_passY(pass_y)$/;" f class:FilterLowPass FilterLowPass src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterLowPass : public FilterInterface$/;" c namespace:pappso FilterMorphoAntiSpike src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoAntiSpike::FilterMorphoAntiSpike(const FilterMorphoAntiSpike &other)$/;" f class:FilterMorphoAntiSpike FilterMorphoAntiSpike src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoAntiSpike::FilterMorphoAntiSpike(std::size_t half_window_size)$/;" f class:FilterMorphoAntiSpike FilterMorphoAntiSpike src/pappsomspp/processing/filters/filtermorpho.cpp /^pappso::FilterMorphoAntiSpike::FilterMorphoAntiSpike($/;" f class:pappso::FilterMorphoAntiSpike FilterMorphoAntiSpike src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoAntiSpike : public FilterNameInterface$/;" c namespace:pappso FilterMorphoBackground src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoBackground::FilterMorphoBackground($/;" f class:FilterMorphoBackground FilterMorphoBackground src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoBackground : public FilterInterface$/;" c namespace:pappso FilterMorphoMax src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMax::FilterMorphoMax(const FilterMorphoMax &other)$/;" f class:FilterMorphoMax FilterMorphoMax src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMax::FilterMorphoMax(std::size_t half_window_size)$/;" f class:FilterMorphoMax FilterMorphoMax src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoMax : public FilterMorphoWindowBase$/;" c namespace:pappso FilterMorphoMaxMin src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMaxMin::FilterMorphoMaxMin(const FilterMorphoMaxMin &other)$/;" f class:FilterMorphoMaxMin FilterMorphoMaxMin src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMaxMin::FilterMorphoMaxMin(std::size_t half_window_size)$/;" f class:FilterMorphoMaxMin FilterMorphoMaxMin src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoMaxMin : public FilterInterface$/;" c namespace:pappso FilterMorphoMean src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMean::FilterMorphoMean(const FilterMorphoMean &other)$/;" f class:FilterMorphoMean FilterMorphoMean src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMean::FilterMorphoMean(std::size_t half_window_size)$/;" f class:FilterMorphoMean FilterMorphoMean src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoMean : public FilterMorphoWindowBase$/;" c namespace:pappso FilterMorphoMedian src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMedian::FilterMorphoMedian(const FilterMorphoMedian &other)$/;" f class:FilterMorphoMedian FilterMorphoMedian src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMedian::FilterMorphoMedian(std::size_t half_window_size)$/;" f class:FilterMorphoMedian FilterMorphoMedian src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoMedian : public FilterMorphoWindowBase$/;" c namespace:pappso FilterMorphoMin src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMin::FilterMorphoMin(const FilterMorphoMin &other)$/;" f class:FilterMorphoMin FilterMorphoMin src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMin::FilterMorphoMin(std::size_t half_window_size)$/;" f class:FilterMorphoMin FilterMorphoMin src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoMin : public FilterMorphoWindowBase$/;" c namespace:pappso FilterMorphoMinMax src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMinMax::FilterMorphoMinMax(const FilterMorphoMinMax &other)$/;" f class:FilterMorphoMinMax FilterMorphoMinMax src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMinMax::FilterMorphoMinMax(std::size_t half_window_size)$/;" f class:FilterMorphoMinMax FilterMorphoMinMax src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoMinMax : public FilterInterface$/;" c namespace:pappso FilterMorphoSum src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoSum::FilterMorphoSum(const FilterMorphoSum &other)$/;" f class:FilterMorphoSum FilterMorphoSum src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoSum::FilterMorphoSum(std::size_t half_window_size)$/;" f class:FilterMorphoSum FilterMorphoSum src/pappsomspp/processing/filters/filtermorpho.h /^class PMSPP_LIB_DECL FilterMorphoSum : public FilterMorphoWindowBase$/;" c namespace:pappso FilterMorphoWindowBase src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoWindowBase::FilterMorphoWindowBase($/;" f class:FilterMorphoWindowBase FilterMorphoWindowBase src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoWindowBase::FilterMorphoWindowBase(std::size_t half_window_size)$/;" f class:FilterMorphoWindowBase FilterMorphoWindowBase src/pappsomspp/processing/filters/filtermorpho.h /^class FilterMorphoWindowBase : public FilterInterface$/;" c namespace:pappso FilterMzExclusion src/pappsomspp/processing/filters/filterexclusionmz.cpp /^FilterMzExclusion::FilterMzExclusion(const QString &strBuildParams)$/;" f class:FilterMzExclusion FilterMzExclusion src/pappsomspp/processing/filters/filterexclusionmz.cpp /^FilterMzExclusion::FilterMzExclusion(const pappso::FilterMzExclusion &other)$/;" f class:FilterMzExclusion FilterMzExclusion src/pappsomspp/processing/filters/filterexclusionmz.cpp /^FilterMzExclusion::FilterMzExclusion(pappso::PrecisionPtr precision_ptr)$/;" f class:FilterMzExclusion FilterMzExclusion src/pappsomspp/processing/filters/filterexclusionmz.h /^class PMSPP_LIB_DECL FilterMzExclusion : public FilterNameInterface$/;" c namespace:pappso FilterNameInterface src/pappsomspp/processing/filters/filternameinterface.h /^class PMSPP_LIB_DECL FilterNameInterface : public FilterInterface$/;" c namespace:pappso FilterNameInterfaceCstSPtr src/pappsomspp/processing/filters/filternameinterface.h /^typedef std::shared_ptr FilterNameInterfaceCstSPtr;$/;" t namespace:pappso FilterNameInterfaceSPtr src/pappsomspp/processing/filters/filternameinterface.h /^typedef std::shared_ptr FilterNameInterfaceSPtr;$/;" t namespace:pappso FilterOboPsiModSink src/pappsomspp/obo/filterobopsimodsink.cpp /^FilterOboPsiModSink::FilterOboPsiModSink()$/;" f class:pappso::FilterOboPsiModSink FilterOboPsiModSink src/pappsomspp/obo/filterobopsimodsink.h /^class PMSPP_LIB_DECL FilterOboPsiModSink : public OboPsiModHandlerInterface$/;" c namespace:pappso FilterOboPsiModTermAccession src/pappsomspp/obo/filterobopsimodtermaccession.cpp /^FilterOboPsiModTermAccession::FilterOboPsiModTermAccession($/;" f class:pappso::FilterOboPsiModTermAccession FilterOboPsiModTermAccession src/pappsomspp/obo/filterobopsimodtermaccession.h /^class PMSPP_LIB_DECL FilterOboPsiModTermAccession$/;" c namespace:pappso FilterOboPsiModTermDiffMono src/pappsomspp/obo/filterobopsimodtermdiffmono.cpp /^FilterOboPsiModTermDiffMono::FilterOboPsiModTermDiffMono($/;" f class:pappso::FilterOboPsiModTermDiffMono FilterOboPsiModTermDiffMono src/pappsomspp/obo/filterobopsimodtermdiffmono.h /^class PMSPP_LIB_DECL FilterOboPsiModTermDiffMono$/;" c namespace:pappso FilterOboPsiModTermLabel src/pappsomspp/obo/filterobopsimodtermlabel.cpp /^FilterOboPsiModTermLabel::FilterOboPsiModTermLabel($/;" f class:pappso::FilterOboPsiModTermLabel FilterOboPsiModTermLabel src/pappsomspp/obo/filterobopsimodtermlabel.h /^class PMSPP_LIB_DECL FilterOboPsiModTermLabel : public OboPsiModHandlerInterface$/;" c namespace:pappso FilterOboPsiModTermName src/pappsomspp/obo/filterobopsimodtermname.cpp /^FilterOboPsiModTermName::FilterOboPsiModTermName($/;" f class:pappso::FilterOboPsiModTermName FilterOboPsiModTermName src/pappsomspp/obo/filterobopsimodtermname.h /^class PMSPP_LIB_DECL FilterOboPsiModTermName : public OboPsiModHandlerInterface$/;" c namespace:pappso FilterQuantileBasedRemoveY src/pappsomspp/processing/filters/filterpass.cpp /^FilterQuantileBasedRemoveY::FilterQuantileBasedRemoveY($/;" f class:FilterQuantileBasedRemoveY FilterQuantileBasedRemoveY src/pappsomspp/processing/filters/filterpass.cpp /^FilterQuantileBasedRemoveY::FilterQuantileBasedRemoveY(double quantile)$/;" f class:FilterQuantileBasedRemoveY FilterQuantileBasedRemoveY src/pappsomspp/processing/filters/filterpass.cpp /^pappso::FilterQuantileBasedRemoveY::FilterQuantileBasedRemoveY($/;" f class:pappso::FilterQuantileBasedRemoveY FilterQuantileBasedRemoveY src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterQuantileBasedRemoveY : public FilterNameInterface$/;" c namespace:pappso FilterRemoveC13 src/pappsomspp/processing/filters/filterremovec13.cpp /^FilterRemoveC13::FilterRemoveC13(PrecisionPtr precision_ptr)$/;" f class:FilterRemoveC13 FilterRemoveC13 src/pappsomspp/processing/filters/filterremovec13.cpp /^FilterRemoveC13::FilterRemoveC13(const FilterRemoveC13 &other)$/;" f class:FilterRemoveC13 FilterRemoveC13 src/pappsomspp/processing/filters/filterremovec13.h /^class PMSPP_LIB_DECL FilterRemoveC13 : public FilterInterface$/;" c namespace:pappso FilterRemoveY src/pappsomspp/processing/filters/filterpass.cpp /^FilterRemoveY::FilterRemoveY(const FilterRemoveY &other)$/;" f class:FilterRemoveY FilterRemoveY src/pappsomspp/processing/filters/filterpass.cpp /^FilterRemoveY::FilterRemoveY(double valueToRemove)$/;" f class:FilterRemoveY FilterRemoveY src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterRemoveY : public FilterInterface$/;" c namespace:pappso FilterResampleKeepGreater src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepGreater::FilterResampleKeepGreater($/;" f class:pappso::FilterResampleKeepGreater FilterResampleKeepGreater src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepGreater::FilterResampleKeepGreater(double x_value)$/;" f class:pappso::FilterResampleKeepGreater FilterResampleKeepGreater src/pappsomspp/processing/filters/filterresample.h /^class PMSPP_LIB_DECL FilterResampleKeepGreater : public FilterInterface$/;" c namespace:pappso FilterResampleKeepPointInPolygon src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepPointInPolygon::FilterResampleKeepPointInPolygon($/;" f class:pappso::FilterResampleKeepPointInPolygon FilterResampleKeepPointInPolygon src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepPointInPolygon::FilterResampleKeepPointInPolygon()$/;" f class:pappso::FilterResampleKeepPointInPolygon FilterResampleKeepPointInPolygon src/pappsomspp/processing/filters/filterresample.h /^class PMSPP_LIB_DECL FilterResampleKeepPointInPolygon : public FilterInterface$/;" c namespace:pappso FilterResampleKeepSmaller src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepSmaller::FilterResampleKeepSmaller($/;" f class:pappso::FilterResampleKeepSmaller FilterResampleKeepSmaller src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepSmaller::FilterResampleKeepSmaller(double x_value)$/;" f class:pappso::FilterResampleKeepSmaller FilterResampleKeepSmaller src/pappsomspp/processing/filters/filterresample.h /^class PMSPP_LIB_DECL FilterResampleKeepSmaller : public FilterInterface$/;" c namespace:pappso FilterResampleKeepXRange src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepXRange::FilterResampleKeepXRange($/;" f class:pappso::FilterResampleKeepXRange FilterResampleKeepXRange src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepXRange::FilterResampleKeepXRange(double min_x, double max_x)$/;" f class:pappso::FilterResampleKeepXRange FilterResampleKeepXRange src/pappsomspp/processing/filters/filterresample.h /^class PMSPP_LIB_DECL FilterResampleKeepXRange : public FilterInterface$/;" c namespace:pappso FilterResampleRemoveXRange src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleRemoveXRange::FilterResampleRemoveXRange($/;" f class:pappso::FilterResampleRemoveXRange FilterResampleRemoveXRange src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleRemoveXRange::FilterResampleRemoveXRange(double min_x,$/;" f class:pappso::FilterResampleRemoveXRange FilterResampleRemoveXRange src/pappsomspp/processing/filters/filterresample.h /^class PMSPP_LIB_DECL FilterResampleRemoveXRange : public FilterInterface$/;" c namespace:pappso FilterRescaleY src/pappsomspp/processing/filters/filterpass.cpp /^FilterRescaleY::FilterRescaleY(const FilterRescaleY &other)$/;" f class:FilterRescaleY FilterRescaleY src/pappsomspp/processing/filters/filterpass.cpp /^FilterRescaleY::FilterRescaleY(double dynamic) : m_dynamic(dynamic)$/;" f class:FilterRescaleY FilterRescaleY src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterRescaleY : public FilterInterface$/;" c namespace:pappso FilterRoundY src/pappsomspp/processing/filters/filterpass.cpp /^FilterRoundY::FilterRoundY()$/;" f class:FilterRoundY FilterRoundY src/pappsomspp/processing/filters/filterpass.cpp /^FilterRoundY::FilterRoundY([[maybe_unused]] const FilterRoundY &other)$/;" f class:FilterRoundY FilterRoundY src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterRoundY : public FilterInterface$/;" c namespace:pappso FilterSavitzkyGolay src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::FilterSavitzkyGolay($/;" f class:pappso::FilterSavitzkyGolay FilterSavitzkyGolay src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::FilterSavitzkyGolay(const FilterSavitzkyGolay &other)$/;" f class:pappso::FilterSavitzkyGolay FilterSavitzkyGolay src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::FilterSavitzkyGolay(const QString ¶meters)$/;" f class:pappso::FilterSavitzkyGolay FilterSavitzkyGolay src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::FilterSavitzkyGolay(const SavGolParams sav_gol_params)$/;" f class:pappso::FilterSavitzkyGolay FilterSavitzkyGolay src/pappsomspp/processing/filters/savgolfilter.h /^class PMSPP_LIB_DECL FilterSavitzkyGolay : public FilterNameInterface$/;" c namespace:pappso FilterSavitzkyGolayCstSPtr src/pappsomspp/processing/filters/savgolfilter.h /^typedef std::shared_ptr FilterSavitzkyGolayCstSPtr;$/;" t namespace:pappso FilterSavitzkyGolaySPtr src/pappsomspp/processing/filters/savgolfilter.h /^typedef std::shared_ptr FilterSavitzkyGolaySPtr;$/;" t namespace:pappso FilterScaleFactorY src/pappsomspp/processing/filters/filterpass.cpp /^FilterScaleFactorY::FilterScaleFactorY(const FilterScaleFactorY &other)$/;" f class:FilterScaleFactorY FilterScaleFactorY src/pappsomspp/processing/filters/filterpass.cpp /^FilterScaleFactorY::FilterScaleFactorY(double dynamic) : m_factor(dynamic)$/;" f class:FilterScaleFactorY FilterScaleFactorY src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL FilterScaleFactorY : public FilterInterface$/;" c namespace:pappso FilterSuite src/pappsomspp/processing/filters/filtersuite.cpp /^FilterSuite::FilterSuite()$/;" f class:FilterSuite FilterSuite src/pappsomspp/processing/filters/filtersuite.cpp /^FilterSuite::FilterSuite(const FilterSuite &other)$/;" f class:FilterSuite FilterSuite src/pappsomspp/processing/filters/filtersuite.h /^class PMSPP_LIB_DECL FilterSuite : public std::vector,$/;" c namespace:pappso FilterSuiteString src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::FilterSuiteString(const QString &strBuildParams)$/;" f class:pappso::FilterSuiteString FilterSuiteString src/pappsomspp/processing/filters/filtersuitestring.h /^class PMSPP_LIB_DECL FilterSuiteString : public FilterNameInterface$/;" c namespace:pappso FilterSuiteStringSPtr src/pappsomspp/processing/filters/filtersuitestring.h /^typedef std::shared_ptr FilterSuiteStringSPtr;$/;" t namespace:pappso FilterTandemDeisotope src/pappsomspp/processing/filters/filtertandemremovec13.cpp /^FilterTandemDeisotope::FilterTandemDeisotope(const FilterTandemDeisotope &other)$/;" f class:FilterTandemDeisotope FilterTandemDeisotope src/pappsomspp/processing/filters/filtertandemremovec13.cpp /^FilterTandemDeisotope::FilterTandemDeisotope(double mz_range_max,$/;" f class:FilterTandemDeisotope FilterTandemDeisotope src/pappsomspp/processing/filters/filtertandemremovec13.h /^class PMSPP_LIB_DECL FilterTandemDeisotope : public MassSpectrumFilterInterface$/;" c namespace:pappso FilterTriangle src/pappsomspp/processing/filters/filtertriangle.cpp /^FilterTriangle::FilterTriangle()$/;" f class:FilterTriangle FilterTriangle src/pappsomspp/processing/filters/filtertriangle.cpp /^FilterTriangle::FilterTriangle(const FilterTriangle &other)$/;" f class:FilterTriangle FilterTriangle src/pappsomspp/processing/filters/filtertriangle.h /^class PMSPP_LIB_DECL FilterTriangle : public FilterInterface$/;" c namespace:pappso FrameIdDescr src/pappsomspp/vendors/tims/timsdata.h /^ struct FrameIdDescr$/;" s class:pappso::TimsData GRPMAPPEPTIDETOGROUP_H src/pappsomspp/grouping/grpmappeptidetogroup.h 32;" d GraphicDeviceWidget src/pappsomspp/widget/graphicdevicewidget.cpp /^GraphicDeviceWidget::GraphicDeviceWidget(QWidget *parent) : QWidget(parent)$/;" f class:GraphicDeviceWidget GraphicDeviceWidget src/pappsomspp/widget/graphicdevicewidget.h /^class PMSPP_LIB_DECL GraphicDeviceWidget : public QWidget$/;" c GrpExperiment src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::GrpExperiment(GrpGroupingMonitorInterface *p_monitor)$/;" f class:GrpExperiment GrpExperiment src/pappsomspp/grouping/grpexperiment.h /^class PMSPP_LIB_DECL GrpExperiment$/;" c namespace:pappso GrpGroup src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::GrpGroup(GrpSubGroupSp &grpSubGroupSp)$/;" f class:GrpGroup GrpGroup src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::GrpGroup(const GrpGroup &other)$/;" f class:GrpGroup GrpGroup src/pappsomspp/grouping/grpgroup.h /^class PMSPP_LIB_DECL GrpGroup$/;" c namespace:pappso GrpGroupSp src/pappsomspp/grouping/grpgroup.h /^typedef std::shared_ptr GrpGroupSp;$/;" t namespace:pappso GrpGroupSpConst src/pappsomspp/grouping/grpgroup.h /^typedef std::shared_ptr GrpGroupSpConst;$/;" t namespace:pappso GrpGroupingMonitor src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::GrpGroupingMonitor()$/;" f class:pappso::GrpGroupingMonitor GrpGroupingMonitor src/pappsomspp/grouping/grpgroupingmonitor.h /^class PMSPP_LIB_DECL GrpGroupingMonitor : public GrpGroupingMonitorInterface$/;" c namespace:pappso GrpGroupingMonitorInterface src/pappsomspp/grouping/grpgroupingmonitor.h /^class PMSPP_LIB_DECL GrpGroupingMonitorInterface$/;" c namespace:pappso GrpMapPeptideToGroup src/pappsomspp/grouping/grpmappeptidetogroup.cpp /^GrpMapPeptideToGroup::GrpMapPeptideToGroup()$/;" f class:pappso::GrpMapPeptideToGroup GrpMapPeptideToGroup src/pappsomspp/grouping/grpmappeptidetogroup.cpp /^GrpMapPeptideToGroup::GrpMapPeptideToGroup(const GrpMapPeptideToGroup &other)$/;" f class:pappso::GrpMapPeptideToGroup GrpMapPeptideToGroup src/pappsomspp/grouping/grpmappeptidetogroup.h /^class GrpMapPeptideToGroup$/;" c namespace:pappso GrpMapPeptideToSubGroupSet src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::GrpMapPeptideToSubGroupSet($/;" f class:pappso::GrpMapPeptideToSubGroupSet GrpMapPeptideToSubGroupSet src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::GrpMapPeptideToSubGroupSet()$/;" f class:pappso::GrpMapPeptideToSubGroupSet GrpMapPeptideToSubGroupSet src/pappsomspp/grouping/grpmappeptidetosubgroupset.h /^class GrpMapPeptideToSubGroupSet$/;" c namespace:pappso GrpPeptide src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::GrpPeptide(QString sequence, pappso_double mass)$/;" f class:GrpPeptide GrpPeptide src/pappsomspp/grouping/grppeptide.h /^class PMSPP_LIB_DECL GrpPeptide$/;" c namespace:pappso GrpPeptideSet src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::GrpPeptideSet()$/;" f class:GrpPeptideSet GrpPeptideSet src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::GrpPeptideSet(const GrpPeptideSet &other)$/;" f class:GrpPeptideSet GrpPeptideSet src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::GrpPeptideSet(const GrpProtein *p_protein)$/;" f class:GrpPeptideSet GrpPeptideSet src/pappsomspp/grouping/grppeptideset.h /^class GrpPeptideSet$/;" c namespace:pappso GrpPeptideSp src/pappsomspp/grouping/grppeptide.h /^typedef std::shared_ptr GrpPeptideSp;$/;" t namespace:pappso GrpPeptideSpConst src/pappsomspp/grouping/grppeptide.h /^typedef std::shared_ptr GrpPeptideSpConst;$/;" t namespace:pappso GrpProtein src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::GrpProtein(const GrpProtein &other)$/;" f class:GrpProtein GrpProtein src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::GrpProtein(const QString &accession, const QString &description)$/;" f class:GrpProtein GrpProtein src/pappsomspp/grouping/grpprotein.h /^class PMSPP_LIB_DECL GrpProtein$/;" c namespace:pappso GrpProteinSp src/pappsomspp/grouping/grpprotein.h /^typedef std::shared_ptr GrpProteinSp;$/;" t namespace:pappso GrpProteinSpConst src/pappsomspp/grouping/grpprotein.h /^typedef std::shared_ptr GrpProteinSpConst;$/;" t namespace:pappso GrpSubGroup src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::GrpSubGroup(GrpProtein *p_protein) : m_peptidePtrList(p_protein)$/;" f class:pappso::GrpSubGroup GrpSubGroup src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::GrpSubGroup(const GrpSubGroup &other)$/;" f class:pappso::GrpSubGroup GrpSubGroup src/pappsomspp/grouping/grpsubgroup.h /^class GrpSubGroup$/;" c namespace:pappso GrpSubGroupSet src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::GrpSubGroupSet()$/;" f class:pappso::GrpSubGroupSet GrpSubGroupSet src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::GrpSubGroupSet(const GrpSubGroupSet &other)$/;" f class:pappso::GrpSubGroupSet GrpSubGroupSet src/pappsomspp/grouping/grpsubgroupset.h /^class GrpSubGroupSet$/;" c namespace:pappso GrpSubGroupSp src/pappsomspp/grouping/grpsubgroup.h /^typedef std::shared_ptr GrpSubGroupSp;$/;" t namespace:pappso GrpSubGroupSpConst src/pappsomspp/grouping/grpsubgroup.h /^typedef std::shared_ptr GrpSubGroupSpConst;$/;" t namespace:pappso H src/pappsomspp/peptide/peptidenaturalisotope.cpp /^ H,$/;" m class:pappso::AtomIsotope file: H src/pappsomspp/types.h /^ H,$/;" m class:pappso::AtomIsotopeSurvey H2 src/pappsomspp/types.h /^ H2,$/;" m class:pappso::Isotope HORIZONTAL src/pappsomspp/processing/combiners/selectionpolygon.h /^ HORIZONTAL,$/;" m class:pappso::DataDimension HORIZONTAL_LINES src/pappsomspp/processing/combiners/selectionpolygon.h /^ HORIZONTAL_LINES = (TOP_LINE | BOTTOM_LINE),$/;" m class:pappso::PolygonType HttpButton src/pappsomspp/widget/httpbutton/httpbutton.cpp /^HttpButton::HttpButton(QWidget *parent) : QPushButton(parent)$/;" f class:HttpButton HttpButton src/pappsomspp/widget/httpbutton/httpbutton.h /^class PMSPP_LIB_DECL HttpButton : public QPushButton$/;" c namespace:pappso I Session.vim /^nnoremap I :call nerdtree#ui_glue#invokeKeyMap("I")$/;" m INTRA_CLUSTER_INTER_PEAK_DISTANCE src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ constexpr static double INTRA_CLUSTER_INTER_PEAK_DISTANCE = 1.1;$/;" m class:pappso::FilterLowIntensitySignalRemoval Ion src/pappsomspp/peptide/ion.cpp /^Ion::Ion()$/;" f class:pappso::Ion Ion src/pappsomspp/peptide/ion.h /^class PMSPP_LIB_DECL Ion$/;" c namespace:pappso IonIsotopeRatioScore src/pappsomspp/psm/experimental/ionisotoperatioscore.cpp /^IonIsotopeRatioScore::IonIsotopeRatioScore(const MassSpectrum &spectrum,$/;" f class:IonIsotopeRatioScore IonIsotopeRatioScore src/pappsomspp/psm/experimental/ionisotoperatioscore.h /^class PMSPP_LIB_DECL IonIsotopeRatioScore$/;" c namespace:pappso IsolationMz src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ IsolationMz, \/\/\/< isolation window$/;" m class:pappso::QualifiedMassSpectrumParameter IsolationWidth src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ IsolationWidth, \/\/\/< isolation window width$/;" m class:pappso::QualifiedMassSpectrumParameter Isotope src/pappsomspp/types.h /^enum class Isotope$/;" c namespace:pappso J Session.vim /^nnoremap J :call nerdtree#ui_glue#invokeKeyMap("J")$/;" m K Session.vim /^nnoremap K :call nerdtree#ui_glue#invokeKeyMap("K")$/;" m LAST src/pappsomspp/processing/combiners/mzintegrationparams.h /^ LAST,$/;" m class:pappso::BinningType LEFT_LINE src/pappsomspp/processing/combiners/selectionpolygon.h /^ LEFT_LINE = 1 << 3,$/;" m class:pappso::PolygonType LEFT_TO_RIGHT src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ LEFT_TO_RIGHT = 1 << 0,$/;" m class:pappso::DragDirections LIBPAPPSOMSPP_SOVERSION debian/rules /^export LIBPAPPSOMSPP_SOVERSION=0$/;" m LIBPAPPSOMSPP_VERSION debian/rules /^export LIBPAPPSOMSPP_VERSION=$(DEB_VERSION_UPSTREAM)$/;" m LinearRegression src/pappsomspp/trace/linearregression.cpp /^LinearRegression::LinearRegression(const Trace &data)$/;" f class:LinearRegression LinearRegression src/pappsomspp/trace/linearregression.h /^class LinearRegression$/;" c namespace:pappso MGF src/pappsomspp/types.h /^ MGF = 3, \/\/\/< Mascot format$/;" m class:pappso::MzFormat MapTrace src/pappsomspp/trace/maptrace.cpp /^MapTrace::MapTrace($/;" f class:pappso::MapTrace MapTrace src/pappsomspp/trace/maptrace.cpp /^MapTrace::MapTrace()$/;" f class:pappso::MapTrace MapTrace src/pappsomspp/trace/maptrace.cpp /^MapTrace::MapTrace(const MapTrace &other)$/;" f class:pappso::MapTrace MapTrace src/pappsomspp/trace/maptrace.cpp /^MapTrace::MapTrace(const Trace &trace)$/;" f class:pappso::MapTrace MapTrace src/pappsomspp/trace/maptrace.cpp /^MapTrace::MapTrace(const std::vector &dataPoints)$/;" f class:pappso::MapTrace MapTrace src/pappsomspp/trace/maptrace.h /^class PMSPP_LIB_DECL MapTrace : public std::map$/;" c namespace:pappso MapTraceCstSPtr src/pappsomspp/trace/maptrace.h /^typedef std::shared_ptr MapTraceCstSPtr;$/;" t namespace:pappso MapTraceSPtr src/pappsomspp/trace/maptrace.h /^typedef std::shared_ptr MapTraceSPtr;$/;" t namespace:pappso MassDataCombinerInterface src/pappsomspp/processing/combiners/massdatacombinerinterface.cpp /^MassDataCombinerInterface::MassDataCombinerInterface(int decimal_places)$/;" f class:pappso::MassDataCombinerInterface MassDataCombinerInterface src/pappsomspp/processing/combiners/massdatacombinerinterface.h /^class PMSPP_LIB_DECL MassDataCombinerInterface$/;" c namespace:pappso MassSpecTracePlotContext src/pappsomspp/widget/plotwidget/massspectraceplotcontext.cpp /^MassSpecTracePlotContext::MassSpecTracePlotContext($/;" f class:pappso::MassSpecTracePlotContext MassSpecTracePlotContext src/pappsomspp/widget/plotwidget/massspectraceplotcontext.cpp /^MassSpecTracePlotContext::MassSpecTracePlotContext()$/;" f class:pappso::MassSpecTracePlotContext MassSpecTracePlotContext src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^class PMSPP_LIB_DECL MassSpecTracePlotContext : public BasePlotContext$/;" c namespace:pappso MassSpecTracePlotWidget src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::MassSpecTracePlotWidget(QWidget *parent)$/;" f class:pappso::MassSpecTracePlotWidget MassSpecTracePlotWidget src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::MassSpecTracePlotWidget(QWidget *parent,$/;" f class:pappso::MassSpecTracePlotWidget MassSpecTracePlotWidget src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^class PMSPP_LIB_DECL MassSpecTracePlotWidget : public BaseTracePlotWidget$/;" c namespace:pappso MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum($/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum()$/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum(MassSpectrum &&other) : Trace(std::move(other))$/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum(Trace &&other) : Trace(std::move(other))$/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum(const MapTrace &other) : Trace(other)$/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum(const MassSpectrum &other) : Trace(other)$/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum(const Trace &other) : Trace(other)$/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::MassSpectrum(std::vector &data_point_vector)$/;" f class:pappso::MassSpectrum MassSpectrum src/pappsomspp/massspectrum/massspectrum.h /^class PMSPP_LIB_DECL MassSpectrum : public Trace$/;" c namespace:pappso MassSpectrumCombiner src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::MassSpectrumCombiner()$/;" f class:pappso::MassSpectrumCombiner MassSpectrumCombiner src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::MassSpectrumCombiner(MassSpectrumCombinerCstSPtr other)$/;" f class:pappso::MassSpectrumCombiner MassSpectrumCombiner src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::MassSpectrumCombiner(const MassSpectrumCombiner &other)$/;" f class:pappso::MassSpectrumCombiner MassSpectrumCombiner src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::MassSpectrumCombiner(int decimal_places)$/;" f class:pappso::MassSpectrumCombiner MassSpectrumCombiner src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::MassSpectrumCombiner(std::vector bins,$/;" f class:pappso::MassSpectrumCombiner MassSpectrumCombiner src/pappsomspp/processing/combiners/massspectrumcombiner.h /^class PMSPP_LIB_DECL MassSpectrumCombiner : public MassDataCombinerInterface$/;" c namespace:pappso MassSpectrumCombinerCstSPtr src/pappsomspp/processing/combiners/massspectrumcombiner.h /^typedef std::shared_ptr MassSpectrumCombinerCstSPtr;$/;" t namespace:pappso MassSpectrumCombinerSPtr src/pappsomspp/processing/combiners/massspectrumcombiner.h /^typedef std::shared_ptr MassSpectrumCombinerSPtr;$/;" t namespace:pappso MassSpectrumCstSPtr src/pappsomspp/massspectrum/massspectrum.h /^typedef std::shared_ptr MassSpectrumCstSPtr;$/;" t namespace:pappso MassSpectrumFilterGreatestItensities src/pappsomspp/processing/filters/filterpass.cpp /^MassSpectrumFilterGreatestItensities::MassSpectrumFilterGreatestItensities($/;" f class:MassSpectrumFilterGreatestItensities MassSpectrumFilterGreatestItensities src/pappsomspp/processing/filters/filterpass.h /^class PMSPP_LIB_DECL MassSpectrumFilterGreatestItensities$/;" c namespace:pappso MassSpectrumFilterInterface src/pappsomspp/processing/filters/filterinterface.h /^class PMSPP_LIB_DECL MassSpectrumFilterInterface$/;" c namespace:pappso MassSpectrumFilterResampleKeepMzRange src/pappsomspp/processing/filters/filterresample.cpp /^MassSpectrumFilterResampleKeepMzRange::MassSpectrumFilterResampleKeepMzRange($/;" f class:pappso::MassSpectrumFilterResampleKeepMzRange MassSpectrumFilterResampleKeepMzRange src/pappsomspp/processing/filters/filterresample.h /^class PMSPP_LIB_DECL MassSpectrumFilterResampleKeepMzRange$/;" c namespace:pappso MassSpectrumFilterResampleRemoveMzRange src/pappsomspp/processing/filters/filterresample.cpp /^ MassSpectrumFilterResampleRemoveMzRange($/;" f class:pappso::MassSpectrumFilterResampleRemoveMzRange MassSpectrumFilterResampleRemoveMzRange src/pappsomspp/processing/filters/filterresample.cpp /^ MassSpectrumFilterResampleRemoveMzRange(const MzRange &mz_range)$/;" f class:pappso::MassSpectrumFilterResampleRemoveMzRange MassSpectrumFilterResampleRemoveMzRange src/pappsomspp/processing/filters/filterresample.h /^class PMSPP_LIB_DECL MassSpectrumFilterResampleRemoveMzRange$/;" c namespace:pappso MassSpectrumId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::MassSpectrumId()$/;" f class:pappso::MassSpectrumId MassSpectrumId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::MassSpectrumId(const MassSpectrumId &other)$/;" f class:pappso::MassSpectrumId MassSpectrumId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::MassSpectrumId(const MsRunIdCstSPtr &msRunId)$/;" f class:pappso::MassSpectrumId MassSpectrumId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::MassSpectrumId(const MsRunIdCstSPtr &msRunId,$/;" f class:pappso::MassSpectrumId MassSpectrumId src/pappsomspp/massspectrum/massspectrumid.h /^class PMSPP_LIB_DECL MassSpectrumId$/;" c namespace:pappso MassSpectrumMinusCombiner src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^MassSpectrumMinusCombiner::MassSpectrumMinusCombiner($/;" f class:pappso::MassSpectrumMinusCombiner MassSpectrumMinusCombiner src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^MassSpectrumMinusCombiner::MassSpectrumMinusCombiner()$/;" f class:pappso::MassSpectrumMinusCombiner MassSpectrumMinusCombiner src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^MassSpectrumMinusCombiner::MassSpectrumMinusCombiner(int decimal_places)$/;" f class:pappso::MassSpectrumMinusCombiner MassSpectrumMinusCombiner src/pappsomspp/processing/combiners/massspectrumminuscombiner.h /^class PMSPP_LIB_DECL MassSpectrumMinusCombiner : public MassSpectrumCombiner$/;" c namespace:pappso MassSpectrumMinusCombinerCstSPtr src/pappsomspp/processing/combiners/massspectrumminuscombiner.h /^ MassSpectrumMinusCombinerCstSPtr;$/;" t namespace:pappso MassSpectrumMinusCombinerSPtr src/pappsomspp/processing/combiners/massspectrumminuscombiner.h /^ MassSpectrumMinusCombinerSPtr;$/;" t namespace:pappso MassSpectrumPlusCombiner src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^MassSpectrumPlusCombiner::MassSpectrumPlusCombiner($/;" f class:pappso::MassSpectrumPlusCombiner MassSpectrumPlusCombiner src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^MassSpectrumPlusCombiner::MassSpectrumPlusCombiner()$/;" f class:pappso::MassSpectrumPlusCombiner MassSpectrumPlusCombiner src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^MassSpectrumPlusCombiner::MassSpectrumPlusCombiner(int decimal_places)$/;" f class:pappso::MassSpectrumPlusCombiner MassSpectrumPlusCombiner src/pappsomspp/processing/combiners/massspectrumpluscombiner.h /^class PMSPP_LIB_DECL MassSpectrumPlusCombiner : public MassSpectrumCombiner$/;" c namespace:pappso MassSpectrumPlusCombinerCstSPtr src/pappsomspp/processing/combiners/massspectrumpluscombiner.h /^ MassSpectrumPlusCombinerCstSPtr;$/;" t namespace:pappso MassSpectrumPlusCombinerSPtr src/pappsomspp/processing/combiners/massspectrumpluscombiner.h /^typedef std::shared_ptr MassSpectrumPlusCombinerSPtr;$/;" t namespace:pappso MassSpectrumSPtr src/pappsomspp/massspectrum/massspectrum.h /^typedef std::shared_ptr MassSpectrumSPtr;$/;" t namespace:pappso MassSpectrumWidget src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::MassSpectrumWidget(QWidget *parent)$/;" f class:MassSpectrumWidget MassSpectrumWidget src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^class PMSPP_LIB_DECL MassSpectrumWidget : public GraphicDeviceWidget$/;" c namespace:pappso MgfOutput src/pappsomspp/msrun/output/mgfoutput.cpp /^MgfOutput::MgfOutput(QIODevice *p_output_device)$/;" f class:MgfOutput MgfOutput src/pappsomspp/msrun/output/mgfoutput.h /^class PMSPP_LIB_DECL MgfOutput$/;" c namespace:pappso MissedCleavage src/pappsomspp/psm/deepprot/deepprotenum.h /^ MissedCleavage = 4,$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus MorpheusScore src/pappsomspp/psm/morpheus/morpheusscore.cpp /^MorpheusScore::MorpheusScore(const MassSpectrum &spectrum,$/;" f class:pappso::MorpheusScore MorpheusScore src/pappsomspp/psm/morpheus/morpheusscore.h /^class PMSPP_LIB_DECL MorpheusScore$/;" c namespace:pappso MsFileAccessor src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::MsFileAccessor(const MsFileAccessor &other)$/;" f class:pappso::MsFileAccessor MsFileAccessor src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::MsFileAccessor(const QString &file_name,$/;" f class:pappso::MsFileAccessor MsFileAccessor src/pappsomspp/msfile/msfileaccessor.h /^class PMSPP_LIB_DECL MsFileAccessor$/;" c namespace:pappso MsFileReader src/pappsomspp/msfile/msfilereader.cpp /^MsFileReader::MsFileReader(const QString &file_name) : m_fileName{file_name}$/;" f class:pappso::MsFileReader MsFileReader src/pappsomspp/msfile/msfilereader.h /^class MsFileReader$/;" c namespace:pappso MsRunAlignment src/pappsomspp/msrun/alignment/msrunalignment.h /^class MsRunAlignment$/;" c namespace:pappso MsRunDataSetTree src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::MsRunDataSetTree(MsRunIdCstSPtr ms_run_id_csp)$/;" f class:pappso::MsRunDataSetTree MsRunDataSetTree src/pappsomspp/msrun/msrundatasettree.h /^class PMSPP_LIB_DECL MsRunDataSetTree$/;" c namespace:pappso MsRunDataSetTreeCstSPtr src/pappsomspp/msrun/msrundatasettree.h /^typedef std::shared_ptr MsRunDataSetTreeCstSPtr;$/;" t namespace:pappso MsRunDataSetTreeNode src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::MsRunDataSetTreeNode($/;" f class:pappso::MsRunDataSetTreeNode MsRunDataSetTreeNode src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::MsRunDataSetTreeNode()$/;" f class:pappso::MsRunDataSetTreeNode MsRunDataSetTreeNode src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::MsRunDataSetTreeNode(const MsRunDataSetTreeNode &other)$/;" f class:pappso::MsRunDataSetTreeNode MsRunDataSetTreeNode src/pappsomspp/msrun/msrundatasettreenode.h /^class PMSPP_LIB_DECL MsRunDataSetTreeNode$/;" c namespace:pappso MsRunDataSetTreeNodeCstSPtr src/pappsomspp/msrun/msrundatasettreenode.h /^typedef std::shared_ptr MsRunDataSetTreeNodeCstSPtr;$/;" t namespace:pappso MsRunDataSetTreeNodeSPtr src/pappsomspp/msrun/msrundatasettreenode.h /^typedef std::shared_ptr MsRunDataSetTreeNodeSPtr;$/;" t namespace:pappso MsRunDataSetTreeNodeVisitorInterface src/pappsomspp/msrun/msrundatasettreevisitor.h /^class MsRunDataSetTreeNodeVisitorInterface$/;" c namespace:pappso MsRunDataSetTreeSPtr src/pappsomspp/msrun/msrundatasettree.h /^typedef std::shared_ptr MsRunDataSetTreeSPtr;$/;" t namespace:pappso MsRunId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::MsRunId()$/;" f class:pappso::MsRunId MsRunId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::MsRunId(const MsRunId &other)$/;" f class:pappso::MsRunId MsRunId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::MsRunId(const QString &file_name) : m_fileName(file_name)$/;" f class:pappso::MsRunId MsRunId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::MsRunId(const QString &file_name, const QString &run_id)$/;" f class:pappso::MsRunId MsRunId src/pappsomspp/msrun/msrunid.h /^class PMSPP_LIB_DECL MsRunId$/;" c namespace:pappso MsRunIdCstSPtr src/pappsomspp/msrun/msrunid.h /^Q_DECLARE_METATYPE(pappso::MsRunIdCstSPtr);$/;" v MsRunIdCstSPtr src/pappsomspp/msrun/msrunid.h /^typedef std::shared_ptr MsRunIdCstSPtr;$/;" t namespace:pappso MsRunReader src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::MsRunReader(MsRunIdCstSPtr &ms_run_id) : mcsp_msRunId(ms_run_id)$/;" f class:pappso::MsRunReader MsRunReader src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::MsRunReader(const MsRunReader &other)$/;" f class:pappso::MsRunReader MsRunReader src/pappsomspp/msrun/msrunreader.h /^class PMSPP_LIB_DECL MsRunReader$/;" c namespace:pappso MsRunReader src/pappsomspp/msrun/msrunreader.h /^class PMSPP_LIB_DECL MsRunReader;$/;" m namespace:pappso typeref:class:pappso::PMSPP_LIB_DECL MsRunReaderCstSPtr src/pappsomspp/msrun/msrunreader.h /^typedef std::shared_ptr MsRunReaderCstSPtr;$/;" t namespace:pappso MsRunReaderRetentionTimeLine src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderRetentionTimeLine::MsRunReaderRetentionTimeLine()$/;" f class:pappso::MsRunReaderRetentionTimeLine MsRunReaderRetentionTimeLine src/pappsomspp/msrun/msrunreader.h /^class PMSPP_LIB_DECL MsRunReaderRetentionTimeLine$/;" c namespace:pappso MsRunReaderSPtr src/pappsomspp/msrun/msrunreader.h /^typedef std::shared_ptr MsRunReaderSPtr;$/;" t namespace:pappso MsRunReaderScanNumberMultiMap src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderScanNumberMultiMap::MsRunReaderScanNumberMultiMap()$/;" f class:pappso::MsRunReaderScanNumberMultiMap MsRunReaderScanNumberMultiMap src/pappsomspp/msrun/msrunreader.h /^class PMSPP_LIB_DECL MsRunReaderScanNumberMultiMap$/;" c namespace:pappso MsRunReaderTicChromatogram src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderTicChromatogram::MsRunReaderTicChromatogram()$/;" f class:pappso::MsRunReaderTicChromatogram MsRunReaderTicChromatogram src/pappsomspp/msrun/msrunreader.h /^class PMSPP_LIB_DECL MsRunReaderTicChromatogram$/;" c namespace:pappso MsRunRetentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::MsRunRetentionTime(MsRunReaderSPtr msrun_reader_sp)$/;" f class:MsRunRetentionTime MsRunRetentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::MsRunRetentionTime(const MsRunRetentionTime &other)$/;" f class:MsRunRetentionTime MsRunRetentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.h /^class PMSPP_LIB_DECL MsRunRetentionTime$/;" c namespace:pappso MsRunRetentionTime src/pappsomspp/msrun/alignment/template.cpp /^template class pappso::MsRunRetentionTime;$/;" m class:pappso typeref:class:pappso:: file: MsRunRetentionTime src/pappsomspp/msrun/alignment/template.cpp /^template class pappso::MsRunRetentionTime;$/;" m class:pappso typeref:class:pappso:: file: MsRunRetentionTimeSeamarkPoint src/pappsomspp/msrun/alignment/msrunretentiontime.h /^struct MsRunRetentionTimeSeamarkPoint$/;" s namespace:pappso MsRunSimpleStatistics src/pappsomspp/msrun/msrunreader.h /^class PMSPP_LIB_DECL MsRunSimpleStatistics$/;" c namespace:pappso MsRunSlice src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::MsRunSlice()$/;" f class:pappso::MsRunSlice MsRunSlice src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::MsRunSlice(const MsRunSlice &other)$/;" f class:pappso::MsRunSlice MsRunSlice src/pappsomspp/xicextractor/private/msrunslice.h /^class MsRunSlice$/;" c namespace:pappso MsRunSliceSPtr src/pappsomspp/xicextractor/private/msrunslice.h /^typedef std::shared_ptr MsRunSliceSPtr;$/;" t namespace:pappso MsRunXicExtractor src/pappsomspp/xicextractor/private/msrunxicextractor.cpp /^MsRunXicExtractor::MsRunXicExtractor(MsRunReaderSPtr &msrun_reader)$/;" f class:pappso::MsRunXicExtractor MsRunXicExtractor src/pappsomspp/xicextractor/private/msrunxicextractor.cpp /^MsRunXicExtractor::MsRunXicExtractor(const MsRunXicExtractor &other)$/;" f class:pappso::MsRunXicExtractor MsRunXicExtractor src/pappsomspp/xicextractor/private/msrunxicextractor.h /^class MsRunXicExtractor : public MsRunXicExtractorInterface$/;" c namespace:pappso MsRunXicExtractorDisk src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::MsRunXicExtractorDisk(MsRunReaderSPtr &msrun_reader,$/;" f class:pappso::MsRunXicExtractorDisk MsRunXicExtractorDisk src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::MsRunXicExtractorDisk(const MsRunXicExtractorDisk &other)$/;" f class:pappso::MsRunXicExtractorDisk MsRunXicExtractorDisk src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^class MsRunXicExtractorDisk : public MsRunXicExtractor$/;" c namespace:pappso MsRunXicExtractorDiskBuffer src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp /^MsRunXicExtractorDiskBuffer::MsRunXicExtractorDiskBuffer($/;" f class:pappso::MsRunXicExtractorDiskBuffer MsRunXicExtractorDiskBuffer src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h /^class MsRunXicExtractorDiskBuffer : public MsRunXicExtractorDisk$/;" c namespace:pappso MsRunXicExtractorFactory src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^MsRunXicExtractorFactory::MsRunXicExtractorFactory()$/;" f class:pappso::MsRunXicExtractorFactory MsRunXicExtractorFactory src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^class PMSPP_LIB_DECL MsRunXicExtractorFactory$/;" c namespace:pappso MsRunXicExtractorFactoryType src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^enum class MsRunXicExtractorFactoryType : std::int8_t$/;" c namespace:pappso MsRunXicExtractorInterface src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::MsRunXicExtractorInterface($/;" f class:pappso::MsRunXicExtractorInterface MsRunXicExtractorInterface src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^class PMSPP_LIB_DECL MsRunXicExtractorInterface$/;" c namespace:pappso MsRunXicExtractorInterfaceSp src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^ MsRunXicExtractorInterfaceSp;$/;" t namespace:pappso MsRunXicExtractorPoints src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ struct MsRunXicExtractorPoints$/;" s class:pappso::MsRunXicExtractor MsRunXicExtractorReadPoints src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ MsRunXicExtractorReadPoints($/;" f class:pappso::MsRunXicExtractor::MsRunXicExtractorReadPoints MsRunXicExtractorReadPoints src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ class MsRunXicExtractorReadPoints : public SpectrumCollectionHandlerInterface$/;" c class:pappso::MsRunXicExtractor MzCalibrationInterface src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp /^MzCalibrationInterface::MzCalibrationInterface(double digitizerTimebase,$/;" f class:pappso::MzCalibrationInterface MzCalibrationInterface src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h /^class MzCalibrationInterface$/;" c namespace:pappso MzCalibrationInterfaceSPtr src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h /^typedef std::shared_ptr MzCalibrationInterfaceSPtr;$/;" t namespace:pappso MzCalibrationModel1 src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp /^MzCalibrationModel1::MzCalibrationModel1(double T1_frame,$/;" f class:MzCalibrationModel1 MzCalibrationModel1 src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^class MzCalibrationModel1 : public MzCalibrationInterface$/;" c namespace:pappso MzCalibrationModel1Cached src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp /^pappso::MzCalibrationModel1Cached::MzCalibrationModel1Cached($/;" f class:pappso::MzCalibrationModel1Cached MzCalibrationModel1Cached src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^class MzCalibrationModel1Cached : public MzCalibrationModel1$/;" c namespace:pappso MzCalibrationStore src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.cpp /^MzCalibrationStore::MzCalibrationStore()$/;" f class:pappso::MzCalibrationStore MzCalibrationStore src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.h /^class MzCalibrationStore$/;" c namespace:pappso MzFormat src/pappsomspp/types.h /^enum class MzFormat : std::int8_t$/;" c namespace:pappso MzFormatEnumStr src/pappsomspp/msfile/mzformatenumstr.h /^class PMSPP_LIB_DECL MzFormatEnumStr$/;" c namespace:pappso MzIntegrationParams src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::MzIntegrationParams()$/;" f class:pappso::MzIntegrationParams MzIntegrationParams src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::MzIntegrationParams(const MzIntegrationParams &other)$/;" f class:pappso::MzIntegrationParams MzIntegrationParams src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::MzIntegrationParams(pappso::pappso_double minMz,$/;" f class:pappso::MzIntegrationParams MzIntegrationParams src/pappsomspp/processing/combiners/mzintegrationparams.h /^class PMSPP_LIB_DECL MzIntegrationParams$/;" c namespace:pappso MzRange src/pappsomspp/mzrange.cpp /^MzRange::MzRange(const MzRange &other)$/;" f class:pappso::MzRange MzRange src/pappsomspp/mzrange.cpp /^MzRange::MzRange(pappso_double mz, PrecisionPtr precision)$/;" f class:pappso::MzRange MzRange src/pappsomspp/mzrange.cpp /^MzRange::MzRange(pappso_double mz, pappso_double delta)$/;" f class:pappso::MzRange MzRange src/pappsomspp/mzrange.cpp /^MzRange::MzRange(pappso_double mz,$/;" f class:pappso::MzRange MzRange src/pappsomspp/mzrange.h /^class PMSPP_LIB_DECL MzRange$/;" c namespace:pappso MzxmlOutput src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::MzxmlOutput(UiMonitorInterface &monitor,$/;" f class:MzxmlOutput MzxmlOutput src/pappsomspp/msrun/output/mzxmloutput.h /^class PMSPP_LIB_DECL MzxmlOutput$/;" c namespace:pappso N src/pappsomspp/peptide/peptidenaturalisotope.cpp /^ N,$/;" m class:pappso::AtomIsotope file: N src/pappsomspp/types.h /^ N,$/;" m class:pappso::AtomIsotopeSurvey N15 src/pappsomspp/types.h /^ N15,$/;" m class:pappso::Isotope NONE src/pappsomspp/processing/combiners/mzintegrationparams.h /^ NONE = 0,$/;" m class:pappso::BinningType NOT_SET src/pappsomspp/processing/combiners/selectionpolygon.h /^ NOT_SET = 0,$/;" m class:pappso::DataDimension NOT_SET src/pappsomspp/processing/combiners/selectionpolygon.h /^ NOT_SET = 0x0000,$/;" m class:pappso::PolygonType NOT_SET src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ NOT_SET = 0x0000,$/;" m class:pappso::DragDirections NoConstPeptideSp src/pappsomspp/peptide/peptide.h /^typedef std::shared_ptr NoConstPeptideSp;$/;" t class:pappso::PeptideDirection NoDeltaPosition src/pappsomspp/psm/deepprot/deepprotenum.h /^ NoDeltaPosition = 5, \/\/\/< spectrum shifter on peptide candidate has not$/;" m class:pappso::DeepProtMatchType NoDeltaPosition src/pappsomspp/psm/deepprot/deepprotenum.h /^ NoDeltaPosition = 6,$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus Nter src/pappsomspp/peptide/peptide.h /^ Nter = 0,$/;" m class:pappso::PeptideDirection NterRemoval src/pappsomspp/psm/deepprot/deepprotenum.h /^ NterRemoval = 3,$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus O Session.vim /^nnoremap O :call nerdtree#ui_glue#invokeKeyMap("O")$/;" m O src/pappsomspp/peptide/peptidenaturalisotope.cpp /^ O,$/;" m class:pappso::AtomIsotope file: O src/pappsomspp/types.h /^ O,$/;" m class:pappso::AtomIsotopeSurvey O17 src/pappsomspp/types.h /^ O17,$/;" m class:pappso::Isotope O18 src/pappsomspp/types.h /^ O18,$/;" m class:pappso::Isotope OboChooserWidget src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp /^OboChooserWidget::OboChooserWidget(QWidget *parent)$/;" f class:OboChooserWidget OboChooserWidget src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.h /^class PMSPP_LIB_DECL OboChooserWidget : public QWidget$/;" c namespace:pappso OboListModel src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^OboListModel::OboListModel(QObject *parent) : QStringListModel(parent)$/;" f class:OboListModel OboListModel src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^class PMSPP_LIB_DECL OboListModel : public QStringListModel$/;" c namespace:pappso OboListProxyModel src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.cpp /^OboListProxyModel::OboListProxyModel(OboListModel *source_model,$/;" f class:OboListProxyModel OboListProxyModel src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h /^class OboListProxyModel : public QSortFilterProxyModel$/;" c namespace:pappso OboListWidget src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^OboListWidget::OboListWidget(QWidget *parent)$/;" f class:OboListWidget OboListWidget src/pappsomspp/widget/obo/obolistwidget/obolistwidget.h /^class PMSPP_LIB_DECL OboListWidget : public QWidget$/;" c namespace:pappso OboPsiMod src/pappsomspp/obo/obopsimod.cpp /^OboPsiMod::OboPsiMod(OboPsiModHandlerInterface &handler) : m_handler(handler)$/;" f class:pappso::OboPsiMod OboPsiMod src/pappsomspp/obo/obopsimod.h /^class PMSPP_LIB_DECL OboPsiMod$/;" c namespace:pappso OboPsiModHandler src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^pappso::OboListModel::OboPsiModHandler::OboPsiModHandler($/;" f class:pappso::OboListModel::OboPsiModHandler OboPsiModHandler src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^ class OboPsiModHandler : public OboPsiModHandlerInterface$/;" c class:pappso::OboListModel OboPsiModHandlerInterface src/pappsomspp/obo/obopsimodhandlerinterface.h /^class OboPsiModHandlerInterface$/;" c namespace:pappso OboPsiModTerm src/pappsomspp/obo/obopsimodterm.cpp /^OboPsiModTerm::OboPsiModTerm()$/;" f class:pappso::OboPsiModTerm OboPsiModTerm src/pappsomspp/obo/obopsimodterm.cpp /^OboPsiModTerm::OboPsiModTerm(const OboPsiModTerm &other)$/;" f class:pappso::OboPsiModTerm OboPsiModTerm src/pappsomspp/obo/obopsimodterm.h /^class PMSPP_LIB_DECL OboPsiModTerm$/;" c namespace:pappso OboTermForm src/pappsomspp/widget/obo/obotermform/obotermform.cpp /^OboTermForm::OboTermForm(QWidget *parent)$/;" f class:OboTermForm OboTermForm src/pappsomspp/widget/obo/obotermform/obotermform.h /^class PMSPP_LIB_DECL OboTermForm : public QWidget$/;" c namespace:pappso OneOverK0 src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ OneOverK0, \/\/\/< 1\/kO of a simple scan$/;" m class:pappso::QualifiedMassSpectrumParameter OneOverK0begin src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ OneOverK0begin, \/\/\/< 1\/kO of first acquisition for composite pasef MS\/MS$/;" m class:pappso::QualifiedMassSpectrumParameter OneOverK0end src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ OneOverK0end, \/\/\/< 1\/k0 of last acquisition for composite pasef MS\/MS spectrum$/;" m class:pappso::QualifiedMassSpectrumParameter P Session.vim /^nnoremap P :call nerdtree#ui_glue#invokeKeyMap("P")$/;" m PAPPSOMSPP_NAME src/pappsomspp/config.h 3;" d PAPPSOMSPP_VERSION src/pappsomspp/config.h 4;" d PEPTIDE_ION_TYPE_COUNT src/pappsomspp/types.h 405;" d PMSPP_LIB_DECL src/pappsomspp/exportinmportconfig.h 10;" d PappsoException src/pappsomspp/pappsoexception.h /^ PappsoException(const PappsoException &other) throw()$/;" f class:pappso::PappsoException PappsoException src/pappsomspp/pappsoexception.h /^ PappsoException(const QString &message) throw()$/;" f class:pappso::PappsoException PappsoException src/pappsomspp/pappsoexception.h /^class PappsoException : public QException$/;" c namespace:pappso PeakIonIsotopeMatch src/pappsomspp/psm/peakionisotopematch.cpp /^PeakIonIsotopeMatch::PeakIonIsotopeMatch($/;" f class:pappso::PeakIonIsotopeMatch PeakIonIsotopeMatch src/pappsomspp/psm/peakionisotopematch.cpp /^PeakIonIsotopeMatch::PeakIonIsotopeMatch(PeakIonIsotopeMatch &&other)$/;" f class:pappso::PeakIonIsotopeMatch PeakIonIsotopeMatch src/pappsomspp/psm/peakionisotopematch.cpp /^PeakIonIsotopeMatch::PeakIonIsotopeMatch(const PeakIonIsotopeMatch &other)$/;" f class:pappso::PeakIonIsotopeMatch PeakIonIsotopeMatch src/pappsomspp/psm/peakionisotopematch.h /^class PMSPP_LIB_DECL PeakIonIsotopeMatch : public PeakIonMatch$/;" c namespace:pappso PeakIonIsotopeMatchCstSPtr src/pappsomspp/psm/peakionisotopematch.h /^typedef std::shared_ptr PeakIonIsotopeMatchCstSPtr;$/;" t namespace:pappso PeakIonMatch src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::PeakIonMatch(PeakIonMatch &&other)$/;" f class:pappso::PeakIonMatch PeakIonMatch src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::PeakIonMatch(const DataPoint &peak,$/;" f class:pappso::PeakIonMatch PeakIonMatch src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::PeakIonMatch(const PeakIonMatch &other)$/;" f class:pappso::PeakIonMatch PeakIonMatch src/pappsomspp/psm/peakionmatch.h /^class PMSPP_LIB_DECL PeakIonMatch$/;" c namespace:pappso Peptide src/pappsomspp/peptide/peptide.cpp /^Peptide::Peptide(Peptide &&toCopy) \/\/ move constructor$/;" f class:pappso::Peptide Peptide src/pappsomspp/peptide/peptide.cpp /^Peptide::Peptide(const Peptide &peptide)$/;" f class:pappso::Peptide Peptide src/pappsomspp/peptide/peptide.cpp /^Peptide::Peptide(const QString &pepstr)$/;" f class:pappso::Peptide Peptide src/pappsomspp/peptide/peptide.h /^class PMSPP_LIB_DECL Peptide : public PeptideInterface$/;" c class:pappso::PeptideDirection PeptideBuilder src/pappsomspp/protein/peptidebuilder.cpp /^PeptideBuilder::PeptideBuilder()$/;" f class:pappso::PeptideBuilder PeptideBuilder src/pappsomspp/protein/peptidebuilder.h /^class PMSPP_LIB_DECL PeptideBuilder : public EnzymeProductInterface,$/;" c namespace:pappso PeptideDirection src/pappsomspp/peptide/peptide.h /^enum class PeptideDirection : std::int8_t$/;" c namespace:pappso PeptideFixedModificationBuilder src/pappsomspp/protein/peptidefixedmodificationbuilder.cpp /^PeptideFixedModificationBuilder::PeptideFixedModificationBuilder($/;" f class:PeptideFixedModificationBuilder PeptideFixedModificationBuilder src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^class PMSPP_LIB_DECL PeptideFixedModificationBuilder$/;" c namespace:pappso PeptideFragment src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::PeptideFragment(PeptideFragment &&toCopy) \/\/ move constructor$/;" f class:pappso::PeptideFragment PeptideFragment src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::PeptideFragment(const PeptideFragment &other)$/;" f class:pappso::PeptideFragment PeptideFragment src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::PeptideFragment(const PeptideSp &sp_peptide,$/;" f class:pappso::PeptideFragment PeptideFragment src/pappsomspp/peptide/peptidefragment.h /^class PMSPP_LIB_DECL PeptideFragment : public PeptideInterface$/;" c namespace:pappso PeptideFragmentIon src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::PeptideFragmentIon($/;" f class:pappso::PeptideFragmentIon PeptideFragmentIon src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::PeptideFragmentIon(const PeptideFragmentIon &other)$/;" f class:pappso::PeptideFragmentIon PeptideFragmentIon src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::PeptideFragmentIon(const PeptideFragmentSp &sp_fragment,$/;" f class:pappso::PeptideFragmentIon PeptideFragmentIon src/pappsomspp/peptide/peptidefragmention.h /^class PMSPP_LIB_DECL PeptideFragmentIon : public PeptideInterface$/;" c namespace:pappso PeptideFragmentIonListBase src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::PeptideFragmentIonListBase($/;" f class:pappso::PeptideFragmentIonListBase PeptideFragmentIonListBase src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::PeptideFragmentIonListBase(const PeptideSp &peptide,$/;" f class:pappso::PeptideFragmentIonListBase PeptideFragmentIonListBase src/pappsomspp/peptide/peptidefragmentionlistbase.h /^class PMSPP_LIB_DECL PeptideFragmentIonListBase$/;" c namespace:pappso PeptideFragmentIonListBaseSp src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ PeptideFragmentIonListBaseSp;$/;" t namespace:pappso PeptideFragmentIonSp src/pappsomspp/peptide/peptidefragmention.h /^typedef std::shared_ptr PeptideFragmentIonSp;$/;" t namespace:pappso PeptideFragmentSp src/pappsomspp/peptide/peptidefragment.h /^typedef std::shared_ptr PeptideFragmentSp;$/;" t namespace:pappso PeptideInterface src/pappsomspp/peptide/peptideinterface.h /^class PMSPP_LIB_DECL PeptideInterface : public Ion, public AtomNumberInterface$/;" c namespace:pappso PeptideInterfaceSp src/pappsomspp/peptide/peptideinterface.h /^typedef std::shared_ptr PeptideInterfaceSp;$/;" t namespace:pappso PeptideIon src/pappsomspp/types.h /^enum class PeptideIon : std::int8_t$/;" c class:pappso::MzFormat::XicExtractMethod PeptideIonCter src/pappsomspp/peptide/peptide.h /^enum class PeptideIonCter$/;" c class:pappso::PeptideDirection PeptideIonNter src/pappsomspp/peptide/peptide.h /^enum class PeptideIonNter$/;" c class:pappso::PeptideDirection PeptideIsotopeSpectrumMatch src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::PeptideIsotopeSpectrumMatch($/;" f class:pappso::PeptideIsotopeSpectrumMatch PeptideIsotopeSpectrumMatch src/pappsomspp/psm/peptideisotopespectrummatch.h /^class PMSPP_LIB_DECL PeptideIsotopeSpectrumMatch$/;" c namespace:pappso PeptideMethioninRemove src/pappsomspp/protein/peptidemethioninremove.cpp /^PeptideMethioninRemove::PeptideMethioninRemove(bool ism_isPotential)$/;" f class:pappso::PeptideMethioninRemove PeptideMethioninRemove src/pappsomspp/protein/peptidemethioninremove.h /^class PMSPP_LIB_DECL PeptideMethioninRemove : public EnzymeProductInterface,$/;" c namespace:pappso PeptideModHandler tests/test_protein.cpp /^class PeptideModHandler : public PeptideModificatorInterface$/;" c namespace:pappso file: PeptideModificatorBase src/pappsomspp/protein/peptidemodificatorbase.cpp /^PeptideModificatorBase::PeptideModificatorBase()$/;" f class:pappso::PeptideModificatorBase PeptideModificatorBase src/pappsomspp/protein/peptidemodificatorbase.h /^class PMSPP_LIB_DECL PeptideModificatorBase$/;" c namespace:pappso PeptideModificatorInterface src/pappsomspp/protein/enzymeproductinterface.h /^class PeptideModificatorInterface$/;" c namespace:pappso PeptideModificatorPipeline src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::PeptideModificatorPipeline($/;" f class:PeptideModificatorPipeline PeptideModificatorPipeline src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::PeptideModificatorPipeline()$/;" f class:PeptideModificatorPipeline PeptideModificatorPipeline src/pappsomspp/protein/peptidemodificatorpipeline.h /^class PMSPP_LIB_DECL PeptideModificatorPipeline$/;" c namespace:pappso PeptideModificatorTee src/pappsomspp/protein/peptidemodificatortee.cpp /^PeptideModificatorTee::PeptideModificatorTee()$/;" f class:PeptideModificatorTee PeptideModificatorTee src/pappsomspp/protein/peptidemodificatortee.cpp /^PeptideModificatorTee::PeptideModificatorTee(const PeptideModificatorTee &other)$/;" f class:PeptideModificatorTee PeptideModificatorTee src/pappsomspp/protein/peptidemodificatortee.h /^class PMSPP_LIB_DECL PeptideModificatorTee : public PeptideModificatorInterface$/;" c namespace:pappso PeptideMs2Point src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ struct PeptideMs2Point$/;" s class:pappso::MsRunRetentionTime PeptideNaturalIsotope src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::PeptideNaturalIsotope($/;" f class:pappso::PeptideNaturalIsotope PeptideNaturalIsotope src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::PeptideNaturalIsotope(const PeptideNaturalIsotope &other)$/;" f class:pappso::PeptideNaturalIsotope PeptideNaturalIsotope src/pappsomspp/peptide/peptidenaturalisotope.h /^class PMSPP_LIB_DECL PeptideNaturalIsotope : public PeptideInterface$/;" c namespace:pappso PeptideNaturalIsotopeAverage src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::PeptideNaturalIsotopeAverage($/;" f class:pappso::PeptideNaturalIsotopeAverage PeptideNaturalIsotopeAverage src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^class PMSPP_LIB_DECL PeptideNaturalIsotopeAverage$/;" c namespace:pappso PeptideNaturalIsotopeAverageSp src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ PeptideNaturalIsotopeAverageSp;$/;" t namespace:pappso PeptideNaturalIsotopeList src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::PeptideNaturalIsotopeList($/;" f class:pappso::PeptideNaturalIsotopeList PeptideNaturalIsotopeList src/pappsomspp/peptide/peptidenaturalisotopelist.h /^class PMSPP_LIB_DECL PeptideNaturalIsotopeList$/;" c namespace:pappso PeptideNaturalIsotopeListSp src/pappsomspp/peptide/peptidenaturalisotopelist.h /^ PeptideNaturalIsotopeListSp;$/;" t namespace:pappso PeptideNaturalIsotopeSp src/pappsomspp/peptide/peptidenaturalisotope.h /^typedef std::shared_ptr PeptideNaturalIsotopeSp;$/;" t namespace:pappso PeptideRawFragmentMasses src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^PeptideRawFragmentMasses::PeptideRawFragmentMasses(const Peptide &peptide,$/;" f class:pappso::PeptideRawFragmentMasses PeptideRawFragmentMasses src/pappsomspp/peptide/peptiderawfragmentmasses.h /^class PMSPP_LIB_DECL PeptideRawFragmentMasses$/;" c class:pappso::RawFragmentationMode PeptideSemiEnzyme src/pappsomspp/protein/peptidesemienzyme.cpp /^PeptideSemiEnzyme::PeptideSemiEnzyme()$/;" f class:pappso::PeptideSemiEnzyme PeptideSemiEnzyme src/pappsomspp/protein/peptidesemienzyme.h /^class PMSPP_LIB_DECL PeptideSemiEnzyme : public EnzymeProductInterface,$/;" c namespace:pappso PeptideSinkInterface src/pappsomspp/protein/enzymeproductinterface.h /^class PeptideSinkInterface$/;" c namespace:pappso PeptideSizeFilter src/pappsomspp/protein/peptidesizefilter.cpp /^PeptideSizeFilter::PeptideSizeFilter(unsigned int min_size,$/;" f class:pappso::PeptideSizeFilter PeptideSizeFilter src/pappsomspp/protein/peptidesizefilter.h /^class PMSPP_LIB_DECL PeptideSizeFilter : public EnzymeProductInterface,$/;" c namespace:pappso PeptideSp src/pappsomspp/amino_acid/aamodification.h /^typedef std::shared_ptr PeptideSp;$/;" t namespace:pappso PeptideSp src/pappsomspp/peptide/peptide.h /^typedef std::shared_ptr PeptideSp;$/;" t class:pappso::PeptideDirection PeptideSpSinkInterface src/pappsomspp/protein/enzymeproductinterface.h /^class PeptideSpSinkInterface$/;" c namespace:pappso PeptideSpectrumMatch src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::PeptideSpectrumMatch($/;" f class:pappso::PeptideSpectrumMatch PeptideSpectrumMatch src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::PeptideSpectrumMatch(const PeptideSpectrumMatch &other)$/;" f class:pappso::PeptideSpectrumMatch PeptideSpectrumMatch src/pappsomspp/psm/peptidespectrummatch.h /^class PMSPP_LIB_DECL PeptideSpectrumMatch$/;" c namespace:pappso PeptideStr src/pappsomspp/types.h /^typedef QString PeptideStr;$/;" t namespace:pappso PeptideStrParser src/pappsomspp/peptide/peptidestrparser.h /^class PMSPP_LIB_DECL PeptideStrParser$/;" c namespace:pappso PeptideTableHandler tests/test_msrunalignment.cpp /^ PeptideTableHandler(pappso::MsRunRetentionTime &rt1,$/;" f class:PeptideTableHandler PeptideTableHandler tests/test_msrunalignment.cpp /^class PeptideTableHandler : public OdsDocHandlerInterface$/;" c file: PeptideVariableModificationBuilder src/pappsomspp/protein/peptidevariablemodificationbuilder.cpp /^PeptideVariableModificationBuilder::PeptideVariableModificationBuilder($/;" f class:pappso::PeptideVariableModificationBuilder PeptideVariableModificationBuilder src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^class PMSPP_LIB_DECL PeptideVariableModificationBuilder$/;" c namespace:pappso PeptideVariableModificationReplacement src/pappsomspp/protein/peptidevariablemodificationreplacement.cpp /^PeptideVariableModificationReplacement::PeptideVariableModificationReplacement($/;" f class:pappso::PeptideVariableModificationReplacement PeptideVariableModificationReplacement src/pappsomspp/protein/peptidevariablemodificationreplacement.h /^class PMSPP_LIB_DECL PeptideVariableModificationReplacement$/;" c namespace:pappso PointSpecs src/pappsomspp/processing/combiners/selectionpolygon.h /^enum class PointSpecs$/;" c namespace:pappso PolygonType src/pappsomspp/processing/combiners/selectionpolygon.h /^enum class PolygonType$/;" c namespace:pappso PpmPrecision src/pappsomspp/precision.cpp /^PpmPrecision::PpmPrecision(pappso_double x) : PrecisionBase(x)$/;" f class:pappso::PpmPrecision PpmPrecision src/pappsomspp/precision.h /^class PMSPP_LIB_DECL PpmPrecision : public PrecisionBase$/;" c namespace:pappso PrecisionBase src/pappsomspp/precision.h /^ PrecisionBase(pappso_double nominal) : m_nominal(nominal)$/;" f class:pappso::PrecisionBase PrecisionBase src/pappsomspp/precision.h /^class PMSPP_LIB_DECL PrecisionBase$/;" c namespace:pappso PrecisionFactory src/pappsomspp/precision.h /^class PMSPP_LIB_DECL PrecisionFactory$/;" c namespace:pappso PrecisionPtr src/pappsomspp/precision.h /^typedef const PrecisionBase *PrecisionPtr;$/;" t namespace:pappso PrecisionUnit src/pappsomspp/types.h /^enum class PrecisionUnit$/;" c namespace:pappso PrecisionWidget src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::PrecisionWidget(QWidget *parent) : QWidget(parent)$/;" f class:pappso::PrecisionWidget PrecisionWidget src/pappsomspp/widget/precisionwidget/precisionwidget.h /^class PMSPP_LIB_DECL PrecisionWidget : public QWidget$/;" c namespace:pappso PrecursorIonData src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ PrecursorIonData(double mz_value = 0,$/;" f struct:pappso::PrecursorIonData PrecursorIonData src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^struct PrecursorIonData$/;" s namespace:pappso Protein src/pappsomspp/protein/protein.cpp /^Protein::Protein()$/;" f class:pappso::Protein Protein src/pappsomspp/protein/protein.cpp /^Protein::Protein(const Protein &protein)$/;" f class:pappso::Protein Protein src/pappsomspp/protein/protein.cpp /^Protein::Protein(const QString &description, const QString &sequence)$/;" f class:pappso::Protein Protein src/pappsomspp/protein/protein.h /^class PMSPP_LIB_DECL Protein$/;" c namespace:pappso ProteinPeptideList src/pappsomspp/protein/proteinpeptidelist.cpp /^ProteinPeptideList::ProteinPeptideList()$/;" f class:ProteinPeptideList ProteinPeptideList src/pappsomspp/protein/proteinpeptidelist.h /^class ProteinPeptideList$/;" c ProteinSp src/pappsomspp/protein/protein.h /^typedef std::shared_ptr ProteinSp;$/;" t namespace:pappso PsmFeatures src/pappsomspp/psm/features/psmfeatures.cpp /^PsmFeatures::PsmFeatures(PrecisionPtr ms2precision, double minimumMz)$/;" f class:PsmFeatures PsmFeatures src/pappsomspp/psm/features/psmfeatures.h /^class PMSPP_LIB_DECL PsmFeatures$/;" c namespace:pappso PwizMsFileReader src/pappsomspp/msfile/pwizmsfilereader.cpp /^PwizMsFileReader::PwizMsFileReader(const QString &file_name)$/;" f class:pappso::PwizMsFileReader PwizMsFileReader src/pappsomspp/msfile/pwizmsfilereader.h /^class PwizMsFileReader : MsFileReader$/;" c namespace:pappso PwizMsRunReader src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::PwizMsRunReader(MsRunIdCstSPtr &msrun_id_csp)$/;" f class:pappso::PwizMsRunReader PwizMsRunReader src/pappsomspp/msrun/private/pwizmsrunreader.h /^class PwizMsRunReader : public MsRunReader$/;" c namespace:pappso QCPSpectrum src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::QCPSpectrum(MassSpectrumWidget *parent, bool visible)$/;" f class:QCPSpectrum QCPSpectrum src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^class QCPSpectrum : public QCustomPlot$/;" c namespace:pappso QCPXIC_H src/pappsomspp/widget/xicwidget/qcpxic.h 33;" d QCPXic src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::QCPXic(XicWidget *parent) : QCustomPlot(parent)$/;" f class:QCPXic QCPXic src/pappsomspp/widget/xicwidget/qcpxic.h /^class QCPXic : public QCustomPlot$/;" c namespace:pappso Q_OBJECT src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^ Q_OBJECT;$/;" m class:pappso::BaseColorMapPlotWidget Q_OBJECT src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ Q_OBJECT;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget Q_OBJECT src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ Q_OBJECT;$/;" m class:pappso::DriftSpecTracePlotWidget Q_OBJECT src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ Q_OBJECT;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget Q_OBJECT src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ Q_OBJECT;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget Q_OBJECT src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ Q_OBJECT;$/;" m class:pappso::TicXicChromTracePlotWidget QualifiedMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::QualifiedMassSpectrum($/;" f class:pappso::QualifiedMassSpectrum QualifiedMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::QualifiedMassSpectrum()$/;" f class:pappso::QualifiedMassSpectrum QualifiedMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::QualifiedMassSpectrum(const MassSpectrumId &id)$/;" f class:pappso::QualifiedMassSpectrum QualifiedMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::QualifiedMassSpectrum(const QualifiedMassSpectrum &other)$/;" f class:pappso::QualifiedMassSpectrum QualifiedMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^class PMSPP_LIB_DECL QualifiedMassSpectrum$/;" c namespace:pappso QualifiedMassSpectrumCstSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ QualifiedMassSpectrumCstSPtr;$/;" t namespace:pappso QualifiedMassSpectrumParameter src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^enum class QualifiedMassSpectrumParameter$/;" c namespace:pappso QualifiedMassSpectrumSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^typedef std::shared_ptr QualifiedMassSpectrumSPtr;$/;" t namespace:pappso QualifiedXic src/pappsomspp/xic/qualifiedxic.cpp /^QualifiedXic::QualifiedXic(const MsRunId &msrun_id,$/;" f class:pappso::QualifiedXic QualifiedXic src/pappsomspp/xic/qualifiedxic.cpp /^QualifiedXic::QualifiedXic(const QualifiedXic &toCopy)$/;" f class:pappso::QualifiedXic QualifiedXic src/pappsomspp/xic/qualifiedxic.h /^class QualifiedXic$/;" c namespace:pappso QualifiedXicSp src/pappsomspp/xic/qualifiedxic.h /^typedef std::shared_ptr QualifiedXicSp;$/;" t namespace:pappso R Session.vim /^nnoremap R :call nerdtree#ui_glue#invokeKeyMap("R")$/;" m RIGHT_LINE src/pappsomspp/processing/combiners/selectionpolygon.h /^ RIGHT_LINE = 1 << 2,$/;" m class:pappso::PolygonType RIGHT_TO_LEFT src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ RIGHT_TO_LEFT = 1 << 1,$/;" m class:pappso::DragDirections RM src/Makefile /^RM = \/usr\/bin\/cmake -E rm -f$/;" m RangeType src/pappsomspp/widget/plotwidget/baseplotwidget.h /^enum class RangeType$/;" c namespace:pappso RawFragmentationMode src/pappsomspp/peptide/peptiderawfragmentmasses.h /^enum class RawFragmentationMode : std::int8_t$/;" c namespace:pappso ResPrecision src/pappsomspp/precision.cpp /^ResPrecision::ResPrecision(pappso_double x) : PrecisionBase(x)$/;" f class:pappso::ResPrecision ResPrecision src/pappsomspp/precision.h /^class PMSPP_LIB_DECL ResPrecision : public PrecisionBase$/;" c namespace:pappso S src/pappsomspp/types.h /^ S,$/;" m class:pappso::AtomIsotopeSurvey S33 src/pappsomspp/types.h /^ S33,$/;" m class:pappso::Isotope S34 src/pappsomspp/types.h /^ S34,$/;" m class:pappso::Isotope SHELL src/Makefile /^SHELL = \/bin\/sh$/;" m SQLite3 src/pappsomspp/types.h /^ SQLite3 = 4, \/\/\/< SQLite3 format$/;" m class:pappso::MzFormat SWAP src/pappsomspp/processing/filters/savgolfilter.cpp 49;" d file: SavGolParams src/pappsomspp/processing/filters/savgolfilter.h /^ SavGolParams($/;" f struct:pappso::SavGolParams SavGolParams src/pappsomspp/processing/filters/savgolfilter.h /^ SavGolParams(){};$/;" f struct:pappso::SavGolParams SavGolParams src/pappsomspp/processing/filters/savgolfilter.h /^ SavGolParams(const SavGolParams &other)$/;" f struct:pappso::SavGolParams SavGolParams src/pappsomspp/processing/filters/savgolfilter.h /^struct PMSPP_LIB_DECL SavGolParams$/;" s namespace:pappso SelectionPolygon src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::SelectionPolygon()$/;" f class:pappso::SelectionPolygon SelectionPolygon src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::SelectionPolygon(QPointF top_left_point,$/;" f class:pappso::SelectionPolygon SelectionPolygon src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::SelectionPolygon(const SelectionPolygon &other)$/;" f class:pappso::SelectionPolygon SelectionPolygon src/pappsomspp/processing/combiners/selectionpolygon.h /^class PMSPP_LIB_DECL SelectionPolygon$/;" c class:pappso::PolygonType SelectionPolygonSpec src/pappsomspp/processing/combiners/selectionpolygon.h /^ SelectionPolygonSpec(const SelectionPolygon &selection_polygon,$/;" f struct:pappso::PolygonType::SelectionPolygonSpec SelectionPolygonSpec src/pappsomspp/processing/combiners/selectionpolygon.h /^ SelectionPolygonSpec(const SelectionPolygonSpec &other)$/;" f struct:pappso::PolygonType::SelectionPolygonSpec SelectionPolygonSpec src/pappsomspp/processing/combiners/selectionpolygon.h /^struct PMSPP_LIB_DECL SelectionPolygonSpec$/;" s class:pappso::PolygonType SessionLoad Session.vim /^let SessionLoad = 1$/;" v SimplePeakIonMatch src/pappsomspp/peptide/peptiderawfragmentmasses.h /^struct SimplePeakIonMatch$/;" s class:pappso::RawFragmentationMode SpectrumCollectionHandlerInterface src/pappsomspp/msrun/msrunreader.h /^class PMSPP_LIB_DECL SpectrumCollectionHandlerInterface$/;" c namespace:pappso SpectrumDescr src/pappsomspp/vendors/tims/timsdata.h /^ struct SpectrumDescr$/;" s class:pappso::TimsData SwitchWidget src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.cpp /^pappso::SwitchWidget::SwitchWidget(QWidget *parent) : QPushButton(parent)$/;" f class:pappso::SwitchWidget SwitchWidget src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.h /^class PMSPP_LIB_DECL SwitchWidget : public QPushButton$/;" c namespace:pappso T Session.vim /^nnoremap T :call nerdtree#ui_glue#invokeKeyMap("T")$/;" m TOP_LEFT_POINT src/pappsomspp/processing/combiners/selectionpolygon.h /^ TOP_LEFT_POINT = 0,$/;" m class:pappso::PointSpecs TOP_LINE src/pappsomspp/processing/combiners/selectionpolygon.h /^ TOP_LINE = 1 << 0,$/;" m class:pappso::PolygonType TOP_RIGHT_POINT src/pappsomspp/processing/combiners/selectionpolygon.h /^ TOP_RIGHT_POINT = 1,$/;" m class:pappso::PointSpecs TOP_TO_BOTTOM src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ TOP_TO_BOTTOM = 1 << 2,$/;" m class:pappso::DragDirections TandemWrapperRun src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::TandemWrapperRun(const QString &tandem_binary,$/;" f class:pappso::TandemWrapperRun TandemWrapperRun src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^class PMSPP_LIB_DECL TandemWrapperRun : public QObject$/;" c namespace:pappso TestWidgetGui tests/widget/testwidgetgui.cpp /^TestWidgetGui::TestWidgetGui(QWidget *parent)$/;" f class:TestWidgetGui TestWidgetGui tests/widget/testwidgetgui.h /^class TestWidgetGui : public QMainWindow$/;" c TicXicChromDriftSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::TicXicChromDriftSpecColorMapPlotWidget($/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget TicXicChromDriftSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^class PMSPP_LIB_DECL TicXicChromDriftSpecColorMapPlotWidget$/;" c namespace:pappso TicXicChromMassSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::TicXicChromMassSpecColorMapPlotWidget($/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget TicXicChromMassSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^class PMSPP_LIB_DECL TicXicChromMassSpecColorMapPlotWidget$/;" c namespace:pappso TicXicChromTracePlotWidget src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::TicXicChromTracePlotWidget($/;" f class:pappso::TicXicChromTracePlotWidget TicXicChromTracePlotWidget src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^class PMSPP_LIB_DECL TicXicChromTracePlotWidget : public BaseTracePlotWidget$/;" c namespace:pappso TimsBinDec src/pappsomspp/vendors/tims/timsbindec.cpp /^TimsBinDec::TimsBinDec(const QFileInfo &timsBinFile, int timsCompressionType)$/;" f class:TimsBinDec TimsBinDec src/pappsomspp/vendors/tims/timsbindec.cpp /^TimsBinDec::TimsBinDec(const TimsBinDec &other)$/;" f class:TimsBinDec TimsBinDec src/pappsomspp/vendors/tims/timsbindec.h /^class TimsBinDec$/;" c namespace:pappso TimsData src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::TimsData(QDir timsDataDirectory)$/;" f class:pappso::TimsData TimsData src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::TimsData([[maybe_unused]] const pappso::TimsData &other)$/;" f class:pappso::TimsData TimsData src/pappsomspp/vendors/tims/timsdata.h /^class PMSPP_LIB_DECL TimsData$/;" c namespace:pappso TimsDataSp src/pappsomspp/vendors/tims/timsdata.h /^typedef std::shared_ptr TimsDataSp;$/;" t namespace:pappso TimsDirectXicExtractor src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.cpp /^TimsDirectXicExtractor::TimsDirectXicExtractor(MsRunReaderSPtr &msrun_reader)$/;" f class:TimsDirectXicExtractor TimsDirectXicExtractor src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.h /^class TimsDirectXicExtractor : public TimsXicExtractorInterface$/;" c namespace:pappso TimsFrame src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::TimsFrame(const TimsFrame &other) : TimsFrameBase(other)$/;" f class:pappso::TimsFrame TimsFrame src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::TimsFrame(std::size_t timsId, quint32 scanNum)$/;" f class:pappso::TimsFrame TimsFrame src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::TimsFrame(std::size_t timsId,$/;" f class:pappso::TimsFrame TimsFrame src/pappsomspp/vendors/tims/timsframe.h /^class TimsFrame : public TimsFrameBase$/;" c namespace:pappso TimsFrameBase src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::TimsFrameBase([[maybe_unused]] const TimsFrameBase &other)$/;" f class:pappso::TimsFrameBase TimsFrameBase src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::TimsFrameBase(std::size_t timsId, quint32 scanNum)$/;" f class:pappso::TimsFrameBase TimsFrameBase src/pappsomspp/vendors/tims/timsframebase.h /^class TimsFrameBase$/;" c namespace:pappso TimsFrameBaseCstSPtr src/pappsomspp/vendors/tims/timsframebase.h /^typedef std::shared_ptr TimsFrameBaseCstSPtr;$/;" t namespace:pappso TimsFrameBaseSPtr src/pappsomspp/vendors/tims/timsframebase.h /^typedef std::shared_ptr TimsFrameBaseSPtr;$/;" t namespace:pappso TimsFrameCstSPtr src/pappsomspp/vendors/tims/timsframe.h /^typedef std::shared_ptr TimsFrameCstSPtr;$/;" t namespace:pappso TimsFrameRawDataChunck src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^TimsFrameRawDataChunck::TimsFrameRawDataChunck()$/;" f class:TimsFrameRawDataChunck TimsFrameRawDataChunck src/pappsomspp/vendors/tims/timsframerawdatachunck.h /^class PMSPP_LIB_DECL TimsFrameRawDataChunck$/;" c namespace:pappso TimsFrameRecord src/pappsomspp/vendors/tims/timsframerecord.h /^struct TimsFrameRecord$/;" s namespace:pappso TimsFrameSPtr src/pappsomspp/vendors/tims/timsframe.h /^typedef std::shared_ptr TimsFrameSPtr;$/;" t namespace:pappso TimsFrameType1 src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::TimsFrameType1(const TimsFrameType1 &other) : TimsFrame(other)$/;" f class:pappso::TimsFrameType1 TimsFrameType1 src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::TimsFrameType1(std::size_t timsId,$/;" f class:pappso::TimsFrameType1 TimsFrameType1 src/pappsomspp/vendors/tims/timsframetype1.h /^class TimsFrameType1 : public TimsFrame$/;" c namespace:pappso TimsMs2CentroidFilter src/pappsomspp/vendors/tims/timsms2centroidfilter.cpp /^TimsMs2CentroidFilter::TimsMs2CentroidFilter()$/;" f class:TimsMs2CentroidFilter TimsMs2CentroidFilter src/pappsomspp/vendors/tims/timsms2centroidfilter.cpp /^TimsMs2CentroidFilter::TimsMs2CentroidFilter([$/;" f class:TimsMs2CentroidFilter TimsMs2CentroidFilter src/pappsomspp/vendors/tims/timsms2centroidfilter.h /^class TimsMs2CentroidFilter : public MassSpectrumFilterInterface$/;" c namespace:pappso TimsMsFileReader src/pappsomspp/msfile/timsmsfilereader.cpp /^TimsMsFileReader::TimsMsFileReader(const QString &file_name)$/;" f class:pappso::TimsMsFileReader TimsMsFileReader src/pappsomspp/msfile/timsmsfilereader.h /^class TimsMsFileReader : MsFileReader$/;" c namespace:pappso TimsMsRunReader src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::TimsMsRunReader(MsRunIdCstSPtr &msrun_id_csp)$/;" f class:TimsMsRunReader TimsMsRunReader src/pappsomspp/msrun/private/timsmsrunreader.h /^class TimsMsRunReader : public MsRunReader$/;" c namespace:pappso TimsMsRunReaderMs2 src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::TimsMsRunReaderMs2(MsRunIdCstSPtr &msrun_id_csp)$/;" f class:TimsMsRunReaderMs2 TimsMsRunReaderMs2 src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^class PMSPP_LIB_DECL TimsMsRunReaderMs2 : public MsRunReader$/;" c namespace:pappso TimsMsRunReaderMs2SPtr src/pappsomspp/msfile/msfileaccessor.h /^typedef std::shared_ptr TimsMsRunReaderMs2SPtr;$/;" t namespace:pappso TimsMsRunReaderMs2Selected src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::TimsMsRunReaderMs2Selected($/;" f class:TimsMsRunReaderMs2Selected TimsMsRunReaderMs2Selected src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^class PMSPP_LIB_DECL TimsMsRunReaderMs2Selected : public TimsMsRunReaderMs2$/;" c namespace:pappso TimsXicExtractorInterface src/pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.cpp /^TimsXicExtractorInterface::TimsXicExtractorInterface($/;" f class:TimsXicExtractorInterface TimsXicExtractorInterface src/pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.h /^class TimsXicExtractorInterface : public MsRunXicExtractorInterface$/;" c namespace:pappso Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace($/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace()$/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace(const MapTrace &map_trace)$/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace(const Trace &&other)$/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace(const Trace &other) : std::vector(other)$/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace(const std::vector &&dataPoints)$/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace(const std::vector &dataPoints)$/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.cpp /^Trace::Trace(const std::vector &xVector,$/;" f class:pappso::Trace Trace src/pappsomspp/trace/trace.h /^class PMSPP_LIB_DECL Trace : public std::vector$/;" c namespace:pappso TraceCombiner src/pappsomspp/processing/combiners/tracecombiner.cpp /^TraceCombiner::TraceCombiner()$/;" f class:pappso::TraceCombiner TraceCombiner src/pappsomspp/processing/combiners/tracecombiner.cpp /^TraceCombiner::TraceCombiner(TraceCombinerCstSPtr other)$/;" f class:pappso::TraceCombiner TraceCombiner src/pappsomspp/processing/combiners/tracecombiner.cpp /^TraceCombiner::TraceCombiner(const TraceCombiner &other)$/;" f class:pappso::TraceCombiner TraceCombiner src/pappsomspp/processing/combiners/tracecombiner.cpp /^TraceCombiner::TraceCombiner(int decimal_places)$/;" f class:pappso::TraceCombiner TraceCombiner src/pappsomspp/processing/combiners/tracecombiner.h /^class PMSPP_LIB_DECL TraceCombiner : public MassDataCombinerInterface$/;" c namespace:pappso TraceCombinerCstSPtr src/pappsomspp/processing/combiners/tracecombiner.h /^typedef std::shared_ptr TraceCombinerCstSPtr;$/;" t namespace:pappso TraceCombinerSPtr src/pappsomspp/processing/combiners/tracecombiner.h /^typedef std::shared_ptr TraceCombinerSPtr;$/;" t namespace:pappso TraceCstSPtr src/pappsomspp/trace/trace.h /^typedef std::shared_ptr TraceCstSPtr;$/;" t namespace:pappso TraceDetectionInterface src/pappsomspp/processing/detection/tracedetectioninterface.h /^class TraceDetectionInterface$/;" c namespace:pappso TraceDetectionInterfaceCstSPtr src/pappsomspp/processing/detection/tracedetectioninterface.h /^ TraceDetectionInterfaceCstSPtr;$/;" t namespace:pappso TraceDetectionInterfaceSPtr src/pappsomspp/processing/detection/tracedetectioninterface.h /^typedef std::shared_ptr TraceDetectionInterfaceSPtr;$/;" t namespace:pappso TraceDetectionMaxSink tests/test_xic.cpp /^class TraceDetectionMaxSink : public TraceDetectionSinkInterface$/;" c file: TraceDetectionMoulon src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::TraceDetectionMoulon($/;" f class:pappso::TraceDetectionMoulon TraceDetectionMoulon src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::TraceDetectionMoulon(const TraceDetectionMoulon &other)$/;" f class:pappso::TraceDetectionMoulon TraceDetectionMoulon src/pappsomspp/processing/detection/tracedetectionmoulon.h /^class PMSPP_LIB_DECL TraceDetectionMoulon : public TraceDetectionInterface$/;" c namespace:pappso TraceDetectionSinkInterface src/pappsomspp/processing/detection/tracedetectioninterface.h /^class TraceDetectionSinkInterface$/;" c namespace:pappso TraceDetectionZivy src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::TraceDetectionZivy($/;" f class:pappso::TraceDetectionZivy TraceDetectionZivy src/pappsomspp/processing/detection/tracedetectionzivy.h /^class PMSPP_LIB_DECL TraceDetectionZivy : public TraceDetectionInterface$/;" c namespace:pappso TraceMinusCombiner src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^TraceMinusCombiner::TraceMinusCombiner()$/;" f class:pappso::TraceMinusCombiner TraceMinusCombiner src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^TraceMinusCombiner::TraceMinusCombiner(TraceMinusCombinerCstSPtr other)$/;" f class:pappso::TraceMinusCombiner TraceMinusCombiner src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^TraceMinusCombiner::TraceMinusCombiner(const TraceMinusCombiner &other)$/;" f class:pappso::TraceMinusCombiner TraceMinusCombiner src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^TraceMinusCombiner::TraceMinusCombiner(int decimal_places)$/;" f class:pappso::TraceMinusCombiner TraceMinusCombiner src/pappsomspp/processing/combiners/traceminuscombiner.h /^class PMSPP_LIB_DECL TraceMinusCombiner : public TraceCombiner$/;" c namespace:pappso TraceMinusCombinerCstSPtr src/pappsomspp/processing/combiners/traceminuscombiner.h /^typedef std::shared_ptr TraceMinusCombinerCstSPtr;$/;" t namespace:pappso TraceMinusCombinerSPtr src/pappsomspp/processing/combiners/traceminuscombiner.h /^typedef std::shared_ptr TraceMinusCombinerSPtr;$/;" t namespace:pappso TracePeak src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::TracePeak()$/;" f class:pappso::TracePeak TracePeak src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::TracePeak(const TracePeak &other)$/;" f class:pappso::TracePeak TracePeak src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::TracePeak(std::vector::const_iterator it_begin,$/;" f class:pappso::TracePeak TracePeak src/pappsomspp/processing/detection/tracepeak.h /^class PMSPP_LIB_DECL TracePeak$/;" c namespace:pappso TracePeakCstSPtr src/pappsomspp/processing/detection/tracepeak.h /^typedef std::shared_ptr TracePeakCstSPtr;$/;" t namespace:pappso TracePeakList src/pappsomspp/processing/detection/tracepeaklist.cpp /^TracePeakList::TracePeakList()$/;" f class:TracePeakList TracePeakList src/pappsomspp/processing/detection/tracepeaklist.cpp /^TracePeakList::TracePeakList(const TracePeakList &other)$/;" f class:TracePeakList TracePeakList src/pappsomspp/processing/detection/tracepeaklist.h /^class PMSPP_LIB_DECL TracePeakList : public std::vector,$/;" c namespace:pappso TracePeakOdsWriterSink tests/test_xic.cpp /^ TracePeakOdsWriterSink(CalcWriterInterface &output) : _output(output)$/;" f class:TracePeakOdsWriterSink TracePeakOdsWriterSink tests/test_xic.cpp /^class TracePeakOdsWriterSink : public TraceDetectionSinkInterface$/;" c file: TracePlusCombiner src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^TracePlusCombiner::TracePlusCombiner() : TraceCombiner()$/;" f class:pappso::TracePlusCombiner TracePlusCombiner src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^TracePlusCombiner::TracePlusCombiner(TracePlusCombinerCstSPtr other)$/;" f class:pappso::TracePlusCombiner TracePlusCombiner src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^TracePlusCombiner::TracePlusCombiner(const TracePlusCombiner &other)$/;" f class:pappso::TracePlusCombiner TracePlusCombiner src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^TracePlusCombiner::TracePlusCombiner(int decimal_places)$/;" f class:pappso::TracePlusCombiner TracePlusCombiner src/pappsomspp/processing/combiners/tracepluscombiner.h /^class PMSPP_LIB_DECL TracePlusCombiner : public TraceCombiner$/;" c namespace:pappso TracePlusCombinerCstSPtr src/pappsomspp/processing/combiners/tracepluscombiner.h /^typedef std::shared_ptr TracePlusCombinerCstSPtr;$/;" t namespace:pappso TracePlusCombinerSPtr src/pappsomspp/processing/combiners/tracepluscombiner.h /^typedef std::shared_ptr TracePlusCombinerSPtr;$/;" t namespace:pappso TraceSPtr src/pappsomspp/trace/trace.h /^typedef std::shared_ptr TraceSPtr;$/;" t namespace:pappso Translater src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::Translater::Translater(MzxmlOutput *p_mzxml_output)$/;" f class:MzxmlOutput::Translater Translater src/pappsomspp/msrun/output/mzxmloutput.h /^ class Translater : public SpectrumCollectionHandlerInterface$/;" c class:pappso::MzxmlOutput U Session.vim /^nnoremap U :call nerdtree#ui_glue#invokeKeyMap("U")$/;" m Ui src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.h /^namespace Ui$/;" n Ui src/pappsomspp/widget/obo/obolistwidget/obolistwidget.h /^namespace Ui$/;" n Ui src/pappsomspp/widget/obo/obotermform/obotermform.h /^namespace Ui$/;" n Ui tests/widget/testwidgetgui.h /^namespace Ui$/;" n UiMonitorInterface src/pappsomspp/processing/uimonitor/uimonitorinterface.h /^class PMSPP_LIB_DECL UiMonitorInterface$/;" c namespace:pappso UiMonitorText src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^UiMonitorText::UiMonitorText(QTextStream &output_stream)$/;" f class:UiMonitorText UiMonitorText src/pappsomspp/processing/uimonitor/uimonitortext.h /^class PMSPP_LIB_DECL UiMonitorText : public UiMonitorInterface$/;" c namespace:pappso UiMonitorTextPercent src/pappsomspp/processing/uimonitor/uimonitortextpercent.cpp /^UiMonitorTextPercent::UiMonitorTextPercent(QTextStream &output_stream)$/;" f class:UiMonitorTextPercent UiMonitorTextPercent src/pappsomspp/processing/uimonitor/uimonitortextpercent.h /^class PMSPP_LIB_DECL UiMonitorTextPercent : public UiMonitorText$/;" c namespace:pappso UiMonitorVoid src/pappsomspp/processing/uimonitor/uimonitorvoid.h /^class PMSPP_LIB_DECL UiMonitorVoid : public UiMonitorInterface$/;" c namespace:pappso Utils src/pappsomspp/utils.h /^class PMSPP_LIB_DECL Utils$/;" c namespace:pappso VERBOSE src/Makefile /^VERBOSE = 1$/;" m VERTICAL_LINES src/pappsomspp/processing/combiners/selectionpolygon.h /^ VERTICAL_LINES = (RIGHT_LINE | LEFT_LINE),$/;" m class:pappso::PolygonType WrapTandemInput src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp /^WrapTandemInput::WrapTandemInput(const QString &destinationMzXmlFile,$/;" f class:pappso::WrapTandemInput WrapTandemInput src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^class WrapTandemInput : public XmlStreamReaderInterface$/;" c namespace:pappso WrapTandemResults src/pappsomspp/processing/tandemwrapper/wraptandemresults.cpp /^WrapTandemResults::WrapTandemResults(const QString &final_tandem_output,$/;" f class:pappso::WrapTandemResults WrapTandemResults src/pappsomspp/processing/tandemwrapper/wraptandemresults.h /^class WrapTandemResults : public XmlStreamReaderInterface$/;" c namespace:pappso X Session.vim /^nnoremap X :call nerdtree#ui_glue#invokeKeyMap("X")$/;" m XTANDEMRESULTSHANDLER_H tests/saxparsers/xtandemresultshandler.h 2;" d Xic src/pappsomspp/xic/xic.cpp /^Xic::Xic()$/;" f class:pappso::Xic Xic src/pappsomspp/xic/xic.cpp /^Xic::Xic(const Trace &other) : Trace(other)$/;" f class:pappso::Xic Xic src/pappsomspp/xic/xic.h /^class PMSPP_LIB_DECL Xic : public Trace$/;" c namespace:pappso XicComputeStructure src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::XicComputeStructure::XicComputeStructure($/;" f class:pappso::TimsFrame::XicComputeStructure XicComputeStructure src/pappsomspp/vendors/tims/timsframe.h /^ struct XicComputeStructure$/;" s class:pappso::TimsFrame XicCoord src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^XicCoord::XicCoord(const XicCoord &other)$/;" f class:XicCoord XicCoord src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^pappso::XicCoord::XicCoord()$/;" f class:pappso::XicCoord XicCoord src/pappsomspp/msrun/xiccoord/xiccoord.h /^struct PMSPP_LIB_DECL XicCoord$/;" s namespace:pappso XicCoordSPtr src/pappsomspp/msrun/xiccoord/xiccoord.h /^typedef std::shared_ptr XicCoordSPtr;$/;" t namespace:pappso XicCoordTims src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::XicCoordTims(const XicCoordTims &other) : XicCoord(other)$/;" f class:pappso::XicCoordTims XicCoordTims src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ XicCoordTims() : XicCoord(){};$/;" f struct:pappso::XicCoordTims XicCoordTims src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^struct PMSPP_LIB_DECL XicCoordTims : XicCoord$/;" s namespace:pappso XicCoordTimsSPtr src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^typedef std::shared_ptr XicCoordTimsSPtr;$/;" t namespace:pappso XicCstSPtr src/pappsomspp/xic/xic.h /^typedef std::shared_ptr XicCstSPtr;$/;" t namespace:pappso XicExtractMethod src/pappsomspp/types.h /^enum class XicExtractMethod : std::int8_t$/;" c class:pappso::MzFormat XicOdsWriter tests/common.h /^ XicOdsWriter(CalcWriterInterface &output) : _output(output)$/;" f class:XicOdsWriter XicOdsWriter tests/common.h /^class XicOdsWriter$/;" c XicOdsWriter tests/test_xic.cpp /^ XicOdsWriter(CalcWriterInterface &output) : _output(output)$/;" f class:XicOdsWriter XicOdsWriter tests/test_xic.cpp /^class XicOdsWriter$/;" c file: XicPeptideFragmentIon src/pappsomspp/xic/xicpeptidefragmention.cpp /^XicPeptideFragmentIon::XicPeptideFragmentIon($/;" f class:pappso::XicPeptideFragmentIon XicPeptideFragmentIon src/pappsomspp/xic/xicpeptidefragmention.cpp /^XicPeptideFragmentIon::XicPeptideFragmentIon(const XicPeptideFragmentIon &other)$/;" f class:pappso::XicPeptideFragmentIon XicPeptideFragmentIon src/pappsomspp/xic/xicpeptidefragmention.h /^class XicPeptideFragmentIon : public XicPeptideInterface$/;" c namespace:pappso XicPeptideFragmentIonNaturalIsotope src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.cpp /^XicPeptideFragmentIonNaturalIsotope::XicPeptideFragmentIonNaturalIsotope($/;" f class:pappso::XicPeptideFragmentIonNaturalIsotope XicPeptideFragmentIonNaturalIsotope src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h /^class XicPeptideFragmentIonNaturalIsotope : public QualifiedXic$/;" c namespace:pappso XicPeptideInterface src/pappsomspp/xic/xicpeptideinterface.cpp /^XicPeptideInterface::XicPeptideInterface($/;" f class:pappso::XicPeptideInterface XicPeptideInterface src/pappsomspp/xic/xicpeptideinterface.h /^class XicPeptideInterface : public QualifiedXic$/;" c namespace:pappso XicSPtr src/pappsomspp/xic/xic.h /^typedef std::shared_ptr XicSPtr;$/;" t namespace:pappso XicWidget src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::XicWidget(QWidget *parent) : GraphicDeviceWidget(parent)$/;" f class:XicWidget XicWidget src/pappsomspp/widget/xicwidget/xicwidget.h /^class PMSPP_LIB_DECL XicWidget : public GraphicDeviceWidget$/;" c namespace:pappso XicXicPeakPairList src/pappsomspp/widget/xicwidget/xicwidget.h /^typedef std::vector> XicXicPeakPairList;$/;" t namespace:pappso XmlStreamReaderInterface src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^XmlStreamReaderInterface::XmlStreamReaderInterface()$/;" f class:XmlStreamReaderInterface XmlStreamReaderInterface src/pappsomspp/processing/xml/xmlstreamreaderinterface.h /^class PMSPP_LIB_DECL XmlStreamReaderInterface$/;" c namespace:pappso XtandemError src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ XtandemError(const QString &message) throw() : PappsoException(message)$/;" f class:pappso::XtandemError XtandemError src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^class XtandemError : public PappsoException$/;" c namespace:pappso XtandemHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::XtandemHyperscore(const MassSpectrum &spectrum,$/;" f class:pappso::XtandemHyperscore XtandemHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::XtandemHyperscore(const XtandemHyperscore &other)$/;" f class:pappso::XtandemHyperscore XtandemHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscore.h /^class PMSPP_LIB_DECL XtandemHyperscore$/;" c namespace:pappso XtandemHyperscoreBis src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::XtandemHyperscoreBis($/;" f class:XtandemHyperscoreBis XtandemHyperscoreBis src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^class XtandemHyperscoreBis$/;" c namespace:pappso XtandemPresetReader src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^XtandemPresetReader::XtandemPresetReader()$/;" f class:pappso::XtandemPresetReader XtandemPresetReader src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h /^class XtandemPresetReader : public XmlStreamReaderInterface$/;" c namespace:pappso XtandemResultsHandler tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::XtandemResultsHandler(PrecisionPtr precision)$/;" f class:XtandemResultsHandler XtandemResultsHandler tests/saxparsers/xtandemresultshandler.h /^class XtandemResultsHandler : public QXmlDefaultHandler$/;" c XtandemSpectrumProcess src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::XtandemSpectrumProcess($/;" f class:pappso::XtandemSpectrumProcess XtandemSpectrumProcess src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::XtandemSpectrumProcess()$/;" f class:pappso::XtandemSpectrumProcess XtandemSpectrumProcess src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^class PMSPP_LIB_DECL XtandemSpectrumProcess$/;" c namespace:pappso XyMsFileReader src/pappsomspp/msfile/xymsfilereader.cpp /^XyMsFileReader::XyMsFileReader(const QString &file_name)$/;" f class:pappso::XyMsFileReader XyMsFileReader src/pappsomspp/msfile/xymsfilereader.h /^class XyMsFileReader : MsFileReader$/;" c namespace:pappso XyMsRunReader src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::XyMsRunReader(MsRunIdCstSPtr &msrun_id_csp)$/;" f class:pappso::XyMsRunReader XyMsRunReader src/pappsomspp/msrun/xymsrunreader.h /^class XyMsRunReader : public MsRunReader$/;" c namespace:pappso ZeroMassDelta src/pappsomspp/psm/deepprot/deepprotenum.h /^ ZeroMassDelta = 1,$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus ZeroMassDelta src/pappsomspp/psm/deepprot/deepprotenum.h /^ ZeroMassDelta = 1, \/\/\/< peptide candidate is in precursor mz range$/;" m class:pappso::DeepProtMatchType ZeroMassDeltaMissedCleavage src/pappsomspp/psm/deepprot/deepprotenum.h /^ ZeroMassDeltaMissedCleavage =$/;" m class:pappso::DeepProtMatchType ZeroMassDeltaSemiTryptic src/pappsomspp/psm/deepprot/deepprotenum.h /^ ZeroMassDeltaSemiTryptic =$/;" m class:pappso::DeepProtMatchType [ Session.vim /^imap [ delimitMate[$/;" m ] Session.vim /^imap ] delimitMate]$/;" m _a_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _a_ions = false; \/\/ PeptideIon::a$/;" m class:pappso::XtandemSpectrumProcess _aa_ion_factor_b src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::AaFactorMap XtandemHyperscore::_aa_ion_factor_b = [] {$/;" m class:pappso::XtandemHyperscore file: _aa_ion_factor_b src/pappsomspp/psm/xtandem/xtandemhyperscore.h /^ static AaFactorMap _aa_ion_factor_b;$/;" m class:pappso::XtandemHyperscore _aa_ion_factor_y src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::AaFactorMap XtandemHyperscore::_aa_ion_factor_y = [] {$/;" m class:pappso::XtandemHyperscore file: _aa_ion_factor_y src/pappsomspp/psm/xtandem/xtandemhyperscore.h /^ static AaFactorMap _aa_ion_factor_y;$/;" m class:pappso::XtandemHyperscore _ao_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _ao_ions = false; \/\/ PeptideIon::ao$/;" m class:pappso::XtandemSpectrumProcess _astar_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _astar_ions = false; \/\/ PeptideIon::a$/;" m class:pappso::XtandemSpectrumProcess _b_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _b_ions = true; \/\/ PeptideIon::b$/;" m class:pappso::XtandemSpectrumProcess _bar_width src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ double _bar_width = 0.5;$/;" m class:pappso::QCPSpectrum _bo_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _bo_ions = false; \/\/ PeptideIon::bo$/;" m class:pappso::XtandemSpectrumProcess _bstar_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _bstar_ions = false; \/\/ PeptideIon::bstar$/;" m class:pappso::XtandemSpectrumProcess _c_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _c_ions = false; \/\/ PeptideIon::ystar$/;" m class:pappso::XtandemSpectrumProcess _charge src/pappsomspp/psm/peakionmatch.h /^ unsigned int _charge;$/;" m class:pappso::PeakIonMatch _click src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ bool _click = false;$/;" m class:pappso::QCPSpectrum _click src/pappsomspp/widget/xicwidget/qcpxic.h /^ bool _click = false;$/;" m class:pappso::QCPXic _colours src/pappsomspp/widget/xicwidget/qcpxic.h /^ std::vector _colours;$/;" m class:pappso::QCPXic _control_key src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ bool _control_key = false;$/;" m class:pappso::QCPSpectrum _control_key src/pappsomspp/widget/xicwidget/qcpxic.h /^ bool _control_key = false;$/;" m class:pappso::QCPXic _count tests/test_xic.cpp /^ unsigned int _count = 0;$/;" m class:TraceDetectionMaxSink file: _curent_spectrum tests/saxparsers/xtandemresultshandler.h /^ MassSpectrum _curent_spectrum;$/;" m class:XtandemResultsHandler _currentText tests/saxparsers/xtandemresultshandler.h /^ QString _currentText;$/;" m class:XtandemResultsHandler _current_b_ions tests/saxparsers/xtandemresultshandler.h /^ uint _current_b_ions;$/;" m class:XtandemResultsHandler _current_domain_end tests/saxparsers/xtandemresultshandler.h /^ uint _current_domain_end;$/;" m class:XtandemResultsHandler _current_domain_id tests/saxparsers/xtandemresultshandler.h /^ QString _current_domain_id;$/;" m class:XtandemResultsHandler _current_domain_start tests/saxparsers/xtandemresultshandler.h /^ uint _current_domain_start;$/;" m class:XtandemResultsHandler _current_group_id tests/saxparsers/xtandemresultshandler.h /^ QString _current_group_id;$/;" m class:XtandemResultsHandler _current_hyperscore tests/saxparsers/xtandemresultshandler.h /^ float _current_hyperscore;$/;" m class:XtandemResultsHandler _current_mh tests/saxparsers/xtandemresultshandler.h /^ pappso_double _current_mh;$/;" m class:XtandemResultsHandler _current_ms2_event src/pappsomspp/widget/xicwidget/qcpxic.h /^ QCPItemTracer *_current_ms2_event = nullptr;$/;" m class:pappso::QCPXic _current_peptide_end tests/saxparsers/xtandemresultshandler.h /^ uint _current_peptide_end;$/;" m class:XtandemResultsHandler _current_peptide_sp tests/saxparsers/xtandemresultshandler.h /^ NoConstPeptideSp _current_peptide_sp;$/;" m class:XtandemResultsHandler _current_peptide_start tests/saxparsers/xtandemresultshandler.h /^ uint _current_peptide_start;$/;" m class:XtandemResultsHandler _current_protein_label tests/saxparsers/xtandemresultshandler.h /^ QString _current_protein_label;$/;" m class:XtandemResultsHandler _current_seq tests/saxparsers/xtandemresultshandler.h /^ QString _current_seq;$/;" m class:XtandemResultsHandler _current_xdata tests/saxparsers/xtandemresultshandler.h /^ QStringList _current_xdata;$/;" m class:XtandemResultsHandler _current_y_ions tests/saxparsers/xtandemresultshandler.h /^ uint _current_y_ions;$/;" m class:XtandemResultsHandler _current_z tests/saxparsers/xtandemresultshandler.h /^ uint _current_z;$/;" m class:XtandemResultsHandler _custom_plot src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ QCPSpectrum *_custom_plot = nullptr;$/;" m class:pappso::MassSpectrumWidget _errorStr tests/saxparsers/xtandemresultshandler.h /^ QString _errorStr;$/;" m class:XtandemResultsHandler _graph_color src/pappsomspp/widget/xicwidget/qcpxic.h /^ QColor _graph_color;$/;" m class:pappso::QCPXic _graph_peak_border_list src/pappsomspp/widget/xicwidget/qcpxic.h /^ std::vector _graph_peak_border_list;$/;" m class:pappso::QCPXic _graph_peak_surface_list src/pappsomspp/widget/xicwidget/qcpxic.h /^ std::vector _graph_peak_surface_list;$/;" m class:pappso::QCPXic _in_GAML_spectrum tests/saxparsers/xtandemresultshandler.h /^ bool _in_GAML_spectrum = false;$/;" m class:XtandemResultsHandler _intensity_range src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPRange _intensity_range;$/;" m class:pappso::QCPSpectrum _intensity_range src/pappsomspp/widget/xicwidget/qcpxic.h /^ QCPRange _intensity_range;$/;" m class:pappso::QCPXic _intercept src/pappsomspp/trace/linearregression.h /^ double _intercept = 0;$/;" m class:pappso::LinearRegression _ion_count src/pappsomspp/psm/xtandem/xtandemhyperscore.h /^ std::map _ion_count;$/;" m class:pappso::XtandemHyperscore _ion_list src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ std::list _ion_list;$/;" m class:pappso::MassSpectrumWidget _ion_list tests/saxparsers/xtandemresultshandler.h /^ std::list _ion_list;$/;" m class:XtandemResultsHandler _ion_sp src/pappsomspp/psm/peakionmatch.h /^ PeptideFragmentIonSp _ion_sp;$/;" m class:pappso::PeakIonMatch _ion_type_count src/pappsomspp/psm/peptidespectrummatch.h /^ std::array _ion_type_count = {{0}};$/;" m class:pappso::PeptideSpectrumMatch _is_title tests/test_msrunalignment.cpp /^ bool _is_title = true;$/;" m class:PeptideTableHandler file: _is_title tests/test_xic.cpp /^ bool _is_title = true;$/;" m class:CustomHandler file: _is_visible_mass_delta src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ bool _is_visible_mass_delta;$/;" m class:pappso::MassSpectrumWidget _isotope_mass_list src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ std::vector _isotope_mass_list;$/;" m class:pappso::MassSpectrumWidget _map_ion_type_bars src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ std::map _map_ion_type_bars;$/;" m class:pappso::QCPSpectrum _map_xic_graph src/pappsomspp/widget/xicwidget/qcpxic.h /^ std::map _map_xic_graph;$/;" m class:pappso::QCPXic _map_xic_msms_event src/pappsomspp/widget/xicwidget/xicwidget.h /^ std::map _map_xic_msms_event;$/;" m class:pappso::XicWidget _map_xic_name src/pappsomspp/widget/xicwidget/xicwidget.h /^ std::map _map_xic_name;$/;" m class:pappso::XicWidget _mass_delta_range src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPRange _mass_delta_range;$/;" m class:pappso::QCPSpectrum _max_charge tests/saxparsers/xtandemresultshandler.h /^ unsigned int _max_charge;$/;" m class:XtandemResultsHandler _max_isotope_number src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ unsigned int _max_isotope_number = 0;$/;" m class:pappso::MassSpectrumWidget _max_isotope_rank src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ unsigned int _max_isotope_rank = 1;$/;" m class:pappso::MassSpectrumWidget _mod_parser src/pappsomspp/peptide/peptidestrparser.h /^ static QRegularExpression _mod_parser;$/;" m class:pappso::PeptideStrParser _morpheus_score src/pappsomspp/psm/morpheus/morpheusscore.h /^ pappso::pappso_double _morpheus_score;$/;" m class:pappso::MorpheusScore _mouse_move src/pappsomspp/widget/xicwidget/qcpxic.h /^ bool _mouse_move = false;$/;" m class:pappso::QCPXic _ms_level src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ unsigned int _ms_level;$/;" m class:pappso::MassSpectrumWidget _mz_range src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPRange _mz_range;$/;" m class:pappso::QCPSpectrum _naturalIsotopeAverageSp src/pappsomspp/psm/peakionisotopematch.h /^ PeptideNaturalIsotopeAverageSp _naturalIsotopeAverageSp;$/;" m class:pappso::PeakIonIsotopeMatch _old_x src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ pappso::pappso_double _old_x;$/;" m class:pappso::QCPSpectrum _old_x src/pappsomspp/widget/xicwidget/qcpxic.h /^ pappso::pappso_double _old_x;$/;" m class:pappso::QCPXic _old_y src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ pappso::pappso_double _old_y;$/;" m class:pappso::QCPSpectrum _old_y src/pappsomspp/widget/xicwidget/qcpxic.h /^ pappso::pappso_double _old_y;$/;" m class:pappso::QCPXic _output tests/common.h /^ CalcWriterInterface &_output;$/;" m class:XicOdsWriter _output tests/test_xic.cpp /^ CalcWriterInterface &_output;$/;" m class:TracePeakOdsWriterSink file: _output tests/test_xic.cpp /^ CalcWriterInterface &_output;$/;" m class:XicOdsWriter file: _p_delta_axis_rect src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPAxisRect *_p_delta_axis_rect;$/;" m class:pappso::QCPSpectrum _p_delta_graph src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPGraph *_p_delta_graph;$/;" m class:pappso::QCPSpectrum _p_mouse_peak src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ const DataPoint *_p_mouse_peak = nullptr;$/;" m class:pappso::MassSpectrumWidget _p_ms1_precision src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ PrecisionPtr _p_ms1_precision = PrecisionFactory::getDaltonInstance(0.1);$/;" m class:pappso::MassSpectrumWidget _p_ms2_precision src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ PrecisionPtr _p_ms2_precision = PrecisionFactory::getDaltonInstance(0.5);$/;" m class:pappso::MassSpectrumWidget _p_peak_bars src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPBars *_p_peak_bars;$/;" m class:pappso::QCPSpectrum _p_peak_bars_isotope src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPBars *_p_peak_bars_isotope;$/;" m class:pappso::QCPSpectrum _p_spectrum src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ const MassSpectrum *_p_spectrum = nullptr;$/;" m class:pappso::QCPSpectrum _parent src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ MassSpectrumWidget *_parent;$/;" m class:pappso::QCPSpectrum _parent src/pappsomspp/widget/xicwidget/qcpxic.h /^ XicWidget *_parent;$/;" m class:pappso::QCPXic _peak src/pappsomspp/psm/peakionmatch.h /^ DataPoint _peak;$/;" m class:pappso::PeakIonMatch _peak_ion_isotope_match_list src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ std::list _peak_ion_isotope_match_list;$/;" m class:pappso::MassSpectrumWidget _peak_ion_match_list src/pappsomspp/psm/peptideisotopespectrummatch.h /^ std::list _peak_ion_match_list;$/;" m class:pappso::PeptideIsotopeSpectrumMatch _peak_ion_match_list src/pappsomspp/psm/peptidespectrummatch.h /^ std::list _peak_ion_match_list;$/;" m class:pappso::PeptideSpectrumMatch _peak_max tests/test_xic.cpp /^ TracePeak _peak_max;$/;" m class:TraceDetectionMaxSink file: _peptide_charge src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ unsigned int _peptide_charge = 3;$/;" m class:pappso::MassSpectrumWidget _peptide_list tests/test_protein.cpp /^ QStringList _peptide_list;$/;" m class:pappso::DigestionHandler file: _peptide_list tests/test_protein.cpp /^ std::vector _peptide_list;$/;" m class:pappso::PeptideModHandler file: _peptide_set src/pappsomspp/grouping/grpexperiment.cpp /^ GrpPeptideSet _peptide_set;$/;" m struct:ContainsAny file: _peptide_sp src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ PeptideSp _peptide_sp;$/;" m class:pappso::MassSpectrumWidget _precision src/pappsomspp/psm/peptideisotopespectrummatch.h /^ PrecisionPtr _precision;$/;" m class:pappso::PeptideIsotopeSpectrumMatch _precision src/pappsomspp/psm/peptidespectrummatch.h /^ PrecisionPtr _precision;$/;" m class:pappso::PeptideSpectrumMatch _precision tests/saxparsers/xtandemresultshandler.h /^ PrecisionPtr _precision;$/;" m class:XtandemResultsHandler _proto_hyperscore src/pappsomspp/psm/xtandem/xtandemhyperscore.h /^ pappso_double _proto_hyperscore;$/;" m class:pappso::XtandemHyperscore _qcp_xic src/pappsomspp/widget/xicwidget/xicwidget.h /^ QCPXic *_qcp_xic;$/;" m class:pappso::XicWidget _refine_spectrum_synthesis src/pappsomspp/psm/xtandem/xtandemhyperscore.h /^ bool _refine_spectrum_synthesis;$/;" m class:pappso::XtandemHyperscore _refine_spectrum_synthesis tests/saxparsers/xtandemresultshandler.h /^ bool _refine_spectrum_synthesis;$/;" m class:XtandemResultsHandler _rt_in_seconds src/pappsomspp/widget/xicwidget/xicwidget.h /^ bool _rt_in_seconds = true;$/;" m class:pappso::XicWidget _rt_range src/pappsomspp/widget/xicwidget/qcpxic.h /^ QCPRange _rt_range;$/;" m class:pappso::QCPXic _rx_modmass src/pappsomspp/peptide/peptidestrparser.h /^ static QRegularExpression _rx_modmass;$/;" m class:pappso::PeptideStrParser _rx_psimod src/pappsomspp/peptide/peptidestrparser.h /^ static QRegularExpression _rx_psimod;$/;" m class:pappso::PeptideStrParser _slope src/pappsomspp/trace/linearregression.h /^ double _slope = 0;$/;" m class:pappso::LinearRegression _spectrum_sp src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ MassSpectrumCstSPtr _spectrum_sp;$/;" m class:pappso::MassSpectrumWidget _tag_nmost_intense src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ unsigned int _tag_nmost_intense = 10;$/;" m class:pappso::MassSpectrumWidget _tag_stack tests/saxparsers/xtandemresultshandler.h /^ std::vector _tag_stack;$/;" m class:XtandemResultsHandler _x_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _x_ions = false; \/\/ CO2$/;" m class:pappso::XtandemSpectrumProcess _xic tests/test_xic.cpp /^ Trace &_xic;$/;" m class:CustomHandler file: _xic_element tests/test_xic.cpp /^ DataPoint _xic_element;$/;" m class:CustomHandler file: _xic_peak_sp_list src/pappsomspp/widget/xicwidget/xicwidget.h /^ XicXicPeakPairList _xic_peak_sp_list;$/;" m class:pappso::XicWidget _xic_sp_list src/pappsomspp/widget/xicwidget/xicwidget.h /^ std::vector _xic_sp_list;$/;" m class:pappso::XicWidget _y_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _y_ions = true; \/\/ PeptideIon::y$/;" m class:pappso::XtandemSpectrumProcess _yo_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _yo_ions = false; \/\/ PeptideIon::yo$/;" m class:pappso::XtandemSpectrumProcess _ystar_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _ystar_ions = false; \/\/ PeptideIon::ystar$/;" m class:pappso::XtandemSpectrumProcess _z_ions src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool _z_ions = false; \/\/ PeptideIon::z$/;" m class:pappso::XtandemSpectrumProcess ` Session.vim /^imap ` delimitMate`$/;" m a src/pappsomspp/peptide/peptide.h /^ a,$/;" m class:pappso::PeptideDirection::PeptideIonNter a src/pappsomspp/types.h /^ a = 3, \/\/\/< Nter aldimine ions$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon abSciexT2D src/pappsomspp/types.h /^ abSciexT2D = 9,$/;" m class:pappso::MzFormat abSciexWiff src/pappsomspp/types.h /^ abSciexWiff = 8,$/;" m class:pappso::MzFormat accept src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::accept($/;" f class:pappso::MsRunDataSetTree accept src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::accept(MsRunDataSetTreeNodeVisitorInterface &visitor)$/;" f class:pappso::MsRunDataSetTree accept src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::accept(MsRunDataSetTreeNodeVisitorInterface &visitor)$/;" f class:pappso::MsRunDataSetTreeNode accept src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::accept(const QString &file_name) const$/;" f class:pappso::PwizMsRunReader accept src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::accept(const QString &file_name) const$/;" f class:TimsMsRunReader accept src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::accept(const QString &file_name) const$/;" f class:TimsMsRunReaderMs2 accept src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::accept(const QString &file_name) const$/;" f class:TimsMsRunReaderMs2Selected accept src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::accept(const QString &file_name) const$/;" f class:pappso::XyMsRunReader accumulation_time src/pappsomspp/vendors/tims/timsframerecord.h /^ double accumulation_time = 0;$/;" m struct:pappso::TimsFrameRecord acquireDevice src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::acquireDevice()$/;" f class:pappso::PwizMsRunReader acquireDevice src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::acquireDevice()$/;" f class:TimsMsRunReader acquireDevice src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::acquireDevice()$/;" f class:TimsMsRunReaderMs2 acquireDevice src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::acquireDevice()$/;" f class:pappso::XyMsRunReader acquireSlices src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::acquireSlices(const MzRange &mz_range)$/;" f class:pappso::MsRunXicExtractorDisk add src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::add(GrpSubGroup *p_add_sub_group)$/;" f class:pappso::GrpMapPeptideToSubGroupSet add src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::add(GrpSubGroup *p_add_sub_group)$/;" f class:pappso::GrpSubGroupSet addAa src/pappsomspp/protein/peptidefixedmodificationbuilder.cpp /^PeptideFixedModificationBuilder::addAa(char aa)$/;" f class:PeptideFixedModificationBuilder addAa src/pappsomspp/protein/peptidevariablemodificationbuilder.cpp /^PeptideVariableModificationBuilder::addAa(char aa)$/;" f class:pappso::PeptideVariableModificationBuilder addAaModification src/pappsomspp/amino_acid/aa.cpp /^Aa::addAaModification(AaModificationP aaModification)$/;" f class:pappso::Aa addAaModification src/pappsomspp/peptide/peptide.cpp /^Peptide::addAaModification(AaModificationP aaModification,$/;" f class:pappso::Peptide addAll src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::addAll(const GrpPeptideSet &peptideSetIn)$/;" f class:GrpPeptideSet addAll src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::addAll(const GrpSubGroupSet &other)$/;" f class:pappso::GrpSubGroupSet addColorMap src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::addColorMap($/;" f class:pappso::BaseColorMapPlotWidget addDataPointRefByExclusion src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::addDataPointRefByExclusion($/;" f class:pappso::FilterChargeDeconvolution addDataPointToList src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::addDataPointToList($/;" f class:pappso::FilterChargeDeconvolution addDataSetQualMassSpectraInsideDtRtRange src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::addDataSetQualMassSpectraInsideDtRtRange($/;" f class:pappso::MsRunDataSetTree addDataSetTreeNodesInsideDtRtRange src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::addDataSetTreeNodesInsideDtRtRange(double start,$/;" f class:pappso::MsRunDataSetTree addExclusionMap src/pappsomspp/processing/filters/filterremovec13.cpp /^pappso::FilterRemoveC13::addExclusionMap($/;" f class:pappso::FilterRemoveC13 addFilterFromString src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::addFilterFromString(const QString &strBuildParams)$/;" f class:pappso::FilterSuiteString addFixedAaModification src/pappsomspp/protein/peptidebuilder.cpp /^PeptideBuilder::addFixedAaModification(char aa, AaModificationP modification)$/;" f class:pappso::PeptideBuilder addFixedCterModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::addFixedCterModificationString($/;" f class:PeptideModificatorPipeline addFixedModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::addFixedModificationString(const QString &mod_str)$/;" f class:PeptideModificatorPipeline addFixedNterModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::addFixedNterModificationString($/;" f class:PeptideModificatorPipeline addGroup src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::addGroup(GrpGroup *p_group_to_add)$/;" f class:GrpGroup addLabeledModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::addLabeledModificationString(const QString &mod_str)$/;" f class:PeptideModificatorPipeline addMassDelta src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::addMassDelta(const PeakIonIsotopeMatch &peak_ion_match)$/;" f class:QCPSpectrum addMassSpectrum src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::addMassSpectrum($/;" f class:pappso::MsRunDataSetTree addModificator src/pappsomspp/protein/peptidemodificatortee.cpp /^PeptideModificatorTee::addModificator($/;" f class:PeptideModificatorTee addMs1IsotopePattern src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::addMs1IsotopePattern($/;" f class:QCPSpectrum addMsMsEvent src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::addMsMsEvent(const Xic *xic_p, pappso::pappso_double rt)$/;" f class:QCPXic addMsMsEvent src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::addMsMsEvent(const Xic *xic_p, pappso::pappso_double rt)$/;" f class:XicWidget addPeakIonIsotopeMatch src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::addPeakIonIsotopeMatch(const PeakIonIsotopeMatch &peak_ion_match)$/;" f class:QCPSpectrum addPeptideAsSeamark src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::addPeptideAsSeamark(const T &peptide_id,$/;" f class:MsRunRetentionTime addPostGroupingGrpProteinSpRemoval src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::addPostGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein)$/;" f class:GrpExperiment addPotentialCterModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::addPotentialCterModificationString($/;" f class:PeptideModificatorPipeline addPotentialModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::addPotentialModificationString($/;" f class:PeptideModificatorPipeline addPotentialNterModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::addPotentialNterModificationString($/;" f class:PeptideModificatorPipeline addPreGroupingGrpProteinSpRemoval src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::addPreGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein)$/;" f class:GrpExperiment addSubGroupSp src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::addSubGroupSp(GrpMapPeptideToGroup &grp_map_peptide_to_group,$/;" f class:GrpExperiment addSubGroupSp src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::addSubGroupSp(const GrpSubGroupSp &grpSubGroupSp)$/;" f class:GrpGroup addTrace src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::addTrace(const pappso::Trace &trace, const QColor &color)$/;" f class:pappso::BaseTracePlotWidget addXicP src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::addXicP(const Xic *xic_p)$/;" f class:QCPXic addXicPeakList src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::addXicPeakList($/;" f class:QCPXic addXicPeakList src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::addXicPeakList($/;" f class:XicWidget addXicSp src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::addXicSp(XicCstSPtr xic_sp)$/;" f class:XicWidget addition src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^pappso::XicCoord::addition(XicCoordSPtr &to_add) const$/;" f class:pappso::XicCoord addition src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::addition(XicCoordSPtr &to_add) const$/;" f class:pappso::XicCoordTims agilentMassHunter src/pappsomspp/types.h /^ agilentMassHunter = 10,$/;" m class:pappso::MzFormat alanine src/pappsomspp/types.h /^ alanine = 'A',$/;" m class:pappso::MzFormat::AminoAcidChar align src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::align($/;" f class:MsRunRetentionTime allLayerNamesToString src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::allLayerNamesToString() const$/;" f class:pappso::BasePlotWidget almostEqual src/pappsomspp/utils.cpp /^Utils::almostEqual(double value1, double value2, int decimalPlaces)$/;" f class:pappso::Utils analysis_dir doc/bruker/tims_calibration.py /^analysis_dir = sys.argv[1]$/;" v analysis_dir doc/bruker/tof_calibration.py /^analysis_dir = sys.argv[1]$/;" v answer maintainer-scripts/makeOrigTarball.py /^answer = input(message + " (RETURN | Ctrl-C)");$/;" v ao src/pappsomspp/peptide/peptide.h /^ ao,$/;" m class:pappso::PeptideDirection::PeptideIonNter ao src/pappsomspp/types.h /^ ao = 5, \/\/\/< Nter aldimine ions + H2O loss$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon append src/pappsomspp/trace/trace.cpp /^Trace::append(const DataPoint &data_point)$/;" f class:pappso::Trace appendPrecursorIonData src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::appendPrecursorIonData($/;" f class:pappso::QualifiedMassSpectrum appendSliceInBuffer src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp /^MsRunXicExtractorDiskBuffer::appendSliceInBuffer(unsigned int slice_number,$/;" f class:pappso::MsRunXicExtractorDiskBuffer appendSliceOnDisk src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::appendSliceOnDisk(unsigned int slice_number,$/;" f class:pappso::MsRunXicExtractorDisk appendText src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^pappso::UiMonitorText::appendText(const QString &text)$/;" f class:pappso::UiMonitorText appendToFile src/pappsomspp/utils.cpp /^Utils::appendToFile(const QString &text, const QString &file_name)$/;" f class:pappso::Utils appendToStream src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::appendToStream(QDataStream &outstream, std::size_t ipos) const$/;" f class:pappso::MsRunSlice areaTrace src/pappsomspp/trace/trace.cpp /^areaTrace(std::vector::const_iterator begin,$/;" f namespace:pappso areaTraceMinusBase src/pappsomspp/trace/trace.cpp /^areaTraceMinusBase(std::vector::const_iterator begin,$/;" f namespace:pappso arginine src/pappsomspp/types.h /^ arginine = 'R',$/;" m class:pappso::MzFormat::AminoAcidChar args maintainer-scripts/makeOrigTarball.py /^ args = shlex.split(commandLine);$/;" v args maintainer-scripts/makeOrigTarball.py /^args = parser.parse_args()$/;" v args maintainer-scripts/makeOrigTarball.py /^args = shlex.split(commandLine);$/;" v asparagine src/pappsomspp/types.h /^ asparagine = 'N',$/;" m class:pappso::MzFormat::AminoAcidChar aspartic_acid src/pappsomspp/types.h /^ aspartic_acid = 'D',$/;" m class:pappso::MzFormat::AminoAcidChar assumeYes maintainer-scripts/makeOrigTarball.py /^assumeYes = args.assumeYes;$/;" v astar src/pappsomspp/peptide/peptide.h /^ astar,$/;" m class:pappso::PeptideDirection::PeptideIonNter astar src/pappsomspp/types.h /^ astar = 4, \/\/\/< Nter aldimine ions + NH3 loss$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon atRetentionTime src/pappsomspp/xic/xic.cpp /^Xic::atRetentionTime(pappso_double rt) const$/;" f class:pappso::Xic axisDoubleClickHandler src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::axisDoubleClickHandler($/;" f class:pappso::BasePlotWidget axisDoubleClickHandler src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::axisDoubleClickHandler($/;" f class:pappso::BaseTracePlotWidget axisPan src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::axisPan()$/;" f class:pappso::BasePlotWidget axisPan src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::axisPan()$/;" f class:pappso::BaseTracePlotWidget axisReframe src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::axisReframe()$/;" f class:pappso::BasePlotWidget axisReframe src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::axisReframe()$/;" f class:pappso::BaseTracePlotWidget axisRescale src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::axisRescale()$/;" f class:pappso::BasePlotWidget axisRescale src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::axisRescale()$/;" f class:pappso::BaseTracePlotWidget axisScale src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::axisScale(Axis axis) const$/;" f class:pappso::BaseColorMapPlotWidget axisZoom src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::axisZoom()$/;" f class:pappso::BasePlotWidget axisZoom src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::axisZoom()$/;" f class:pappso::BaseTracePlotWidget b src/pappsomspp/peptide/peptide.h /^ b,$/;" m class:pappso::PeptideDirection::PeptideIonNter b src/pappsomspp/types.h /^ b = 0, \/\/\/< Nter acylium ions$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon backwardFindApex src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::backwardFindApex(const Trace &trace,$/;" f class:pappso::FilterLowIntensitySignalRemoval basePlotContextMetaTypeId src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^int basePlotContextMetaTypeId =$/;" v basePlotContextPtrMetaTypeId src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^int basePlotContextPtrMetaTypeId =$/;" v begin src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::begin() const$/;" f class:GrpProtein begin src/pappsomspp/grouping/grpsubgroupset.h /^ begin() const$/;" f class:pappso::GrpSubGroupSet begin src/pappsomspp/peptide/peptide.h /^ begin() const$/;" f class:pappso::PeptideDirection::Peptide begin src/pappsomspp/peptide/peptide.h /^ begin()$/;" f class:pappso::PeptideDirection::Peptide begin src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ begin() const$/;" f class:pappso::PeptideFragmentIonListBase begin src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::begin() const$/;" f class:pappso::PeptideNaturalIsotopeList begin src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::begin()$/;" f class:pappso::FilterSuiteString begin src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::begin() const$/;" f class:pappso::PeptideIsotopeSpectrumMatch begin src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::begin() const$/;" f class:pappso::PeptideSpectrumMatch biggerAndContainsAll src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::biggerAndContainsAll(const GrpPeptideSet &peptideSetIn) const$/;" f class:GrpPeptideSet binCount src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::binCount() const$/;" f class:pappso::MassSpectrumCombiner binsAsString src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::binsAsString() const$/;" f class:pappso::MassSpectrumCombiner bo src/pappsomspp/peptide/peptide.h /^ bo,$/;" m class:pappso::PeptideDirection::PeptideIonNter bo src/pappsomspp/types.h /^ bo = 2, \/\/\/< Nter acylium ions + H2O loss$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon booleanToString src/pappsomspp/utils.cpp /^Utils::booleanToString(bool value)$/;" f class:pappso::Utils bp src/pappsomspp/peptide/peptide.h /^ bp,$/;" m class:pappso::PeptideDirection::PeptideIonNter bp src/pappsomspp/types.h /^ bp = 6,$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon brukerBaf src/pappsomspp/types.h /^ brukerBaf = 15,$/;" m class:pappso::MzFormat brukerFid src/pappsomspp/types.h /^ brukerFid = 13,$/;" m class:pappso::MzFormat brukerTims src/pappsomspp/types.h /^ brukerTims = 16,$/;" m class:pappso::MzFormat brukerYep src/pappsomspp/types.h /^ brukerYep = 14,$/;" m class:pappso::MzFormat bstar src/pappsomspp/peptide/peptide.h /^ bstar,$/;" m class:pappso::PeptideDirection::PeptideIonNter bstar src/pappsomspp/types.h /^ bstar = 1, \/\/\/< Nter acylium ions + NH3 loss$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon buildDir maintainer-scripts/makeOrigTarball.py /^buildDir = mainDir + "\/build-area";$/;" v buildFilterFromString src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::buildFilterFromString(const QString ¶meters)$/;" f class:pappso::FilterCeilingAmplitudePercentage buildFilterFromString src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::buildFilterFromString($/;" f class:pappso::FilterChargeDeconvolution buildFilterFromString src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^pappso::FilterComplementIonEnhancer::buildFilterFromString($/;" f class:pappso::FilterComplementIonEnhancer buildFilterFromString src/pappsomspp/processing/filters/filterexclusionmz.cpp /^pappso::FilterMzExclusion::buildFilterFromString(const QString &strBuildParams)$/;" f class:pappso::FilterMzExclusion buildFilterFromString src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::buildFilterFromString(const QString ¶meters)$/;" f class:pappso::FilterFloorAmplitudePercentage buildFilterFromString src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::buildFilterFromString($/;" f class:pappso::FilterLowIntensitySignalRemoval buildFilterFromString src/pappsomspp/processing/filters/filtermorpho.cpp /^pappso::FilterMorphoAntiSpike::buildFilterFromString($/;" f class:pappso::FilterMorphoAntiSpike buildFilterFromString src/pappsomspp/processing/filters/filterpass.cpp /^pappso::FilterQuantileBasedRemoveY::buildFilterFromString($/;" f class:pappso::FilterQuantileBasedRemoveY buildFilterFromString src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::buildFilterFromString(const QString &strBuildParams)$/;" f class:pappso::FilterSuiteString buildFilterFromString src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::buildFilterFromString(const QString ¶meters)$/;" f class:pappso::FilterSavitzkyGolay buildMsRunReaderSPtr src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::buildMsRunReaderSPtr($/;" f class:pappso::MsFileAccessor buildMsRunReaderSPtr src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id)$/;" f class:pappso::MsFileAccessor buildMsRunXicExtractorSp src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^MsRunXicExtractorFactory::buildMsRunXicExtractorSp($/;" f class:pappso::MsRunXicExtractorFactory buildTimsMsRunReaderMs2SPtr src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::buildTimsMsRunReaderMs2SPtr()$/;" f class:pappso::MsFileAccessor c doc/bruker/tims_calibration.py /^c = tims_file.conn$/;" v c doc/bruker/tof_calibration.py /^c = tims_file.conn$/;" v c src/pappsomspp/types.h /^ c = 7, \/\/\/< Nter amino ions$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon calculateDragDeltas src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::calculateDragDeltas()$/;" f class:pappso::BasePlotWidget calculateMassFromChemicalComponents src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::calculateMassFromChemicalComponents()$/;" f class:pappso::AaModification cd Session.vim /^nnoremap cd :call nerdtree#ui_glue#invokeKeyMap("cd")$/;" m change_endian src/pappsomspp/msrun/output/mzxmloutput.cpp /^change_endian(T in)$/;" f characters tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::characters(const QString &str)$/;" f class:XtandemResultsHandler charge src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ int charge = 0;$/;" m struct:pappso::PrecursorIonData check src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::check() const$/;" f class:GrpGroup check src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::check($/;" f class:pappso::GrpMapPeptideToSubGroupSet checkScanNum src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::checkScanNum(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase checkXtandemVersion src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::checkXtandemVersion(const QString &tandem_bin_path)$/;" f class:pappso::TandemWrapperRun chronoIntervalDebugString src/pappsomspp/utils.cpp /^Utils::chronoIntervalDebugString($/;" f class:pappso::Utils chronoTimePointDebugString src/pappsomspp/utils.cpp /^Utils::chronoTimePointDebugString($/;" f class:pappso::Utils clear src/pappsomspp/grouping/grpmappeptidetogroup.cpp /^GrpMapPeptideToGroup::clear(std::list &grp_group_list)$/;" f class:pappso::GrpMapPeptideToGroup clear src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::clear()$/;" f class:QCPXic clear src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::clear()$/;" f class:XicWidget clear src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::clear()$/;" f class:pappso::MsRunSlice clear tests/test_protein.cpp /^ clear()$/;" f class:pappso::DigestionHandler clear tests/test_protein.cpp /^ clear()$/;" f class:pappso::PeptideModHandler clearData src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::clearData()$/;" f class:MassSpectrumWidget clearData src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::clearData()$/;" f class:QCPSpectrum clearGraphData src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::clearGraphData(int graph_index)$/;" f class:pappso::BaseTracePlotWidget clearTerm src/pappsomspp/obo/obopsimodterm.cpp /^OboPsiModTerm::clearTerm()$/;" f class:pappso::OboPsiModTerm clearXicPeakBorders src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::clearXicPeakBorders()$/;" f class:QCPXic clearXicPeakBorders src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::clearXicPeakBorders()$/;" f class:XicWidget cloneElement src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^pappso::XmlStreamReaderInterface::cloneElement(QXmlStreamWriter &output)$/;" f class:pappso::XmlStreamReaderInterface cloneMassSpectrumSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::cloneMassSpectrumSPtr()$/;" f class:pappso::QualifiedMassSpectrum cloneNode src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^pappso::XmlStreamReaderInterface::cloneNode(QXmlStreamWriter &output)$/;" f class:pappso::XmlStreamReaderInterface cloneStartElement src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^pappso::XmlStreamReaderInterface::cloneStartElement($/;" f class:pappso::XmlStreamReaderInterface close src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::close()$/;" f class:pappso::FastaFileIndexer close src/pappsomspp/msrun/output/mgfoutput.cpp /^MgfOutput::close()$/;" f class:MgfOutput close src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::close()$/;" f class:MzxmlOutput closeLinearRead src/pappsomspp/vendors/tims/timsbindec.cpp /^pappso::TimsBinDec::closeLinearRead()$/;" f class:pappso::TimsBinDec cmakeFilePath maintainer-scripts/makeOrigTarball.py /^cmakeFilePath = devDir + "\/CMakeLists.txt";$/;" v cmakeVersionNumber maintainer-scripts/makeOrigTarball.py /^ cmakeVersionNumber = motf.versionFromCMakeLists(cmakeFilePath);$/;" v cmakeVersionNumber maintainer-scripts/makeOrigTarball.py /^cmakeVersionNumber = "";$/;" v collisionEnergy src/pappsomspp/vendors/tims/timsdata.h /^ float collisionEnergy = 0;$/;" m struct:pappso::TimsData::SpectrumDescr combinations_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^uint64_t combinations_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: combine src/pappsomspp/processing/combiners/massdatacombinerinterface.cpp /^MassDataCombinerInterface::combine(MapTrace &map_trace,$/;" f class:pappso::MassDataCombinerInterface combine src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^MassSpectrumMinusCombiner::combine(MapTrace &map_trace,$/;" f class:pappso::MassSpectrumMinusCombiner combine src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^MassSpectrumMinusCombiner::combine(MapTrace &map_trace_out,$/;" f class:pappso::MassSpectrumMinusCombiner combine src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^MassSpectrumPlusCombiner::combine(MapTrace &map_trace, const Trace &trace) const$/;" f class:pappso::MassSpectrumPlusCombiner combine src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^MassSpectrumPlusCombiner::combine(MapTrace &map_trace_out,$/;" f class:pappso::MassSpectrumPlusCombiner combine src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^TraceMinusCombiner::combine(MapTrace &map_trace, const Trace &trace) const$/;" f class:pappso::TraceMinusCombiner combine src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^TraceMinusCombiner::combine(MapTrace &map_trace_out,$/;" f class:pappso::TraceMinusCombiner combine src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^TracePlusCombiner::combine(MapTrace &map_trace,$/;" f class:pappso::TracePlusCombiner combine src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^TracePlusCombiner::combine(MapTrace &map_trace_out,$/;" f class:pappso::TracePlusCombiner commandLine maintainer-scripts/makeOrigTarball.py /^ commandLine = "tar vf " + tarballDir + "\/" + srcTarball + " --delete " + prefix + "\/debian";$/;" v compareTextFiles tests/common.cpp /^compareTextFiles(const QString &file1, const QString &file2)$/;" f completedProcess maintainer-scripts/makeOrigTarball.py /^ completedProcess = subprocess.run(args);$/;" v completedProcess maintainer-scripts/makeOrigTarball.py /^completedProcess = subprocess.run(["git", "status"], stdout=subprocess.PIPE)$/;" v completedProcess maintainer-scripts/makeOrigTarball.py /^completedProcess = subprocess.run(args);$/;" v completedProcess maintainer-scripts/makeOrigTarball.py /^completedProcess = subprocess.run(args, stdout=outputFile);$/;" v computeBestChargeOfDataPoint src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::computeBestChargeOfDataPoint($/;" f class:pappso::FilterChargeDeconvolution computeIsotopeDeconvolution src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::computeIsotopeDeconvolution($/;" f class:pappso::FilterChargeDeconvolution computeIsotopeMassList src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::computeIsotopeMassList()$/;" f class:MassSpectrumWidget computeMinMaxCoordinates src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::computeMinMaxCoordinates()$/;" f class:pappso::SelectionPolygon computeMinMaxCoordinates src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::computeMinMaxCoordinates(double &min_x,$/;" f class:pappso::SelectionPolygon computeResolvingPower src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::computeResolvingPower()$/;" f class:pappso::MassSpecTracePlotWidget computeSeamarks src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::computeSeamarks()$/;" f class:MsRunRetentionTime computeXtandemHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::computeXtandemHyperscore(const MassSpectrum &spectrum,$/;" f class:XtandemHyperscoreBis const_iterator src/pappsomspp/grouping/grpprotein.h /^ typedef std::vector::const_iterator const_iterator;$/;" t class:pappso::GrpProtein const_iterator src/pappsomspp/peptide/peptidenaturalisotopelist.h /^ typedef std::list::const_iterator const_iterator;$/;" t class:pappso::PeptideNaturalIsotopeList const_iterator src/pappsomspp/psm/peptideisotopespectrummatch.h /^ typedef std::list::const_iterator const_iterator;$/;" t class:pappso::PeptideIsotopeSpectrumMatch const_iterator src/pappsomspp/psm/peptidespectrummatch.h /^ typedef std::list::const_iterator const_iterator;$/;" t class:pappso::PeptideSpectrumMatch contain tests/test_protein.cpp /^ contain(const PeptideSp &peptide) const$/;" f class:pappso::PeptideModHandler contain tests/test_protein.cpp /^ contain(const QString &peptide) const$/;" f class:pappso::DigestionHandler contains src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::contains(const GrpPeptide *p_grp_peptide) const$/;" f class:GrpPeptideSet contains src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::contains(GrpSubGroup *p_sub_group) const$/;" f class:pappso::GrpSubGroupSet contains src/pappsomspp/mzrange.cpp /^MzRange::contains(pappso_double mz) const$/;" f class:pappso::MzRange contains src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::contains(const QPointF &tested_point) const$/;" f class:pappso::SelectionPolygon contains src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::contains(const SelectionPolygon &selection_polygon) const$/;" f class:pappso::SelectionPolygon contains src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::contains(const PeptideFragmentIon *peptideFragmentIonSp,$/;" f class:pappso::PeptideSpectrumMatch containsAll src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::containsAll(const GrpPeptideSet &peptideSetIn) const$/;" f class:GrpPeptideSet containsAny src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::containsAny(const GrpPeptideSet &peptideSet) const$/;" f class:GrpGroup containsAny src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::containsAny(const GrpPeptideSet &peptideSetIn) const$/;" f class:GrpPeptideSet containsRt src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::containsRt(pappso::pappso_double rt) const$/;" f class:pappso::TracePeak containsX src/pappsomspp/trace/trace.cpp /^Trace::containsX(pappso_double value, PrecisionPtr precision_p) const$/;" f class:pappso::Trace convertOrginalMsData2mzXmlData src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::convertOrginalMsData2mzXmlData(const QString &origin,$/;" f class:pappso::TandemWrapperRun convertTo1D src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::convertTo1D()$/;" f class:pappso::SelectionPolygon convlv src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::convlv(pappso_double data[],$/;" f class:pappso::FilterSavitzkyGolay convolveWithNr src/pappsomspp/processing/filters/savgolfilter.h /^ bool convolveWithNr = false;$/;" m struct:pappso::SavGolParams copyAndLzfDecompress src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::copyAndLzfDecompress(const char *src, std::size_t len)$/;" f class:pappso::TimsFrameType1 copyPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::copyPoint(PointSpecs point_spec_src,$/;" f class:pappso::SelectionPolygon correctNewTimeValues src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::correctNewTimeValues(Trace &ms1_aligned_points,$/;" f class:MsRunRetentionTime count src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^pappso::UiMonitorText::count()$/;" f class:pappso::UiMonitorText count src/pappsomspp/processing/uimonitor/uimonitortextpercent.cpp /^pappso::UiMonitorTextPercent::count()$/;" f class:pappso::UiMonitorTextPercent countMatchedIonComplementPairs src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::countMatchedIonComplementPairs() const$/;" f class:pappso::PsmFeatures countModificationOnAa src/pappsomspp/peptide/peptide.cpp /^Peptide::countModificationOnAa(AaModificationP mod,$/;" f class:pappso::Peptide countPlus src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::countPlus()$/;" f class:GrpProtein countTotalMatchedIons src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::countTotalMatchedIons() const$/;" f class:pappso::PeptideSpectrumMatch cr Session.vim /^nmap cr (abolish-coerce-word)$/;" m createAllAncillaryItems src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::createAllAncillaryItems()$/;" f class:pappso::BasePlotWidget createArbitraryBins src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::createArbitraryBins()$/;" f class:pappso::MzIntegrationParams createBins src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::createBins()$/;" f class:pappso::MzIntegrationParams createBins src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::createBins(pappso::MassSpectrumCstSPtr mass_spectrum_csp)$/;" f class:pappso::MzIntegrationParams createDataBasedBins src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::createDataBasedBins($/;" f class:pappso::MzIntegrationParams createInstance src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::createInstance(const OboPsiModTerm &term)$/;" f class:pappso::AaModification createInstance src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::createInstance(const QString &accession)$/;" f class:pappso::AaModification createInstanceMutation src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::createInstanceMutation(const Aa &aa_from, const Aa &aa_to)$/;" f class:pappso::AaModification cumulateScan src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::cumulateScan(std::size_t scanNum,$/;" f class:pappso::TimsFrame cumulateScan src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::cumulateScan(std::size_t scanNum,$/;" f class:pappso::TimsFrameType1 cumulateScanToTrace src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::cumulateScanToTrace(std::size_t scanNumBegin,$/;" f class:pappso::TimsFrame cumulateScanToTrace src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::cumulateScanToTrace(std::size_t scanNumBegin,$/;" f class:pappso::TimsFrameBase cumulateScansInRawMap src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::cumulateScansInRawMap(std::map &rawSpectrum,$/;" f class:pappso::TimsFrame cumulateScansInRawMap src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::cumulateScansInRawMap(std::map &rawSpectrum$/;" f class:pappso::TimsFrameBase cumulateScansIntensities src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::cumulateScansIntensities(std::size_t scanNumBegin,$/;" f class:pappso::TimsFrame cumulateScansIntensities src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::cumulateScansIntensities(std::size_t scanNumBegin,$/;" f class:pappso::TimsFrameBase cumulateSingleScanIntensities src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::cumulateSingleScanIntensities(std::size_t scanNum) const$/;" f class:pappso::TimsFrame cumulateSingleScanIntensities src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::cumulateSingleScanIntensities(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase currentXaxisRangeIndices src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::currentXaxisRangeIndices(int &lower, int &upper)$/;" f class:pappso::BaseColorMapPlotWidget currentYaxisRangeIndices src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::currentYaxisRangeIndices(int &lower, int &upper)$/;" f class:pappso::BaseColorMapPlotWidget current_dir Makefile /^current_dir := $(notdir $(patsubst %\/,%,$(dir $(mkfile_path))))$/;" m current_dir src/pappsomspp/Makefile /^current_dir := $(notdir $(patsubst %\/,%,$(dir $(mkfile_path))))$/;" m cysteine src/pappsomspp/types.h /^ cysteine = 'C',$/;" m class:pappso::MzFormat::AminoAcidChar dalton src/pappsomspp/types.h /^ dalton,$/;" m class:pappso::PrecisionUnit data src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^pappso::OboListModel::data(const QModelIndex &index, int role) const$/;" f class:pappso::OboListModel dataKind src/pappsomspp/processing/combiners/selectionpolygon.h /^ DataKind dataKind = DataKind::unset;$/;" m struct:pappso::PolygonType::SelectionPolygonSpec dataPointCstIteratorWithX src/pappsomspp/trace/trace.cpp /^Trace::dataPointCstIteratorWithX(pappso_double value) const$/;" f class:pappso::Trace dataPointCstSPtrMetaTypeId src/pappsomspp/trace/datapoint.cpp /^int dataPointCstSPtrMetaTypeId =$/;" v dataPointIndexWithX src/pappsomspp/trace/trace.cpp /^Trace::dataPointIndexWithX(pappso_double value) const$/;" f class:pappso::Trace dataPointIteratorWithX src/pappsomspp/trace/trace.cpp /^Trace::dataPointIteratorWithX(pappso_double value)$/;" f class:pappso::Trace dataPointMetaTypeId src/pappsomspp/trace/datapoint.cpp /^int dataPointMetaTypeId =$/;" v dataTo3ColString src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::dataTo3ColString(QString &data_string)$/;" f class:pappso::BaseColorMapPlotWidget dataToMatrixString src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::dataToMatrixString(QString &data_string, bool detailed)$/;" f class:pappso::BaseColorMapPlotWidget data_point src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ DataPoint data_point;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo debianDir maintainer-scripts/makeOrigTarball.py /^debianDir = devDir + "\/debian";$/;" v debugAlgorithm src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::debugAlgorithm(const SelectionPolygon &selection_polygon,$/;" f class:pappso::SelectionPolygon debugPrintValues src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::debugPrintValues() const$/;" f class:pappso::MassSpectrum debugPrintValues src/pappsomspp/xic/xic.cpp /^Xic::debugPrintValues() const$/;" f class:pappso::Xic deconvolute src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::deconvolute()$/;" f class:pappso::MassSpecTracePlotWidget deconvoluteChargedState src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::deconvoluteChargedState(int span)$/;" f class:pappso::MassSpecTracePlotWidget deconvoluteIsotopicCluster src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::deconvoluteIsotopicCluster()$/;" f class:pappso::MassSpecTracePlotWidget delta src/pappsomspp/precision.cpp /^DaltonPrecision::delta([[maybe_unused]] pappso_double value) const$/;" f class:pappso::DaltonPrecision delta src/pappsomspp/precision.cpp /^PpmPrecision::delta(pappso_double value) const$/;" f class:pappso::PpmPrecision delta src/pappsomspp/precision.cpp /^ResPrecision::delta(pappso_double value) const$/;" f class:pappso::ResPrecision depth src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::depth() const$/;" f class:pappso::MsRunDataSetTree depth src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::depth(std::size_t depth) const$/;" f class:pappso::MsRunDataSetTreeNode description tests/test_fasta_reader.cpp /^ QString description;$/;" m class:FastaSeq file: dest maintainer-scripts/makeOrigTarball.py /^dest = "{0}\/{1}.gz".format(mainDir, origTarball);$/;" v dest maintainer-scripts/makeOrigTarball.py /^dest = "{0}\/{1}.gz".format(tarballDir, origTarball);$/;" v detect src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::detect(const Trace &xic,$/;" f class:pappso::TraceDetectionMoulon detect src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::detect(const Trace &xic,$/;" f class:pappso::TraceDetectionZivy detectClusterApices src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::detectClusterApices(const Trace &trace)$/;" f class:pappso::FilterLowIntensitySignalRemoval devDir maintainer-scripts/makeOrigTarball.py /^devDir = mainDir + "\/development";$/;" v diff_mob doc/bruker/tims_calibration.py /^diff_mob = np.abs(mob1 - mob_sdk1);$/;" v direct src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^ direct = 1, \/\/\/< build a simple XIC extractor that directly uses Proeowizard$/;" m class:pappso::MsRunXicExtractorFactoryType directionKeyPressEvent src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::directionKeyPressEvent(QKeyEvent *event)$/;" f class:pappso::BasePlotWidget directionKeyReleaseEvent src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::directionKeyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::BasePlotWidget disk src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^ disk = 2, \/\/\/< build Xic extractor that first read the whole MsRun, put it on$/;" m class:pappso::MsRunXicExtractorFactoryType diskbuffer src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^ diskbuffer =$/;" m class:pappso::MsRunXicExtractorFactoryType displayOboTerm src/pappsomspp/widget/obo/obotermform/obotermform.cpp /^pappso::OboTermForm::displayOboTerm(pappso::OboPsiModTerm oboTerm)$/;" f class:pappso::OboTermForm divideBy src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^pappso::XicCoord::divideBy(double number) const$/;" f class:pappso::XicCoord divideBy src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::divideBy(double number) const$/;" f class:pappso::XicCoordTims dmatrix src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::dmatrix(long nrl, long nrh, long ncl, long nch) const$/;" f class:pappso::FilterSavitzkyGolay documentNodeInDtRtMap src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::documentNodeInDtRtMap(double time,$/;" f class:pappso::MsRunDataSetTree dragDirection src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::dragDirection()$/;" f class:pappso::BasePlotWidget drawSelectionRectangleAndPrepareZoom src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::drawSelectionRectangleAndPrepareZoom(bool as_line_segment,$/;" f class:pappso::BasePlotWidget drawXDeltaFeatures src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::drawXDeltaFeatures()$/;" f class:pappso::BasePlotWidget drawXicPeakBorders src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::drawXicPeakBorders(unsigned int i,$/;" f class:QCPXic drawXicPeakBorders src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::drawXicPeakBorders(pappso::TracePeakCstSPtr xic_peak)$/;" f class:XicWidget drawYDeltaFeatures src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::drawYDeltaFeatures()$/;" f class:pappso::BasePlotWidget dropPeaksLackingMonoisotope src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::dropPeaksLackingMonoisotope()$/;" f class:pappso::PeptideIsotopeSpectrumMatch dt src/pappsomspp/types.h /^ dt = 1, \/\/\/< Drift time$/;" m class:pappso::MzFormat::DataKind dvector src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::dvector(long nl, long nh) const$/;" f class:pappso::FilterSavitzkyGolay e Session.vim /^nnoremap e :call nerdtree#ui_glue#invokeKeyMap("e")$/;" m eat src/pappsomspp/protein/enzyme.cpp /^Enzyme::eat(std::int8_t sequence_database_id,$/;" f class:pappso::Enzyme end src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::end() const$/;" f class:GrpProtein end src/pappsomspp/grouping/grpsubgroupset.h /^ end() const$/;" f class:pappso::GrpSubGroupSet end src/pappsomspp/peptide/peptide.h /^ end() const$/;" f class:pappso::PeptideDirection::Peptide end src/pappsomspp/peptide/peptide.h /^ end()$/;" f class:pappso::PeptideDirection::Peptide end src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ end() const$/;" f class:pappso::PeptideFragmentIonListBase end src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::end() const$/;" f class:pappso::PeptideNaturalIsotopeList end src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::end()$/;" f class:pappso::FilterSuiteString end src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::end() const$/;" f class:pappso::PeptideIsotopeSpectrumMatch end src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::end() const$/;" f class:pappso::PeptideSpectrumMatch endDocument tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::endDocument()$/;" f class:XtandemResultsHandler endElement tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::endElement(const QString &namespaceURI [[maybe_unused]],$/;" f class:XtandemResultsHandler endElement_GAML__values tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::endElement_GAML__values()$/;" f class:XtandemResultsHandler endElement_domain tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::endElement_domain()$/;" f class:XtandemResultsHandler endElement_group tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::endElement_group()$/;" f class:XtandemResultsHandler endOfLineRegExp src/pappsomspp/utils.cpp /^QRegularExpression Utils::endOfLineRegExp = QRegularExpression("^\\\\s+$");$/;" m class:pappso::Utils file: endOfLineRegExp src/pappsomspp/utils.h /^ static QRegularExpression endOfLineRegExp;$/;" m class:pappso::Utils endPwizRead src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::endPwizRead()$/;" f class:pappso::MsRunXicExtractorDisk endPwizRead src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp /^MsRunXicExtractorDiskBuffer::endPwizRead()$/;" f class:pappso::MsRunXicExtractorDiskBuffer enhanceComplementMassInRange src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^pappso::FilterComplementIonEnhancer::enhanceComplementMassInRange($/;" f class:pappso::FilterComplementIonEnhancer entityHash src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ T entityHash;$/;" m struct:pappso::MsRunRetentionTime::PeptideMs2Point entityHash src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ T entityHash;$/;" m struct:pappso::MsRunRetentionTimeSeamarkPoint equals src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::equals(const MassSpectrum &other, PrecisionPtr precision) const$/;" f class:pappso::MassSpectrum erase src/pappsomspp/grouping/grpsubgroupset.h /^ erase(std::list::iterator it)$/;" f class:pappso::GrpSubGroupSet error tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::error(const QXmlParseException &exception)$/;" f class:XtandemResultsHandler errorString src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^pappso::XmlStreamReaderInterface::errorString() const$/;" f class:pappso::XmlStreamReaderInterface errorString tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::errorString() const$/;" f class:XtandemResultsHandler extractOneXicCoord src/pappsomspp/xicextractor/private/msrunxicextractor.cpp /^MsRunXicExtractor::extractOneXicCoord(XicCoord &xic_coord)$/;" f class:pappso::MsRunXicExtractor extractOneXicCoord src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::extractOneXicCoord(XicCoord &xic_coord)$/;" f class:pappso::MsRunXicExtractorDisk extractScanNumberFromMzmlNativeId src/pappsomspp/utils.cpp /^Utils::extractScanNumberFromMzmlNativeId(const QString &spectrum_native_id)$/;" f class:pappso::Utils extractTimsXicListInRtRange src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::extractTimsXicListInRtRange($/;" f class:pappso::TimsFrame extractXicCoordSPtrList src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::extractXicCoordSPtrList($/;" f class:pappso::MsRunXicExtractorInterface extractXicCoordSPtrListParallelized src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::extractXicCoordSPtrListParallelized($/;" f class:pappso::MsRunXicExtractorInterface f Session.vim /^nnoremap f :call nerdtree#ui_glue#invokeKeyMap("f")$/;" m factorial src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^factorial(unsigned int n)$/;" f namespace:pappso factorial src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^factorial(unsigned int n)$/;" f fatalError tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::fatalError(const QXmlParseException &exception)$/;" f class:XtandemResultsHandler fillFrameIdDescrList src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::fillFrameIdDescrList()$/;" f class:pappso::TimsData fillSpectrumDescriptionWithSqlRecord src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::fillSpectrumDescriptionWithSqlRecord($/;" f class:pappso::pappso::TimsData filter src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::filter(Trace &data_points) const$/;" f class:pappso::FilterCeilingAmplitudePercentage filter src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^FilterChargeDeconvolution::filter(Trace &data_points) const$/;" f class:FilterChargeDeconvolution filter src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^pappso::FilterComplementIonEnhancer::filter(pappso::Trace &data_points) const$/;" f class:pappso::FilterComplementIonEnhancer filter src/pappsomspp/processing/filters/filterexclusionmz.cpp /^pappso::FilterMzExclusion::filter(pappso::Trace &data_points) const$/;" f class:pappso::FilterMzExclusion filter src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::filter(Trace &data_points) const$/;" f class:pappso::FilterFloorAmplitudePercentage filter src/pappsomspp/processing/filters/filterlocalmaximum.cpp /^FilterLocalMaximum::filter(Trace &data_points) const$/;" f class:FilterLocalMaximum filter src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::filter(Trace &trace) const$/;" f class:pappso::FilterLowIntensitySignalRemoval filter src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoAntiSpike::filter(Trace &data_points) const$/;" f class:FilterMorphoAntiSpike filter src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoBackground::filter(Trace &data_points) const$/;" f class:FilterMorphoBackground filter src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMaxMin::filter(Trace &data_points) const$/;" f class:FilterMorphoMaxMin filter src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMinMax::filter(Trace &data_points) const$/;" f class:FilterMorphoMinMax filter src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoWindowBase::filter(Trace &data_points) const$/;" f class:FilterMorphoWindowBase filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterFloorY::filter(Trace &data_points) const$/;" f class:FilterFloorY filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestY::filter(Trace &data_points) const$/;" f class:FilterGreatestY filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestYperWindow::filter(Trace &data_points) const$/;" f class:FilterGreatestYperWindow filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPass::filter(Trace &data_points) const$/;" f class:FilterHighPass filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPassPercentage::filter(Trace &data_points) const$/;" f class:FilterHighPassPercentage filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterLowPass::filter(Trace &data_points) const$/;" f class:FilterLowPass filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterRemoveY::filter(Trace &data_points) const$/;" f class:FilterRemoveY filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterRescaleY::filter(Trace &data_points) const$/;" f class:FilterRescaleY filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterRoundY::filter(Trace &data_points) const$/;" f class:FilterRoundY filter src/pappsomspp/processing/filters/filterpass.cpp /^FilterScaleFactorY::filter(Trace &data_points) const$/;" f class:FilterScaleFactorY filter src/pappsomspp/processing/filters/filterpass.cpp /^MassSpectrumFilterGreatestItensities::filter(MassSpectrum &spectrum) const$/;" f class:MassSpectrumFilterGreatestItensities filter src/pappsomspp/processing/filters/filterpass.cpp /^pappso::FilterQuantileBasedRemoveY::filter(pappso::Trace &data_points) const$/;" f class:pappso::FilterQuantileBasedRemoveY filter src/pappsomspp/processing/filters/filterremovec13.cpp /^FilterRemoveC13::filter(Trace &data_points) const$/;" f class:FilterRemoveC13 filter src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepGreater::filter(Trace &spectrum) const$/;" f class:pappso::FilterResampleKeepGreater filter src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepPointInPolygon::filter(Trace &trace,$/;" f class:pappso::FilterResampleKeepPointInPolygon filter src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepPointInPolygon::filter([[maybe_unused]] Trace &trace) const$/;" f class:pappso::FilterResampleKeepPointInPolygon filter src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepSmaller::filter(Trace &spectrum) const$/;" f class:pappso::FilterResampleKeepSmaller filter src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepXRange::filter(Trace &spectrum) const$/;" f class:pappso::FilterResampleKeepXRange filter src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleRemoveXRange::filter(Trace &spectrum) const$/;" f class:pappso::FilterResampleRemoveXRange filter src/pappsomspp/processing/filters/filterresample.cpp /^MassSpectrumFilterResampleKeepMzRange::filter(MassSpectrum &spectrum) const$/;" f class:pappso::MassSpectrumFilterResampleKeepMzRange filter src/pappsomspp/processing/filters/filterresample.cpp /^MassSpectrumFilterResampleRemoveMzRange::filter(MassSpectrum &spectrum) const$/;" f class:pappso::MassSpectrumFilterResampleRemoveMzRange filter src/pappsomspp/processing/filters/filtersuite.cpp /^FilterSuite::filter(Trace &data_points) const$/;" f class:FilterSuite filter src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::filter(pappso::Trace &data_points) const$/;" f class:pappso::FilterSuiteString filter src/pappsomspp/processing/filters/filtertandemremovec13.cpp /^FilterTandemDeisotope::filter(MassSpectrum &data_points) const$/;" f class:FilterTandemDeisotope filter src/pappsomspp/processing/filters/filtertriangle.cpp /^FilterTriangle::filter(Trace &data_points) const$/;" f class:FilterTriangle filter src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::filter(Trace &data_points) const$/;" f class:pappso::FilterSavitzkyGolay filter src/pappsomspp/trace/trace.cpp /^Trace::filter(const FilterInterface &filter)$/;" f class:pappso::Trace filter src/pappsomspp/vendors/tims/timsms2centroidfilter.cpp /^TimsMs2CentroidFilter::filter(MassSpectrum &data_points) const$/;" f class:TimsMs2CentroidFilter filterAcceptsRow src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.cpp /^pappso::OboListProxyModel::filterAcceptsRow(int source_row,$/;" f class:pappso::OboListProxyModel filterMzPrecision src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.cpp /^pappso::OboListProxyModel::filterMzPrecision(double target_mz,$/;" f class:pappso::OboListProxyModel filterMzPrecision src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^pappso::OboListWidget::filterMzPrecision(double target_mz,$/;" f class:pappso::OboListWidget filterSum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::filterSum(const MzRange &range) const$/;" f class:pappso::MassSpectrum final src/pappsomspp/amino_acid/aa.h /^ int getNumberOfAtom(AtomIsotopeSurvey atom) const override final;$/;" m class:pappso::Aa final src/pappsomspp/amino_acid/aa.h /^ int getNumberOfIsotope(Isotope isotope) const override final;$/;" m class:pappso::Aa final src/pappsomspp/amino_acid/aamodification.h /^ int getNumberOfAtom(AtomIsotopeSurvey atom) const override final;$/;" m class:pappso::AaModification final src/pappsomspp/amino_acid/aamodification.h /^ int getNumberOfIsotope(Isotope isotope) const override final;$/;" m class:pappso::AaModification final src/pappsomspp/massspectrum/massspectrum.h /^ massSpectrumFilter(const MassSpectrumFilterInterface &filter) final;$/;" m class:pappso::MassSpectrum final src/pappsomspp/msrun/msrunreader.h /^ bool want_peak_list) final;$/;" m class:pappso::SpectrumCollectionHandlerInterface final src/pappsomspp/msrun/msrunreader.h /^ virtual bool needMsLevelPeakList(unsigned int ms_level) const final;$/;" m class:pappso::SpectrumCollectionHandlerInterface final src/pappsomspp/msrun/msrunreader.h /^ virtual void setReadAhead(bool is_read_ahead) final;$/;" m class:pappso::SpectrumCollectionHandlerInterface final src/pappsomspp/peptide/ion.h /^ virtual pappso_double getMz(unsigned int charge) const final;$/;" m class:pappso::Ion final src/pappsomspp/peptide/peptideinterface.h /^ virtual const QString getFormula(unsigned int charge) const final;$/;" m class:pappso::PeptideInterface final src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ virtual bool matchPeak(pappso_double peak_mz) const final;$/;" m class:pappso::PeptideNaturalIsotopeAverage final src/pappsomspp/precision.h /^ virtual pappso_double getNominal() const final;$/;" m class:pappso::PrecisionBase final src/pappsomspp/protein/peptidemodificatorbase.h /^ const QString &peptide_str) final;$/;" m class:pappso::PeptideModificatorBase final src/pappsomspp/protein/peptidemodificatorbase.h /^ virtual void setModificationPattern(QString &pattern) final;$/;" m class:pappso::PeptideModificatorBase final src/pappsomspp/trace/trace.h /^ virtual Trace &filter(const FilterInterface &filter) final;$/;" m class:pappso::Trace final src/pappsomspp/vendors/tims/timsframebase.h /^ getMzCalibrationInterfaceSPtr() const final;$/;" m class:pappso::TimsFrameBase final src/pappsomspp/widget/graphicdevicewidget.h /^ const QSize &size) final;$/;" m class:GraphicDeviceWidget final src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^ std::vector &xic_coord_list) final;$/;" m class:pappso::MsRunXicExtractorInterface final src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^ std::vector &xic_coord_list) final;$/;" m class:pappso::MsRunXicExtractorInterface findBestTracePeakGivenRtList src/pappsomspp/processing/detection/tracepeaklist.cpp /^pappso::findBestTracePeakGivenRtList(std::vector::iterator begin,$/;" f class:pappso findBin src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::findBin(pappso_double mz)$/;" f class:pappso::MassSpectrumCombiner findComplementIonPairs src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::findComplementIonPairs(const pappso::PeptideSp &peptideSp)$/;" f class:pappso::PsmFeatures findComplementIonType src/pappsomspp/psm/peakionisotopematch.cpp /^findComplementIonType(std::vector::iterator begin,$/;" f namespace:pappso findDifferentYvalue src/pappsomspp/trace/trace.cpp /^findDifferentYvalue(std::vector::const_iterator begin,$/;" f namespace:pappso findDifferentYvalue src/pappsomspp/trace/trace.cpp /^findDifferentYvalue(std::vector::iterator begin,$/;" f namespace:pappso findFirstEqualOrGreaterX src/pappsomspp/trace/trace.cpp /^findFirstEqualOrGreaterX(std::vector::const_iterator begin,$/;" f namespace:pappso findFirstEqualOrGreaterX src/pappsomspp/trace/trace.cpp /^findFirstEqualOrGreaterX(std::vector::iterator begin,$/;" f namespace:pappso findFirstGreaterX src/pappsomspp/trace/trace.cpp /^findFirstGreaterX(std::vector::const_iterator begin,$/;" f namespace:pappso findFirstGreaterX src/pappsomspp/trace/trace.cpp /^findFirstGreaterX(std::vector::iterator begin,$/;" f namespace:pappso findIntegrationLowerRangeForKey src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::findIntegrationLowerRangeForKey(int index,$/;" f class:pappso::BaseTracePlotWidget findNode src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp) const$/;" f class:pappso::MsRunDataSetTree findNode src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::findNode(std::size_t spectrum_index) const$/;" f class:pappso::MsRunDataSetTree findNode src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp)$/;" f class:pappso::MsRunDataSetTreeNode findNode src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::findNode(std::size_t spectrum_index)$/;" f class:pappso::MsRunDataSetTreeNode findTracePeakGivenRt src/pappsomspp/processing/detection/tracepeaklist.cpp /^pappso::findTracePeakGivenRt(std::vector::iterator begin,$/;" f class:pappso flattenedView src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::flattenedView()$/;" f class:pappso::MsRunDataSetTree flattenedView src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::flattenedView(std::vector &nodes,$/;" f class:pappso::MsRunDataSetTreeNode flattenedViewChildrenOnly src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::flattenedViewChildrenOnly($/;" f class:pappso::MsRunDataSetTreeNode flattenedViewMsLevel src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::flattenedViewMsLevel(std::size_t ms_level,$/;" f class:pappso::MsRunDataSetTree flattenedViewMsLevelNodes src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::flattenedViewMsLevelNodes($/;" f class:pappso::MsRunDataSetTreeNode flooredLocalMaxima src/pappsomspp/trace/trace.cpp /^flooredLocalMaxima(std::vector::const_iterator begin,$/;" f namespace:pappso flushBufferOnDisk src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp /^MsRunXicExtractorDiskBuffer::flushBufferOnDisk()$/;" f class:pappso::MsRunXicExtractorDiskBuffer forwardFindApex src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::forwardFindApex(const Trace &trace,$/;" f class:pappso::FilterLowIntensitySignalRemoval four1 src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::four1(pappso_double data[], unsigned long nn, int isign)$/;" f class:pappso::FilterSavitzkyGolay frameId doc/bruker/tims_calibration.py /^frameId=4 # just some frame number$/;" v frameId doc/bruker/tof_calibration.py /^frameId=1$/;" v frame_t1 src/pappsomspp/vendors/tims/timsframerecord.h /^ double frame_t1 = 0;$/;" m struct:pappso::TimsFrameRecord frame_t2 src/pappsomspp/vendors/tims/timsframerecord.h /^ double frame_t2 = 0;$/;" m struct:pappso::TimsFrameRecord frame_time src/pappsomspp/vendors/tims/timsframerecord.h /^ double frame_time = 0;$/;" m struct:pappso::TimsFrameRecord free_dmatrix src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::free_dmatrix(pappso_double **m,$/;" f class:pappso::FilterSavitzkyGolay free_dvector src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::free_dvector(pappso_double *v,$/;" f class:pappso::FilterSavitzkyGolay free_ivector src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::free_ivector(int *v,$/;" f class:pappso::FilterSavitzkyGolay fromString src/pappsomspp/precision.cpp /^PrecisionFactory::fromString(const QString &str)$/;" f class:pappso::PrecisionFactory full src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ full = 0,$/;" m class:pappso::RawFragmentationMode gF Session.vim /^nnoremap gF :call fetch#cfile(v:count1)$/;" m gV Session.vim /^nnoremap gV `[v`]$/;" m getAa src/pappsomspp/peptide/peptide.cpp /^Peptide::getAa(unsigned int position)$/;" f class:pappso::Peptide getAaMass src/pappsomspp/amino_acid/aabase.cpp /^AaBase::getAaMass(char aa_letter)$/;" f class:pappso::AaBase getAaPositionList src/pappsomspp/peptide/peptide.cpp /^Peptide::getAaPositionList(char aa) const$/;" f class:pappso::Peptide getAaPositionList src/pappsomspp/peptide/peptide.cpp /^Peptide::getAaPositionList(std::list list_aa) const$/;" f class:pappso::Peptide getAaSequenceCoverage src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getAaSequenceCoverage(pappso::PeptideIon ion_type)$/;" f class:pappso::PsmFeatures getAccession src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getAccession() const$/;" f class:pappso::AaModification getAccession src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::getAccession() const$/;" f class:GrpProtein getAccession src/pappsomspp/protein/protein.cpp /^Protein::getAccession() const$/;" f class:pappso::Protein getAlignedRetentionTimeVector src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getAlignedRetentionTimeVector() const$/;" f class:MsRunRetentionTime getAminoAcidCharList src/pappsomspp/amino_acid/aabase.cpp /^AaBase::getAminoAcidCharList()$/;" f class:pappso::AaBase getArea src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::getArea() const$/;" f class:pappso::TracePeak getBackRetentionTimeReference src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getBackRetentionTimeReference() const$/;" f class:MsRunRetentionTime getBestPeakIterator src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::getBestPeakIterator($/;" f class:pappso::PeptideIsotopeSpectrumMatch getBestPeakIterator src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::getBestPeakIterator(std::list &peak_list,$/;" f class:pappso::PeptideSpectrumMatch getBinningType src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::getBinningType() const$/;" f class:pappso::MzIntegrationParams getBins src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::getBins() const$/;" f class:pappso::MassSpectrumCombiner getBottomMostPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::getBottomMostPoint() const$/;" f class:pappso::SelectionPolygon getByIntensityRatio src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::getByIntensityRatio($/;" f class:pappso::PeptideNaturalIsotopeList getByIntensityRatioByIsotopeNumber src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^getByIntensityRatioByIsotopeNumber(const PeptideInterfaceSp &peptide,$/;" f namespace:pappso getByIsotopeNumber src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::getByIsotopeNumber(unsigned int isotope_number,$/;" f class:pappso::PeptideNaturalIsotopeList getCIDionList src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::getCIDionList()$/;" f class:pappso::PeptideFragmentIonListBase getChEBIUrl src/pappsomspp/widget/httpbutton/httpbutton.cpp /^HttpButton::getChEBIUrl(QString accession)$/;" f class:HttpButton getCharge src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getCharge() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getCharge src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::getCharge() const$/;" f class:pappso::PeakIonMatch getCharge src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h /^ getCharge() const$/;" f class:pappso::XicPeptideFragmentIonNaturalIsotope getCharge src/pappsomspp/xic/xicpeptideinterface.h /^ getCharge() const$/;" f class:pappso::XicPeptideInterface getChargeMinimalFractionalPart src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::getChargeMinimalFractionalPart() const$/;" f class:pappso::MassSpecTracePlotWidget getChargeStateEnvelopePeakSpan src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::getChargeStateEnvelopePeakSpan() const$/;" f class:pappso::MassSpecTracePlotWidget getClosestPrecursorIdByMz src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getClosestPrecursorIdByMz(std::vector> ids,$/;" f class:pappso::TimsData getCoefficientOfDetermination src/pappsomspp/trace/linearregression.cpp /^LinearRegression::getCoefficientOfDetermination(const Trace &data) const$/;" f class:LinearRegression getColorMapPlotConfig src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::getColorMapPlotConfig()$/;" f class:pappso::BaseColorMapPlotWidget getCommonDeltaRt src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getCommonDeltaRt($/;" f class:MsRunRetentionTime getCommonSeamarksDeltaRt src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getCommonSeamarksDeltaRt($/;" f class:MsRunRetentionTime getComplementPairsAaSequenceCoverage src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getComplementPairsAaSequenceCoverage()$/;" f class:pappso::PsmFeatures getCompletePeptideIonName src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getCompletePeptideIonName(unsigned int charge) const$/;" f class:pappso::PeptideFragmentIon getComponents src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getComponents() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getCompressedSize src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^pappso::TimsFrameRawDataChunck::getCompressedSize() const$/;" f class:pappso::TimsFrameRawDataChunck getConstAa src/pappsomspp/peptide/peptide.cpp /^Peptide::getConstAa(unsigned int position) const$/;" f class:pappso::Peptide getContext src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getContext() const$/;" f class:pappso::BasePlotWidget getCount src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::getCount() const$/;" f class:GrpProtein getCountNote src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^XtandemPresetReader::getCountNote() const$/;" f class:pappso::XtandemPresetReader getDaltonInstance src/pappsomspp/precision.cpp /^PrecisionFactory::getDaltonInstance(pappso_double value)$/;" f class:pappso::PrecisionFactory getDecimalPlaces src/pappsomspp/processing/combiners/massdatacombinerinterface.cpp /^MassDataCombinerInterface::getDecimalPlaces() const$/;" f class:pappso::MassDataCombinerInterface getDecimalPlaces src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::getDecimalPlaces() const$/;" f class:pappso::MzIntegrationParams getDeltaMass src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^PeptideRawFragmentMasses::getDeltaMass(PeptideIon ion_type)$/;" f class:pappso::PeptideRawFragmentMasses getDescription src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::getDescription() const$/;" f class:GrpProtein getDescription src/pappsomspp/protein/protein.cpp /^Protein::getDescription() const$/;" f class:pappso::Protein getDescription tests/test_fasta_reader.cpp /^ getDescription() const$/;" f class:FastaSeq getDetectionThresholdOnMaxmin src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::getDetectionThresholdOnMaxmin() const$/;" f class:pappso::TraceDetectionZivy getDetectionThresholdOnMinmax src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::getDetectionThresholdOnMinmax() const$/;" f class:pappso::TraceDetectionZivy getDriftTime src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getDriftTime(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase getDtInMilliSeconds src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getDtInMilliSeconds() const$/;" f class:pappso::QualifiedMassSpectrum getDynamicRange src/pappsomspp/processing/filters/filterpass.cpp /^FilterRescaleY::getDynamicRange() const$/;" f class:FilterRescaleY getDynamicRange src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getDynamicRange() const$/;" f class:pappso::XtandemSpectrumProcess getETDionList src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::getETDionList()$/;" f class:pappso::PeptideFragmentIonListBase getExcludeParent src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getExcludeParent() const$/;" f class:pappso::XtandemSpectrumProcess getExcludeParentNeutralLoss src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getExcludeParentNeutralLoss() const$/;" f class:pappso::XtandemSpectrumProcess getFileFormat src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::getFileFormat() const$/;" f class:pappso::MsFileAccessor getFileFormat src/pappsomspp/msfile/pwizmsfilereader.cpp /^PwizMsFileReader::getFileFormat()$/;" f class:pappso::PwizMsFileReader getFileFormat src/pappsomspp/msfile/timsmsfilereader.cpp /^TimsMsFileReader::getFileFormat()$/;" f class:pappso::TimsMsFileReader getFileFormat src/pappsomspp/msfile/xymsfilereader.cpp /^XyMsFileReader::getFileFormat()$/;" f class:pappso::XyMsFileReader getFileName src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::getFileName() const$/;" f class:pappso::MsFileAccessor getFileName src/pappsomspp/msrun/msrunid.cpp /^MsRunId::getFileName() const$/;" f class:pappso::MsRunId getFileReaderType src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::getFileReaderType() const$/;" f class:pappso::MsFileAccessor getFilterMorphoMedian src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoBackground::getFilterMorphoMedian() const$/;" f class:FilterMorphoBackground getFilterMorphoMinMax src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoBackground::getFilterMorphoMinMax() const$/;" f class:FilterMorphoBackground getFirst src/pappsomspp/obo/filterobopsimodsink.cpp /^FilterOboPsiModSink::getFirst()$/;" f class:pappso::FilterOboPsiModSink getFirstAccession src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::getFirstAccession() const$/;" f class:pappso::GrpSubGroup getFormula src/pappsomspp/peptide/peptideinterface.cpp /^PeptideInterface::getFormula(unsigned int charge) const$/;" f class:pappso::PeptideInterface getFrameId src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^pappso::TimsFrameRawDataChunck::getFrameId() const$/;" f class:pappso::TimsFrameRawDataChunck getFrameLength src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^pappso::TimsFrameRawDataChunck::getFrameLength() const$/;" f class:pappso::TimsFrameRawDataChunck getFrameNumberOfScans src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^pappso::TimsFrameRawDataChunck::getFrameNumberOfScans() const$/;" f class:pappso::TimsFrameRawDataChunck getFrontRetentionTimeReference src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getFrontRetentionTimeReference() const$/;" f class:MsRunRetentionTime getGreatestMz src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::getGreatestMz() const$/;" f class:pappso::MzIntegrationParams getGroupList src/pappsomspp/grouping/grpmappeptidetogroup.cpp /^GrpMapPeptideToGroup::getGroupList($/;" f class:pappso::GrpMapPeptideToGroup getGroupNumber src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::getGroupNumber() const$/;" f class:GrpGroup getGroupNumber src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::getGroupNumber() const$/;" f class:GrpPeptide getGroupNumber src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::getGroupNumber() const$/;" f class:GrpProtein getGroupNumber src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::getGroupNumber() const$/;" f class:pappso::GrpSubGroup getGroupingId src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::getGroupingId() const$/;" f class:GrpGroup getGroupingId src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::getGroupingId() const$/;" f class:GrpPeptide getGroupingId src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::getGroupingId() const$/;" f class:GrpProtein getGroupingId src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::getGroupingId() const$/;" f class:pappso::GrpSubGroup getGrpGroupSpList src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::getGrpGroupSpList() const$/;" f class:GrpExperiment getGrpPeptideList src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::getGrpPeptideList() const$/;" f class:GrpPeptideSet getGrpPeptideSet src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::getGrpPeptideSet() const$/;" f class:GrpGroup getGrpProteinList src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::getGrpProteinList() const$/;" f class:pappso::GrpSubGroup getGrpProteinSp src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::getGrpProteinSp(const QString &accession,$/;" f class:GrpExperiment getGrpProteinSpList src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::getGrpProteinSpList() const$/;" f class:GrpExperiment getGrpSubGroupSpList src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::getGrpSubGroupSpList() const$/;" f class:GrpGroup getHalfWindowSize src/pappsomspp/processing/filters/filterlocalmaximum.cpp /^FilterLocalMaximum::getHalfWindowSize() const$/;" f class:FilterLocalMaximum getHalfWindowSize src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoAntiSpike::getHalfWindowSize() const$/;" f class:FilterMorphoAntiSpike getHalfWindowSize src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoWindowBase::getHalfWindowSize() const$/;" f class:FilterMorphoWindowBase getHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::getHyperscore() const$/;" f class:pappso::XtandemHyperscore getHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::getHyperscore() const$/;" f class:XtandemHyperscoreBis getId src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getId() const$/;" f class:pappso::TimsFrameBase getIndexNodeMap src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::getIndexNodeMap() const$/;" f class:pappso::MsRunDataSetTree getInnermostRangeX src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getInnermostRangeX(bool &found_range) const$/;" f class:pappso::BasePlotWidget getInnermostRangeY src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getInnermostRangeY(bool &found_range) const$/;" f class:pappso::BasePlotWidget getInstance src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getInstance(const OboPsiModTerm &oboterm)$/;" f class:pappso::AaModification getInstance src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getInstance(const QString &accession)$/;" f class:pappso::AaModification getInstance src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.cpp /^MzCalibrationStore::getInstance(double T1_frame,$/;" f class:pappso::MzCalibrationStore getInstance src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^MsRunXicExtractorFactory::getInstance()$/;" f class:pappso::MsRunXicExtractorFactory getInstanceCustomizedMod src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getInstanceCustomizedMod(pappso_double modificationMass)$/;" f class:pappso::AaModification getInstanceMutation src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getInstanceMutation(const QChar &mut_from, const QChar &mut_to)$/;" f class:pappso::AaModification getInstanceXtandemMod src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getInstanceXtandemMod(const QString &type,$/;" f class:pappso::AaModification getIntensityAxisP src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::getIntensityAxisP()$/;" f class:XicWidget getIntensityOfMatchedIon src/pappsomspp/psm/features/psmfeatures.cpp /^PsmFeatures::getIntensityOfMatchedIon(PeptideIon ion_type)$/;" f class:PsmFeatures getIntensityRatio src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::getIntensityRatio(unsigned int charge) const$/;" f class:pappso::PeptideNaturalIsotope getIntensityRatio src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getIntensityRatio() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getIntensityRatioPerIsotopeNumber src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::getIntensityRatioPerIsotopeNumber() const$/;" f class:pappso::PeptideNaturalIsotopeList getIntercept src/pappsomspp/trace/linearregression.cpp /^LinearRegression::getIntercept() const$/;" f class:LinearRegression getInternalCterModification src/pappsomspp/amino_acid/aa.cpp /^Aa::getInternalCterModification() const$/;" f class:pappso::Aa getInternalCterModification src/pappsomspp/peptide/peptide.cpp /^Peptide::getInternalCterModification() const$/;" f class:pappso::Peptide getInternalNterModification src/pappsomspp/amino_acid/aa.cpp /^Aa::getInternalNterModification() const$/;" f class:pappso::Aa getInternalNterModification src/pappsomspp/peptide/peptide.cpp /^Peptide::getInternalNterModification() const$/;" f class:pappso::Peptide getIonIsotopeRatioScore src/pappsomspp/psm/experimental/ionisotoperatioscore.cpp /^IonIsotopeRatioScore::getIonIsotopeRatioScore() const$/;" f class:IonIsotopeRatioScore getIonList src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::getIonList() const$/;" f class:pappso::PeptideFragmentIonListBase getIonMobilityTraceByMzIndexRange src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getIonMobilityTraceByMzIndexRange($/;" f class:pappso::TimsFrameBase getIonPairPrecursorMassDelta src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getIonPairPrecursorMassDelta($/;" f class:pappso::PsmFeatures getIonScore src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getIonScore(PeptideIon ion_type) const$/;" f class:pappso::XtandemSpectrumProcess getIonTypeCountArray src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::getIonTypeCountArray() const$/;" f class:pappso::PeptideSpectrumMatch getIsotopeMap src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::getIsotopeMap() const$/;" f class:pappso::PeptideNaturalIsotope getIsotopeNumber src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::getIsotopeNumber() const$/;" f class:pappso::PeptideNaturalIsotope getIsotopeNumber src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getIsotopeNumber() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getIsotopeRank src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getIsotopeRank() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getLeftBoundary src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::getLeftBoundary() const$/;" f class:pappso::TracePeak getLeftBoundary src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::getLeftBoundary()$/;" f class:pappso::TracePeak getLeftMostPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::getLeftMostPoint() const$/;" f class:pappso::SelectionPolygon getLetter src/pappsomspp/amino_acid/aabase.cpp /^AaBase::getLetter() const$/;" f class:pappso::AaBase getLexicalOrderedString src/pappsomspp/utils.cpp /^Utils::getLexicalOrderedString(unsigned int num)$/;" f class:pappso::Utils getLiAbsoluteString src/pappsomspp/peptide/peptide.cpp /^Peptide::getLiAbsoluteString() const$/;" f class:pappso::Peptide getMass src/pappsomspp/amino_acid/aa.cpp /^Aa::getMass() const$/;" f class:pappso::Aa getMass src/pappsomspp/amino_acid/aabase.cpp /^AaBase::getMass() const$/;" f class:pappso::AaBase getMass src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getMass() const$/;" f class:pappso::AaModification getMass src/pappsomspp/peptide/peptide.cpp /^Peptide::getMass()$/;" f class:pappso::Peptide getMass src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::getMass() const$/;" f class:pappso::PeptideFragment getMass src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getMass() const$/;" f class:pappso::PeptideFragmentIon getMass src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::getMass() const$/;" f class:pappso::PeptideNaturalIsotope getMass src/pappsomspp/protein/protein.cpp /^Protein::getMass() const$/;" f class:pappso::Protein getMassSpectrumCstSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getMassSpectrumCstSPtr() const$/;" f class:pappso::QualifiedMassSpectrum getMassSpectrumCstSPtr src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getMassSpectrumCstSPtr(std::size_t timsId, std::size_t scanNum)$/;" f class:pappso::TimsData getMassSpectrumCstSPtr src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::getMassSpectrumCstSPtr(std::size_t scanNum) const$/;" f class:pappso::TimsFrame getMassSpectrumCstSPtrByRawIndex src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getMassSpectrumCstSPtrByRawIndex(std::size_t raw_index)$/;" f class:pappso::TimsData getMassSpectrumId src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getMassSpectrumId() const$/;" f class:pappso::QualifiedMassSpectrum getMassSpectrumSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getMassSpectrumSPtr() const$/;" f class:pappso::QualifiedMassSpectrum getMassSpectrumSPtr src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::getMassSpectrumSPtr(std::size_t scanNum) const$/;" f class:pappso::TimsFrame getMassSpectrumSPtr src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getMassSpectrumSPtr(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase getMassSpectrumSPtr src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::getMassSpectrumSPtr(std::size_t scanNum) const$/;" f class:pappso::TimsFrameType1 getMatchPrecursorIdByKo src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getMatchPrecursorIdByKo(std::vector> ids,$/;" f class:pappso::TimsData getMatchedIons src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::getMatchedIons(PeptideIon ion_type) const$/;" f class:pappso::XtandemHyperscore getMatchedIons src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::getMatchedIons(PeptideIon ion_type) const$/;" f class:XtandemHyperscoreBis getMatchedMzDiffMean src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getMatchedMzDiffMean() const$/;" f class:pappso::PsmFeatures getMatchedMzDiffSd src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getMatchedMzDiffSd() const$/;" f class:pappso::PsmFeatures getMaxConsecutiveIon src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getMaxConsecutiveIon(pappso::PeptideIon ion_type)$/;" f class:pappso::PsmFeatures getMaxHalfEdgeWindows src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMax::getMaxHalfEdgeWindows() const$/;" f class:FilterMorphoMax getMaxIntensityMatchedIonComplementPairPrecursorMassDelta src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getMaxIntensityMatchedIonComplementPairPrecursorMassDelta()$/;" f class:pappso::PsmFeatures getMaxIntensityPeakIonMatch src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getMaxIntensityPeakIonMatch($/;" f class:pappso::PsmFeatures getMaxMinHalfEdgeWindows src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::getMaxMinHalfEdgeWindows() const$/;" f class:pappso::TraceDetectionZivy getMaxMinHalfEdgeWindows src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMaxMin::getMaxMinHalfEdgeWindows() const$/;" f class:FilterMorphoMaxMin getMaxXicElement src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::getMaxXicElement() const$/;" f class:pappso::TracePeak getMaxXicElement src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::getMaxXicElement()$/;" f class:pappso::TracePeak getMaximumRawMassIndex src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getMaximumRawMassIndex() const$/;" f class:pappso::TimsFrameBase getMeanHalfEdgeWindows src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMean::getMeanHalfEdgeWindows() const$/;" f class:FilterMorphoMean getMemoryBuffer src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^pappso::TimsFrameRawDataChunck::getMemoryBuffer() const$/;" f class:pappso::TimsFrameRawDataChunck getMinHalfEdgeWindows src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMin::getMinHalfEdgeWindows() const$/;" f class:FilterMorphoMin getMinMaxHalfEdgeWindows src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::getMinMaxHalfEdgeWindows() const$/;" f class:pappso::TraceDetectionZivy getMinMaxHalfEdgeWindows src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMinMax::getMinMaxHalfEdgeWindows() const$/;" f class:FilterMorphoMinMax getMinimumMz src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getMinimumMz() const$/;" f class:pappso::XtandemSpectrumProcess getMiscleavage src/pappsomspp/protein/enzyme.cpp /^Enzyme::getMiscleavage() const$/;" f class:pappso::Enzyme getModificationList src/pappsomspp/amino_acid/aa.cpp /^Aa::getModificationList() const$/;" f class:pappso::Aa getModificationPositionList src/pappsomspp/peptide/peptide.cpp /^Peptide::getModificationPositionList(AaModificationP mod) const$/;" f class:pappso::Peptide getModificationPositionList src/pappsomspp/peptide/peptide.cpp /^Peptide::getModificationPositionList(AaModificationP mod,$/;" f class:pappso::Peptide getModificationPositionList src/pappsomspp/protein/peptidemodificatorbase.cpp /^PeptideModificatorBase::getModificationPositionList($/;" f class:pappso::PeptideModificatorBase getMorpheusScore src/pappsomspp/psm/morpheus/morpheusscore.cpp /^MorpheusScore::getMorpheusScore() const$/;" f class:pappso::MorpheusScore getMostIntensePeakBetween src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::getMostIntensePeakBetween(pappso_double mz,$/;" f class:QCPSpectrum getMs1MeanFilter src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^pappso::MsRunRetentionTime::getMs1MeanFilter() const$/;" f class:pappso::MsRunRetentionTime getMs1RetentionTimeVector src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getMs1RetentionTimeVector() const$/;" f class:MsRunRetentionTime getMs2BuiltinCentroid src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getMs2BuiltinCentroid() const$/;" f class:pappso::TimsData getMs2FilterSuiteString src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::getMs2FilterSuiteString() const$/;" f class:pappso::TandemWrapperRun getMs2FiltersOptions src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^XtandemPresetReader::getMs2FiltersOptions() const$/;" f class:pappso::XtandemPresetReader getMs2MeanFilter src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^pappso::MsRunRetentionTime::getMs2MeanFilter() const$/;" f class:pappso::MsRunRetentionTime getMs2MedianFilter src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^pappso::MsRunRetentionTime::getMs2MedianFilter() const$/;" f class:pappso::MsRunRetentionTime getMsLevel src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getMsLevel() const$/;" f class:pappso::QualifiedMassSpectrum getMsLevel src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getMsLevel() const$/;" f class:pappso::TimsFrameBase getMsLevelBySpectrumIndex src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getMsLevelBySpectrumIndex(std::size_t spectrum_index)$/;" f class:pappso::TimsData getMsLevelCount src/pappsomspp/msrun/msrunreader.cpp /^MsRunSimpleStatistics::getMsLevelCount(unsigned int ms_level) const$/;" f class:pappso::MsRunSimpleStatistics getMsPointDistance src/pappsomspp/xic/xic.cpp /^Xic::getMsPointDistance(pappso_double rt_first, pappso_double rt_second) const$/;" f class:pappso::Xic getMsRunId src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getMsRunId() const$/;" f class:MsRunRetentionTime getMsRunId src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::getMsRunId() const$/;" f class:pappso::MsRunReader getMsRunId src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::getMsRunId() const$/;" f class:pappso::MsRunXicExtractorInterface getMsRunIdCstSPtr src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::getMsRunIdCstSPtr() const$/;" f class:pappso::MassSpectrumId getMsRunIds src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::getMsRunIds()$/;" f class:pappso::MsFileAccessor getMsRunIds src/pappsomspp/msfile/pwizmsfilereader.cpp /^PwizMsFileReader::getMsRunIds(const QString &run_prefix)$/;" f class:pappso::PwizMsFileReader getMsRunIds src/pappsomspp/msfile/timsmsfilereader.cpp /^TimsMsFileReader::getMsRunIds(const QString &run_prefix)$/;" f class:pappso::TimsMsFileReader getMsRunIds src/pappsomspp/msfile/xymsfilereader.cpp /^XyMsFileReader::getMsRunIds(const QString &run_prefix)$/;" f class:pappso::XyMsFileReader getMsRunReaderSPtr src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^pappso::MsRunRetentionTime::getMsRunReaderSPtr() const$/;" f class:pappso::MsRunRetentionTime getMsRunReaderSPtr src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::getMsRunReaderSPtr() const$/;" f class:pappso::MsRunXicExtractorInterface getMsRunReaderSPtrByRunId src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::getMsRunReaderSPtrByRunId(const QString &run_id,$/;" f class:pappso::MsFileAccessor getMz src/pappsomspp/mzrange.cpp /^MzRange::getMz() const$/;" f class:pappso::MzRange getMz src/pappsomspp/peptide/ion.cpp /^Ion::getMz(unsigned int charge) const$/;" f class:pappso::Ion getMz src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getMz() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getMz src/pappsomspp/xic/qualifiedxic.h /^ getMz() const$/;" f class:pappso::QualifiedXic getMzCalibrationInterfaceSPtr src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getMzCalibrationInterfaceSPtr() const$/;" f class:pappso::TimsFrameBase getMzFormat src/pappsomspp/msrun/msrunid.cpp /^MsRunId::getMzFormat() const$/;" f class:pappso::MsRunId getMzFromTofIndex src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp /^MzCalibrationModel1::getMzFromTofIndex(quint32 tof_index)$/;" f class:MzCalibrationModel1 getMzFromTofIndex src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp /^MzCalibrationModel1Cached::getMzFromTofIndex(quint32 tof_index)$/;" f class:MzCalibrationModel1Cached getMzShift src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::getMzShift() const$/;" f class:pappso::MzIntegrationParams getMzSortedPrecursorDataChargeValuesAsString src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getMzSortedPrecursorDataChargeValuesAsString($/;" f class:pappso::QualifiedMassSpectrum getMzSortedPrecursorDataMzValuesAsString src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getMzSortedPrecursorDataMzValuesAsString($/;" f class:pappso::QualifiedMassSpectrum getMzTarget src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^pappso::OboListWidget::getMzTarget() const$/;" f class:pappso::OboListWidget getName src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getName() const$/;" f class:pappso::AaModification getName src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getName() const$/;" f class:pappso::PeptideFragmentIon getName src/pappsomspp/peptide/peptideinterface.h /^ getName() const$/;" f class:pappso::PeptideInterface getName src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::getName(const Xic *xic_p) const$/;" f class:XicWidget getNativeId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::getNativeId() const$/;" f class:pappso::MassSpectrumId getNbrPeaks src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::getNbrPeaks(std::size_t scanNum) const$/;" f class:pappso::TimsFrame getNbrPeaks src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getNbrPeaks(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase getNbrPeaks src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::getNbrPeaks(std::size_t scanNum) const$/;" f class:pappso::TimsFrameType1 getNearestPeakBetween src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::getNearestPeakBetween(pappso_double mz,$/;" f class:QCPSpectrum getNeutralLossMass src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getNeutralLossMass() const$/;" f class:pappso::XtandemSpectrumProcess getNeutralLossWindowDalton src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getNeutralLossWindowDalton() const$/;" f class:pappso::XtandemSpectrumProcess getNmostIntense src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getNmostIntense() const$/;" f class:pappso::XtandemSpectrumProcess getNominal src/pappsomspp/precision.cpp /^PrecisionBase::getNominal() const$/;" f class:pappso::PrecisionBase getNrmsd src/pappsomspp/trace/linearregression.cpp /^LinearRegression::getNrmsd(const Trace &data) const$/;" f class:LinearRegression getNumberOfAtom src/pappsomspp/amino_acid/aa.cpp /^Aa::getNumberOfAtom(AtomIsotopeSurvey atom) const$/;" f class:pappso::Aa getNumberOfAtom src/pappsomspp/amino_acid/aabase.cpp /^AaBase::getNumberOfAtom(AtomIsotopeSurvey atom) const$/;" f class:pappso::AaBase getNumberOfAtom src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getNumberOfAtom(AtomIsotopeSurvey atom) const$/;" f class:pappso::AaModification getNumberOfAtom src/pappsomspp/peptide/peptide.cpp /^Peptide::getNumberOfAtom(AtomIsotopeSurvey atom) const$/;" f class:pappso::Peptide getNumberOfAtom src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::getNumberOfAtom(AtomIsotopeSurvey atom) const$/;" f class:pappso::PeptideFragment getNumberOfAtom src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getNumberOfAtom(AtomIsotopeSurvey atom) const$/;" f class:pappso::PeptideFragmentIon getNumberOfAtom src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::getNumberOfAtom(AtomIsotopeSurvey atom) const$/;" f class:pappso::PeptideNaturalIsotope getNumberOfCorrectedValues src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getNumberOfCorrectedValues() const$/;" f class:MsRunRetentionTime getNumberOfIsotope src/pappsomspp/amino_acid/aa.cpp /^Aa::getNumberOfIsotope(Isotope isotope) const$/;" f class:pappso::Aa getNumberOfIsotope src/pappsomspp/amino_acid/aabase.cpp /^AaBase::getNumberOfIsotope(Isotope isotope [[maybe_unused]]) const$/;" f class:pappso::AaBase getNumberOfIsotope src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::getNumberOfIsotope(Isotope isotope) const$/;" f class:pappso::AaModification getNumberOfIsotope src/pappsomspp/peptide/peptide.cpp /^Peptide::getNumberOfIsotope(Isotope isotope) const$/;" f class:pappso::Peptide getNumberOfIsotope src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::getNumberOfIsotope(Isotope isotope) const$/;" f class:pappso::PeptideFragment getNumberOfIsotope src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getNumberOfIsotope(Isotope isotope) const$/;" f class:pappso::PeptideFragmentIon getNumberOfIsotope src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::getNumberOfIsotope(Isotope isotope) const$/;" f class:pappso::PeptideNaturalIsotope getNumberOfMatchedIons src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getNumberOfMatchedIons() const$/;" f class:pappso::PsmFeatures getNumberOfModification src/pappsomspp/amino_acid/aa.cpp /^Aa::getNumberOfModification(AaModificationP mod) const$/;" f class:pappso::Aa getNumberOfModification src/pappsomspp/peptide/peptide.cpp /^Peptide::getNumberOfModification(AaModificationP mod) const$/;" f class:pappso::Peptide getNumberOfNeutralPhosphoLoss src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getNumberOfNeutralPhosphoLoss() const$/;" f class:pappso::PeptideFragmentIon getNumberOfPoints src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestY::getNumberOfPoints() const$/;" f class:FilterGreatestY getNumberOfPoints src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestYperWindow::getNumberOfPoints() const$/;" f class:FilterGreatestYperWindow getNumberOfThreads src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^XtandemPresetReader::getNumberOfThreads() const$/;" f class:pappso::XtandemPresetReader getOboPsiModTerm src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^pappso::OboListModel::getOboPsiModTerm(int row) const$/;" f class:pappso::OboListModel getOboPsiModTerm src/pappsomspp/widget/obo/obotermform/obotermform.cpp /^pappso::OboTermForm::getOboPsiModTerm() const$/;" f class:pappso::OboTermForm getOboPsiModTermList src/pappsomspp/obo/filterobopsimodsink.cpp /^FilterOboPsiModSink::getOboPsiModTermList()$/;" f class:pappso::FilterOboPsiModSink getOboPsiModTermSelected src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp /^pappso::OboChooserWidget::getOboPsiModTermSelected() const$/;" f class:pappso::OboChooserWidget getOlsUrl src/pappsomspp/widget/httpbutton/httpbutton.cpp /^HttpButton::getOlsUrl(QString psimod_accession)$/;" f class:HttpButton getOne src/pappsomspp/obo/filterobopsimodsink.cpp /^FilterOboPsiModSink::getOne()$/;" f class:pappso::FilterOboPsiModSink getOneOverK0Transformation src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getOneOverK0Transformation(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase getOrigColorMapPlotConfig src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::getOrigColorMapPlotConfig()$/;" f class:pappso::BaseColorMapPlotWidget getOriginalMsDataFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp /^WrapTandemInput::getOriginalMsDataFileName() const$/;" f class:pappso::WrapTandemInput getOriginalTandemOutputFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp /^WrapTandemInput::getOriginalTandemOutputFileName() const$/;" f class:pappso::WrapTandemInput getOriginalTandemPresetFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp /^WrapTandemInput::getOriginalTandemPresetFileName() const$/;" f class:pappso::WrapTandemInput getOutermostRangeX src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getOutermostRangeX(bool &found_range) const$/;" f class:pappso::BasePlotWidget getOutermostRangeY src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getOutermostRangeY(bool &found_range) const$/;" f class:pappso::BasePlotWidget getParameterValue src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getParameterValue($/;" f class:pappso::QualifiedMassSpectrum getParameters src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::getParameters() const$/;" f class:pappso::FilterSavitzkyGolay getParent src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::getParent() const$/;" f class:pappso::MsRunDataSetTreeNode getPeak src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::getPeak() const$/;" f class:pappso::PeakIonMatch getPeakIonIsotopeMatchList src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::getPeakIonIsotopeMatchList() const$/;" f class:pappso::PeptideIsotopeSpectrumMatch getPeakIonPairs src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getPeakIonPairs() const$/;" f class:pappso::PsmFeatures getPen src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getPen() const$/;" f class:pappso::BasePlotWidget getPeptideFragmentIonList src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ getPeptideFragmentIonList() const$/;" f class:pappso::PeptideFragmentIonListBase getPeptideFragmentIonSp src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::getPeptideFragmentIonSp($/;" f class:pappso::PeptideFragmentIonListBase getPeptideFragmentIonSp src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::getPeptideFragmentIonSp(PeptideIon ion_type) const$/;" f class:pappso::PeptideFragmentIonListBase getPeptideFragmentIonSp src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::getPeptideFragmentIonSp(PeptideIon ion_type,$/;" f class:pappso::PeptideFragmentIonListBase getPeptideFragmentIonSp src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::getPeptideFragmentIonSp() const$/;" f class:pappso::PeakIonMatch getPeptideFragmentIonSp src/pappsomspp/xic/xicpeptidefragmention.h /^ getPeptideFragmentIonSp() const$/;" f class:pappso::XicPeptideFragmentIon getPeptideFragmentIonSp src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h /^ getPeptideFragmentIonSp() const$/;" f class:pappso::XicPeptideFragmentIonNaturalIsotope getPeptideFragmentList src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::getPeptideFragmentList(const PeptideSp &peptide)$/;" f class:pappso::PeptideFragmentIonListBase getPeptideFragmentSp src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getPeptideFragmentSp() const$/;" f class:pappso::PeptideFragmentIon getPeptideInterfaceSp src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getPeptideInterfaceSp() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getPeptideInterfaceSp src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::getPeptideInterfaceSp() const$/;" f class:pappso::PeptideNaturalIsotopeList getPeptideIonColor src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getPeptideIonColor(PeptideIon m_ionType)$/;" f class:pappso::PeptideFragmentIon getPeptideIonDirection src/pappsomspp/peptide/peptide.cpp /^getPeptideIonDirection(PeptideIon ion_type)$/;" f namespace:pappso getPeptideIonDirection src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::getPeptideIonDirection() const$/;" f class:pappso::PeptideFragment getPeptideIonDirection src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getPeptideIonDirection() const$/;" f class:pappso::PeptideFragmentIon getPeptideIonDirection src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getPeptideIonDirection(PeptideIon ion_type)$/;" f class:pappso::PeptideFragmentIon getPeptideIonDirection src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::getPeptideIonDirection() const$/;" f class:pappso::PeakIonMatch getPeptideIonDirectionName src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::getPeptideIonDirectionName(PeptideDirection direction)$/;" f class:pappso::PeptideFragment getPeptideIonName src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getPeptideIonName() const$/;" f class:pappso::PeptideFragmentIon getPeptideIonName src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getPeptideIonName(PeptideIon m_ionType)$/;" f class:pappso::PeptideFragmentIon getPeptideIonType src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getPeptideIonType() const$/;" f class:pappso::PeptideFragmentIon getPeptideIonType src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::getPeptideIonType() const$/;" f class:pappso::PeakIonMatch getPeptideNaturalIsotopeAverageSp src/pappsomspp/psm/peakionisotopematch.cpp /^PeakIonIsotopeMatch::getPeptideNaturalIsotopeAverageSp() const$/;" f class:pappso::PeakIonIsotopeMatch getPeptideNaturalIsotopeAverageSp src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h /^ getPeptideNaturalIsotopeAverageSp() const$/;" f class:pappso::XicPeptideFragmentIonNaturalIsotope getPeptideSet src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::getPeptideSet() const$/;" f class:pappso::GrpSubGroup getPeptideSp src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::getPeptideSp() const$/;" f class:pappso::PeptideFragment getPeptideSp src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ getPeptideSp() const$/;" f class:pappso::PeptideFragmentIonListBase getPercentage src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::getPercentage() const$/;" f class:pappso::FilterCeilingAmplitudePercentage getPercentage src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::getPercentage() const$/;" f class:pappso::FilterFloorAmplitudePercentage getPhosphorylationNumber src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ getPhosphorylationNumber() const$/;" f class:pappso::PeptideFragmentIonListBase getPlottingColor src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::getPlottingColor(int index) const$/;" f class:pappso::BaseColorMapPlotWidget getPlottingColor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getPlottingColor(QCPAbstractPlottable *plottable_p) const$/;" f class:pappso::BasePlotWidget getPlottingColor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getPlottingColor(int index) const$/;" f class:pappso::BasePlotWidget getPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::getPoint(PointSpecs point_spec) const$/;" f class:pappso::SelectionPolygon getPoints src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::getPoints() const$/;" f class:pappso::SelectionPolygon getPpmInstance src/pappsomspp/precision.cpp /^PrecisionFactory::getPpmInstance(pappso_double value)$/;" f class:pappso::PrecisionFactory getPrecision src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::getPrecision() const$/;" f class:pappso::PeptideNaturalIsotopeAverage getPrecision src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::getPrecision() const$/;" f class:pappso::MzIntegrationParams getPrecision src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::getPrecision() const$/;" f class:pappso::PrecisionWidget getPrecisionPtr src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^pappso::OboListWidget::getPrecisionPtr() const$/;" f class:pappso::OboListWidget getPrecisionPtrFractionInstance src/pappsomspp/precision.cpp /^PrecisionFactory::getPrecisionPtrFractionInstance(PrecisionPtr origin,$/;" f class:pappso::PrecisionFactory getPrecisionPtrInstance src/pappsomspp/precision.cpp /^PrecisionFactory::getPrecisionPtrInstance(PrecisionUnit unit, double value)$/;" f class:pappso::PrecisionFactory getPrecursorCharge src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorCharge(bool *ok_p) const$/;" f class:pappso::QualifiedMassSpectrum getPrecursorDataChargeValuesAsString src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorDataChargeValuesAsString($/;" f class:pappso::QualifiedMassSpectrum getPrecursorDataMzValuesAsString src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorDataMzValuesAsString($/;" f class:pappso::QualifiedMassSpectrum getPrecursorIntensity src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorIntensity(bool *ok_p) const$/;" f class:pappso::QualifiedMassSpectrum getPrecursorIonData src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorIonData() const$/;" f class:pappso::QualifiedMassSpectrum getPrecursorIonDataSortedWithMz src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorIonDataSortedWithMz() const$/;" f class:pappso::QualifiedMassSpectrum getPrecursorMz src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorMz(bool *ok_p) const$/;" f class:pappso::QualifiedMassSpectrum getPrecursorNativeId src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorNativeId() const$/;" f class:pappso::QualifiedMassSpectrum getPrecursorScanNumber src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::getPrecursorScanNumber(const QualifiedMassSpectrum &spectrum) const$/;" f class:MzxmlOutput getPrecursorSpectrumIndex src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getPrecursorSpectrumIndex() const$/;" f class:pappso::QualifiedMassSpectrum getPrecursorsFromMzRtCharge src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getPrecursorsFromMzRtCharge(int charge,$/;" f class:pappso::TimsData getPrecursorsIDFromMzRt src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^pappso::TimsMsRunReaderMs2::getPrecursorsIDFromMzRt(int charge,$/;" f class:pappso::TimsMsRunReaderMs2 getPubMedUrl src/pappsomspp/widget/httpbutton/httpbutton.cpp /^HttpButton::getPubMedUrl(QString accession)$/;" f class:HttpButton getPwizSpectrumPtr src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::getPwizSpectrumPtr(pwiz::msdata::SpectrumList *p_spectrum_list,$/;" f class:pappso::PwizMsRunReader getQRegExpRecognitionSite src/pappsomspp/protein/enzyme.cpp /^Enzyme::getQRegExpRecognitionSite() const$/;" f class:pappso::Enzyme getQfileLinear src/pappsomspp/vendors/tims/timsbindec.cpp /^TimsBinDec::getQfileLinear($/;" f class:TimsBinDec getQfileRandom src/pappsomspp/vendors/tims/timsbindec.cpp /^pappso::TimsBinDec::getQfileRandom()$/;" f class:pappso::TimsBinDec getQualifiedMassSpectrum src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::getQualifiedMassSpectrum() const$/;" f class:pappso::MsRunDataSetTreeNode getQualifiedMassSpectrumByRawIndex src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getQualifiedMassSpectrumByRawIndex($/;" f class:pappso::TimsData getQualifiedMs1MassSpectrumByPrecursorId src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getQualifiedMs1MassSpectrumByPrecursorId($/;" f class:pappso::TimsData getQualifiedMs2MassSpectrumByPrecursorId src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getQualifiedMs2MassSpectrumByPrecursorId($/;" f class:pappso::TimsData getQuantileThreshold src/pappsomspp/processing/filters/filterpass.cpp /^FilterQuantileBasedRemoveY::getQuantileThreshold() const$/;" f class:FilterQuantileBasedRemoveY getRESIDUrl src/pappsomspp/widget/httpbutton/httpbutton.cpp /^HttpButton::getRESIDUrl(QString accession)$/;" f class:HttpButton getRange src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getRange(Axis axis,$/;" f class:pappso::BasePlotWidget getRangeX src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getRangeX(bool &found_range, int index) const$/;" f class:pappso::BasePlotWidget getRangeY src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::getRangeY(bool &found_range, int index) const$/;" f class:pappso::BasePlotWidget getRank src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::getRank() const$/;" f class:GrpPeptide getRank src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::getRank() const$/;" f class:GrpProtein getRawIndexFromCoordinate src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getRawIndexFromCoordinate(std::size_t frame_id,$/;" f class:pappso::TimsData getRawMs2ByPrecursorId src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getRawMs2ByPrecursorId(std::size_t precursor_index)$/;" f class:pappso::TimsData getRawMsBySpectrumIndex src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::getRawMsBySpectrumIndex(std::size_t spectrum_index)$/;" f class:pappso::pappso::TimsData getRawTraceSPtr src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::getRawTraceSPtr(std::size_t scanNum) const$/;" f class:pappso::TimsFrame getRawTraceSPtr src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::getRawTraceSPtr(std::size_t scanNum) const$/;" f class:pappso::TimsFrameType1 getRefineSpectrumModel src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getRefineSpectrumModel() const$/;" f class:pappso::XtandemSpectrumProcess getRemoveIsotope src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::getRemoveIsotope() const$/;" f class:pappso::XtandemSpectrumProcess getResInstance src/pappsomspp/precision.cpp /^PrecisionFactory::getResInstance(pappso_double value)$/;" f class:pappso::PrecisionFactory getRetentionTimeFromSecondsToLocal src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::getRetentionTimeFromSecondsToLocal(pappso::pappso_double rt) const$/;" f class:QCPXic getRetentionTimeLine src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::getRetentionTimeLine()$/;" f class:pappso::MsRunReader getRetentionTimeLine src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderRetentionTimeLine::getRetentionTimeLine() const$/;" f class:pappso::MsRunReaderRetentionTimeLine getRetentionTimeLine src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^pappso::TimsMsRunReaderMs2::getRetentionTimeLine()$/;" f class:pappso::TimsMsRunReaderMs2 getRetentionTimeLine src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::getRetentionTimeLine() const$/;" f class:pappso::pappso::TimsData getRightBoundary src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::getRightBoundary() const$/;" f class:pappso::TracePeak getRightBoundary src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::getRightBoundary()$/;" f class:pappso::TracePeak getRightMostPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::getRightMostPoint() const$/;" f class:pappso::SelectionPolygon getRmsd src/pappsomspp/trace/linearregression.cpp /^LinearRegression::getRmsd(const Trace &data) const$/;" f class:LinearRegression getRootNodes src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::getRootNodes() const$/;" f class:pappso::MsRunDataSetTree getRtAxisP src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::getRtAxisP()$/;" f class:XicWidget getRtInMinutes src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getRtInMinutes() const$/;" f class:pappso::QualifiedMassSpectrum getRtInSeconds src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::getRtInSeconds() const$/;" f class:pappso::QualifiedMassSpectrum getRunId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::getRunId() const$/;" f class:pappso::MsRunId getSampleName src/pappsomspp/msrun/msrunid.cpp /^MsRunId::getSampleName() const$/;" f class:pappso::MsRunId getScaleFactorY src/pappsomspp/processing/filters/filterpass.cpp /^FilterScaleFactorY::getScaleFactorY() const$/;" f class:FilterScaleFactorY getScanCoordinateFromRawIndex src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getScanCoordinateFromRawIndex(std::size_t raw_index) const$/;" f class:pappso::TimsData getScanIndexList src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::getScanIndexList(std::size_t scanNum) const$/;" f class:pappso::TimsFrame getScanIndexList src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getScanIndexList(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase getScanIndexList src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::getScanIndexList(std::size_t scanNum) const$/;" f class:pappso::TimsFrameType1 getScanIntensities src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::getScanIntensities(std::size_t scanNum) const$/;" f class:pappso::TimsFrame getScanIntensities src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getScanIntensities(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase getScanIntensities src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::getScanIntensities(std::size_t scanNum) const$/;" f class:pappso::TimsFrameType1 getScanNumFromOneOverK0 src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getScanNumFromOneOverK0(double one_over_k0) const$/;" f class:pappso::TimsFrameBase getScanNumber src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::getScanNumber(const QualifiedMassSpectrum &spectrum) const$/;" f class:MzxmlOutput getScanNumberFromNativeId src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::getScanNumberFromNativeId(const QString &native_id) const$/;" f class:MzxmlOutput getScanOffset src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::getScanOffset(std::size_t scanNum) const$/;" f class:pappso::TimsFrame getSeamarks src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getSeamarks() const$/;" f class:MsRunRetentionTime getSeamarksReferences src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::getSeamarksReferences() const$/;" f class:MsRunRetentionTime getSequence src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::getSequence() const$/;" f class:GrpPeptide getSequence src/pappsomspp/peptide/peptide.cpp /^Peptide::getSequence() const$/;" f class:pappso::Peptide getSequence src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::getSequence() const$/;" f class:pappso::PeptideFragment getSequence src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::getSequence() const$/;" f class:pappso::PeptideFragmentIon getSequence src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::getSequence() const$/;" f class:pappso::PeptideNaturalIsotope getSequence src/pappsomspp/protein/protein.cpp /^Protein::getSequence() const$/;" f class:pappso::Protein getSequence tests/test_fasta_reader.cpp /^ getSequence() const$/;" f class:FastaSeq getSequenceByIndex src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::getSequenceByIndex(FastaHandlerInterface &fasta_handler,$/;" f class:pappso::FastaFileIndexer getSequenceLi src/pappsomspp/peptide/peptideinterface.cpp /^PeptideInterface::getSequenceLi() const$/;" f class:pappso::PeptideInterface getSliceNumber src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::getSliceNumber() const$/;" f class:pappso::MsRunSlice getSlope src/pappsomspp/trace/linearregression.cpp /^LinearRegression::getSlope() const$/;" f class:LinearRegression getSmallestMz src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::getSmallestMz() const$/;" f class:pappso::MzIntegrationParams getSmoothingHalfEdgeWindows src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::getSmoothingHalfEdgeWindows() const$/;" f class:pappso::TraceDetectionMoulon getSmoothingHalfEdgeWindows src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::getSmoothingHalfEdgeWindows() const$/;" f class:pappso::TraceDetectionZivy getSpectrum src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::getSpectrum(std::size_t i) const$/;" f class:pappso::MsRunSlice getSpectrum src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::getSpectrum(std::size_t i)$/;" f class:pappso::MsRunSlice getSpectrumCount src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::getSpectrumCount() const$/;" f class:pappso::MsRunDataSetTree getSpectrumDescrWithPrecursorId src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::getSpectrumDescrWithPrecursorId(std::size_t precursor_id)$/;" f class:pappso::pappso::TimsData getSpectrumDescrWithScanCoordinate src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::getSpectrumDescrWithScanCoordinate($/;" f class:pappso::pappso::TimsData getSpectrumIndex src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::getSpectrumIndex() const$/;" f class:pappso::MassSpectrumId getSpectrumIndexFromScanNumber src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderScanNumberMultiMap::getSpectrumIndexFromScanNumber($/;" f class:pappso::MsRunReaderScanNumberMultiMap getSubGroupNumber src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::getSubGroupNumber() const$/;" f class:GrpProtein getSubGroupNumber src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::getSubGroupNumber() const$/;" f class:pappso::GrpSubGroup getSubGroupSet src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::getSubGroupSet($/;" f class:pappso::GrpMapPeptideToSubGroupSet getSubGroupSpList src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::getSubGroupSpList() const$/;" f class:GrpGroup getSwitchValue src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.cpp /^pappso::SwitchWidget::getSwitchValue()$/;" f class:pappso::SwitchWidget getThreshold src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::getThreshold() const$/;" f class:pappso::FilterLowIntensitySignalRemoval getThresholdX src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepGreater::getThresholdX() const$/;" f class:pappso::FilterResampleKeepGreater getTicChromatogram src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::getTicChromatogram()$/;" f class:pappso::MsRunReader getTicChromatogram src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderTicChromatogram::getTicChromatogram() const$/;" f class:pappso::MsRunReaderTicChromatogram getTicChromatogram src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::getTicChromatogram()$/;" f class:TimsMsRunReader getTicChromatogram src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::getTicChromatogram()$/;" f class:TimsMsRunReaderMs2 getTicChromatogram src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTicChromatogram() const$/;" f class:pappso::TimsData getTicStart src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::getTicStart() const$/;" f class:pappso::TraceDetectionMoulon getTicStop src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::getTicStop() const$/;" f class:pappso::TraceDetectionMoulon getTime src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getTime() const$/;" f class:pappso::TimsFrameBase getTimsDataSPtr src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::getTimsDataSPtr()$/;" f class:TimsMsRunReader getTimsDataSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^pappso::TimsMsRunReaderMs2::getTimsDataSPtr()$/;" f class:pappso::TimsMsRunReaderMs2 getTimsFrameBaseCstSPtr src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTimsFrameBaseCstSPtr(std::size_t timsId)$/;" f class:pappso::TimsData getTimsFrameBaseCstSPtrCached src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTimsFrameBaseCstSPtrCached(std::size_t timsId)$/;" f class:pappso::TimsData getTimsFrameCstSPtr src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTimsFrameCstSPtr(std::size_t timsId)$/;" f class:pappso::TimsData getTimsFrameCstSPtrCached src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTimsFrameCstSPtrCached(std::size_t timsId)$/;" f class:pappso::TimsData getTimsFrameFromRawDataChunck src/pappsomspp/vendors/tims/timsbindec.cpp /^TimsBinDec::getTimsFrameFromRawDataChunck($/;" f class:TimsBinDec getTimsFrameSPtrByOffset src/pappsomspp/vendors/tims/timsbindec.cpp /^TimsBinDec::getTimsFrameSPtrByOffset($/;" f class:TimsBinDec getTimsMS1FrameIdRange src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTimsMS1FrameIdRange(double rt_begin, double rt_end) const$/;" f class:pappso::TimsData getTofFromTofIndex src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp /^MzCalibrationInterface::getTofFromTofIndex(double index) const$/;" f class:pappso::MzCalibrationInterface getTofFromTofIndex src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp /^MzCalibrationInterface::getTofFromTofIndex(quint32 index) const$/;" f class:pappso::MzCalibrationInterface getTofIndexFromMz src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp /^MzCalibrationModel1::getTofIndexFromMz(double mz)$/;" f class:MzCalibrationModel1 getTopMostPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::getTopMostPoint() const$/;" f class:pappso::SelectionPolygon getTotalCount src/pappsomspp/msrun/msrunreader.cpp /^MsRunSimpleStatistics::getTotalCount() const$/;" f class:pappso::MsRunSimpleStatistics getTotalIntensity src/pappsomspp/psm/features/psmfeatures.cpp /^PsmFeatures::getTotalIntensity() const$/;" f class:PsmFeatures getTotalIntensityOfMatchedIonComplementPairs src/pappsomspp/psm/features/psmfeatures.cpp /^pappso::PsmFeatures::getTotalIntensityOfMatchedIonComplementPairs() const$/;" f class:pappso::PsmFeatures getTotalIntensityOfMatchedIons src/pappsomspp/psm/features/psmfeatures.cpp /^PsmFeatures::getTotalIntensityOfMatchedIons() const$/;" f class:PsmFeatures getTotalMatchedIons src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::getTotalMatchedIons() const$/;" f class:XtandemHyperscoreBis getTotalNumberOfPrecursors src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTotalNumberOfPrecursors() const$/;" f class:pappso::TimsData getTotalNumberOfScans src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::getTotalNumberOfScans() const$/;" f class:pappso::TimsData getTotalNumberOfScans src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getTotalNumberOfScans() const$/;" f class:pappso::TimsFrameBase getTraceFromCumulatedScans src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getTraceFromCumulatedScans($/;" f class:pappso::TimsFrameBase getTraceFromCumulatedScansBuiltinCentroid src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getTraceFromCumulatedScansBuiltinCentroid($/;" f class:pappso::TimsFrameBase getTracePeak tests/test_xic.cpp /^ getTracePeak() const$/;" f class:TraceDetectionMaxSink getUnimodUrl src/pappsomspp/widget/httpbutton/httpbutton.cpp /^HttpButton::getUnimodUrl(QString accession)$/;" f class:HttpButton getValue src/pappsomspp/processing/filters/filterpass.cpp /^FilterRemoveY::getValue() const$/;" f class:FilterRemoveY getValueRangeOnKeyRange src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::getValueRangeOnKeyRange(QCPAbstractPlottable *plottable_p,$/;" f class:pappso::BaseTracePlotWidget getValueRangeOnKeyRange src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::getValueRangeOnKeyRange(int index, bool &ok)$/;" f class:pappso::BaseTracePlotWidget getValuesX src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::getValuesX(int graph_index) const$/;" f class:pappso::BaseTracePlotWidget getValuesY src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::getValuesY(int graph_index) const$/;" f class:pappso::BaseTracePlotWidget getVoltageTransformation src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::getVoltageTransformation(std::size_t scanNum) const$/;" f class:pappso::TimsFrameBase getWindowValue src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMax::getWindowValue($/;" f class:FilterMorphoMax getWindowValue src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMean::getWindowValue($/;" f class:FilterMorphoMean getWindowValue src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMedian::getWindowValue($/;" f class:FilterMorphoMedian getWindowValue src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMin::getWindowValue($/;" f class:FilterMorphoMin getWindowValue src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoSum::getWindowValue($/;" f class:FilterMorphoSum getXicCoordTimsFromPrecursorId src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::getXicCoordTimsFromPrecursorId(std::size_t precursor_id,$/;" f class:pappso::pappso::TimsData getXicCstSPtr src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::getXicCstSPtr(const Xic *xic_p) const$/;" f class:XicWidget getXicCstSPtr src/pappsomspp/xic/qualifiedxic.h /^ getXicCstSPtr() const$/;" f class:pappso::QualifiedXic getXicFromPwizMSDataFile src/pappsomspp/xicextractor/private/msrunxicextractor.cpp /^MsRunXicExtractor::getXicFromPwizMSDataFile($/;" f class:pappso::MsRunXicExtractor getXicSPtr src/pappsomspp/xic/qualifiedxic.h /^ getXicSPtr() const$/;" f class:pappso::QualifiedXic getXmlId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::getXmlId() const$/;" f class:pappso::MsRunId getXtandemPredictedIonIntensityFactor src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::getXtandemPredictedIonIntensityFactor($/;" f class:pappso::XtandemHyperscore getXtandemPredictedIonIntensityFactor src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::getXtandemPredictedIonIntensityFactor($/;" f class:XtandemHyperscoreBis getYatX src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::getYatX(double x, QCPGraph *graph_p)$/;" f class:pappso::BaseTracePlotWidget getYatX src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::getYatX(double x, int index)$/;" f class:pappso::BaseTracePlotWidget getYfromX src/pappsomspp/trace/linearregression.cpp /^LinearRegression::getYfromX(pappso::pappso_double x) const$/;" f class:LinearRegression get_oneoverK0_transformation doc/bruker/tims_calibration.py /^def get_oneoverK0_transformation(conn, frame_id):$/;" f get_temperature_correction doc/bruker/tof_calibration.py /^def get_temperature_correction(conn, frame_id):$/;" f get_tof_transformation doc/bruker/tof_calibration.py /^def get_tof_transformation(conn, temp_corr, frame_id):$/;" f get_voltage doc/bruker/tims_calibration.py /^def get_voltage(conn, frame_id):$/;" f gi Session.vim /^nnoremap gi :call nerdtree#ui_glue#invokeKeyMap("gi")$/;" m gitBranch maintainer-scripts/makeOrigTarball.py /^gitBranch = re.compile("^On branch ").sub('', onBranchLine)$/;" v glutamic_acid src/pappsomspp/types.h /^ glutamic_acid = 'E',$/;" m class:pappso::MzFormat::AminoAcidChar glutamine src/pappsomspp/types.h /^ glutamine = 'Q',$/;" m class:pappso::MzFormat::AminoAcidChar glycine src/pappsomspp/types.h /^ glycine = 'G',$/;" m class:pappso::MzFormat::AminoAcidChar go Session.vim /^nnoremap go :call nerdtree#ui_glue#invokeKeyMap("go")$/;" m groupingProtein src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::groupingProtein()$/;" f class:pappso::GrpGroupingMonitor gs Session.vim /^nnoremap gs :call nerdtree#ui_glue#invokeKeyMap("gs")$/;" m gx Session.vim /^nmap gx NetrwBrowseX$/;" m hasParent src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::hasParent() const$/;" f class:pappso::MsRunDataSetTreeNode hasSameCalibrationData src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::hasSameCalibrationData(const TimsFrameBase &other) const$/;" f class:pappso::TimsFrameBase hasScanNumbers src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::hasScanNumbers() const$/;" f class:pappso::MsRunReader hasScanNumbers src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::hasScanNumbers() const$/;" f class:pappso::PwizMsRunReader hasScanNumbers src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::hasScanNumbers() const$/;" f class:TimsMsRunReader hasScanNumbers src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::hasScanNumbers() const$/;" f class:TimsMsRunReaderMs2 hasScanNumbers src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::hasScanNumbers() const$/;" f class:TimsMsRunReaderMs2Selected hasSpecificPeptide src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::hasSpecificPeptide($/;" f class:pappso::GrpMapPeptideToSubGroupSet hasValidMzRange src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::hasValidMzRange() const$/;" f class:pappso::MzIntegrationParams height src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::height(bool &ok) const$/;" f class:pappso::SelectionPolygon hideAllPlotItems src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::hideAllPlotItems()$/;" f class:pappso::BasePlotWidget hideSelectionRectangle src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::hideSelectionRectangle(bool reset_values)$/;" f class:pappso::BasePlotWidget hideTracers src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::hideTracers()$/;" f class:pappso::BasePlotWidget highlightPrecursorPeaks src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^pappso::MassSpectrumWidget::highlightPrecursorPeaks()$/;" f class:pappso::MassSpectrumWidget highlightPrecursorPeaks src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^pappso::QCPSpectrum::highlightPrecursorPeaks(double precursor_mz,$/;" f class:pappso::QCPSpectrum histidine src/pappsomspp/types.h /^ histidine = 'H',$/;" m class:pappso::MzFormat::AminoAcidChar horizontalGetGraphCoordNewPointCountPixels src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::horizontalGetGraphCoordNewPointCountPixels(int pixel_count)$/;" f class:pappso::BasePlotWidget horizontalMoveMouseCursorCountPixels src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::horizontalMoveMouseCursorCountPixels(int pixel_count)$/;" f class:pappso::BasePlotWidget i Session.vim /^nnoremap i :call nerdtree#ui_glue#invokeKeyMap("i")$/;" m includes src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::includes(const GrpSubGroup *p_subgroup) const$/;" f class:pappso::GrpSubGroup incrementX src/pappsomspp/trace/datapoint.cpp /^DataPoint::incrementX(pappso_double value)$/;" f class:pappso::DataPoint incrementY src/pappsomspp/trace/datapoint.cpp /^DataPoint::incrementY(pappso_double value)$/;" f class:pappso::DataPoint indexNodeMapSize src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::indexNodeMapSize() const$/;" f class:pappso::MsRunDataSetTree initMyResource src/pappsomspp/obo/obopsimod.cpp /^initMyResource()$/;" f initMyResource src/pappsomspp/obo/obopsimodterm.cpp /^initMyResource()$/;" f initialize src/pappsomspp/msfile/pwizmsfilereader.cpp /^PwizMsFileReader::initialize()$/;" f class:pappso::PwizMsFileReader initialize src/pappsomspp/msfile/timsmsfilereader.cpp /^TimsMsFileReader::initialize()$/;" f class:pappso::TimsMsFileReader initialize src/pappsomspp/msfile/xymsfilereader.cpp /^XyMsFileReader::initialize()$/;" f class:pappso::XyMsFileReader initialize src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::initialize()$/;" f class:pappso::PwizMsRunReader initialize src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::initialize()$/;" f class:TimsMsRunReader initialize src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^pappso::TimsMsRunReaderMs2::initialize()$/;" f class:pappso::TimsMsRunReaderMs2 initialize src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^pappso::TimsMsRunReaderMs2Selected::initialize()$/;" f class:pappso::TimsMsRunReaderMs2Selected initialize src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::initialize()$/;" f class:pappso::XyMsRunReader initialize src/pappsomspp/processing/filters/savgolfilter.h /^ initialize($/;" f struct:pappso::SavGolParams initialize src/pappsomspp/processing/filters/savgolfilter.h /^ initialize(const SavGolParams &other)$/;" f struct:pappso::SavGolParams initialize src/pappsomspp/trace/datapoint.cpp /^DataPoint::initialize(const DataPoint &other)$/;" f class:pappso::DataPoint initialize src/pappsomspp/trace/datapoint.cpp /^DataPoint::initialize(const QString &text)$/;" f class:pappso::DataPoint initialize src/pappsomspp/trace/datapoint.cpp /^DataPoint::initialize(pappso_double x, pappso_double y)$/;" f class:pappso::DataPoint initialize src/pappsomspp/trace/maptrace.cpp /^MapTrace::initialize(const std::map &map)$/;" f class:pappso::MapTrace initialize src/pappsomspp/trace/maptrace.cpp /^MapTrace::initialize(const std::vector &xVector,$/;" f class:pappso::MapTrace initialize src/pappsomspp/trace/trace.cpp /^Trace::initialize(const Trace &other)$/;" f class:pappso::Trace initialize src/pappsomspp/trace/trace.cpp /^Trace::initialize(const std::map &map)$/;" f class:pappso::Trace initialize src/pappsomspp/trace/trace.cpp /^Trace::initialize(const std::vector &xVector,$/;" f class:pappso::Trace initializeAndClone src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^pappso::XicCoord::initializeAndClone() const$/;" f class:pappso::XicCoord initializeAndClone src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::initializeAndClone() const$/;" f class:pappso::XicCoordTims innermost src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ innermost = 2,$/;" m class:pappso::RangeType insertOrUpdate src/pappsomspp/trace/maptrace.cpp /^MapTrace::insertOrUpdate(const DataPoint &data_point)$/;" f class:pappso::MapTrace insertOrUpdate src/pappsomspp/trace/maptrace.cpp /^MapTrace::insertOrUpdate(const Trace &trace)$/;" f class:pappso::MapTrace intensity src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ double intensity = 0;$/;" m struct:pappso::PrecursorIonData intensity src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ double intensity;$/;" m struct:pappso::MsRunRetentionTimeSeamarkPoint ion_charge src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ unsigned int ion_charge;$/;" m struct:pappso::RawFragmentationMode::SimplePeakIonMatch ion_mz src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ pappso_double ion_mz;$/;" m struct:pappso::RawFragmentationMode::SimplePeakIonMatch ion_size src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ unsigned int ion_size;$/;" m struct:pappso::RawFragmentationMode::SimplePeakIonMatch ion_type src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ PeptideIon ion_type;$/;" m struct:pappso::RawFragmentationMode::SimplePeakIonMatch is1D src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::is1D() const$/;" f class:pappso::SelectionPolygon is2D src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::is2D() const$/;" f class:pappso::SelectionPolygon isAaEqual src/pappsomspp/amino_acid/aa.cpp /^Aa::isAaEqual(Aa const &r) const$/;" f class:pappso::Aa isAligned src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::isAligned() const$/;" f class:MsRunRetentionTime isApplyMzShift src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::isApplyMzShift() const$/;" f class:pappso::MzIntegrationParams isClickOntoXAxis src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::isClickOntoXAxis(const QPointF &mousePoint)$/;" f class:pappso::BasePlotWidget isClickOntoYAxis src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::isClickOntoYAxis(const QPointF &mousePoint)$/;" f class:pappso::BasePlotWidget isEmpty src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::isEmpty() const$/;" f class:pappso::PeptideNaturalIsotopeAverage isEmptyMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::isEmptyMassSpectrum() const$/;" f class:pappso::QualifiedMassSpectrum isInternal src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::isInternal() const$/;" f class:pappso::AaModification isLesser src/pappsomspp/amino_acid/aa.cpp /^Aa::isLesser(Aa const &r) const$/;" f class:pappso::Aa isMonoThread src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::isMonoThread() const$/;" f class:pappso::MsRunReader isOboTerm src/pappsomspp/widget/obo/obotermform/obotermform.cpp /^pappso::OboTermForm::isOboTerm() const$/;" f class:pappso::OboTermForm isOboTermSelected src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp /^pappso::OboChooserWidget::isOboTermSelected() const$/;" f class:pappso::OboChooserWidget isPalindrome src/pappsomspp/peptide/peptide.cpp /^Peptide::isPalindrome() const$/;" f class:pappso::Peptide isPalindrome src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::isPalindrome() const$/;" f class:pappso::PeptideFragment isPalindrome src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::isPalindrome() const$/;" f class:pappso::PeptideFragmentIon isPalindrome src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::isPalindrome() const$/;" f class:pappso::PeptideNaturalIsotope isReadAhead src/pappsomspp/msrun/msrunreader.cpp /^SpectrumCollectionHandlerInterface::isReadAhead() const$/;" f class:pappso::SpectrumCollectionHandlerInterface isRectangle src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::isRectangle() const$/;" f class:pappso::SelectionPolygon isRemoveZeroValDataPoints src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::isRemoveZeroValDataPoints() const$/;" f class:pappso::MzIntegrationParams isSelectionRectangleVisible src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::isSelectionRectangleVisible()$/;" f class:pappso::BasePlotWidget isValid src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::isValid() const$/;" f class:pappso::MassSpectrumId isValid src/pappsomspp/msrun/msrunid.cpp /^MsRunId::isValid() const$/;" f class:pappso::MsRunId isValid src/pappsomspp/obo/obopsimodterm.cpp /^OboPsiModTerm::isValid() const$/;" f class:pappso::OboPsiModTerm isValid src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::isValid() const$/;" f class:pappso::MzIntegrationParams isValid src/pappsomspp/trace/datapoint.cpp /^DataPoint::isValid() const$/;" f class:pappso::DataPoint isVerticalDisplacementAboveThreshold src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::isVerticalDisplacementAboveThreshold()$/;" f class:pappso::BasePlotWidget isolationMz src/pappsomspp/vendors/tims/timsdata.h /^ double isolationMz = 0;$/;" m struct:pappso::TimsData::SpectrumDescr isolationWidth src/pappsomspp/vendors/tims/timsdata.h /^ double isolationWidth = 0;$/;" m struct:pappso::TimsData::SpectrumDescr isoleucine src/pappsomspp/types.h /^ isoleucine = 'I',$/;" m class:pappso::MzFormat::AminoAcidChar isotopem_ratio src/pappsomspp/peptide/peptidenaturalisotope.cpp /^isotopem_ratio(pappso_double abundance, unsigned int total, unsigned int heavy)$/;" f namespace:pappso isotopem_ratio_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^isotopem_ratio_cache(Isotope isotope, unsigned int total, unsigned int heavy)$/;" f namespace:pappso ivector src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::ivector(long nl, long nh) const$/;" f class:pappso::FilterSavitzkyGolay keyCellCount src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ std::size_t keyCellCount = 0;$/;" m struct:pappso::ColorMapPlotConfig keyPressEvent src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::keyPressEvent(QKeyEvent *event)$/;" f class:QCPSpectrum keyPressEvent src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::keyPressEvent(QKeyEvent *event)$/;" f class:pappso::BasePlotWidget keyPressEvent src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::keyPressEvent(QKeyEvent *event)$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget keyPressEvent src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::keyPressEvent(QKeyEvent *event)$/;" f class:pappso::DriftSpecTracePlotWidget keyPressEvent src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::keyPressEvent(QKeyEvent *event)$/;" f class:pappso::MassSpecTracePlotWidget keyPressEvent src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::keyPressEvent(QKeyEvent *event)$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget keyPressEvent src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::keyPressEvent(QKeyEvent *event)$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget keyPressEvent src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::keyPressEvent(QKeyEvent *event)$/;" f class:pappso::TicXicChromTracePlotWidget keyPressEvent src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::keyPressEvent(QKeyEvent *event)$/;" f class:QCPXic keyReleaseEvent src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::keyReleaseEvent(QKeyEvent *event)$/;" f class:QCPSpectrum keyReleaseEvent src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::keyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::BasePlotWidget keyReleaseEvent src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::keyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget keyReleaseEvent src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::keyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::DriftSpecTracePlotWidget keyReleaseEvent src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::keyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::MassSpecTracePlotWidget keyReleaseEvent src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::keyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget keyReleaseEvent src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::keyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget keyReleaseEvent src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::keyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::TicXicChromTracePlotWidget keyReleaseEvent src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::keyReleaseEvent(QKeyEvent *event)$/;" f class:QCPXic kj Session.vim /^inoremap kj $/;" m lD src/pappsomspp/processing/filters/savgolfilter.h /^ int lD = 0;$/;" m struct:pappso::SavGolParams last src/pappsomspp/psm/deepprot/deepprotenum.h /^ last = 7$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus last src/pappsomspp/psm/deepprot/deepprotenum.h /^ last = 6$/;" m class:pappso::DeepProtMatchType last src/pappsomspp/types.h /^ last = 17$/;" m class:pappso::MzFormat lastMaxZFilterThresholdPercentage src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double lastMaxZFilterThresholdPercentage = 0.0;$/;" m struct:pappso::ColorMapPlotConfig lastMaxZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double lastMaxZValue = std::numeric_limits::min();$/;" m struct:pappso::ColorMapPlotConfig lastMinZFilterThresholdPercentage src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double lastMinZFilterThresholdPercentage = 0.0;$/;" m struct:pappso::ColorMapPlotConfig lastMinZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double lastMinZValue = std::numeric_limits::max();$/;" m struct:pappso::ColorMapPlotConfig layerableLayerIndex src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::layerableLayerIndex(QCPLayerable *layerable_p) const$/;" f class:pappso::BasePlotWidget layerableLayerName src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::layerableLayerName(QCPLayerable *layerable_p) const$/;" f class:pappso::BasePlotWidget lessThan src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.cpp /^pappso::OboListProxyModel::lessThan(const QModelIndex &source_left,$/;" f class:pappso::OboListProxyModel leucine src/pappsomspp/types.h /^ leucine = 'L',$/;" m class:pappso::MzFormat::AminoAcidChar linePattern maintainer-scripts/makeOrigTarball.py /^linePattern = "nothing to commit, working tree clean";$/;" v linearRegressionMs2toMs1 src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::linearRegressionMs2toMs1(Trace &ms1_aligned_points,$/;" f class:MsRunRetentionTime loadPsiMod src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^OboListModel::loadPsiMod()$/;" f class:OboListModel loadingEnded src/pappsomspp/msrun/msrunreader.cpp /^MsRunSimpleStatistics::loadingEnded()$/;" f class:pappso::MsRunSimpleStatistics loadingEnded src/pappsomspp/msrun/msrunreader.cpp /^SpectrumCollectionHandlerInterface::loadingEnded()$/;" f class:pappso::SpectrumCollectionHandlerInterface log10 src/pappsomspp/types.h /^ log10 = 2,$/;" m class:pappso::MzFormat::AxisScale lower src/pappsomspp/mzrange.h /^ lower() const$/;" f class:pappso::MzRange lubksb src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::lubksb(pappso_double **a,$/;" f class:pappso::FilterSavitzkyGolay ludcmp src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::ludcmp(pappso_double **a,$/;" f class:pappso::FilterSavitzkyGolay lysine src/pappsomspp/types.h /^ lysine = 'K',$/;" m class:pappso::MzFormat::AminoAcidChar lzfDecompressScan src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::lzfDecompressScan(const char *src,$/;" f class:pappso::TimsFrameType1 m Session.vim /^nnoremap m :call nerdtree#ui_glue#invokeKeyMap("m")$/;" m m src/pappsomspp/processing/filters/savgolfilter.h /^ int m = 4;$/;" m struct:pappso::SavGolParams m_aaIonFactorBb src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::AaFactorMap XtandemHyperscoreBis::m_aaIonFactorBb = [] {$/;" m class:XtandemHyperscoreBis file: m_aaIonFactorBb src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ static AaFactorMap m_aaIonFactorBb;$/;" m class:pappso::XtandemHyperscoreBis m_aaIonFactorY src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::AaFactorMap XtandemHyperscoreBis::m_aaIonFactorY = [] {$/;" m class:XtandemHyperscoreBis file: m_aaIonFactorY src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ static AaFactorMap m_aaIonFactorY;$/;" m class:pappso::XtandemHyperscoreBis m_aaLetter src/pappsomspp/amino_acid/aabase.h /^ char m_aaLetter;$/;" m class:pappso::AaBase m_aaMassMap src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaMassMap AaBase::m_aaMassMap = [] {$/;" m class:pappso::AaBase file: m_aaMassMap src/pappsomspp/amino_acid/aabase.h /^ static AaMassMap m_aaMassMap;$/;" m class:pappso::AaBase m_aaModificationList src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ QString m_aaModificationList;$/;" m class:pappso::PeptideFixedModificationBuilder m_aaModificationList src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ QString m_aaModificationList;$/;" m class:pappso::PeptideVariableModificationBuilder m_aaNumberOfCarbonMap src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaIntMap AaBase::m_aaNumberOfCarbonMap = [] {$/;" m class:pappso::AaBase file: m_aaNumberOfCarbonMap src/pappsomspp/amino_acid/aabase.h /^ static AaIntMap m_aaNumberOfCarbonMap;$/;" m class:pappso::AaBase m_aaNumberOfHydrogenMap src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaIntMap AaBase::m_aaNumberOfHydrogenMap = [] {$/;" m class:pappso::AaBase file: m_aaNumberOfHydrogenMap src/pappsomspp/amino_acid/aabase.h /^ static AaIntMap m_aaNumberOfHydrogenMap;$/;" m class:pappso::AaBase m_aaNumberOfNitrogenMap src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaIntMap AaBase::m_aaNumberOfNitrogenMap = [] {$/;" m class:pappso::AaBase file: m_aaNumberOfNitrogenMap src/pappsomspp/amino_acid/aabase.h /^ static AaIntMap m_aaNumberOfNitrogenMap;$/;" m class:pappso::AaBase m_aaNumberOfOxygenMap src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaIntMap AaBase::m_aaNumberOfOxygenMap = [] {$/;" m class:pappso::AaBase file: m_aaNumberOfOxygenMap src/pappsomspp/amino_acid/aabase.h /^ static AaIntMap m_aaNumberOfOxygenMap;$/;" m class:pappso::AaBase m_aaNumberOfSulfurMap src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AaIntMap AaBase::m_aaNumberOfSulfurMap = [] {$/;" m class:pappso::AaBase file: m_aaNumberOfSulfurMap src/pappsomspp/amino_acid/aabase.h /^ static AaIntMap m_aaNumberOfSulfurMap;$/;" m class:pappso::AaBase m_aaVec src/pappsomspp/peptide/peptide.h /^ std::vector m_aaVec;$/;" m class:pappso::PeptideDirection::Peptide m_abundanceRatio src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ pappso_double m_abundanceRatio;$/;" m class:pappso::PeptideNaturalIsotopeAverage m_accession src/pappsomspp/amino_acid/aamodification.h /^ const QString m_accession;$/;" m class:pappso::AaModification m_accession src/pappsomspp/grouping/grpprotein.h /^ const QString m_accession;$/;" m class:pappso::GrpProtein m_accession src/pappsomspp/obo/filterobopsimodtermaccession.h /^ QString m_accession;$/;" m class:pappso::FilterOboPsiModTermAccession m_accession src/pappsomspp/obo/obopsimodterm.h /^ QString m_accession;$/;" m class:pappso::OboPsiModTerm m_accession src/pappsomspp/protein/protein.h /^ QString m_accession;$/;" m class:pappso::Protein m_accumulationTime src/pappsomspp/vendors/tims/timsframebase.h /^ double m_accumulationTime = 0;$/;" m class:pappso::TimsFrameBase m_alignedRetentionTimeVector src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ std::vector m_alignedRetentionTimeVector;$/;" m class:pappso::MsRunRetentionTime m_allMs2Points src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ std::vector m_allMs2Points;$/;" m class:pappso::MsRunRetentionTime m_aminoAcidCharList src/pappsomspp/amino_acid/aabase.cpp /^AaBase::AminoAcidCharList AaBase::m_aminoAcidCharList = [] {$/;" m class:pappso::AaBase file: m_aminoAcidCharList src/pappsomspp/amino_acid/aabase.h /^ static AminoAcidCharList m_aminoAcidCharList;$/;" m class:pappso::AaBase m_applyMzShift src/pappsomspp/processing/combiners/mzintegrationparams.h /^ bool m_applyMzShift = false;$/;" m class:pappso::MzIntegrationParams m_arbitrary_minimum_mz src/pappsomspp/processing/filters/filtertandemremovec13.h /^ double m_arbitrary_minimum_mz = 200.0;$/;" m class:pappso::FilterTandemDeisotope m_arbitrary_range_between_isotopes src/pappsomspp/processing/filters/filtertandemremovec13.h /^ double m_arbitrary_range_between_isotopes = 0.95;$/;" m class:pappso::FilterTandemDeisotope m_area src/pappsomspp/processing/detection/tracepeak.h /^ pappso_double m_area = 0;$/;" m class:pappso::TracePeak m_arrMasses src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^ double m_arrMasses[600000] = {0};$/;" m class:pappso::MzCalibrationModel1Cached m_atomCount src/pappsomspp/amino_acid/aamodification.h /^ std::map m_atomCount;$/;" m class:pappso::AaModification m_averageMz src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ pappso_double m_averageMz;$/;" m class:pappso::PeptideNaturalIsotopeAverage m_axisLabelX src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QString m_axisLabelX;$/;" m class:pappso::BasePlotWidget m_axisLabelY src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QString m_axisLabelY;$/;" m class:pappso::BasePlotWidget m_baseContext src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^ BasePlotContext m_baseContext;$/;" m class:pappso::MassSpecTracePlotContext m_binningType src/pappsomspp/processing/combiners/mzintegrationparams.h /^ BinningType m_binningType = BinningType::NONE;$/;" m class:pappso::MzIntegrationParams m_bins src/pappsomspp/processing/combiners/massspectrumcombiner.h /^ std::vector m_bins;$/;" m class:pappso::MassSpectrumCombiner m_bufferMaxSize src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h /^ std::size_t m_bufferMaxSize = 150;$/;" m class:pappso::MsRunXicExtractorDiskBuffer m_bufferSize src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h /^ std::size_t m_bufferSize = 0;$/;" m class:pappso::MsRunXicExtractorDiskBuffer m_builtinMs2Centroid src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ bool m_builtinMs2Centroid = true;$/;" m class:pappso::TimsMsRunReaderMs2 m_builtinMs2Centroid src/pappsomspp/vendors/tims/timsdata.h /^ bool m_builtinMs2Centroid = true;$/;" m class:pappso::TimsData m_cacheSize src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t m_cacheSize = 60;$/;" m class:pappso::TimsData m_chargeMinimalFractionalPart src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ double m_chargeMinimalFractionalPart = 0.990;$/;" m class:pappso::MassSpecTracePlotWidget m_chargeStateEnvelopePeakSpan src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ int m_chargeStateEnvelopePeakSpan = 1;$/;" m class:pappso::MassSpecTracePlotWidget m_children src/pappsomspp/msrun/msrundatasettreenode.h /^ std::vector m_children;$/;" m class:pappso::MsRunDataSetTreeNode m_col tests/test_msrunalignment.cpp /^ std::size_t m_col;$/;" m class:PeptideTableHandler file: m_colorMapPlotConfig src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^ ColorMapPlotConfig m_colorMapPlotConfig;$/;" m class:pappso::BaseColorMapPlotWidget m_context src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ BasePlotContext m_context;$/;" m class:pappso::BasePlotWidget m_context src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ mutable MassSpecTracePlotContext m_context;$/;" m class:pappso::MassSpecTracePlotWidget m_conversionTime src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ qint64 m_conversionTime=0;$/;" m class:pappso::TandemWrapperRun m_convertMzDataUsingSpectrumIndex src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ bool m_convertMzDataUsingSpectrumIndex = false;$/;" m class:pappso::TandemWrapperRun m_count src/pappsomspp/grouping/grpprotein.h /^ unsigned int m_count = 0;$/;" m class:pappso::GrpProtein m_count src/pappsomspp/processing/uimonitor/uimonitortext.h /^ std::size_t m_count = 0;$/;" m class:pappso::UiMonitorText m_countMsLevelSpectrum src/pappsomspp/msrun/msrunreader.h /^ std::vector m_countMsLevelSpectrum;$/;" m class:pappso::MsRunSimpleStatistics m_countNote src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h /^ int m_countNote = -1;$/;" m class:pappso::XtandemPresetReader m_cumulSize src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t m_cumulSize; \/\/ cumulative size$/;" m struct:pappso::TimsData::FrameIdDescr m_cumulativeCterMasses src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ std::vector m_cumulativeCterMasses;$/;" m class:pappso::RawFragmentationMode::PeptideRawFragmentMasses m_cumulativeNterMasses src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ std::vector m_cumulativeNterMasses;$/;" m class:pappso::RawFragmentationMode::PeptideRawFragmentMasses m_curApex src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ TraceCIter m_curApex = static_cast(0);$/;" m class:pappso::FilterLowIntensitySignalRemoval m_curIter src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ TraceCIter m_curIter = static_cast(0);$/;" m class:pappso::FilterLowIntensitySignalRemoval m_currentDragPoint src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ QPointF m_currentDragPoint;$/;" m class:pappso::DragDirections::BasePlotContext m_currentProtein src/pappsomspp/grouping/grpgroupingmonitor.h /^ std::size_t m_currentProtein;$/;" m class:pappso::GrpGroupingMonitor m_dataKind src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ DataKind m_dataKind = DataKind::unset;$/;" m class:pappso::DragDirections::BasePlotContext m_decimalPlaces src/pappsomspp/processing/combiners/massdatacombinerinterface.h /^ int m_decimalPlaces = -1;$/;" m class:pappso::MassDataCombinerInterface m_decimalPlaces src/pappsomspp/processing/combiners/mzintegrationparams.h /^ int m_decimalPlaces = -1;$/;" m class:pappso::MzIntegrationParams m_decompressMemoryBufferSize src/pappsomspp/vendors/tims/timsbindec.h /^ std::size_t m_decompressMemoryBufferSize = 0;$/;" m class:pappso::TimsBinDec m_definition src/pappsomspp/obo/obopsimodterm.h /^ QString m_definition;$/;" m class:pappso::OboPsiModTerm m_delta src/pappsomspp/mzrange.h /^ pappso_double m_delta;$/;" m class:pappso::MzRange m_desc src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QString m_desc = "NOT_SET";$/;" m class:pappso::BasePlotWidget m_description src/pappsomspp/grouping/grpprotein.h /^ const QString m_description;$/;" m class:pappso::GrpProtein m_description src/pappsomspp/protein/protein.h /^ QString m_description;$/;" m class:pappso::Protein m_destinationMzXmlFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QString m_destinationMzXmlFileName;$/;" m class:pappso::WrapTandemInput m_destinationTandemInputFile src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QFile m_destinationTandemInputFile;$/;" m class:pappso::WrapTandemInput m_destinationTandemInputFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QString m_destinationTandemInputFileName;$/;" m class:pappso::WrapTandemInput m_destinationTandemOutputFile src/pappsomspp/processing/tandemwrapper/wraptandemresults.h /^ QFile m_destinationTandemOutputFile;$/;" m class:pappso::WrapTandemResults m_destinationTandemOutputFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QString m_destinationTandemOutputFileName;$/;" m class:pappso::WrapTandemInput m_detectionThresholdOnMaxMin src/pappsomspp/processing/detection/tracedetectionzivy.h /^ pappso_double m_detectionThresholdOnMaxMin;$/;" m class:pappso::TraceDetectionZivy m_detectionThresholdOnMinMax src/pappsomspp/processing/detection/tracedetectionzivy.h /^ pappso_double m_detectionThresholdOnMinMax;$/;" m class:pappso::TraceDetectionZivy m_diffC12C13_z1 src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ double m_diffC12C13_z1;$/;" m class:pappso::FilterChargeDeconvolution m_diffC12C13_z1 src/pappsomspp/processing/filters/filterremovec13.h /^ double m_diffC12C13_z1;$/;" m class:pappso::FilterRemoveC13 m_diffC12C13_z2 src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ double m_diffC12C13_z2;$/;" m class:pappso::FilterChargeDeconvolution m_diffC12C13_z2 src/pappsomspp/processing/filters/filterremovec13.h /^ double m_diffC12C13_z2;$/;" m class:pappso::FilterRemoveC13 m_diffFormula src/pappsomspp/obo/obopsimodterm.h /^ QString m_diffFormula;$/;" m class:pappso::OboPsiModTerm m_diffMono src/pappsomspp/obo/obopsimodterm.h /^ double m_diffMono = 0;$/;" m class:pappso::OboPsiModTerm m_digitizerDelay src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h /^ double m_digitizerDelay = 0;$/;" m class:pappso::MzCalibrationInterface m_digitizerTimebase src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h /^ double m_digitizerTimebase = 0;$/;" m class:pappso::MzCalibrationInterface m_direction src/pappsomspp/peptide/peptidefragment.h /^ const PeptideDirection m_direction;$/;" m class:pappso::PeptideFragment m_dragDirections src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ DragDirections m_dragDirections = DragDirections::NOT_SET;$/;" m class:pappso::DragDirections::BasePlotContext m_dt src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ pappso_double m_dt = -1;$/;" m class:pappso::QualifiedMassSpectrum m_dtDoubleNodeVectorMap src/pappsomspp/msrun/msrundatasettree.h /^ DoubleNodeVectorMap m_dtDoubleNodeVectorMap;$/;" m class:pappso::MsRunDataSetTree m_dynamic src/pappsomspp/processing/filters/filterpass.h /^ double m_dynamic = 0;$/;" m class:pappso::FilterRescaleY m_exclusionPrecision src/pappsomspp/processing/filters/filterexclusionmz.h /^ PrecisionPtr m_exclusionPrecision;$/;" m class:pappso::FilterMzExclusion m_factor src/pappsomspp/processing/filters/filterpass.h /^ double m_factor = 0;$/;" m class:pappso::FilterScaleFactorY m_fasta_file src/pappsomspp/fasta/fastafileindexer.h /^ QFile m_fasta_file;$/;" m class:pappso::FastaFileIndexer m_fileFormat src/pappsomspp/msfile/msfileaccessor.h /^ MzFormat m_fileFormat = MzFormat::unknown;$/;" m class:pappso::MsFileAccessor m_fileFormat src/pappsomspp/msfile/msfilereader.h /^ MzFormat m_fileFormat = MzFormat::unknown;$/;" m class:pappso::MsFileReader m_fileName src/pappsomspp/msfile/msfileaccessor.h /^ QString m_fileName;$/;" m class:pappso::MsFileAccessor m_fileName src/pappsomspp/msfile/msfilereader.h /^ QString m_fileName;$/;" m class:pappso::MsFileReader m_fileName src/pappsomspp/msrun/msrunid.h /^ QString m_fileName = "NOT_SET";$/;" m class:pappso::MsRunId m_fileName src/pappsomspp/msrun/xymsrunreader.h /^ QString m_fileName;$/;" m class:pappso::XyMsRunReader m_fileName src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QString m_fileName;$/;" m class:pappso::BasePlotWidget m_fileReaderType src/pappsomspp/msfile/msfileaccessor.h /^ FileReaderType m_fileReaderType;$/;" m class:pappso::MsFileAccessor m_filterGreatestY src/pappsomspp/processing/filters/filterpass.h /^ FilterGreatestY m_filterGreatestY;$/;" m class:pappso::MassSpectrumFilterGreatestItensities m_filterMax src/pappsomspp/processing/filters/filtermorpho.h /^ FilterMorphoMax m_filterMax;$/;" m class:pappso::FilterMorphoMaxMin m_filterMax src/pappsomspp/processing/filters/filtermorpho.h /^ FilterMorphoMax m_filterMax;$/;" m class:pappso::FilterMorphoMinMax m_filterMin src/pappsomspp/processing/filters/filtermorpho.h /^ FilterMorphoMin m_filterMin;$/;" m class:pappso::FilterMorphoMaxMin m_filterMin src/pappsomspp/processing/filters/filtermorpho.h /^ FilterMorphoMin m_filterMin;$/;" m class:pappso::FilterMorphoMinMax m_filterMorphoMedian src/pappsomspp/processing/filters/filtermorpho.h /^ FilterMorphoMedian m_filterMorphoMedian;$/;" m class:pappso::FilterMorphoBackground m_filterMorphoMinMax src/pappsomspp/processing/filters/filtermorpho.h /^ FilterMorphoMinMax m_filterMorphoMinMax;$/;" m class:pappso::FilterMorphoBackground m_filterRange src/pappsomspp/processing/filters/filterresample.h /^ const FilterResampleKeepXRange m_filterRange;$/;" m class:pappso::MassSpectrumFilterResampleKeepMzRange m_filterRange src/pappsomspp/processing/filters/filterresample.h /^ const FilterResampleRemoveXRange m_filterRange;$/;" m class:pappso::MassSpectrumFilterResampleRemoveMzRange m_filterVector src/pappsomspp/processing/filters/filtersuitestring.h /^ std::vector m_filterVector;$/;" m class:pappso::FilterSuiteString m_filter_floor src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ FilterFloorY m_filter_floor;$/;" m class:pappso::XtandemSpectrumProcess m_filter_highpass src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ FilterHighPass m_filter_highpass;$/;" m class:pappso::XtandemSpectrumProcess m_filter_keep_greater src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ FilterResampleKeepGreater m_filter_keep_greater;$/;" m class:pappso::XtandemSpectrumProcess m_filter_remove_c13 src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ FilterTandemDeisotope m_filter_remove_c13 = FilterTandemDeisotope(1.5, 200);$/;" m class:pappso::XtandemSpectrumProcess m_filter_rescale src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ FilterRescaleY m_filter_rescale;$/;" m class:pappso::XtandemSpectrumProcess m_findExactPsiModLabel src/pappsomspp/obo/obopsimodterm.h /^ static QRegularExpression m_findExactPsiModLabel;$/;" m class:pappso::OboPsiModTerm m_findExternalLinks src/pappsomspp/widget/obo/obotermform/obotermform.h /^ static QRegularExpression m_findExternalLinks;$/;" m class:pappso::OboTermForm m_findRelatedPsiMsLabel src/pappsomspp/obo/obopsimodterm.h /^ static QRegularExpression m_findRelatedPsiMsLabel;$/;" m class:pappso::OboPsiModTerm m_firstFrameId src/pappsomspp/vendors/tims/timsbindec.h /^ std::size_t m_firstFrameId = 0;$/;" m class:pappso::TimsBinDec m_firstParse src/pappsomspp/obo/obopsimodterm.h /^ static QRegularExpression m_firstParse;$/;" m class:pappso::OboPsiModTerm m_fixedModificationList src/pappsomspp/protein/peptidebuilder.h /^ std::list> m_fixedModificationList;$/;" m class:pappso::PeptideBuilder m_focusedBrush src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QBrush m_focusedBrush = QBrush(m_focusedColor);$/;" m class:pappso::BasePlotWidget m_focusedColor src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QColor m_focusedColor = QColor(Qt::transparent);$/;" m class:pappso::BasePlotWidget m_frameId src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t m_frameId; \/\/ frame id$/;" m struct:pappso::TimsData::FrameIdDescr m_frameId src/pappsomspp/vendors/tims/timsframerawdatachunck.h /^ std::size_t m_frameId = 0;$/;" m class:pappso::TimsFrameRawDataChunck m_frameIdDescrList src/pappsomspp/vendors/tims/timsdata.h /^ std::vector m_frameIdDescrList;$/;" m class:pappso::TimsData m_frameLength src/pappsomspp/vendors/tims/timsframerawdatachunck.h /^ quint32 m_frameLength = 0;$/;" m class:pappso::TimsFrameRawDataChunck m_frameNumberOfScans src/pappsomspp/vendors/tims/timsframerawdatachunck.h /^ quint32 m_frameNumberOfScans = 0;$/;" m class:pappso::TimsFrameRawDataChunck m_greatestMz src/pappsomspp/processing/combiners/mzintegrationparams.h /^ pappso::pappso_double m_greatestMz = std::numeric_limits::min();$/;" m class:pappso::MzIntegrationParams m_greatestMz src/pappsomspp/processing/filters/filterresample.h /^ double m_greatestMz = std::numeric_limits::min();$/;" m class:pappso::FilterResampleKeepPointInPolygon m_groupNumber src/pappsomspp/grouping/grpgroup.h /^ unsigned int m_groupNumber = 0;$/;" m class:pappso::GrpGroup m_groupNumber src/pappsomspp/grouping/grppeptide.h /^ unsigned int m_groupNumber = 0;$/;" m class:pappso::GrpPeptide m_groupNumber src/pappsomspp/grouping/grpprotein.h /^ unsigned int m_groupNumber = 0;$/;" m class:pappso::GrpProtein m_groupNumber src/pappsomspp/grouping/grpsubgroup.h /^ unsigned int m_groupNumber = 0;$/;" m class:pappso::GrpSubGroup m_grpGroupSpList src/pappsomspp/grouping/grpexperiment.h /^ std::list m_grpGroupSpList;$/;" m class:pappso::GrpExperiment m_grpPeptideList src/pappsomspp/grouping/grpexperiment.h /^ std::list m_grpPeptideList;$/;" m class:pappso::GrpExperiment m_grpPeptidePtrList src/pappsomspp/grouping/grpprotein.h /^ std::vector m_grpPeptidePtrList;$/;" m class:pappso::GrpProtein m_grpPostGroupingProteinListRemoval src/pappsomspp/grouping/grpexperiment.h /^ GrpPeptideSet m_grpPostGroupingProteinListRemoval;$/;" m class:pappso::GrpExperiment m_grpPreGroupingProteinListRemoval src/pappsomspp/grouping/grpexperiment.h /^ GrpPeptideSet m_grpPreGroupingProteinListRemoval;$/;" m class:pappso::GrpExperiment m_grpProteinList src/pappsomspp/grouping/grpexperiment.h /^ std::list m_grpProteinList;$/;" m class:pappso::GrpExperiment m_grpProteinPtrList src/pappsomspp/grouping/grpsubgroup.h /^ std::vector m_grpProteinPtrList;$/;" m class:pappso::GrpSubGroup m_grpSubGroupPtrList src/pappsomspp/grouping/grpsubgroupset.h /^ std::list m_grpSubGroupPtrList;$/;" m class:pappso::GrpSubGroupSet m_halfWindowSize src/pappsomspp/processing/filters/filterlocalmaximum.h /^ std::size_t m_halfWindowSize = 0;$/;" m class:pappso::FilterLocalMaximum m_halfWindowSize src/pappsomspp/processing/filters/filtermorpho.h /^ std::size_t m_halfWindowSize = 0;$/;" m class:pappso::FilterMorphoAntiSpike m_halfWindowSize src/pappsomspp/processing/filters/filtermorpho.h /^ std::size_t m_halfWindowSize = 0;$/;" m class:pappso::FilterMorphoWindowBase m_handler src/pappsomspp/fasta/fastareader.h /^ FastaHandlerInterface &m_handler;$/;" m class:pappso::FastaReader m_handler src/pappsomspp/obo/obopsimod.h /^ OboPsiModHandlerInterface &m_handler;$/;" m class:pappso::OboPsiMod m_hasPrecursorTable src/pappsomspp/vendors/tims/timsdata.h /^ bool m_hasPrecursorTable;$/;" m class:pappso::TimsData m_hasScanNumbers src/pappsomspp/msrun/private/pwizmsrunreader.h /^ bool m_hasScanNumbers = false;$/;" m class:pappso::PwizMsRunReader m_indexArray src/pappsomspp/fasta/fastafileindexer.h /^ std::vector m_indexArray;$/;" m class:pappso::FastaFileIndexer m_indexNodeMap src/pappsomspp/msrun/msrundatasettree.h /^ std::map m_indexNodeMap;$/;" m class:pappso::MsRunDataSetTree m_instance src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^MsRunXicExtractorFactory MsRunXicExtractorFactory::m_instance =$/;" m class:pappso::MsRunXicExtractorFactory file: m_instance src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^ static MsRunXicExtractorFactory m_instance;$/;" m class:pappso::MsRunXicExtractorFactory m_ionCount src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ unsigned int m_ionCount[PEPTIDE_ION_TYPE_COUNT] = {0};$/;" m class:pappso::XtandemHyperscoreBis m_ionDeltaMz src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^ PeptideRawFragmentMasses::m_ionDeltaMz = {$/;" m class:pappso::PeptideRawFragmentMasses file: m_ionDeltaMz src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ static ionDeltatMzMassMap m_ionDeltaMz;$/;" m class:pappso::RawFragmentationMode::PeptideRawFragmentMasses m_ionIsotopeRatioScore src/pappsomspp/psm/experimental/ionisotoperatioscore.h /^ pappso::pappso_double m_ionIsotopeRatioScore;$/;" m class:pappso::IonIsotopeRatioScore m_ionList src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ IonList m_ionList;$/;" m class:pappso::PeptideFragmentIonListBase m_ionList src/pappsomspp/psm/features/psmfeatures.h /^ std::list m_ionList;$/;" m class:pappso::PsmFeatures m_ionList src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ std::vector m_ionList;$/;" m class:pappso::XtandemHyperscoreBis m_ionType src/pappsomspp/peptide/peptidefragmention.h /^ const PeptideIon m_ionType;$/;" m class:pappso::PeptideFragmentIon m_isEmptyMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ bool m_isEmptyMassSpectrum = false;$/;" m class:pappso::QualifiedMassSpectrum m_isExcludeParent src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool m_isExcludeParent = false;$/;" m class:pappso::XtandemSpectrumProcess m_isExcludeParent_lower_dalton src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ pappso::pappso_double m_isExcludeParent_lower_dalton = 2;$/;" m class:pappso::XtandemSpectrumProcess m_isExcludeParent_neutral_loss src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool m_isExcludeParent_neutral_loss = false;$/;" m class:pappso::XtandemSpectrumProcess m_isExcludeParent_upper_dalton src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ pappso::pappso_double m_isExcludeParent_upper_dalton = 2;$/;" m class:pappso::XtandemSpectrumProcess m_isGroupingStarted src/pappsomspp/grouping/grpexperiment.h /^ bool m_isGroupingStarted = false;$/;" m class:pappso::GrpExperiment m_isKeyBoardDragging src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_isKeyBoardDragging = false;$/;" m class:pappso::DragDirections::BasePlotContext m_isLeftPseudoButtonKeyPressed src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_isLeftPseudoButtonKeyPressed = false;$/;" m class:pappso::DragDirections::BasePlotContext m_isMeasuringDistance src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_isMeasuringDistance = false;$/;" m class:pappso::DragDirections::BasePlotContext m_isMonoThread src/pappsomspp/msrun/msrunreader.h /^ bool m_isMonoThread = false;$/;" m class:pappso::MsRunReader m_isMonoThread src/pappsomspp/vendors/tims/timsdata.h /^ bool m_isMonoThread = false;$/;" m class:pappso::TimsData m_isMouseDragging src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_isMouseDragging = false;$/;" m class:pappso::DragDirections::BasePlotContext m_isPotential src/pappsomspp/protein/peptidemethioninremove.h /^ bool m_isPotential = true;$/;" m class:pappso::PeptideMethioninRemove m_isProtCterMod src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ bool m_isProtCterMod = true;$/;" m class:pappso::PeptideFixedModificationBuilder m_isProtCterMod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ bool m_isProtCterMod = true;$/;" m class:pappso::PeptideVariableModificationBuilder m_isProtElseMod src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ bool m_isProtElseMod = true;$/;" m class:pappso::PeptideFixedModificationBuilder m_isProtElseMod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ bool m_isProtElseMod = true;$/;" m class:pappso::PeptideVariableModificationBuilder m_isProtNterMod src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ bool m_isProtNterMod = true;$/;" m class:pappso::PeptideFixedModificationBuilder m_isProtNterMod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ bool m_isProtNterMod = true;$/;" m class:pappso::PeptideVariableModificationBuilder m_isReadAhead src/pappsomspp/msrun/msrunreader.h /^ bool m_isReadAhead = false;$/;" m class:pappso::SpectrumCollectionHandlerInterface m_isReadAhead src/pappsomspp/msrun/output/mzxmloutput.h /^ bool m_isReadAhead = false;$/;" m class:pappso::MzxmlOutput m_isRefineSpectrumModel src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool m_isRefineSpectrumModel = true;$/;" m class:pappso::XtandemSpectrumProcess m_isRefineSpectrumSynthesis src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ bool m_isRefineSpectrumSynthesis;$/;" m class:pappso::XtandemHyperscoreBis m_isRemoveIsotope src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ bool m_isRemoveIsotope = true;$/;" m class:pappso::XtandemSpectrumProcess m_isRemoveNonInformativeSubgroups src/pappsomspp/grouping/grpexperiment.h /^ bool m_isRemoveNonInformativeSubgroups = true;$/;" m class:pappso::GrpExperiment m_isRightPseudoButtonKeyPressed src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_isRightPseudoButtonKeyPressed = false;$/;" m class:pappso::DragDirections::BasePlotContext m_isotopeLevel src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ unsigned int m_isotopeLevel;$/;" m class:pappso::PeptideNaturalIsotopeAverage m_isotopeRank src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ unsigned int m_isotopeRank = 1;$/;" m class:pappso::PeptideNaturalIsotopeAverage m_keyboardModifiers src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ Qt::KeyboardModifiers m_keyboardModifiers;$/;" m class:pappso::DragDirections::BasePlotContext m_labelMatch src/pappsomspp/obo/filterobopsimodtermlabel.h /^ QRegularExpression m_labelMatch;$/;" m class:pappso::FilterOboPsiModTermLabel m_lastAxisRangeHistoryIndex src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ std::size_t m_lastAxisRangeHistoryIndex = 0;$/;" m class:pappso::BasePlotWidget m_lastCursorHoveredPoint src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ QPointF m_lastCursorHoveredPoint;$/;" m class:pappso::DragDirections::BasePlotContext m_lastFrameId src/pappsomspp/vendors/tims/timsbindec.h /^ std::size_t m_lastFrameId = 0;$/;" m class:pappso::TimsBinDec m_lastMr src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^ double m_lastMr = std::numeric_limits::min();$/;" m class:pappso::MassSpecTracePlotContext m_lastMz src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^ double m_lastMz = std::numeric_limits::min();$/;" m class:pappso::MassSpecTracePlotContext m_lastPressedMouseButton src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ Qt::MouseButtons m_lastPressedMouseButton;$/;" m class:pappso::DragDirections::BasePlotContext m_lastReleasedMouseButton src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ Qt::MouseButtons m_lastReleasedMouseButton;$/;" m class:pappso::DragDirections::BasePlotContext m_lastResolvingPower src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^ double m_lastResolvingPower = std::numeric_limits::min();$/;" m class:pappso::MassSpecTracePlotContext m_lastTicIntensity src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^ double m_lastTicIntensity = std::numeric_limits::min();$/;" m class:pappso::MassSpecTracePlotContext m_lastZ src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^ int m_lastZ = -1;$/;" m class:pappso::MassSpecTracePlotContext m_left src/pappsomspp/processing/detection/tracepeak.h /^ DataPoint m_left;$/;" m class:pappso::TracePeak m_leftMousePseudoButtonKey src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ int m_leftMousePseudoButtonKey = Qt::Key_Less;$/;" m class:pappso::BasePlotWidget m_length src/pappsomspp/protein/protein.h /^ unsigned int m_length = 0;$/;" m class:pappso::Protein m_linearAccessRawDataChunckDequeSize src/pappsomspp/vendors/tims/timsbindec.h /^ std::size_t m_linearAccessRawDataChunckDequeSize = 100;$/;" m class:pappso::TimsBinDec m_linearAccessRawDataChunckList src/pappsomspp/vendors/tims/timsbindec.h /^ std::vector m_linearAccessRawDataChunckList;$/;" m class:pappso::TimsBinDec m_linearForwardThreshold src/pappsomspp/vendors/tims/timsbindec.h /^ std::size_t m_linearForwardThreshold = 30;$/;" m class:pappso::TimsBinDec m_listMod src/pappsomspp/amino_acid/aa.h /^ std::vector m_listMod;$/;" m class:pappso::Aa m_lowestMz src/pappsomspp/processing/filters/filterresample.h /^ double m_lowestMz = std::numeric_limits::max();$/;" m class:pappso::FilterResampleKeepPointInPolygon m_mapAccessionModifications src/pappsomspp/amino_acid/aamodification.cpp /^ AaModification::m_mapAccessionModifications = [] {$/;" m class:pappso::AaModification file: m_mapAccessionModifications src/pappsomspp/amino_acid/aamodification.h /^ static MapAccessionModifications m_mapAccessionModifications;$/;" m class:pappso::AaModification m_mapDalton src/pappsomspp/precision.cpp /^PrecisionFactory::MapDaltonPrecision PrecisionFactory::m_mapDalton = [] {$/;" m class:pappso::PrecisionFactory file: m_mapDalton src/pappsomspp/precision.h /^ static MapDaltonPrecision m_mapDalton;$/;" m class:pappso::PrecisionFactory m_mapFramesRecord src/pappsomspp/vendors/tims/timsdata.h /^ std::vector m_mapFramesRecord;$/;" m class:pappso::TimsData m_mapIsotope src/pappsomspp/amino_acid/aamodification.h /^ std::map m_mapIsotope;$/;" m class:pappso::AaModification m_mapIsotope src/pappsomspp/peptide/peptidenaturalisotope.h /^ const std::map m_mapIsotope;$/;" m class:pappso::PeptideNaturalIsotope m_mapMzCalibrationRecord src/pappsomspp/vendors/tims/timsdata.h /^ std::map m_mapMzCalibrationRecord;$/;" m class:pappso::TimsData m_mapMzCalibrationSPtr src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.h /^ std::map m_mapMzCalibrationSPtr;$/;" m class:pappso::MzCalibrationStore m_mapPeptideToGroup src/pappsomspp/grouping/grpmappeptidetogroup.h /^ std::map m_mapPeptideToGroup;$/;" m class:pappso::GrpMapPeptideToGroup m_mapPeptideToSubGroupSet src/pappsomspp/grouping/grpgroup.h /^ GrpMapPeptideToSubGroupSet m_mapPeptideToSubGroupSet;$/;" m class:pappso::GrpGroup m_mapPeptideToSubGroupSet src/pappsomspp/grouping/grpmappeptidetosubgroupset.h /^ std::map m_mapPeptideToSubGroupSet;$/;" m class:pappso::GrpMapPeptideToSubGroupSet m_mapPeptides src/pappsomspp/grouping/grpexperiment.h /^ std::map> m_mapPeptides;$/;" m class:pappso::GrpExperiment m_mapPpm src/pappsomspp/precision.cpp /^PrecisionFactory::MapPpmPrecision PrecisionFactory::m_mapPpm = [] {$/;" m class:pappso::PrecisionFactory file: m_mapPpm src/pappsomspp/precision.h /^ static MapPpmPrecision m_mapPpm;$/;" m class:pappso::PrecisionFactory m_mapProteins src/pappsomspp/grouping/grpexperiment.h /^ std::map m_mapProteins;$/;" m class:pappso::GrpExperiment m_mapRes src/pappsomspp/precision.cpp /^PrecisionFactory::MapResPrecision PrecisionFactory::m_mapRes = [] {$/;" m class:pappso::PrecisionFactory file: m_mapRes src/pappsomspp/precision.h /^ static MapResPrecision m_mapRes;$/;" m class:pappso::PrecisionFactory m_mapTandemInputParameters src/pappsomspp/processing/tandemwrapper/wraptandemresults.h /^ std::map m_mapTandemInputParameters;$/;" m class:pappso::WrapTandemResults m_mapTimsCalibrationRecord src/pappsomspp/vendors/tims/timsdata.h /^ std::map m_mapTimsCalibrationRecord;$/;" m class:pappso::TimsData m_mapXicCoordRecord src/pappsomspp/vendors/tims/timsdata.h /^ std::map m_mapXicCoordRecord;$/;" m class:pappso::TimsData m_mass src/pappsomspp/amino_acid/aamodification.h /^ pappso_double m_mass;$/;" m class:pappso::AaModification m_mass src/pappsomspp/grouping/grppeptide.h /^ const pappso_double m_mass;$/;" m class:pappso::GrpPeptide m_mass src/pappsomspp/peptide/peptidefragment.h /^ pappso_double m_mass = 0;$/;" m class:pappso::PeptideFragment m_mass src/pappsomspp/peptide/peptidefragmention.h /^ pappso_double m_mass = 0;$/;" m class:pappso::PeptideFragmentIon m_mass src/pappsomspp/peptide/peptidenaturalisotope.h /^ pappso_double m_mass;$/;" m class:pappso::PeptideNaturalIsotope m_massRange src/pappsomspp/obo/filterobopsimodtermdiffmono.h /^ const MzRange m_massRange;$/;" m class:pappso::FilterOboPsiModTermDiffMono m_massSpectrumId src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ MassSpectrumId m_massSpectrumId;$/;" m class:pappso::QualifiedMassSpectrum m_matchedMzDiffMean src/pappsomspp/psm/features/psmfeatures.h /^ double m_matchedMzDiffMean = 0;$/;" m class:pappso::PsmFeatures m_matchedMzDiffMedian src/pappsomspp/psm/features/psmfeatures.h /^ double m_matchedMzDiffMedian = 0;$/;" m class:pappso::PsmFeatures m_matchedMzDiffSd src/pappsomspp/psm/features/psmfeatures.h /^ double m_matchedMzDiffSd = 0;$/;" m class:pappso::PsmFeatures m_max src/pappsomspp/processing/detection/tracepeak.h /^ DataPoint m_max;$/;" m class:pappso::TracePeak m_max src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_max;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_max src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^ quint32 m_max=600000;$/;" m class:pappso::MzCalibrationModel1Cached m_maxMin src/pappsomspp/processing/detection/tracedetectionzivy.h /^ FilterMorphoMaxMin m_maxMin;$/;" m class:pappso::TraceDetectionZivy m_maxMz src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ pappso::pappso_double m_maxMz = 0;$/;" m class:pappso::MsRunXicExtractorDisk m_maxMzRange src/pappsomspp/processing/filters/filtertriangle.h /^ double m_maxMzRange = 0;$/;" m class:pappso::FilterTriangle m_maxNumberMod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ unsigned int m_maxNumberMod = 30000;$/;" m class:pappso::PeptideVariableModificationBuilder m_maxPeptideVariantListSize src/pappsomspp/protein/enzyme.h /^ std::size_t m_maxPeptideVariantListSize = 100;$/;" m class:pappso::Enzyme m_maxSize src/pappsomspp/protein/peptidesizefilter.h /^ const int m_maxSize;$/;" m class:pappso::PeptideSizeFilter m_maxTandemRunTimeMs src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ int m_maxTandemRunTimeMs =$/;" m class:pappso::TandemWrapperRun m_maxX src/pappsomspp/processing/combiners/selectionpolygon.h /^ double m_maxX = std::numeric_limits::max();$/;" m class:pappso::PolygonType::SelectionPolygon m_maxX src/pappsomspp/processing/filters/filterresample.h /^ double m_maxX;$/;" m class:pappso::FilterResampleKeepXRange m_maxX src/pappsomspp/processing/filters/filterresample.h /^ double m_maxX;$/;" m class:pappso::FilterResampleRemoveXRange m_maxY src/pappsomspp/processing/combiners/selectionpolygon.h /^ double m_maxY = std::numeric_limits::max();$/;" m class:pappso::PolygonType::SelectionPolygon m_memoryBufferSize src/pappsomspp/vendors/tims/timsframerawdatachunck.h /^ qint64 m_memoryBufferSize = 0;$/;" m class:pappso::TimsFrameRawDataChunck m_message src/pappsomspp/pappsoexception.h /^ QString m_message; \/\/ Description of the error$/;" m class:pappso::PappsoException m_min src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_min;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_minIntPointCount src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ const std::size_t m_minIntPointCount = 5;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_minIntStdDevFactor src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ const std::size_t m_minIntStdDevFactor = 2;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_minMax src/pappsomspp/processing/detection/tracedetectionzivy.h /^ FilterMorphoMinMax m_minMax;$/;" m class:pappso::TraceDetectionZivy m_minMean src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_minMean;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_minMz src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ pappso::pappso_double m_minMz = 5000;$/;" m class:pappso::MsRunXicExtractorDisk m_minNumberMod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ unsigned int m_minNumberMod = 0;$/;" m class:pappso::PeptideVariableModificationBuilder m_minSize src/pappsomspp/protein/peptidesizefilter.h /^ const int m_minSize;$/;" m class:pappso::PeptideSizeFilter m_minStdDev src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_minStdDev;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_minX src/pappsomspp/processing/combiners/selectionpolygon.h /^ double m_minX = std::numeric_limits::min();$/;" m class:pappso::PolygonType::SelectionPolygon m_minX src/pappsomspp/processing/filters/filterresample.h /^ double m_minX;$/;" m class:pappso::FilterResampleKeepXRange m_minX src/pappsomspp/processing/filters/filterresample.h /^ double m_minX;$/;" m class:pappso::FilterResampleRemoveXRange m_minY src/pappsomspp/processing/combiners/selectionpolygon.h /^ double m_minY = std::numeric_limits::min();$/;" m class:pappso::PolygonType::SelectionPolygon m_miscleavage src/pappsomspp/protein/enzyme.h /^ unsigned int m_miscleavage = 0;$/;" m class:pappso::Enzyme m_mmap_scan2index src/pappsomspp/msrun/msrunreader.h /^ std::multimap m_mmap_scan2index;$/;" m class:pappso::MsRunReaderScanNumberMultiMap m_modificationCount src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ unsigned int m_modificationCount = 0;$/;" m class:pappso::PeptideVariableModificationBuilder m_monitor src/pappsomspp/msrun/output/mzxmloutput.h /^ UiMonitorInterface &m_monitor;$/;" m class:pappso::MzxmlOutput m_mouseButtonsAtMousePress src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ Qt::MouseButtons m_mouseButtonsAtMousePress;$/;" m class:pappso::DragDirections::BasePlotContext m_mouseButtonsAtMouseRelease src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ Qt::MouseButtons m_mouseButtonsAtMouseRelease;$/;" m class:pappso::DragDirections::BasePlotContext m_mouseMoveHandlerSkipAmount src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ int m_mouseMoveHandlerSkipAmount = 10;$/;" m class:pappso::BasePlotWidget m_mouseMoveHandlerSkipCount src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ int m_mouseMoveHandlerSkipCount = 0;$/;" m class:pappso::BasePlotWidget m_ms1IsMasked src/pappsomspp/msrun/output/mzxmloutput.h /^ bool m_ms1IsMasked = false;$/;" m class:pappso::MzxmlOutput m_ms1MeanFilter src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ FilterMorphoMean m_ms1MeanFilter;$/;" m class:pappso::MsRunRetentionTime m_ms1RetentionTimeVector src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ std::vector m_ms1RetentionTimeVector;$/;" m class:pappso::MsRunRetentionTime m_ms2MeanFilter src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ FilterMorphoMean m_ms2MeanFilter;$/;" m class:pappso::MsRunRetentionTime m_ms2MedianFilter src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ FilterMorphoMedian m_ms2MedianFilter;$/;" m class:pappso::MsRunRetentionTime m_ms2precision src/pappsomspp/psm/features/psmfeatures.h /^ PrecisionPtr m_ms2precision;$/;" m class:pappso::PsmFeatures m_ms2precisionUnit src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h /^ PrecisionUnit m_ms2precisionUnit = PrecisionUnit::dalton;$/;" m class:pappso::XtandemPresetReader m_ms2precisionValue src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h /^ double m_ms2precisionValue = 0;$/;" m class:pappso::XtandemPresetReader m_msDataPtrVector src/pappsomspp/msfile/pwizmsfilereader.h /^ std::vector m_msDataPtrVector;$/;" m class:pappso::PwizMsFileReader m_msLevel src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ unsigned int m_msLevel = 0;$/;" m class:pappso::QualifiedMassSpectrum m_msMsType src/pappsomspp/vendors/tims/timsframebase.h /^ quint8 m_msMsType = 0;$/;" m class:pappso::TimsFrameBase m_msRunId src/pappsomspp/xic/qualifiedxic.h /^ const MsRunId m_msRunId;$/;" m class:pappso::QualifiedXic m_msRunSliceListCache src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ std::deque m_msRunSliceListCache;$/;" m class:pappso::MsRunXicExtractorDisk m_msrun_points src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ std::vector &m_msrun_points;$/;" m class:pappso::MsRunXicExtractor::MsRunXicExtractorReadPoints m_msrun_points src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ std::vector m_msrun_points;$/;" m class:pappso::MsRunXicExtractor m_mutex src/pappsomspp/amino_acid/aamodification.cpp /^QMutex AaModification::m_mutex;$/;" m class:pappso::AaModification file: m_mutex src/pappsomspp/amino_acid/aamodification.h /^ static QMutex m_mutex;$/;" m class:pappso::AaModification m_mutex src/pappsomspp/vendors/tims/timsdata.h /^ QMutex m_mutex;$/;" m class:pappso::TimsData m_mutex src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ QMutex m_mutex;$/;" m class:pappso::MsRunXicExtractorDisk m_mz src/pappsomspp/mzrange.h /^ pappso_double m_mz;$/;" m class:pappso::MzRange m_mz src/pappsomspp/xic/qualifiedxic.h /^ pappso_double m_mz;$/;" m class:pappso::QualifiedXic m_mzCalibrationArr src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h /^ std::vector m_mzCalibrationArr;$/;" m class:pappso::MzCalibrationInterface m_mzFormat src/pappsomspp/msrun/msrunid.h /^ MzFormat m_mzFormat = MzFormat::mzXML;$/;" m class:pappso::MsRunId m_mzFormat src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ pappso::MzFormat m_mzFormat = pappso::MzFormat::unknown;$/;" m class:pappso::TandemWrapperRun m_mzShift src/pappsomspp/processing/combiners/mzintegrationparams.h /^ pappso::pappso_double m_mzShift = 0;$/;" m class:pappso::MzIntegrationParams m_mzTarget src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h /^ double m_mzTarget = 0;$/;" m class:pappso::OboListProxyModel m_n_most_intense src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ FilterGreatestY m_n_most_intense;$/;" m class:pappso::XtandemSpectrumProcess m_name src/pappsomspp/amino_acid/aamodification.h /^ QString m_name;$/;" m class:pappso::AaModification m_name src/pappsomspp/obo/obopsimodterm.h /^ QString m_name;$/;" m class:pappso::OboPsiModTerm m_name src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QString m_name = "NOT_SET";$/;" m class:pappso::BasePlotWidget m_nameMatch src/pappsomspp/obo/filterobopsimodtermname.h /^ QRegularExpression m_nameMatch;$/;" m class:pappso::FilterOboPsiModTermName m_nativeId src/pappsomspp/massspectrum/massspectrumid.h /^ QString m_nativeId;$/;" m class:pappso::MassSpectrumId m_needPeakListByMsLevel src/pappsomspp/msrun/msrunreader.h /^ std::vector m_needPeakListByMsLevel = {true,$/;" m class:pappso::SpectrumCollectionHandlerInterface m_neutralLossMass src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ pappso::pappso_double m_neutralLossMass = MASSH2O;$/;" m class:pappso::XtandemSpectrumProcess m_neutralLossWindowDalton src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^ pappso::pappso_double m_neutralLossWindowDalton = 0.5;$/;" m class:pappso::XtandemSpectrumProcess m_neutralPhosphoLossNumber src/pappsomspp/peptide/peptidefragmention.h /^ unsigned int m_neutralPhosphoLossNumber = 0;$/;" m class:pappso::PeptideFragmentIon m_noiseLevel src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_noiseLevel;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_noiseMean src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_noiseMean;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_noiseStdDev src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_noiseStdDev;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_nominal src/pappsomspp/precision.h /^ const pappso_double m_nominal;$/;" m class:pappso::PrecisionBase m_nterCterCleavage src/pappsomspp/peptide/peptidefragment.h /^ AaModificationP m_nterCterCleavage;$/;" m class:pappso::PeptideFragment m_numberOfPoints src/pappsomspp/processing/filters/filterpass.h /^ std::size_t m_numberOfPoints = 0;$/;" m class:pappso::FilterGreatestY m_numberOfPoints src/pappsomspp/processing/filters/filterpass.h /^ std::size_t m_numberOfPoints = 0;$/;" m class:pappso::FilterGreatestYperWindow m_oboPsiModTerm src/pappsomspp/widget/obo/obotermform/obotermform.h /^ OboPsiModTerm m_oboPsiModTerm;$/;" m class:pappso::OboTermForm m_oboPsiModTermList src/pappsomspp/obo/filterobopsimodsink.h /^ std::list m_oboPsiModTermList;$/;" m class:pappso::FilterOboPsiModSink m_oboPsiModTermList src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^ std::vector m_oboPsiModTermList;$/;" m class:pappso::OboListModel m_ofastastream src/pappsomspp/fasta/fastaoutputstream.h /^ QTextStream &m_ofastastream;$/;" m class:pappso::FastaOutputStream m_oldIndex src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ int m_oldIndex;$/;" m class:pappso::PrecisionWidget m_origin src/pappsomspp/amino_acid/aamodification.h /^ QString m_origin;$/;" m class:pappso::AaModification m_origin src/pappsomspp/obo/obopsimodterm.h /^ QString m_origin;$/;" m class:pappso::OboPsiModTerm m_originMzDataFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QString m_originMzDataFileName;$/;" m class:pappso::WrapTandemInput m_originTandemOutpuFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QString m_originTandemOutpuFileName;$/;" m class:pappso::WrapTandemInput m_originTandemPresetFileName src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QString m_originTandemPresetFileName;$/;" m class:pappso::WrapTandemInput m_originalMsDataFileName src/pappsomspp/processing/tandemwrapper/wraptandemresults.h /^ QString m_originalMsDataFileName;$/;" m class:pappso::WrapTandemResults m_outputStream src/pappsomspp/processing/uimonitor/uimonitortext.h /^ QTextStream &m_outputStream;$/;" m class:pappso::UiMonitorText m_params src/pappsomspp/processing/filters/savgolfilter.h /^ SavGolParams m_params;$/;" m class:pappso::FilterSavitzkyGolay m_paramsMap src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ std::map m_paramsMap;$/;" m class:pappso::QualifiedMassSpectrum m_parentCharge src/pappsomspp/psm/features/psmfeatures.h /^ unsigned int m_parentCharge = 1;$/;" m class:pappso::PsmFeatures m_passY src/pappsomspp/processing/filters/filterpass.h /^ double m_passY = 0;$/;" m class:pappso::FilterHighPass m_passY src/pappsomspp/processing/filters/filterpass.h /^ double m_passY = 0;$/;" m class:pappso::FilterLowPass m_pattern src/pappsomspp/protein/peptidemodificatorbase.h /^ QRegularExpression m_pattern;$/;" m class:pappso::PeptideModificatorBase m_peakIonPairs src/pappsomspp/psm/features/psmfeatures.h /^ m_peakIonPairs;$/;" m class:pappso::PsmFeatures m_pen src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QPen m_pen;$/;" m class:pappso::BasePlotWidget m_pepModificatorPtrList src/pappsomspp/protein/peptidemodificatorpipeline.h /^ std::vector m_pepModificatorPtrList;$/;" m class:pappso::PeptideModificatorPipeline m_peptide src/pappsomspp/peptide/peptidenaturalisotope.h /^ const PeptideInterfaceSp m_peptide;$/;" m class:pappso::PeptideNaturalIsotope m_peptideId tests/test_msrunalignment.cpp /^ QString m_peptideId;$/;" m class:PeptideTableHandler file: m_peptideModPtrList src/pappsomspp/protein/peptidemodificatortee.h /^ std::list m_peptideModPtrList;$/;" m class:pappso::PeptideModificatorTee m_peptideNaturalIsotopeSpList src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ std::vector m_peptideNaturalIsotopeSpList;$/;" m class:pappso::PeptideNaturalIsotopeAverage m_peptidePtrList src/pappsomspp/grouping/grppeptideset.h /^ std::list m_peptidePtrList;$/;" m class:pappso::GrpPeptideSet m_peptidePtrList src/pappsomspp/grouping/grpsubgroup.h /^ GrpPeptideSet m_peptidePtrList;$/;" m class:pappso::GrpSubGroup m_peptideSet src/pappsomspp/grouping/grpgroup.h /^ GrpPeptideSet m_peptideSet;$/;" m class:pappso::GrpGroup m_percentage src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^ double m_percentage;$/;" m class:pappso::FilterCeilingAmplitudePercentage m_percentage src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^ double m_percentage;$/;" m class:pappso::FilterFloorAmplitudePercentage m_phosphorylationNumber src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ unsigned int m_phosphorylationNumber;$/;" m class:pappso::PeptideFragmentIonListBase m_points src/pappsomspp/processing/combiners/selectionpolygon.h /^ std::vector m_points = {QPointF(std::numeric_limits::min(),$/;" m class:pappso::PolygonType::SelectionPolygon m_precisionPtr src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^ PrecisionPtr m_precisionPtr;$/;" m class:pappso::FilterComplementIonEnhancer m_precisionPtr src/pappsomspp/processing/filters/filterremovec13.h /^ PrecisionPtr m_precisionPtr;$/;" m class:pappso::FilterRemoveC13 m_precisionPtr src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h /^ PrecisionPtr m_precisionPtr = nullptr;$/;" m class:pappso::OboListProxyModel m_precisionPtrZ1 src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ PrecisionPtr m_precisionPtrZ1;$/;" m class:pappso::FilterChargeDeconvolution m_precisionPtrZ2 src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ PrecisionPtr m_precisionPtrZ2;$/;" m class:pappso::FilterChargeDeconvolution m_precursorIonData src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ std::vector m_precursorIonData;$/;" m class:pappso::QualifiedMassSpectrum m_precursorNativeId src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ QString m_precursorNativeId;$/;" m class:pappso::QualifiedMassSpectrum m_precursorSpectrumIndex src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ std::size_t m_precursorSpectrumIndex =$/;" m class:pappso::QualifiedMassSpectrum m_precursorTheoreticalMass src/pappsomspp/psm/features/psmfeatures.h /^ double m_precursorTheoreticalMass;$/;" m class:pappso::PsmFeatures m_precursorTheoreticalMz src/pappsomspp/psm/features/psmfeatures.h /^ double m_precursorTheoreticalMz;$/;" m class:pappso::PsmFeatures m_preferedFileReaderTypeMap src/pappsomspp/msfile/msfileaccessor.h /^ std::map m_preferedFileReaderTypeMap;$/;" m class:pappso::MsFileAccessor m_pressedKeyCode src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ int m_pressedKeyCode;$/;" m class:pappso::DragDirections::BasePlotContext m_pressedMouseButtons src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ Qt::MouseButtons m_pressedMouseButtons;$/;" m class:pappso::DragDirections::BasePlotContext m_prevIter src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ TraceCIter m_prevIter = static_cast(0);$/;" m class:pappso::FilterLowIntensitySignalRemoval m_protoHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ pappso_double m_protoHyperscore;$/;" m class:pappso::XtandemHyperscoreBis m_proxyMass src/pappsomspp/peptide/peptide.h /^ pappso_double m_proxyMass = -1;$/;" m class:pappso::PeptideDirection::Peptide m_psiModLabel src/pappsomspp/obo/obopsimodterm.h /^ QString m_psiModLabel;$/;" m class:pappso::OboPsiModTerm m_psiMsLabel src/pappsomspp/obo/obopsimodterm.h /^ QString m_psiMsLabel;$/;" m class:pappso::OboPsiModTerm m_quantile src/pappsomspp/processing/filters/filterpass.h /^ double m_quantile = 0;$/;" m class:pappso::FilterQuantileBasedRemoveY m_qxmlStreamReader src/pappsomspp/processing/xml/xmlstreamreaderinterface.h /^ QXmlStreamReader m_qxmlStreamReader;$/;" m class:pappso::XmlStreamReaderInterface m_randemAccessFrameRawDataChunck src/pappsomspp/vendors/tims/timsbindec.h /^ TimsFrameRawDataChunck m_randemAccessFrameRawDataChunck;$/;" m class:pappso::TimsBinDec m_rank src/pappsomspp/grouping/grppeptide.h /^ unsigned int m_rank = 0;$/;" m class:pappso::GrpPeptide m_rank src/pappsomspp/grouping/grpprotein.h /^ unsigned int m_rank = 0;$/;" m class:pappso::GrpProtein m_ratio src/pappsomspp/peptide/peptidenaturalisotope.h /^ pappso_double m_ratio;$/;" m class:pappso::PeptideNaturalIsotope m_ratioPassY src/pappsomspp/processing/filters/filterpass.h /^ double m_ratioPassY = 0;$/;" m class:pappso::FilterHighPassPercentage m_recognitionSite src/pappsomspp/protein/enzyme.h /^ QRegularExpression m_recognitionSite;$/;" m class:pappso::Enzyme m_releasedKeyCode src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ int m_releasedKeyCode;$/;" m class:pappso::DragDirections::BasePlotContext m_remainingGrpProteinList src/pappsomspp/grouping/grpexperiment.h /^ std::list m_remainingGrpProteinList;$/;" m class:pappso::GrpExperiment m_removeTranslationStopRegExp src/pappsomspp/protein/protein.h /^ static QRegularExpression m_removeTranslationStopRegExp;$/;" m class:pappso::Protein m_removeZeroValDataPoints src/pappsomspp/processing/combiners/mzintegrationparams.h /^ bool m_removeZeroValDataPoints = true;$/;" m class:pappso::MzIntegrationParams m_retentionTimeAroundTarget src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^ double m_retentionTimeAroundTarget = std::numeric_limits::max();$/;" m class:pappso::MsRunXicExtractorInterface m_retentionTimeList src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ std::vector m_retentionTimeList;$/;" m class:pappso::MsRunXicExtractorDisk m_retentionTimeReferenceMethod src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ ComputeRetentionTimeReference m_retentionTimeReferenceMethod =$/;" m class:pappso::MsRunRetentionTime m_retention_time_list src/pappsomspp/msrun/msrunreader.h /^ std::vector m_retention_time_list;$/;" m class:pappso::MsRunReaderRetentionTimeLine m_right src/pappsomspp/processing/detection/tracepeak.h /^ DataPoint m_right;$/;" m class:pappso::TracePeak m_rightMousePseudoButtonKey src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ int m_rightMousePseudoButtonKey = Qt::Key_Greater;$/;" m class:pappso::BasePlotWidget m_rootNodes src/pappsomspp/msrun/msrundatasettree.h /^ std::vector m_rootNodes;$/;" m class:pappso::MsRunDataSetTree m_rt src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ pappso_double m_rt = -1;$/;" m class:pappso::QualifiedMassSpectrum m_rt1 tests/test_msrunalignment.cpp /^ pappso::MsRunRetentionTime &m_rt1;$/;" m class:PeptideTableHandler file: m_rt2 tests/test_msrunalignment.cpp /^ pappso::MsRunRetentionTime &m_rt2;$/;" m class:PeptideTableHandler file: m_rtDoubleNodeVectorMap src/pappsomspp/msrun/msrundatasettree.h /^ DoubleNodeVectorMap m_rtDoubleNodeVectorMap;$/;" m class:pappso::MsRunDataSetTree m_rtSize src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ std::size_t m_rtSize = 0;$/;" m class:pappso::MsRunXicExtractorDisk m_runId src/pappsomspp/msrun/msrunid.h /^ QString m_runId;$/;" m class:pappso::MsRunId m_sample tests/test_msrunalignment.cpp /^ QString m_sample;$/;" m class:PeptideTableHandler file: m_sampleName src/pappsomspp/msrun/msrunid.h /^ QString m_sampleName;$/;" m class:pappso::MsRunId m_scan tests/test_msrunalignment.cpp /^ std::size_t m_scan;$/;" m class:PeptideTableHandler file: m_scanNumber src/pappsomspp/vendors/tims/timsframebase.h /^ quint32 m_scanNumber;$/;" m class:pappso::TimsFrameBase m_scanOffsetList src/pappsomspp/vendors/tims/timsframetype1.h /^ std::vector m_scanOffsetList;$/;" m class:pappso::TimsFrameType1 m_scanSizeList src/pappsomspp/vendors/tims/timsframetype1.h /^ std::vector m_scanSizeList;$/;" m class:pappso::TimsFrameType1 m_seamarks src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ std::vector> m_seamarks;$/;" m class:pappso::MsRunRetentionTime m_seen_upward_phase src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ bool m_seen_upward_phase = false;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_selectRectangleWidth src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ double m_selectRectangleWidth = 0;$/;" m class:pappso::DragDirections::BasePlotContext m_selectionPolygon src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ SelectionPolygon m_selectionPolygon;$/;" m class:pappso::DragDirections::BasePlotContext m_selectionPolygonSpecs src/pappsomspp/processing/filters/filterresample.h /^ std::vector m_selectionPolygonSpecs;$/;" m class:pappso::FilterResampleKeepPointInPolygon m_sequence src/pappsomspp/grouping/grppeptide.h /^ const QString m_sequence;$/;" m class:pappso::GrpPeptide m_sequence src/pappsomspp/protein/protein.h /^ QString m_sequence;$/;" m class:pappso::Protein m_sequenceLi tests/test_msrunalignment.cpp /^ QString m_sequenceLi;$/;" m class:PeptideTableHandler file: m_shouldTracersBeVisible src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ bool m_shouldTracersBeVisible = true;$/;" m class:pappso::BasePlotWidget m_sink src/pappsomspp/obo/filterobopsimodtermaccession.h /^ OboPsiModHandlerInterface &m_sink;$/;" m class:pappso::FilterOboPsiModTermAccession m_sink src/pappsomspp/obo/filterobopsimodtermdiffmono.h /^ OboPsiModHandlerInterface &m_sink;$/;" m class:pappso::FilterOboPsiModTermDiffMono m_sink src/pappsomspp/obo/filterobopsimodtermlabel.h /^ OboPsiModHandlerInterface &m_sink;$/;" m class:pappso::FilterOboPsiModTermLabel m_sink src/pappsomspp/obo/filterobopsimodtermname.h /^ OboPsiModHandlerInterface &m_sink;$/;" m class:pappso::FilterOboPsiModTermName m_sink src/pappsomspp/protein/peptidebuilder.h /^ PeptideModificatorInterface *m_sink = nullptr;$/;" m class:pappso::PeptideBuilder m_sink src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ PeptideModificatorInterface *m_sink = nullptr;$/;" m class:pappso::PeptideFixedModificationBuilder m_sink src/pappsomspp/protein/peptidemethioninremove.h /^ EnzymeProductInterface *m_sink = nullptr;$/;" m class:pappso::PeptideMethioninRemove m_sink src/pappsomspp/protein/peptidemodificatorpipeline.h /^ PeptideModificatorInterface *m_sink = nullptr;$/;" m class:pappso::PeptideModificatorPipeline m_sink src/pappsomspp/protein/peptidesemienzyme.h /^ EnzymeProductInterface *m_sink = nullptr;$/;" m class:pappso::PeptideSemiEnzyme m_sink src/pappsomspp/protein/peptidesizefilter.h /^ EnzymeProductInterface *m_sink = nullptr;$/;" m class:pappso::PeptideSizeFilter m_sink src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ PeptideModificatorInterface *m_sink = nullptr;$/;" m class:pappso::PeptideVariableModificationBuilder m_size src/pappsomspp/peptide/peptidefragment.h /^ const unsigned int m_size = 0;$/;" m class:pappso::PeptideFragment m_size src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t m_size; \/\/ frame size (number of TOF scans in frame)$/;" m struct:pappso::TimsData::FrameIdDescr m_sliceBufferMap src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h /^ std::map m_sliceBufferMap;$/;" m class:pappso::MsRunXicExtractorDiskBuffer m_sliceNumber src/pappsomspp/xicextractor/private/msrunslice.h /^ unsigned int m_sliceNumber = 0;$/;" m class:pappso::MsRunSlice m_smallestMz src/pappsomspp/processing/combiners/mzintegrationparams.h /^ pappso::pappso_double m_smallestMz = std::numeric_limits::max();$/;" m class:pappso::MzIntegrationParams m_smooth src/pappsomspp/processing/detection/tracedetectionzivy.h /^ FilterMorphoMean m_smooth;$/;" m class:pappso::TraceDetectionZivy m_someoneIsLoadingFrameId src/pappsomspp/vendors/tims/timsdata.h /^ std::vector m_someoneIsLoadingFrameId;$/;" m class:pappso::TimsData m_spectrumCount src/pappsomspp/msrun/msrundatasettree.h /^ std::size_t m_spectrumCount = std::numeric_limits::min();$/;" m class:pappso::MsRunDataSetTree m_spectrumIndex src/pappsomspp/massspectrum/massspectrumid.h /^ std::size_t m_spectrumIndex = std::numeric_limits::max();$/;" m class:pappso::MassSpectrumId m_spectrumList src/pappsomspp/xicextractor/private/msrunslice.h /^ std::vector m_spectrumList;$/;" m class:pappso::MsRunSlice m_spectrumSumIntensity src/pappsomspp/psm/features/psmfeatures.h /^ double m_spectrumSumIntensity;$/;" m class:pappso::PsmFeatures m_startDragPoint src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ QPointF m_startDragPoint;$/;" m class:pappso::DragDirections::BasePlotContext m_stdMessage src/pappsomspp/pappsoexception.h /^ std::string m_stdMessage;$/;" m class:pappso::PappsoException m_subGroupList src/pappsomspp/grouping/grpgroup.h /^ std::list m_subGroupList;$/;" m class:pappso::GrpGroup m_subGroupNumber src/pappsomspp/grouping/grpprotein.h /^ unsigned int m_subGroupNumber = 0;$/;" m class:pappso::GrpProtein m_subGroupNumber src/pappsomspp/grouping/grpsubgroup.h /^ unsigned int m_subGroupNumber = 0;$/;" m class:pappso::GrpSubGroup m_switchButtonValue src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.h /^ bool m_switchButtonValue = false;$/;" m class:pappso::SwitchWidget m_takeOnlyFirstWildcard src/pappsomspp/protein/enzyme.h /^ bool m_takeOnlyFirstWildcard = false;$/;" m class:pappso::Enzyme m_tandemBinary src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ QString m_tandemBinary;$/;" m class:pappso::TandemWrapperRun m_tandemVersion src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ QString m_tandemVersion;$/;" m class:pappso::TandemWrapperRun m_targetMzSum src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^ double m_targetMzSum;$/;" m class:pappso::FilterComplementIonEnhancer m_temporaryDirectory src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ QString m_temporaryDirectory;$/;" m class:pappso::MsRunXicExtractorDisk m_term src/pappsomspp/obo/obopsimod.h /^ OboPsiModTerm m_term;$/;" m class:pappso::OboPsiMod m_thousandIndexToFrameIdDescrListIndex src/pappsomspp/vendors/tims/timsdata.h /^ std::map m_thousandIndexToFrameIdDescrListIndex;$/;" m class:pappso::TimsData m_threads src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h /^ int m_threads = -1;$/;" m class:pappso::XtandemPresetReader m_threshold src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ double m_threshold;$/;" m class:pappso::FilterLowIntensitySignalRemoval m_ticChromMapTrace src/pappsomspp/msrun/msrunreader.h /^ MapTrace m_ticChromMapTrace;$/;" m class:pappso::MsRunReaderTicChromatogram m_ticStart src/pappsomspp/processing/detection/tracedetectionmoulon.h /^ pappso_double m_ticStart;$/;" m class:pappso::TraceDetectionMoulon m_ticStop src/pappsomspp/processing/detection/tracedetectionmoulon.h /^ pappso_double m_ticStop;$/;" m class:pappso::TraceDetectionMoulon m_time src/pappsomspp/vendors/tims/timsframebase.h /^ double m_time = 0;$/;" m class:pappso::TimsFrameBase m_timsBinFile src/pappsomspp/vendors/tims/timsbindec.h /^ QString m_timsBinFile;$/;" m class:pappso::TimsBinDec m_timsC6 src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsC6 = 0;$/;" m class:pappso::TimsFrameBase m_timsC7 src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsC7 = 0;$/;" m class:pappso::TimsFrameBase m_timsCompressionType src/pappsomspp/vendors/tims/timsbindec.h /^ int m_timsCompressionType;$/;" m class:pappso::TimsBinDec m_timsDataDirectory src/pappsomspp/vendors/tims/timsdata.h /^ QDir m_timsDataDirectory;$/;" m class:pappso::TimsData m_timsDataFrame src/pappsomspp/vendors/tims/timsframe.h /^ QByteArray m_timsDataFrame;$/;" m class:pappso::TimsFrame m_timsDvStart src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsDvStart = 0; \/\/ C2 from TimsCalibration$/;" m class:pappso::TimsFrameBase m_timsFrameBaseCache src/pappsomspp/vendors/tims/timsdata.h /^ std::deque m_timsFrameBaseCache;$/;" m class:pappso::TimsData m_timsFrameCache src/pappsomspp/vendors/tims/timsdata.h /^ std::deque m_timsFrameCache;$/;" m class:pappso::TimsData m_timsId src/pappsomspp/vendors/tims/timsframebase.h /^ std::size_t m_timsId;$/;" m class:pappso::TimsFrameBase m_timsNdelay src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsNdelay = 0; \/\/ C0 from TimsCalibration$/;" m class:pappso::TimsFrameBase m_timsSlope src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsSlope =$/;" m class:pappso::TimsFrameBase m_timsTtrans src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsTtrans = 0; \/\/ C4 from TimsCalibration$/;" m class:pappso::TimsFrameBase m_timsVmax src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsVmax = 0; \/\/ C9 from TimsCalibration$/;" m class:pappso::TimsFrameBase m_timsVmin src/pappsomspp/vendors/tims/timsframebase.h /^ double m_timsVmin = 0; \/\/ C8 from TimsCalibration$/;" m class:pappso::TimsFrameBase m_tmpDir src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ QString m_tmpDir;$/;" m class:pappso::TandemWrapperRun m_tmpDirName src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^ QString m_tmpDirName;$/;" m class:pappso::MsRunXicExtractorFactory m_totalMatchedIons src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ unsigned int m_totalMatchedIons = 0;$/;" m class:pappso::XtandemHyperscoreBis m_totalNumberOfFrames src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t m_totalNumberOfFrames;$/;" m class:pappso::TimsData m_totalNumberOfPrecursors src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t m_totalNumberOfPrecursors;$/;" m class:pappso::TimsData m_totalNumberOfScans src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t m_totalNumberOfScans;$/;" m class:pappso::TimsData m_totalNumberPeptide src/pappsomspp/grouping/grpgroupingmonitor.h /^ std::size_t m_totalNumberPeptide;$/;" m class:pappso::GrpGroupingMonitor m_totalNumberProtein src/pappsomspp/grouping/grpgroupingmonitor.h /^ std::size_t m_totalNumberProtein;$/;" m class:pappso::GrpGroupingMonitor m_totalSteps src/pappsomspp/processing/uimonitor/uimonitorinterface.h /^ std::size_t m_totalSteps = 0;$/;" m class:pappso::UiMonitorInterface m_triangleSlope src/pappsomspp/processing/filters/filtertriangle.h /^ double m_triangleSlope;$/;" m class:pappso::FilterTriangle m_type src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^ MsRunXicExtractorFactoryType m_type = MsRunXicExtractorFactoryType::nose;$/;" m class:pappso::MsRunXicExtractorFactory m_unfocusedBrush src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QBrush m_unfocusedBrush = QBrush(m_unfocusedColor);$/;" m class:pappso::BasePlotWidget m_unfocusedColor src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QColor m_unfocusedColor = QColor("lightgray");$/;" m class:pappso::BasePlotWidget m_unit src/pappsomspp/processing/uimonitor/uimonitortextpercent.h /^ int m_unit;$/;" m class:pappso::UiMonitorTextPercent m_value src/pappsomspp/processing/filters/filterresample.h /^ double m_value;$/;" m class:pappso::FilterResampleKeepGreater m_value src/pappsomspp/processing/filters/filterresample.h /^ double m_value;$/;" m class:pappso::FilterResampleKeepSmaller m_valueToRemove src/pappsomspp/processing/filters/filterpass.h /^ double m_valueToRemove = 0;$/;" m class:pappso::FilterRemoveY m_valuesCorrected src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ std::size_t m_valuesCorrected = 0;$/;" m class:pappso::MsRunRetentionTime m_wasClickOnXAxis src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_wasClickOnXAxis = false;$/;" m class:pappso::DragDirections::BasePlotContext m_wasClickOnYAxis src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_wasClickOnYAxis = false;$/;" m class:pappso::DragDirections::BasePlotContext m_wasMouseDragging src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_wasMouseDragging = false;$/;" m class:pappso::DragDirections::BasePlotContext m_wassKeyBoardDragging src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ bool m_wassKeyBoardDragging = false;$/;" m class:pappso::DragDirections::BasePlotContext m_wildCardB src/pappsomspp/protein/enzyme.h /^ std::vector m_wildCardB;$/;" m class:pappso::Enzyme m_wildCardX src/pappsomspp/protein/enzyme.h /^ std::vector m_wildCardX;$/;" m class:pappso::Enzyme m_wildCardZ src/pappsomspp/protein/enzyme.h /^ std::vector m_wildCardZ;$/;" m class:pappso::Enzyme m_writerXmlTandemInput src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ QXmlStreamWriter m_writerXmlTandemInput;$/;" m class:pappso::WrapTandemInput m_writerXmlTandemOutput src/pappsomspp/processing/tandemwrapper/wraptandemresults.h /^ QXmlStreamWriter m_writerXmlTandemOutput;$/;" m class:pappso::WrapTandemResults m_x src/pappsomspp/processing/filters/savgolfilter.h /^ pappso_double *m_x;$/;" m class:pappso::FilterSavitzkyGolay m_xAxisRangeHistory src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ std::vector m_xAxisRangeHistory;$/;" m class:pappso::BasePlotWidget m_xDelta src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ double m_xDelta = 0;$/;" m class:pappso::DragDirections::BasePlotContext m_xRange src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ QCPRange m_xRange;$/;" m class:pappso::DragDirections::BasePlotContext m_xRegionRangeEnd src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ double m_xRegionRangeEnd = std::numeric_limits::min();$/;" m class:pappso::DragDirections::BasePlotContext m_xRegionRangeStart src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ double m_xRegionRangeStart = std::numeric_limits::min();$/;" m class:pappso::DragDirections::BasePlotContext m_xWindowRange src/pappsomspp/processing/filters/filterpass.h /^ double m_xWindowRange = 1;$/;" m class:pappso::FilterGreatestYperWindow m_xicExtractMethod src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^ XicExtractMethod m_xicExtractMethod = XicExtractMethod::max;$/;" m class:pappso::MsRunXicExtractorInterface m_xicFilterSmoothing src/pappsomspp/processing/detection/tracedetectionmoulon.h /^ FilterMorphoMean m_xicFilterSmoothing;$/;" m class:pappso::TraceDetectionMoulon m_xmlId src/pappsomspp/msrun/msrunid.h /^ QString m_xmlId; \/* a1.... *\/$/;" m class:pappso::MsRunId m_xmlPrefix src/pappsomspp/msfile/msfileaccessor.h /^ const QString m_xmlPrefix;$/;" m class:pappso::MsFileAccessor m_xtProcess src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ QProcess *m_xtProcess = nullptr;$/;" m class:pappso::TandemWrapperRun m_yAxisRangeHistory src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ std::vector m_yAxisRangeHistory;$/;" m class:pappso::BasePlotWidget m_yDelta src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ double m_yDelta = 0;$/;" m class:pappso::DragDirections::BasePlotContext m_yRange src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ QCPRange m_yRange;$/;" m class:pappso::DragDirections::BasePlotContext m_yRegionRangeEnd src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ double m_yRegionRangeEnd = std::numeric_limits::min();$/;" m class:pappso::DragDirections::BasePlotContext m_yRegionRangeStart src/pappsomspp/widget/plotwidget/baseplotcontext.h /^ double m_yRegionRangeStart = std::numeric_limits::min();$/;" m class:pappso::DragDirections::BasePlotContext m_yf src/pappsomspp/processing/filters/savgolfilter.h /^ pappso_double *m_yf;$/;" m class:pappso::FilterSavitzkyGolay m_yr src/pappsomspp/processing/filters/savgolfilter.h /^ pappso_double *m_yr;$/;" m class:pappso::FilterSavitzkyGolay m_z src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ unsigned int m_z;$/;" m class:pappso::PeptideNaturalIsotopeAverage m_z src/pappsomspp/xic/xicpeptideinterface.h /^ const unsigned int m_z;$/;" m class:pappso::XicPeptideInterface main src/testwin64/test.cpp /^main(int argc, const char **argv)$/;" f main tests/test_big_hyperscore.cpp /^main()$/;" f main tests/test_fragmentationcid.cpp /^main()$/;" f main tests/test_massrange.cpp /^main()$/;" f main tests/test_natural_isotope_average.cpp /^main()$/;" f main tests/test_peptidefragment.cpp /^main()$/;" f main tests/test_peptidenaturalisotopelist.cpp /^main()$/;" f main tests/test_rawmasslist.cpp /^main()$/;" f main tests/test_xicextractor.cpp /^main([[maybe_unused]] int argc, [[maybe_unused]] char *argv[])$/;" f main tests/widget/main.cpp /^main(int argc, char *argv[])$/;" f mainDir maintainer-scripts/makeOrigTarball.py /^mainDir = os.path.normpath(os.getcwd() + "\/..");$/;" v makeDataPointCstSPtr src/pappsomspp/trace/datapoint.cpp /^DataPoint::makeDataPointCstSPtr() const$/;" f class:pappso::DataPoint makeFastaFileIndexerSPtr src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::makeFastaFileIndexerSPtr() const$/;" f class:pappso::FastaFileIndexer makeGrpGroupSp src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::makeGrpGroupSp()$/;" f class:GrpGroup makeGrpSubGroupSp src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::makeGrpSubGroupSp()$/;" f class:pappso::GrpSubGroup makeMapTraceCstSPtr src/pappsomspp/trace/maptrace.cpp /^MapTrace::makeMapTraceCstSPtr() const$/;" f class:pappso::MapTrace makeMapTraceSPtr src/pappsomspp/trace/maptrace.cpp /^MapTrace::makeMapTraceSPtr() const$/;" f class:pappso::MapTrace makeMassSpectrumCstSPtr src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::makeMassSpectrumCstSPtr() const$/;" f class:pappso::MassSpectrum makeMassSpectrumSPtr src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::makeMassSpectrumSPtr() const$/;" f class:pappso::MassSpectrum makeMsRunSliceSp src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::makeMsRunSliceSp() const$/;" f class:pappso::MsRunSlice makeNoConstPeptideSp src/pappsomspp/peptide/peptide.cpp /^Peptide::makeNoConstPeptideSp() const$/;" f class:pappso::Peptide makePeptideFragmentIonListBaseSp src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::makePeptideFragmentIonListBaseSp() const$/;" f class:pappso::PeptideFragmentIonListBase makePeptideFragmentIonSp src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::makePeptideFragmentIonSp() const$/;" f class:pappso::PeptideFragmentIon makePeptideNaturalIsotopeAverageSp src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::makePeptideNaturalIsotopeAverageSp() const$/;" f class:pappso::PeptideNaturalIsotopeAverage makePeptideNaturalIsotopeListSp src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::makePeptideNaturalIsotopeListSp() const$/;" f class:pappso::PeptideNaturalIsotopeList makePeptideSp src/pappsomspp/peptide/peptide.cpp /^Peptide::makePeptideSp() const$/;" f class:pappso::Peptide makeProteinSp src/pappsomspp/protein/protein.cpp /^Protein::makeProteinSp() const$/;" f class:pappso::Protein makeQualifiedMassSpectrumCstSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::makeQualifiedMassSpectrumCstSPtr() const$/;" f class:pappso::QualifiedMassSpectrum makeQualifiedMassSpectrumSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::makeQualifiedMassSpectrumSPtr() const$/;" f class:pappso::QualifiedMassSpectrum makeTraceCstSPtr src/pappsomspp/trace/trace.cpp /^Trace::makeTraceCstSPtr() const$/;" f class:pappso::Trace makeTracePeakCstSPtr src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::makeTracePeakCstSPtr() const$/;" f class:pappso::TracePeak makeTraceSPtr src/pappsomspp/trace/trace.cpp /^Trace::makeTraceSPtr() const$/;" f class:pappso::Trace makeXicCstSPtr src/pappsomspp/xic/xic.cpp /^Xic::makeXicCstSPtr() const$/;" f class:pappso::Xic makeXicSPtr src/pappsomspp/xic/xic.cpp /^Xic::makeXicSPtr() const$/;" f class:pappso::Xic mapTraceMetaTypeId src/pappsomspp/trace/maptrace.cpp /^int mapTraceMetaTypeId =$/;" v mapTracePtrMetaTypeId src/pappsomspp/trace/maptrace.cpp /^int mapTracePtrMetaTypeId =$/;" v maskMs1 src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::maskMs1(bool mask_ms1)$/;" f class:MzxmlOutput massSpecTracePlotContextMetaTypeId src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^int massSpecTracePlotContextMetaTypeId =$/;" v massSpecTracePlotContextPtrMetaTypeId src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^int massSpecTracePlotContextPtrMetaTypeId =$/;" v massSpectrumCstSPtr src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::massSpectrumCstSPtr(std::size_t spectrum_index)$/;" f class:pappso::PwizMsRunReader massSpectrumCstSPtr src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::massSpectrumCstSPtr(std::size_t spectrum_index)$/;" f class:TimsMsRunReader massSpectrumCstSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::massSpectrumCstSPtr(std::size_t spectrum_index)$/;" f class:TimsMsRunReaderMs2 massSpectrumCstSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::massSpectrumCstSPtr(std::size_t spectrum_index)$/;" f class:TimsMsRunReaderMs2Selected massSpectrumCstSPtr src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::massSpectrumCstSPtr(std::size_t spectrum_index)$/;" f class:pappso::XyMsRunReader massSpectrumFilter src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::massSpectrumFilter(const MassSpectrumFilterInterface &filter)$/;" f class:pappso::MassSpectrum massSpectrumIndex src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::massSpectrumIndex($/;" f class:pappso::MsRunDataSetTree massSpectrumIndex src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::massSpectrumIndex(const MsRunDataSetTreeNode *node) const$/;" f class:pappso::MsRunDataSetTree massSpectrumMetaTypeId src/pappsomspp/massspectrum/massspectrum.cpp /^int massSpectrumMetaTypeId =$/;" v massSpectrumPtrMetaTypeId src/pappsomspp/massspectrum/massspectrum.cpp /^int massSpectrumPtrMetaTypeId =$/;" v massSpectrumSPtr src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::massSpectrumSPtr(std::size_t spectrum_index)$/;" f class:pappso::PwizMsRunReader massSpectrumSPtr src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::massSpectrumSPtr([[maybe_unused]] std::size_t spectrum_index)$/;" f class:TimsMsRunReader massSpectrumSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::massSpectrumSPtr(std::size_t spectrum_index)$/;" f class:TimsMsRunReaderMs2 massSpectrumSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::massSpectrumSPtr(std::size_t spectrum_index)$/;" f class:TimsMsRunReaderMs2Selected massSpectrumSPtr src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::massSpectrumSPtr(std::size_t spectrum_index)$/;" f class:pappso::XyMsRunReader matchPeak src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::matchPeak(pappso_double peak_mz) const$/;" f class:pappso::PeptideNaturalIsotopeAverage max src/pappsomspp/types.h /^ max = 2 \/\/\/< maximum of intensities$/;" m class:pappso::MzFormat::XicExtractMethod maxCount src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::maxCount() const$/;" f class:pappso::GrpSubGroup maxIntensityDataPoint src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::maxIntensityDataPoint() const$/;" f class:pappso::MassSpectrum maxKeyValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double maxKeyValue = std::numeric_limits::min();$/;" m struct:pappso::ColorMapPlotConfig maxMzValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double maxMzValue = std::numeric_limits::max();$/;" m struct:pappso::ColorMapPlotConfig maxY src/pappsomspp/trace/trace.cpp /^Trace::maxY() const$/;" f class:pappso::Trace maxY src/pappsomspp/trace/trace.cpp /^Trace::maxY(double mzStart, double mzEnd) const$/;" f class:pappso::Trace maxYDataPoint src/pappsomspp/trace/trace.cpp /^Trace::maxYDataPoint() const$/;" f class:pappso::Trace maxYDataPoint src/pappsomspp/trace/trace.cpp /^maxYDataPoint(std::vector::const_iterator begin,$/;" f namespace:pappso maxYDataPoint src/pappsomspp/trace/trace.cpp /^maxYDataPoint(std::vector::iterator begin,$/;" f namespace:pappso maximum_intensity src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ maximum_intensity,$/;" m class:pappso::MsRunRetentionTime::ComputeRetentionTimeReference mcsp_massSpectrum src/pappsomspp/msrun/msrundatasettreenode.h /^ QualifiedMassSpectrumCstSPtr mcsp_massSpectrum = nullptr;$/;" m class:pappso::MsRunDataSetTreeNode mcsp_ms1Filter src/pappsomspp/vendors/tims/timsdata.h /^ pappso::FilterInterfaceCstSPtr mcsp_ms1Filter = nullptr;$/;" m class:pappso::TimsData mcsp_ms2Filter src/pappsomspp/vendors/tims/timsdata.h /^ pappso::FilterInterfaceCstSPtr mcsp_ms2Filter = nullptr;$/;" m class:pappso::TimsData mcsp_msRunId src/pappsomspp/massspectrum/massspectrumid.h /^ MsRunIdCstSPtr mcsp_msRunId = nullptr;$/;" m class:pappso::MassSpectrumId mcsp_msRunId src/pappsomspp/msrun/msrundatasettree.h /^ MsRunIdCstSPtr mcsp_msRunId;$/;" m class:pappso::MsRunDataSetTree mcsp_msRunId src/pappsomspp/msrun/msrunreader.h /^ MsRunIdCstSPtr mcsp_msRunId;$/;" m class:pappso::MsRunReader mcsp_msrunId src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ pappso::MsRunIdCstSPtr mcsp_msrunId;$/;" m class:pappso::MsRunRetentionTime mcsp_peptideSp src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ const PeptideInterfaceSp mcsp_peptideSp;$/;" m class:pappso::PeptideNaturalIsotopeAverage mcsp_postExtractionTraceFilter src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^ pappso::FilterInterfaceCstSPtr mcsp_postExtractionTraceFilter = nullptr;$/;" m class:pappso::MsRunXicExtractorInterface meanYTrace src/pappsomspp/trace/trace.cpp /^meanYTrace(std::vector::const_iterator begin,$/;" f namespace:pappso medianYTrace src/pappsomspp/trace/trace.cpp /^medianYTrace(std::vector::const_iterator begin,$/;" f namespace:pappso merge src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::merge(GrpSubGroup *p_subgroup)$/;" f class:pappso::GrpSubGroup message maintainer-scripts/makeOrigTarball.py /^message = "Making .tar.gz for (UPVER = {UPVER}) and (DEBVER = {DEBVER}). Is this correct ?".format(UPVER = UPVER, DEBVER = DEBVER);$/;" v methionine src/pappsomspp/types.h /^ methionine = 'M',$/;" m class:pappso::MzFormat::AminoAcidChar minIntensityDataPoint src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::minIntensityDataPoint() const$/;" f class:pappso::MassSpectrum minKeyValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double minKeyValue = std::numeric_limits::max();$/;" m struct:pappso::ColorMapPlotConfig minMzValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double minMzValue = std::numeric_limits::max();$/;" m struct:pappso::ColorMapPlotConfig minY src/pappsomspp/trace/trace.cpp /^Trace::minY() const$/;" f class:pappso::Trace minYDataPoint src/pappsomspp/trace/trace.cpp /^Trace::minYDataPoint() const$/;" f class:pappso::Trace minYDataPoint src/pappsomspp/trace/trace.cpp /^minYDataPoint(std::vector::const_iterator begin,$/;" f namespace:pappso minYDataPoint src/pappsomspp/trace/trace.cpp /^minYDataPoint(std::vector::iterator begin,$/;" f namespace:pappso mkfile_path Makefile /^mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))$/;" m mkfile_path src/pappsomspp/Makefile /^mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))$/;" m mob1 doc/bruker/tims_calibration.py /^mob1 = oneoverK0(scan_numbers)$/;" v mob_sdk1 doc/bruker/tims_calibration.py /^mob_sdk1 = tims_file.scanNumToOneOverK0(frameId, scan_numbers)$/;" v mobilityIndexBegin src/pappsomspp/vendors/tims/timsframe.h /^ std::size_t mobilityIndexBegin;$/;" m struct:pappso::TimsFrame::XicComputeStructure mobilityIndexEnd src/pappsomspp/vendors/tims/timsframe.h /^ std::size_t mobilityIndexEnd;$/;" m struct:pappso::TimsFrame::XicComputeStructure mouseMoveEvent src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::mouseMoveEvent(QMouseEvent *event)$/;" f class:QCPSpectrum mouseMoveEvent src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::mouseMoveEvent(QMouseEvent *event)$/;" f class:QCPXic mouseMoveHandler src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseMoveHandler(QMouseEvent *event)$/;" f class:pappso::BasePlotWidget mouseMoveHandler src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::mouseMoveHandler(QMouseEvent *event)$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget mouseMoveHandler src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::mouseMoveHandler(QMouseEvent *event)$/;" f class:pappso::DriftSpecTracePlotWidget mouseMoveHandler src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::mouseMoveHandler(QMouseEvent *event)$/;" f class:pappso::MassSpecTracePlotWidget mouseMoveHandler src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::mouseMoveHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget mouseMoveHandler src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::mouseMoveHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget mouseMoveHandler src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::mouseMoveHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromTracePlotWidget mouseMoveHandlerDraggingCursor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseMoveHandlerDraggingCursor()$/;" f class:pappso::BasePlotWidget mouseMoveHandlerDraggingCursor src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::mouseMoveHandlerDraggingCursor()$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget mouseMoveHandlerDraggingCursor src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::mouseMoveHandlerDraggingCursor()$/;" f class:pappso::DriftSpecTracePlotWidget mouseMoveHandlerDraggingCursor src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::mouseMoveHandlerDraggingCursor()$/;" f class:pappso::MassSpecTracePlotWidget mouseMoveHandlerDraggingCursor src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::mouseMoveHandlerDraggingCursor()$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget mouseMoveHandlerDraggingCursor src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::mouseMoveHandlerDraggingCursor()$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget mouseMoveHandlerDraggingCursor src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::mouseMoveHandlerDraggingCursor()$/;" f class:pappso::TicXicChromTracePlotWidget mouseMoveHandlerLeftButtonDraggingCursor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseMoveHandlerLeftButtonDraggingCursor()$/;" f class:pappso::BasePlotWidget mouseMoveHandlerNotDraggingCursor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseMoveHandlerNotDraggingCursor()$/;" f class:pappso::BasePlotWidget mouseMoveHandlerNotDraggingCursor src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::mouseMoveHandlerNotDraggingCursor()$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget mouseMoveHandlerNotDraggingCursor src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::mouseMoveHandlerNotDraggingCursor()$/;" f class:pappso::DriftSpecTracePlotWidget mouseMoveHandlerNotDraggingCursor src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::mouseMoveHandlerNotDraggingCursor()$/;" f class:pappso::MassSpecTracePlotWidget mouseMoveHandlerNotDraggingCursor src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::mouseMoveHandlerNotDraggingCursor()$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget mouseMoveHandlerNotDraggingCursor src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::mouseMoveHandlerNotDraggingCursor()$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget mouseMoveHandlerNotDraggingCursor src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::mouseMoveHandlerNotDraggingCursor()$/;" f class:pappso::TicXicChromTracePlotWidget mouseMoveHandlerRightButtonDraggingCursor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseMoveHandlerRightButtonDraggingCursor()$/;" f class:pappso::BasePlotWidget mousePressEvent src/pappsomspp/widget/httpbutton/httpbutton.cpp /^pappso::HttpButton::mousePressEvent(QMouseEvent *e)$/;" f class:pappso::HttpButton mousePressEvent src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::mousePressEvent(QMouseEvent *event)$/;" f class:QCPSpectrum mousePressEvent src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::mousePressEvent(QMouseEvent *event)$/;" f class:QCPXic mousePressHandler src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mousePressHandler(QMouseEvent *event)$/;" f class:pappso::BasePlotWidget mousePressHandler src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::mousePressHandler(QMouseEvent *event)$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget mousePressHandler src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::mousePressHandler(QMouseEvent *event)$/;" f class:pappso::DriftSpecTracePlotWidget mousePressHandler src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::mousePressHandler(QMouseEvent *event)$/;" f class:pappso::MassSpecTracePlotWidget mousePressHandler src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::mousePressHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget mousePressHandler src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::mousePressHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget mousePressHandler src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::mousePressHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromTracePlotWidget mousePseudoButtonKeyPressEvent src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mousePseudoButtonKeyPressEvent([$/;" f class:pappso::BasePlotWidget mousePseudoButtonKeyReleaseEvent src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mousePseudoButtonKeyReleaseEvent(QKeyEvent *event)$/;" f class:pappso::BasePlotWidget mouseReleaseEvent src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::mouseReleaseEvent(QMouseEvent *event [[maybe_unused]])$/;" f class:QCPSpectrum mouseReleaseEvent src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::mouseReleaseEvent(QMouseEvent *event)$/;" f class:QCPXic mouseReleaseHandler src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseReleaseHandler(QMouseEvent *event)$/;" f class:pappso::BasePlotWidget mouseReleaseHandler src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::mouseReleaseHandler(QMouseEvent *event)$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget mouseReleaseHandler src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::mouseReleaseHandler(QMouseEvent *event)$/;" f class:pappso::DriftSpecTracePlotWidget mouseReleaseHandler src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::mouseReleaseHandler(QMouseEvent *event)$/;" f class:pappso::MassSpecTracePlotWidget mouseReleaseHandler src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^TicXicChromDriftSpecColorMapPlotWidget::mouseReleaseHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget mouseReleaseHandler src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::mouseReleaseHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget mouseReleaseHandler src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::mouseReleaseHandler(QMouseEvent *event)$/;" f class:pappso::TicXicChromTracePlotWidget mouseReleaseHandlerLeftButton src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseReleaseHandlerLeftButton()$/;" f class:pappso::BasePlotWidget mouseReleaseHandlerRightButton src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseReleaseHandlerRightButton()$/;" f class:pappso::BasePlotWidget mouseWheelHandler src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::mouseWheelHandler([[maybe_unused]] QWheelEvent *event)$/;" f class:pappso::BasePlotWidget moveLinearReadForward src/pappsomspp/vendors/tims/timsbindec.cpp /^pappso::TimsBinDec::moveLinearReadForward($/;" f class:pappso::TimsBinDec moveLowerYLeftDataPoint src/pappsomspp/trace/trace.cpp /^moveLowerYLeftDataPoint(const Trace &trace,$/;" f namespace:pappso moveLowerYRigthDataPoint src/pappsomspp/trace/trace.cpp /^moveLowerYRigthDataPoint(const Trace &trace,$/;" f namespace:pappso moveMouseCursorGraphCoordToGlobal src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::moveMouseCursorGraphCoordToGlobal(QPointF graph_coordinates)$/;" f class:pappso::BasePlotWidget moveMouseCursorPixelCoordToGlobal src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::moveMouseCursorPixelCoordToGlobal(QPointF pixel_coordinates)$/;" f class:pappso::BasePlotWidget mp_daltonValueSpinBox src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ QDoubleSpinBox *mp_daltonValueSpinBox;$/;" m class:pappso::PrecisionWidget mp_fileLinear src/pappsomspp/vendors/tims/timsbindec.h /^ QFile *mp_fileLinear = nullptr;$/;" m class:pappso::TimsBinDec mp_fileRandom src/pappsomspp/vendors/tims/timsbindec.h /^ QFile *mp_fileRandom = nullptr;$/;" m class:pappso::TimsBinDec mp_firstModificator src/pappsomspp/protein/peptidemodificatorpipeline.h /^ PeptideModificatorInterface *mp_firstModificator = nullptr;$/;" m class:pappso::PeptideModificatorPipeline mp_hPosTracerItem src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_hPosTracerItem = nullptr;$/;" m class:pappso::BasePlotWidget mp_lastPeptideSinkInterface src/pappsomspp/protein/peptidemodificatorpipeline.h /^ PeptideSpSinkInterface *mp_lastPeptideSinkInterface;$/;" m class:pappso::PeptideModificatorPipeline mp_mod src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ const AaModificationP mp_mod;$/;" m class:pappso::PeptideFixedModificationBuilder mp_mod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ AaModificationP mp_mod;$/;" m class:pappso::PeptideVariableModificationBuilder mp_modAfter src/pappsomspp/protein/peptidevariablemodificationreplacement.h /^ AaModificationP mp_modAfter;$/;" m class:pappso::PeptideVariableModificationReplacement mp_monitor src/pappsomspp/grouping/grpexperiment.h /^ GrpGroupingMonitorInterface *mp_monitor = nullptr;$/;" m class:pappso::GrpExperiment mp_monitor src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ UiMonitorInterface *mp_monitor;$/;" m class:pappso::TandemWrapperRun mp_outStream src/pappsomspp/grouping/grpgroupingmonitor.h /^ QTextStream *mp_outStream;$/;" m class:pappso::GrpGroupingMonitor mp_output src/pappsomspp/msrun/output/mzxmloutput.h /^ MzxmlOutput *mp_output;$/;" m class:pappso::MzxmlOutput::Translater mp_parent src/pappsomspp/msrun/msrundatasettreenode.h /^ MsRunDataSetTreeNode *mp_parent = nullptr;$/;" m class:pappso::MsRunDataSetTreeNode mp_parent src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^ pappso::OboListModel *mp_parent;$/;" m class:pappso::OboListModel::OboPsiModHandler mp_peak_bars_precursor src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ QCPBars *mp_peak_bars_precursor;$/;" m class:pappso::QCPSpectrum mp_peptideModificatorTee src/pappsomspp/protein/peptidemodificatorpipeline.h /^ PeptideModificatorTee *mp_peptideModificatorTee = nullptr;$/;" m class:pappso::PeptideModificatorPipeline mp_ppmValueSpinBox src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ QDoubleSpinBox *mp_ppmValueSpinBox;$/;" m class:pappso::PrecisionWidget mp_precision src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^ PrecisionPtr mp_precision = nullptr;$/;" m class:pappso::PeptideNaturalIsotopeAverage mp_precision src/pappsomspp/processing/combiners/mzintegrationparams.h /^ pappso::PrecisionPtr mp_precision =$/;" m class:pappso::MzIntegrationParams mp_precision src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^ PrecisionPtr mp_precision;$/;" m class:pappso::XtandemHyperscoreBis mp_precision src/pappsomspp/xic/qualifiedxic.h /^ PrecisionPtr mp_precision;$/;" m class:pappso::QualifiedXic mp_precisionDalton src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ PrecisionPtr mp_precisionDalton;$/;" m class:pappso::PrecisionWidget mp_precisionPpm src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ PrecisionPtr mp_precisionPpm;$/;" m class:pappso::PrecisionWidget mp_precisionRes src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ PrecisionPtr mp_precisionRes;$/;" m class:pappso::PrecisionWidget mp_resValueSpinBox src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ QDoubleSpinBox *mp_resValueSpinBox;$/;" m class:pappso::PrecisionWidget mp_selectionRectangeLine1 src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_selectionRectangeLine1 = nullptr;$/;" m class:pappso::BasePlotWidget mp_selectionRectangeLine2 src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_selectionRectangeLine2 = nullptr;$/;" m class:pappso::BasePlotWidget mp_selectionRectangeLine3 src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_selectionRectangeLine3 = nullptr;$/;" m class:pappso::BasePlotWidget mp_selectionRectangeLine4 src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_selectionRectangeLine4 = nullptr;$/;" m class:pappso::BasePlotWidget mp_sourceModel src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h /^ OboListModel *mp_sourceModel;$/;" m class:pappso::OboListProxyModel mp_timsData src/pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.h /^ TimsData *mp_timsData;$/;" m class:pappso::TimsXicExtractorInterface mp_unitComboBox src/pappsomspp/widget/precisionwidget/precisionwidget.h /^ QComboBox *mp_unitComboBox;$/;" m class:pappso::PrecisionWidget mp_vEndTracerItem src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_vEndTracerItem = nullptr \/*only vertical*\/;$/;" m class:pappso::BasePlotWidget mp_vPosTracerItem src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_vPosTracerItem = nullptr;$/;" m class:pappso::BasePlotWidget mp_vStartTracerItem src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemLine *mp_vStartTracerItem = nullptr;$/;" m class:pappso::BasePlotWidget mp_xDeltaTextItem src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemText *mp_xDeltaTextItem = nullptr;$/;" m class:pappso::BasePlotWidget mp_yDeltaTextItem src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ QCPItemText *mp_yDeltaTextItem = nullptr;$/;" m class:pappso::BasePlotWidget mpa_decompressMemoryBuffer src/pappsomspp/vendors/tims/timsbindec.h /^ char *mpa_decompressMemoryBuffer = nullptr;$/;" m class:pappso::TimsBinDec mpa_memoryBuffer src/pappsomspp/vendors/tims/timsframerawdatachunck.h /^ char *mpa_memoryBuffer = nullptr;$/;" m class:pappso::TimsFrameRawDataChunck mpa_multiMapScanNumber src/pappsomspp/msrun/msrunreader.h /^ MsRunReaderScanNumberMultiMap *mpa_multiMapScanNumber = nullptr;$/;" m class:pappso::MsRunReader mpa_mzCalibrationStore src/pappsomspp/vendors/tims/timsdata.h /^ MzCalibrationStore *mpa_mzCalibrationStore;$/;" m class:pappso::TimsData mpa_oboListModel src/pappsomspp/widget/obo/obolistwidget/obolistwidget.h /^ OboListModel *mpa_oboListModel = nullptr;$/;" m class:pappso::OboListWidget mpa_oboListProxyModel src/pappsomspp/widget/obo/obolistwidget/obolistwidget.h /^ OboListProxyModel *mpa_oboListProxyModel = nullptr;$/;" m class:pappso::OboListWidget mpa_origColorMapData src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^ QCPColorMapData *mpa_origColorMapData = nullptr;$/;" m class:pappso::BaseColorMapPlotWidget mpa_origColorMapPlotConfig src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^ ColorMapPlotConfig *mpa_origColorMapPlotConfig = nullptr;$/;" m class:pappso::BaseColorMapPlotWidget mpa_outputStream src/pappsomspp/msrun/output/mgfoutput.h /^ QTextStream *mpa_outputStream;$/;" m class:pappso::MgfOutput mpa_outputStream src/pappsomspp/msrun/output/mzxmloutput.h /^ QXmlStreamWriter *mpa_outputStream;$/;" m class:pappso::MzxmlOutput mpa_sequenceTxtIn src/pappsomspp/fasta/fastafileindexer.h /^ QTextStream *mpa_sequenceTxtIn = nullptr;$/;" m class:pappso::FastaFileIndexer mpa_temporaryDirectory src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ QTemporaryDir *mpa_temporaryDirectory = nullptr;$/;" m class:pappso::TandemWrapperRun mpa_temporaryDirectory src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ QTemporaryDir *mpa_temporaryDirectory = nullptr;$/;" m class:pappso::MsRunXicExtractorDisk mpa_timsBinDec src/pappsomspp/vendors/tims/timsdata.h /^ TimsBinDec *mpa_timsBinDec = nullptr;$/;" m class:pappso::TimsData mpa_timsData src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ TimsData *mpa_timsData = nullptr;$/;" m class:pappso::TimsMsRunReaderMs2Selected ms1_index src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t ms1_index = 0;$/;" m struct:pappso::TimsData::SpectrumDescr ms2ReaderGenerateMS1MS2Spectrum src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::ms2ReaderGenerateMS1MS2Spectrum($/;" f class:pappso::pappso::TimsData ms2ReaderSpectrumCollectionByMsLevel src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::ms2ReaderSpectrumCollectionByMsLevel($/;" f class:pappso::pappso::TimsData ms2_index src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t ms2_index = 0;$/;" m struct:pappso::TimsData::SpectrumDescr msRunIdCstSPtrMetaTypeId src/pappsomspp/msrun/msrunid.cpp /^int msRunIdCstSPtrMetaTypeId =$/;" v msRunIdMetaTypeId src/pappsomspp/msrun/msrunid.cpp /^int msRunIdMetaTypeId = qRegisterMetaType("pappso::MsRunId");$/;" v msRunReaderSPtrMetaTypeId src/pappsomspp/msrun/msrunreader.cpp /^int msRunReaderSPtrMetaTypeId =$/;" v msRunReaderSp src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::msRunReaderSp(MsRunIdCstSPtr ms_run_id)$/;" f class:pappso::MsFileAccessor msms_type src/pappsomspp/vendors/tims/timsframerecord.h /^ int msms_type = 0;$/;" m struct:pappso::TimsFrameRecord msn src/pappsomspp/types.h /^ msn = 7, \/\/< MS_MS2 format$/;" m class:pappso::MzFormat msp_filterChargeDeconvolution src/pappsomspp/psm/features/psmfeatures.h /^ std::shared_ptr msp_filterChargeDeconvolution;$/;" m class:pappso::PsmFeatures msp_filterKeepGreater src/pappsomspp/psm/features/psmfeatures.h /^ std::shared_ptr msp_filterKeepGreater;$/;" m class:pappso::PsmFeatures msp_filterMzExclusion src/pappsomspp/psm/features/psmfeatures.h /^ std::shared_ptr msp_filterMzExclusion;$/;" m class:pappso::PsmFeatures msp_fragment src/pappsomspp/peptide/peptidefragmention.h /^ const PeptideFragmentSp msp_fragment;$/;" m class:pappso::PeptideFragmentIon msp_massSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ MassSpectrumSPtr msp_massSpectrum = nullptr;$/;" m class:pappso::QualifiedMassSpectrum msp_ms1Filter src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ pappso::FilterInterfaceCstSPtr msp_ms1Filter;$/;" m class:pappso::TimsMsRunReaderMs2 msp_ms2Filter src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ pappso::FilterInterfaceCstSPtr msp_ms2Filter;$/;" m class:pappso::TimsMsRunReaderMs2 msp_ms2FilterSuiteString src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^ std::shared_ptr msp_ms2FilterSuiteString = nullptr;$/;" m class:pappso::TandemWrapperRun msp_msData src/pappsomspp/msrun/private/pwizmsrunreader.h /^ pwiz::msdata::MSDataPtr msp_msData = nullptr;$/;" m class:pappso::PwizMsRunReader msp_msrunReader src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ pappso::MsRunReaderSPtr msp_msrunReader;$/;" m class:pappso::MsRunRetentionTime msp_msrun_reader src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^ MsRunReaderSPtr msp_msrun_reader;$/;" m class:pappso::MsRunXicExtractorInterface msp_mzCalibration src/pappsomspp/vendors/tims/timsframebase.h /^ MzCalibrationInterfaceSPtr msp_mzCalibration = nullptr;$/;" m class:pappso::TimsFrameBase msp_naturalIsotopeAverage src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h /^ PeptideNaturalIsotopeAverageSp msp_naturalIsotopeAverage;$/;" m class:pappso::XicPeptideFragmentIonNaturalIsotope msp_peptide src/pappsomspp/peptide/peptidefragment.h /^ const PeptideSp msp_peptide;$/;" m class:pappso::PeptideFragment msp_peptide src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ const PeptideSp msp_peptide;$/;" m class:pappso::PeptideFragmentIonListBase msp_peptide src/pappsomspp/peptide/peptidenaturalisotopelist.h /^ const PeptideInterfaceSp msp_peptide;$/;" m class:pappso::PeptideNaturalIsotopeList msp_peptide src/pappsomspp/psm/features/psmfeatures.h /^ pappso::PeptideSp msp_peptide;$/;" m class:pappso::PsmFeatures msp_peptideFragmentIon src/pappsomspp/xic/xicpeptidefragmention.h /^ const PeptideFragmentIonSp msp_peptideFragmentIon;$/;" m class:pappso::XicPeptideFragmentIon msp_peptideFragmentIon src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h /^ PeptideFragmentIonSp msp_peptideFragmentIon;$/;" m class:pappso::XicPeptideFragmentIonNaturalIsotope msp_peptideInterface src/pappsomspp/xic/xicpeptideinterface.h /^ const PeptideInterfaceSp msp_peptideInterface;$/;" m class:pappso::XicPeptideInterface msp_peptideSpectrumMatch src/pappsomspp/psm/features/psmfeatures.h /^ std::shared_ptr msp_peptideSpectrumMatch;$/;" m class:pappso::PsmFeatures msp_peptide_fragment_ion_list src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ std::list msp_peptide_fragment_ion_list;$/;" m class:pappso::PeptideFragmentIonListBase msp_peptide_natural_isotope_list src/pappsomspp/peptide/peptidenaturalisotopelist.h /^ std::list msp_peptide_natural_isotope_list;$/;" m class:pappso::PeptideNaturalIsotopeList msp_timsData src/pappsomspp/msrun/private/timsmsrunreader.h /^ TimsDataSp msp_timsData = nullptr;$/;" m class:pappso::TimsMsRunReader msp_timsData src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ TimsDataSp msp_timsData = nullptr;$/;" m class:pappso::TimsMsRunReaderMs2 msp_xic src/pappsomspp/xic/qualifiedxic.h /^ XicSPtr msp_xic;$/;" m class:pappso::QualifiedXic multiplyBy src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^XicCoord::multiplyBy(double number) const$/;" f class:XicCoord multiplyBy src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::multiplyBy(double number) const$/;" f class:pappso::XicCoordTims mz src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^ double mz = 0;$/;" m struct:pappso::PrecursorIonData mz src/pappsomspp/types.h /^ mz = 2, \/\/\/< m\/z$/;" m class:pappso::MzFormat::DataKind mz src/pappsomspp/types.h /^ mz,$/;" m class:pappso::PrecisionUnit mz1 doc/bruker/tof_calibration.py /^mz1 = 599.31$/;" v mz11 doc/bruker/tof_calibration.py /^mz11 = tims_file.indexToMz(frameId, [t1_index])$/;" v mz2 doc/bruker/tof_calibration.py /^mz2 = mz_transformation(t2_index, frameId)$/;" v mz3 doc/bruker/tof_calibration.py /^mz3 = tims_file.indexToMz(frameId, [t2_index])$/;" v mz5 src/pappsomspp/types.h /^ mz5 = 6, \/\/< MZ5 format$/;" m class:pappso::MzFormat mzCellCount src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ std::size_t mzCellCount = 0;$/;" m struct:pappso::ColorMapPlotConfig mzChangeEvent src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::mzChangeEvent(pappso_double mz) const$/;" f class:MassSpectrumWidget mzIndexLowerBound src/pappsomspp/vendors/tims/timsframe.h /^ std::size_t mzIndexLowerBound;$/;" m struct:pappso::TimsFrame::XicComputeStructure mzIndexUpperBound src/pappsomspp/vendors/tims/timsframe.h /^ std::size_t mzIndexUpperBound;$/;" m struct:pappso::TimsFrame::XicComputeStructure mzIntegrationParamsMetaTypeId src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^int mzIntegrationParamsMetaTypeId =$/;" v mzIntegrationParamsPtrMetaTypeId src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^int mzIntegrationParamsPtrMetaTypeId =$/;" v mzListDataFormatRegExp src/pappsomspp/utils.h /^ static QRegularExpression mzListDataFormatRegExp;$/;" m class:pappso::Utils mzML src/pappsomspp/types.h /^ mzML = 1, \/\/\/< mzML$/;" m class:pappso::MzFormat mzRange src/pappsomspp/msrun/xiccoord/xiccoord.h /^ MzRange mzRange;$/;" m struct:pappso::XicCoord mzXML src/pappsomspp/types.h /^ mzXML = 2, \/\/\/< mzXML$/;" m class:pappso::MzFormat mz_calibration_id src/pappsomspp/vendors/tims/timsframerecord.h /^ std::size_t mz_calibration_id = 0;$/;" m struct:pappso::TimsFrameRecord mz_transformation doc/bruker/tof_calibration.py /^def mz_transformation(index, frame_id):$/;" f nL src/pappsomspp/processing/filters/savgolfilter.h /^ int nL = 15;$/;" m struct:pappso::SavGolParams nR src/pappsomspp/processing/filters/savgolfilter.h /^ int nR = 15;$/;" m struct:pappso::SavGolParams name src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::name() const$/;" f class:pappso::FilterCeilingAmplitudePercentage name src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::name() const$/;" f class:pappso::FilterChargeDeconvolution name src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^pappso::FilterComplementIonEnhancer::name() const$/;" f class:pappso::FilterComplementIonEnhancer name src/pappsomspp/processing/filters/filterexclusionmz.cpp /^pappso::FilterMzExclusion::name() const$/;" f class:pappso::FilterMzExclusion name src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::name() const$/;" f class:pappso::FilterFloorAmplitudePercentage name src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::name() const$/;" f class:pappso::FilterLowIntensitySignalRemoval name src/pappsomspp/processing/filters/filtermorpho.cpp /^pappso::FilterMorphoAntiSpike::name() const$/;" f class:pappso::FilterMorphoAntiSpike name src/pappsomspp/processing/filters/filterpass.cpp /^pappso::FilterQuantileBasedRemoveY::name() const$/;" f class:pappso::FilterQuantileBasedRemoveY name src/pappsomspp/processing/filters/filtersuitestring.cpp /^pappso::FilterSuiteString::name() const$/;" f class:pappso::pappso::FilterSuiteString name src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::name() const$/;" f class:pappso::FilterSavitzkyGolay nan src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ static constexpr double nan = std::numeric_limits::quiet_NaN();$/;" m class:pappso::FilterLowIntensitySignalRemoval nearestGreater src/pappsomspp/utils.cpp /^Utils::nearestGreater(double value)$/;" f class:pappso::Utils needMsLevelPeakList src/pappsomspp/msrun/msrunreader.cpp /^SpectrumCollectionHandlerInterface::needMsLevelPeakList($/;" f class:pappso::SpectrumCollectionHandlerInterface needPeakList src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderRetentionTimeLine::needPeakList() const$/;" f class:pappso::MsRunReaderRetentionTimeLine needPeakList src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderScanNumberMultiMap::needPeakList() const$/;" f class:pappso::MsRunReaderScanNumberMultiMap needPeakList src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderTicChromatogram::needPeakList() const$/;" f class:pappso::MsRunReaderTicChromatogram needPeakList src/pappsomspp/msrun/msrunreader.cpp /^MsRunSimpleStatistics::needPeakList() const$/;" f class:pappso::MsRunSimpleStatistics needPeakList src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::Translater::needPeakList() const$/;" f class:MzxmlOutput::Translater newSelectionPolygonSpec src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepPointInPolygon::newSelectionPolygonSpec($/;" f class:pappso::FilterResampleKeepPointInPolygon newXicCoordSPtrFromQualifiedMassSpectrum src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::newXicCoordSPtrFromQualifiedMassSpectrum($/;" f class:pappso::PwizMsRunReader newXicCoordSPtrFromQualifiedMassSpectrum src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::newXicCoordSPtrFromQualifiedMassSpectrum($/;" f class:TimsMsRunReader newXicCoordSPtrFromQualifiedMassSpectrum src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::newXicCoordSPtrFromQualifiedMassSpectrum($/;" f class:TimsMsRunReaderMs2 newXicCoordSPtrFromQualifiedMassSpectrum src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::newXicCoordSPtrFromQualifiedMassSpectrum($/;" f class:pappso::XyMsRunReader newXicCoordSPtrFromSpectrumIndex src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::newXicCoordSPtrFromSpectrumIndex($/;" f class:pappso::PwizMsRunReader newXicCoordSPtrFromSpectrumIndex src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::newXicCoordSPtrFromSpectrumIndex(std::size_t spectrum_index$/;" f class:TimsMsRunReader newXicCoordSPtrFromSpectrumIndex src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::newXicCoordSPtrFromSpectrumIndex($/;" f class:TimsMsRunReaderMs2 newXicCoordSPtrFromSpectrumIndex src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::newXicCoordSPtrFromSpectrumIndex(std::size_t spectrum_index$/;" f class:pappso::XyMsRunReader new_mono_charge_data_point src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ DataPoint new_mono_charge_data_point;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo next_combination src/pappsomspp/protein/peptidevariablemodificationbuilder.cpp /^PeptideVariableModificationBuilder::next_combination($/;" f class:pappso::PeptideVariableModificationBuilder nonConstFilter src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::nonConstFilter(Trace &trace)$/;" f class:pappso::FilterLowIntensitySignalRemoval none src/pappsomspp/types.h /^ none = 0, \/\/\/< no compression$/;" m class:pappso::MzFormat::DataCompression none src/pappsomspp/types.h /^ none,$/;" m class:pappso::PrecisionUnit nose src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^ nose = 0, \/\/\/< default factory$/;" m class:pappso::MsRunXicExtractorFactoryType notExcluded src/pappsomspp/processing/filters/filterremovec13.cpp /^pappso::FilterRemoveC13::notExcluded($/;" f class:pappso::FilterRemoveC13 num_scans doc/bruker/tims_calibration.py /^num_scans = c.execute("select distinct(NumScans) from Frames").fetchone()[0]$/;" v numbering src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::numbering()$/;" f class:GrpExperiment numbering src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::numbering()$/;" f class:GrpGroup numbering src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::numbering()$/;" f class:GrpPeptideSet numbering src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::numbering()$/;" f class:pappso::GrpSubGroup o Session.vim /^nnoremap o :call nerdtree#ui_glue#invokeKeyMap("o")$/;" m oboPsiModTermMetaTypeId src/pappsomspp/obo/obopsimodterm.cpp /^int oboPsiModTermMetaTypeId =$/;" v onBranchLine maintainer-scripts/makeOrigTarball.py /^onBranchLine = onBranchLines[0];$/;" v onBranchLines maintainer-scripts/makeOrigTarball.py /^onBranchLines = re.findall("^On branch.*$", output, re.MULTILINE)$/;" v onFilterChanged src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^pappso::OboListWidget::onFilterChanged()$/;" f class:pappso::OboListWidget onFilterChanged src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^pappso::OboListWidget::onFilterChanged(pappso::PrecisionPtr precision$/;" f class:pappso::OboListWidget onSelectionChanged src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^pappso::OboListWidget::onSelectionChanged(const QItemSelection &selected,$/;" f class:pappso::OboListWidget oneoverK0 doc/bruker/tims_calibration.py /^oneoverK0 = get_oneoverK0_transformation(c, frameId)$/;" v oneoverK0_transformation doc/bruker/tims_calibration.py /^ def oneoverK0_transformation(scan_num):$/;" f function:get_oneoverK0_transformation open src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::open()$/;" f class:pappso::FastaFileIndexer openDatabaseConnection src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::openDatabaseConnection() const$/;" f class:pappso::TimsData operator () src/pappsomspp/grouping/grpexperiment.cpp /^ operator()(const GrpGroupSp &testGroupSp)$/;" f struct:ContainsAny operator *= src/pappsomspp/mzrange.cpp /^MzRange::operator*=(double number)$/;" f class:pappso::MzRange operator += src/pappsomspp/mzrange.cpp /^MzRange::operator+=(const MzRange &other)$/;" f class:pappso::MzRange operator < src/pappsomspp/amino_acid/aa.cpp /^operator<(Aa const &l, Aa const &r)$/;" f namespace:pappso operator < src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::operator<(const GrpGroup &other) const$/;" f class:GrpGroup operator < src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::operator<(const GrpPeptide &other) const$/;" f class:GrpPeptide operator < src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::operator<(const GrpSubGroup &other) const$/;" f class:pappso::GrpSubGroup operator < src/pappsomspp/peptide/peptide.h /^ operator<(const Peptide &l, const Peptide &r)$/;" f class:pappso::PeptideDirection::Peptide operator << src/pappsomspp/massspectrum/massspectrum.cpp /^operator<<(QDataStream &outstream, const MassSpectrum &massSpectrum)$/;" f namespace:pappso operator << src/pappsomspp/trace/datapoint.cpp /^operator<<(QDataStream &out, const DataPoint &dataPoint)$/;" f namespace:pappso operator << src/pappsomspp/trace/trace.cpp /^operator<<(QDataStream &out, const Trace &trace)$/;" f namespace:pappso operator = src/pappsomspp/amino_acid/aa.cpp /^Aa::operator=(const Aa &toCopy)$/;" f class:pappso::Aa operator = src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::operator=(const GrpPeptideSet &other)$/;" f class:GrpPeptideSet operator = src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::operator=(MassSpectrum &&other)$/;" f class:pappso::MassSpectrum operator = src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::operator=(const MassSpectrum &other)$/;" f class:pappso::MassSpectrum operator = src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::operator=(const MassSpectrumId &other)$/;" f class:pappso::MassSpectrumId operator = src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::operator=(const QualifiedMassSpectrum &other)$/;" f class:pappso::QualifiedMassSpectrum operator = src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::operator=(const MsRunDataSetTreeNode &other)$/;" f class:pappso::MsRunDataSetTreeNode operator = src/pappsomspp/msrun/msrunid.cpp /^MsRunId::operator=(const MsRunId &other)$/;" f class:pappso::MsRunId operator = src/pappsomspp/mzrange.cpp /^MzRange::operator=(const MzRange &other)$/;" f class:pappso::MzRange operator = src/pappsomspp/obo/obopsimodterm.cpp /^OboPsiModTerm::operator=(const OboPsiModTerm &other)$/;" f class:pappso::OboPsiModTerm operator = src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^MassSpectrumMinusCombiner::operator=(const MassSpectrumMinusCombiner &other)$/;" f class:pappso::MassSpectrumMinusCombiner operator = src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^MassSpectrumPlusCombiner::operator=(const MassSpectrumPlusCombiner &other)$/;" f class:pappso::MassSpectrumPlusCombiner operator = src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::operator=(const MzIntegrationParams &other)$/;" f class:pappso::MzIntegrationParams operator = src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::operator=(const SelectionPolygon &other)$/;" f class:pappso::SelectionPolygon operator = src/pappsomspp/processing/combiners/selectionpolygon.h /^ operator=(const SelectionPolygonSpec &other)$/;" f struct:pappso::PolygonType::SelectionPolygonSpec operator = src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::operator=(const TracePeak &other)$/;" f class:pappso::TracePeak operator = src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::operator=($/;" f class:pappso::FilterCeilingAmplitudePercentage operator = src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::operator=($/;" f class:pappso::FilterFloorAmplitudePercentage operator = src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^operator=(const FilterLowIntensitySignalRemoval &other)$/;" f class:pappso::FilterLowIntensitySignalRemoval operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoAntiSpike::operator=(const FilterMorphoAntiSpike &other)$/;" f class:FilterMorphoAntiSpike operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoBackground::operator=(const FilterMorphoBackground &other)$/;" f class:FilterMorphoBackground operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMax::operator=(const FilterMorphoMax &other)$/;" f class:FilterMorphoMax operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMaxMin::operator=(const FilterMorphoMaxMin &other)$/;" f class:FilterMorphoMaxMin operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMean::operator=(const FilterMorphoMean &other)$/;" f class:FilterMorphoMean operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMedian::operator=(const FilterMorphoMedian &other)$/;" f class:FilterMorphoMedian operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMin::operator=(const FilterMorphoMin &other)$/;" f class:FilterMorphoMin operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoMinMax::operator=(const FilterMorphoMinMax &other)$/;" f class:FilterMorphoMinMax operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoSum::operator=(const FilterMorphoSum &other)$/;" f class:FilterMorphoSum operator = src/pappsomspp/processing/filters/filtermorpho.cpp /^FilterMorphoWindowBase::operator=(const FilterMorphoWindowBase &other)$/;" f class:FilterMorphoWindowBase operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterFloorY::operator=([[maybe_unused]] const FilterFloorY &other)$/;" f class:FilterFloorY operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestY::operator=(const FilterGreatestY &other)$/;" f class:FilterGreatestY operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterGreatestYperWindow::operator=(const FilterGreatestYperWindow &other)$/;" f class:FilterGreatestYperWindow operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPass::operator=(const FilterHighPass &other)$/;" f class:FilterHighPass operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterHighPassPercentage::operator=(const FilterHighPassPercentage &other)$/;" f class:FilterHighPassPercentage operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterLowPass::operator=(const FilterLowPass &other)$/;" f class:FilterLowPass operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterQuantileBasedRemoveY::operator=(const FilterQuantileBasedRemoveY &other)$/;" f class:FilterQuantileBasedRemoveY operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterRemoveY::operator=(const FilterRemoveY &other)$/;" f class:FilterRemoveY operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterRescaleY::operator=(const FilterRescaleY &other)$/;" f class:FilterRescaleY operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterRoundY::operator=([[maybe_unused]] const FilterRoundY &other)$/;" f class:FilterRoundY operator = src/pappsomspp/processing/filters/filterpass.cpp /^FilterScaleFactorY::operator=(const FilterScaleFactorY &other)$/;" f class:FilterScaleFactorY operator = src/pappsomspp/processing/filters/filterpass.cpp /^MassSpectrumFilterGreatestItensities::operator=($/;" f class:MassSpectrumFilterGreatestItensities operator = src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepGreater::operator=(const FilterResampleKeepGreater &other)$/;" f class:pappso::FilterResampleKeepGreater operator = src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleKeepXRange::operator=(const FilterResampleKeepXRange &other)$/;" f class:pappso::FilterResampleKeepXRange operator = src/pappsomspp/processing/filters/filterresample.cpp /^FilterResampleRemoveXRange::operator=(const FilterResampleRemoveXRange &other)$/;" f class:pappso::FilterResampleRemoveXRange operator = src/pappsomspp/processing/filters/filterresample.cpp /^operator=(const FilterResampleKeepPointInPolygon &other)$/;" f class:pappso::FilterResampleKeepPointInPolygon operator = src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::operator=(const FilterSavitzkyGolay &other)$/;" f class:pappso::FilterSavitzkyGolay operator = src/pappsomspp/psm/peakionisotopematch.cpp /^PeakIonIsotopeMatch::operator=(const PeakIonIsotopeMatch &other)$/;" f class:pappso::PeakIonIsotopeMatch operator = src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::operator=(const PeakIonMatch &other)$/;" f class:pappso::PeakIonMatch operator = src/pappsomspp/trace/datapoint.cpp /^DataPoint::operator=(const DataPoint &other)$/;" f class:pappso::DataPoint operator = src/pappsomspp/trace/maptrace.cpp /^MapTrace::operator=(const MapTrace &other)$/;" f class:pappso::MapTrace operator = src/pappsomspp/trace/trace.cpp /^Trace::operator=(Trace &&other)$/;" f class:pappso::Trace operator = src/pappsomspp/trace/trace.cpp /^Trace::operator=(const Trace &other)$/;" f class:pappso::Trace operator = src/pappsomspp/widget/plotwidget/baseplotcontext.cpp /^BasePlotContext::operator=(const BasePlotContext &other)$/;" f class:pappso::BasePlotContext operator = src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::operator=(const ColorMapPlotConfig &other)$/;" f class:pappso::ColorMapPlotConfig operator = src/pappsomspp/widget/plotwidget/massspectraceplotcontext.cpp /^MassSpecTracePlotContext::operator=(const MassSpecTracePlotContext &other)$/;" f class:pappso::MassSpecTracePlotContext operator == src/pappsomspp/amino_acid/aa.cpp /^operator==(Aa const &l, Aa const &r)$/;" f namespace:pappso operator == src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::operator==(const GrpPeptideSet &other) const$/;" f class:GrpPeptideSet operator == src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::operator==(const GrpProtein &other) const$/;" f class:GrpProtein operator == src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::operator==(const MassSpectrumId &other) const$/;" f class:pappso::MassSpectrumId operator == src/pappsomspp/msrun/msrunid.cpp /^MsRunId::operator==(const MsRunId &other) const$/;" f class:pappso::MsRunId operator == src/pappsomspp/peptide/peptide.h /^ operator==(const Peptide &l, const Peptide &r)$/;" f class:pappso::PeptideDirection::Peptide operator == src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::operator==(const TracePeak &other) const$/;" f class:pappso::TracePeak operator == src/pappsomspp/protein/protein.cpp /^Protein::operator==(const Protein &other) const$/;" f class:pappso::Protein operator == src/pappsomspp/trace/datapoint.cpp /^DataPoint::operator==(const DataPoint &other) const$/;" f class:pappso::DataPoint operator >> src/pappsomspp/massspectrum/massspectrum.cpp /^operator>>(QDataStream &instream, MassSpectrum &massSpectrum)$/;" f namespace:pappso operator >> src/pappsomspp/trace/datapoint.cpp /^operator>>(QDataStream &in, DataPoint &dataPoint)$/;" f namespace:pappso operator >> src/pappsomspp/trace/trace.cpp /^operator>>(QDataStream &in, Trace &trace)$/;" f namespace:pappso operator >> src/pappsomspp/xicextractor/private/msrunslice.cpp /^operator>>(QDataStream &instream, MsRunSlice &slice)$/;" f namespace:pappso orig src/pappsomspp/types.h /^ orig = 1,$/;" m class:pappso::MzFormat::AxisScale origMaxZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double origMaxZValue = std::numeric_limits::min();$/;" m struct:pappso::ColorMapPlotConfig origMinZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ double origMinZValue = std::numeric_limits::max();$/;" m struct:pappso::ColorMapPlotConfig origTarball maintainer-scripts/makeOrigTarball.py /^origTarball = "{projectName}_{UPVER}.orig.tar".format(projectName = projectName, UPVER = UPVER);$/;" v outermost src/pappsomspp/widget/plotwidget/baseplotwidget.h /^ outermost = 1,$/;" m class:pappso::RangeType output maintainer-scripts/makeOrigTarball.py /^output = completedProcess.stdout.decode("utf-8");$/;" v outputFile maintainer-scripts/makeOrigTarball.py /^outputFile = open(tarballDir + "\/" + srcTarball, 'w');$/;" v override src/pappsomspp/amino_acid/aa.h /^ pappso_double getMass() const override;$/;" m class:pappso::Aa override src/pappsomspp/amino_acid/aabase.h /^ int getNumberOfIsotope(Isotope isotope) const override;$/;" m class:pappso::AaBase override src/pappsomspp/amino_acid/aabase.h /^ virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override;$/;" m class:pappso::AaBase override src/pappsomspp/fasta/fastafileindexer.h /^ std::size_t index) override;$/;" m class:pappso::FastaFileIndexer override src/pappsomspp/fasta/fastafileindexer.h /^ void close() override;$/;" m class:pappso::FastaFileIndexer override src/pappsomspp/fasta/fastafileindexer.h /^ void open() override;$/;" m class:pappso::FastaFileIndexer override src/pappsomspp/fasta/fastaoutputstream.h /^ void writeProtein(const Protein &protein) override;$/;" m class:pappso::FastaOutputStream override src/pappsomspp/msfile/pwizmsfilereader.h /^ getMsRunIds(const QString &run_prefix) override;$/;" m class:pappso::PwizMsFileReader override src/pappsomspp/msfile/pwizmsfilereader.h /^ virtual MzFormat getFileFormat() override;$/;" m class:pappso::PwizMsFileReader override src/pappsomspp/msfile/timsmsfilereader.h /^ getMsRunIds(const QString &run_prefix) override;$/;" m class:pappso::TimsMsFileReader override src/pappsomspp/msfile/timsmsfilereader.h /^ virtual MzFormat getFileFormat() override;$/;" m class:pappso::TimsMsFileReader override src/pappsomspp/msfile/xymsfilereader.h /^ getMsRunIds(const QString &run_prefix) override;$/;" m class:pappso::XyMsFileReader override src/pappsomspp/msfile/xymsfilereader.h /^ virtual MzFormat getFileFormat() override;$/;" m class:pappso::XyMsFileReader override src/pappsomspp/msrun/msrunreader.h /^ const QualifiedMassSpectrum &qualified_mass_spectrum) override;$/;" m class:pappso::MsRunReaderTicChromatogram override src/pappsomspp/msrun/msrunreader.h /^ setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override;$/;" m class:pappso::MsRunReaderRetentionTimeLine override src/pappsomspp/msrun/msrunreader.h /^ setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override;$/;" m class:pappso::MsRunReaderScanNumberMultiMap override src/pappsomspp/msrun/msrunreader.h /^ setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override;$/;" m class:pappso::MsRunSimpleStatistics override src/pappsomspp/msrun/msrunreader.h /^ virtual bool needPeakList() const override;$/;" m class:pappso::MsRunReaderRetentionTimeLine override src/pappsomspp/msrun/msrunreader.h /^ virtual bool needPeakList() const override;$/;" m class:pappso::MsRunReaderScanNumberMultiMap override src/pappsomspp/msrun/msrunreader.h /^ virtual bool needPeakList() const override;$/;" m class:pappso::MsRunReaderTicChromatogram override src/pappsomspp/msrun/msrunreader.h /^ virtual bool needPeakList() const override;$/;" m class:pappso::MsRunSimpleStatistics override src/pappsomspp/msrun/msrunreader.h /^ virtual void loadingEnded() override;$/;" m class:pappso::MsRunSimpleStatistics override src/pappsomspp/msrun/output/mzxmloutput.h /^ setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum) override;$/;" m class:pappso::MzxmlOutput::Translater override src/pappsomspp/msrun/output/mzxmloutput.h /^ virtual bool needPeakList() const override;$/;" m class:pappso::MzxmlOutput::Translater override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ unsigned int ms_level) override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ bool want_binary_data = true) const override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ pappso::PrecisionPtr precision) const override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ std::size_t spectrum_index, pappso::PrecisionPtr precision) const override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ massSpectrumCstSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ massSpectrumSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ virtual bool accept(const QString &file_name) const override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ virtual bool acquireDevice() override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ virtual bool hasScanNumbers() const override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ virtual bool releaseDevice() override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ virtual std::size_t spectrumListSize() const override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/pwizmsrunreader.h /^ virtual void initialize() override;$/;" m class:pappso::PwizMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ unsigned int ms_level) override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ bool want_binary_data = true) const override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ pappso::PrecisionPtr precision) const override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ std::size_t spectrum_index, pappso::PrecisionPtr precision) const override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ massSpectrumCstSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ massSpectrumSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ virtual Trace getTicChromatogram() override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ virtual bool accept(const QString &file_name) const override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ virtual bool acquireDevice() override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ virtual bool hasScanNumbers() const override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ virtual bool releaseDevice() override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ virtual std::size_t spectrumListSize() const override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreader.h /^ virtual void initialize() override;$/;" m class:pappso::TimsMsRunReader override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ unsigned int ms_level) override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ bool want_binary_data = true) const override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ pappso::PrecisionPtr precision) const override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ std::size_t spectrum_index, pappso::PrecisionPtr precision) const override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ massSpectrumCstSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ massSpectrumSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual Trace getTicChromatogram() override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual bool accept(const QString &file_name) const override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual bool acquireDevice() override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual bool hasScanNumbers() const override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual bool releaseDevice() override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual std::size_t spectrumListSize() const override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual std::vector getRetentionTimeLine() override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^ virtual void initialize() override;$/;" m class:pappso::TimsMsRunReaderMs2 override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ bool want_binary_data = true) const override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ massSpectrumCstSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ massSpectrumSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ virtual bool accept(const QString &file_name) const override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ virtual bool hasScanNumbers() const override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ virtual std::size_t spectrumListSize() const override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^ virtual void initialize() override;$/;" m class:pappso::TimsMsRunReaderMs2Selected override src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ virtual QString toString() const override;$/;" m struct:pappso::XicCoordTims override src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ virtual XicCoordSPtr addition(XicCoordSPtr &to_add) const override;$/;" m struct:pappso::XicCoordTims override src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ virtual XicCoordSPtr divideBy(double number) const override;$/;" m struct:pappso::XicCoordTims override src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ virtual XicCoordSPtr initializeAndClone() const override;$/;" m struct:pappso::XicCoordTims override src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ virtual XicCoordSPtr multiplyBy(double number) const override;$/;" m struct:pappso::XicCoordTims override src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ virtual void reset() override;$/;" m struct:pappso::XicCoordTims override src/pappsomspp/msrun/xymsrunreader.h /^ unsigned int ms_level) override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ bool want_binary_data = true) const override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ pappso::PrecisionPtr precision) const override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ std::size_t spectrum_index, pappso::PrecisionPtr precision) const override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ massSpectrumCstSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ massSpectrumSPtr(std::size_t spectrum_index) override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ virtual bool accept(const QString &file_name) const override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ virtual bool acquireDevice() override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ virtual bool releaseDevice() override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ virtual std::size_t spectrumListSize() const override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/msrun/xymsrunreader.h /^ virtual void initialize() override;$/;" m class:pappso::XyMsRunReader override src/pappsomspp/obo/filterobopsimodsink.h /^ void setOboPsiModTerm(const OboPsiModTerm &term) override;$/;" m class:pappso::FilterOboPsiModSink override src/pappsomspp/obo/filterobopsimodtermaccession.h /^ void setOboPsiModTerm(const OboPsiModTerm &term) override;$/;" m class:pappso::FilterOboPsiModTermAccession override src/pappsomspp/obo/filterobopsimodtermdiffmono.h /^ void setOboPsiModTerm(const OboPsiModTerm &term) override;$/;" m class:pappso::FilterOboPsiModTermDiffMono override src/pappsomspp/obo/filterobopsimodtermlabel.h /^ void setOboPsiModTerm(const OboPsiModTerm &term) override;$/;" m class:pappso::FilterOboPsiModTermLabel override src/pappsomspp/obo/filterobopsimodtermname.h /^ void setOboPsiModTerm(const OboPsiModTerm &term) override;$/;" m class:pappso::FilterOboPsiModTermName override src/pappsomspp/peptide/peptide.h /^ const QString getSequence() const override;$/;" m class:pappso::PeptideDirection::Peptide override src/pappsomspp/peptide/peptide.h /^ virtual bool isPalindrome() const override;$/;" m class:pappso::PeptideDirection::Peptide override src/pappsomspp/peptide/peptide.h /^ virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override;$/;" m class:pappso::PeptideDirection::Peptide override src/pappsomspp/peptide/peptide.h /^ virtual int getNumberOfIsotope(Isotope isotope) const override;$/;" m class:pappso::PeptideDirection::Peptide override src/pappsomspp/peptide/peptidefragment.h /^ virtual bool isPalindrome() const override;$/;" m class:pappso::PeptideFragment override src/pappsomspp/peptide/peptidefragment.h /^ virtual const QString getSequence() const override;$/;" m class:pappso::PeptideFragment override src/pappsomspp/peptide/peptidefragment.h /^ virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override;$/;" m class:pappso::PeptideFragment override src/pappsomspp/peptide/peptidefragment.h /^ virtual int getNumberOfIsotope(Isotope isotope) const override;$/;" m class:pappso::PeptideFragment override src/pappsomspp/peptide/peptidefragment.h /^ virtual pappso_double getMass() const override;$/;" m class:pappso::PeptideFragment override src/pappsomspp/peptide/peptidefragment.h /^ virtual unsigned int size() const override;$/;" m class:pappso::PeptideFragment override src/pappsomspp/peptide/peptidefragmention.h /^ pappso_double getMass() const override;$/;" m class:pappso::PeptideFragmentIon override src/pappsomspp/peptide/peptidefragmention.h /^ virtual bool isPalindrome() const override;$/;" m class:pappso::PeptideFragmentIon override src/pappsomspp/peptide/peptidefragmention.h /^ virtual const QString getName() const override;$/;" m class:pappso::PeptideFragmentIon override src/pappsomspp/peptide/peptidefragmention.h /^ virtual const QString getSequence() const override;$/;" m class:pappso::PeptideFragmentIon override src/pappsomspp/peptide/peptidefragmention.h /^ virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override;$/;" m class:pappso::PeptideFragmentIon override src/pappsomspp/peptide/peptidefragmention.h /^ virtual int getNumberOfIsotope(Isotope isotope) const override;$/;" m class:pappso::PeptideFragmentIon override src/pappsomspp/peptide/peptidefragmention.h /^ virtual unsigned int size() const override;$/;" m class:pappso::PeptideFragmentIon override src/pappsomspp/peptide/peptidenaturalisotope.h /^ pappso_double getMass() const override;$/;" m class:pappso::PeptideNaturalIsotope override src/pappsomspp/peptide/peptidenaturalisotope.h /^ virtual bool isPalindrome() const override;$/;" m class:pappso::PeptideNaturalIsotope override src/pappsomspp/peptide/peptidenaturalisotope.h /^ virtual const QString getSequence() const override;$/;" m class:pappso::PeptideNaturalIsotope override src/pappsomspp/peptide/peptidenaturalisotope.h /^ virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override;$/;" m class:pappso::PeptideNaturalIsotope override src/pappsomspp/peptide/peptidenaturalisotope.h /^ virtual int getNumberOfIsotope(Isotope isotope) const override;$/;" m class:pappso::PeptideNaturalIsotope override src/pappsomspp/peptide/peptidenaturalisotope.h /^ virtual unsigned int size() const override;$/;" m class:pappso::PeptideNaturalIsotope override src/pappsomspp/precision.h /^ virtual PrecisionUnit unit() const override;$/;" m class:pappso::DaltonPrecision override src/pappsomspp/precision.h /^ virtual PrecisionUnit unit() const override;$/;" m class:pappso::PpmPrecision override src/pappsomspp/precision.h /^ virtual PrecisionUnit unit() const override;$/;" m class:pappso::ResPrecision override src/pappsomspp/precision.h /^ virtual QString toString() const override;$/;" m class:pappso::DaltonPrecision override src/pappsomspp/precision.h /^ virtual QString toString() const override;$/;" m class:pappso::PpmPrecision override src/pappsomspp/precision.h /^ virtual QString toString() const override;$/;" m class:pappso::ResPrecision override src/pappsomspp/precision.h /^ virtual pappso_double delta(pappso_double value) const override;$/;" m class:pappso::DaltonPrecision override src/pappsomspp/precision.h /^ virtual pappso_double delta(pappso_double value) const override;$/;" m class:pappso::PpmPrecision override src/pappsomspp/precision.h /^ virtual pappso_double delta(pappso_double value) const override;$/;" m class:pappso::ResPrecision override src/pappsomspp/processing/combiners/massspectrumminuscombiner.h /^ const MapTrace &map_trace_in) const override;$/;" m class:pappso::MassSpectrumMinusCombiner override src/pappsomspp/processing/combiners/massspectrumminuscombiner.h /^ const Trace &trace) const override;$/;" m class:pappso::MassSpectrumMinusCombiner override src/pappsomspp/processing/combiners/massspectrumpluscombiner.h /^ const MapTrace &map_trace_in) const override;$/;" m class:pappso::MassSpectrumPlusCombiner override src/pappsomspp/processing/combiners/massspectrumpluscombiner.h /^ const Trace &trace) const override;$/;" m class:pappso::MassSpectrumPlusCombiner override src/pappsomspp/processing/combiners/traceminuscombiner.h /^ const Trace &trace) const override;$/;" m class:pappso::TraceMinusCombiner override src/pappsomspp/processing/combiners/traceminuscombiner.h /^ const MapTrace &map_trace_in) const override;$/;" m class:pappso::TraceMinusCombiner override src/pappsomspp/processing/combiners/tracepluscombiner.h /^ const Trace &trace) const override;$/;" m class:pappso::TracePlusCombiner override src/pappsomspp/processing/combiners/tracepluscombiner.h /^ const MapTrace &map_trace_in) const override;$/;" m class:pappso::TracePlusCombiner override src/pappsomspp/processing/detection/tracedetectionmoulon.h /^ bool remove_peak_base) const override;$/;" m class:pappso::TraceDetectionMoulon override src/pappsomspp/processing/detection/tracedetectionzivy.h /^ bool remove_peak_base) const override;$/;" m class:pappso::TraceDetectionZivy override src/pappsomspp/processing/detection/tracepeaklist.h /^ virtual void setTracePeak(TracePeak &xic_peak) override;$/;" m class:pappso::TracePeakList override src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^ QString name() const override;$/;" m class:pappso::FilterCeilingAmplitudePercentage override src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^ QString toString() const override;$/;" m class:pappso::FilterCeilingAmplitudePercentage override src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterCeilingAmplitudePercentage override src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterCeilingAmplitudePercentage override src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ QString toString() const override;$/;" m class:pappso::FilterChargeDeconvolution override src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterChargeDeconvolution override src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ virtual QString name() const override;$/;" m class:pappso::FilterChargeDeconvolution override src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterChargeDeconvolution override src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^ QString name() const override;$/;" m class:pappso::FilterComplementIonEnhancer override src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^ QString toString() const override;$/;" m class:pappso::FilterComplementIonEnhancer override src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterComplementIonEnhancer override src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterComplementIonEnhancer override src/pappsomspp/processing/filters/filterexclusionmz.h /^ QString name() const override;$/;" m class:pappso::FilterMzExclusion override src/pappsomspp/processing/filters/filterexclusionmz.h /^ QString toString() const override;$/;" m class:pappso::FilterMzExclusion override src/pappsomspp/processing/filters/filterexclusionmz.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterMzExclusion override src/pappsomspp/processing/filters/filterexclusionmz.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterMzExclusion override src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^ QString name() const override;$/;" m class:pappso::FilterFloorAmplitudePercentage override src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^ QString toString() const override;$/;" m class:pappso::FilterFloorAmplitudePercentage override src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterFloorAmplitudePercentage override src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterFloorAmplitudePercentage override src/pappsomspp/processing/filters/filterlocalmaximum.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterLocalMaximum override src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ QString name() const override;$/;" m class:pappso::FilterLowIntensitySignalRemoval override src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ QString toString() const override;$/;" m class:pappso::FilterLowIntensitySignalRemoval override src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterLowIntensitySignalRemoval override src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterLowIntensitySignalRemoval override src/pappsomspp/processing/filters/filtermorpho.h /^ std::vector::const_iterator end) const override;$/;" m class:pappso::FilterMorphoMax override src/pappsomspp/processing/filters/filtermorpho.h /^ std::vector::const_iterator end) const override;$/;" m class:pappso::FilterMorphoMean override src/pappsomspp/processing/filters/filtermorpho.h /^ std::vector::const_iterator end) const override;$/;" m class:pappso::FilterMorphoMedian override src/pappsomspp/processing/filters/filtermorpho.h /^ std::vector::const_iterator end) const override;$/;" m class:pappso::FilterMorphoMin override src/pappsomspp/processing/filters/filtermorpho.h /^ std::vector::const_iterator end) const override;$/;" m class:pappso::FilterMorphoSum override src/pappsomspp/processing/filters/filtermorpho.h /^ QString name() const override;$/;" m class:pappso::FilterMorphoAntiSpike override src/pappsomspp/processing/filters/filtermorpho.h /^ QString toString() const override;$/;" m class:pappso::FilterMorphoAntiSpike override src/pappsomspp/processing/filters/filtermorpho.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterMorphoAntiSpike override src/pappsomspp/processing/filters/filtermorpho.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterMorphoBackground override src/pappsomspp/processing/filters/filtermorpho.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterMorphoMaxMin override src/pappsomspp/processing/filters/filtermorpho.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterMorphoMinMax override src/pappsomspp/processing/filters/filtermorpho.h /^ virtual Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterMorphoWindowBase override src/pappsomspp/processing/filters/filtermorpho.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterMorphoAntiSpike override src/pappsomspp/processing/filters/filterpass.h /^ MassSpectrum &filter(MassSpectrum &spectrum) const override;$/;" m class:pappso::MassSpectrumFilterGreatestItensities override src/pappsomspp/processing/filters/filterpass.h /^ QString toString() const override;$/;" m class:pappso::FilterQuantileBasedRemoveY override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterFloorY override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterGreatestY override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterGreatestYperWindow override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterHighPass override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterHighPassPercentage override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterLowPass override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterQuantileBasedRemoveY override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterRemoveY override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterRescaleY override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterRoundY override src/pappsomspp/processing/filters/filterpass.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterScaleFactorY override src/pappsomspp/processing/filters/filterpass.h /^ virtual QString name() const override;$/;" m class:pappso::FilterQuantileBasedRemoveY override src/pappsomspp/processing/filters/filterpass.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterQuantileBasedRemoveY override src/pappsomspp/processing/filters/filterremovec13.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterRemoveC13 override src/pappsomspp/processing/filters/filterresample.h /^ MassSpectrum &filter(MassSpectrum &spectrum) const override;$/;" m class:pappso::MassSpectrumFilterResampleKeepMzRange override src/pappsomspp/processing/filters/filterresample.h /^ MassSpectrum &filter(MassSpectrum &spectrum) const override;$/;" m class:pappso::MassSpectrumFilterResampleRemoveMzRange override src/pappsomspp/processing/filters/filterresample.h /^ Trace &filter(Trace &trace) const override;$/;" m class:pappso::FilterResampleKeepGreater override src/pappsomspp/processing/filters/filterresample.h /^ Trace &filter(Trace &trace) const override;$/;" m class:pappso::FilterResampleKeepPointInPolygon override src/pappsomspp/processing/filters/filterresample.h /^ Trace &filter(Trace &trace) const override;$/;" m class:pappso::FilterResampleKeepSmaller override src/pappsomspp/processing/filters/filterresample.h /^ Trace &filter(Trace &trace) const override;$/;" m class:pappso::FilterResampleKeepXRange override src/pappsomspp/processing/filters/filterresample.h /^ Trace &filter(Trace &trace) const override;$/;" m class:pappso::FilterResampleRemoveXRange override src/pappsomspp/processing/filters/filtersuite.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterSuite override src/pappsomspp/processing/filters/filtersuitestring.h /^ QString toString() const override;$/;" m class:pappso::FilterSuiteString override src/pappsomspp/processing/filters/filtersuitestring.h /^ pappso::Trace &filter(pappso::Trace &data_points) const override;$/;" m class:pappso::FilterSuiteString override src/pappsomspp/processing/filters/filtersuitestring.h /^ virtual QString name() const override;$/;" m class:pappso::FilterSuiteString override src/pappsomspp/processing/filters/filtersuitestring.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterSuiteString override src/pappsomspp/processing/filters/filtertandemremovec13.h /^ MassSpectrum &filter(MassSpectrum &data_points) const override;$/;" m class:pappso::FilterTandemDeisotope override src/pappsomspp/processing/filters/filtertriangle.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterTriangle override src/pappsomspp/processing/filters/savgolfilter.h /^ QString name() const override;$/;" m class:pappso::FilterSavitzkyGolay override src/pappsomspp/processing/filters/savgolfilter.h /^ QString toString() const override;$/;" m class:pappso::FilterSavitzkyGolay override src/pappsomspp/processing/filters/savgolfilter.h /^ Trace &filter(Trace &data_points) const override;$/;" m class:pappso::FilterSavitzkyGolay override src/pappsomspp/processing/filters/savgolfilter.h /^ void buildFilterFromString(const QString &strBuildParams) override;$/;" m class:pappso::FilterSavitzkyGolay override src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^ virtual void readStream() override;$/;" m class:pappso::WrapTandemInput override src/pappsomspp/processing/tandemwrapper/wraptandemresults.h /^ virtual void readStream() override;$/;" m class:pappso::WrapTandemResults override src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h /^ virtual void readStream() override;$/;" m class:pappso::XtandemPresetReader override src/pappsomspp/processing/uimonitor/uimonitortext.h /^ virtual bool shouldIstop() override;$/;" m class:pappso::UiMonitorText override src/pappsomspp/processing/uimonitor/uimonitortext.h /^ virtual void appendText(const QString &text) override;$/;" m class:pappso::UiMonitorText override src/pappsomspp/processing/uimonitor/uimonitortext.h /^ virtual void count() override;$/;" m class:pappso::UiMonitorText override src/pappsomspp/processing/uimonitor/uimonitortext.h /^ virtual void setStatus(const QString &status) override;$/;" m class:pappso::UiMonitorText override src/pappsomspp/processing/uimonitor/uimonitortext.h /^ virtual void setTitle(const QString &title) override;$/;" m class:pappso::UiMonitorText override src/pappsomspp/processing/uimonitor/uimonitortextpercent.h /^ virtual void count() override;$/;" m class:pappso::UiMonitorTextPercent override src/pappsomspp/protein/peptidebuilder.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideBuilder override src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideFixedModificationBuilder override src/pappsomspp/protein/peptidemethioninremove.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideMethioninRemove override src/pappsomspp/protein/peptidemodificatorpipeline.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideModificatorPipeline override src/pappsomspp/protein/peptidemodificatorpipeline.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideModificatorPipeline override src/pappsomspp/protein/peptidemodificatorpipeline.h /^ void setSink(PeptideModificatorInterface *sink) override;$/;" m class:pappso::PeptideModificatorPipeline override src/pappsomspp/protein/peptidemodificatortee.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideModificatorTee override src/pappsomspp/protein/peptidesemienzyme.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideSemiEnzyme override src/pappsomspp/protein/peptidesizefilter.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideSizeFilter override src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideVariableModificationBuilder override src/pappsomspp/protein/peptidevariablemodificationreplacement.h /^ bool semi_enzyme) override;$/;" m class:pappso::PeptideVariableModificationReplacement override src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^ virtual double getMzFromTofIndex(quint32 tof_index) override;$/;" m class:pappso::MzCalibrationModel1 override src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^ virtual double getMzFromTofIndex(quint32 tof_index) override;$/;" m class:pappso::MzCalibrationModel1Cached override src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^ virtual quint32 getTofIndexFromMz(double mz) override;$/;" m class:pappso::MzCalibrationModel1 override src/pappsomspp/vendors/tims/timsframe.h /^ std::size_t scanNumEnd) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframe.h /^ std::size_t scanNumEnd) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframe.h /^ std::size_t scanNumEnd) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframe.h /^ getMassSpectrumSPtr(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframe.h /^ getScanIndexList(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframe.h /^ getScanIntensities(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframe.h /^ virtual quint64 cumulateSingleScanIntensities(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframe.h /^ virtual std::size_t getNbrPeaks(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrame override src/pappsomspp/vendors/tims/timsframetype1.h /^ std::map &accumulate_into) const override;$/;" m class:pappso::TimsFrameType1 override src/pappsomspp/vendors/tims/timsframetype1.h /^ getMassSpectrumSPtr(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrameType1 override src/pappsomspp/vendors/tims/timsframetype1.h /^ getScanIndexList(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrameType1 override src/pappsomspp/vendors/tims/timsframetype1.h /^ getScanIntensities(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrameType1 override src/pappsomspp/vendors/tims/timsframetype1.h /^ virtual pappso::TraceSPtr getRawTraceSPtr(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrameType1 override src/pappsomspp/vendors/tims/timsframetype1.h /^ virtual std::size_t getNbrPeaks(std::size_t scanNum) const override;$/;" m class:pappso::TimsFrameType1 override src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.h /^ std::vector::iterator it_xic_coord_list_end) override;$/;" m class:pappso::TimsDirectXicExtractor override src/pappsomspp/widget/httpbutton/httpbutton.h /^ void mousePressEvent(QMouseEvent *e) override;$/;" m class:pappso::HttpButton override src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^ void toQPaintDevice(QPaintDevice *device, const QSize &size) override;$/;" m class:pappso::MassSpectrumWidget override src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::QCPSpectrum override src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::QCPSpectrum override src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ virtual void mouseMoveEvent(QMouseEvent *event) override;$/;" m class:pappso::QCPSpectrum override src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ virtual void mousePressEvent(QMouseEvent *event) override;$/;" m class:pappso::QCPSpectrum override src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^ virtual void mouseReleaseEvent(QMouseEvent *event) override;$/;" m class:pappso::QCPSpectrum override src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^ int role = Qt::DisplayRole) const override;$/;" m class:pappso::OboListModel override src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^ void setOboPsiModTerm(const OboPsiModTerm &term) override;$/;" m class:pappso::OboListModel::OboPsiModHandler override src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^ int rowCount(const QModelIndex &parent = QModelIndex()) const override;$/;" m class:pappso::OboListModel override src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h /^ const QModelIndex &source_parent) const override;$/;" m class:pappso::OboListProxyModel override src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h /^ const QModelIndex &source_right) const override;$/;" m class:pappso::OboListProxyModel override src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^ const QColor &new_color) override;$/;" m class:pappso::BaseColorMapPlotWidget override src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^ virtual QColor getPlottingColor(int index = 0) const override;$/;" m class:pappso::BaseColorMapPlotWidget override src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^ QMouseEvent *event) override;$/;" m class:pappso::BaseTracePlotWidget override src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^ virtual void axisPan() override;$/;" m class:pappso::BaseTracePlotWidget override src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^ virtual void axisReframe() override;$/;" m class:pappso::BaseTracePlotWidget override src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^ virtual void axisRescale() override;$/;" m class:pappso::BaseTracePlotWidget override src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^ virtual void axisZoom() override;$/;" m class:pappso::BaseTracePlotWidget override src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ virtual void mouseMoveHandler(QMouseEvent *event) override;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ virtual void mouseMoveHandlerDraggingCursor() override;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ virtual void mouseMoveHandlerNotDraggingCursor() override;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ virtual void mousePressHandler(QMouseEvent *event) override;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^ virtual void mouseReleaseHandler(QMouseEvent *event) override;$/;" m class:pappso::DriftSpecMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::DriftSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::DriftSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ virtual void mouseMoveHandler(QMouseEvent *event) override;$/;" m class:pappso::DriftSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ virtual void mouseMoveHandlerDraggingCursor() override;$/;" m class:pappso::DriftSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ virtual void mouseMoveHandlerNotDraggingCursor() override;$/;" m class:pappso::DriftSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ virtual void mousePressHandler(QMouseEvent *event) override;$/;" m class:pappso::DriftSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^ virtual void mouseReleaseHandler(QMouseEvent *event) override;$/;" m class:pappso::DriftSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::MassSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::MassSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ virtual void mouseMoveHandler(QMouseEvent *event) override;$/;" m class:pappso::MassSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ virtual void mouseMoveHandlerDraggingCursor() override;$/;" m class:pappso::MassSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ virtual void mouseMoveHandlerNotDraggingCursor() override;$/;" m class:pappso::MassSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ virtual void mousePressHandler(QMouseEvent *event) override;$/;" m class:pappso::MassSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^ virtual void mouseReleaseHandler(QMouseEvent *event) override;$/;" m class:pappso::MassSpecTracePlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ virtual void mouseMoveHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ virtual void mouseMoveHandlerDraggingCursor() override;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ virtual void mouseMoveHandlerNotDraggingCursor() override;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ virtual void mousePressHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^ virtual void mouseReleaseHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromDriftSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ virtual void mouseMoveHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ virtual void mouseMoveHandlerDraggingCursor() override;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ virtual void mouseMoveHandlerNotDraggingCursor() override;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ virtual void mousePressHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^ virtual void mouseReleaseHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromMassSpecColorMapPlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::TicXicChromTracePlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::TicXicChromTracePlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ virtual void mouseMoveHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromTracePlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ virtual void mouseMoveHandlerDraggingCursor() override;$/;" m class:pappso::TicXicChromTracePlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ virtual void mouseMoveHandlerNotDraggingCursor() override;$/;" m class:pappso::TicXicChromTracePlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ virtual void mousePressHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromTracePlotWidget override src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^ virtual void mouseReleaseHandler(QMouseEvent *event) override;$/;" m class:pappso::TicXicChromTracePlotWidget override src/pappsomspp/widget/xicwidget/qcpxic.h /^ virtual void keyPressEvent(QKeyEvent *event) override;$/;" m class:pappso::QCPXic override src/pappsomspp/widget/xicwidget/qcpxic.h /^ virtual void keyReleaseEvent(QKeyEvent *event) override;$/;" m class:pappso::QCPXic override src/pappsomspp/widget/xicwidget/qcpxic.h /^ virtual void mouseMoveEvent(QMouseEvent *event) override;$/;" m class:pappso::QCPXic override src/pappsomspp/widget/xicwidget/qcpxic.h /^ virtual void mousePressEvent(QMouseEvent *event) override;$/;" m class:pappso::QCPXic override src/pappsomspp/widget/xicwidget/qcpxic.h /^ virtual void mouseReleaseEvent(QMouseEvent *event) override;$/;" m class:pappso::QCPXic override src/pappsomspp/widget/xicwidget/xicwidget.h /^ void toQPaintDevice(QPaintDevice *device, const QSize &size) override;$/;" m class:pappso::XicWidget override src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ std::vector::iterator it_xic_coord_list_end) override;$/;" m class:pappso::MsRunXicExtractor override src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^ std::vector::iterator it_xic_coord_list_end) override;$/;" m class:pappso::MsRunXicExtractorDisk override src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h /^ std::size_t ipos) override;$/;" m class:pappso::MsRunXicExtractorDiskBuffer override src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h /^ virtual void endPwizRead() override;$/;" m class:pappso::MsRunXicExtractorDiskBuffer p Session.vim /^nnoremap p :call nerdtree#ui_glue#invokeKeyMap("p")$/;" m pappso src/pappsomspp/amino_acid/aa.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/amino_acid/aa.h /^namespace pappso$/;" n pappso src/pappsomspp/amino_acid/aabase.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/amino_acid/aabase.h /^namespace pappso$/;" n pappso src/pappsomspp/amino_acid/aamodification.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/amino_acid/aamodification.h /^namespace pappso$/;" n pappso src/pappsomspp/amino_acid/atomnumberinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/exception/exceptioninterrupted.h /^namespace pappso$/;" n pappso src/pappsomspp/exception/exceptionnotfound.h /^namespace pappso$/;" n pappso src/pappsomspp/exception/exceptionnotimplemented.h /^namespace pappso$/;" n pappso src/pappsomspp/exception/exceptionnotpossible.h /^namespace pappso$/;" n pappso src/pappsomspp/exception/exceptionnotrecognized.h /^namespace pappso$/;" n pappso src/pappsomspp/exception/exceptionoutofrange.h /^namespace pappso$/;" n pappso src/pappsomspp/exportinmportconfig.h /^namespace pappso$/;" n pappso src/pappsomspp/fasta/fastafileindexer.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/fasta/fastafileindexer.h /^namespace pappso$/;" n pappso src/pappsomspp/fasta/fastahandlerinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/fasta/fastaoutputstream.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/fasta/fastaoutputstream.h /^namespace pappso$/;" n pappso src/pappsomspp/fasta/fastareader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/fasta/fastareader.h /^namespace pappso$/;" n pappso src/pappsomspp/fasta/fastawriterinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpexperiment.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpgroup.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpgroupingmonitor.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/grouping/grpgroupingmonitor.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpmappeptidetogroup.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/grouping/grpmappeptidetogroup.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/grouping/grpmappeptidetosubgroupset.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grppeptide.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grppeptideset.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpprotein.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpsubgroup.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/grouping/grpsubgroup.h /^namespace pappso$/;" n pappso src/pappsomspp/grouping/grpsubgroupset.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/grouping/grpsubgroupset.h /^namespace pappso$/;" n pappso src/pappsomspp/massspectrum/massspectrum.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/massspectrum/massspectrum.h /^namespace pappso$/;" n pappso src/pappsomspp/massspectrum/massspectrumid.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/massspectrum/massspectrumid.h /^namespace pappso$/;" n pappso src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/massspectrum/qualifiedmassspectrum.h /^namespace pappso$/;" n pappso src/pappsomspp/msfile/msfileaccessor.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msfile/msfileaccessor.h /^namespace pappso$/;" n pappso src/pappsomspp/msfile/msfilereader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msfile/msfilereader.h /^namespace pappso$/;" n pappso src/pappsomspp/msfile/mzformatenumstr.h /^namespace pappso$/;" n pappso src/pappsomspp/msfile/pwizmsfilereader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msfile/pwizmsfilereader.h /^namespace pappso$/;" n pappso src/pappsomspp/msfile/timsmsfilereader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msfile/timsmsfilereader.h /^namespace pappso$/;" n pappso src/pappsomspp/msfile/xymsfilereader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msfile/xymsfilereader.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/alignment/msrunalignment.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/alignment/msrunretentiontime.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/msrundatasettree.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msrun/msrundatasettree.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/msrundatasettreenode.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msrun/msrundatasettreenode.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/msrundatasettreevisitor.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/msrunid.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msrun/msrunid.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/msrunreader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msrun/msrunreader.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/output/mgfoutput.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/output/mzxmloutput.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msrun/private/pwizmsrunreader.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/private/timsmsrunreader.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/private/timsmsrunreaderms2.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/private/timsmsrunreaderms2selected.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/xiccoord/xiccoord.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^namespace pappso$/;" n pappso src/pappsomspp/msrun/xymsrunreader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/msrun/xymsrunreader.h /^namespace pappso$/;" n pappso src/pappsomspp/mzrange.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/mzrange.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/filterobopsimodsink.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/obo/filterobopsimodsink.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/filterobopsimodtermaccession.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/obo/filterobopsimodtermaccession.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/filterobopsimodtermdiffmono.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/obo/filterobopsimodtermdiffmono.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/filterobopsimodtermlabel.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/obo/filterobopsimodtermlabel.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/filterobopsimodtermname.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/obo/filterobopsimodtermname.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/obopsimod.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/obo/obopsimod.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/obopsimodhandlerinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/obo/obopsimodterm.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/obo/obopsimodterm.h /^namespace pappso$/;" n pappso src/pappsomspp/pappsoexception.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/ion.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/ion.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptide.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptide.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptidefragment.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptidefragment.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptidefragmention.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptidefragmention.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptidefragmentionlistbase.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptideinterface.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptideinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptidenaturalisotope.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptidenaturalisotope.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptidenaturalisotopeaverage.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptidenaturalisotopelist.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptiderawfragmentmasses.h /^namespace pappso$/;" n pappso src/pappsomspp/peptide/peptidestrparser.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/peptide/peptidestrparser.h /^namespace pappso$/;" n pappso src/pappsomspp/precision.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/precision.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/massdatacombinerinterface.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/massdatacombinerinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/massspectrumcombiner.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/massspectrumminuscombiner.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/massspectrumpluscombiner.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/mzintegrationparams.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/selectionpolygon.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/selectionpolygon.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/tracecombiner.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/tracecombiner.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/traceminuscombiner.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/combiners/tracepluscombiner.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/detection/tracedetectioninterface.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/detection/tracedetectionmoulon.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/detection/tracedetectionzivy.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/detection/tracepeak.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/detection/tracepeak.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/detection/tracepeaklist.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/filters/filterceilingamplitudepercentage.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterchargedeconvolution.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filtercomplementionenhancer.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterexclusionmz.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/filters/filterflooramplitudepercentage.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterlocalmaximum.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/filters/filterlowintensitysignalremoval.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filtermorpho.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filternameinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterpass.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterremovec13.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filterresample.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/filters/filterresample.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filtersuite.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filtersuitestring.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/filters/filtersuitestring.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filtertandemremovec13.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/filtertriangle.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/filters/savgolfilter.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/filters/savgolfilter.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/tandemwrapper/wraptandeminput.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/tandemwrapper/wraptandemresults.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/tandemwrapper/wraptandemresults.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/processing/tandemwrapper/xtandempresetreader.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/uimonitor/uimonitorinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/uimonitor/uimonitortext.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/uimonitor/uimonitortextpercent.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/uimonitor/uimonitorvoid.h /^namespace pappso$/;" n pappso src/pappsomspp/processing/xml/xmlstreamreaderinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/enzyme.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/enzyme.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/enzymeproductinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidebuilder.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/peptidebuilder.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidemethioninremove.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/peptidemethioninremove.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidemodificatorbase.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/peptidemodificatorbase.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidemodificatorpipeline.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidemodificatortee.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidesemienzyme.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/peptidesemienzyme.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidesizefilter.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/peptidesizefilter.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidevariablemodificationbuilder.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/peptidevariablemodificationreplacement.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/peptidevariablemodificationreplacement.h /^namespace pappso$/;" n pappso src/pappsomspp/protein/protein.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/protein/protein.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/deepprot/deepprotenum.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/experimental/ionisotoperatioscore.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/features/psmfeatures.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/morpheus/morpheusscore.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/psm/morpheus/morpheusscore.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/peakionisotopematch.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/psm/peakionisotopematch.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/peakionmatch.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/psm/peakionmatch.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/psm/peptideisotopespectrummatch.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/peptidespectrummatch.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/psm/peptidespectrummatch.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/psm/xtandem/xtandemhyperscore.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/xtandem/xtandemhyperscorebis.h /^namespace pappso$/;" n pappso src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/psm/xtandem/xtandemspectrumprocess.h /^namespace pappso$/;" n pappso src/pappsomspp/trace/datapoint.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/trace/datapoint.h /^namespace pappso$/;" n pappso src/pappsomspp/trace/linearregression.h /^namespace pappso$/;" n pappso src/pappsomspp/trace/maptrace.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/trace/maptrace.h /^namespace pappso$/;" n pappso src/pappsomspp/trace/trace.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/trace/trace.h /^namespace pappso$/;" n pappso src/pappsomspp/types.h /^namespace pappso$/;" n pappso src/pappsomspp/utils.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/utils.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsbindec.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsdata.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/vendors/tims/timsdata.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsframe.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/vendors/tims/timsframe.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsframebase.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/vendors/tims/timsframebase.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsframerawdatachunck.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsframerecord.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsframetype1.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/vendors/tims/timsframetype1.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/timsms2centroidfilter.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.h /^namespace pappso$/;" n pappso src/pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/httpbutton/httpbutton.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/obo/obolistwidget/obolistmodel.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/obo/obolistwidget/obolistwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/obo/obotermform/obotermform.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/basecolormapplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/baseplotcontext.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/baseplotcontext.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/baseplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/basetraceplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/massspectraceplotcontext.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/massspectraceplotcontext.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/massspectraceplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/widget/precisionwidget/precisionwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/xicwidget/qcpxic.h /^namespace pappso$/;" n pappso src/pappsomspp/widget/xicwidget/xicwidget.h /^namespace pappso$/;" n pappso src/pappsomspp/xic/qualifiedxic.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xic/qualifiedxic.h /^namespace pappso$/;" n pappso src/pappsomspp/xic/xic.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xic/xic.h /^namespace pappso$/;" n pappso src/pappsomspp/xic/xicpeptidefragmention.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xic/xicpeptidefragmention.h /^namespace pappso$/;" n pappso src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.h /^namespace pappso$/;" n pappso src/pappsomspp/xic/xicpeptideinterface.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xic/xicpeptideinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xicextractor/msrunxicextractorfactory.h /^namespace pappso$/;" n pappso src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xicextractor/msrunxicextractorinterface.h /^namespace pappso$/;" n pappso src/pappsomspp/xicextractor/private/msrunslice.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xicextractor/private/msrunslice.h /^namespace pappso$/;" n pappso src/pappsomspp/xicextractor/private/msrunxicextractor.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xicextractor/private/msrunxicextractor.h /^namespace pappso$/;" n pappso src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xicextractor/private/msrunxicextractordisk.h /^namespace pappso$/;" n pappso src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp /^namespace pappso$/;" n file: pappso src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.h /^namespace pappso$/;" n pappso tests/test_massspectrumcombiner.cpp /^namespace pappso$/;" n file: pappso tests/test_protein.cpp /^namespace pappso$/;" n file: pappso_double src/pappsomspp/types.h /^typedef double pappso_double;$/;" t namespace:pappso pappso_float src/pappsomspp/types.h /^typedef float pappso_float;$/;" t namespace:pappso parent src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ std::weak_ptr parent;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo parent_frame src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t parent_frame = 0;$/;" m struct:pappso::TimsData::SpectrumDescr parse src/pappsomspp/fasta/fastareader.cpp /^FastaReader::parse(QFile &fastaFile)$/;" f class:pappso::FastaReader parse src/pappsomspp/fasta/fastareader.cpp /^FastaReader::parse(QIODevice *p_inputstream)$/;" f class:pappso::FastaReader parse src/pappsomspp/obo/obopsimod.cpp /^OboPsiMod::parse()$/;" f class:pappso::OboPsiMod parseDefinitionLabel src/pappsomspp/widget/obo/obotermform/obotermform.cpp /^pappso::OboTermForm::parseDefinitionLabel()$/;" f class:pappso::OboTermForm parseFastaFile src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::parseFastaFile()$/;" f class:pappso::FastaFileIndexer parseFixedModification src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::parseFixedModification(const QString &mod_str,$/;" f class:PeptideModificatorPipeline parseLabeledModification src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::parseLabeledModification(const QString &mod_str,$/;" f class:PeptideModificatorPipeline parseLine src/pappsomspp/obo/obopsimodterm.cpp /^OboPsiModTerm::parseLine(const QString &line)$/;" f class:pappso::OboPsiModTerm parseNoConstString src/pappsomspp/peptide/peptidestrparser.cpp /^PeptideStrParser::parseNoConstString(const QString &pepstr)$/;" f class:pappso::PeptideStrParser parseOnlyOne src/pappsomspp/fasta/fastareader.cpp /^FastaReader::parseOnlyOne(QTextStream &p_in)$/;" f class:pappso::FastaReader parsePotentialModification src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::parsePotentialModification(const QString &mod_str,$/;" f class:PeptideModificatorPipeline parseString src/pappsomspp/peptide/peptidestrparser.cpp /^PeptideStrParser::parseString(const QString &pepstr)$/;" f class:pappso::PeptideStrParser parseStringToPeptide src/pappsomspp/peptide/peptidestrparser.cpp /^PeptideStrParser::parseStringToPeptide(const QString &pepstr, Peptide &peptide)$/;" f class:pappso::PeptideStrParser parser maintainer-scripts/makeOrigTarball.py /^parser = argparse.ArgumentParser()$/;" v peak src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ DataPoint peak;$/;" m struct:pappso::RawFragmentationMode::SimplePeakIonMatch peakChangeEvent src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::peakChangeEvent(const DataPoint *p_peak_match)$/;" f class:MassSpectrumWidget peptideAnnotate src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::peptideAnnotate()$/;" f class:MassSpectrumWidget peptideIonIsNter src/pappsomspp/peptide/peptide.cpp /^peptideIonIsNter(PeptideIon ion_type)$/;" f namespace:pappso peptideIonTypeIsComplement src/pappsomspp/peptide/peptide.cpp /^peptideIonTypeIsComplement(PeptideIon ion_type_ref, PeptideIon ion_type)$/;" f namespace:pappso peptideListSize src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::peptideListSize() const$/;" f class:pappso::GrpSubGroup phenylalanine src/pappsomspp/types.h /^ phenylalanine = 'F',$/;" m class:pappso::MzFormat::AminoAcidChar plot src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::plot()$/;" f class:MassSpectrumWidget plot src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::plot()$/;" f class:XicWidget pointerToString src/pappsomspp/utils.cpp /^Utils::pointerToString(const void *const pointer)$/;" f class:pappso::Utils postExtractionProcess src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::postExtractionProcess($/;" f class:pappso::MsRunXicExtractorInterface ppm src/pappsomspp/types.h /^ ppm,$/;" m class:pappso::PrecisionUnit precursorIntensity src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ double precursorIntensity;$/;" m struct:pappso::MsRunRetentionTime::PeptideMs2Point precursorIonNodesByPrecursorMz src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::precursorIonNodesByPrecursorMz($/;" f class:pappso::MsRunDataSetTreeNode precursorNodeByProductSpectrumIndex src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::precursorNodeByProductSpectrumIndex($/;" f class:pappso::MsRunDataSetTree precursorNodesByPrecursorMz src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::precursorNodesByPrecursorMz(pappso_double mz,$/;" f class:pappso::MsRunDataSetTree precursor_id src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t precursor_id = 0;$/;" m struct:pappso::TimsData::SpectrumDescr precursor_ion_data src/pappsomspp/vendors/tims/timsdata.h /^ PrecursorIonData precursor_ion_data;$/;" m struct:pappso::TimsData::SpectrumDescr prefix maintainer-scripts/makeOrigTarball.py /^prefix = "{projectName}-{UPVER}".format(projectName = projectName, UPVER = UPVER);$/;" v prepareExtractor src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::prepareExtractor()$/;" f class:pappso::MsRunXicExtractorDisk printInfos src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::printInfos() const$/;" f class:pappso::GrpMapPeptideToSubGroupSet printInfos src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::printInfos() const$/;" f class:GrpPeptideSet printInfos src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::printInfos() const$/;" f class:pappso::GrpSubGroupSet privAddFixedModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::privAddFixedModificationString($/;" f class:PeptideModificatorPipeline privAddPotentialModificationString src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::privAddPotentialModificationString($/;" f class:PeptideModificatorPipeline privContainsAll src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::privContainsAll(const GrpPeptideSet &peptideSetIn) const$/;" f class:GrpPeptideSet privMatchIonList src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::privMatchIonList($/;" f class:pappso::PeptideSpectrumMatch process src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::process(const MassSpectrum &spectrum,$/;" f class:pappso::XtandemSpectrumProcess processDriftTime src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::processDriftTime($/;" f class:pappso::PwizMsRunReader processRetentionTime src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::processRetentionTime($/;" f class:pappso::PwizMsRunReader process_group_note src/pappsomspp/processing/tandemwrapper/wraptandemresults.cpp /^WrapTandemResults::process_group_note()$/;" f class:pappso::WrapTandemResults productNodesByPrecursorMz src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::productNodesByPrecursorMz($/;" f class:pappso::MsRunDataSetTreeNode productNodesByPrecursorSpectrumIndex src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::productNodesByPrecursorSpectrumIndex($/;" f class:pappso::MsRunDataSetTree projectName maintainer-scripts/makeOrigTarball.py /^projectName = args.project[0];$/;" v proline src/pappsomspp/types.h /^ proline = 'P',$/;" m class:pappso::MzFormat::AminoAcidChar proline_effect src/pappsomspp/peptide/peptiderawfragmentmasses.h /^ proline_effect = 1$/;" m class:pappso::RawFragmentationMode protectedExtractXicCoordSPtrList src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.cpp /^pappso::TimsDirectXicExtractor::protectedExtractXicCoordSPtrList($/;" f class:pappso::TimsDirectXicExtractor protectedExtractXicCoordSPtrList src/pappsomspp/xicextractor/private/msrunxicextractor.cpp /^MsRunXicExtractor::protectedExtractXicCoordSPtrList($/;" f class:pappso::MsRunXicExtractor protectedExtractXicCoordSPtrList src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::protectedExtractXicCoordSPtrList($/;" f class:pappso::MsRunXicExtractorDisk pushBackIonMasses src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^PeptideRawFragmentMasses::pushBackIonMasses($/;" f class:pappso::PeptideRawFragmentMasses pushBackIonMz src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^PeptideRawFragmentMasses::pushBackIonMz(std::vector &mass_list,$/;" f class:pappso::PeptideRawFragmentMasses pushBackMatchSpectrum src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^PeptideRawFragmentMasses::pushBackMatchSpectrum($/;" f class:pappso::PeptideRawFragmentMasses push_back src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::push_back(GrpPeptide *p_grpPeptide)$/;" f class:GrpProtein pwiz src/pappsomspp/msfile/msfileaccessor.h /^ pwiz,$/;" m class:pappso::FileReaderType pyrrolysine src/pappsomspp/types.h /^ pyrrolysine = 'O',$/;" m class:pappso::MzFormat::AminoAcidChar q Session.vim /^nnoremap q :call nerdtree#ui_glue#invokeKeyMap("q")$/;" m qualifiedMassSpectrum src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::qualifiedMassSpectrum(std::size_t spectrum_index,$/;" f class:pappso::PwizMsRunReader qualifiedMassSpectrum src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::qualifiedMassSpectrum(std::size_t spectrum_index,$/;" f class:TimsMsRunReader qualifiedMassSpectrum src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::qualifiedMassSpectrum(std::size_t spectrum_index,$/;" f class:TimsMsRunReaderMs2 qualifiedMassSpectrum src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::qualifiedMassSpectrum(std::size_t spectrum_index,$/;" f class:TimsMsRunReaderMs2Selected qualifiedMassSpectrum src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::qualifiedMassSpectrum($/;" f class:pappso::XyMsRunReader qualifiedMassSpectrumFromPwizMSData src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::qualifiedMassSpectrumFromPwizMSData(std::size_t spectrum_index,$/;" f class:pappso::PwizMsRunReader qualifiedMassSpectrumFromPwizSpectrumPtr src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::qualifiedMassSpectrumFromPwizSpectrumPtr($/;" f class:pappso::PwizMsRunReader qualifiedMassSpectrumFromXyMSDataFile src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::qualifiedMassSpectrumFromXyMSDataFile($/;" f class:pappso::XyMsRunReader quantileYTrace src/pappsomspp/trace/trace.cpp /^quantileYTrace(std::vector::const_iterator begin,$/;" f namespace:pappso qwhat src/pappsomspp/pappsoexception.h /^ qwhat() const throw()$/;" f class:pappso::PappsoException r Session.vim /^nnoremap r :call nerdtree#ui_glue#invokeKeyMap("r")$/;" m range src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::range(Axis axis, double &range_start, double &range_end) const$/;" f class:pappso::SelectionPolygon rangeX src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::rangeX(double &range_start, double &range_end) const$/;" f class:pappso::SelectionPolygon rangeY src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::rangeY(double &range_start, double &range_end) const$/;" f class:pappso::SelectionPolygon ratioC13_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioC13_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: ratioH2_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioH2_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: ratioN15_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioN15_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: ratioO17_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioO17_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: ratioO18_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioO18_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: ratioS33_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioS33_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: ratioS34_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioS34_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: ratioS36_cache src/pappsomspp/peptide/peptidenaturalisotope.cpp /^pappso_double ratioS36_cache[CACHE_ARRAY_SIZE][CACHE_ARRAY_SIZE] = {0};$/;" m namespace:pappso file: rawReaderSpectrumCollectionByMsLevel src/pappsomspp/vendors/tims/timsdata.cpp /^pappso::TimsData::rawReaderSpectrumCollectionByMsLevel($/;" f class:pappso::pappso::TimsData rbegin src/pappsomspp/peptide/peptide.h /^ rbegin() const$/;" f class:pappso::PeptideDirection::Peptide read src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^pappso::XmlStreamReaderInterface::read(QIODevice *device)$/;" f class:pappso::XmlStreamReaderInterface read src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^pappso::XmlStreamReaderInterface::read(const QString &xml_content)$/;" f class:pappso::XmlStreamReaderInterface readFile src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^pappso::XmlStreamReaderInterface::readFile(const QString &fileName)$/;" f class:pappso::XmlStreamReaderInterface readMgf tests/common.cpp /^readMgf(const QString &filename)$/;" f readOdsXic tests/test_xic.cpp /^readOdsXic(const QString &filepath, Trace &xic)$/;" f readQualifiedMassSpectrumMgf tests/common.cpp /^readQualifiedMassSpectrumMgf(const QString &filename)$/;" f readSpectrumCollection src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::readSpectrumCollection($/;" f class:pappso::PwizMsRunReader readSpectrumCollection src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::readSpectrumCollection($/;" f class:TimsMsRunReader readSpectrumCollection src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::readSpectrumCollection($/;" f class:TimsMsRunReaderMs2 readSpectrumCollection src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::readSpectrumCollection($/;" f class:TimsMsRunReaderMs2Selected readSpectrumCollection src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::readSpectrumCollection($/;" f class:pappso::XyMsRunReader readSpectrumCollectionByMsLevel src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::readSpectrumCollectionByMsLevel($/;" f class:pappso::PwizMsRunReader readSpectrumCollectionByMsLevel src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::readSpectrumCollectionByMsLevel($/;" f class:TimsMsRunReader readSpectrumCollectionByMsLevel src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::readSpectrumCollectionByMsLevel($/;" f class:TimsMsRunReaderMs2 readSpectrumCollectionByMsLevel src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::readSpectrumCollectionByMsLevel($/;" f class:pappso::XyMsRunReader readStream src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp /^WrapTandemInput::readStream()$/;" f class:pappso::WrapTandemInput readStream src/pappsomspp/processing/tandemwrapper/wraptandemresults.cpp /^WrapTandemResults::readStream()$/;" f class:pappso::WrapTandemResults readStream src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^XtandemPresetReader::readStream()$/;" f class:pappso::XtandemPresetReader readTandemPresetFile src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::readTandemPresetFile(const QString &tandem_preset_file)$/;" f class:pappso::TandemWrapperRun readTimsFrame src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^TimsFrameRawDataChunck::readTimsFrame($/;" f class:TimsFrameRawDataChunck read_note src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^XtandemPresetReader::read_note()$/;" f class:pappso::XtandemPresetReader readyReadStandardError src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::readyReadStandardError()$/;" f class:pappso::TandemWrapperRun readyReadStandardOutput src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::readyReadStandardOutput()$/;" f class:pappso::TandemWrapperRun realft src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::realft(pappso_double data[], unsigned long n, int isign)$/;" f class:pappso::FilterSavitzkyGolay reconstructTrace src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::reconstructTrace(const Trace &trace)$/;" f class:pappso::FilterLowIntensitySignalRemoval recordDragDirections src/pappsomspp/widget/plotwidget/baseplotcontext.cpp /^BasePlotContext::recordDragDirections()$/;" f class:pappso::BasePlotContext recursiveDepletion src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::recursiveDepletion($/;" f class:pappso::PeptideNaturalIsotopeAverage redrawPlotBackground src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::redrawPlotBackground(QWidget *focusedPlotWidget)$/;" f class:pappso::BasePlotWidget refreshBaseContext src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::refreshBaseContext() const$/;" f class:pappso::MassSpecTracePlotWidget releaseDevice src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::releaseDevice()$/;" f class:pappso::PwizMsRunReader releaseDevice src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::releaseDevice()$/;" f class:TimsMsRunReader releaseDevice src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::releaseDevice()$/;" f class:TimsMsRunReaderMs2 releaseDevice src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::releaseDevice()$/;" f class:pappso::XyMsRunReader remove src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::remove(GrpSubGroup *p_remove_sub_group)$/;" f class:pappso::GrpMapPeptideToSubGroupSet remove src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::remove(GrpSubGroup *p_remove_sub_group)$/;" f class:pappso::GrpSubGroupSet removeAaModification src/pappsomspp/amino_acid/aa.cpp /^Aa::removeAaModification(AaModificationP mod)$/;" f class:pappso::Aa removeAaModification src/pappsomspp/peptide/peptide.cpp /^Peptide::removeAaModification(AaModificationP mod)$/;" f class:pappso::Peptide removeCterAminoAcid src/pappsomspp/peptide/peptide.cpp /^Peptide::removeCterAminoAcid()$/;" f class:pappso::Peptide removeDataSetQualMassSpectraOutsideDtRtRange src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::removeDataSetQualMassSpectraOutsideDtRtRange($/;" f class:pappso::MsRunDataSetTree removeDataSetTreeNodesOutsideDtRtRange src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::removeDataSetTreeNodesOutsideDtRtRange($/;" f class:pappso::MsRunDataSetTree removeFirstNonInformativeSubGroup src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::removeFirstNonInformativeSubGroup()$/;" f class:GrpGroup removeInternalCterModification src/pappsomspp/amino_acid/aa.cpp /^Aa::removeInternalCterModification()$/;" f class:pappso::Aa removeInternalCterModification src/pappsomspp/peptide/peptide.cpp /^Peptide::removeInternalCterModification()$/;" f class:pappso::Peptide removeInternalNterModification src/pappsomspp/amino_acid/aa.cpp /^Aa::removeInternalNterModification()$/;" f class:pappso::Aa removeInternalNterModification src/pappsomspp/peptide/peptide.cpp /^Peptide::removeInternalNterModification()$/;" f class:pappso::Peptide removeNonInformativeSubGroups src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::removeNonInformativeSubGroups()$/;" f class:GrpExperiment removeNonInformativeSubGroups src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::removeNonInformativeSubGroups()$/;" f class:GrpGroup removeNterAminoAcid src/pappsomspp/peptide/peptide.cpp /^Peptide::removeNterAminoAcid()$/;" f class:pappso::Peptide removeTraceInExclusionMargin src/pappsomspp/processing/filters/filterexclusionmz.cpp /^pappso::FilterMzExclusion::removeTraceInExclusionMargin($/;" f class:pappso::FilterMzExclusion removeTranslationStop src/pappsomspp/protein/protein.cpp /^Protein::removeTranslationStop()$/;" f class:pappso::Protein removingNonInformativeSubGroupsInGroup src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::removingNonInformativeSubGroupsInGroup()$/;" f class:pappso::GrpGroupingMonitor rend src/pappsomspp/peptide/peptide.h /^ rend() const$/;" f class:pappso::PeptideDirection::Peptide replaceAaModification src/pappsomspp/amino_acid/aa.cpp /^Aa::replaceAaModification(AaModificationP oldmod, AaModificationP newmod)$/;" f class:pappso::Aa replaceAaModification src/pappsomspp/peptide/peptide.cpp /^Peptide::replaceAaModification(AaModificationP oldmod, AaModificationP newmod)$/;" f class:pappso::Peptide replaceLeucineIsoleucine src/pappsomspp/amino_acid/aabase.cpp /^AaBase::replaceLeucineIsoleucine()$/;" f class:pappso::AaBase replaceLeucineIsoleucine src/pappsomspp/peptide/peptide.cpp /^Peptide::replaceLeucineIsoleucine()$/;" f class:pappso::Peptide replaceModificationsAtPosition src/pappsomspp/protein/peptidevariablemodificationreplacement.cpp /^PeptideVariableModificationReplacement::replaceModificationsAtPosition($/;" f class:pappso::PeptideVariableModificationReplacement replaceWildcards src/pappsomspp/protein/enzyme.cpp /^Enzyme::replaceWildcards(std::vector *p_peptide_variant_list) const$/;" f class:pappso::Enzyme replotAll src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::replotAll()$/;" f class:XicWidget replotWithAxesRanges src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::replotWithAxesRanges(QCPRange xAxisRange,$/;" f class:pappso::BasePlotWidget replotWithAxisRangeX src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::replotWithAxisRangeX(double lower, double upper)$/;" f class:pappso::BasePlotWidget replotWithAxisRangeY src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::replotWithAxisRangeY(double lower, double upper)$/;" f class:pappso::BasePlotWidget res src/pappsomspp/types.h /^ res,$/;" m class:pappso::PrecisionUnit rescale src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::rescale()$/;" f class:MassSpectrumWidget rescale src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::rescale()$/;" f class:QCPSpectrum rescale src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::rescale()$/;" f class:QCPXic rescale src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::rescale()$/;" f class:XicWidget rescaleOneRange src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::rescaleOneRange(QString axis_name, QCPRange new_range)$/;" f class:XicWidget reset src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^pappso::XicCoord::reset()$/;" f class:pappso::XicCoord reset src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::reset()$/;" f class:pappso::XicCoordTims reset src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::reset()$/;" f class:pappso::MzIntegrationParams reset src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::reset()$/;" f class:XtandemHyperscoreBis reset src/pappsomspp/trace/datapoint.cpp /^DataPoint::reset()$/;" f class:pappso::DataPoint resetAxesRangeHistory src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::resetAxesRangeHistory()$/;" f class:pappso::BasePlotWidget resetPoints src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::resetPoints()$/;" f class:pappso::SelectionPolygon resetSelectionRectangle src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::resetSelectionRectangle()$/;" f class:pappso::BasePlotWidget restoreAxesRangeHistory src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::restoreAxesRangeHistory(std::size_t index)$/;" f class:pappso::BasePlotWidget restorePreviousAxesRangeHistory src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::restorePreviousAxesRangeHistory()$/;" f class:pappso::BasePlotWidget result_type src/pappsomspp/grouping/grpexperiment.cpp /^ typedef bool result_type;$/;" t struct:ContainsAny file: retentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ double retentionTime;$/;" m struct:pappso::MsRunRetentionTime::PeptideMs2Point retentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ double retentionTime;$/;" m struct:pappso::MsRunRetentionTimeSeamarkPoint reverse src/pappsomspp/peptide/peptide.cpp /^Peptide::reverse()$/;" f class:pappso::Peptide reverse src/pappsomspp/protein/protein.cpp /^Protein::reverse()$/;" f class:pappso::Protein rotate src/pappsomspp/peptide/peptide.cpp /^Peptide::rotate()$/;" f class:pappso::Peptide roundToDecimal32bitsAsLongLongInt src/pappsomspp/utils.cpp /^Utils::roundToDecimal32bitsAsLongLongInt(pappso::pappso_double input)$/;" f class:pappso::Utils roundToDecimals src/pappsomspp/utils.cpp /^Utils::roundToDecimals(pappso_double value, int decimal_places)$/;" f class:pappso::Utils rowCount src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^pappso::OboListModel::rowCount(const QModelIndex &parent [[maybe_unused]]) const$/;" f class:pappso::OboListModel rt src/pappsomspp/types.h /^ rt = 0, \/\/\/< Retention time$/;" m class:pappso::MzFormat::DataKind rt src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ double rt;$/;" m struct:pappso::MsRunXicExtractor::MsRunXicExtractorPoints rtChangeEvent src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::rtChangeEvent(pappso::pappso_double rt) const$/;" f class:XicWidget rtTarget src/pappsomspp/msrun/xiccoord/xiccoord.h /^ double rtTarget = 0;$/;" m struct:pappso::XicCoord run src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::run(UiMonitorInterface &monitor,$/;" f class:pappso::TandemWrapperRun runFilter src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::runFilter(double *y_data_p,$/;" f class:pappso::FilterSavitzkyGolay runTandem src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::runTandem(const QString &tandem_input_file)$/;" f class:pappso::TandemWrapperRun s Session.vim /^nnoremap s :call nerdtree#ui_glue#invokeKeyMap("s")$/;" m s:cpo_save Session.vim /^let s:cpo_save=&cpo$/;" v s:l Session.vim /^let s:l = 16 - ((15 * winheight(0) + 26) \/ 53)$/;" v s:l Session.vim /^let s:l = 211 - ((48 * winheight(0) + 26) \/ 53)$/;" v s:l Session.vim /^let s:l = 25 - ((24 * winheight(0) + 26) \/ 53)$/;" v s:l Session.vim /^let s:l = 29 - ((8 * winheight(0) + 26) \/ 53)$/;" v s:l Session.vim /^let s:l = 43 - ((16 * winheight(0) + 26) \/ 53)$/;" v s:l Session.vim /^let s:l = 55 - ((23 * winheight(0) + 26) \/ 53)$/;" v s:l Session.vim /^let s:l = 65 - ((10 * winheight(0) + 26) \/ 53)$/;" v s:save_splitbelow Session.vim /^let s:save_splitbelow = &splitbelow$/;" v s:save_splitright Session.vim /^let s:save_splitright = &splitright$/;" v s:save_winminheight Session.vim /^let s:save_winminheight = &winminheight$/;" v s:save_winminwidth Session.vim /^let s:save_winminwidth = &winminwidth$/;" v s:so_save Session.vim /^let s:so_save = &g:so | let s:siso_save = &g:siso | setg so=0 siso=0 | setl so=-1 siso=-1$/;" v s:sx Session.vim /^let s:sx = expand(":p:r")."x.vim"$/;" v s:wipebuf Session.vim /^ let s:wipebuf = bufnr('%')$/;" v sanityCheck src/pappsomspp/protein/enzyme.cpp /^Enzyme::sanityCheck(EnzymeProductInterface &enzyme_product,$/;" f class:pappso::Enzyme savePdf src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::savePdf(const QString &fileName, int width, int height)$/;" f class:MassSpectrumWidget scanNumBegin src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ std::size_t scanNumBegin;$/;" m struct:pappso::XicCoordTims scanNumEnd src/pappsomspp/msrun/xiccoord/xiccoordtims.h /^ std::size_t scanNumEnd;$/;" m struct:pappso::XicCoordTims scanNumber2SpectrumIndex src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::scanNumber2SpectrumIndex(std::size_t scan_number)$/;" f class:pappso::MsRunReader scan_mobility_end src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t scan_mobility_end = 0;$/;" m struct:pappso::TimsData::SpectrumDescr scan_mobility_start src/pappsomspp/vendors/tims/timsdata.h /^ std::size_t scan_mobility_start = 0;$/;" m struct:pappso::TimsData::SpectrumDescr scan_num_voltage_transformation doc/bruker/tims_calibration.py /^ def scan_num_voltage_transformation(scan_num):$/;" f function:get_voltage scan_numbers doc/bruker/tims_calibration.py /^scan_numbers = np.arange(0, num_scans)$/;" v selectionPolygon src/pappsomspp/processing/combiners/selectionpolygon.h /^ SelectionPolygon selectionPolygon;$/;" m struct:pappso::PolygonType::SelectionPolygonSpec selenocysteine src/pappsomspp/types.h /^ selenocysteine = 'U',$/;" m class:pappso::MzFormat::AminoAcidChar sequence tests/test_fasta_reader.cpp /^ QString sequence;$/;" m class:FastaSeq file: serializeMsRun src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::serializeMsRun()$/;" f class:pappso::MsRunXicExtractorDisk serine src/pappsomspp/types.h /^ serine = 'S',$/;" m class:pappso::MzFormat::AminoAcidChar set src/pappsomspp/grouping/grpmappeptidetogroup.cpp /^GrpMapPeptideToGroup::set(const GrpPeptideSet &peptide_set_in,$/;" f class:pappso::GrpMapPeptideToGroup set1D src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::set1D(double x_range_start, double x_range_end)$/;" f class:pappso::SelectionPolygon set2D src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::set2D(QPointF top_left,$/;" f class:pappso::SelectionPolygon setAccession src/pappsomspp/protein/protein.cpp /^Protein::setAccession(const QString &accession)$/;" f class:pappso::Protein setAccumulationTime src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::setAccumulationTime(double accumulation_time_ms)$/;" f class:pappso::TimsFrameBase setAlignedRetentionTimeVector src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^pappso::MsRunRetentionTime::setAlignedRetentionTimeVector($/;" f class:pappso::MsRunRetentionTime setApplyMzShift src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setApplyMzShift(bool applyMzShift)$/;" f class:pappso::MzIntegrationParams setArea src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::setArea(pappso_double area)$/;" f class:pappso::TracePeak setAxisLabelX src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::setAxisLabelX(const QString &label)$/;" f class:pappso::BasePlotWidget setAxisLabelY src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::setAxisLabelY(const QString &label)$/;" f class:pappso::BasePlotWidget setBinningType src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setBinningType(BinningType binningType)$/;" f class:pappso::MzIntegrationParams setBins src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::setBins(std::vector bins)$/;" f class:pappso::MassSpectrumCombiner setChargeMinimalFractionalPart src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::setChargeMinimalFractionalPart($/;" f class:pappso::MassSpecTracePlotWidget setChargeStateEnvelopePeakSpan src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::setChargeStateEnvelopePeakSpan(int interval)$/;" f class:pappso::MassSpecTracePlotWidget setColorMapPlotConfig src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::setColorMapPlotConfig($/;" f class:pappso::BaseColorMapPlotWidget setCurrentIndex src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::setCurrentIndex(int index)$/;" f class:pappso::PrecisionWidget setDaltonValueChanged src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::setDaltonValueChanged(double value)$/;" f class:pappso::PrecisionWidget setDecimalPlaces src/pappsomspp/processing/combiners/massdatacombinerinterface.cpp /^MassDataCombinerInterface::setDecimalPlaces(int value)$/;" f class:pappso::MassDataCombinerInterface setDecimalPlaces src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setDecimalPlaces(int decimal_places)$/;" f class:pappso::MzIntegrationParams setDescription src/pappsomspp/protein/protein.cpp /^Protein::setDescription(const QString &description)$/;" f class:pappso::Protein setDetectionThresholdOnMaxmin src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::setDetectionThresholdOnMaxmin($/;" f class:pappso::TraceDetectionZivy setDetectionThresholdOnMinmax src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::setDetectionThresholdOnMinmax($/;" f class:pappso::TraceDetectionZivy setDiffFormula src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::setDiffFormula(const QString &diff_formula)$/;" f class:pappso::AaModification setDtInMilliSeconds src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setDtInMilliSeconds(pappso_double dt_in_milli_seconds)$/;" f class:pappso::QualifiedMassSpectrum setDynamicRange src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setDynamicRange(pappso::pappso_double dynamic_range)$/;" f class:pappso::XtandemSpectrumProcess setEmptyMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setEmptyMassSpectrum(bool is_empty_mass_spectrum)$/;" f class:pappso::QualifiedMassSpectrum setExcludeParent src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setExcludeParent(bool exclude_parent)$/;" f class:pappso::XtandemSpectrumProcess setExcludeParentNeutralLoss src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setExcludeParentNeutralLoss(bool neutral_loss)$/;" f class:pappso::XtandemSpectrumProcess setFileName src/pappsomspp/msrun/msrunid.cpp /^MsRunId::setFileName(const QString &file_name)$/;" f class:pappso::MsRunId setFilterMorphoMaxMin src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::setFilterMorphoMaxMin(const FilterMorphoMaxMin &maxMin)$/;" f class:pappso::TraceDetectionZivy setFilterMorphoMean src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::setFilterMorphoMean(const FilterMorphoMean &smooth)$/;" f class:pappso::TraceDetectionMoulon setFilterMorphoMean src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::setFilterMorphoMean(const FilterMorphoMean &smooth)$/;" f class:pappso::TraceDetectionZivy setFilterMorphoMinMax src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::setFilterMorphoMinMax(const FilterMorphoMinMax &minMax)$/;" f class:pappso::TraceDetectionZivy setFocus src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::setFocus()$/;" f class:pappso::BasePlotWidget setGraphData src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::setGraphData(QCPGraph *graph_p,$/;" f class:pappso::BaseTracePlotWidget setGraphData src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::setGraphData(int graph_index,$/;" f class:pappso::BaseTracePlotWidget setGreatestMz src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setGreatestMz(pappso::pappso_double value)$/;" f class:pappso::MzIntegrationParams setGroupNumber src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::setGroupNumber(unsigned int i)$/;" f class:GrpGroup setGroupNumber src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::setGroupNumber(unsigned int i)$/;" f class:GrpPeptide setGroupNumber src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::setGroupNumber(unsigned int i)$/;" f class:GrpPeptideSet setGroupNumber src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::setGroupNumber(unsigned int i)$/;" f class:GrpProtein setGroupNumber src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::setGroupNumber(unsigned int i)$/;" f class:pappso::GrpSubGroup setGrpPeptide src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::setGrpPeptide(const GrpProteinSp &proteinSp,$/;" f class:GrpExperiment setInputParameters src/pappsomspp/processing/tandemwrapper/wraptandemresults.cpp /^WrapTandemResults::setInputParameters(const QString &label_name_attribute,$/;" f class:pappso::WrapTandemResults setInternalCterModification src/pappsomspp/peptide/peptide.cpp /^Peptide::setInternalCterModification(AaModificationP mod)$/;" f class:pappso::Peptide setInternalNterModification src/pappsomspp/peptide/peptide.cpp /^Peptide::setInternalNterModification(AaModificationP mod)$/;" f class:pappso::Peptide setIonList src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setIonList(const std::list &ion_list)$/;" f class:MassSpectrumWidget setIonScore src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setIonScore(PeptideIon ion_type, bool compute_score)$/;" f class:pappso::XtandemSpectrumProcess setLeftBoundary src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::setLeftBoundary(const DataPoint &left)$/;" f class:pappso::TracePeak setMassSpectrumCstSPtr src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setMassSpectrumCstSPtr(const MassSpectrumCstSPtr &spectrum)$/;" f class:MassSpectrumWidget setMassSpectrumId src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setMassSpectrumId(const MassSpectrumId &iD)$/;" f class:pappso::QualifiedMassSpectrum setMassSpectrumSPtr src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setMassSpectrumSPtr(MassSpectrumSPtr massSpectrum)$/;" f class:pappso::QualifiedMassSpectrum setMaxNumberMod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ setMaxNumberMod(unsigned int max_num)$/;" f class:pappso::PeptideVariableModificationBuilder setMaxPeptideVariantListSize src/pappsomspp/protein/enzyme.cpp /^Enzyme::setMaxPeptideVariantListSize(std::size_t max_peptide_variant_list_size)$/;" f class:pappso::Enzyme setMaxXicElement src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::setMaxXicElement(const DataPoint &max)$/;" f class:pappso::TracePeak setMaximumIsotopeNumber src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setMaximumIsotopeNumber(unsigned int max_isotope_number)$/;" f class:MassSpectrumWidget setMaximumIsotopeRank src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setMaximumIsotopeRank(unsigned int max_isotope_rank)$/;" f class:MassSpectrumWidget setMinNumberMod src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ setMinNumberMod(unsigned int min_num)$/;" f class:pappso::PeptideVariableModificationBuilder setMinimumMz src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setMinimumMz(pappso_double minimum_mz)$/;" f class:pappso::XtandemSpectrumProcess setMiscleavage src/pappsomspp/protein/enzyme.cpp /^Enzyme::setMiscleavage(unsigned int miscleavage)$/;" f class:pappso::Enzyme setModificationCounter src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ setModificationCounter(unsigned int counter)$/;" f class:pappso::PeptideVariableModificationBuilder setModificationPattern src/pappsomspp/protein/peptidemodificatorbase.cpp /^PeptideModificatorBase::setModificationPattern(QString &pattern)$/;" f class:pappso::PeptideModificatorBase setMonoThread src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::setMonoThread(bool is_mono_thread)$/;" f class:pappso::MsRunReader setMonoThread src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::setMonoThread(bool is_mono_thread)$/;" f class:pappso::TimsData setMs1FilterCstSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter)$/;" f class:TimsMsRunReaderMs2 setMs1FilterCstSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::setMs1FilterCstSPtr($/;" f class:TimsMsRunReaderMs2Selected setMs1FilterCstSPtr src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)$/;" f class:pappso::TimsData setMs1MeanFilter src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::setMs1MeanFilter(const FilterMorphoMean &ms1MeanFilter)$/;" f class:MsRunRetentionTime setMs1Precision src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setMs1Precision(PrecisionPtr precision)$/;" f class:MassSpectrumWidget setMs2BuiltinCentroid src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::setMs2BuiltinCentroid(bool centroid)$/;" f class:TimsMsRunReaderMs2 setMs2BuiltinCentroid src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::setMs2BuiltinCentroid(bool centroid)$/;" f class:pappso::TimsData setMs2FilterCstSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr filter)$/;" f class:TimsMsRunReaderMs2 setMs2FilterCstSPtr src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::setMs2FilterCstSPtr($/;" f class:TimsMsRunReaderMs2Selected setMs2FilterCstSPtr src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)$/;" f class:pappso::TimsData setMs2MeanFilter src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::setMs2MeanFilter(const FilterMorphoMean &ms2MeanFilter)$/;" f class:MsRunRetentionTime setMs2MedianFilter src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::setMs2MedianFilter($/;" f class:MsRunRetentionTime setMs2Precision src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setMs2Precision(PrecisionPtr precision)$/;" f class:MassSpectrumWidget setMsLevel src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setMsLevel(unsigned int level)$/;" f class:pappso::QualifiedMassSpectrum setMsLevel src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setMsLevel(unsigned int ms_level)$/;" f class:MassSpectrumWidget setMsMsType src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::setMsMsType(quint8 type)$/;" f class:pappso::TimsFrameBase setMsRunId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::setMsRunId(MsRunIdCstSPtr other)$/;" f class:pappso::MassSpectrumId setMsRunXicExtractorFactoryType src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^MsRunXicExtractorFactory::setMsRunXicExtractorFactoryType($/;" f class:pappso::MsRunXicExtractorFactory setMzCalibration src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::setMzCalibration(double T1_frame,$/;" f class:pappso::TimsFrameBase setMzCalibrationInterfaceSPtr src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::setMzCalibrationInterfaceSPtr($/;" f class:pappso::TimsFrameBase setMzFormat src/pappsomspp/msrun/msrunid.cpp /^MsRunId::setMzFormat(MzFormat format)$/;" f class:pappso::MsRunId setMzRangeChanged src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::setMzRangeChanged(QCPRange range)$/;" f class:QCPSpectrum setMzShift src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setMzShift(double value)$/;" f class:pappso::MzIntegrationParams setMzTarget src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp /^pappso::OboChooserWidget::setMzTarget(double target_mz)$/;" f class:pappso::OboChooserWidget setName src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::setName(const Xic *xic_p, const QString &name)$/;" f class:QCPXic setName src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::setName(const Xic *xic_p, const QString &name)$/;" f class:XicWidget setNativeId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::setNativeId(const QString &native_id)$/;" f class:pappso::MassSpectrumId setNeedMsLevelPeakList src/pappsomspp/msrun/msrunreader.cpp /^SpectrumCollectionHandlerInterface::setNeedMsLevelPeakList($/;" f class:pappso::SpectrumCollectionHandlerInterface setNeutralLossMass src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setNeutralLossMass($/;" f class:pappso::XtandemSpectrumProcess setNeutralLossWindowDalton src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setNeutralLossWindowDalton($/;" f class:pappso::XtandemSpectrumProcess setNmostIntense src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setNmostIntense(unsigned int nmost_intense)$/;" f class:pappso::XtandemSpectrumProcess setOboPsiModTerm src/pappsomspp/obo/filterobopsimodsink.cpp /^FilterOboPsiModSink::setOboPsiModTerm(const OboPsiModTerm &term)$/;" f class:pappso::FilterOboPsiModSink setOboPsiModTerm src/pappsomspp/obo/filterobopsimodtermaccession.cpp /^FilterOboPsiModTermAccession::setOboPsiModTerm(const OboPsiModTerm &term)$/;" f class:pappso::FilterOboPsiModTermAccession setOboPsiModTerm src/pappsomspp/obo/filterobopsimodtermdiffmono.cpp /^FilterOboPsiModTermDiffMono::setOboPsiModTerm(const OboPsiModTerm &term)$/;" f class:pappso::FilterOboPsiModTermDiffMono setOboPsiModTerm src/pappsomspp/obo/filterobopsimodtermlabel.cpp /^FilterOboPsiModTermLabel::setOboPsiModTerm(const OboPsiModTerm &term)$/;" f class:pappso::FilterOboPsiModTermLabel setOboPsiModTerm src/pappsomspp/obo/filterobopsimodtermname.cpp /^FilterOboPsiModTermName::setOboPsiModTerm(const OboPsiModTerm &term)$/;" f class:pappso::FilterOboPsiModTermName setOboPsiModTerm src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^pappso::OboListModel::OboPsiModHandler::setOboPsiModTerm($/;" f class:pappso::OboListModel::OboPsiModHandler setOrigAndLastMaxZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::setOrigAndLastMaxZValue(double value)$/;" f class:pappso::ColorMapPlotConfig setOrigAndLastMinZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::setOrigAndLastMinZValue(double value)$/;" f class:pappso::ColorMapPlotConfig setOrigMaxZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::setOrigMaxZValue(double value)$/;" f class:pappso::ColorMapPlotConfig setOrigMinZValue src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::setOrigMinZValue(double value)$/;" f class:pappso::ColorMapPlotConfig setParameterValue src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setParameterValue($/;" f class:pappso::QualifiedMassSpectrum setParent src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::setParent(MsRunDataSetTreeNode *parent)$/;" f class:pappso::MsRunDataSetTreeNode setPen src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::setPen(const QPen &pen)$/;" f class:pappso::BasePlotWidget setPeptide src/pappsomspp/protein/peptidebuilder.cpp /^PeptideBuilder::setPeptide(std::int8_t sequence_database_id,$/;" f class:pappso::PeptideBuilder setPeptide src/pappsomspp/protein/peptidemethioninremove.cpp /^PeptideMethioninRemove::setPeptide(std::int8_t sequence_database_id,$/;" f class:pappso::PeptideMethioninRemove setPeptide src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::setPeptide(std::int8_t sequence_database_id,$/;" f class:PeptideModificatorPipeline setPeptide src/pappsomspp/protein/peptidesemienzyme.cpp /^PeptideSemiEnzyme::setPeptide(std::int8_t sequence_database_id,$/;" f class:pappso::PeptideSemiEnzyme setPeptide src/pappsomspp/protein/peptidesizefilter.cpp /^PeptideSizeFilter::setPeptide(std::int8_t sequence_database_id,$/;" f class:pappso::PeptideSizeFilter setPeptideCharge src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setPeptideCharge(unsigned int parent_ion_charge)$/;" f class:MassSpectrumWidget setPeptideSp src/pappsomspp/protein/peptidefixedmodificationbuilder.cpp /^PeptideFixedModificationBuilder::setPeptideSp($/;" f class:PeptideFixedModificationBuilder setPeptideSp src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::setPeptideSp(std::int8_t sequence_database_id,$/;" f class:PeptideModificatorPipeline setPeptideSp src/pappsomspp/protein/peptidemodificatortee.cpp /^PeptideModificatorTee::setPeptideSp(std::int8_t sequence_database_id,$/;" f class:PeptideModificatorTee setPeptideSp src/pappsomspp/protein/peptidevariablemodificationbuilder.cpp /^PeptideVariableModificationBuilder::setPeptideSp($/;" f class:pappso::PeptideVariableModificationBuilder setPeptideSp src/pappsomspp/protein/peptidevariablemodificationreplacement.cpp /^PeptideVariableModificationReplacement::setPeptideSp($/;" f class:pappso::PeptideVariableModificationReplacement setPeptideSp src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setPeptideSp(const PeptideSp &peptide_sp)$/;" f class:MassSpectrumWidget setPeptideSpectrumCharge src/pappsomspp/psm/features/psmfeatures.cpp /^PsmFeatures::setPeptideSpectrumCharge(const pappso::PeptideSp peptideSp,$/;" f class:PsmFeatures setPlottingColor src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::setPlottingColor(QCPAbstractPlottable *plottable_p,$/;" f class:pappso::BaseColorMapPlotWidget setPlottingColor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::setPlottingColor(QCPAbstractPlottable *plottable_p,$/;" f class:pappso::BasePlotWidget setPlottingColor src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::setPlottingColor(int index, const QColor &new_color)$/;" f class:pappso::BasePlotWidget setPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::setPoint(PointSpecs point_spec, QPointF point)$/;" f class:pappso::SelectionPolygon setPoint src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::setPoint(PointSpecs point_spec, double x, double y)$/;" f class:pappso::SelectionPolygon setPostExtractionTraceFilterCstSPtr src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::setPostExtractionTraceFilterCstSPtr($/;" f class:pappso::MsRunXicExtractorInterface setPpmValueChanged src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::setPpmValueChanged(double value)$/;" f class:pappso::PrecisionWidget setPrecision src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setPrecision(pappso::PrecisionPtr precisionPtr)$/;" f class:pappso::MzIntegrationParams setPrecision src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp /^pappso::OboChooserWidget::setPrecision(pappso::PrecisionPtr precision)$/;" f class:pappso::OboChooserWidget setPrecision src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::setPrecision(PrecisionPtr precision)$/;" f class:pappso::PrecisionWidget setPrecursorNativeId src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setPrecursorNativeId(const QString &native_id)$/;" f class:pappso::QualifiedMassSpectrum setPrecursorSpectrumIndex src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setPrecursorSpectrumIndex($/;" f class:pappso::QualifiedMassSpectrum setPreferedFileReaderType src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::setPreferedFileReaderType(MzFormat format,$/;" f class:pappso::MsFileAccessor setProtCter src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ setProtCter(bool arg1)$/;" f class:pappso::PeptideFixedModificationBuilder setProtCter src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ setProtCter(bool arg1)$/;" f class:pappso::PeptideVariableModificationBuilder setProtElse src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ setProtElse(bool arg1)$/;" f class:pappso::PeptideFixedModificationBuilder setProtElse src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ setProtElse(bool arg1)$/;" f class:pappso::PeptideVariableModificationBuilder setProtNter src/pappsomspp/protein/peptidefixedmodificationbuilder.h /^ setProtNter(bool arg1)$/;" f class:pappso::PeptideFixedModificationBuilder setProtNter src/pappsomspp/protein/peptidevariablemodificationbuilder.h /^ setProtNter(bool arg1)$/;" f class:pappso::PeptideVariableModificationBuilder setQualifiedMassSpectrum src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::setQualifiedMassSpectrum($/;" f class:pappso::MsRunDataSetTreeNode setQualifiedMassSpectrum src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderRetentionTimeLine::setQualifiedMassSpectrum($/;" f class:pappso::MsRunReaderRetentionTimeLine setQualifiedMassSpectrum src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderScanNumberMultiMap::setQualifiedMassSpectrum($/;" f class:pappso::MsRunReaderScanNumberMultiMap setQualifiedMassSpectrum src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderTicChromatogram::setQualifiedMassSpectrum($/;" f class:pappso::MsRunReaderTicChromatogram setQualifiedMassSpectrum src/pappsomspp/msrun/msrunreader.cpp /^MsRunSimpleStatistics::setQualifiedMassSpectrum($/;" f class:pappso::MsRunSimpleStatistics setQualifiedMassSpectrum src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::Translater::setQualifiedMassSpectrum($/;" f class:MzxmlOutput::Translater setQualifiedMassSpectrum src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setQualifiedMassSpectrum($/;" f class:MassSpectrumWidget setRank src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::setRank(unsigned int i)$/;" f class:GrpPeptide setRank src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::setRank(unsigned int i)$/;" f class:GrpProtein setReadAhead src/pappsomspp/msrun/msrunreader.cpp /^SpectrumCollectionHandlerInterface::setReadAhead(bool is_read_ahead)$/;" f class:pappso::SpectrumCollectionHandlerInterface setReadAhead src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::setReadAhead(bool isReadAhead)$/;" f class:MzxmlOutput setRefineSpectrumModel src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setRefineSpectrumModel(bool refine)$/;" f class:pappso::XtandemSpectrumProcess setRemoveIsotope src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::setRemoveIsotope(bool remove_isotope)$/;" f class:pappso::XtandemSpectrumProcess setRemoveNonInformativeSubgroups src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::setRemoveNonInformativeSubgroups(bool ok)$/;" f class:GrpExperiment setRemoveZeroValDataPoints src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setRemoveZeroValDataPoints(bool removeOrNot)$/;" f class:pappso::MzIntegrationParams setResValueChanged src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::setResValueChanged(double value)$/;" f class:pappso::PrecisionWidget setRetentionTimeAroundTarget src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::setRetentionTimeAroundTarget($/;" f class:pappso::MsRunXicExtractorInterface setRetentionTimeInMinutes src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::setRetentionTimeInMinutes()$/;" f class:XicWidget setRetentionTimeInSeconds src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::setRetentionTimeInSeconds()$/;" f class:XicWidget setRightBoundary src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::setRightBoundary(const DataPoint &right)$/;" f class:pappso::TracePeak setRtInSeconds src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::setRtInSeconds(pappso_double rt_in_seconds)$/;" f class:pappso::QualifiedMassSpectrum setRtRangeChanged src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::setRtRangeChanged(QCPRange range)$/;" f class:QCPXic setRunId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::setRunId(const QString &run_id)$/;" f class:pappso::MsRunId setSampleName src/pappsomspp/msrun/msrunid.cpp /^MsRunId::setSampleName(const QString &name)$/;" f class:pappso::MsRunId setSequence src/pappsomspp/protein/protein.cpp /^Protein::setSequence(const QString &sequence)$/;" f class:pappso::Protein setSink src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::setSink(PeptideModificatorInterface *sink)$/;" f class:PeptideModificatorPipeline setSize src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::setSize(std::size_t size)$/;" f class:pappso::MsRunSlice setSliceNumber src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::setSliceNumber(unsigned int slice_number)$/;" f class:pappso::MsRunSlice setSmallestMz src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::setSmallestMz(pappso::pappso_double value)$/;" f class:pappso::MzIntegrationParams setSpectrum src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::setSpectrum(std::size_t i, const MassSpectrum &spectrum)$/;" f class:pappso::MsRunSlice setSpectrumIndex src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::setSpectrumIndex(std::size_t index)$/;" f class:pappso::MassSpectrumId setSpectrumP src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::setSpectrumP(const MassSpectrum *spectrum)$/;" f class:QCPSpectrum setStatus src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^pappso::UiMonitorText::setStatus(const QString &status)$/;" f class:pappso::UiMonitorText setSubGroupNumber src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::setSubGroupNumber(unsigned int i)$/;" f class:GrpProtein setSubGroupNumber src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::setSubGroupNumber(unsigned int i)$/;" f class:pappso::GrpSubGroup setSwitchValue src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.cpp /^pappso::SwitchWidget::setSwitchValue(bool switch_value)$/;" f class:pappso::SwitchWidget setTakeOnlyFirstWildcard src/pappsomspp/protein/enzyme.cpp /^Enzyme::setTakeOnlyFirstWildcard(bool take_only_first_wildcard)$/;" f class:pappso::Enzyme setTandemBinaryPath src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::setTandemBinaryPath(const QString &tandem_binary_path)$/;" f class:pappso::TandemWrapperRun setText src/pappsomspp/widget/httpbutton/httpbutton.cpp /^pappso::HttpButton::setText(const QString &text)$/;" f class:pappso::HttpButton setTicStart src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::setTicStart(double tic_start)$/;" f class:pappso::TraceDetectionMoulon setTicStop src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::setTicStop(double tic_stop)$/;" f class:pappso::TraceDetectionMoulon setTime src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::setTime(double time)$/;" f class:pappso::TimsFrameBase setTimsCalibration src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::setTimsCalibration(int tims_model_type,$/;" f class:pappso::TimsFrameBase setTitle src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^pappso::UiMonitorText::setTitle(const QString &title)$/;" f class:pappso::UiMonitorText setTmpDir src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^MsRunXicExtractorFactory::setTmpDir(const QString &dir_name)$/;" f class:pappso::MsRunXicExtractorFactory setTotalSteps src/pappsomspp/processing/uimonitor/uimonitorinterface.h /^ setTotalSteps(std::size_t total_number_of_steps)$/;" f class:pappso::UiMonitorInterface setTotalSteps src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^pappso::UiMonitorText::setTotalSteps(std::size_t total_number_of_steps)$/;" f class:pappso::UiMonitorText setTotalSteps src/pappsomspp/processing/uimonitor/uimonitortextpercent.cpp /^pappso::UiMonitorTextPercent::setTotalSteps(std::size_t total_number_of_steps)$/;" f class:pappso::UiMonitorTextPercent setTracePeak src/pappsomspp/processing/detection/tracepeaklist.cpp /^pappso::TracePeakList::setTracePeak(pappso::TracePeak &xic_peak)$/;" f class:pappso::TracePeakList setTriangleSlope src/pappsomspp/processing/filters/filtertriangle.cpp /^FilterTriangle::setTriangleSlope(double intensity, double mz)$/;" f class:FilterTriangle setVisibleMassDelta src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::setVisibleMassDelta(bool visible)$/;" f class:MassSpectrumWidget setXicExtractMethod src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::setXicExtractMethod(XicExtractMethod method)$/;" f class:pappso::MsRunXicExtractorInterface setXmlId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::setXmlId(const QString &xml_id)$/;" f class:pappso::MsRunId setXrefOrigin src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::setXrefOrigin(const QString &origin)$/;" f class:pappso::AaModification setupWidget src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::setupWidget()$/;" f class:pappso::BasePlotWidget sgcoeff src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::sgcoeff($/;" f class:pappso::FilterSavitzkyGolay shouldIstop src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^pappso::UiMonitorText::shouldIstop()$/;" f class:pappso::UiMonitorText shouldStop src/pappsomspp/msrun/msrunreader.cpp /^SpectrumCollectionHandlerInterface::shouldStop()$/;" f class:pappso::SpectrumCollectionHandlerInterface showTracers src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::showTracers()$/;" f class:pappso::BasePlotWidget size src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::GrpMapPeptideToSubGroupSet::size() const$/;" f class:pappso::GrpMapPeptideToSubGroupSet::GrpMapPeptideToSubGroupSet size src/pappsomspp/grouping/grppeptideset.h /^ size() const$/;" f class:pappso::GrpPeptideSet size src/pappsomspp/grouping/grpsubgroupset.h /^ size() const$/;" f class:pappso::GrpSubGroupSet size src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::size() const$/;" f class:pappso::QualifiedMassSpectrum size src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::size() const$/;" f class:pappso::MsRunDataSetTree size src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::size(std::size_t &cumulative_node_count) const$/;" f class:pappso::MsRunDataSetTreeNode size src/pappsomspp/obo/filterobopsimodsink.h /^ size()$/;" f class:pappso::FilterOboPsiModSink size src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::size() const$/;" f class:pappso::PeptideFragment size src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::size() const$/;" f class:pappso::PeptideFragmentIon size src/pappsomspp/peptide/peptidefragmentionlistbase.h /^ size() const$/;" f class:pappso::PeptideFragmentIonListBase size src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::size() const$/;" f class:pappso::PeptideNaturalIsotope size src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::size() const$/;" f class:pappso::PeptideNaturalIsotopeList size src/pappsomspp/protein/protein.cpp /^Protein::size() const$/;" f class:pappso::Protein size src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::size() const$/;" f class:pappso::PeptideIsotopeSpectrumMatch size src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::size() const$/;" f class:pappso::PeptideSpectrumMatch size src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::size() const$/;" f class:pappso::MsRunSlice size tests/test_protein.cpp /^ size() const$/;" f class:pappso::DigestionHandler size tests/test_protein.cpp /^ size()$/;" f class:pappso::PeptideModHandler sizetListDataFormatRegExp src/pappsomspp/utils.h /^ static QRegularExpression sizetListDataFormatRegExp;$/;" m class:pappso::Utils sortByRetentionTime src/pappsomspp/xic/xic.cpp /^Xic::sortByRetentionTime()$/;" f class:pappso::Xic sortMz src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::sortMz()$/;" f class:pappso::MassSpectrum sortX src/pappsomspp/trace/trace.cpp /^Trace::sortX()$/;" f class:pappso::Trace sortY src/pappsomspp/trace/trace.cpp /^Trace::sortY()$/;" f class:pappso::Trace spaceKeyReleaseEvent src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::spaceKeyReleaseEvent([[maybe_unused]] QKeyEvent *event)$/;" f class:pappso::BasePlotWidget spectrumListHasSize src/pappsomspp/msrun/msrunreader.cpp /^SpectrumCollectionHandlerInterface::spectrumListHasSize($/;" f class:pappso::SpectrumCollectionHandlerInterface spectrumListSize src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::spectrumListSize() const$/;" f class:pappso::PwizMsRunReader spectrumListSize src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::spectrumListSize() const$/;" f class:TimsMsRunReader spectrumListSize src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::spectrumListSize() const$/;" f class:TimsMsRunReaderMs2 spectrumListSize src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::spectrumListSize() const$/;" f class:TimsMsRunReaderMs2Selected spectrumListSize src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::spectrumListSize() const$/;" f class:pappso::XyMsRunReader spectrum_index src/pappsomspp/xicextractor/private/msrunxicextractor.h /^ std::size_t spectrum_index;$/;" m struct:pappso::MsRunXicExtractor::MsRunXicExtractorPoints splitMzStringToDoubleVectorWithSpaces src/pappsomspp/utils.cpp /^Utils::splitMzStringToDoubleVectorWithSpaces(const QString &text,$/;" f class:pappso::Utils splitSizetStringToSizetVectorWithSpaces src/pappsomspp/utils.cpp /^Utils::splitSizetStringToSizetVectorWithSpaces(const QString &text,$/;" f class:pappso::Utils src maintainer-scripts/makeOrigTarball.py /^src = "{0}\/{1}.gz".format(tarballDir, srcTarball);$/;" v srcTarball maintainer-scripts/makeOrigTarball.py /^ srcTarball = srcTarball));$/;" v srcTarball maintainer-scripts/makeOrigTarball.py /^srcTarball = "{projectName}-{UPVER}.tar".format(projectName = projectName, UPVER = UPVER);$/;" v startDocument tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::startDocument()$/;" f class:XtandemResultsHandler startElement tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::startElement(const QString &namespaceURI$/;" f class:XtandemResultsHandler startElement_aa tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::startElement_aa(QXmlAttributes attributes)$/;" f class:XtandemResultsHandler startElement_domain tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::startElement_domain(QXmlAttributes attributes)$/;" f class:XtandemResultsHandler startElement_group tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::startElement_group(QXmlAttributes attributes)$/;" f class:XtandemResultsHandler startElement_peptide tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::startElement_peptide(QXmlAttributes attributes)$/;" f class:XtandemResultsHandler startGrouping src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::startGrouping()$/;" f class:GrpExperiment startGrouping src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::startGrouping(std::size_t total_number_protein,$/;" f class:pappso::GrpGroupingMonitor startLinearRead src/pappsomspp/vendors/tims/timsbindec.cpp /^pappso::TimsBinDec::startLinearRead($/;" f class:pappso::TimsBinDec startNumberingAllGroups src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::startNumberingAllGroups(std::size_t total_number_group)$/;" f class:pappso::GrpGroupingMonitor startRemovingNonInformativeSubGroupsInAllGroups src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::startRemovingNonInformativeSubGroupsInAllGroups($/;" f class:pappso::GrpGroupingMonitor stopGrouping src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::stopGrouping()$/;" f class:pappso::GrpGroupingMonitor stopRemovingNonInformativeSubGroupsInAllGroups src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::stopRemovingNonInformativeSubGroupsInAllGroups($/;" f class:pappso::GrpGroupingMonitor storeSlices src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::storeSlices($/;" f class:pappso::MsRunXicExtractorDisk storeSlices src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp /^MsRunXicExtractorDiskBuffer::storeSlices($/;" f class:pappso::MsRunXicExtractorDiskBuffer strip src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::strip()$/;" f class:GrpProtein sum src/pappsomspp/types.h /^ sum = 1, \/\/\/< sum of intensities$/;" m class:pappso::MzFormat::XicExtractMethod sumAndRemove src/pappsomspp/processing/filters/filtertriangle.cpp /^FilterTriangle::sumAndRemove(Trace &trace, const DataPoint &max_intensity) const$/;" f class:FilterTriangle sumY src/pappsomspp/trace/trace.cpp /^Trace::sumY() const$/;" f class:pappso::Trace sumY src/pappsomspp/trace/trace.cpp /^Trace::sumY(double mzStart, double mzEnd) const$/;" f class:pappso::Trace sumYTrace src/pappsomspp/trace/trace.cpp /^sumYTrace(std::vector::const_iterator begin,$/;" f namespace:pappso t Session.vim /^nnoremap t :call nerdtree#ui_glue#invokeKeyMap("t")$/;" m t1_index doc/bruker/tof_calibration.py /^t1_index = tof_index_trafo(mz1)$/;" v t2_index doc/bruker/tof_calibration.py /^t2_index = 131941;$/;" v tarballDir maintainer-scripts/makeOrigTarball.py /^tarballDir = mainDir + "\/tarballs";$/;" v temp_corr doc/bruker/tof_calibration.py /^temp_corr = get_temperature_correction(c, frameId)$/;" v thermoRaw src/pappsomspp/types.h /^ thermoRaw = 11,$/;" m class:pappso::MzFormat threonine src/pappsomspp/types.h /^ threonine = 'T',$/;" m class:pappso::MzFormat::AminoAcidChar tic src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::tic() const$/;" f class:pappso::MassSpectrum tic src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::tic(double mzStart, double mzEnd)$/;" f class:pappso::MassSpectrum tims src/pappsomspp/msfile/msfileaccessor.h /^ tims,$/;" m class:pappso::FileReaderType tims_calibration_id src/pappsomspp/vendors/tims/timsframerecord.h /^ std::size_t tims_calibration_id = 0;$/;" m struct:pappso::TimsFrameRecord tims_file doc/bruker/tims_calibration.py /^tims_file = TimsData(analysis_dir)$/;" v tims_file doc/bruker/tof_calibration.py /^tims_file = TimsData(analysis_dir)$/;" v tims_frame_list src/pappsomspp/vendors/tims/timsdata.h /^ std::vector tims_frame_list;$/;" m struct:pappso::TimsData::SpectrumDescr tims_ms2 src/pappsomspp/msfile/msfileaccessor.h /^ tims_ms2,$/;" m class:pappso::FileReaderType tims_offset src/pappsomspp/vendors/tims/timsframerecord.h /^ std::size_t tims_offset = 0;$/;" m struct:pappso::TimsFrameRecord tmpIntensity src/pappsomspp/vendors/tims/timsframe.h /^ double tmpIntensity = 0;$/;" m struct:pappso::TimsFrame::XicComputeStructure toAbsoluteString src/pappsomspp/amino_acid/aa.cpp /^Aa::toAbsoluteString() const$/;" f class:pappso::Aa toAbsoluteString src/pappsomspp/peptide/peptide.cpp /^Peptide::toAbsoluteString() const$/;" f class:pappso::Peptide toMap src/pappsomspp/trace/trace.cpp /^Trace::toMap() const$/;" f class:pappso::Trace toQPaintDevice src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::toQPaintDevice(QPaintDevice *device, const QSize &size)$/;" f class:MassSpectrumWidget toQPaintDevice src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::toQPaintDevice(QPaintDevice *device, const QSize &size)$/;" f class:XicWidget toShort4PointsString src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::toShort4PointsString() const$/;" f class:pappso::SelectionPolygon toString src/pappsomspp/amino_acid/aa.cpp /^Aa::toString() const$/;" f class:pappso::Aa toString src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::toString() const$/;" f class:pappso::MassSpectrumId toString src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::toString() const$/;" f class:pappso::QualifiedMassSpectrum toString src/pappsomspp/msfile/mzformatenumstr.cpp /^pappso::MzFormatEnumStr::toString(pappso::MzFormat mz_format_enum)$/;" f class:pappso::MzFormatEnumStr toString src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::toString() const$/;" f class:pappso::MsRunDataSetTreeNode toString src/pappsomspp/msrun/msrunid.cpp /^MsRunId::toString() const$/;" f class:pappso::MsRunId toString src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^pappso::XicCoord::toString() const$/;" f class:pappso::XicCoord toString src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::toString() const$/;" f class:pappso::XicCoordTims toString src/pappsomspp/mzrange.cpp /^MzRange::toString() const$/;" f class:pappso::MzRange toString src/pappsomspp/peptide/peptide.cpp /^Peptide::toString() const$/;" f class:pappso::Peptide toString src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::toString() const$/;" f class:pappso::PeptideNaturalIsotopeAverage toString src/pappsomspp/precision.cpp /^DaltonPrecision::toString() const$/;" f class:pappso::DaltonPrecision toString src/pappsomspp/precision.cpp /^PpmPrecision::toString() const$/;" f class:pappso::PpmPrecision toString src/pappsomspp/precision.cpp /^ResPrecision::toString() const$/;" f class:pappso::ResPrecision toString src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::toString(int offset, const QString &spacer) const$/;" f class:pappso::MzIntegrationParams toString src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::toString() const$/;" f class:pappso::SelectionPolygon toString src/pappsomspp/processing/combiners/selectionpolygon.h /^ toString() const$/;" f struct:pappso::PolygonType::SelectionPolygonSpec toString src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::toString() const$/;" f class:pappso::FilterCeilingAmplitudePercentage toString src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::toString() const$/;" f class:pappso::FilterChargeDeconvolution toString src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^pappso::FilterComplementIonEnhancer::toString() const$/;" f class:pappso::FilterComplementIonEnhancer toString src/pappsomspp/processing/filters/filterexclusionmz.cpp /^pappso::FilterMzExclusion::toString() const$/;" f class:pappso::FilterMzExclusion toString src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::toString() const$/;" f class:pappso::FilterFloorAmplitudePercentage toString src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::toString() const$/;" f class:pappso::FilterLowIntensitySignalRemoval toString src/pappsomspp/processing/filters/filtermorpho.cpp /^pappso::FilterMorphoAntiSpike::toString() const$/;" f class:pappso::FilterMorphoAntiSpike toString src/pappsomspp/processing/filters/filterpass.cpp /^pappso::FilterQuantileBasedRemoveY::toString() const$/;" f class:pappso::FilterQuantileBasedRemoveY toString src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::toString() const$/;" f class:pappso::FilterSuiteString toString src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::toString() const$/;" f class:pappso::FilterSavitzkyGolay toString src/pappsomspp/processing/filters/savgolfilter.h /^ toString() const$/;" f struct:pappso::SavGolParams toString src/pappsomspp/psm/deepprot/deepprotenum.cpp /^pappso::DeepProtEnumStr::toString(pappso::DeepProtMatchType match_type)$/;" f class:pappso::DeepProtEnumStr toString src/pappsomspp/psm/deepprot/deepprotenum.cpp /^pappso::DeepProtEnumStr::toString(pappso::DeepProtPeptideCandidateStatus status)$/;" f class:pappso::DeepProtEnumStr toString src/pappsomspp/psm/peakionisotopematch.cpp /^PeakIonIsotopeMatch::toString() const$/;" f class:pappso::PeakIonIsotopeMatch toString src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::toString() const$/;" f class:pappso::PeakIonMatch toString src/pappsomspp/trace/datapoint.cpp /^DataPoint::toString() const$/;" f class:pappso::DataPoint toString src/pappsomspp/trace/datapoint.cpp /^DataPoint::toString(int decimals) const$/;" f class:pappso::DataPoint toString src/pappsomspp/trace/maptrace.cpp /^MapTrace::toString() const$/;" f class:pappso::MapTrace toString src/pappsomspp/trace/trace.cpp /^Trace::toString() const$/;" f class:pappso::Trace toString src/pappsomspp/widget/plotwidget/baseplotcontext.cpp /^BasePlotContext::toString() const$/;" f class:pappso::BasePlotContext toString src/pappsomspp/widget/plotwidget/colormapplotconfig.cpp /^ColorMapPlotConfig::toString() const$/;" f class:pappso::ColorMapPlotConfig toString src/pappsomspp/widget/plotwidget/massspectraceplotcontext.cpp /^MassSpecTracePlotContext::toString() const$/;" f class:pappso::MassSpecTracePlotContext toSvgFile src/pappsomspp/widget/graphicdevicewidget.cpp /^GraphicDeviceWidget::toSvgFile(const QString &filename,$/;" f class:GraphicDeviceWidget toTrace src/pappsomspp/trace/maptrace.cpp /^MapTrace::toTrace() const$/;" f class:pappso::MapTrace toTrace src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::toTrace(const QCPGraph *graph_p) const$/;" f class:pappso::BaseTracePlotWidget toTrace src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::toTrace(const QCPRange &x_axis_range, int index) const$/;" f class:pappso::BaseTracePlotWidget toTrace src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::toTrace(const QCPRange &x_axis_range,$/;" f class:pappso::BaseTracePlotWidget toTrace src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::toTrace(int index) const$/;" f class:pappso::BaseTracePlotWidget toUtf8StandardString src/pappsomspp/utils.cpp /^Utils::toUtf8StandardString(const QString &text)$/;" f class:pappso::Utils tof_index_polynome doc/bruker/tof_calibration.py /^ def tof_index_polynome(mz):$/;" f function:mz_transformation tof_index_trafo doc/bruker/tof_calibration.py /^tof_index_trafo = get_tof_transformation(c, temp_corr, frameId)$/;" v tof_index_transformation doc/bruker/tof_calibration.py /^ def tof_index_transformation(mz):$/;" f function:get_tof_transformation totalIonCurrent src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::totalIonCurrent() const$/;" f class:pappso::MassSpectrum traceMetaTypeId src/pappsomspp/trace/trace.cpp /^int traceMetaTypeId = qRegisterMetaType("pappso::Trace");$/;" v tracePtrMetaTypeId src/pappsomspp/trace/trace.cpp /^int tracePtrMetaTypeId = qRegisterMetaType("pappso::Trace *");$/;" v transformToMonoChargedForAllDataPoint src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^pappso::FilterChargeDeconvolution::transformToMonoChargedForAllDataPoint($/;" f class:pappso::FilterChargeDeconvolution translateAligned2OriginalRetentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::translateAligned2OriginalRetentionTime($/;" f class:MsRunRetentionTime translateOriginal2AlignedRetentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::translateOriginal2AlignedRetentionTime($/;" f class:MsRunRetentionTime transpose src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::transpose() const$/;" f class:pappso::SelectionPolygon transposeAxes src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::transposeAxes()$/;" f class:pappso::BaseColorMapPlotWidget treeCleanLine maintainer-scripts/makeOrigTarball.py /^treeCleanLine = treeCleanLines[0];$/;" v treeCleanLines maintainer-scripts/makeOrigTarball.py /^treeCleanLines = re.findall(linePattern, output, re.MULTILINE);$/;" v tryptophan src/pappsomspp/types.h /^ tryptophan = 'W',$/;" m class:pappso::MzFormat::AminoAcidChar ts Session.vim /^onoremap ts :execute "normal! G?^-- $\\rkzz"$/;" m twofft src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::twofft(pappso_double data1[],$/;" f class:pappso::FilterSavitzkyGolay tyrosine src/pappsomspp/types.h /^ tyrosine = 'Y',$/;" m class:pappso::MzFormat::AminoAcidChar u Session.vim /^nnoremap u :call nerdtree#ui_glue#invokeKeyMap("u")$/;" m ui src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.h /^ Ui::OboChooserWidgetForm *ui;$/;" m class:pappso::OboChooserWidget ui src/pappsomspp/widget/obo/obolistwidget/obolistwidget.h /^ Ui::OboListWidgetForm *ui;$/;" m class:pappso::OboListWidget ui src/pappsomspp/widget/obo/obotermform/obotermform.h /^ Ui::OboTermForm *ui;$/;" m class:pappso::OboTermForm ui tests/widget/testwidgetgui.h /^ Ui::TestWidgetMainWindow *ui;$/;" m class:TestWidgetGui uint src/pappsomspp/types.h /^typedef unsigned int uint;$/;" t namespace:pappso uncategorized src/pappsomspp/psm/deepprot/deepprotenum.h /^ uncategorized = 0, \/\/\/< precursor mass was not compared$/;" m class:pappso::DeepProtMatchType unique src/pappsomspp/trace/trace.cpp /^Trace::unique()$/;" f class:pappso::Trace unit src/pappsomspp/precision.cpp /^DaltonPrecision::unit() const$/;" f class:pappso::DaltonPrecision unit src/pappsomspp/precision.cpp /^PpmPrecision::unit() const$/;" f class:pappso::PpmPrecision unit src/pappsomspp/precision.cpp /^ResPrecision::unit() const$/;" f class:pappso::ResPrecision unknown src/pappsomspp/types.h /^ unknown = 0, \/\/\/< unknown format$/;" m class:pappso::MzFormat unmodified src/pappsomspp/psm/deepprot/deepprotenum.h /^ unmodified = 0, \/\/\/< precursor mass was not compared$/;" m class:pappso::DeepProtMatchType::DeepProtPeptideCandidateStatus unserializeSlice src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::unserializeSlice(unsigned int slice_number)$/;" f class:pappso::MsRunXicExtractorDisk unset src/pappsomspp/types.h /^ unset = -1, \/\/\/< not net$/;" m class:pappso::MzFormat::DataCompression unset src/pappsomspp/types.h /^ unset = -1, \/\/\/< not set$/;" m class:pappso::MzFormat::DataKind unset src/pappsomspp/types.h /^ unset = 0,$/;" m class:pappso::MzFormat::AxisScale unset src/pappsomspp/types.h /^ unset = 0x000,$/;" m class:pappso::MzFormat::Axis unshufflePacket src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::unshufflePacket(const char *src)$/;" f class:pappso::TimsFrame update1DSelectionRectangle src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::update1DSelectionRectangle(bool for_integration)$/;" f class:pappso::BasePlotWidget update2DSelectionRectangleSkewed src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::update2DSelectionRectangleSkewed(bool for_integration)$/;" f class:pappso::BasePlotWidget update2DSelectionRectangleSquare src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::update2DSelectionRectangleSquare(bool for_integration)$/;" f class:pappso::BasePlotWidget updateAxesRangeHistory src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::updateAxesRangeHistory()$/;" f class:pappso::BasePlotWidget updateContextXandYAxisRanges src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::updateContextXandYAxisRanges()$/;" f class:pappso::BasePlotWidget updateGreatestMz src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::updateGreatestMz(pappso::pappso_double value)$/;" f class:pappso::MzIntegrationParams updateSelectionRectangle src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::updateSelectionRectangle(bool as_line_segment,$/;" f class:pappso::BasePlotWidget updateSmallestMz src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::updateSmallestMz(pappso::pappso_double value)$/;" f class:pappso::MzIntegrationParams updateSwitchValue src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.cpp /^pappso::SwitchWidget::updateSwitchValue()$/;" f class:pappso::SwitchWidget upper src/pappsomspp/mzrange.h /^ upper() const$/;" f class:pappso::MzRange upstreamVersionFromDebianChangelog maintainer-scripts/makeOrigTarballFunctions.py /^def upstreamVersionFromDebianChangelog(projectName, filePath):$/;" f v_sdk1 doc/bruker/tims_calibration.py /^v_sdk1 = tims_file.scanNumToVoltage(frameId, scan_numbers)$/;" v valine src/pappsomspp/types.h /^ valine = 'V',$/;" m class:pappso::MzFormat::AminoAcidChar versionFromCMakeLists maintainer-scripts/makeOrigTarballFunctions.py /^def versionFromCMakeLists(filePath):$/;" f verticalGetGraphCoordNewPointCountPixels src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::verticalGetGraphCoordNewPointCountPixels(int pixel_count)$/;" f class:pappso::BasePlotWidget verticalMoveMouseCursorCountPixels src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::verticalMoveMouseCursorCountPixels(int pixel_count)$/;" f class:pappso::BasePlotWidget voltage doc/bruker/tims_calibration.py /^voltage = get_voltage(c, frameId)$/;" v watersRaw src/pappsomspp/types.h /^ watersRaw = 12,$/;" m class:pappso::MzFormat weighted_intensity src/pappsomspp/msrun/alignment/msrunretentiontime.h /^ weighted_intensity,$/;" m class:pappso::MsRunRetentionTime::ComputeRetentionTimeReference whatIsVisibleOfTheSelectionRectangle src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::whatIsVisibleOfTheSelectionRectangle()$/;" f class:pappso::BasePlotWidget width src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::width(bool &ok) const$/;" f class:pappso::SelectionPolygon withDebianDir maintainer-scripts/makeOrigTarball.py /^withDebianDir = args.withDebianDir;$/;" v wrapTandemInputFile src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::wrapTandemInputFile(const QString &tandem_input_file)$/;" f class:pappso::TandemWrapperRun write src/pappsomspp/msrun/output/mgfoutput.cpp /^MgfOutput::write(const QualifiedMassSpectrum &mass_spectrum)$/;" f class:MgfOutput write src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::write(MsRunReader *p_msrunreader)$/;" f class:MzxmlOutput write tests/common.h /^ write(const Trace &xic)$/;" f class:XicOdsWriter write tests/test_xic.cpp /^ write(const Trace &xic)$/;" f class:XicOdsWriter writeFinalTandemOutput src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::writeFinalTandemOutput($/;" f class:pappso::TandemWrapperRun writeHeader src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::writeHeader(MsRunReader *p_msrunreader)$/;" f class:MzxmlOutput writeLexicalOrderedString src/pappsomspp/utils.cpp /^Utils::writeLexicalOrderedString(QTextStream *p_out, unsigned int num)$/;" f class:pappso::Utils writeOdsXic tests/test_xic.cpp /^writeOdsXic(const QString &filepath, Trace &xic)$/;" f writeProtein src/pappsomspp/fasta/fastaoutputstream.cpp /^FastaOutputStream::writeProtein(const Protein &protein)$/;" f class:pappso::FastaOutputStream writeQualifiedMassSpectrum src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::writeQualifiedMassSpectrum($/;" f class:MzxmlOutput writeToFile src/pappsomspp/utils.cpp /^Utils::writeToFile(const QString &text, const QString &file_name)$/;" f class:pappso::Utils writeTrace tests/test_msrunalignment.cpp /^writeTrace(const QString &filename, const pappso::Trace &trace)$/;" f x Session.vim /^nnoremap x :call nerdtree#ui_glue#invokeKeyMap("x")$/;" m x src/pappsomspp/trace/datapoint.h /^ pappso_double x = -1;$/;" m struct:pappso::DataPoint x src/pappsomspp/types.h /^ x = 1 << 0,$/;" m class:pappso::MzFormat::Axis x src/pappsomspp/types.h /^ x = 13 \/\/\/< Cter acylium ions$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon xAxisDataKind src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::xAxisDataKind() const$/;" f class:pappso::BaseColorMapPlotWidget xAxisDataKind src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ DataKind xAxisDataKind = DataKind::unset;$/;" m struct:pappso::ColorMapPlotConfig xAxisScale src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::xAxisScale() const$/;" f class:pappso::BaseColorMapPlotWidget xAxisScale src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ AxisScale xAxisScale = AxisScale::orig;$/;" m struct:pappso::ColorMapPlotConfig xAxisToSeconds src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::xAxisToSeconds(pappso::pappso_double rt) const$/;" f class:QCPXic xValues src/pappsomspp/trace/maptrace.cpp /^MapTrace::xValues()$/;" f class:pappso::MapTrace xValues src/pappsomspp/trace/trace.cpp /^Trace::xValues() const$/;" f class:pappso::Trace xicClickEvent src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::xicClickEvent(pappso::pappso_double rt,$/;" f class:XicWidget xicSptr src/pappsomspp/msrun/xiccoord/xiccoord.h /^ XicSPtr xicSptr = nullptr;$/;" m struct:pappso::XicCoord xic_ptr src/pappsomspp/vendors/tims/timsframe.h /^ Xic *xic_ptr = nullptr;$/;" m struct:pappso::TimsFrame::XicComputeStructure xy src/pappsomspp/msfile/msfileaccessor.h /^ xy,$/;" m class:pappso::FileReaderType xy src/pappsomspp/types.h /^ xy = 5, \/\/\/< (x,y) format$/;" m class:pappso::MzFormat xyMassDataFormatRegExp src/pappsomspp/utils.cpp /^QRegularExpression Utils::xyMassDataFormatRegExp =$/;" m class:pappso::Utils file: xyMassDataFormatRegExp src/pappsomspp/utils.h /^ static QRegularExpression xyMassDataFormatRegExp;$/;" m class:pappso::Utils y src/pappsomspp/peptide/peptide.h /^ y,$/;" m class:pappso::PeptideDirection::PeptideIonCter y src/pappsomspp/trace/datapoint.h /^ pappso_double y = 0;$/;" m struct:pappso::DataPoint y src/pappsomspp/types.h /^ y = 1 << 1,$/;" m class:pappso::MzFormat::Axis y src/pappsomspp/types.h /^ y = 8, \/\/\/< Cter amino ions$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon yAxisDataKind src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::yAxisDataKind() const$/;" f class:pappso::BaseColorMapPlotWidget yAxisDataKind src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ DataKind yAxisDataKind = DataKind::unset;$/;" m struct:pappso::ColorMapPlotConfig yAxisScale src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::yAxisScale() const$/;" f class:pappso::BaseColorMapPlotWidget yAxisScale src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ AxisScale yAxisScale = AxisScale::orig;$/;" m struct:pappso::ColorMapPlotConfig yValues src/pappsomspp/trace/maptrace.cpp /^MapTrace::yValues()$/;" f class:pappso::MapTrace yValues src/pappsomspp/trace/trace.cpp /^Trace::yValues() const$/;" f class:pappso::Trace yo src/pappsomspp/peptide/peptide.h /^ yo,$/;" m class:pappso::PeptideDirection::PeptideIonCter yo src/pappsomspp/types.h /^ yo = 10, \/\/\/< Cter amino ions + H2O loss$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon yp src/pappsomspp/peptide/peptide.h /^ yp,$/;" m class:pappso::PeptideDirection::PeptideIonCter yp src/pappsomspp/types.h /^ yp = 12,$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon ystar src/pappsomspp/peptide/peptide.h /^ ystar,$/;" m class:pappso::PeptideDirection::PeptideIonCter ystar src/pappsomspp/types.h /^ ystar = 9, \/\/\/< Cter amino ions + NH3 loss$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon z src/pappsomspp/peptide/peptide.h /^ z,$/;" m class:pappso::PeptideDirection::PeptideIonCter z src/pappsomspp/types.h /^ z = 1 << 2,$/;" m class:pappso::MzFormat::Axis z src/pappsomspp/types.h /^ z = 11, \/\/\/< Cter carbocations$/;" m class:pappso::MzFormat::XicExtractMethod::PeptideIon z1_range src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ std::pair z1_range;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo z1_vect src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ std::vector> z1_vect;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo z2_range src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ std::pair z2_range;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo z2_vect src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ std::vector> z2_vect;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo zAxisDataResetToOriginal src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::zAxisDataResetToOriginal()$/;" f class:pappso::BaseColorMapPlotWidget zAxisFilterHighPassPercentage src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::zAxisFilterHighPassPercentage($/;" f class:pappso::BaseColorMapPlotWidget zAxisFilterLowPassPercentage src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::zAxisFilterLowPassPercentage($/;" f class:pappso::BaseColorMapPlotWidget zAxisFilterLowPassThreshold src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::zAxisFilterLowPassThreshold(double threshold)$/;" f class:pappso::BaseColorMapPlotWidget zAxisScale src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::zAxisScale() const$/;" f class:pappso::BaseColorMapPlotWidget zAxisScale src/pappsomspp/widget/plotwidget/colormapplotconfig.h /^ AxisScale zAxisScale = AxisScale::orig;$/;" m struct:pappso::ColorMapPlotConfig zAxisScaleToLog10 src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::zAxisScaleToLog10()$/;" f class:pappso::BaseColorMapPlotWidget z_charge src/pappsomspp/processing/filters/filterchargedeconvolution.h /^ int z_charge = -1;$/;" m struct:pappso::FilterChargeDeconvolution::DataPointInfo zeroDecimalsInValue src/pappsomspp/utils.cpp /^Utils::zeroDecimalsInValue(pappso_double value)$/;" f class:pappso::Utils zlib src/pappsomspp/types.h /^ zlib = 1, \/\/\/< zlib compresssion$/;" m class:pappso::MzFormat::DataCompression zo Session.vim /^normal! zo$/;" m zt Session.vim /^normal! zt$/;" m { Session.vim /^imap { delimitMate{$/;" m } Session.vim /^imap } delimitMate}$/;" m ~Aa src/pappsomspp/amino_acid/aa.cpp /^Aa::~Aa()$/;" f class:pappso::Aa ~AaBase src/pappsomspp/amino_acid/aabase.cpp /^AaBase::~AaBase()$/;" f class:pappso::AaBase ~AaModification src/pappsomspp/amino_acid/aamodification.cpp /^AaModification::~AaModification()$/;" f class:pappso::AaModification ~BaseColorMapPlotWidget src/pappsomspp/widget/plotwidget/basecolormapplotwidget.cpp /^BaseColorMapPlotWidget::~BaseColorMapPlotWidget()$/;" f class:pappso::BaseColorMapPlotWidget ~BasePlotContext src/pappsomspp/widget/plotwidget/baseplotcontext.cpp /^BasePlotContext::~BasePlotContext()$/;" f class:pappso::BasePlotContext ~BasePlotWidget src/pappsomspp/widget/plotwidget/baseplotwidget.cpp /^BasePlotWidget::~BasePlotWidget()$/;" f class:pappso::BasePlotWidget ~BaseTracePlotWidget src/pappsomspp/widget/plotwidget/basetraceplotwidget.cpp /^BaseTracePlotWidget::~BaseTracePlotWidget()$/;" f class:pappso::BaseTracePlotWidget ~DaltonPrecision src/pappsomspp/precision.cpp /^DaltonPrecision::~DaltonPrecision()$/;" f class:pappso::DaltonPrecision ~DriftSpecMassSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/driftspecmassspeccolormapplotwidget.cpp /^DriftSpecMassSpecColorMapPlotWidget::~DriftSpecMassSpecColorMapPlotWidget()$/;" f class:pappso::DriftSpecMassSpecColorMapPlotWidget ~DriftSpecTracePlotWidget src/pappsomspp/widget/plotwidget/driftspectraceplotwidget.cpp /^DriftSpecTracePlotWidget::~DriftSpecTracePlotWidget()$/;" f class:pappso::DriftSpecTracePlotWidget ~Enzyme src/pappsomspp/protein/enzyme.cpp /^Enzyme::~Enzyme()$/;" f class:pappso::Enzyme ~FastaFileIndexer src/pappsomspp/fasta/fastafileindexer.cpp /^FastaFileIndexer::~FastaFileIndexer()$/;" f class:pappso::FastaFileIndexer ~FastaOutputStream src/pappsomspp/fasta/fastaoutputstream.cpp /^FastaOutputStream::~FastaOutputStream()$/;" f class:pappso::FastaOutputStream ~FastaReader src/pappsomspp/fasta/fastareader.cpp /^FastaReader::~FastaReader()$/;" f class:pappso::FastaReader ~FilterCeilingAmplitudePercentage src/pappsomspp/processing/filters/filterceilingamplitudepercentage.cpp /^FilterCeilingAmplitudePercentage::~FilterCeilingAmplitudePercentage()$/;" f class:pappso::FilterCeilingAmplitudePercentage ~FilterChargeDeconvolution src/pappsomspp/processing/filters/filterchargedeconvolution.cpp /^FilterChargeDeconvolution::~FilterChargeDeconvolution()$/;" f class:FilterChargeDeconvolution ~FilterComplementIonEnhancer src/pappsomspp/processing/filters/filtercomplementionenhancer.cpp /^FilterComplementIonEnhancer::~FilterComplementIonEnhancer()$/;" f class:FilterComplementIonEnhancer ~FilterFloorAmplitudePercentage src/pappsomspp/processing/filters/filterflooramplitudepercentage.cpp /^FilterFloorAmplitudePercentage::~FilterFloorAmplitudePercentage()$/;" f class:pappso::FilterFloorAmplitudePercentage ~FilterFloorY src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterFloorY(){};$/;" f class:pappso::FilterFloorY ~FilterGreatestY src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterGreatestY(){};$/;" f class:pappso::FilterGreatestY ~FilterGreatestYperWindow src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterGreatestYperWindow(){};$/;" f class:pappso::FilterGreatestYperWindow ~FilterHighPass src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterHighPass(){};$/;" f class:pappso::FilterHighPass ~FilterHighPassPercentage src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterHighPassPercentage(){};$/;" f class:pappso::FilterHighPassPercentage ~FilterInterface src/pappsomspp/processing/filters/filterinterface.h /^ virtual ~FilterInterface(){};$/;" f class:pappso::FilterInterface ~FilterLocalMaximum src/pappsomspp/processing/filters/filterlocalmaximum.cpp /^FilterLocalMaximum::~FilterLocalMaximum()$/;" f class:FilterLocalMaximum ~FilterLowIntensitySignalRemoval src/pappsomspp/processing/filters/filterlowintensitysignalremoval.cpp /^FilterLowIntensitySignalRemoval::~FilterLowIntensitySignalRemoval()$/;" f class:pappso::FilterLowIntensitySignalRemoval ~FilterLowPass src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterLowPass(){};$/;" f class:pappso::FilterLowPass ~FilterMorphoAntiSpike src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoAntiSpike(){};$/;" f class:pappso::FilterMorphoAntiSpike ~FilterMorphoBackground src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoBackground(){};$/;" f class:pappso::FilterMorphoBackground ~FilterMorphoMax src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoMax(){};$/;" f class:pappso::FilterMorphoMax ~FilterMorphoMaxMin src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoMaxMin(){};$/;" f class:pappso::FilterMorphoMaxMin ~FilterMorphoMean src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoMean(){};$/;" f class:pappso::FilterMorphoMean ~FilterMorphoMedian src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoMedian(){};$/;" f class:pappso::FilterMorphoMedian ~FilterMorphoMin src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoMin(){};$/;" f class:pappso::FilterMorphoMin ~FilterMorphoMinMax src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoMinMax(){};$/;" f class:pappso::FilterMorphoMinMax ~FilterMorphoSum src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoSum(){};$/;" f class:pappso::FilterMorphoSum ~FilterMorphoWindowBase src/pappsomspp/processing/filters/filtermorpho.h /^ virtual ~FilterMorphoWindowBase(){};$/;" f class:pappso::FilterMorphoWindowBase ~FilterMzExclusion src/pappsomspp/processing/filters/filterexclusionmz.cpp /^FilterMzExclusion::~FilterMzExclusion()$/;" f class:FilterMzExclusion ~FilterNameInterface src/pappsomspp/processing/filters/filternameinterface.h /^ virtual ~FilterNameInterface(){};$/;" f class:pappso::FilterNameInterface ~FilterOboPsiModSink src/pappsomspp/obo/filterobopsimodsink.cpp /^FilterOboPsiModSink::~FilterOboPsiModSink()$/;" f class:pappso::FilterOboPsiModSink ~FilterOboPsiModTermAccession src/pappsomspp/obo/filterobopsimodtermaccession.cpp /^FilterOboPsiModTermAccession::~FilterOboPsiModTermAccession()$/;" f class:pappso::FilterOboPsiModTermAccession ~FilterOboPsiModTermDiffMono src/pappsomspp/obo/filterobopsimodtermdiffmono.cpp /^FilterOboPsiModTermDiffMono::~FilterOboPsiModTermDiffMono()$/;" f class:pappso::FilterOboPsiModTermDiffMono ~FilterOboPsiModTermLabel src/pappsomspp/obo/filterobopsimodtermlabel.cpp /^FilterOboPsiModTermLabel::~FilterOboPsiModTermLabel()$/;" f class:pappso::FilterOboPsiModTermLabel ~FilterOboPsiModTermName src/pappsomspp/obo/filterobopsimodtermname.cpp /^FilterOboPsiModTermName::~FilterOboPsiModTermName()$/;" f class:pappso::FilterOboPsiModTermName ~FilterQuantileBasedRemoveY src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterQuantileBasedRemoveY(){};$/;" f class:pappso::FilterQuantileBasedRemoveY ~FilterRemoveC13 src/pappsomspp/processing/filters/filterremovec13.cpp /^FilterRemoveC13::~FilterRemoveC13()$/;" f class:FilterRemoveC13 ~FilterRemoveY src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterRemoveY(){};$/;" f class:pappso::FilterRemoveY ~FilterResampleKeepGreater src/pappsomspp/processing/filters/filterresample.h /^ virtual ~FilterResampleKeepGreater(){};$/;" f class:pappso::FilterResampleKeepGreater ~FilterResampleKeepPointInPolygon src/pappsomspp/processing/filters/filterresample.h /^ virtual ~FilterResampleKeepPointInPolygon(){};$/;" f class:pappso::FilterResampleKeepPointInPolygon ~FilterResampleKeepSmaller src/pappsomspp/processing/filters/filterresample.h /^ virtual ~FilterResampleKeepSmaller(){};$/;" f class:pappso::FilterResampleKeepSmaller ~FilterResampleKeepXRange src/pappsomspp/processing/filters/filterresample.h /^ virtual ~FilterResampleKeepXRange(){};$/;" f class:pappso::FilterResampleKeepXRange ~FilterResampleRemoveXRange src/pappsomspp/processing/filters/filterresample.h /^ virtual ~FilterResampleRemoveXRange(){};$/;" f class:pappso::FilterResampleRemoveXRange ~FilterRescaleY src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterRescaleY(){};$/;" f class:pappso::FilterRescaleY ~FilterRoundY src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterRoundY(){};$/;" f class:pappso::FilterRoundY ~FilterSavitzkyGolay src/pappsomspp/processing/filters/savgolfilter.cpp /^FilterSavitzkyGolay::~FilterSavitzkyGolay()$/;" f class:pappso::FilterSavitzkyGolay ~FilterScaleFactorY src/pappsomspp/processing/filters/filterpass.h /^ virtual ~FilterScaleFactorY(){};$/;" f class:pappso::FilterScaleFactorY ~FilterSuiteString src/pappsomspp/processing/filters/filtersuitestring.cpp /^FilterSuiteString::~FilterSuiteString()$/;" f class:pappso::FilterSuiteString ~FilterTriangle src/pappsomspp/processing/filters/filtertriangle.cpp /^FilterTriangle::~FilterTriangle()$/;" f class:FilterTriangle ~GraphicDeviceWidget src/pappsomspp/widget/graphicdevicewidget.cpp /^GraphicDeviceWidget::~GraphicDeviceWidget()$/;" f class:GraphicDeviceWidget ~GrpExperiment src/pappsomspp/grouping/grpexperiment.cpp /^GrpExperiment::~GrpExperiment()$/;" f class:GrpExperiment ~GrpGroup src/pappsomspp/grouping/grpgroup.cpp /^GrpGroup::~GrpGroup()$/;" f class:GrpGroup ~GrpGroupingMonitor src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitor::~GrpGroupingMonitor()$/;" f class:pappso::GrpGroupingMonitor ~GrpGroupingMonitorInterface src/pappsomspp/grouping/grpgroupingmonitor.cpp /^GrpGroupingMonitorInterface::~GrpGroupingMonitorInterface()$/;" f class:pappso::GrpGroupingMonitorInterface ~GrpMapPeptideToGroup src/pappsomspp/grouping/grpmappeptidetogroup.cpp /^GrpMapPeptideToGroup::~GrpMapPeptideToGroup()$/;" f class:pappso::GrpMapPeptideToGroup ~GrpMapPeptideToSubGroupSet src/pappsomspp/grouping/grpmappeptidetosubgroupset.cpp /^GrpMapPeptideToSubGroupSet::~GrpMapPeptideToSubGroupSet()$/;" f class:pappso::GrpMapPeptideToSubGroupSet ~GrpPeptide src/pappsomspp/grouping/grppeptide.cpp /^GrpPeptide::~GrpPeptide()$/;" f class:GrpPeptide ~GrpPeptideSet src/pappsomspp/grouping/grppeptideset.cpp /^GrpPeptideSet::~GrpPeptideSet()$/;" f class:GrpPeptideSet ~GrpProtein src/pappsomspp/grouping/grpprotein.cpp /^GrpProtein::~GrpProtein()$/;" f class:GrpProtein ~GrpSubGroup src/pappsomspp/grouping/grpsubgroup.cpp /^GrpSubGroup::~GrpSubGroup()$/;" f class:pappso::GrpSubGroup ~GrpSubGroupSet src/pappsomspp/grouping/grpsubgroupset.cpp /^GrpSubGroupSet::~GrpSubGroupSet()$/;" f class:pappso::GrpSubGroupSet ~HttpButton src/pappsomspp/widget/httpbutton/httpbutton.cpp /^pappso::HttpButton::~HttpButton()$/;" f class:pappso::HttpButton ~Ion src/pappsomspp/peptide/ion.cpp /^Ion::~Ion()$/;" f class:pappso::Ion ~IonIsotopeRatioScore src/pappsomspp/psm/experimental/ionisotoperatioscore.cpp /^IonIsotopeRatioScore::~IonIsotopeRatioScore()$/;" f class:IonIsotopeRatioScore ~MapTrace src/pappsomspp/trace/maptrace.cpp /^MapTrace::~MapTrace()$/;" f class:pappso::MapTrace ~MassDataCombinerInterface src/pappsomspp/processing/combiners/massdatacombinerinterface.cpp /^MassDataCombinerInterface::~MassDataCombinerInterface()$/;" f class:pappso::MassDataCombinerInterface ~MassSpecTracePlotContext src/pappsomspp/widget/plotwidget/massspectraceplotcontext.cpp /^MassSpecTracePlotContext::~MassSpecTracePlotContext()$/;" f class:pappso::MassSpecTracePlotContext ~MassSpecTracePlotWidget src/pappsomspp/widget/plotwidget/massspectraceplotwidget.cpp /^MassSpecTracePlotWidget::~MassSpecTracePlotWidget()$/;" f class:pappso::MassSpecTracePlotWidget ~MassSpectrum src/pappsomspp/massspectrum/massspectrum.cpp /^MassSpectrum::~MassSpectrum()$/;" f class:pappso::MassSpectrum ~MassSpectrumCombiner src/pappsomspp/processing/combiners/massspectrumcombiner.cpp /^MassSpectrumCombiner::~MassSpectrumCombiner()$/;" f class:pappso::MassSpectrumCombiner ~MassSpectrumFilterGreatestItensities src/pappsomspp/processing/filters/filterpass.h /^ virtual ~MassSpectrumFilterGreatestItensities(){};$/;" f class:pappso::MassSpectrumFilterGreatestItensities ~MassSpectrumFilterInterface src/pappsomspp/processing/filters/filterinterface.h /^ virtual ~MassSpectrumFilterInterface(){};$/;" f class:pappso::MassSpectrumFilterInterface ~MassSpectrumFilterResampleKeepMzRange src/pappsomspp/processing/filters/filterresample.h /^ virtual ~MassSpectrumFilterResampleKeepMzRange(){};$/;" f class:pappso::MassSpectrumFilterResampleKeepMzRange ~MassSpectrumFilterResampleRemoveMzRange src/pappsomspp/processing/filters/filterresample.h /^ virtual ~MassSpectrumFilterResampleRemoveMzRange(){};$/;" f class:pappso::MassSpectrumFilterResampleRemoveMzRange ~MassSpectrumId src/pappsomspp/massspectrum/massspectrumid.cpp /^MassSpectrumId::~MassSpectrumId()$/;" f class:pappso::MassSpectrumId ~MassSpectrumMinusCombiner src/pappsomspp/processing/combiners/massspectrumminuscombiner.cpp /^MassSpectrumMinusCombiner::~MassSpectrumMinusCombiner()$/;" f class:pappso::MassSpectrumMinusCombiner ~MassSpectrumPlusCombiner src/pappsomspp/processing/combiners/massspectrumpluscombiner.cpp /^MassSpectrumPlusCombiner::~MassSpectrumPlusCombiner()$/;" f class:pappso::MassSpectrumPlusCombiner ~MassSpectrumWidget src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp /^MassSpectrumWidget::~MassSpectrumWidget()$/;" f class:MassSpectrumWidget ~MgfOutput src/pappsomspp/msrun/output/mgfoutput.cpp /^MgfOutput::~MgfOutput()$/;" f class:MgfOutput ~MorpheusScore src/pappsomspp/psm/morpheus/morpheusscore.cpp /^MorpheusScore::~MorpheusScore()$/;" f class:pappso::MorpheusScore ~MsFileAccessor src/pappsomspp/msfile/msfileaccessor.cpp /^MsFileAccessor::~MsFileAccessor()$/;" f class:pappso::MsFileAccessor ~MsFileReader src/pappsomspp/msfile/msfilereader.cpp /^MsFileReader::~MsFileReader()$/;" f class:pappso::MsFileReader ~MsRunDataSetTree src/pappsomspp/msrun/msrundatasettree.cpp /^MsRunDataSetTree::~MsRunDataSetTree()$/;" f class:pappso::MsRunDataSetTree ~MsRunDataSetTreeNode src/pappsomspp/msrun/msrundatasettreenode.cpp /^MsRunDataSetTreeNode::~MsRunDataSetTreeNode()$/;" f class:pappso::MsRunDataSetTreeNode ~MsRunId src/pappsomspp/msrun/msrunid.cpp /^MsRunId::~MsRunId()$/;" f class:pappso::MsRunId ~MsRunReader src/pappsomspp/msrun/msrunreader.cpp /^MsRunReader::~MsRunReader()$/;" f class:pappso::MsRunReader ~MsRunReaderRetentionTimeLine src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderRetentionTimeLine::~MsRunReaderRetentionTimeLine()$/;" f class:pappso::MsRunReaderRetentionTimeLine ~MsRunReaderScanNumberMultiMap src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderScanNumberMultiMap::~MsRunReaderScanNumberMultiMap()$/;" f class:pappso::MsRunReaderScanNumberMultiMap ~MsRunReaderTicChromatogram src/pappsomspp/msrun/msrunreader.cpp /^MsRunReaderTicChromatogram::~MsRunReaderTicChromatogram()$/;" f class:pappso::MsRunReaderTicChromatogram ~MsRunRetentionTime src/pappsomspp/msrun/alignment/msrunretentiontime.cpp /^MsRunRetentionTime::~MsRunRetentionTime()$/;" f class:MsRunRetentionTime ~MsRunSlice src/pappsomspp/xicextractor/private/msrunslice.cpp /^MsRunSlice::~MsRunSlice()$/;" f class:pappso::MsRunSlice ~MsRunXicExtractor src/pappsomspp/xicextractor/private/msrunxicextractor.cpp /^MsRunXicExtractor::~MsRunXicExtractor()$/;" f class:pappso::MsRunXicExtractor ~MsRunXicExtractorDisk src/pappsomspp/xicextractor/private/msrunxicextractordisk.cpp /^MsRunXicExtractorDisk::~MsRunXicExtractorDisk()$/;" f class:pappso::MsRunXicExtractorDisk ~MsRunXicExtractorDiskBuffer src/pappsomspp/xicextractor/private/msrunxicextractordiskbuffer.cpp /^MsRunXicExtractorDiskBuffer::~MsRunXicExtractorDiskBuffer()$/;" f class:pappso::MsRunXicExtractorDiskBuffer ~MsRunXicExtractorFactory src/pappsomspp/xicextractor/msrunxicextractorfactory.cpp /^MsRunXicExtractorFactory::~MsRunXicExtractorFactory()$/;" f class:pappso::MsRunXicExtractorFactory ~MsRunXicExtractorInterface src/pappsomspp/xicextractor/msrunxicextractorinterface.cpp /^MsRunXicExtractorInterface::~MsRunXicExtractorInterface()$/;" f class:pappso::MsRunXicExtractorInterface ~MzCalibrationInterface src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationinterface.cpp /^MzCalibrationInterface::~MzCalibrationInterface()$/;" f class:pappso::MzCalibrationInterface ~MzCalibrationModel1 src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp /^MzCalibrationModel1::~MzCalibrationModel1()$/;" f class:MzCalibrationModel1 ~MzCalibrationModel1Cached src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationmodel1.cpp /^pappso::MzCalibrationModel1Cached::~MzCalibrationModel1Cached()$/;" f class:pappso::MzCalibrationModel1Cached ~MzCalibrationStore src/pappsomspp/vendors/tims/mzcalibration/mzcalibrationstore.cpp /^MzCalibrationStore::~MzCalibrationStore()$/;" f class:pappso::MzCalibrationStore ~MzIntegrationParams src/pappsomspp/processing/combiners/mzintegrationparams.cpp /^MzIntegrationParams::~MzIntegrationParams()$/;" f class:pappso::MzIntegrationParams ~MzRange src/pappsomspp/mzrange.cpp /^MzRange::~MzRange()$/;" f class:pappso::MzRange ~MzxmlOutput src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::~MzxmlOutput()$/;" f class:MzxmlOutput ~OboChooserWidget src/pappsomspp/widget/obo/obochooserwidget/obochooserwidget.cpp /^pappso::OboChooserWidget::~OboChooserWidget()$/;" f class:pappso::OboChooserWidget ~OboListModel src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^OboListModel::~OboListModel()$/;" f class:OboListModel ~OboListProxyModel src/pappsomspp/widget/obo/obolistwidget/obolistproxymodel.cpp /^OboListProxyModel::~OboListProxyModel()$/;" f class:OboListProxyModel ~OboListWidget src/pappsomspp/widget/obo/obolistwidget/obolistwidget.cpp /^OboListWidget::~OboListWidget()$/;" f class:OboListWidget ~OboPsiMod src/pappsomspp/obo/obopsimod.cpp /^OboPsiMod::~OboPsiMod()$/;" f class:pappso::OboPsiMod ~OboPsiModHandler src/pappsomspp/widget/obo/obolistwidget/obolistmodel.cpp /^pappso::OboListModel::OboPsiModHandler::~OboPsiModHandler()$/;" f class:pappso::OboListModel::OboPsiModHandler ~OboPsiModTerm src/pappsomspp/obo/obopsimodterm.cpp /^OboPsiModTerm::~OboPsiModTerm()$/;" f class:pappso::OboPsiModTerm ~OboTermForm src/pappsomspp/widget/obo/obotermform/obotermform.cpp /^pappso::OboTermForm::~OboTermForm()$/;" f class:pappso::OboTermForm ~PappsoException src/pappsomspp/pappsoexception.h /^ virtual ~PappsoException() throw()$/;" f class:pappso::PappsoException ~PeakIonIsotopeMatch src/pappsomspp/psm/peakionisotopematch.cpp /^PeakIonIsotopeMatch::~PeakIonIsotopeMatch()$/;" f class:pappso::PeakIonIsotopeMatch ~PeakIonMatch src/pappsomspp/psm/peakionmatch.cpp /^PeakIonMatch::~PeakIonMatch()$/;" f class:pappso::PeakIonMatch ~Peptide src/pappsomspp/peptide/peptide.cpp /^Peptide::~Peptide()$/;" f class:pappso::Peptide ~PeptideBuilder src/pappsomspp/protein/peptidebuilder.cpp /^PeptideBuilder::~PeptideBuilder()$/;" f class:pappso::PeptideBuilder ~PeptideFixedModificationBuilder src/pappsomspp/protein/peptidefixedmodificationbuilder.cpp /^PeptideFixedModificationBuilder::~PeptideFixedModificationBuilder()$/;" f class:PeptideFixedModificationBuilder ~PeptideFragment src/pappsomspp/peptide/peptidefragment.cpp /^PeptideFragment::~PeptideFragment()$/;" f class:pappso::PeptideFragment ~PeptideFragmentIon src/pappsomspp/peptide/peptidefragmention.cpp /^PeptideFragmentIon::~PeptideFragmentIon()$/;" f class:pappso::PeptideFragmentIon ~PeptideFragmentIonListBase src/pappsomspp/peptide/peptidefragmentionlistbase.cpp /^PeptideFragmentIonListBase::~PeptideFragmentIonListBase()$/;" f class:pappso::PeptideFragmentIonListBase ~PeptideIsotopeSpectrumMatch src/pappsomspp/psm/peptideisotopespectrummatch.cpp /^PeptideIsotopeSpectrumMatch::~PeptideIsotopeSpectrumMatch()$/;" f class:pappso::PeptideIsotopeSpectrumMatch ~PeptideMethioninRemove src/pappsomspp/protein/peptidemethioninremove.cpp /^PeptideMethioninRemove::~PeptideMethioninRemove()$/;" f class:pappso::PeptideMethioninRemove ~PeptideModificatorBase src/pappsomspp/protein/peptidemodificatorbase.cpp /^PeptideModificatorBase::~PeptideModificatorBase()$/;" f class:pappso::PeptideModificatorBase ~PeptideModificatorInterface src/pappsomspp/protein/enzymeproductinterface.h /^ virtual ~PeptideModificatorInterface(){};$/;" f class:pappso::PeptideModificatorInterface ~PeptideModificatorPipeline src/pappsomspp/protein/peptidemodificatorpipeline.cpp /^PeptideModificatorPipeline::~PeptideModificatorPipeline()$/;" f class:PeptideModificatorPipeline ~PeptideModificatorTee src/pappsomspp/protein/peptidemodificatortee.cpp /^PeptideModificatorTee::~PeptideModificatorTee()$/;" f class:PeptideModificatorTee ~PeptideNaturalIsotope src/pappsomspp/peptide/peptidenaturalisotope.cpp /^PeptideNaturalIsotope::~PeptideNaturalIsotope()$/;" f class:pappso::PeptideNaturalIsotope ~PeptideNaturalIsotopeAverage src/pappsomspp/peptide/peptidenaturalisotopeaverage.cpp /^PeptideNaturalIsotopeAverage::~PeptideNaturalIsotopeAverage()$/;" f class:pappso::PeptideNaturalIsotopeAverage ~PeptideNaturalIsotopeList src/pappsomspp/peptide/peptidenaturalisotopelist.cpp /^PeptideNaturalIsotopeList::~PeptideNaturalIsotopeList()$/;" f class:pappso::PeptideNaturalIsotopeList ~PeptideRawFragmentMasses src/pappsomspp/peptide/peptiderawfragmentmasses.cpp /^PeptideRawFragmentMasses::~PeptideRawFragmentMasses()$/;" f class:pappso::PeptideRawFragmentMasses ~PeptideSemiEnzyme src/pappsomspp/protein/peptidesemienzyme.cpp /^PeptideSemiEnzyme::~PeptideSemiEnzyme()$/;" f class:pappso::PeptideSemiEnzyme ~PeptideSizeFilter src/pappsomspp/protein/peptidesizefilter.cpp /^PeptideSizeFilter::~PeptideSizeFilter()$/;" f class:pappso::PeptideSizeFilter ~PeptideSpectrumMatch src/pappsomspp/psm/peptidespectrummatch.cpp /^PeptideSpectrumMatch::~PeptideSpectrumMatch()$/;" f class:pappso::PeptideSpectrumMatch ~PeptideVariableModificationBuilder src/pappsomspp/protein/peptidevariablemodificationbuilder.cpp /^PeptideVariableModificationBuilder::~PeptideVariableModificationBuilder()$/;" f class:pappso::PeptideVariableModificationBuilder ~PeptideVariableModificationReplacement src/pappsomspp/protein/peptidevariablemodificationreplacement.cpp /^ ~PeptideVariableModificationReplacement()$/;" f class:pappso::PeptideVariableModificationReplacement ~PpmPrecision src/pappsomspp/precision.cpp /^PpmPrecision::~PpmPrecision()$/;" f class:pappso::PpmPrecision ~PrecisionWidget src/pappsomspp/widget/precisionwidget/precisionwidget.cpp /^PrecisionWidget::~PrecisionWidget()$/;" f class:pappso::PrecisionWidget ~Protein src/pappsomspp/protein/protein.cpp /^Protein::~Protein()$/;" f class:pappso::Protein ~ProteinPeptideList src/pappsomspp/protein/proteinpeptidelist.cpp /^ProteinPeptideList::~ProteinPeptideList()$/;" f class:ProteinPeptideList ~PsmFeatures src/pappsomspp/psm/features/psmfeatures.cpp /^PsmFeatures::~PsmFeatures()$/;" f class:PsmFeatures ~PwizMsFileReader src/pappsomspp/msfile/pwizmsfilereader.cpp /^PwizMsFileReader::~PwizMsFileReader()$/;" f class:pappso::PwizMsFileReader ~PwizMsRunReader src/pappsomspp/msrun/private/pwizmsrunreader.cpp /^PwizMsRunReader::~PwizMsRunReader()$/;" f class:pappso::PwizMsRunReader ~QCPSpectrum src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp /^QCPSpectrum::~QCPSpectrum()$/;" f class:QCPSpectrum ~QCPXic src/pappsomspp/widget/xicwidget/qcpxic.cpp /^QCPXic::~QCPXic()$/;" f class:QCPXic ~QualifiedMassSpectrum src/pappsomspp/massspectrum/qualifiedmassspectrum.cpp /^QualifiedMassSpectrum::~QualifiedMassSpectrum()$/;" f class:pappso::QualifiedMassSpectrum ~QualifiedXic src/pappsomspp/xic/qualifiedxic.cpp /^QualifiedXic::~QualifiedXic()$/;" f class:pappso::QualifiedXic ~ResPrecision src/pappsomspp/precision.cpp /^ResPrecision::~ResPrecision()$/;" f class:pappso::ResPrecision ~SelectionPolygon src/pappsomspp/processing/combiners/selectionpolygon.cpp /^SelectionPolygon::~SelectionPolygon()$/;" f class:pappso::SelectionPolygon ~SwitchWidget src/pappsomspp/widget/switchbuttonwidget/switchbuttonwidget.cpp /^pappso::SwitchWidget::~SwitchWidget()$/;" f class:pappso::SwitchWidget ~TandemWrapperRun src/pappsomspp/processing/tandemwrapper/tandemwrapperrun.cpp /^TandemWrapperRun::~TandemWrapperRun()$/;" f class:pappso::TandemWrapperRun ~TestWidgetGui tests/widget/testwidgetgui.cpp /^TestWidgetGui::~TestWidgetGui()$/;" f class:TestWidgetGui ~TicXicChromDriftSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/ticxicchromdriftspeccolormapplotwidget.cpp /^ ~TicXicChromDriftSpecColorMapPlotWidget()$/;" f class:pappso::TicXicChromDriftSpecColorMapPlotWidget ~TicXicChromMassSpecColorMapPlotWidget src/pappsomspp/widget/plotwidget/ticxicchrommassspeccolormapplotwidget.cpp /^TicXicChromMassSpecColorMapPlotWidget::~TicXicChromMassSpecColorMapPlotWidget()$/;" f class:pappso::TicXicChromMassSpecColorMapPlotWidget ~TicXicChromTracePlotWidget src/pappsomspp/widget/plotwidget/ticxicchromtraceplotwidget.cpp /^TicXicChromTracePlotWidget::~TicXicChromTracePlotWidget()$/;" f class:pappso::TicXicChromTracePlotWidget ~TimsBinDec src/pappsomspp/vendors/tims/timsbindec.cpp /^TimsBinDec::~TimsBinDec()$/;" f class:TimsBinDec ~TimsData src/pappsomspp/vendors/tims/timsdata.cpp /^TimsData::~TimsData()$/;" f class:pappso::TimsData ~TimsDirectXicExtractor src/pappsomspp/vendors/tims/xicextractor/timsdirectxicextractor.cpp /^TimsDirectXicExtractor::~TimsDirectXicExtractor()$/;" f class:TimsDirectXicExtractor ~TimsFrame src/pappsomspp/vendors/tims/timsframe.cpp /^TimsFrame::~TimsFrame()$/;" f class:pappso::TimsFrame ~TimsFrameBase src/pappsomspp/vendors/tims/timsframebase.cpp /^TimsFrameBase::~TimsFrameBase()$/;" f class:pappso::TimsFrameBase ~TimsFrameRawDataChunck src/pappsomspp/vendors/tims/timsframerawdatachunck.cpp /^TimsFrameRawDataChunck::~TimsFrameRawDataChunck()$/;" f class:TimsFrameRawDataChunck ~TimsFrameType1 src/pappsomspp/vendors/tims/timsframetype1.cpp /^TimsFrameType1::~TimsFrameType1()$/;" f class:pappso::TimsFrameType1 ~TimsMs2CentroidFilter src/pappsomspp/vendors/tims/timsms2centroidfilter.cpp /^TimsMs2CentroidFilter::~TimsMs2CentroidFilter()$/;" f class:TimsMs2CentroidFilter ~TimsMsFileReader src/pappsomspp/msfile/timsmsfilereader.cpp /^TimsMsFileReader::~TimsMsFileReader()$/;" f class:pappso::TimsMsFileReader ~TimsMsRunReader src/pappsomspp/msrun/private/timsmsrunreader.cpp /^TimsMsRunReader::~TimsMsRunReader()$/;" f class:TimsMsRunReader ~TimsMsRunReaderMs2 src/pappsomspp/msrun/private/timsmsrunreaderms2.cpp /^TimsMsRunReaderMs2::~TimsMsRunReaderMs2()$/;" f class:TimsMsRunReaderMs2 ~TimsMsRunReaderMs2Selected src/pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp /^TimsMsRunReaderMs2Selected::~TimsMsRunReaderMs2Selected()$/;" f class:TimsMsRunReaderMs2Selected ~TimsXicExtractorInterface src/pappsomspp/vendors/tims/xicextractor/timsxicextractorinterface.cpp /^TimsXicExtractorInterface::~TimsXicExtractorInterface()$/;" f class:TimsXicExtractorInterface ~Trace src/pappsomspp/trace/trace.cpp /^Trace::~Trace()$/;" f class:pappso::Trace ~TraceCombiner src/pappsomspp/processing/combiners/tracecombiner.cpp /^TraceCombiner::~TraceCombiner()$/;" f class:pappso::TraceCombiner ~TraceDetectionMoulon src/pappsomspp/processing/detection/tracedetectionmoulon.cpp /^TraceDetectionMoulon::~TraceDetectionMoulon()$/;" f class:pappso::TraceDetectionMoulon ~TraceDetectionZivy src/pappsomspp/processing/detection/tracedetectionzivy.cpp /^TraceDetectionZivy::~TraceDetectionZivy()$/;" f class:pappso::TraceDetectionZivy ~TraceMinusCombiner src/pappsomspp/processing/combiners/traceminuscombiner.cpp /^TraceMinusCombiner::~TraceMinusCombiner()$/;" f class:pappso::TraceMinusCombiner ~TracePeak src/pappsomspp/processing/detection/tracepeak.cpp /^TracePeak::~TracePeak()$/;" f class:pappso::TracePeak ~TracePeakList src/pappsomspp/processing/detection/tracepeaklist.cpp /^TracePeakList::~TracePeakList()$/;" f class:TracePeakList ~TracePlusCombiner src/pappsomspp/processing/combiners/tracepluscombiner.cpp /^TracePlusCombiner::~TracePlusCombiner()$/;" f class:pappso::TracePlusCombiner ~Translater src/pappsomspp/msrun/output/mzxmloutput.cpp /^MzxmlOutput::Translater::~Translater()$/;" f class:MzxmlOutput::Translater ~UiMonitorText src/pappsomspp/processing/uimonitor/uimonitortext.cpp /^UiMonitorText::~UiMonitorText()$/;" f class:UiMonitorText ~UiMonitorTextPercent src/pappsomspp/processing/uimonitor/uimonitortextpercent.cpp /^UiMonitorTextPercent::~UiMonitorTextPercent()$/;" f class:UiMonitorTextPercent ~WrapTandemInput src/pappsomspp/processing/tandemwrapper/wraptandeminput.cpp /^WrapTandemInput::~WrapTandemInput()$/;" f class:pappso::WrapTandemInput ~WrapTandemResults src/pappsomspp/processing/tandemwrapper/wraptandemresults.cpp /^WrapTandemResults::~WrapTandemResults()$/;" f class:pappso::WrapTandemResults ~Xic src/pappsomspp/xic/xic.cpp /^Xic::~Xic()$/;" f class:pappso::Xic ~XicCoord src/pappsomspp/msrun/xiccoord/xiccoord.cpp /^XicCoord::~XicCoord()$/;" f class:XicCoord ~XicCoordTims src/pappsomspp/msrun/xiccoord/xiccoordtims.cpp /^XicCoordTims::~XicCoordTims()$/;" f class:pappso::XicCoordTims ~XicPeptideFragmentIon src/pappsomspp/xic/xicpeptidefragmention.cpp /^XicPeptideFragmentIon::~XicPeptideFragmentIon()$/;" f class:pappso::XicPeptideFragmentIon ~XicPeptideFragmentIonNaturalIsotope src/pappsomspp/xic/xicpeptidefragmentionnaturalisotope.cpp /^XicPeptideFragmentIonNaturalIsotope::~XicPeptideFragmentIonNaturalIsotope()$/;" f class:pappso::XicPeptideFragmentIonNaturalIsotope ~XicPeptideInterface src/pappsomspp/xic/xicpeptideinterface.cpp /^XicPeptideInterface::~XicPeptideInterface()$/;" f class:pappso::XicPeptideInterface ~XicWidget src/pappsomspp/widget/xicwidget/xicwidget.cpp /^XicWidget::~XicWidget()$/;" f class:XicWidget ~XmlStreamReaderInterface src/pappsomspp/processing/xml/xmlstreamreaderinterface.cpp /^XmlStreamReaderInterface::~XmlStreamReaderInterface()$/;" f class:XmlStreamReaderInterface ~XtandemHyperscore src/pappsomspp/psm/xtandem/xtandemhyperscore.cpp /^XtandemHyperscore::~XtandemHyperscore()$/;" f class:pappso::XtandemHyperscore ~XtandemHyperscoreBis src/pappsomspp/psm/xtandem/xtandemhyperscorebis.cpp /^XtandemHyperscoreBis::~XtandemHyperscoreBis()$/;" f class:XtandemHyperscoreBis ~XtandemPresetReader src/pappsomspp/processing/tandemwrapper/xtandempresetreader.cpp /^XtandemPresetReader::~XtandemPresetReader()$/;" f class:pappso::XtandemPresetReader ~XtandemResultsHandler tests/saxparsers/xtandemresultshandler.cpp /^XtandemResultsHandler::~XtandemResultsHandler()$/;" f class:XtandemResultsHandler ~XtandemSpectrumProcess src/pappsomspp/psm/xtandem/xtandemspectrumprocess.cpp /^XtandemSpectrumProcess::~XtandemSpectrumProcess()$/;" f class:pappso::XtandemSpectrumProcess ~XyMsFileReader src/pappsomspp/msfile/xymsfilereader.cpp /^XyMsFileReader::~XyMsFileReader()$/;" f class:pappso::XyMsFileReader ~XyMsRunReader src/pappsomspp/msrun/xymsrunreader.cpp /^XyMsRunReader::~XyMsRunReader()$/;" f class:pappso::XyMsRunReader  Session.vim /^nnoremap  gwip$/;" m Ð Session.vim /^imap Ð yankstack_substitute_newer_paste$/;" m Ð Session.vim /^nmap Ð yankstack_substitute_newer_paste$/;" m ð Session.vim /^imap ð yankstack_substitute_older_paste$/;" m ð Session.vim /^nmap ð yankstack_substitute_older_paste$/;" m œ Session.vim /^inoremap œ  $/;" m œ Session.vim /^inoremap œ gUiwi$/;" m œ Session.vim /^nnoremap œ gUiw$/;" m œ- Session.vim /^inoremap œ- yyp^v$r-$/;" m œ- Session.vim /^nnoremap œ- iyyp^v$r-$/;" m œ Session.vim /^inoremap œ gUiwi$/;" m œ Session.vim /^nnoremap œ gUiw$/;" m œ Session.vim /^nmap œ yankstack_substitute_newer_paste$/;" m œ Session.vim /^nmap œ yankstack_substitute_older_paste$/;" m œ= Session.vim /^inoremap œ= yyp^v$r=$/;" m œ= Session.vim /^nnoremap œ= iyyp^v$r=$/;" m œT Session.vim /^nnoremap œT :TlistToggle$/;" m œbn Session.vim /^nnoremap œbn :bn$/;" m œbp Session.vim /^nnoremap œbp :bp$/;" m œbx Session.vim /^nnoremap œbx :BufExplorer$/;" m œc Session.vim /^nmap œc NERDCommenterToggle$/;" m œc$ Session.vim /^nmap œc$ NERDCommenterToEOL$/;" m œcA Session.vim /^nmap œcA NERDCommenterAppend$/;" m œca Session.vim /^nmap œca NERDCommenterAltDelims$/;" m œcb Session.vim /^nmap œcb NERDCommenterAlignBoth$/;" m œcc Session.vim /^nmap œcc NERDCommenterComment$/;" m œcf Session.vim /^nnoremap œcf :ClangFormat$/;" m œcf Session.vim /^vnoremap œcf :ClangFormat$/;" m œcft Session.vim /^nmap œcft :ClangFormatAutoToggle$/;" m œci Session.vim /^nmap œci NERDCommenterInvert$/;" m œcl Session.vim /^nmap œcl NERDCommenterAlignLeft$/;" m œcm Session.vim /^nmap œcm NERDCommenterMinimal$/;" m œcn Session.vim /^nmap œcn NERDCommenterNested$/;" m œcs Session.vim /^nnoremap œcs ^i*  $/;" m œcu Session.vim /^nmap œcu NERDCommenterUncomment$/;" m œcy Session.vim /^nmap œcy NERDCommenterYank$/;" m œd Session.vim /^nnoremap œd $/;" m œefs Session.vim /^inoremap œefs Sincerely,$/;" m œefs Session.vim /^nnoremap œefs iSincerely,$/;" m œers Session.vim /^inoremap œers Sincerely,$/;" m œers Session.vim /^nnoremap œers iSincerely,$/;" m œfab Session.vim /^inoremap œfab À bientôt,$/;" m œfab Session.vim /^nnoremap œfab iÀ bientôt,$/;" m œfc Session.vim /^nnoremap œfc :foldclose$/;" m œfo Session.vim /^nnoremap œfo :foldopen$/;" m œfrups Session.vim /^inoremap œfrups filippo.rusconi@universite-paris-saclay.fr$/;" m œfrups Session.vim /^nnoremap œfrups ifilippo.rusconi@universite-paris-saclay.fr$/;" m œfs Session.vim /^inoremap œfs Sincèrement,$/;" m œfs Session.vim /^nnoremap œfs iSincèrement,$/;" m œif Session.vim /^nnoremap œif mkHmlgg=G'lzt'k$/;" m œih Session.vim /^imap œih :IHS$/;" m œih Session.vim /^nmap œih :IHS$/;" m œihn Session.vim /^imap œihn :IHN$/;" m œihn Session.vim /^nmap œihn :IHN$/;" m œis Session.vim /^imap œis :IHS$/;" m œis Session.vim /^nnoremap œis mkH=L'k$/;" m œl Session.vim /^nnoremap œl $/;" m œlt Session.vim /^nnoremap œlt :exe "tabn ".g:lasttab$/;" m œmtn Session.vim /^nnoremap œmtn :call MoveToNextTab()$/;" m œmtp Session.vim /^nnoremap œmtp :call MoveToPrevTab()$/;" m œmut Session.vim /^nnoremap œmut :MundoToggle$/;" m œntt Session.vim /^nnoremap œntt :NERDTreeToggle$/;" m œnycm Session.vim /^nnoremap œnycm :let b:ycm_largefile=1$/;" m œp Session.vim /^nnoremap œp $/;" m œr Session.vim /^nnoremap œr  $/;" m œrab Session.vim /^inoremap œrab À bientôt,$/;" m œrab Session.vim /^nnoremap œrab iÀ bientôt,$/;" m œrce Session.vim /^nnoremap œrce :split $MYVIMRC$/;" m œrcs Session.vim /^nnoremap œrcs :source $MYVIMRC$/;" m œrms Session.vim /^nnoremap œrms magg:.,$s\/\\s\\{2,20\\}\/ \/$/;" m œrs Session.vim /^inoremap œrs Sincèrement,$/;" m œrs Session.vim /^nnoremap œrs iSincèrement,$/;" m œrws Session.vim /^nnoremap œrws magg:%s\/[[:space:]]\\{1,4\\}$\/\/$/;" m œt Session.vim /^nnoremap œt :read !today$/;" m œtn Session.vim /^nnoremap œtn :tabnext$/;" m œtp Session.vim /^nnoremap œtp :tabprev$/;" m œtt Session.vim /^nnoremap œtt :read !today-time$/;" m œu Session.vim /^nnoremap œu  $/;" m œun Session.vim /^nmap œun (UnicodeSwapCompleteName)$/;" m œups Session.vim /^inoremap œups universite-paris-saclay.fr$/;" m œups Session.vim /^nnoremap œups iuniversite-paris-saclay.fr$/;" m œx Session.vim /^nmap œx :%FormatXML$/;" m œx Session.vim /^vmap œx :FormatXML$/;" m œydec Session.vim /^nnoremap œydec ::YcmCompleter GoToDeclaration$/;" m œydef Session.vim /^nnoremap œydef ::YcmCompleter GoToDefinition$/;" m œyinc Session.vim /^nnoremap œyinc ::YcmCompleter GoToInclude$/;" m œypar Session.vim /^nnoremap œypar ::YcmCompleter GetParent$/;" m œyrt Session.vim /^nnoremap œyrt :YRShow$/;" m œyycm Session.vim /^nnoremap œyycm :let b:ycm_largefile=0$/;" m libpappsomspp-0.9.20/CMakeLists.txt000644 001750 001750 00000030744 14533443361 020457 0ustar00rusconirusconi000000 000000 cmake_minimum_required(VERSION 3.12) # CMake script for PAPPSOms++ library # Authors: Olivier Langella & Filippo Rusconi # Created: 03/03/2015 # Rework: April 2020 (Coronavirus confinement) ############################################################ ############################################################ # Basic information about project project(libpappsomspp) set(PAPPSOMSPP_VERSION_MAJOR "0") set(PAPPSOMSPP_VERSION_MINOR "9") set(PAPPSOMSPP_VERSION_PATCH "20") set(PAPPSOMSPP_VERSION "${PAPPSOMSPP_VERSION_MAJOR}.${PAPPSOMSPP_VERSION_MINOR}.${PAPPSOMSPP_VERSION_PATCH}") # Command to enable debug and tests # cmake -DCMAKE_BUILD_TYPE=Debug -DMAKE_TESTS=1 -DUSEPAPPSOTREE=0 .. # This line MUST be located prior to include'ing GNUInstallDirs !!! # Note that the CMAKE_LIBRARY_ARCHITECTURE is only accounted for # CMAKE_INSTALL_PREFIX = /usr (not /usr/local, for example). set(CMAKE_INSTALL_PREFIX /usr) message(STATUS "${BoldYellow}CMAKE_LIBRARY_ARCHITECTURE: ${CMAKE_LIBRARY_ARCHITECTURE}${ColourReset}") include(GNUInstallDirs) message(STATUS "Set CMAKE_INSTALL_PREFIX to ${CMAKE_INSTALL_PREFIX}") message(STATUS "Install directory prefix: ${CMAKE_INSTALL_PREFIX}") message(STATUS "CMAKE_INSTALL_FULL_LIBDIR: ${CMAKE_INSTALL_FULL_LIBDIR}") message(STATUS "CMAKE_INSTALL_FULL_INCLUDEDIR: ${CMAKE_INSTALL_FULL_INCLUDEDIR}") # Add folder where are supportive functions set(CMAKE_UTILS_PATH ${CMAKE_SOURCE_DIR}/CMakeStuff) set(CMAKE_TOOLCHAINS_PATH ${CMAKE_UTILS_PATH}/toolchains) # We need a variable that is not modified by CMake because we'll need to access # that specific directory later set(LOCAL_CMAKE_MODULE_PATH ${CMAKE_UTILS_PATH}/modules) message("CMakeLists.txt - LOCAL_CMAKE_MODULE_PATH:" ${LOCAL_CMAKE_MODULE_PATH}) # Now add our local path to the general path list. set(CMAKE_MODULE_PATH ${LOCAL_CMAKE_MODULE_PATH} ${CMAKE_MODULE_PATH}) # This include must come before all the others # It must include the config-generated config.h file # before the others. include_directories(${CMAKE_BINARY_DIR}) # Include the system's uname that fills in SYSTEM_UNAME_S. # Sets WIN64 if SYSTEM_UNAME_S is "^.*MING64.*" include(${CMAKE_UTILS_PATH}/systemUname.cmake) # Include the various colors we want to use in the output include(${CMAKE_UTILS_PATH}/outputColors.cmake) set(CMAKE_COLOR_MAKEFILE ON) set(CMAKE_VERBOSE_MAKEFILE ON) message("\n${BoldRed}Configuring build for project ${PROJECT_NAME}${ColourReset}\n") # This export will allow using the flags to be used by # youcompleteme (vim plugin). set(CMAKE_EXPORT_COMPILE_COMMANDS 1) if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json" ) execute_process( COMMAND cmake -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json ) endif() # We want C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) message(STATUS "${BoldGreen}CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}${ColourReset}") ############################################################# # We do not want warnings for unknown pragmas: message(STATUS "Setting definition -Wno-unknown-pragmas.${ColourReset}") add_definitions(-Wno-unknown-pragmas) # Enable warnings and possibly treat them as errors message(STATUS "${BoldGreen}Setting definition -Wall.${ColourReset}") add_definitions(-Wall) message(STATUS "${BoldGreen}Setting definition -Wextra.${ColourReset}") add_definitions(-Wextra) if(WARN_AS_ERROR) message(STATUS "${BoldYellow}Setting definition -Werror.${ColourReset}") add_definitions(-Werror) endif() message(STATUS "${BoldRed}CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}${ColourReset}") ############################################################# ############################################################# # Platform-specific CMake configuration if(MXE) # Run the following cmake command line: # x86_64-w64-mingw32.shared-cmake -DCMAKE_BUILD_TYPE=Release -DMXE=1 ../development #include(${CMAKE_TOOLCHAINS_PATH}/mxe-toolchain.cmake) include(${CMAKE_TOOLCHAINS_PATH}/mxe-toolchain-olivier.cmake) # Set the name to the systemUname variable because in this situation that name # is not found, it it passed as a flag in the command line. set(SYSTEM_UNAME_S "mxe") elseif(UNIX AND NOT APPLE) # Run the following cmake command line: # cmake -DBUILD_USER_MANUAL=1 -DCMAKE_BUILD_TYPE=Debug include(${CMAKE_TOOLCHAINS_PATH}/unix-toolchain.cmake) #include(${CMAKE_TOOLCHAINS_PATH}/unix-toolchain-local.cmake) elseif(WIN32 OR _WIN32) if(WIN10MINGW64) include(${CMAKE_TOOLCHAINS_PATH}/win10-mingw64-toolchain.cmake) endif() elseif(APPLE) # Run the following cmake command line: # cmake -DBUILD_USER_MANUAL=0 -DCMAKE_BUILD_TYPE=Release ../development include(${CMAKE_TOOLCHAINS_PATH}/apple-macport-toolchain.cmake) endif() message("") message(STATUS "${BoldGreen}Starting configuration of ${PROJECT}${ColourReset}") message("") message(STATUS "${BoldYellow}The build toolchain is: ${SYSTEM_UNAME_S}${ColourReset}") message("") ############################################################# ############################################################# # Essential software configuration message(STATUS "CMAKE_CURRENT_BINARY_DIR: " ${CMAKE_CURRENT_BINARY_DIR}) # Gee, do not set that to default! # set(MAKE_TESTS 1) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Type of build, options are: None, Debug, Release, RelWithDebInfo, MinSizeRel." FORCE) endif(NOT CMAKE_BUILD_TYPE) if(CMAKE_BUILD_TYPE MATCHES "Release") message(STATUS "Compiling in release mode.") add_definitions("-DQT_NO_DEBUG_OUTPUT") endif() if(CMAKE_BUILD_TYPE MATCHES "Debug") message(STATUS "Compiling in debug mode with MAKE_TESTS: ${MAKE_TESTS}.") message(STATUS "Add definition -ggdb3 to format debug output for GDB.") add_definitions(-ggdb3) endif() if(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo") message(STATUS "Compiling in release with debug info mode.") endif( CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" ) message(STATUS "${BoldYellow}CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}.${ColourReset}") # PWIZLITE if(NOT PwizLite_FOUND) message(STATUS "PwizLite not yet found. Searching for it.") find_package(PwizLite REQUIRED) endif() message(STATUS "PwizLite_INCLUDE_DIRS: ${PwizLite_INCLUDE_DIRS}") message(STATUS "PwizLite_LIBRARIES: ${PwizLite_LIBRARIES}") # BOOST if(NOT Boost_FOUND) message(STATUS "Boost not yet found. Searching for it.") find_package(Boost COMPONENTS iostreams thread filesystem chrono REQUIRED) endif() message(STATUS "Boost_LIBRARIES found ${Boost_LIB_VERSION}") message(STATUS "Boost_INCLUDES: ${Boost_INCLUDE_DIRS}") message(STATUS "Boost_LIB_DIRS: ${Boost_LIBRARY_DIRS}") # QCustomPlotQt6 if(QCustomPlotQt6_FOUND) else (QCustomPlotQt6_FOUND) set(QCustomPlotQt6_DIR ${CMAKE_MODULE_PATH}) find_package(QCustomPlotQt6 REQUIRED) endif(QCustomPlotQt6_FOUND) message(STATUS "CMakeLists.txt - CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") if(Zstd_FOUND) else (Zstd_FOUND) set(Zstd_DIR ${CMAKE_MODULE_PATH}) find_package(Zstd REQUIRED) endif(Zstd_FOUND) if(SQLite3_FOUND) else(SQLite3_FOUND) set(SQLite3_DIR ${CMAKE_MODULE_PATH}) find_package(SQLite3 REQUIRED) endif(SQLite3_FOUND) if(NOT USEPAPPSOTREE) set(USEPAPPSOTREE 0) endif(NOT USEPAPPSOTREE) if(NOT USEQT4) if(NOT USEQT5) set(USEQT5 1) endif(NOT USEQT5) endif(NOT USEQT4) if(USEQT5) if(NOT PAPPSOMSPPWIDGET) set(PAPPSOMSPPWIDGET 1) endif(NOT PAPPSOMSPPWIDGET) endif(USEQT5) # Set the CMAKE_PREFIX_PATH for the find_library fonction when using non # standard install location if(CMAKE_INSTALL_PREFIX) set(CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}" ${CMAKE_PREFIX_PATH}) endif(CMAKE_INSTALL_PREFIX) # Subdirectories message(STATUS "Adding subdirectory src for PROJECT: ${PROJECT}") add_subdirectory(doc) message(STATUS "Adding subdirectory doc for PROJECT: ${PROJECT}") add_subdirectory(src) # Doxygen if(UNIX AND NOT APPLE) find_package(Doxygen) if(DOXYGEN_FOUND) add_custom_target (apidoc cp Doxyfile ${CMAKE_BINARY_DIR}/Doxyfile-build COMMAND echo "OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}" >> ${CMAKE_BINARY_DIR}/Doxyfile-build COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile-build WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) add_custom_target(apidoc-stable cp Doxyfile ${CMAKE_BINARY_DIR}/Doxyfile-stable COMMAND echo "OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}" >> ${CMAKE_BINARY_DIR}/Doxyfile-stable COMMAND echo "HTML_HEADER=header.html" >> ${CMAKE_BINARY_DIR}/Doxyfile-stable COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile-stable WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) endif(DOXYGEN_FOUND) endif(UNIX AND NOT APPLE) # Packager set(CPACK_PACKAGE_NAME "libpappsomspp") set(CPACK_PACKAGE_VENDOR "PAPPSO Development Team") set(CPACK_PACKAGE_VERSION "${PAPPSOMSPP_VERSION}") set(CPACK_PACKAGE_VERSION_MAJOR "${PAPPSOMSPP_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${PAPPSOMSPP_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${PAPPSOMSPP_VERSION_PATCH}") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The PAPPSO C++ library for mass spectrometry") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") set(CPACK_RESOURCE_FILE_AUTHORS "${CMAKE_SOURCE_DIR}/AUTHORS") set(CPACK_RESOURCE_FILE_INSTALL "${CMAKE_SOURCE_DIR}/INSTALL") set(CPACK_SOURCE_GENERATOR "TGZ") set(CPACK_SOURCE_IGNORE_FILES "CMakeFiles" "Makefile" "_CPack_Packages" "CMakeCache.txt" ".*\\\\.git" ".*\\\\.gz" ".*\\\\.deb" ".*\\\\.rpm" ".*\\\\.dmg" ".*\\\\..*\\\\.swp" "src/\\\\..*" "src/libbpp*" "debian/tmp" "debian/libbpp.*/" "debian/libbpp.*\\\\.so.*" "debian/libbpp.*\\\\.a" "debian/libbpp.*\\\\.substvars" "debian/libbpp.*\\\\.debhelper" "debian/debhelper\\\\.log" "html" "Core.tag" "Testing" "build/" "wbuild/" "buildwin64/" "build-stamp" "install_manifest.txt" "DartConfiguration.tcl" ${CPACK_SOURCE_IGNORE_FILES} ".cache" "Session.vim" "compile_commands.json" ".kdev4" "*.kdev4" ) #dch -Dstretch "message" #cmake .. #make deb # scp libpappsomspp* proteus.ideev.universite-paris-saclay.fr:/var/www/apt/incoming # reprepro -Vb /var/www/apt processincoming default # apt-get remove libpappsomspp* # # debuild -S -sa # dput -f olivier-langella *changes #dpkg-deb -x libpappsomspp-qt4_0.0.4-1_amd64.deb libpappsomspp-qt4_0.0.4-1 #dpkg-gensymbols -v0 -plibpappsomspp-qt4 -Plibpappsomspp-qt4_0.0.4-1 -Osymbols #cp symbols ../debian/libpappsomspp-qt4.symbols #dpkg-deb -x libpappsomspp-qt5_0.0.4-1_amd64.deb libpappsomspp-qt5_0.0.4-1 #dpkg-gensymbols -v0 -plibpappsomspp-qt5 -Plibpappsomspp-qt5_0.0.4-1 -Osymbols #cp symbols ../debian/libpappsomspp-qt5.symbols if(MACOS) set(CPACK_GENERATOR "Bundle") endif() set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_DEBSOURCE_PACKAGE_FILE_NAME "lib${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.orig") include(CPack) if(UNIX) #This creates deb packages: add_custom_target(targz cpack -G TGZ --config CPackSourceConfig.cmake && tar xvfz libpappsomspp-${PAPPSOMSPP_VERSION}.tar.gz WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Creating .tar.gz" VERBATIM ) add_custom_target(deb ln -s libpappsomspp-${PAPPSOMSPP_VERSION}.tar.gz libpappsomspp_${PAPPSOMSPP_VERSION}.orig.tar.gz && cd libpappsomspp-${PAPPSOMSPP_VERSION} && dpkg-buildpackage -sa DEPENDS targz WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Creating Debian package" VERBATIM ) file(GLOB changesdebs "${CMAKE_BINARY_DIR}/pappsomspp_*.dsc") foreach(libfile ${changesdebs}) set(changesdeb "${libfile}") endforeach(libfile) message ("changes debian file : ${changesdeb}") #lintian -IEi --pedantic tandem-mass_2013.06.15-1_amd64.changes add_custom_target(lintian lintian -IEi --pedantic ${changesdeb} DEPENDS deb WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "lintian check" VERBATIM ) #dpkg-deb -x libpappsomspp-qt4_0.0.4-1_amd64.deb libpappsomspp-qt4_0.0.4-1 #dpkg-gensymbols -v0 -plibpappsomspp-qt4 -Plibpappsomspp-qt4_0.0.4-1 -Osymbols #cp symbols ../debian/libpappsomspp-qt4.symbols #dpkg-deb -x libpappsomspp-qt5_0.0.4-1_amd64.deb libpappsomspp-qt5_0.0.4-1 #dpkg-gensymbols -v0 -plibpappsomspp-qt5 -Plibpappsomspp-qt5_0.0.4-1 -Osymbols #cp symbols ../debian/libpappsomspp-qt5.symbols endif(UNIX) if(MAKE_TESTS) #message("MAKE_TESTS was set to ${MAKE_TESTS}") enable_testing() include(CTest) if(BUILD_TESTING) add_subdirectory(tests) endif(BUILD_TESTING) endif(MAKE_TESTS)